use accessor methods to access the value and derivatives of Evaluation objects
This commit is contained in:
parent
5963dd0027
commit
1387c5f834
@ -252,7 +252,7 @@ namespace Opm
|
|||||||
Eval RvEval = 0.0;
|
Eval RvEval = 0.0;
|
||||||
Eval muEval = 0.0;
|
Eval muEval = 0.0;
|
||||||
|
|
||||||
pEval.derivatives[0] = 1.0;
|
pEval.setDerivative(0, 1.0);
|
||||||
|
|
||||||
R_.resize(n*np);
|
R_.resize(n*np);
|
||||||
this->compute_R_(n, p, T, z, cells, &R_[0]);
|
this->compute_R_(n, p, T, z, cells, &R_[0]);
|
||||||
@ -260,30 +260,30 @@ namespace Opm
|
|||||||
for (int i = 0; i < n; ++ i) {
|
for (int i = 0; i < n; ++ i) {
|
||||||
int cellIdx = cells[i];
|
int cellIdx = cells[i];
|
||||||
int pvtRegionIdx = cellPvtRegionIdx_[cellIdx];
|
int pvtRegionIdx = cellPvtRegionIdx_[cellIdx];
|
||||||
pEval.value = p[i];
|
pEval.setValue(p[i]);
|
||||||
TEval.value = T[i];
|
TEval.setValue(T[i]);
|
||||||
|
|
||||||
if (pu.phase_used[BlackoilPhases::Aqua]) {
|
if (pu.phase_used[BlackoilPhases::Aqua]) {
|
||||||
muEval = waterPvt_.viscosity(pvtRegionIdx, TEval, pEval);
|
muEval = waterPvt_.viscosity(pvtRegionIdx, TEval, pEval);
|
||||||
int offset = pu.num_phases*cellIdx + pu.phase_pos[BlackoilPhases::Aqua];
|
int offset = pu.num_phases*cellIdx + pu.phase_pos[BlackoilPhases::Aqua];
|
||||||
mu[offset] = muEval.value;
|
mu[offset] = muEval.value();
|
||||||
dmudp[offset] = muEval.derivatives[0];
|
dmudp[offset] = muEval.derivative(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pu.phase_used[BlackoilPhases::Liquid]) {
|
if (pu.phase_used[BlackoilPhases::Liquid]) {
|
||||||
RsEval.value = R_[i*np + pu.phase_pos[BlackoilPhases::Liquid]];
|
RsEval.setValue(R_[i*np + pu.phase_pos[BlackoilPhases::Liquid]]);
|
||||||
muEval = oilPvt_.viscosity(pvtRegionIdx, TEval, pEval, RsEval);
|
muEval = oilPvt_.viscosity(pvtRegionIdx, TEval, pEval, RsEval);
|
||||||
int offset = pu.num_phases*cellIdx + pu.phase_pos[BlackoilPhases::Liquid];
|
int offset = pu.num_phases*cellIdx + pu.phase_pos[BlackoilPhases::Liquid];
|
||||||
mu[offset] = muEval.value;
|
mu[offset] = muEval.value();
|
||||||
dmudp[offset] = muEval.derivatives[0];
|
dmudp[offset] = muEval.derivative(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pu.phase_used[BlackoilPhases::Vapour]) {
|
if (pu.phase_used[BlackoilPhases::Vapour]) {
|
||||||
RvEval.value = R_[i*np + pu.phase_pos[BlackoilPhases::Vapour]];
|
RvEval.setValue(R_[i*np + pu.phase_pos[BlackoilPhases::Vapour]]);
|
||||||
muEval = gasPvt_.viscosity(pvtRegionIdx, TEval, pEval, RvEval);
|
muEval = gasPvt_.viscosity(pvtRegionIdx, TEval, pEval, RvEval);
|
||||||
int offset = pu.num_phases*cellIdx + pu.phase_pos[BlackoilPhases::Vapour];
|
int offset = pu.num_phases*cellIdx + pu.phase_pos[BlackoilPhases::Vapour];
|
||||||
mu[offset] = muEval.value;
|
mu[offset] = muEval.value();
|
||||||
dmudp[offset] = muEval.derivatives[0];
|
dmudp[offset] = muEval.derivative(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -476,13 +476,13 @@ namespace Opm
|
|||||||
Eval RsEval = 0.0;
|
Eval RsEval = 0.0;
|
||||||
Eval RvEval = 0.0;
|
Eval RvEval = 0.0;
|
||||||
|
|
||||||
pEval.derivatives[0] = 1.0;
|
pEval.setDerivative(0, 1.0);
|
||||||
|
|
||||||
for (int i = 0; i < n; ++ i) {
|
for (int i = 0; i < n; ++ i) {
|
||||||
int cellIdx = cells[i];
|
int cellIdx = cells[i];
|
||||||
int pvtRegionIdx = cellPvtRegionIdx_[cellIdx];
|
int pvtRegionIdx = cellPvtRegionIdx_[cellIdx];
|
||||||
pEval.value = p[i];
|
pEval.setValue(p[i]);
|
||||||
TEval.value = T[i];
|
TEval.setValue(T[i]);
|
||||||
|
|
||||||
int oilOffset = pu.num_phases*i + pu.phase_pos[BlackoilPhases::Liquid];
|
int oilOffset = pu.num_phases*i + pu.phase_pos[BlackoilPhases::Liquid];
|
||||||
int gasOffset = pu.num_phases*i + pu.phase_pos[BlackoilPhases::Vapour];
|
int gasOffset = pu.num_phases*i + pu.phase_pos[BlackoilPhases::Vapour];
|
||||||
@ -491,8 +491,8 @@ namespace Opm
|
|||||||
if (pu.phase_used[BlackoilPhases::Aqua]) {
|
if (pu.phase_used[BlackoilPhases::Aqua]) {
|
||||||
Eval BEval = 1.0/waterPvt_.inverseFormationVolumeFactor(pvtRegionIdx, TEval, pEval);
|
Eval BEval = 1.0/waterPvt_.inverseFormationVolumeFactor(pvtRegionIdx, TEval, pEval);
|
||||||
|
|
||||||
B[waterOffset] = BEval.value;
|
B[waterOffset] = BEval.value();
|
||||||
dBdp[waterOffset] = BEval.derivatives[0];
|
dBdp[waterOffset] = BEval.derivative(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pu.phase_used[BlackoilPhases::Liquid]) {
|
if (pu.phase_used[BlackoilPhases::Liquid]) {
|
||||||
@ -500,19 +500,19 @@ namespace Opm
|
|||||||
double maxRs = 0.0;
|
double maxRs = 0.0;
|
||||||
if (pu.phase_used[BlackoilPhases::Vapour]) {
|
if (pu.phase_used[BlackoilPhases::Vapour]) {
|
||||||
currentRs = (z[oilOffset] == 0.0) ? 0.0 : z[gasOffset]/z[oilOffset];
|
currentRs = (z[oilOffset] == 0.0) ? 0.0 : z[gasOffset]/z[oilOffset];
|
||||||
maxRs = oilPvt_.saturatedGasDissolutionFactor(pvtRegionIdx, TEval.value, pEval.value);
|
maxRs = oilPvt_.saturatedGasDissolutionFactor(pvtRegionIdx, TEval.value(), pEval.value());
|
||||||
}
|
}
|
||||||
Eval BEval;
|
Eval BEval;
|
||||||
if (currentRs >= maxRs) {
|
if (currentRs >= maxRs) {
|
||||||
BEval = 1.0/oilPvt_.saturatedInverseFormationVolumeFactor(pvtRegionIdx, TEval, pEval);
|
BEval = 1.0/oilPvt_.saturatedInverseFormationVolumeFactor(pvtRegionIdx, TEval, pEval);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
RsEval.value = currentRs;
|
RsEval.setValue(currentRs);
|
||||||
BEval = 1.0/oilPvt_.inverseFormationVolumeFactor(pvtRegionIdx, TEval, pEval, RsEval);
|
BEval = 1.0/oilPvt_.inverseFormationVolumeFactor(pvtRegionIdx, TEval, pEval, RsEval);
|
||||||
}
|
}
|
||||||
|
|
||||||
B[oilOffset] = BEval.value;
|
B[oilOffset] = BEval.value();
|
||||||
dBdp[oilOffset] = BEval.derivatives[0];
|
dBdp[oilOffset] = BEval.derivative(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pu.phase_used[BlackoilPhases::Vapour]) {
|
if (pu.phase_used[BlackoilPhases::Vapour]) {
|
||||||
@ -520,19 +520,19 @@ namespace Opm
|
|||||||
double maxRv = 0.0;
|
double maxRv = 0.0;
|
||||||
if (pu.phase_used[BlackoilPhases::Liquid]) {
|
if (pu.phase_used[BlackoilPhases::Liquid]) {
|
||||||
currentRv = (z[gasOffset] == 0.0) ? 0.0 : z[oilOffset]/z[gasOffset];
|
currentRv = (z[gasOffset] == 0.0) ? 0.0 : z[oilOffset]/z[gasOffset];
|
||||||
maxRv = gasPvt_.saturatedOilVaporizationFactor(pvtRegionIdx, TEval.value, pEval.value);
|
maxRv = gasPvt_.saturatedOilVaporizationFactor(pvtRegionIdx, TEval.value(), pEval.value());
|
||||||
}
|
}
|
||||||
Eval BEval;
|
Eval BEval;
|
||||||
if (currentRv >= maxRv) {
|
if (currentRv >= maxRv) {
|
||||||
BEval = 1.0/gasPvt_.saturatedInverseFormationVolumeFactor(pvtRegionIdx, TEval, pEval);
|
BEval = 1.0/gasPvt_.saturatedInverseFormationVolumeFactor(pvtRegionIdx, TEval, pEval);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
RvEval.value = currentRv;
|
RvEval.setValue(currentRv);
|
||||||
BEval = 1.0/gasPvt_.inverseFormationVolumeFactor(pvtRegionIdx, TEval, pEval, RvEval);
|
BEval = 1.0/gasPvt_.inverseFormationVolumeFactor(pvtRegionIdx, TEval, pEval, RvEval);
|
||||||
}
|
}
|
||||||
|
|
||||||
B[gasOffset] = BEval.value;
|
B[gasOffset] = BEval.value();
|
||||||
dBdp[gasOffset] = BEval.derivatives[0];
|
dBdp[gasOffset] = BEval.derivative(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -609,13 +609,13 @@ namespace Opm
|
|||||||
Eval pEval = 0.0;
|
Eval pEval = 0.0;
|
||||||
Eval TEval = 0.0;
|
Eval TEval = 0.0;
|
||||||
|
|
||||||
pEval.derivatives[0] = 1.0;
|
pEval.setDerivative(0, 1.0);
|
||||||
|
|
||||||
for (int i = 0; i < n; ++ i) {
|
for (int i = 0; i < n; ++ i) {
|
||||||
int cellIdx = cells[i];
|
int cellIdx = cells[i];
|
||||||
int pvtRegionIdx = cellPvtRegionIdx_[cellIdx];
|
int pvtRegionIdx = cellPvtRegionIdx_[cellIdx];
|
||||||
pEval.value = p[i];
|
pEval.setValue(p[i]);
|
||||||
TEval.value = T[i];
|
TEval.setValue(T[i]);
|
||||||
|
|
||||||
int oilOffset = pu.num_phases*i + pu.phase_pos[BlackoilPhases::Liquid];
|
int oilOffset = pu.num_phases*i + pu.phase_pos[BlackoilPhases::Liquid];
|
||||||
int gasOffset = pu.num_phases*i + pu.phase_pos[BlackoilPhases::Vapour];
|
int gasOffset = pu.num_phases*i + pu.phase_pos[BlackoilPhases::Vapour];
|
||||||
@ -635,8 +635,8 @@ namespace Opm
|
|||||||
|
|
||||||
RsSatEval = Toolbox::min(RsSatEval, currentRs);
|
RsSatEval = Toolbox::min(RsSatEval, currentRs);
|
||||||
|
|
||||||
R[oilOffset] = RsSatEval.value;
|
R[oilOffset] = RsSatEval.value();
|
||||||
dRdp[oilOffset] = RsSatEval.derivatives[0];
|
dRdp[oilOffset] = RsSatEval.derivative(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pu.phase_used[BlackoilPhases::Vapour]) {
|
if (pu.phase_used[BlackoilPhases::Vapour]) {
|
||||||
@ -649,8 +649,8 @@ namespace Opm
|
|||||||
|
|
||||||
RvSatEval = Toolbox::min(RvSatEval, currentRv);
|
RvSatEval = Toolbox::min(RvSatEval, currentRv);
|
||||||
|
|
||||||
R[gasOffset] = RvSatEval.value;
|
R[gasOffset] = RvSatEval.value();
|
||||||
dRdp[gasOffset] = RvSatEval.derivatives[0];
|
dRdp[gasOffset] = RvSatEval.derivative(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -93,10 +93,10 @@ namespace Opm
|
|||||||
|
|
||||||
// copy the values calculated using opm-material to the target arrays
|
// copy the values calculated using opm-material to the target arrays
|
||||||
for (int krPhaseIdx = 0; krPhaseIdx < np; ++krPhaseIdx) {
|
for (int krPhaseIdx = 0; krPhaseIdx < np; ++krPhaseIdx) {
|
||||||
kr[np*i + krPhaseIdx] = relativePerms[krPhaseIdx].value;
|
kr[np*i + krPhaseIdx] = relativePerms[krPhaseIdx].value();
|
||||||
|
|
||||||
for (int satPhaseIdx = 0; satPhaseIdx < np; ++satPhaseIdx)
|
for (int satPhaseIdx = 0; satPhaseIdx < np; ++satPhaseIdx)
|
||||||
dkrds[np*np*i + satPhaseIdx*np + krPhaseIdx] = relativePerms[krPhaseIdx].derivatives[satPhaseIdx];
|
dkrds[np*np*i + satPhaseIdx*np + krPhaseIdx] = relativePerms[krPhaseIdx].derivative(satPhaseIdx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -165,13 +165,13 @@ namespace Opm
|
|||||||
// for two-phase problems i.e water for oil-water system,
|
// for two-phase problems i.e water for oil-water system,
|
||||||
// but for flow it is always oil. Add oil (liquid) capillary pressure value
|
// but for flow it is always oil. Add oil (liquid) capillary pressure value
|
||||||
// to shift the reference phase to oil
|
// to shift the reference phase to oil
|
||||||
pc[np*i + pcPhaseIdx] = capillaryPressures[BlackoilPhases::Liquid].value + sign * capillaryPressures[canonicalPhaseIdx].value;
|
pc[np*i + pcPhaseIdx] = capillaryPressures[BlackoilPhases::Liquid].value() + sign * capillaryPressures[canonicalPhaseIdx].value();
|
||||||
for (int canonicalSatPhaseIdx = 0; canonicalSatPhaseIdx < BlackoilPhases::MaxNumPhases; ++canonicalSatPhaseIdx) {
|
for (int canonicalSatPhaseIdx = 0; canonicalSatPhaseIdx < BlackoilPhases::MaxNumPhases; ++canonicalSatPhaseIdx) {
|
||||||
if ( ! phaseUsage_.phase_used[canonicalSatPhaseIdx])
|
if ( ! phaseUsage_.phase_used[canonicalSatPhaseIdx])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const int satPhaseIdx = phaseUsage_.phase_pos[canonicalSatPhaseIdx];
|
const int satPhaseIdx = phaseUsage_.phase_pos[canonicalSatPhaseIdx];
|
||||||
dpcds[np*np*i + satPhaseIdx*np + pcPhaseIdx] = capillaryPressures[BlackoilPhases::Liquid].derivatives[canonicalSatPhaseIdx] + sign * capillaryPressures[canonicalPhaseIdx].derivatives[canonicalSatPhaseIdx];
|
dpcds[np*np*i + satPhaseIdx*np + pcPhaseIdx] = capillaryPressures[BlackoilPhases::Liquid].derivative(canonicalSatPhaseIdx) + sign * capillaryPressures[canonicalPhaseIdx].derivative(canonicalSatPhaseIdx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,10 +72,10 @@ public:
|
|||||||
// to be modified for these...
|
// to be modified for these...
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
|
for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
|
||||||
if (!phaseUsage_.phase_used[phaseIdx]) {
|
if (!phaseUsage_.phase_used[phaseIdx]) {
|
||||||
saturation_[phaseIdx].value = 0.0;
|
saturation_[phaseIdx].setValue(0.0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
saturation_[phaseIdx].value = globalSaturationArray_[np*arrayIdx + phaseUsage_.phase_pos[phaseIdx]];
|
saturation_[phaseIdx].setValue(globalSaturationArray_[np*arrayIdx + phaseUsage_.phase_pos[phaseIdx]]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user