mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
added output writing for geomechanical module
This commit is contained in:
parent
207e57804d
commit
6ac3fe3794
@ -151,6 +151,7 @@ EclGenericOutputBlackoilModule(const EclipseState& eclState,
|
|||||||
const SummaryState& summaryState,
|
const SummaryState& summaryState,
|
||||||
bool enableEnergy,
|
bool enableEnergy,
|
||||||
bool enableTemperature,
|
bool enableTemperature,
|
||||||
|
bool enableMech,
|
||||||
bool enableSolvent,
|
bool enableSolvent,
|
||||||
bool enablePolymer,
|
bool enablePolymer,
|
||||||
bool enableFoam,
|
bool enableFoam,
|
||||||
@ -166,6 +167,7 @@ EclGenericOutputBlackoilModule(const EclipseState& eclState,
|
|||||||
, logOutput_(eclState, schedule, summaryState)
|
, logOutput_(eclState, schedule, summaryState)
|
||||||
, enableEnergy_(enableEnergy)
|
, enableEnergy_(enableEnergy)
|
||||||
, enableTemperature_(enableTemperature)
|
, enableTemperature_(enableTemperature)
|
||||||
|
, enableMech_(enableMech)
|
||||||
, enableSolvent_(enableSolvent)
|
, enableSolvent_(enableSolvent)
|
||||||
, enablePolymer_(enablePolymer)
|
, enablePolymer_(enablePolymer)
|
||||||
, enableFoam_(enableFoam)
|
, enableFoam_(enableFoam)
|
||||||
@ -423,15 +425,26 @@ assignToSolution(data::Solution& sol)
|
|||||||
const auto extendedSolutionArrays = std::array {
|
const auto extendedSolutionArrays = std::array {
|
||||||
DataEntry{"BIOFILM", UnitSystem::measure::identity, cBiofilm_},
|
DataEntry{"BIOFILM", UnitSystem::measure::identity, cBiofilm_},
|
||||||
DataEntry{"CALCITE", UnitSystem::measure::identity, cCalcite_},
|
DataEntry{"CALCITE", UnitSystem::measure::identity, cCalcite_},
|
||||||
|
DataEntry{"DELSTRXX", UnitSystem::measure::pressure, delstressXX_},
|
||||||
|
DataEntry{"DELSTRYY", UnitSystem::measure::pressure, delstressYY_},
|
||||||
|
DataEntry{"DELSTRZZ", UnitSystem::measure::pressure, delstressZZ_},
|
||||||
|
DataEntry{"DELSTRXY", UnitSystem::measure::pressure, delstressXY_},
|
||||||
|
DataEntry{"DELSTRXZ", UnitSystem::measure::pressure, delstressXZ_},
|
||||||
|
DataEntry{"DELSTRYZ", UnitSystem::measure::pressure, delstressYZ_},
|
||||||
|
DataEntry{"DISPX", UnitSystem::measure::length, dispX_},
|
||||||
|
DataEntry{"DISPY", UnitSystem::measure::length, dispY_},
|
||||||
|
DataEntry{"DISPZ", UnitSystem::measure::length, dispZ_},
|
||||||
DataEntry{"DRSDTCON", UnitSystem::measure::gas_oil_ratio_rate, drsdtcon_},
|
DataEntry{"DRSDTCON", UnitSystem::measure::gas_oil_ratio_rate, drsdtcon_},
|
||||||
DataEntry{"KRNSW_GO", UnitSystem::measure::identity, krnSwMdcGo_},
|
DataEntry{"KRNSW_GO", UnitSystem::measure::identity, krnSwMdcGo_},
|
||||||
DataEntry{"KRNSW_OW", UnitSystem::measure::identity, krnSwMdcOw_},
|
DataEntry{"KRNSW_OW", UnitSystem::measure::identity, krnSwMdcOw_},
|
||||||
|
DataEntry{"MECHPOTF", UnitSystem::measure::pressure, mechPotentialForce_},
|
||||||
DataEntry{"MICROBES", UnitSystem::measure::density, cMicrobes_},
|
DataEntry{"MICROBES", UnitSystem::measure::density, cMicrobes_},
|
||||||
DataEntry{"OXYGEN", UnitSystem::measure::density, cOxygen_},
|
DataEntry{"OXYGEN", UnitSystem::measure::density, cOxygen_},
|
||||||
DataEntry{"PCSWM_GO", UnitSystem::measure::identity, pcSwMdcGo_},
|
DataEntry{"PCSWM_GO", UnitSystem::measure::identity, pcSwMdcGo_},
|
||||||
DataEntry{"PCSWM_OW", UnitSystem::measure::identity, pcSwMdcOw_},
|
DataEntry{"PCSWM_OW", UnitSystem::measure::identity, pcSwMdcOw_},
|
||||||
DataEntry{"PERMFACT", UnitSystem::measure::identity, permFact_},
|
DataEntry{"PERMFACT", UnitSystem::measure::identity, permFact_},
|
||||||
DataEntry{"PORV_RC", UnitSystem::measure::identity, rockCompPorvMultiplier_},
|
DataEntry{"PORV_RC", UnitSystem::measure::identity, rockCompPorvMultiplier_},
|
||||||
|
DataEntry{"PRESPOTF", UnitSystem::measure::pressure, mechPotentialPressForce_},
|
||||||
DataEntry{"PRES_OVB", UnitSystem::measure::pressure, overburdenPressure_},
|
DataEntry{"PRES_OVB", UnitSystem::measure::pressure, overburdenPressure_},
|
||||||
DataEntry{"RSW", UnitSystem::measure::gas_oil_ratio, rsw_},
|
DataEntry{"RSW", UnitSystem::measure::gas_oil_ratio, rsw_},
|
||||||
DataEntry{"RVW", UnitSystem::measure::oil_gas_ratio, rvw_},
|
DataEntry{"RVW", UnitSystem::measure::oil_gas_ratio, rvw_},
|
||||||
@ -442,6 +455,19 @@ assignToSolution(data::Solution& sol)
|
|||||||
DataEntry{"STD_CO2", UnitSystem::measure::identity, mFracCo2_},
|
DataEntry{"STD_CO2", UnitSystem::measure::identity, mFracCo2_},
|
||||||
DataEntry{"STD_GAS", UnitSystem::measure::identity, mFracGas_},
|
DataEntry{"STD_GAS", UnitSystem::measure::identity, mFracGas_},
|
||||||
DataEntry{"STD_OIL", UnitSystem::measure::identity, mFracOil_},
|
DataEntry{"STD_OIL", UnitSystem::measure::identity, mFracOil_},
|
||||||
|
DataEntry{"STRAINXX", UnitSystem::measure::identity, strainXX_},
|
||||||
|
DataEntry{"STRAINYY", UnitSystem::measure::identity, strainYY_},
|
||||||
|
DataEntry{"STRAINZZ", UnitSystem::measure::identity, strainZZ_},
|
||||||
|
DataEntry{"STRAINXY", UnitSystem::measure::identity, strainXY_},
|
||||||
|
DataEntry{"STRAINXZ", UnitSystem::measure::identity, strainXZ_},
|
||||||
|
DataEntry{"STRAINYZ", UnitSystem::measure::identity, strainYZ_},
|
||||||
|
DataEntry{"STRESSXX", UnitSystem::measure::length, stressXX_},
|
||||||
|
DataEntry{"STRESSYY", UnitSystem::measure::length, stressYY_},
|
||||||
|
DataEntry{"STRESSZZ", UnitSystem::measure::length, stressZZ_},
|
||||||
|
DataEntry{"STRESSXY", UnitSystem::measure::length, stressXY_},
|
||||||
|
DataEntry{"STRESSXZ", UnitSystem::measure::length, stressXZ_},
|
||||||
|
DataEntry{"STRESSYZ", UnitSystem::measure::length, stressYZ_},
|
||||||
|
DataEntry{"TEMPPOTF", UnitSystem::measure::pressure, mechPotentialTempForce_},
|
||||||
DataEntry{"TMULT_RC", UnitSystem::measure::identity, rockCompTransMultiplier_},
|
DataEntry{"TMULT_RC", UnitSystem::measure::identity, rockCompTransMultiplier_},
|
||||||
DataEntry{"UREA", UnitSystem::measure::density, cUrea_},
|
DataEntry{"UREA", UnitSystem::measure::density, cUrea_},
|
||||||
};
|
};
|
||||||
@ -760,6 +786,66 @@ doAllocBuffers(unsigned bufferSize,
|
|||||||
rstKeywords["PRES"] = 0;
|
rstKeywords["PRES"] = 0;
|
||||||
rstKeywords["PRESSURE"] = 0;
|
rstKeywords["PRESSURE"] = 0;
|
||||||
|
|
||||||
|
if (enableMech_ && eclState_.runspec().mech()) {
|
||||||
|
this->mechPotentialForce_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["MECHPOTF"] = 0;
|
||||||
|
this->mechPotentialTempForce_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["TEMPPOTF"] = 0;
|
||||||
|
this->mechPotentialPressForce_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["PRESPOTF"] = 0;
|
||||||
|
|
||||||
|
this->dispX_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["DISPX"] = 0;
|
||||||
|
this->dispY_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["DISPY"] = 0;
|
||||||
|
this->dispZ_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["DISPZ"] = 0;
|
||||||
|
this->stressXX_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRESSXX"] = 0;
|
||||||
|
this->stressYY_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRESSYY"] = 0;
|
||||||
|
this->stressZZ_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRESSZZ"] = 0;
|
||||||
|
this->stressXY_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRESSXY"] = 0;
|
||||||
|
this->stressXZ_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRESSXZ"] = 0;
|
||||||
|
this->stressXY_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRESSXY"] = 0;
|
||||||
|
this->stressYZ_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRESSYZ"] = 0;
|
||||||
|
|
||||||
|
this->strainXX_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRAINXX"] = 0;
|
||||||
|
this->strainYY_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRAINYY"] = 0;
|
||||||
|
this->strainZZ_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRAINZZ"] = 0;
|
||||||
|
this->strainXY_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRAINXY"] = 0;
|
||||||
|
this->strainXZ_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRAINXZ"] = 0;
|
||||||
|
this->strainXY_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRAINXY"] = 0;
|
||||||
|
this->strainYZ_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["STRAINYZ"] = 0;
|
||||||
|
|
||||||
|
this->delstressXX_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["DELSTRXX"] = 0;
|
||||||
|
this->delstressYY_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["DELSTRYY"] = 0;
|
||||||
|
this->delstressZZ_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["DELSTRZZ"] = 0;
|
||||||
|
this->delstressXY_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["DELSTRXY"] = 0;
|
||||||
|
this->delstressXZ_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["DELSTRXZ"] = 0;
|
||||||
|
this->delstressXY_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["DELSTRXY"] = 0;
|
||||||
|
this->delstressYZ_.resize(bufferSize,0.0);
|
||||||
|
rstKeywords["DELSTRYZ"] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// If TEMP is set in RPTRST we output temperature even if THERMAL
|
// If TEMP is set in RPTRST we output temperature even if THERMAL
|
||||||
// is not activated
|
// is not activated
|
||||||
if (enableEnergy_ || rstKeywords["TEMP"] > 0) {
|
if (enableEnergy_ || rstKeywords["TEMP"] > 0) {
|
||||||
|
@ -56,11 +56,11 @@ public:
|
|||||||
Scalar* getPRESSURE_ptr(void) {
|
Scalar* getPRESSURE_ptr(void) {
|
||||||
return (this->fluidPressure_.data()) ;
|
return (this->fluidPressure_.data()) ;
|
||||||
};
|
};
|
||||||
|
|
||||||
int getPRESSURE_size( void ) {
|
int getPRESSURE_size( void ) {
|
||||||
return (this->fluidPressure_.size()) ;
|
return (this->fluidPressure_.size()) ;
|
||||||
};
|
};
|
||||||
|
|
||||||
// write cumulative production and injection reports to output
|
// write cumulative production and injection reports to output
|
||||||
void outputCumLog(std::size_t reportStepNum,
|
void outputCumLog(std::size_t reportStepNum,
|
||||||
const bool substep,
|
const bool substep,
|
||||||
@ -286,6 +286,7 @@ protected:
|
|||||||
const SummaryState& summaryState,
|
const SummaryState& summaryState,
|
||||||
bool enableEnergy,
|
bool enableEnergy,
|
||||||
bool enableTemperature,
|
bool enableTemperature,
|
||||||
|
bool enableMech,
|
||||||
bool enableSolvent,
|
bool enableSolvent,
|
||||||
bool enablePolymer,
|
bool enablePolymer,
|
||||||
bool enableFoam,
|
bool enableFoam,
|
||||||
@ -347,6 +348,7 @@ protected:
|
|||||||
|
|
||||||
bool enableEnergy_;
|
bool enableEnergy_;
|
||||||
bool enableTemperature_;
|
bool enableTemperature_;
|
||||||
|
bool enableMech_;
|
||||||
|
|
||||||
bool enableSolvent_;
|
bool enableSolvent_;
|
||||||
bool enablePolymer_;
|
bool enablePolymer_;
|
||||||
@ -427,6 +429,33 @@ protected:
|
|||||||
ScalarBuffer pcow_;
|
ScalarBuffer pcow_;
|
||||||
ScalarBuffer pcog_;
|
ScalarBuffer pcog_;
|
||||||
|
|
||||||
|
// buffers for mechanical output
|
||||||
|
ScalarBuffer mechPotentialForce_;
|
||||||
|
ScalarBuffer mechPotentialPressForce_;
|
||||||
|
ScalarBuffer mechPotentialTempForce_;
|
||||||
|
|
||||||
|
ScalarBuffer dispX_;
|
||||||
|
ScalarBuffer dispY_;
|
||||||
|
ScalarBuffer dispZ_;
|
||||||
|
ScalarBuffer stressXX_;
|
||||||
|
ScalarBuffer stressYY_;
|
||||||
|
ScalarBuffer stressZZ_;
|
||||||
|
ScalarBuffer stressXY_;
|
||||||
|
ScalarBuffer stressXZ_;
|
||||||
|
ScalarBuffer stressYZ_;
|
||||||
|
ScalarBuffer delstressXX_;
|
||||||
|
ScalarBuffer delstressYY_;
|
||||||
|
ScalarBuffer delstressZZ_;
|
||||||
|
ScalarBuffer delstressXY_;
|
||||||
|
ScalarBuffer delstressXZ_;
|
||||||
|
ScalarBuffer delstressYZ_;
|
||||||
|
ScalarBuffer strainXX_;
|
||||||
|
ScalarBuffer strainYY_;
|
||||||
|
ScalarBuffer strainZZ_;
|
||||||
|
ScalarBuffer strainXY_;
|
||||||
|
ScalarBuffer strainXZ_;
|
||||||
|
ScalarBuffer strainYZ_;
|
||||||
|
|
||||||
std::array<ScalarBuffer, numPhases> saturation_;
|
std::array<ScalarBuffer, numPhases> saturation_;
|
||||||
std::array<ScalarBuffer, numPhases> invB_;
|
std::array<ScalarBuffer, numPhases> invB_;
|
||||||
std::array<ScalarBuffer, numPhases> density_;
|
std::array<ScalarBuffer, numPhases> density_;
|
||||||
|
@ -145,6 +145,7 @@ public:
|
|||||||
simulator.vanguard().summaryState(),
|
simulator.vanguard().summaryState(),
|
||||||
getPropValue<TypeTag, Properties::EnableEnergy>(),
|
getPropValue<TypeTag, Properties::EnableEnergy>(),
|
||||||
getPropValue<TypeTag, Properties::EnableTemperature>(),
|
getPropValue<TypeTag, Properties::EnableTemperature>(),
|
||||||
|
getPropValue<TypeTag, Properties::EnableMech>(),
|
||||||
getPropValue<TypeTag, Properties::EnableSolvent>(),
|
getPropValue<TypeTag, Properties::EnableSolvent>(),
|
||||||
getPropValue<TypeTag, Properties::EnablePolymer>(),
|
getPropValue<TypeTag, Properties::EnablePolymer>(),
|
||||||
getPropValue<TypeTag, Properties::EnableFoam>(),
|
getPropValue<TypeTag, Properties::EnableFoam>(),
|
||||||
@ -216,6 +217,53 @@ public:
|
|||||||
problem.eclWriter()->getOutputNnc().size());
|
problem.eclWriter()->getOutputNnc().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void processElementMech(const ElementContext& elemCtx)
|
||||||
|
{
|
||||||
|
if constexpr (getPropValue<TypeTag, Properties::EnableMech>()) {
|
||||||
|
const auto& problem = elemCtx.simulator().problem();
|
||||||
|
const auto& model = problem.geoMechModel();
|
||||||
|
for (unsigned dofIdx = 0; dofIdx < elemCtx.numPrimaryDof(/*timeIdx=*/0); ++dofIdx) {
|
||||||
|
const auto& intQuants = elemCtx.intensiveQuantities(dofIdx, /*timeIdx=*/0);
|
||||||
|
const auto& fs = intQuants.fluidState();
|
||||||
|
unsigned globalDofIdx = elemCtx.globalSpaceIndex(dofIdx, /*timeIdx=*/0);
|
||||||
|
if (!this->mechPotentialForce_.empty()) {
|
||||||
|
//assume all mechancal tings should be written
|
||||||
|
this->mechPotentialForce_[globalDofIdx] = model.mechPotentialForce(globalDofIdx);
|
||||||
|
this->mechPotentialPressForce_[globalDofIdx] = model.mechPotentialPressForce(globalDofIdx);
|
||||||
|
this->mechPotentialTempForce_[globalDofIdx] = model.mechPotentialTempForce(globalDofIdx);
|
||||||
|
|
||||||
|
this->dispX_[globalDofIdx] = model.disp(globalDofIdx, 0);
|
||||||
|
this->dispY_[globalDofIdx] = model.disp(globalDofIdx, 1);
|
||||||
|
this->dispZ_[globalDofIdx] = model.disp(globalDofIdx, 2);
|
||||||
|
this->stressXX_[globalDofIdx] = model.stress(globalDofIdx, 0);
|
||||||
|
this->stressYY_[globalDofIdx] = model.stress(globalDofIdx, 1);
|
||||||
|
this->stressZZ_[globalDofIdx] = model.stress(globalDofIdx, 2);
|
||||||
|
//voight notation
|
||||||
|
this->stressXY_[globalDofIdx] = model.stress(globalDofIdx, 5);
|
||||||
|
this->stressXZ_[globalDofIdx] = model.stress(globalDofIdx, 4);
|
||||||
|
this->stressYZ_[globalDofIdx] = model.stress(globalDofIdx, 3);
|
||||||
|
|
||||||
|
this->strainXX_[globalDofIdx] = model.strain(globalDofIdx, 0);
|
||||||
|
this->strainYY_[globalDofIdx] = model.strain(globalDofIdx, 1);
|
||||||
|
this->strainZZ_[globalDofIdx] = model.strain(globalDofIdx, 2);
|
||||||
|
//voight notation
|
||||||
|
this->strainXY_[globalDofIdx] = model.strain(globalDofIdx, 5);
|
||||||
|
this->strainXZ_[globalDofIdx] = model.strain(globalDofIdx, 4);
|
||||||
|
this->strainYZ_[globalDofIdx] = model.strain(globalDofIdx, 3);
|
||||||
|
|
||||||
|
|
||||||
|
this->delstressXX_[globalDofIdx] = model.delstress(globalDofIdx, 0);
|
||||||
|
this->delstressYY_[globalDofIdx] = model.delstress(globalDofIdx, 1);
|
||||||
|
this->delstressZZ_[globalDofIdx] = model.delstress(globalDofIdx, 2);
|
||||||
|
//voight notation
|
||||||
|
this->delstressXY_[globalDofIdx] = model.delstress(globalDofIdx, 5);
|
||||||
|
this->delstressXZ_[globalDofIdx] = model.delstress(globalDofIdx, 4);
|
||||||
|
this->delstressYZ_[globalDofIdx] = model.delstress(globalDofIdx, 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Modify the internal buffers according to the intensive
|
* \brief Modify the internal buffers according to the intensive
|
||||||
* quanties relevant for an element
|
* quanties relevant for an element
|
||||||
|
@ -123,6 +123,7 @@ class EclWriter : public EclGenericWriter<GetPropType<TypeTag, Properties::Grid>
|
|||||||
using BaseType = EclGenericWriter<Grid,EquilGrid,GridView,ElementMapper,Scalar>;
|
using BaseType = EclGenericWriter<Grid,EquilGrid,GridView,ElementMapper,Scalar>;
|
||||||
|
|
||||||
enum { enableEnergy = getPropValue<TypeTag, Properties::EnableEnergy>() };
|
enum { enableEnergy = getPropValue<TypeTag, Properties::EnableEnergy>() };
|
||||||
|
enum { enableMech = getPropValue<TypeTag, Properties::EnableMech>() };
|
||||||
enum { enableTemperature = getPropValue<TypeTag, Properties::EnableTemperature>() };
|
enum { enableTemperature = getPropValue<TypeTag, Properties::EnableTemperature>() };
|
||||||
enum { enableSolvent = getPropValue<TypeTag, Properties::EnableSolvent>() };
|
enum { enableSolvent = getPropValue<TypeTag, Properties::EnableSolvent>() };
|
||||||
|
|
||||||
@ -574,6 +575,17 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if constexpr (enableMech) {
|
||||||
|
if (simulator_.vanguard().eclState().runspec().mech()) {
|
||||||
|
OPM_TIMEBLOCK(prepareMechData);
|
||||||
|
for (const auto& elem : elements(gridView)) {
|
||||||
|
elemCtx.updatePrimaryStencil(elem);
|
||||||
|
elemCtx.updatePrimaryIntensiveQuantities(/*timeIdx=*/0);
|
||||||
|
eclOutputModule_->processElementMech(elemCtx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (! this->simulator_.model().linearizer().getFlowsInfo().empty()) {
|
if (! this->simulator_.model().linearizer().getFlowsInfo().empty()) {
|
||||||
OPM_TIMEBLOCK(prepareFlowsData);
|
OPM_TIMEBLOCK(prepareFlowsData);
|
||||||
for (const auto& elem : elements(gridView)) {
|
for (const auto& elem : elements(gridView)) {
|
||||||
@ -660,6 +672,7 @@ private:
|
|||||||
bool damarisUpdate_ = false; ///< Whenever this is true writeOutput() will set up Damaris offsets of model fields
|
bool damarisUpdate_ = false; ///< Whenever this is true writeOutput() will set up Damaris offsets of model fields
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Opm
|
} // namespace Opm
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user