mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Blackoil: Prepare for 2p conditional storage of fluidstate
Also fix pseudo 2p case for ebos
This commit is contained in:
parent
cee74bb2b5
commit
656f055992
@ -69,6 +69,7 @@ class EclEquilInitializer
|
|||||||
typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
|
typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
|
typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
|
typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
|
||||||
|
typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
|
||||||
|
|
||||||
enum { numPhases = FluidSystem::numPhases };
|
enum { numPhases = FluidSystem::numPhases };
|
||||||
enum { oilPhaseIdx = FluidSystem::oilPhaseIdx };
|
enum { oilPhaseIdx = FluidSystem::oilPhaseIdx };
|
||||||
@ -84,14 +85,18 @@ class EclEquilInitializer
|
|||||||
enum { enableTemperature = GET_PROP_VALUE(TypeTag, EnableTemperature) };
|
enum { enableTemperature = GET_PROP_VALUE(TypeTag, EnableTemperature) };
|
||||||
enum { enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy) };
|
enum { enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy) };
|
||||||
|
|
||||||
|
public:
|
||||||
// NB: setting the enableEnergy argument to true enables storage of enthalpy and
|
// NB: setting the enableEnergy argument to true enables storage of enthalpy and
|
||||||
// internal energy!
|
// internal energy!
|
||||||
typedef Opm::BlackOilFluidState<Scalar,
|
typedef Opm::BlackOilFluidState<Scalar,
|
||||||
FluidSystem,
|
FluidSystem,
|
||||||
enableTemperature,
|
enableTemperature,
|
||||||
enableEnergy> ScalarFluidState;
|
enableEnergy,
|
||||||
|
Indices::gasEnabled,
|
||||||
|
Indices::numPhases
|
||||||
|
> ScalarFluidState;
|
||||||
|
|
||||||
|
|
||||||
public:
|
|
||||||
template <class EclMaterialLawManager>
|
template <class EclMaterialLawManager>
|
||||||
EclEquilInitializer(const Simulator& simulator,
|
EclEquilInitializer(const Simulator& simulator,
|
||||||
EclMaterialLawManager& materialLawManager)
|
EclMaterialLawManager& materialLawManager)
|
||||||
@ -123,18 +128,18 @@ public:
|
|||||||
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
if (FluidSystem::phaseIsActive(phaseIdx))
|
if (FluidSystem::phaseIsActive(phaseIdx))
|
||||||
fluidState.setSaturation(phaseIdx, initialState.saturation()[phaseIdx][elemIdx]);
|
fluidState.setSaturation(phaseIdx, initialState.saturation()[phaseIdx][elemIdx]);
|
||||||
else
|
else if (Indices::numPhases == 3)
|
||||||
fluidState.setSaturation(phaseIdx, 0.0);
|
fluidState.setSaturation(phaseIdx, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FluidSystem::enableDissolvedGas())
|
if (FluidSystem::enableDissolvedGas())
|
||||||
fluidState.setRs(initialState.rs()[elemIdx]);
|
fluidState.setRs(initialState.rs()[elemIdx]);
|
||||||
else
|
else if (Indices::gasEnabled)
|
||||||
fluidState.setRs(0.0);
|
fluidState.setRs(0.0);
|
||||||
|
|
||||||
if (FluidSystem::enableVaporizedOil())
|
if (FluidSystem::enableVaporizedOil())
|
||||||
fluidState.setRv(initialState.rv()[elemIdx]);
|
fluidState.setRv(initialState.rv()[elemIdx]);
|
||||||
else
|
else if (Indices::gasEnabled)
|
||||||
fluidState.setRv(0.0);
|
fluidState.setRv(0.0);
|
||||||
|
|
||||||
|
|
||||||
@ -143,10 +148,13 @@ public:
|
|||||||
fluidState.setTemperature(initialState.temperature()[elemIdx]);
|
fluidState.setTemperature(initialState.temperature()[elemIdx]);
|
||||||
|
|
||||||
// set the phase pressures.
|
// set the phase pressures.
|
||||||
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
|
if (!FluidSystem::phaseIsActive(phaseIdx))
|
||||||
|
continue;
|
||||||
fluidState.setPressure(phaseIdx, initialState.press()[phaseIdx][elemIdx]);
|
fluidState.setPressure(phaseIdx, initialState.press()[phaseIdx][elemIdx]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Return the initial thermodynamic state which should be used as the initial
|
* \brief Return the initial thermodynamic state which should be used as the initial
|
||||||
|
@ -354,10 +354,7 @@ class EclProblem : public GET_PROP_TYPE(TypeTag, BaseProblem)
|
|||||||
typedef BlackOilSolventModule<TypeTag> SolventModule;
|
typedef BlackOilSolventModule<TypeTag> SolventModule;
|
||||||
typedef BlackOilPolymerModule<TypeTag> PolymerModule;
|
typedef BlackOilPolymerModule<TypeTag> PolymerModule;
|
||||||
|
|
||||||
typedef Opm::BlackOilFluidState<Scalar,
|
typedef typename EclEquilInitializer<TypeTag>::ScalarFluidState InitialFluidState;
|
||||||
FluidSystem,
|
|
||||||
enableTemperature,
|
|
||||||
enableEnergy> InitialFluidState;
|
|
||||||
|
|
||||||
typedef Opm::MathToolbox<Evaluation> Toolbox;
|
typedef Opm::MathToolbox<Evaluation> Toolbox;
|
||||||
typedef Dune::FieldMatrix<Scalar, dimWorld, dimWorld> DimMatrix;
|
typedef Dune::FieldMatrix<Scalar, dimWorld, dimWorld> DimMatrix;
|
||||||
|
Loading…
Reference in New Issue
Block a user