mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Merge remote-tracking branch 'upstream/master' into PR/ewoms-can-use-dune-fem
This commit is contained in:
@@ -140,9 +140,6 @@ SET_BOOL_PROP(Co2InjectionBaseProblem, NewtonWriteConvergence, false);
|
|||||||
// Enable gravity
|
// Enable gravity
|
||||||
SET_BOOL_PROP(Co2InjectionBaseProblem, EnableGravity, true);
|
SET_BOOL_PROP(Co2InjectionBaseProblem, EnableGravity, true);
|
||||||
|
|
||||||
// Reuse linearizations if possible?
|
|
||||||
SET_BOOL_PROP(Co2InjectionBaseProblem, EnableLinearizationRecycling, true);
|
|
||||||
|
|
||||||
// set the defaults for the problem specific properties
|
// set the defaults for the problem specific properties
|
||||||
SET_SCALAR_PROP(Co2InjectionBaseProblem, FluidSystemPressureLow, 3e7);
|
SET_SCALAR_PROP(Co2InjectionBaseProblem, FluidSystemPressureLow, 3e7);
|
||||||
SET_SCALAR_PROP(Co2InjectionBaseProblem, FluidSystemPressureHigh, 4e7);
|
SET_SCALAR_PROP(Co2InjectionBaseProblem, FluidSystemPressureHigh, 4e7);
|
||||||
@@ -375,7 +372,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::temperature
|
* \copydoc FvBaseMultiPhaseProblem::temperature
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (inHighTemperatureRegion_(pos))
|
if (inHighTemperatureRegion_(pos))
|
||||||
@@ -387,8 +384,8 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -400,7 +397,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -413,7 +410,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -427,8 +424,8 @@ public:
|
|||||||
* In this case, we assume the rock-matrix to be granite.
|
* In this case, we assume the rock-matrix to be granite.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar heatCapacitySolid(const Context &context, int spaceIdx,
|
Scalar heatCapacitySolid(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
return 790 // specific heat capacity of granite [J / (kg K)]
|
return 790 // specific heat capacity of granite [J / (kg K)]
|
||||||
* 2700; // density of granite [kg/m^3]
|
* 2700; // density of granite [kg/m^3]
|
||||||
@@ -439,7 +436,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const HeatConductionLawParams &
|
const HeatConductionLawParams &
|
||||||
heatConductionParams(const Context &context, int spaceIdx, int timeIdx) const
|
heatConductionParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -459,7 +456,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -505,8 +502,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
Opm::CompositionalFluidState<Scalar, FluidSystem> fs;
|
Opm::CompositionalFluidState<Scalar, FluidSystem> fs;
|
||||||
initialFluidState_(fs, context, spaceIdx, timeIdx);
|
initialFluidState_(fs, context, spaceIdx, timeIdx);
|
||||||
@@ -524,8 +521,8 @@ public:
|
|||||||
* everywhere.
|
* everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -533,7 +530,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
template <class Context, class FluidState>
|
template <class Context, class FluidState>
|
||||||
void initialFluidState_(FluidState &fs, const Context &context,
|
void initialFluidState_(FluidState &fs, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
|
|||||||
@@ -316,15 +316,15 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::temperature
|
* \copydoc FvBaseMultiPhaseProblem::temperature
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 293.15; /* [K] */ }
|
{ return 293.15; /* [K] */ }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -336,7 +336,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -350,7 +350,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -364,15 +364,15 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const HeatConductionLawParams &
|
const HeatConductionLawParams &
|
||||||
heatConductionParams(const Context &context, int spaceIdx, int timeIdx) const
|
heatConductionParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return heatCondParams_; }
|
{ return heatCondParams_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::heatCapacitySolid
|
* \copydoc FvBaseMultiPhaseProblem::heatCapacitySolid
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar heatCapacitySolid(const Context &context, int spaceIdx,
|
Scalar heatCapacitySolid(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
return 850 // specific heat capacity [J / (kg K)]
|
return 850 // specific heat capacity [J / (kg K)]
|
||||||
* 2650; // density of sand [kg/m^3]
|
* 2650; // density of sand [kg/m^3]
|
||||||
@@ -390,7 +390,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -409,7 +409,7 @@ public:
|
|||||||
// inject with the same composition as the gas phase of
|
// inject with the same composition as the gas phase of
|
||||||
// the injection fluid state
|
// the injection fluid state
|
||||||
Scalar molarInjectionRate = 0.3435; // [mol/(m^2 s)]
|
Scalar molarInjectionRate = 0.3435; // [mol/(m^2 s)]
|
||||||
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
|
for (unsigned compIdx = 0; compIdx < numComponents; ++compIdx)
|
||||||
molarRate[conti0EqIdx + compIdx] =
|
molarRate[conti0EqIdx + compIdx] =
|
||||||
-molarInjectionRate
|
-molarInjectionRate
|
||||||
* injectFluidState_.moleFraction(gasPhaseIdx, compIdx);
|
* injectFluidState_.moleFraction(gasPhaseIdx, compIdx);
|
||||||
@@ -438,8 +438,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
Opm::CompositionalFluidState<Scalar, FluidSystem> fs;
|
Opm::CompositionalFluidState<Scalar, FluidSystem> fs;
|
||||||
|
|
||||||
@@ -456,8 +456,8 @@ public:
|
|||||||
* everywhere.
|
* everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -493,7 +493,7 @@ private:
|
|||||||
|
|
||||||
template <class FluidState, class Context>
|
template <class FluidState, class Context>
|
||||||
void initialFluidState_(FluidState &fs, const Context &context,
|
void initialFluidState_(FluidState &fs, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -510,7 +510,7 @@ private:
|
|||||||
const auto &matParams = materialLawParams(context, spaceIdx, timeIdx);
|
const auto &matParams = materialLawParams(context, spaceIdx, timeIdx);
|
||||||
Scalar pc[numPhases];
|
Scalar pc[numPhases];
|
||||||
MaterialLaw::capillaryPressures(pc, matParams, fs);
|
MaterialLaw::capillaryPressures(pc, matParams, fs);
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
||||||
fs.setPressure(phaseIdx, pw + (pc[phaseIdx] - pc[waterPhaseIdx]));
|
fs.setPressure(phaseIdx, pw + (pc[phaseIdx] - pc[waterPhaseIdx]));
|
||||||
|
|
||||||
// compute the phase compositions
|
// compute the phase compositions
|
||||||
@@ -528,7 +528,7 @@ private:
|
|||||||
const auto &matParams = materialLawParams(context, spaceIdx, timeIdx);
|
const auto &matParams = materialLawParams(context, spaceIdx, timeIdx);
|
||||||
Scalar pc[numPhases];
|
Scalar pc[numPhases];
|
||||||
MaterialLaw::capillaryPressures(pc, matParams, fs);
|
MaterialLaw::capillaryPressures(pc, matParams, fs);
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
||||||
fs.setPressure(phaseIdx, pw + (pc[phaseIdx] - pc[waterPhaseIdx]));
|
fs.setPressure(phaseIdx, pw + (pc[phaseIdx] - pc[waterPhaseIdx]));
|
||||||
|
|
||||||
// compute the phase compositions
|
// compute the phase compositions
|
||||||
@@ -539,17 +539,17 @@ private:
|
|||||||
|
|
||||||
// set the contaminant mole fractions to zero. this is a
|
// set the contaminant mole fractions to zero. this is a
|
||||||
// little bit hacky...
|
// little bit hacky...
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
fs.setMoleFraction(phaseIdx, NAPLIdx, 0.0);
|
fs.setMoleFraction(phaseIdx, NAPLIdx, 0.0);
|
||||||
|
|
||||||
if (phaseIdx == naplPhaseIdx)
|
if (phaseIdx == naplPhaseIdx)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Scalar sumx = 0;
|
Scalar sumx = 0;
|
||||||
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
|
for (unsigned compIdx = 0; compIdx < numComponents; ++compIdx)
|
||||||
sumx += fs.moleFraction(phaseIdx, compIdx);
|
sumx += fs.moleFraction(phaseIdx, compIdx);
|
||||||
|
|
||||||
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
|
for (unsigned compIdx = 0; compIdx < numComponents; ++compIdx)
|
||||||
fs.setMoleFraction(phaseIdx, compIdx,
|
fs.setMoleFraction(phaseIdx, compIdx,
|
||||||
fs.moleFraction(phaseIdx, compIdx) / sumx);
|
fs.moleFraction(phaseIdx, compIdx) / sumx);
|
||||||
}
|
}
|
||||||
@@ -563,18 +563,18 @@ private:
|
|||||||
// create a Fluid state which has all phases present
|
// create a Fluid state which has all phases present
|
||||||
Opm::ImmiscibleFluidState<Scalar, FluidSystem> fs;
|
Opm::ImmiscibleFluidState<Scalar, FluidSystem> fs;
|
||||||
fs.setTemperature(293.15);
|
fs.setTemperature(293.15);
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
fs.setPressure(phaseIdx, 1.0135e5);
|
fs.setPressure(phaseIdx, 1.0135e5);
|
||||||
}
|
}
|
||||||
|
|
||||||
typename FluidSystem::ParameterCache paramCache;
|
typename FluidSystem::ParameterCache paramCache;
|
||||||
paramCache.updateAll(fs);
|
paramCache.updateAll(fs);
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
Scalar rho = FluidSystem::density(fs, paramCache, phaseIdx);
|
Scalar rho = FluidSystem::density(fs, paramCache, phaseIdx);
|
||||||
fs.setDensity(phaseIdx, rho);
|
fs.setDensity(phaseIdx, rho);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
Scalar lambdaSaturated;
|
Scalar lambdaSaturated;
|
||||||
if (FluidSystem::isLiquid(phaseIdx)) {
|
if (FluidSystem::isLiquid(phaseIdx)) {
|
||||||
Scalar lambdaFluid = FluidSystem::thermalConductivity(fs, paramCache, phaseIdx);
|
Scalar lambdaFluid = FluidSystem::thermalConductivity(fs, paramCache, phaseIdx);
|
||||||
|
|||||||
@@ -235,15 +235,15 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return K_; }
|
{ return K_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 0.35; }
|
{ return 0.35; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -251,14 +251,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return materialParams_; }
|
{ return materialParams_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::temperature
|
* \copydoc FvBaseMultiPhaseProblem::temperature
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return temperature_; }
|
{ return temperature_; }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -275,7 +275,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ values.setNoFlow(); }
|
{ values.setNoFlow(); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -289,8 +289,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (onLeftSide_(pos))
|
if (onLeftSide_(pos))
|
||||||
@@ -306,8 +306,8 @@ public:
|
|||||||
* everywhere.
|
* everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
|
|||||||
@@ -332,22 +332,22 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::temperature
|
* \copydoc FvBaseMultiPhaseProblem::temperature
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return temperature_; }
|
{ return temperature_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return K_; }
|
{ return K_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 0.4; }
|
{ return 0.4; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -366,7 +366,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto& entity = context.stencil(timeIdx).entity( spaceIdx );
|
const auto& entity = context.stencil(timeIdx).entity( spaceIdx );
|
||||||
return materialParams_[ entity ];
|
return materialParams_[ entity ];
|
||||||
@@ -384,7 +384,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -414,8 +414,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
// assign the primary variables
|
// assign the primary variables
|
||||||
values.assignNaive(initialFluidState_);
|
values.assignNaive(initialFluidState_);
|
||||||
@@ -426,16 +426,16 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void constraints(Constraints &constraints, const Context &context,
|
void constraints(Constraints &constraints, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
if (onUpperBoundary_(pos) && !onInlet_(pos)) {
|
if (onUpperBoundary_(pos) && !onInlet_(pos)) {
|
||||||
constraints.setAllConstraint();
|
constraints.setActive(true);
|
||||||
constraints.assignNaive(initialFluidState_);
|
constraints.assignNaive(initialFluidState_);
|
||||||
}
|
}
|
||||||
else if (onLowerBoundary_(pos)) {
|
else if (onLowerBoundary_(pos)) {
|
||||||
constraints.setAllConstraint();
|
constraints.setActive(true);
|
||||||
constraints.assignNaive(initialFluidState_);
|
constraints.assignNaive(initialFluidState_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -447,8 +447,8 @@ public:
|
|||||||
* everywhere.
|
* everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
//! \}
|
//! \}
|
||||||
|
|
||||||
|
|||||||
@@ -26,16 +26,21 @@
|
|||||||
#ifndef EWOMS_FRACTURE_PROBLEM_HH
|
#ifndef EWOMS_FRACTURE_PROBLEM_HH
|
||||||
#define EWOMS_FRACTURE_PROBLEM_HH
|
#define EWOMS_FRACTURE_PROBLEM_HH
|
||||||
|
|
||||||
#include <ewoms/models/discretefracture/discretefracturemodel.hh>
|
|
||||||
|
|
||||||
#if HAVE_DUNE_ALUGRID
|
#if HAVE_DUNE_ALUGRID
|
||||||
|
// avoid reordering of macro elements, otherwise this problem won't work
|
||||||
|
#define DISABLE_ALUGRID_SFC_ORDERING 1
|
||||||
#include <dune/alugrid/grid.hh>
|
#include <dune/alugrid/grid.hh>
|
||||||
|
#include <dune/alugrid/dgf.hh>
|
||||||
|
#elif HAVE_ALUGRID
|
||||||
|
#include <dune/grid/alugrid.hh>
|
||||||
#include <dune/grid/io/file/dgfparser/dgfalu.hh>
|
#include <dune/grid/io/file/dgfparser/dgfalu.hh>
|
||||||
#else
|
#else
|
||||||
#include <dune/grid/alugrid.hh>
|
#error "No ALUGrid found"
|
||||||
#include <dune/alugrid/dgf.hh>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <ewoms/models/discretefracture/discretefracturemodel.hh>
|
||||||
|
#include <ewoms/io/dgfgridmanager.hh>
|
||||||
#include <opm/material/fluidmatrixinteractions/RegularizedBrooksCorey.hpp>
|
#include <opm/material/fluidmatrixinteractions/RegularizedBrooksCorey.hpp>
|
||||||
#include <opm/material/fluidmatrixinteractions/RegularizedVanGenuchten.hpp>
|
#include <opm/material/fluidmatrixinteractions/RegularizedVanGenuchten.hpp>
|
||||||
#include <opm/material/fluidmatrixinteractions/LinearMaterial.hpp>
|
#include <opm/material/fluidmatrixinteractions/LinearMaterial.hpp>
|
||||||
@@ -46,7 +51,6 @@
|
|||||||
#include <opm/material/fluidsystems/TwoPhaseImmiscibleFluidSystem.hpp>
|
#include <opm/material/fluidsystems/TwoPhaseImmiscibleFluidSystem.hpp>
|
||||||
#include <opm/material/components/SimpleH2O.hpp>
|
#include <opm/material/components/SimpleH2O.hpp>
|
||||||
#include <opm/material/components/Dnapl.hpp>
|
#include <opm/material/components/Dnapl.hpp>
|
||||||
#include <ewoms/io/artgridmanager.hh>
|
|
||||||
|
|
||||||
#include <dune/common/version.hh>
|
#include <dune/common/version.hh>
|
||||||
#include <dune/common/fmatrix.hh>
|
#include <dune/common/fmatrix.hh>
|
||||||
@@ -66,14 +70,14 @@ namespace Properties {
|
|||||||
// Create a type tag for the problem
|
// Create a type tag for the problem
|
||||||
NEW_TYPE_TAG(FractureProblem, INHERITS_FROM(DiscreteFractureModel));
|
NEW_TYPE_TAG(FractureProblem, INHERITS_FROM(DiscreteFractureModel));
|
||||||
|
|
||||||
// Set the GridManager property
|
|
||||||
SET_TYPE_PROP(FractureProblem, GridManager, Ewoms::ArtGridManager<TypeTag>);
|
|
||||||
|
|
||||||
// Set the grid type
|
// Set the grid type
|
||||||
SET_TYPE_PROP(
|
SET_TYPE_PROP(
|
||||||
FractureProblem, Grid,
|
FractureProblem, Grid,
|
||||||
Dune::ALUGrid</*dim=*/2, /*dimWorld=*/2, Dune::simplex, Dune::nonconforming>);
|
Dune::ALUGrid</*dim=*/2, /*dimWorld=*/2, Dune::simplex, Dune::nonconforming>);
|
||||||
|
|
||||||
|
// Set the GridManager property
|
||||||
|
SET_TYPE_PROP(FractureProblem, GridManager, Ewoms::DgfGridManager<TypeTag>);
|
||||||
|
|
||||||
// Set the problem property
|
// Set the problem property
|
||||||
SET_TYPE_PROP(FractureProblem, Problem, Ewoms::FractureProblem<TypeTag>);
|
SET_TYPE_PROP(FractureProblem, Problem, Ewoms::FractureProblem<TypeTag>);
|
||||||
|
|
||||||
@@ -142,7 +146,7 @@ SET_BOOL_PROP(FractureProblem, EnableGravity, false);
|
|||||||
SET_BOOL_PROP(FractureProblem, EnableConstraints, true);
|
SET_BOOL_PROP(FractureProblem, EnableConstraints, true);
|
||||||
|
|
||||||
// Set the default value for the file name of the grid
|
// Set the default value for the file name of the grid
|
||||||
SET_STRING_PROP(FractureProblem, GridFile, "data/fracture.art");
|
SET_STRING_PROP(FractureProblem, GridFile, "data/fracture.art.dgf");
|
||||||
|
|
||||||
// Set the default value for the end time
|
// Set the default value for the end time
|
||||||
SET_SCALAR_PROP(FractureProblem, EndTime, 3e3);
|
SET_SCALAR_PROP(FractureProblem, EndTime, 3e3);
|
||||||
@@ -313,7 +317,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::temperature
|
* \copydoc FvBaseMultiPhaseProblem::temperature
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return temperature_; }
|
{ return temperature_; }
|
||||||
|
|
||||||
// \}
|
// \}
|
||||||
@@ -327,8 +331,8 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return matrixK_; }
|
{ return matrixK_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -338,15 +342,15 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &fractureIntrinsicPermeability(const Context &context,
|
const DimMatrix &fractureIntrinsicPermeability(const Context &context,
|
||||||
int spaceIdx,
|
unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return fractureK_; }
|
{ return fractureK_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return matrixPorosity_; }
|
{ return matrixPorosity_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -355,8 +359,8 @@ public:
|
|||||||
* \copydoc Doxygen::contextParams
|
* \copydoc Doxygen::contextParams
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar fracturePorosity(const Context &context, int spaceIdx,
|
Scalar fracturePorosity(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return fracturePorosity_; }
|
{ return fracturePorosity_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -364,7 +368,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return matrixMaterialParams_; }
|
{ return matrixMaterialParams_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -374,8 +378,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &fractureMaterialLawParams(const Context &context,
|
const MaterialLawParams &fractureMaterialLawParams(const Context &context,
|
||||||
int spaceIdx,
|
unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return fractureMaterialParams_; }
|
{ return fractureMaterialParams_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -397,8 +401,8 @@ public:
|
|||||||
* \param timeIdx The index used by the time discretization.
|
* \param timeIdx The index used by the time discretization.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar fractureWidth(const Context &context, int spaceIdx1, int spaceIdx2,
|
Scalar fractureWidth(const Context &context, unsigned spaceIdx1, unsigned spaceIdx2,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return fractureWidth_; }
|
{ return fractureWidth_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -406,7 +410,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const HeatConductionLawParams &
|
const HeatConductionLawParams &
|
||||||
heatConductionParams(const Context &context, int spaceIdx, int timeIdx) const
|
heatConductionParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return heatCondParams_; }
|
{ return heatCondParams_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -415,8 +419,8 @@ public:
|
|||||||
* In this case, we assume the rock-matrix to be granite.
|
* In this case, we assume the rock-matrix to be granite.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar heatCapacitySolid(const Context &context, int spaceIdx,
|
Scalar heatCapacitySolid(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
return 790 // specific heat capacity of granite [J / (kg K)]
|
return 790 // specific heat capacity of granite [J / (kg K)]
|
||||||
* 2700; // density of granite [kg/m^3]
|
* 2700; // density of granite [kg/m^3]
|
||||||
@@ -434,7 +438,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -472,7 +476,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void constraints(Constraints &constraints, const Context &context,
|
void constraints(Constraints &constraints, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -480,7 +484,7 @@ public:
|
|||||||
// only impose constraints adjacent to the left boundary
|
// only impose constraints adjacent to the left boundary
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int globalIdx = context.globalSpaceIndex(spaceIdx, timeIdx);
|
unsigned globalIdx = context.globalSpaceIndex(spaceIdx, timeIdx);
|
||||||
if (!fractureMapper().isFractureVertex(globalIdx)) {
|
if (!fractureMapper().isFractureVertex(globalIdx)) {
|
||||||
// do not impose constraints if the finite volume does
|
// do not impose constraints if the finite volume does
|
||||||
// not contain fractures.
|
// not contain fractures.
|
||||||
@@ -491,7 +495,7 @@ public:
|
|||||||
// and features a fracture, specify the fracture fluid
|
// and features a fracture, specify the fracture fluid
|
||||||
// state.
|
// state.
|
||||||
FluidState fractureFluidState;
|
FluidState fractureFluidState;
|
||||||
fractureFluidState.setTemperature(temperature_ + 10);
|
fractureFluidState.setTemperature(temperature_ + 10.0);
|
||||||
|
|
||||||
fractureFluidState.setSaturation(wettingPhaseIdx, 1.0);
|
fractureFluidState.setSaturation(wettingPhaseIdx, 1.0);
|
||||||
fractureFluidState.setSaturation(nonWettingPhaseIdx,
|
fractureFluidState.setSaturation(nonWettingPhaseIdx,
|
||||||
@@ -508,7 +512,7 @@ public:
|
|||||||
+ (pCFracture[nonWettingPhaseIdx]
|
+ (pCFracture[nonWettingPhaseIdx]
|
||||||
- pCFracture[wettingPhaseIdx]));
|
- pCFracture[wettingPhaseIdx]));
|
||||||
|
|
||||||
constraints.setAllConstraint();
|
constraints.setActive(true);
|
||||||
constraints.assignNaiveFromFracture(fractureFluidState,
|
constraints.assignNaiveFromFracture(fractureFluidState,
|
||||||
matrixMaterialParams_);
|
matrixMaterialParams_);
|
||||||
}
|
}
|
||||||
@@ -517,8 +521,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
FluidState fluidState;
|
FluidState fluidState;
|
||||||
fluidState.setTemperature(temperature_);
|
fluidState.setTemperature(temperature_);
|
||||||
@@ -539,8 +543,8 @@ public:
|
|||||||
* everywhere.
|
* everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
// \}
|
// \}
|
||||||
@@ -565,18 +569,18 @@ private:
|
|||||||
// create a Fluid state which has all phases present
|
// create a Fluid state which has all phases present
|
||||||
Opm::ImmiscibleFluidState<Scalar, FluidSystem> fs;
|
Opm::ImmiscibleFluidState<Scalar, FluidSystem> fs;
|
||||||
fs.setTemperature(293.15);
|
fs.setTemperature(293.15);
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
fs.setPressure(phaseIdx, 1.0135e5);
|
fs.setPressure(phaseIdx, 1.0135e5);
|
||||||
}
|
}
|
||||||
|
|
||||||
typename FluidSystem::ParameterCache paramCache;
|
typename FluidSystem::ParameterCache paramCache;
|
||||||
paramCache.updateAll(fs);
|
paramCache.updateAll(fs);
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
Scalar rho = FluidSystem::density(fs, paramCache, phaseIdx);
|
Scalar rho = FluidSystem::density(fs, paramCache, phaseIdx);
|
||||||
fs.setDensity(phaseIdx, rho);
|
fs.setDensity(phaseIdx, rho);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
Scalar lambdaSaturated;
|
Scalar lambdaSaturated;
|
||||||
if (FluidSystem::isLiquid(phaseIdx)) {
|
if (FluidSystem::isLiquid(phaseIdx)) {
|
||||||
Scalar lambdaFluid = FluidSystem::thermalConductivity(fs, paramCache, phaseIdx);
|
Scalar lambdaFluid = FluidSystem::thermalConductivity(fs, paramCache, phaseIdx);
|
||||||
|
|||||||
@@ -261,22 +261,22 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::temperature
|
* \copydoc FvBaseMultiPhaseProblem::temperature
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 273.15 + 10; } // 10C
|
{ return 273.15 + 10; } // 10C
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 0.4; }
|
{ return 0.4; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
return isInLens_(context.pos(spaceIdx, timeIdx)) ? intrinsicPermLens_
|
return isInLens_(context.pos(spaceIdx, timeIdx)) ? intrinsicPermLens_
|
||||||
: intrinsicPerm_;
|
: intrinsicPerm_;
|
||||||
@@ -293,7 +293,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -331,8 +331,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
// const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
// const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
||||||
values[pressure0Idx] = 1.0e+5; // + 9.81*1.23*(20-globalPos[dim-1]);
|
values[pressure0Idx] = 1.0e+5; // + 9.81*1.23*(20-globalPos[dim-1]);
|
||||||
@@ -342,8 +342,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::source
|
* \copydoc FvBaseProblem::source
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
|
|||||||
@@ -275,15 +275,15 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::temperature
|
* \copydoc FvBaseMultiPhaseProblem::temperature
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return temperature_; }
|
{ return temperature_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -295,7 +295,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return porosity_; }
|
{ return porosity_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -303,7 +303,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return materialParams_; }
|
{ return materialParams_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -312,8 +312,8 @@ public:
|
|||||||
* In this case, we assume the rock-matrix to be quartz.
|
* In this case, we assume the rock-matrix to be quartz.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar heatCapacitySolid(const Context &context, int spaceIdx,
|
Scalar heatCapacitySolid(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
return 850. // specific heat capacity [J / (kg K)]
|
return 850. // specific heat capacity [J / (kg K)]
|
||||||
* 2650.; // density of sand [kg/m^3]
|
* 2650.; // density of sand [kg/m^3]
|
||||||
@@ -331,7 +331,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -364,8 +364,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
Opm::CompositionalFluidState<Scalar, FluidSystem> fs;
|
Opm::CompositionalFluidState<Scalar, FluidSystem> fs;
|
||||||
|
|
||||||
@@ -383,8 +383,8 @@ public:
|
|||||||
* everywhere.
|
* everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -407,7 +407,7 @@ private:
|
|||||||
|
|
||||||
template <class FluidState, class Context>
|
template <class FluidState, class Context>
|
||||||
void initialFluidState_(FluidState &fs, const Context &context,
|
void initialFluidState_(FluidState &fs, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition pos = context.pos(spaceIdx, timeIdx);
|
||||||
Scalar y = pos[1];
|
Scalar y = pos[1];
|
||||||
@@ -445,7 +445,7 @@ private:
|
|||||||
if (onLeftBoundary_(pos))
|
if (onLeftBoundary_(pos))
|
||||||
pg += 10e3;
|
pg += 10e3;
|
||||||
MaterialLaw::capillaryPressures(pcAll, matParams, fs);
|
MaterialLaw::capillaryPressures(pcAll, matParams, fs);
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
||||||
fs.setPressure(phaseIdx, pg + (pcAll[phaseIdx] - pcAll[gasPhaseIdx]));
|
fs.setPressure(phaseIdx, pg + (pcAll[phaseIdx] - pcAll[gasPhaseIdx]));
|
||||||
|
|
||||||
// set composition of gas phase
|
// set composition of gas phase
|
||||||
|
|||||||
@@ -30,6 +30,8 @@
|
|||||||
#include <ewoms/common/parametersystem.hh>
|
#include <ewoms/common/parametersystem.hh>
|
||||||
|
|
||||||
#include <dune/grid/yaspgrid.hh>
|
#include <dune/grid/yaspgrid.hh>
|
||||||
|
#include <dune/grid/io/file/dgfparser/dgfyasp.hh>
|
||||||
|
|
||||||
#include <dune/common/fvector.hh>
|
#include <dune/common/fvector.hh>
|
||||||
#include <dune/common/version.hh>
|
#include <dune/common/version.hh>
|
||||||
|
|
||||||
@@ -62,6 +64,7 @@ NEW_PROP_TAG(GridGlobalRefinements);
|
|||||||
|
|
||||||
// set the Grid and GridManager properties
|
// set the Grid and GridManager properties
|
||||||
SET_TYPE_PROP(LensGridManager, Grid, Dune::YaspGrid<2>);
|
SET_TYPE_PROP(LensGridManager, Grid, Dune::YaspGrid<2>);
|
||||||
|
|
||||||
SET_TYPE_PROP(LensGridManager, GridManager, Ewoms::LensGridManager<TypeTag>);
|
SET_TYPE_PROP(LensGridManager, GridManager, Ewoms::LensGridManager<TypeTag>);
|
||||||
} // namespace Properties
|
} // namespace Properties
|
||||||
|
|
||||||
@@ -115,16 +118,11 @@ public:
|
|||||||
LensGridManager(Simulator &simulator)
|
LensGridManager(Simulator &simulator)
|
||||||
: ParentType(simulator)
|
: ParentType(simulator)
|
||||||
{
|
{
|
||||||
#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 3)
|
|
||||||
std::bitset<dim> isPeriodic(false);
|
|
||||||
std::array<int, dim> cellRes;
|
|
||||||
#else
|
|
||||||
Dune::FieldVector<bool, dim> isPeriodic(false);
|
|
||||||
Dune::FieldVector<int, dim> cellRes;
|
Dune::FieldVector<int, dim> cellRes;
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef double GridScalar;
|
typedef double GridScalar;
|
||||||
Dune::FieldVector<GridScalar, dim> upperRight;
|
Dune::FieldVector<GridScalar, dim> upperRight;
|
||||||
|
Dune::FieldVector<GridScalar, dim> lowerLeft( 0 );
|
||||||
|
|
||||||
upperRight[0] = EWOMS_GET_PARAM(TypeTag, Scalar, DomainSizeX);
|
upperRight[0] = EWOMS_GET_PARAM(TypeTag, Scalar, DomainSizeX);
|
||||||
upperRight[1] = EWOMS_GET_PARAM(TypeTag, Scalar, DomainSizeY);
|
upperRight[1] = EWOMS_GET_PARAM(TypeTag, Scalar, DomainSizeY);
|
||||||
@@ -136,18 +134,21 @@ public:
|
|||||||
cellRes[2] = EWOMS_GET_PARAM(TypeTag, int, CellsZ);
|
cellRes[2] = EWOMS_GET_PARAM(TypeTag, int, CellsZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::stringstream dgffile;
|
||||||
|
dgffile << "DGF" << std::endl;
|
||||||
|
dgffile << "INTERVAL" << std::endl;
|
||||||
|
dgffile << lowerLeft << std::endl;
|
||||||
|
dgffile << upperRight << std::endl;
|
||||||
|
dgffile << cellRes << std::endl;
|
||||||
|
dgffile << "#" << std::endl;
|
||||||
|
dgffile << "GridParameter" << std::endl;
|
||||||
|
dgffile << "overlap 1" << std::endl;
|
||||||
|
dgffile << "#" << std::endl;
|
||||||
|
|
||||||
|
// use DGF parser to create a grid from interval block
|
||||||
|
gridPtr_.reset( Dune::GridPtr< Grid >( dgffile ).release() );
|
||||||
|
|
||||||
unsigned numRefinements = EWOMS_GET_PARAM(TypeTag, unsigned, GridGlobalRefinements);
|
unsigned numRefinements = EWOMS_GET_PARAM(TypeTag, unsigned, GridGlobalRefinements);
|
||||||
#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
|
|
||||||
gridPtr_.reset(new Dune::YaspGrid<dim>(upperRight, cellRes));
|
|
||||||
#else
|
|
||||||
gridPtr_.reset(new Dune::YaspGrid<dim>(
|
|
||||||
#ifdef HAVE_MPI
|
|
||||||
/*mpiCommunicator=*/Dune::MPIHelper::getCommunicator(),
|
|
||||||
#endif
|
|
||||||
/*upperRightCorner=*/upperRight,
|
|
||||||
/*numCells=*/cellRes, isPeriodic,
|
|
||||||
/*overlap=*/1));
|
|
||||||
#endif
|
|
||||||
gridPtr_->globalRefine(numRefinements);
|
gridPtr_->globalRefine(numRefinements);
|
||||||
|
|
||||||
this->finalizeInit_();
|
this->finalizeInit_();
|
||||||
|
|||||||
@@ -39,6 +39,12 @@
|
|||||||
#include <opm/material/components/SimpleH2O.hpp>
|
#include <opm/material/components/SimpleH2O.hpp>
|
||||||
#include <opm/material/components/Dnapl.hpp>
|
#include <opm/material/components/Dnapl.hpp>
|
||||||
|
|
||||||
|
//#define LENS_USE_ALUGRID 1
|
||||||
|
#if LENS_USE_ALUGRID
|
||||||
|
#include <dune/alugrid/grid.hh>
|
||||||
|
#include <dune/alugrid/dgf.hh>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <dune/common/version.hh>
|
#include <dune/common/version.hh>
|
||||||
#include <dune/common/fvector.hh>
|
#include <dune/common/fvector.hh>
|
||||||
#include <dune/common/fmatrix.hh>
|
#include <dune/common/fmatrix.hh>
|
||||||
@@ -52,7 +58,11 @@ template <class TypeTag>
|
|||||||
class LensProblem;
|
class LensProblem;
|
||||||
|
|
||||||
namespace Properties {
|
namespace Properties {
|
||||||
|
#if LENS_USE_ALUGRID
|
||||||
|
NEW_TYPE_TAG(LensBaseProblem);
|
||||||
|
#else
|
||||||
NEW_TYPE_TAG(LensBaseProblem, INHERITS_FROM(LensGridManager));
|
NEW_TYPE_TAG(LensBaseProblem, INHERITS_FROM(LensGridManager));
|
||||||
|
#endif
|
||||||
|
|
||||||
// declare the properties specific for the lens problem
|
// declare the properties specific for the lens problem
|
||||||
NEW_PROP_TAG(LensLowerLeftX);
|
NEW_PROP_TAG(LensLowerLeftX);
|
||||||
@@ -85,6 +95,10 @@ public:
|
|||||||
typedef Opm::LiquidPhase<Scalar, Opm::DNAPL<Scalar> > type;
|
typedef Opm::LiquidPhase<Scalar, Opm::DNAPL<Scalar> > type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if LENS_USE_ALUGRID
|
||||||
|
SET_TYPE_PROP(LensBaseProblem, Grid, Dune::ALUGrid< 2, 2, Dune::cube, Dune::nonconforming > );
|
||||||
|
#endif
|
||||||
|
|
||||||
// Set the material Law
|
// Set the material Law
|
||||||
SET_PROP(LensBaseProblem, MaterialLaw)
|
SET_PROP(LensBaseProblem, MaterialLaw)
|
||||||
{
|
{
|
||||||
@@ -295,8 +309,8 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -309,7 +323,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 0.4; }
|
{ return 0.4; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -317,7 +331,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -330,7 +344,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::temperature
|
* \copydoc FvBaseMultiPhaseProblem::temperature
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return temperature_; }
|
{ return temperature_; }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -394,7 +408,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values,
|
void boundary(BoundaryRateVector &values,
|
||||||
const Context &context, int spaceIdx, int timeIdx) const
|
const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -465,7 +479,7 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx, int timeIdx) const
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
Scalar depth = this->boundingBoxMax()[1] - pos[1];
|
Scalar depth = this->boundingBoxMax()[1] - pos[1];
|
||||||
@@ -506,8 +520,8 @@ public:
|
|||||||
* everywhere.
|
* everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -515,7 +529,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
bool isInLens_(const GlobalPosition &pos) const
|
bool isInLens_(const GlobalPosition &pos) const
|
||||||
{
|
{
|
||||||
for (int i = 0; i < dim; ++i) {
|
for (unsigned i = 0; i < dim; ++i) {
|
||||||
if (pos[i] < lensLowerLeft_[i] - eps_ || pos[i] > lensUpperRight_[i]
|
if (pos[i] < lensLowerLeft_[i] - eps_ || pos[i] > lensUpperRight_[i]
|
||||||
+ eps_)
|
+ eps_)
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ public:
|
|||||||
* This problem assumes a constant temperature of 10 degrees Celsius.
|
* This problem assumes a constant temperature of 10 degrees Celsius.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 273.15 + 10; }
|
{ return 273.15 + 10; }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -194,7 +194,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
/* const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
/* const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -220,8 +220,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ initial_(values); }
|
{ initial_(values); }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -231,17 +231,17 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void constraints(Constraints &constraints, const Context &context,
|
void constraints(Constraints &constraints, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
if (onUpperBoundary_(pos)) {
|
if (onUpperBoundary_(pos)) {
|
||||||
|
constraints.setActive(true);
|
||||||
// lid moves from left to right
|
// lid moves from left to right
|
||||||
const Scalar lidVelocity = 1.0;
|
const Scalar lidVelocity = 1.0;
|
||||||
constraints.setConstraint(momentum0EqIdx, velocity0Idx + 0,
|
constraints[velocity0Idx + 0] = lidVelocity;
|
||||||
lidVelocity);
|
constraints[velocity0Idx + 1] = 0.0;
|
||||||
constraints.setConstraint(momentum0EqIdx + 1, velocity0Idx + 1, 0);
|
constraints[pressureIdx + 1] = 1e5;
|
||||||
constraints.setConstraint(conti0EqIdx, pressureIdx, 1e5);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,8 +249,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::source
|
* \copydoc FvBaseProblem::source
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ public:
|
|||||||
this->model().checkConservativeness();
|
this->model().checkConservativeness();
|
||||||
|
|
||||||
// Calculate storage terms of the individual phases
|
// Calculate storage terms of the individual phases
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
PrimaryVariables phaseStorage;
|
PrimaryVariables phaseStorage;
|
||||||
this->model().globalPhaseStorage(phaseStorage, phaseIdx);
|
this->model().globalPhaseStorage(phaseStorage, phaseIdx);
|
||||||
|
|
||||||
@@ -296,15 +296,15 @@ public:
|
|||||||
* This problem simply assumes a constant temperature.
|
* This problem simply assumes a constant temperature.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return temperature_; }
|
{ return temperature_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
if (isFineMaterial_(context.pos(spaceIdx, timeIdx)))
|
if (isFineMaterial_(context.pos(spaceIdx, timeIdx)))
|
||||||
return fineK_;
|
return fineK_;
|
||||||
@@ -315,7 +315,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -329,7 +329,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -345,8 +345,8 @@ public:
|
|||||||
* medium is granite.
|
* medium is granite.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar heatCapacitySolid(const Context &context, int spaceIdx,
|
Scalar heatCapacitySolid(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
return 790 // specific heat capacity of granite [J / (kg K)]
|
return 790 // specific heat capacity of granite [J / (kg K)]
|
||||||
* 2700; // density of granite [kg/m^3]
|
* 2700; // density of granite [kg/m^3]
|
||||||
@@ -357,7 +357,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const HeatConductionLawParams &
|
const HeatConductionLawParams &
|
||||||
heatConductionParams(const Context &context, int spaceIdx, int timeIdx) const
|
heatConductionParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -377,7 +377,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -400,8 +400,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &matParams = materialLawParams(context, spaceIdx, timeIdx);
|
const auto &matParams = materialLawParams(context, spaceIdx, timeIdx);
|
||||||
values.assignMassConservative(outletFluidState_, matParams);
|
values.assignMassConservative(outletFluidState_, matParams);
|
||||||
@@ -414,8 +414,8 @@ public:
|
|||||||
* everywhere.
|
* everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = 0.0; }
|
{ rate = 0.0; }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -454,8 +454,8 @@ private:
|
|||||||
void initFluidState_(FluidState &fs, const MaterialLawParams &matParams,
|
void initFluidState_(FluidState &fs, const MaterialLawParams &matParams,
|
||||||
bool isInlet)
|
bool isInlet)
|
||||||
{
|
{
|
||||||
int refPhaseIdx;
|
unsigned refPhaseIdx;
|
||||||
int otherPhaseIdx;
|
unsigned otherPhaseIdx;
|
||||||
|
|
||||||
// set the fluid temperatures
|
// set the fluid temperatures
|
||||||
fs.setTemperature(temperature_);
|
fs.setTemperature(temperature_);
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ public:
|
|||||||
* This problem assumes a temperature.
|
* This problem assumes a temperature.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return temperature_; } // in [K]
|
{ return temperature_; } // in [K]
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -201,8 +201,8 @@ public:
|
|||||||
* This problem uses a constant intrinsic permeability.
|
* This problem uses a constant intrinsic permeability.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return perm_; }
|
{ return perm_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -211,7 +211,7 @@ public:
|
|||||||
* This problem uses a constant porosity.
|
* This problem uses a constant porosity.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return porosity_; }
|
{ return porosity_; }
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@@ -220,7 +220,7 @@ public:
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar tortuosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar tortuosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return tortuosity_; }
|
{ return tortuosity_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -229,7 +229,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar dispersivity(const Context &context,
|
Scalar dispersivity(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 0; }
|
{ return 0; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -245,7 +245,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -286,8 +286,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
Opm::CompositionalFluidState<Scalar, FluidSystem, /*storeEnthalpy=*/false> fs;
|
Opm::CompositionalFluidState<Scalar, FluidSystem, /*storeEnthalpy=*/false> fs;
|
||||||
initialFluidState_(fs, context, spaceIdx, timeIdx);
|
initialFluidState_(fs, context, spaceIdx, timeIdx);
|
||||||
@@ -302,8 +302,8 @@ public:
|
|||||||
* everywhere.
|
* everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -317,7 +317,7 @@ private:
|
|||||||
|
|
||||||
template <class FluidState, class Context>
|
template <class FluidState, class Context>
|
||||||
void initialFluidState_(FluidState &fs, const Context &context,
|
void initialFluidState_(FluidState &fs, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
Scalar T = temperature(context, spaceIdx, timeIdx);
|
Scalar T = temperature(context, spaceIdx, timeIdx);
|
||||||
// Scalar rho = FluidSystem::H2O::liquidDensity(T, /*pressure=*/1.5e5);
|
// Scalar rho = FluidSystem::H2O::liquidDensity(T, /*pressure=*/1.5e5);
|
||||||
|
|||||||
@@ -268,23 +268,23 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
* \copydoc FvBaseMultiPhaseProblem::intrinsicPermeability
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return K_; }
|
{ return K_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc ForchheimerBaseProblem::ergunCoefficient
|
* \copydoc ForchheimerBaseProblem::ergunCoefficient
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar ergunCoefficient(const Context &context, int spaceIdx,
|
Scalar ergunCoefficient(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return 0.3866; }
|
{ return 0.3866; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 0.558; }
|
{ return 0.558; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -292,14 +292,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return materialParams_; }
|
{ return materialParams_; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseMultiPhaseProblem::temperature
|
* \copydoc FvBaseMultiPhaseProblem::temperature
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return temperature_; }
|
{ return temperature_; }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -317,7 +317,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -347,8 +347,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
// assign the primary variables
|
// assign the primary variables
|
||||||
values.assignNaive(initialFluidState_);
|
values.assignNaive(initialFluidState_);
|
||||||
@@ -361,8 +361,8 @@ public:
|
|||||||
* everywhere.
|
* everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
|
|||||||
@@ -32,6 +32,8 @@
|
|||||||
#include <opm/material/fluidmatrixinteractions/LinearMaterial.hpp>
|
#include <opm/material/fluidmatrixinteractions/LinearMaterial.hpp>
|
||||||
#include <opm/material/fluidmatrixinteractions/MaterialTraits.hpp>
|
#include <opm/material/fluidmatrixinteractions/MaterialTraits.hpp>
|
||||||
#include <opm/material/fluidstates/CompositionalFluidState.hpp>
|
#include <opm/material/fluidstates/CompositionalFluidState.hpp>
|
||||||
|
#include <opm/material/fluidsystems/BlackOilFluidSystem.hpp>
|
||||||
|
#include <opm/material/constraintsolvers/ComputeFromReferencePhase.hpp>
|
||||||
|
|
||||||
#include <opm/material/fluidsystems/blackoilpvt/DryGasPvt.hpp>
|
#include <opm/material/fluidsystems/blackoilpvt/DryGasPvt.hpp>
|
||||||
#include <opm/material/fluidsystems/blackoilpvt/LiveOilPvt.hpp>
|
#include <opm/material/fluidsystems/blackoilpvt/LiveOilPvt.hpp>
|
||||||
@@ -50,9 +52,7 @@
|
|||||||
namespace Ewoms {
|
namespace Ewoms {
|
||||||
template <class TypeTag>
|
template <class TypeTag>
|
||||||
class ReservoirProblem;
|
class ReservoirProblem;
|
||||||
}
|
|
||||||
|
|
||||||
namespace Ewoms {
|
|
||||||
namespace Properties {
|
namespace Properties {
|
||||||
|
|
||||||
NEW_TYPE_TAG(ReservoirBaseProblem);
|
NEW_TYPE_TAG(ReservoirBaseProblem);
|
||||||
@@ -61,8 +61,8 @@ NEW_TYPE_TAG(ReservoirBaseProblem);
|
|||||||
NEW_PROP_TAG(MaxDepth);
|
NEW_PROP_TAG(MaxDepth);
|
||||||
// The temperature inside the reservoir
|
// The temperature inside the reservoir
|
||||||
NEW_PROP_TAG(Temperature);
|
NEW_PROP_TAG(Temperature);
|
||||||
// The name of the simulation (used for writing VTK files)
|
// The width of producer/injector wells as a fraction of the width of the spatial domain
|
||||||
NEW_PROP_TAG(SimulationName);
|
NEW_PROP_TAG(WellWidth);
|
||||||
|
|
||||||
// Set the grid type
|
// Set the grid type
|
||||||
SET_TYPE_PROP(ReservoirBaseProblem, Grid, Dune::YaspGrid<2>);
|
SET_TYPE_PROP(ReservoirBaseProblem, Grid, Dune::YaspGrid<2>);
|
||||||
@@ -93,25 +93,47 @@ SET_BOOL_PROP(ReservoirBaseProblem, NewtonWriteConvergence, false);
|
|||||||
// Enable gravity
|
// Enable gravity
|
||||||
SET_BOOL_PROP(ReservoirBaseProblem, EnableGravity, true);
|
SET_BOOL_PROP(ReservoirBaseProblem, EnableGravity, true);
|
||||||
|
|
||||||
// Reuse the last linearization if possible?
|
|
||||||
SET_BOOL_PROP(ReservoirBaseProblem, EnableLinearizationRecycling, true);
|
|
||||||
|
|
||||||
// Enable constraint DOFs?
|
// Enable constraint DOFs?
|
||||||
SET_BOOL_PROP(ReservoirBaseProblem, EnableConstraints, true);
|
SET_BOOL_PROP(ReservoirBaseProblem, EnableConstraints, true);
|
||||||
|
|
||||||
// set the defaults for some problem specific properties
|
// set the defaults for some problem specific properties
|
||||||
SET_SCALAR_PROP(ReservoirBaseProblem, MaxDepth, 2500);
|
SET_SCALAR_PROP(ReservoirBaseProblem, MaxDepth, 2500);
|
||||||
SET_SCALAR_PROP(ReservoirBaseProblem, Temperature, 293.15);
|
SET_SCALAR_PROP(ReservoirBaseProblem, Temperature, 293.15);
|
||||||
SET_STRING_PROP(ReservoirBaseProblem, SimulationName, "reservoir");
|
|
||||||
|
|
||||||
// The default for the end time of the simulation [s]
|
//! The default for the end time of the simulation [s].
|
||||||
SET_SCALAR_PROP(ReservoirBaseProblem, EndTime, 100);
|
//!
|
||||||
|
//! By default this problem spans 1000 days (100 "settle down" days and 900 days of
|
||||||
|
//! production)
|
||||||
|
SET_SCALAR_PROP(ReservoirBaseProblem, EndTime, 1000.0*24*60*60);
|
||||||
|
|
||||||
// The default for the initial time step size of the simulation [s]
|
// The default for the initial time step size of the simulation [s]
|
||||||
SET_SCALAR_PROP(ReservoirBaseProblem, InitialTimeStepSize, 10);
|
SET_SCALAR_PROP(ReservoirBaseProblem, InitialTimeStepSize, 100e3);
|
||||||
|
|
||||||
|
// The width of producer/injector wells as a fraction of the width of the spatial domain
|
||||||
|
SET_SCALAR_PROP(ReservoirBaseProblem, WellWidth, 0.01);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Explicitly set the fluid system to the black-oil fluid system
|
||||||
|
*
|
||||||
|
* If the black oil model is used, this is superfluous because that model already sets
|
||||||
|
* the FluidSystem property. Setting it explictly for the problem is a good idea anyway,
|
||||||
|
* though because other models are more generic and thus do not assume a particular fluid
|
||||||
|
* system.
|
||||||
|
*/
|
||||||
|
SET_PROP(ReservoirBaseProblem, FluidSystem)
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
|
||||||
|
|
||||||
|
public:
|
||||||
|
typedef Opm::FluidSystems::BlackOil<Scalar> type;
|
||||||
|
};
|
||||||
|
|
||||||
// The default DGF file to load
|
// The default DGF file to load
|
||||||
SET_STRING_PROP(ReservoirBaseProblem, GridFile, "data/reservoir.dgf");
|
SET_STRING_PROP(ReservoirBaseProblem, GridFile, "data/reservoir.dgf");
|
||||||
|
|
||||||
|
// increase the tolerance for this problem to get larger time steps
|
||||||
|
SET_SCALAR_PROP(ReservoirBaseProblem, NewtonRawTolerance, 1e-4);
|
||||||
} // namespace Properties
|
} // namespace Properties
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -120,18 +142,15 @@ SET_STRING_PROP(ReservoirBaseProblem, GridFile, "data/reservoir.dgf");
|
|||||||
* \brief Some simple test problem for the black-oil VCVF discretization
|
* \brief Some simple test problem for the black-oil VCVF discretization
|
||||||
* inspired by an oil reservoir.
|
* inspired by an oil reservoir.
|
||||||
*
|
*
|
||||||
* The domain is two-dimensional and exhibits a size of 6000m times
|
* The domain is two-dimensional and exhibits a size of 6000m times 60m. Initially, the
|
||||||
* 60m. Initially, the reservoir is assumed by oil with a bubble point
|
* reservoir is assumed by oil with a bubble point pressure of 20 MPa, which also the
|
||||||
* pressure of 20 MPa, which also the initial pressure in the
|
* initial pressure in the domain. No-flow boundaries are used for all boundaries. The
|
||||||
* domain. No-flow boundaries are used for all boundaries. The
|
* permeability of the lower 10 m is reduced compared to the upper 10 m of the domain
|
||||||
* permeability of the lower 10 m is reduced compared to the upper 10
|
* witch capillary pressure always being neglected. Three wells are approximated using
|
||||||
* m of the domain witch capillary pressure always being
|
* constraints: Two water-injector wells, one at the lower-left boundary one at the
|
||||||
* neglected. Three wells are approximated using constraints: Two
|
* lower-right boundary and one producer well in the upper part of the center of the
|
||||||
* water-injector wells, one at the lower-left boundary one at the
|
* domain. The pressure for the producer is assumed to be 2/3 of the reservoir pressure,
|
||||||
* lower-right boundary and one producer well in the upper part of the
|
* the injector wells use a pressure which is 50% above the reservoir pressure.
|
||||||
* center of the domain. The pressure for the producer is assumed to
|
|
||||||
* be 2/3 of the reservoir pressure, the injector wells use a pressure
|
|
||||||
* which is 50% above the reservoir pressure.
|
|
||||||
*/
|
*/
|
||||||
template <class TypeTag>
|
template <class TypeTag>
|
||||||
class ReservoirProblem : public GET_PROP_TYPE(TypeTag, BaseProblem)
|
class ReservoirProblem : public GET_PROP_TYPE(TypeTag, BaseProblem)
|
||||||
@@ -140,6 +159,7 @@ class ReservoirProblem : public GET_PROP_TYPE(TypeTag, BaseProblem)
|
|||||||
|
|
||||||
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, Evaluation) Evaluation;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
|
typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
|
||||||
|
|
||||||
// Grid and world dimension
|
// Grid and world dimension
|
||||||
@@ -156,13 +176,13 @@ class ReservoirProblem : public GET_PROP_TYPE(TypeTag, BaseProblem)
|
|||||||
enum { oilCompIdx = FluidSystem::oilCompIdx };
|
enum { oilCompIdx = FluidSystem::oilCompIdx };
|
||||||
enum { waterCompIdx = FluidSystem::waterCompIdx };
|
enum { waterCompIdx = FluidSystem::waterCompIdx };
|
||||||
|
|
||||||
|
typedef typename GET_PROP_TYPE(TypeTag, Model) Model;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables;
|
typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, EqVector) EqVector;
|
typedef typename GET_PROP_TYPE(TypeTag, EqVector) EqVector;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, RateVector) RateVector;
|
typedef typename GET_PROP_TYPE(TypeTag, RateVector) RateVector;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, BoundaryRateVector) BoundaryRateVector;
|
typedef typename GET_PROP_TYPE(TypeTag, BoundaryRateVector) BoundaryRateVector;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, Constraints) Constraints;
|
typedef typename GET_PROP_TYPE(TypeTag, Constraints) Constraints;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
|
typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, BlackOilFluidState) BlackOilFluidState;
|
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, Simulator) Simulator;
|
typedef typename GET_PROP_TYPE(TypeTag, Simulator) Simulator;
|
||||||
typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
|
typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
|
||||||
|
|
||||||
@@ -171,6 +191,10 @@ class ReservoirProblem : public GET_PROP_TYPE(TypeTag, BaseProblem)
|
|||||||
typedef Dune::FieldMatrix<Scalar, dimWorld, dimWorld> DimMatrix;
|
typedef Dune::FieldMatrix<Scalar, dimWorld, dimWorld> DimMatrix;
|
||||||
typedef Dune::FieldVector<Scalar, numPhases> PhaseVector;
|
typedef Dune::FieldVector<Scalar, numPhases> PhaseVector;
|
||||||
|
|
||||||
|
typedef Opm::CompositionalFluidState<Scalar,
|
||||||
|
FluidSystem,
|
||||||
|
/*enableEnthalpy=*/true> InitialFluidState;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/*!
|
/*!
|
||||||
* \copydoc Doxygen::defaultProblemConstructor
|
* \copydoc Doxygen::defaultProblemConstructor
|
||||||
@@ -186,12 +210,10 @@ public:
|
|||||||
{
|
{
|
||||||
ParentType::finishInit();
|
ParentType::finishInit();
|
||||||
|
|
||||||
eps_ = 1e-6;
|
|
||||||
|
|
||||||
temperature_ = EWOMS_GET_PARAM(TypeTag, Scalar, Temperature);
|
temperature_ = EWOMS_GET_PARAM(TypeTag, Scalar, Temperature);
|
||||||
maxDepth_ = EWOMS_GET_PARAM(TypeTag, Scalar, MaxDepth);
|
maxDepth_ = EWOMS_GET_PARAM(TypeTag, Scalar, MaxDepth);
|
||||||
|
wellWidth_ = EWOMS_GET_PARAM(TypeTag, Scalar, WellWidth);
|
||||||
|
|
||||||
FluidSystem::initBegin(/*numPvtRegions=*/1);
|
|
||||||
std::vector<std::pair<Scalar, Scalar> > Bo = {
|
std::vector<std::pair<Scalar, Scalar> > Bo = {
|
||||||
{ 101353, 1.062 },
|
{ 101353, 1.062 },
|
||||||
{ 1.82504e+06, 1.15 },
|
{ 1.82504e+06, 1.15 },
|
||||||
@@ -250,35 +272,50 @@ public:
|
|||||||
{ 6.21542e+07, 4.7e-05 }
|
{ 6.21542e+07, 4.7e-05 }
|
||||||
};
|
};
|
||||||
|
|
||||||
FluidSystem::setReferenceDensities(/*oil=*/786,
|
Scalar rhoRefO = 786.0; // [kg]
|
||||||
/*water=*/1037,
|
Scalar rhoRefG = 0.97; // [kg]
|
||||||
/*gas=*/0.97,
|
Scalar rhoRefW = 1037.0; // [kg]
|
||||||
/*pvtRegionIdx=*/0);
|
FluidSystem::initBegin(/*numPvtRegions=*/1);
|
||||||
|
FluidSystem::setEnableDissolvedGas(true);
|
||||||
|
FluidSystem::setEnableVaporizedOil(false);
|
||||||
|
FluidSystem::setReferenceDensities(rhoRefO, rhoRefW, rhoRefG, /*regionIdx=*/0);
|
||||||
|
|
||||||
|
Opm::GasPvtMultiplexer<Scalar> *gasPvt = new Opm::GasPvtMultiplexer<Scalar>;
|
||||||
|
gasPvt->setApproach(Opm::GasPvtMultiplexer<Scalar>::DryGasPvt);
|
||||||
|
auto& dryGasPvt = gasPvt->template getRealPvt<Opm::GasPvtMultiplexer<Scalar>::DryGasPvt>();
|
||||||
|
dryGasPvt.setNumRegions(/*numPvtRegion=*/1);
|
||||||
|
dryGasPvt.setReferenceDensities(/*regionIdx=*/0, rhoRefO, rhoRefG, rhoRefW);
|
||||||
|
dryGasPvt.setGasFormationVolumeFactor(/*regionIdx=*/0, Bg);
|
||||||
|
dryGasPvt.setGasViscosity(/*regionIdx=*/0, mug);
|
||||||
|
|
||||||
|
Opm::OilPvtMultiplexer<Scalar> *oilPvt = new Opm::OilPvtMultiplexer<Scalar>;
|
||||||
|
oilPvt->setApproach(Opm::OilPvtMultiplexer<Scalar>::LiveOilPvt);
|
||||||
|
auto& liveOilPvt = oilPvt->template getRealPvt<Opm::OilPvtMultiplexer<Scalar>::LiveOilPvt>();
|
||||||
|
liveOilPvt.setNumRegions(/*numPvtRegion=*/1);
|
||||||
|
liveOilPvt.setReferenceDensities(/*regionIdx=*/0, rhoRefO, rhoRefG, rhoRefW);
|
||||||
|
liveOilPvt.setSaturatedOilGasDissolutionFactor(/*regionIdx=*/0, Rs);
|
||||||
|
liveOilPvt.setSaturatedOilFormationVolumeFactor(/*regionIdx=*/0, Bo);
|
||||||
|
liveOilPvt.setSaturatedOilViscosity(/*regionIdx=*/0, muo);
|
||||||
|
|
||||||
|
Opm::WaterPvtMultiplexer<Scalar> *waterPvt = new Opm::WaterPvtMultiplexer<Scalar>;
|
||||||
|
waterPvt->setApproach(Opm::WaterPvtMultiplexer<Scalar>::ConstantCompressibilityWaterPvt);
|
||||||
|
auto& ccWaterPvt = waterPvt->template getRealPvt<Opm::WaterPvtMultiplexer<Scalar>::ConstantCompressibilityWaterPvt>();
|
||||||
|
ccWaterPvt.setNumRegions(/*numPvtRegions=*/1);
|
||||||
|
ccWaterPvt.setReferenceDensities(/*regionIdx=*/0, rhoRefO, rhoRefG, rhoRefW);
|
||||||
|
ccWaterPvt.setViscosity(/*regionIdx=*/0, 9.6e-4);
|
||||||
|
ccWaterPvt.setCompressibility(/*regionIdx=*/0, 1.450377e-10);
|
||||||
|
|
||||||
Opm::DryGasPvt<Scalar> *gasPvt = new Opm::DryGasPvt<Scalar>;
|
|
||||||
gasPvt->setNumRegions(/*numPvtRegion=*/1);
|
|
||||||
gasPvt->setGasFormationVolumeFactor(/*regionIdx=*/0, Bg);
|
|
||||||
gasPvt->setGasViscosity(/*regionIdx=*/0, mug);
|
|
||||||
gasPvt->initEnd();
|
gasPvt->initEnd();
|
||||||
typedef std::shared_ptr<const Opm::GasPvtInterface<Scalar> > GasPvtSharedPtr;
|
oilPvt->initEnd();
|
||||||
|
waterPvt->initEnd();
|
||||||
|
|
||||||
|
typedef std::shared_ptr<Opm::GasPvtMultiplexer<Scalar> > GasPvtSharedPtr;
|
||||||
FluidSystem::setGasPvt(GasPvtSharedPtr(gasPvt));
|
FluidSystem::setGasPvt(GasPvtSharedPtr(gasPvt));
|
||||||
|
|
||||||
Opm::LiveOilPvt<Scalar> *oilPvt = new Opm::LiveOilPvt<Scalar>;
|
typedef std::shared_ptr<Opm::OilPvtMultiplexer<Scalar> > OilPvtSharedPtr;
|
||||||
oilPvt->setNumRegions(/*numPvtRegion=*/1);
|
|
||||||
oilPvt->setSaturatedOilGasDissolutionFactor(/*regionIdx=*/0, Rs);
|
|
||||||
oilPvt->setSaturatedOilFormationVolumeFactor(/*regionIdx=*/0, Bo);
|
|
||||||
oilPvt->setSaturatedOilViscosity(/*regionIdx=*/0, muo);
|
|
||||||
oilPvt->initEnd();
|
|
||||||
typedef std::shared_ptr<const Opm::OilPvtInterface<Scalar> > OilPvtSharedPtr;
|
|
||||||
FluidSystem::setOilPvt(OilPvtSharedPtr(oilPvt));
|
FluidSystem::setOilPvt(OilPvtSharedPtr(oilPvt));
|
||||||
|
|
||||||
Opm::ConstantCompressibilityWaterPvt<Scalar> *waterPvt =
|
typedef std::shared_ptr<Opm::WaterPvtMultiplexer<Scalar> > WaterPvtSharedPtr;
|
||||||
new Opm::ConstantCompressibilityWaterPvt<Scalar>;
|
|
||||||
waterPvt->setNumRegions(/*numPvtRegions=*/1);
|
|
||||||
waterPvt->setViscosity(/*regionIdx=*/0, 9.6e-4);
|
|
||||||
waterPvt->setCompressibility(/*regionIdx=*/0, 1.450377e-10);
|
|
||||||
waterPvt->initEnd();
|
|
||||||
typedef std::shared_ptr<const Opm::WaterPvtInterface<Scalar> > WaterPvtSharedPtr;
|
|
||||||
FluidSystem::setWaterPvt(WaterPvtSharedPtr(waterPvt));
|
FluidSystem::setWaterPvt(WaterPvtSharedPtr(waterPvt));
|
||||||
|
|
||||||
FluidSystem::initEnd();
|
FluidSystem::initEnd();
|
||||||
@@ -294,7 +331,7 @@ public:
|
|||||||
finePorosity_ = 0.2;
|
finePorosity_ = 0.2;
|
||||||
coarsePorosity_ = 0.3;
|
coarsePorosity_ = 0.3;
|
||||||
|
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
fineMaterialParams_.setPcMinSat(phaseIdx, 0.0);
|
fineMaterialParams_.setPcMinSat(phaseIdx, 0.0);
|
||||||
fineMaterialParams_.setPcMaxSat(phaseIdx, 0.0);
|
fineMaterialParams_.setPcMaxSat(phaseIdx, 0.0);
|
||||||
|
|
||||||
@@ -307,6 +344,9 @@ public:
|
|||||||
coarseMaterialParams_.finalize();
|
coarseMaterialParams_.finalize();
|
||||||
|
|
||||||
initFluidState_();
|
initFluidState_();
|
||||||
|
|
||||||
|
// start the first ("settle down") episode for 100 days
|
||||||
|
this->simulator().startNextEpisode(100.0*24*60*60);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -320,16 +360,28 @@ public:
|
|||||||
"The temperature [K] in the reservoir");
|
"The temperature [K] in the reservoir");
|
||||||
EWOMS_REGISTER_PARAM(TypeTag, Scalar, MaxDepth,
|
EWOMS_REGISTER_PARAM(TypeTag, Scalar, MaxDepth,
|
||||||
"The maximum depth [m] of the reservoir");
|
"The maximum depth [m] of the reservoir");
|
||||||
EWOMS_REGISTER_PARAM(TypeTag, std::string, SimulationName,
|
EWOMS_REGISTER_PARAM(TypeTag, Scalar, WellWidth,
|
||||||
"The name of the simulation used for the output "
|
"The width of producer/injector wells as a fraction of the width"
|
||||||
"files");
|
" of the spatial domain");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseProblem::name
|
* \copydoc FvBaseProblem::name
|
||||||
*/
|
*/
|
||||||
std::string name() const
|
std::string name() const
|
||||||
{ return EWOMS_GET_PARAM(TypeTag, std::string, SimulationName); }
|
{ return std::string("reservoir_") + Model::name() + "_" + Model::discretizationName(); }
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \copydoc FvBaseProblem::endEpisode
|
||||||
|
*/
|
||||||
|
void endEpisode()
|
||||||
|
{
|
||||||
|
// in the second episode, the actual work is done (the first is "settle down"
|
||||||
|
// episode). we need to use a pretty short initial time step here as the change
|
||||||
|
// in conditions is quite abrupt.
|
||||||
|
this->simulator().startNextEpisode(1e100);
|
||||||
|
this->simulator().setTimeStepSize(5.0);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseProblem::endTimeStep
|
* \copydoc FvBaseProblem::endTimeStep
|
||||||
@@ -359,8 +411,8 @@ public:
|
|||||||
* above one with low permeability.
|
* above one with low permeability.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx,
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -372,7 +424,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -385,7 +437,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -408,7 +460,7 @@ public:
|
|||||||
* will need it one day?
|
* will need it one day?
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return temperature_; }
|
{ return temperature_; }
|
||||||
|
|
||||||
// \}
|
// \}
|
||||||
@@ -426,7 +478,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
// no flow on top and bottom
|
// no flow on top and bottom
|
||||||
values.setNoFlow();
|
values.setNoFlow();
|
||||||
@@ -446,78 +498,39 @@ public:
|
|||||||
* the whole domain.
|
* the whole domain.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx, int timeIdx) const
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ values.assignNaive(initialFluidState_); }
|
{
|
||||||
|
values.assignNaive(initialFluidState_);
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
for (unsigned pvIdx = 0; pvIdx < values.size(); ++ pvIdx)
|
||||||
|
assert(std::isfinite(values[pvIdx]));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseProblem::constraints
|
* \copydoc FvBaseProblem::constraints
|
||||||
*
|
*
|
||||||
* The reservoir problem places two water-injection wells on the
|
* The reservoir problem places two water-injection wells on the lower-left and
|
||||||
* lower parts of the left and right edges of the domains and on
|
* lower-right of the domain and a production well in the middle. The injection wells
|
||||||
* production well in the middle. The injection wells are fully
|
* are fully water saturated with a higher pressure, the producer is fully oil
|
||||||
* water saturated with a higher pressure, the producer is fully
|
* saturated with a lower pressure than the remaining reservoir.
|
||||||
* oil saturated with a lower pressure than the remaining
|
|
||||||
* reservoir.
|
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void constraints(Constraints &constraints, const Context &context,
|
void constraints(Constraints &constraints, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
|
if (this->simulator().episodeIndex() == 1)
|
||||||
|
return; // no constraints during the "settle down" episode
|
||||||
|
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
Scalar x = pos[0] - this->boundingBoxMin()[0];
|
if (isInjector_(pos)) {
|
||||||
Scalar y = pos[dim - 1] - this->boundingBoxMin()[dim - 1];
|
constraints.setActive(true);
|
||||||
Scalar height = this->boundingBoxMax()[dim - 1] - this->boundingBoxMin()[dim - 1];
|
constraints.assignNaive(injectorFluidState_);
|
||||||
Scalar width = this->boundingBoxMax()[0] - this->boundingBoxMin()[0];
|
|
||||||
if ((onLeftBoundary_(pos) || onRightBoundary_(pos)) && y < height / 2) {
|
|
||||||
// injectors
|
|
||||||
auto fs = initialFluidState_;
|
|
||||||
|
|
||||||
Scalar pInj = pReservoir_ * 1.5;
|
|
||||||
fs.setPressure(waterPhaseIdx, pInj);
|
|
||||||
fs.setPressure(oilPhaseIdx, pInj);
|
|
||||||
fs.setPressure(gasPhaseIdx, pInj);
|
|
||||||
fs.setSaturation(waterPhaseIdx, 1.0);
|
|
||||||
fs.setSaturation(oilPhaseIdx, 0.0);
|
|
||||||
fs.setSaturation(gasPhaseIdx, 0.0);
|
|
||||||
|
|
||||||
// set the compositions to only water
|
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
|
||||||
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
|
|
||||||
fs.setMoleFraction(phaseIdx, compIdx, 0.0);
|
|
||||||
|
|
||||||
// set the composition of the oil phase to the initial
|
|
||||||
// composition
|
|
||||||
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
|
|
||||||
fs.setMoleFraction(oilPhaseIdx, compIdx,
|
|
||||||
initialFluidState_.moleFraction(oilPhaseIdx,
|
|
||||||
compIdx));
|
|
||||||
|
|
||||||
fs.setMoleFraction(waterPhaseIdx, waterCompIdx, 1.0);
|
|
||||||
|
|
||||||
constraints.setAllConstraint();
|
|
||||||
constraints.assignNaive(fs);
|
|
||||||
}
|
}
|
||||||
else if (width / 2 - 1 < x && x < width / 2 + 1 && y > height / 2) {
|
else if (isProducer_(pos)) {
|
||||||
// producer
|
constraints.setActive(true);
|
||||||
auto fs = initialFluidState_;
|
constraints.assignNaive(producerFluidState_);
|
||||||
|
|
||||||
Scalar pProd = pReservoir_ / 1.5;
|
|
||||||
fs.setPressure(waterPhaseIdx, pProd);
|
|
||||||
fs.setPressure(oilPhaseIdx, pProd);
|
|
||||||
fs.setPressure(gasPhaseIdx, pProd);
|
|
||||||
fs.setSaturation(waterPhaseIdx, 0.0);
|
|
||||||
fs.setSaturation(oilPhaseIdx, 1.0);
|
|
||||||
fs.setSaturation(gasPhaseIdx, 0.0);
|
|
||||||
|
|
||||||
// set the compositions to the initial composition
|
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
|
||||||
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
|
|
||||||
fs.setMoleFraction(phaseIdx, compIdx,
|
|
||||||
initialFluidState_.moleFraction(phaseIdx,
|
|
||||||
compIdx));
|
|
||||||
|
|
||||||
constraints.setAllConstraint();
|
|
||||||
constraints.assignNaive(fs);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -527,8 +540,8 @@ public:
|
|||||||
* For this problem, the source term of all components is 0 everywhere.
|
* For this problem, the source term of all components is 0 everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -564,8 +577,8 @@ private:
|
|||||||
fs.setPressure(gasPhaseIdx, pw + (pC[gasPhaseIdx] - pC[waterPhaseIdx]));
|
fs.setPressure(gasPhaseIdx, pw + (pC[gasPhaseIdx] - pC[waterPhaseIdx]));
|
||||||
|
|
||||||
// reset all mole fractions to 0
|
// reset all mole fractions to 0
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
||||||
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
|
for (unsigned compIdx = 0; compIdx < numComponents; ++compIdx)
|
||||||
fs.setMoleFraction(phaseIdx, compIdx, 0.0);
|
fs.setMoleFraction(phaseIdx, compIdx, 0.0);
|
||||||
|
|
||||||
//////
|
//////
|
||||||
@@ -577,25 +590,100 @@ private:
|
|||||||
//////
|
//////
|
||||||
// set composition of the oil phase
|
// set composition of the oil phase
|
||||||
//////
|
//////
|
||||||
|
Scalar RsSat =
|
||||||
Scalar xoG = 0.95*FluidSystem::saturatedOilGasMoleFraction(temperature_,
|
FluidSystem::saturatedDissolutionFactor(fs, oilPhaseIdx, /*pvtRegionIdx=*/0);
|
||||||
fs.pressure(oilPhaseIdx),
|
Scalar XoGSat = FluidSystem::convertRsToXoG(RsSat, /*pvtRegionIdx=*/0);
|
||||||
/*pvtRegionIdx=*/0);
|
Scalar xoGSat = FluidSystem::convertXoGToxoG(XoGSat, /*pvtRegionIdx=*/0);
|
||||||
Scalar xoO = 1 - xoG;
|
Scalar xoG = 0.95*xoGSat;
|
||||||
|
Scalar xoO = 1.0 - xoG;
|
||||||
|
|
||||||
// finally set the oil-phase composition
|
// finally set the oil-phase composition
|
||||||
fs.setMoleFraction(oilPhaseIdx, gasCompIdx, xoG);
|
fs.setMoleFraction(oilPhaseIdx, gasCompIdx, xoG);
|
||||||
fs.setMoleFraction(oilPhaseIdx, oilCompIdx, xoO);
|
fs.setMoleFraction(oilPhaseIdx, oilCompIdx, xoO);
|
||||||
|
|
||||||
|
typedef Opm::ComputeFromReferencePhase<Scalar, FluidSystem> CFRP;
|
||||||
|
typename FluidSystem::ParameterCache paramCache;
|
||||||
|
CFRP::solve(fs,
|
||||||
|
paramCache,
|
||||||
|
/*refPhaseIdx=*/oilPhaseIdx,
|
||||||
|
/*setViscosities=*/false,
|
||||||
|
/*setEnthalpies=*/false);
|
||||||
|
|
||||||
|
// set up the fluid state used for the injectors
|
||||||
|
auto& injFs = injectorFluidState_;
|
||||||
|
injFs = initialFluidState_;
|
||||||
|
|
||||||
|
Scalar pInj = pReservoir_ * 1.5;
|
||||||
|
injFs.setPressure(waterPhaseIdx, pInj);
|
||||||
|
injFs.setPressure(oilPhaseIdx, pInj);
|
||||||
|
injFs.setPressure(gasPhaseIdx, pInj);
|
||||||
|
injFs.setSaturation(waterPhaseIdx, 1.0);
|
||||||
|
injFs.setSaturation(oilPhaseIdx, 0.0);
|
||||||
|
injFs.setSaturation(gasPhaseIdx, 0.0);
|
||||||
|
|
||||||
|
// set the composition of the phases to immiscible
|
||||||
|
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
|
||||||
|
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
|
||||||
|
injFs.setMoleFraction(phaseIdx, compIdx, 0.0);
|
||||||
|
|
||||||
|
injFs.setMoleFraction(gasPhaseIdx, gasCompIdx, 1.0);
|
||||||
|
injFs.setMoleFraction(oilPhaseIdx, oilCompIdx, 1.0);
|
||||||
|
injFs.setMoleFraction(waterPhaseIdx, waterCompIdx, 1.0);
|
||||||
|
|
||||||
|
CFRP::solve(injFs,
|
||||||
|
paramCache,
|
||||||
|
/*refPhaseIdx=*/waterPhaseIdx,
|
||||||
|
/*setViscosities=*/false,
|
||||||
|
/*setEnthalpies=*/false);
|
||||||
|
|
||||||
|
// set up the fluid state used for the producer
|
||||||
|
auto& prodFs = producerFluidState_;
|
||||||
|
prodFs = initialFluidState_;
|
||||||
|
|
||||||
|
Scalar pProd = pReservoir_ / 1.5;
|
||||||
|
prodFs.setPressure(waterPhaseIdx, pProd);
|
||||||
|
prodFs.setPressure(oilPhaseIdx, pProd);
|
||||||
|
prodFs.setPressure(gasPhaseIdx, pProd);
|
||||||
|
prodFs.setSaturation(waterPhaseIdx, 0.0);
|
||||||
|
prodFs.setSaturation(oilPhaseIdx, 1.0);
|
||||||
|
prodFs.setSaturation(gasPhaseIdx, 0.0);
|
||||||
|
|
||||||
|
CFRP::solve(prodFs,
|
||||||
|
paramCache,
|
||||||
|
/*refPhaseIdx=*/oilPhaseIdx,
|
||||||
|
/*setViscosities=*/false,
|
||||||
|
/*setEnthalpies=*/false);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool onLeftBoundary_(const GlobalPosition &pos) const
|
bool isProducer_(const GlobalPosition &pos) const
|
||||||
{ return pos[0] < eps_; }
|
{
|
||||||
|
Scalar x = pos[0] - this->boundingBoxMin()[0];
|
||||||
|
Scalar y = pos[dim - 1] - this->boundingBoxMin()[dim - 1];
|
||||||
|
Scalar width = this->boundingBoxMax()[0] - this->boundingBoxMin()[0];
|
||||||
|
Scalar height = this->boundingBoxMax()[dim - 1] - this->boundingBoxMin()[dim - 1];
|
||||||
|
|
||||||
bool onRightBoundary_(const GlobalPosition &pos) const
|
// only the upper half of the center section of the spatial domain is assumed to
|
||||||
{ return pos[0] > this->boundingBoxMax()[0] - eps_; }
|
// be the producer
|
||||||
|
if (y <= height/2.0)
|
||||||
|
return false;
|
||||||
|
|
||||||
bool onInlet_(const GlobalPosition &pos) const
|
return width/2.0 - width*1e-5 < x && x < width/2.0 + width*(wellWidth_ + 1e-5);
|
||||||
{ return onRightBoundary_(pos) && (5 < pos[1]) && (pos[1] < 15); }
|
}
|
||||||
|
|
||||||
|
bool isInjector_(const GlobalPosition &pos) const
|
||||||
|
{
|
||||||
|
Scalar x = pos[0] - this->boundingBoxMin()[0];
|
||||||
|
Scalar y = pos[dim - 1] - this->boundingBoxMin()[dim - 1];
|
||||||
|
Scalar width = this->boundingBoxMax()[0] - this->boundingBoxMin()[0];
|
||||||
|
Scalar height = this->boundingBoxMax()[dim - 1] - this->boundingBoxMin()[dim - 1];
|
||||||
|
|
||||||
|
// only the lower half of the leftmost and rightmost part of the spatial domain
|
||||||
|
// are assumed to be the water injectors
|
||||||
|
if (y > height/2.0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return x < width*wellWidth_ - width*1e-5 || x > width*(1.0 - wellWidth_) + width*1e-5;
|
||||||
|
}
|
||||||
|
|
||||||
bool isFineMaterial_(const GlobalPosition &pos) const
|
bool isFineMaterial_(const GlobalPosition &pos) const
|
||||||
{ return pos[dim - 1] > layerBottom_; }
|
{ return pos[dim - 1] > layerBottom_; }
|
||||||
@@ -611,11 +699,13 @@ private:
|
|||||||
MaterialLawParams fineMaterialParams_;
|
MaterialLawParams fineMaterialParams_;
|
||||||
MaterialLawParams coarseMaterialParams_;
|
MaterialLawParams coarseMaterialParams_;
|
||||||
|
|
||||||
BlackOilFluidState initialFluidState_;
|
InitialFluidState initialFluidState_;
|
||||||
|
InitialFluidState injectorFluidState_;
|
||||||
|
InitialFluidState producerFluidState_;
|
||||||
|
|
||||||
Scalar temperature_;
|
Scalar temperature_;
|
||||||
Scalar maxDepth_;
|
Scalar maxDepth_;
|
||||||
Scalar eps_;
|
Scalar wellWidth_;
|
||||||
};
|
};
|
||||||
} // namespace Ewoms
|
} // namespace Ewoms
|
||||||
|
|
||||||
|
|||||||
@@ -91,13 +91,6 @@ public:
|
|||||||
// Enable gravitational acceleration
|
// Enable gravitational acceleration
|
||||||
SET_BOOL_PROP(RichardsLensProblem, EnableGravity, true);
|
SET_BOOL_PROP(RichardsLensProblem, EnableGravity, true);
|
||||||
|
|
||||||
// Only relinearize the parts where the current solution is sufficiently "bad"
|
|
||||||
SET_BOOL_PROP(RichardsLensProblem, EnablePartialRelinearization, true);
|
|
||||||
|
|
||||||
// Enable re-use of the linearization of the last iteration of the
|
|
||||||
// previous for the first iteration of the current time step?
|
|
||||||
SET_BOOL_PROP(RichardsLensProblem, EnableLinearizationRecycling, true);
|
|
||||||
|
|
||||||
// Use central differences to approximate the Jacobian matrix
|
// Use central differences to approximate the Jacobian matrix
|
||||||
SET_INT_PROP(RichardsLensProblem, NumericDifferenceMethod, 0);
|
SET_INT_PROP(RichardsLensProblem, NumericDifferenceMethod, 0);
|
||||||
|
|
||||||
@@ -228,8 +221,8 @@ public:
|
|||||||
auto elemEndIt = this->gridView().template end</*codim=*/0>();
|
auto elemEndIt = this->gridView().template end</*codim=*/0>();
|
||||||
for (; elemIt != elemEndIt; ++elemIt) {
|
for (; elemIt != elemEndIt; ++elemIt) {
|
||||||
stencil.update(*elemIt);
|
stencil.update(*elemIt);
|
||||||
for (int dofIdx = 0; dofIdx < stencil.numPrimaryDof(); ++ dofIdx) {
|
for (unsigned dofIdx = 0; dofIdx < stencil.numPrimaryDof(); ++ dofIdx) {
|
||||||
int globalDofIdx = stencil.globalSpaceIndex(dofIdx);
|
unsigned globalDofIdx = stencil.globalSpaceIndex(dofIdx);
|
||||||
const auto& dofPos = stencil.subControlVolume(dofIdx).center();
|
const auto& dofPos = stencil.subControlVolume(dofIdx).center();
|
||||||
dofIsInLens_[globalDofIdx] = isInLens_(dofPos);
|
dofIsInLens_[globalDofIdx] = isInLens_(dofPos);
|
||||||
}
|
}
|
||||||
@@ -275,10 +268,10 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::temperature
|
* \copydoc FvBaseMultiPhaseProblem::temperature
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return temperature(context.globalSpaceIndex(spaceIdx, timeIdx), timeIdx); }
|
{ return temperature(context.globalSpaceIndex(spaceIdx, timeIdx), timeIdx); }
|
||||||
|
|
||||||
Scalar temperature(int globalSpaceIdx, int timeIdx) const
|
Scalar temperature(unsigned globalSpaceIdx, unsigned timeIdx) const
|
||||||
{ return 273.15 + 10; } // -> 10°C
|
{ return 273.15 + 10; } // -> 10°C
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -286,8 +279,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context,
|
const DimMatrix &intrinsicPermeability(const Context &context,
|
||||||
int spaceIdx,
|
unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isInLens_(pos))
|
if (isInLens_(pos))
|
||||||
@@ -299,7 +292,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 0.4; }
|
{ return 0.4; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -307,14 +300,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams &materialLawParams(const Context &context,
|
const MaterialLawParams &materialLawParams(const Context &context,
|
||||||
int spaceIdx,
|
unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
int globalSpaceIdx = context.globalSpaceIndex(spaceIdx, timeIdx);
|
unsigned globalSpaceIdx = context.globalSpaceIndex(spaceIdx, timeIdx);
|
||||||
return materialLawParams(globalSpaceIdx, timeIdx);
|
return materialLawParams(globalSpaceIdx, timeIdx);
|
||||||
}
|
}
|
||||||
|
|
||||||
const MaterialLawParams& materialLawParams(int globalSpaceIdx, int timeIdx) const
|
const MaterialLawParams& materialLawParams(unsigned globalSpaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
if (dofIsInLens_[globalSpaceIdx])
|
if (dofIsInLens_[globalSpaceIdx])
|
||||||
return lensMaterialParams_;
|
return lensMaterialParams_;
|
||||||
@@ -328,13 +321,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar referencePressure(const Context &context,
|
Scalar referencePressure(const Context &context,
|
||||||
int spaceIdx,
|
unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ return referencePressure(context.globalSpaceIndex(spaceIdx, timeIdx), timeIdx); }
|
{ return referencePressure(context.globalSpaceIndex(spaceIdx, timeIdx), timeIdx); }
|
||||||
|
|
||||||
// the Richards model does not have an element context available at all places
|
// the Richards model does not have an element context available at all places
|
||||||
// where the reference pressure is required...
|
// where the reference pressure is required...
|
||||||
Scalar referencePressure(int globalSpaceIdx, int timeIdx) const
|
Scalar referencePressure(unsigned globalSpaceIdx, unsigned timeIdx) const
|
||||||
{ return pnRef_; }
|
{ return pnRef_; }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -350,8 +343,8 @@ public:
|
|||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values,
|
void boundary(BoundaryRateVector &values,
|
||||||
const Context &context,
|
const Context &context,
|
||||||
int spaceIdx,
|
unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -395,8 +388,8 @@ public:
|
|||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values,
|
void initial(PrimaryVariables &values,
|
||||||
const Context &context,
|
const Context &context,
|
||||||
int spaceIdx,
|
unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &materialParams = this->materialLawParams(context, spaceIdx, timeIdx);
|
const auto &materialParams = this->materialLawParams(context, spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -419,8 +412,8 @@ public:
|
|||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate,
|
void source(RateVector &rate,
|
||||||
const Context &context,
|
const Context &context,
|
||||||
int spaceIdx,
|
unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -447,7 +440,7 @@ private:
|
|||||||
|
|
||||||
bool isInLens_(const GlobalPosition &pos) const
|
bool isInLens_(const GlobalPosition &pos) const
|
||||||
{
|
{
|
||||||
for (int i = 0; i < dimWorld; ++i) {
|
for (unsigned i = 0; i < dimWorld; ++i) {
|
||||||
if (pos[i] < lensLowerLeft_[i] || pos[i] > lensUpperRight_[i])
|
if (pos[i] < lensLowerLeft_[i] || pos[i] > lensUpperRight_[i])
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ public:
|
|||||||
* This problem assumes a temperature of 10 degrees Celsius.
|
* This problem assumes a temperature of 10 degrees Celsius.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 273.15 + 10; /* -> 10 deg C */ }
|
{ return 273.15 + 10; /* -> 10 deg C */ }
|
||||||
|
|
||||||
// \}
|
// \}
|
||||||
@@ -198,7 +198,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -229,8 +229,8 @@ public:
|
|||||||
* 0.5% is set.
|
* 0.5% is set.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &globalPos = context.pos(spaceIdx, timeIdx);
|
||||||
values = 0.0;
|
values = 0.0;
|
||||||
@@ -264,8 +264,8 @@ public:
|
|||||||
* is 0 everywhere.
|
* is 0 everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -276,23 +276,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void constraints(Constraints &constraints, const Context &context,
|
void constraints(Constraints &constraints, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
if (onUpperBoundary_(pos)) {
|
if (onUpperBoundary_(pos)) {
|
||||||
PrimaryVariables initCond;
|
constraints.setActive(true);
|
||||||
initial(initCond, context, spaceIdx, timeIdx);
|
initial(constraints, context, spaceIdx, timeIdx);
|
||||||
|
|
||||||
constraints.setConstraint(pressureIdx, conti0EqIdx,
|
|
||||||
initCond[pressureIdx]);
|
|
||||||
;
|
|
||||||
constraints.setConstraint(moleFrac1Idx, conti0EqIdx + 1,
|
|
||||||
initCond[moleFrac1Idx]);
|
|
||||||
for (int axisIdx = 0; axisIdx < dimWorld; ++axisIdx)
|
|
||||||
constraints.setConstraint(velocity0Idx + axisIdx,
|
|
||||||
momentum0EqIdx + axisIdx,
|
|
||||||
initCond[velocity0Idx + axisIdx]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//! \}
|
//! \}
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -225,8 +225,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -259,7 +259,7 @@ public:
|
|||||||
Scalar rho = 1.189;
|
Scalar rho = 1.189;
|
||||||
Scalar pressure = 1e5 - rho * this->gravity()[1] * y;
|
Scalar pressure = 1e5 - rho * this->gravity()[1] * y;
|
||||||
|
|
||||||
for (int axisIdx = 0; axisIdx < dimWorld; ++axisIdx)
|
for (unsigned axisIdx = 0; axisIdx < dimWorld; ++axisIdx)
|
||||||
values[velocity0Idx + axisIdx] = velocity[axisIdx];
|
values[velocity0Idx + axisIdx] = velocity[axisIdx];
|
||||||
|
|
||||||
values[pressureIdx] = pressure;
|
values[pressureIdx] = pressure;
|
||||||
@@ -274,8 +274,8 @@ public:
|
|||||||
* is 0 everywhere.
|
* is 0 everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -286,26 +286,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void constraints(Constraints &constraints, const Context &context,
|
void constraints(Constraints &constraints, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
if (onLowerBoundary_(pos) || onUpperBoundary_(pos)) {
|
if (onLowerBoundary_(pos) || onUpperBoundary_(pos)) {
|
||||||
PrimaryVariables initCond;
|
constraints.setActive(true);
|
||||||
initial(initCond, context, spaceIdx, timeIdx);
|
initial(constraints, context, spaceIdx, timeIdx);
|
||||||
|
|
||||||
constraints.setConstraint(temperatureIdx, energyEqIdx,
|
|
||||||
initCond[temperatureIdx]);
|
|
||||||
;
|
|
||||||
constraints.setConstraint(pressureIdx, conti0EqIdx,
|
|
||||||
initCond[pressureIdx]);
|
|
||||||
constraints.setConstraint(moleFrac1Idx, conti0EqIdx + 1,
|
|
||||||
initCond[moleFrac1Idx]);
|
|
||||||
;
|
|
||||||
for (int axisIdx = 0; axisIdx < dimWorld; ++axisIdx)
|
|
||||||
constraints.setConstraint(velocity0Idx + axisIdx,
|
|
||||||
momentum0EqIdx + axisIdx,
|
|
||||||
initCond[momentum0EqIdx + axisIdx]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ public:
|
|||||||
* This problem assumes a constant temperature of 10 degrees Celsius.
|
* This problem assumes a constant temperature of 10 degrees Celsius.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar temperature(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ return 273.15 + 10; } // -> 10 deg C
|
{ return 273.15 + 10; } // -> 10 deg C
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -193,7 +193,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values, const Context &context,
|
void boundary(BoundaryRateVector &values, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -233,8 +233,8 @@ public:
|
|||||||
* \copydoc FvBaseProblem::initial
|
* \copydoc FvBaseProblem::initial
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx,
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -251,7 +251,7 @@ public:
|
|||||||
DimVector velocity(0.0);
|
DimVector velocity(0.0);
|
||||||
velocity[0] = a * y * y + b * y + c;
|
velocity[0] = a * y * y + b * y + c;
|
||||||
|
|
||||||
for (int axisIdx = 0; axisIdx < dimWorld; ++axisIdx)
|
for (unsigned axisIdx = 0; axisIdx < dimWorld; ++axisIdx)
|
||||||
values[velocity0Idx + axisIdx] = velocity[axisIdx];
|
values[velocity0Idx + axisIdx] = velocity[axisIdx];
|
||||||
values[pressureIdx] = 1e5;
|
values[pressureIdx] = 1e5;
|
||||||
}
|
}
|
||||||
@@ -263,8 +263,8 @@ public:
|
|||||||
* is 0 everywhere.
|
* is 0 everywhere.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate, const Context &context, int spaceIdx,
|
void source(RateVector &rate, const Context &context, unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{ rate = Scalar(0.0); }
|
{ rate = Scalar(0.0); }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -275,21 +275,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void constraints(Constraints &constraints, const Context &context,
|
void constraints(Constraints &constraints, const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
const auto &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
if (onLeftBoundary_(pos) || onRightBoundary_(pos)) {
|
if (onLeftBoundary_(pos) || onRightBoundary_(pos)) {
|
||||||
PrimaryVariables initCond;
|
constraints.setActive(true);
|
||||||
initial(initCond, context, spaceIdx, timeIdx);
|
initial(constraints, context, spaceIdx, timeIdx);
|
||||||
|
|
||||||
constraints.setConstraint(pressureIdx, conti0EqIdx,
|
|
||||||
initCond[pressureIdx]);
|
|
||||||
;
|
|
||||||
for (int axisIdx = 0; axisIdx < dimWorld; ++axisIdx)
|
|
||||||
constraints.setConstraint(velocity0Idx + axisIdx,
|
|
||||||
momentum0EqIdx + axisIdx,
|
|
||||||
initCond[velocity0Idx + axisIdx]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,9 +103,6 @@ SET_TYPE_PROP(WaterAirBaseProblem, FluidSystem,
|
|||||||
// Enable gravity
|
// Enable gravity
|
||||||
SET_BOOL_PROP(WaterAirBaseProblem, EnableGravity, true);
|
SET_BOOL_PROP(WaterAirBaseProblem, EnableGravity, true);
|
||||||
|
|
||||||
// Enable constraints
|
|
||||||
SET_BOOL_PROP(WaterAirBaseProblem, EnableConstraints, true);
|
|
||||||
|
|
||||||
// Use forward differences instead of central differences
|
// Use forward differences instead of central differences
|
||||||
SET_INT_PROP(WaterAirBaseProblem, NumericDifferenceMethod, +1);
|
SET_INT_PROP(WaterAirBaseProblem, NumericDifferenceMethod, +1);
|
||||||
|
|
||||||
@@ -302,7 +299,7 @@ public:
|
|||||||
* permeable than the lower one.
|
* permeable than the lower one.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const DimMatrix &intrinsicPermeability(const Context &context, int spaceIdx, int timeIdx) const
|
const DimMatrix &intrinsicPermeability(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -314,7 +311,7 @@ public:
|
|||||||
* \copydoc FvBaseMultiPhaseProblem::porosity
|
* \copydoc FvBaseMultiPhaseProblem::porosity
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar porosity(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -328,8 +325,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const MaterialLawParams& materialLawParams(const Context &context,
|
const MaterialLawParams& materialLawParams(const Context &context,
|
||||||
int spaceIdx,
|
unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -344,7 +341,7 @@ public:
|
|||||||
* In this case, we assume the rock-matrix to be granite.
|
* In this case, we assume the rock-matrix to be granite.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
Scalar heatCapacitySolid(const Context &context, int spaceIdx, int timeIdx) const
|
Scalar heatCapacitySolid(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
790 // specific heat capacity of granite [J / (kg K)]
|
790 // specific heat capacity of granite [J / (kg K)]
|
||||||
@@ -356,7 +353,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
const HeatConductionLawParams&
|
const HeatConductionLawParams&
|
||||||
heatConductionParams(const Context &context, int spaceIdx, int timeIdx) const
|
heatConductionParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
if (isFineMaterial_(pos))
|
if (isFineMaterial_(pos))
|
||||||
@@ -382,7 +379,7 @@ public:
|
|||||||
template <class Context>
|
template <class Context>
|
||||||
void boundary(BoundaryRateVector &values,
|
void boundary(BoundaryRateVector &values,
|
||||||
const Context &context,
|
const Context &context,
|
||||||
int spaceIdx, int timeIdx) const
|
unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const auto &pos = context.cvCenter(spaceIdx, timeIdx);
|
const auto &pos = context.cvCenter(spaceIdx, timeIdx);
|
||||||
assert(onLeftBoundary_(pos) ||
|
assert(onLeftBoundary_(pos) ||
|
||||||
@@ -433,7 +430,7 @@ public:
|
|||||||
* liquid water and assume hydrostatic pressure.
|
* liquid water and assume hydrostatic pressure.
|
||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void initial(PrimaryVariables &values, const Context &context, int spaceIdx, int timeIdx) const
|
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
Opm::CompositionalFluidState<Scalar, FluidSystem> fs;
|
Opm::CompositionalFluidState<Scalar, FluidSystem> fs;
|
||||||
initialFluidState_(fs, context, spaceIdx, timeIdx);
|
initialFluidState_(fs, context, spaceIdx, timeIdx);
|
||||||
@@ -442,24 +439,6 @@ public:
|
|||||||
values.assignMassConservative(fs, matParams, /*inEquilibrium=*/true);
|
values.assignMassConservative(fs, matParams, /*inEquilibrium=*/true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
|
||||||
* \copydoc FvBaseProblem::constraints
|
|
||||||
*
|
|
||||||
* In this problem, constraints are used to keep the temperature of the degrees of
|
|
||||||
* freedom which are closest to the inlet constant.
|
|
||||||
*/
|
|
||||||
template <class Context>
|
|
||||||
void constraints(Constraints &constraints,
|
|
||||||
const Context &context,
|
|
||||||
int spaceIdx, int timeIdx) const
|
|
||||||
{
|
|
||||||
const auto &pos = context.pos(spaceIdx, timeIdx);
|
|
||||||
|
|
||||||
if (onInlet_(pos)) {
|
|
||||||
constraints.setConstraint(temperatureIdx, energyEqIdx, 380);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \copydoc FvBaseProblem::source
|
* \copydoc FvBaseProblem::source
|
||||||
*
|
*
|
||||||
@@ -468,7 +447,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Context>
|
template <class Context>
|
||||||
void source(RateVector &rate,
|
void source(RateVector &rate,
|
||||||
const Context &context, int spaceIdx, int timeIdx) const
|
const Context &context, unsigned spaceIdx, unsigned timeIdx) const
|
||||||
{ rate = 0; }
|
{ rate = 0; }
|
||||||
|
|
||||||
//! \}
|
//! \}
|
||||||
@@ -495,8 +474,8 @@ private:
|
|||||||
template <class Context, class FluidState>
|
template <class Context, class FluidState>
|
||||||
void initialFluidState_(FluidState &fs,
|
void initialFluidState_(FluidState &fs,
|
||||||
const Context &context,
|
const Context &context,
|
||||||
int spaceIdx,
|
unsigned spaceIdx,
|
||||||
int timeIdx) const
|
unsigned timeIdx) const
|
||||||
{
|
{
|
||||||
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
const GlobalPosition &pos = context.pos(spaceIdx, timeIdx);
|
||||||
|
|
||||||
@@ -530,18 +509,18 @@ private:
|
|||||||
// create a Fluid state which has all phases present
|
// create a Fluid state which has all phases present
|
||||||
Opm::ImmiscibleFluidState<Scalar, FluidSystem> fs;
|
Opm::ImmiscibleFluidState<Scalar, FluidSystem> fs;
|
||||||
fs.setTemperature(293.15);
|
fs.setTemperature(293.15);
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
fs.setPressure(phaseIdx, 1.0135e5);
|
fs.setPressure(phaseIdx, 1.0135e5);
|
||||||
}
|
}
|
||||||
|
|
||||||
typename FluidSystem::ParameterCache paramCache;
|
typename FluidSystem::ParameterCache paramCache;
|
||||||
paramCache.updateAll(fs);
|
paramCache.updateAll(fs);
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
Scalar rho = FluidSystem::density(fs, paramCache, phaseIdx);
|
Scalar rho = FluidSystem::density(fs, paramCache, phaseIdx);
|
||||||
fs.setDensity(phaseIdx, rho);
|
fs.setDensity(phaseIdx, rho);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
|
||||||
Scalar lambdaSaturated;
|
Scalar lambdaSaturated;
|
||||||
if (FluidSystem::isLiquid(phaseIdx)) {
|
if (FluidSystem::isLiquid(phaseIdx)) {
|
||||||
Scalar lambdaFluid =
|
Scalar lambdaFluid =
|
||||||
|
|||||||
49
examples/reservoir_blackoil_ecfv.cpp
Normal file
49
examples/reservoir_blackoil_ecfv.cpp
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
// vi: set et ts=4 sw=4 sts=4:
|
||||||
|
/*
|
||||||
|
Copyright (C) 2012-2013 by Andreas Lauser
|
||||||
|
|
||||||
|
This file is part of the Open Porous Media project (OPM).
|
||||||
|
|
||||||
|
OPM is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OPM is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OPM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
* \file
|
||||||
|
*
|
||||||
|
* \brief Test for the reservoir problem using the black-oil model, the ECFV discretization
|
||||||
|
* and automatic differentiation.
|
||||||
|
*/
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <ewoms/common/start.hh>
|
||||||
|
#include <ewoms/models/blackoil/blackoilmodel.hh>
|
||||||
|
#include <ewoms/disc/ecfv/ecfvdiscretization.hh>
|
||||||
|
#include "problems/reservoirproblem.hh"
|
||||||
|
|
||||||
|
namespace Ewoms {
|
||||||
|
namespace Properties {
|
||||||
|
NEW_TYPE_TAG(ReservoirBlackOilEcfvProblem, INHERITS_FROM(BlackOilModel, ReservoirBaseProblem));
|
||||||
|
|
||||||
|
// Select the element centered finite volume method as spatial discretization
|
||||||
|
SET_TAG_PROP(ReservoirBlackOilEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||||
|
|
||||||
|
// Use automatic differentiation to linearize the system of PDEs
|
||||||
|
SET_TAG_PROP(ReservoirBlackOilEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||||
|
}}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
typedef TTAG(ReservoirBlackOilEcfvProblem) ProblemTypeTag;
|
||||||
|
return Ewoms::start<ProblemTypeTag>(argc, argv);
|
||||||
|
}
|
||||||
@@ -21,22 +21,25 @@
|
|||||||
/*!
|
/*!
|
||||||
* \file
|
* \file
|
||||||
*
|
*
|
||||||
* \brief Test for the black-oil VCVF discretization.
|
* \brief Test for the black-oil model using the VCFV discretization.
|
||||||
*/
|
*/
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <ewoms/common/start.hh>
|
#include <ewoms/common/start.hh>
|
||||||
#include <ewoms/models/blackoil/blackoilmodel.hh>
|
#include <ewoms/models/blackoil/blackoilmodel.hh>
|
||||||
|
#include <ewoms/disc/vcfv/vcfvdiscretization.hh>
|
||||||
#include "problems/reservoirproblem.hh"
|
#include "problems/reservoirproblem.hh"
|
||||||
|
|
||||||
namespace Ewoms {
|
namespace Ewoms {
|
||||||
namespace Properties {
|
namespace Properties {
|
||||||
NEW_TYPE_TAG(ReservoirProblem, INHERITS_FROM(BlackOilModel, ReservoirBaseProblem));
|
NEW_TYPE_TAG(ReservoirBlackOilVcfvProblem, INHERITS_FROM(BlackOilModel, ReservoirBaseProblem));
|
||||||
}
|
|
||||||
}
|
// Select the vertex centered finite volume method as spatial discretization
|
||||||
|
SET_TAG_PROP(ReservoirBlackOilVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||||
|
}}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
typedef TTAG(ReservoirProblem) ProblemTypeTag;
|
typedef TTAG(ReservoirBlackOilVcfvProblem) ProblemTypeTag;
|
||||||
return Ewoms::start<ProblemTypeTag>(argc, argv);
|
return Ewoms::start<ProblemTypeTag>(argc, argv);
|
||||||
}
|
}
|
||||||
48
examples/reservoir_ncp_ecfv.cpp
Normal file
48
examples/reservoir_ncp_ecfv.cpp
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
// vi: set et ts=4 sw=4 sts=4:
|
||||||
|
/*
|
||||||
|
Copyright (C) 2012-2013 by Andreas Lauser
|
||||||
|
|
||||||
|
This file is part of the Open Porous Media project (OPM).
|
||||||
|
|
||||||
|
OPM is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OPM is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OPM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
* \file
|
||||||
|
*
|
||||||
|
* \brief Test for the black-oil VCVF discretization.
|
||||||
|
*/
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <ewoms/common/start.hh>
|
||||||
|
#include <ewoms/models/ncp/ncpmodel.hh>
|
||||||
|
#include <ewoms/disc/ecfv/ecfvdiscretization.hh>
|
||||||
|
#include "problems/reservoirproblem.hh"
|
||||||
|
|
||||||
|
namespace Ewoms {
|
||||||
|
namespace Properties {
|
||||||
|
NEW_TYPE_TAG(ReservoirNcpEcfvProblem, INHERITS_FROM(NcpModel, ReservoirBaseProblem));
|
||||||
|
|
||||||
|
// Select the element centered finite volume method as spatial discretization
|
||||||
|
SET_TAG_PROP(ReservoirNcpEcfvProblem, SpatialDiscretizationSplice, EcfvDiscretization);
|
||||||
|
|
||||||
|
//! use automatic differentiation to linearize the system of PDEs
|
||||||
|
SET_TAG_PROP(ReservoirNcpEcfvProblem, LocalLinearizerSplice, AutoDiffLocalLinearizer);
|
||||||
|
}}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
typedef TTAG(ReservoirNcpEcfvProblem) ProblemTypeTag;
|
||||||
|
return Ewoms::start<ProblemTypeTag>(argc, argv);
|
||||||
|
}
|
||||||
50
examples/reservoir_ncp_vcfv.cpp
Normal file
50
examples/reservoir_ncp_vcfv.cpp
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
// vi: set et ts=4 sw=4 sts=4:
|
||||||
|
/*
|
||||||
|
Copyright (C) 2012-2013 by Andreas Lauser
|
||||||
|
|
||||||
|
This file is part of the Open Porous Media project (OPM).
|
||||||
|
|
||||||
|
OPM is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OPM is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OPM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
* \file
|
||||||
|
*
|
||||||
|
* \brief Test for the reservoir problem using the NCP model, the VCFV discretization and
|
||||||
|
* finite differences.
|
||||||
|
*/
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <ewoms/common/start.hh>
|
||||||
|
#include <ewoms/models/ncp/ncpmodel.hh>
|
||||||
|
#include <ewoms/disc/vcfv/vcfvdiscretization.hh>
|
||||||
|
#include "problems/reservoirproblem.hh"
|
||||||
|
|
||||||
|
namespace Ewoms {
|
||||||
|
namespace Properties {
|
||||||
|
NEW_TYPE_TAG(ReservoirNcpVcfvProblem, INHERITS_FROM(NcpModel, ReservoirBaseProblem));
|
||||||
|
|
||||||
|
// Select the vertex centered finite volume method as spatial discretization
|
||||||
|
SET_TAG_PROP(ReservoirNcpVcfvProblem, SpatialDiscretizationSplice, VcfvDiscretization);
|
||||||
|
|
||||||
|
// enable the storage cache for this problem so that the storage cache receives wider
|
||||||
|
// testing
|
||||||
|
SET_BOOL_PROP(ReservoirNcpVcfvProblem, EnableStorageCache, true);
|
||||||
|
}}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
typedef TTAG(ReservoirNcpVcfvProblem) ProblemTypeTag;
|
||||||
|
return Ewoms::start<ProblemTypeTag>(argc, argv);
|
||||||
|
}
|
||||||
@@ -60,7 +60,7 @@ void testQuadrature();
|
|||||||
GlobalPosition::field_type f(const GlobalPosition &pos)
|
GlobalPosition::field_type f(const GlobalPosition &pos)
|
||||||
{
|
{
|
||||||
GlobalPosition::field_type result = 1;
|
GlobalPosition::field_type result = 1;
|
||||||
for (int i = 0; i < GlobalPosition::dimension; ++i)
|
for (unsigned i = 0; i < GlobalPosition::dimension; ++i)
|
||||||
result *= pos[i];
|
result *= pos[i];
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -80,10 +80,10 @@ void testIdenityMapping()
|
|||||||
foo.setCorners(corners, 8);
|
foo.setCorners(corners, 8);
|
||||||
|
|
||||||
std::cout << "testing identity mapping...\n";
|
std::cout << "testing identity mapping...\n";
|
||||||
int n = 100;
|
unsigned n = 100;
|
||||||
for (int i = 0; i < n; ++i) {
|
for (unsigned i = 0; i < n; ++i) {
|
||||||
for (int j = 0; j < n; ++j) {
|
for (unsigned j = 0; j < n; ++j) {
|
||||||
for (int k = 0; k < n; ++k) {
|
for (unsigned k = 0; k < n; ++k) {
|
||||||
LocalPosition localPos;
|
LocalPosition localPos;
|
||||||
|
|
||||||
localPos[0] = Scalar(i) / (n - 1);
|
localPos[0] = Scalar(i) / (n - 1);
|
||||||
@@ -119,10 +119,10 @@ void writeTetrahedronSubControlVolumes(const Grid &grid)
|
|||||||
const auto &eEndIt = gridView.template end<0>();
|
const auto &eEndIt = gridView.template end<0>();
|
||||||
for (; eIt != eEndIt; ++eIt) {
|
for (; eIt != eEndIt; ++eIt) {
|
||||||
stencil.update(*eIt);
|
stencil.update(*eIt);
|
||||||
for (int scvIdx = 0; scvIdx < stencil.numDof(); ++scvIdx) {
|
for (unsigned scvIdx = 0; scvIdx < stencil.numDof(); ++scvIdx) {
|
||||||
const auto &scvLocalGeom = stencil.subControlVolume(scvIdx).localGeometry();
|
const auto &scvLocalGeom = stencil.subControlVolume(scvIdx).localGeometry();
|
||||||
|
|
||||||
for (int i = 0; i < scvLocalGeom.numCorners; ++i) {
|
for (unsigned i = 0; i < scvLocalGeom.numCorners; ++i) {
|
||||||
GlobalPosition pos(
|
GlobalPosition pos(
|
||||||
eIt->geometry().global(scvLocalGeom.corner(i)));
|
eIt->geometry().global(scvLocalGeom.corner(i)));
|
||||||
gf2.insertVertex(pos);
|
gf2.insertVertex(pos);
|
||||||
@@ -134,11 +134,11 @@ void writeTetrahedronSubControlVolumes(const Grid &grid)
|
|||||||
eIt = gridView.template begin<0>();
|
eIt = gridView.template begin<0>();
|
||||||
for (; eIt != eEndIt; ++eIt) {
|
for (; eIt != eEndIt; ++eIt) {
|
||||||
stencil.update(*eIt);
|
stencil.update(*eIt);
|
||||||
for (int scvIdx = 0; scvIdx < stencil.numDof(); ++scvIdx) {
|
for (unsigned scvIdx = 0; scvIdx < stencil.numDof(); ++scvIdx) {
|
||||||
const auto &scvLocalGeom = stencil.subControlVolume(scvIdx).localGeometry();
|
const auto &scvLocalGeom = stencil.subControlVolume(scvIdx).localGeometry();
|
||||||
|
|
||||||
std::vector<unsigned int> vertexIndices;
|
std::vector<unsigned int> vertexIndices;
|
||||||
for (int i = 0; i < scvLocalGeom.numCorners; ++i) {
|
for (unsigned i = 0; i < scvLocalGeom.numCorners; ++i) {
|
||||||
vertexIndices.push_back(cornerOffset);
|
vertexIndices.push_back(cornerOffset);
|
||||||
++cornerOffset;
|
++cornerOffset;
|
||||||
}
|
}
|
||||||
@@ -198,10 +198,10 @@ void writeCubeSubControlVolumes(const Grid &grid)
|
|||||||
const auto &eEndIt = gridView.template end<0>();
|
const auto &eEndIt = gridView.template end<0>();
|
||||||
for (; eIt != eEndIt; ++eIt) {
|
for (; eIt != eEndIt; ++eIt) {
|
||||||
stencil.update(*eIt);
|
stencil.update(*eIt);
|
||||||
for (int scvIdx = 0; scvIdx < stencil.numDof(); ++scvIdx) {
|
for (unsigned scvIdx = 0; scvIdx < stencil.numDof(); ++scvIdx) {
|
||||||
const auto &scvLocalGeom = stencil.subControlVolume(scvIdx).localGeometry();
|
const auto &scvLocalGeom = stencil.subControlVolume(scvIdx).localGeometry();
|
||||||
|
|
||||||
for (int i = 0; i < scvLocalGeom.numCorners; ++i) {
|
for (unsigned i = 0; i < scvLocalGeom.numCorners; ++i) {
|
||||||
GlobalPosition pos(
|
GlobalPosition pos(
|
||||||
eIt->geometry().global(scvLocalGeom.corner(i)));
|
eIt->geometry().global(scvLocalGeom.corner(i)));
|
||||||
gf2.insertVertex(pos);
|
gf2.insertVertex(pos);
|
||||||
@@ -213,11 +213,11 @@ void writeCubeSubControlVolumes(const Grid &grid)
|
|||||||
eIt = gridView.template begin<0>();
|
eIt = gridView.template begin<0>();
|
||||||
for (; eIt != eEndIt; ++eIt) {
|
for (; eIt != eEndIt; ++eIt) {
|
||||||
stencil.update(*eIt);
|
stencil.update(*eIt);
|
||||||
for (int scvIdx = 0; scvIdx < stencil.numDof(); ++scvIdx) {
|
for (unsigned scvIdx = 0; scvIdx < stencil.numDof(); ++scvIdx) {
|
||||||
const auto &scvLocalGeom = stencil.subControlVolume(scvIdx).localGeometry();
|
const auto &scvLocalGeom = stencil.subControlVolume(scvIdx).localGeometry();
|
||||||
|
|
||||||
std::vector<unsigned int> vertexIndices;
|
std::vector<unsigned int> vertexIndices;
|
||||||
for (int i = 0; i < scvLocalGeom.numCorners; ++i) {
|
for (unsigned i = 0; i < scvLocalGeom.numCorners; ++i) {
|
||||||
vertexIndices.push_back(cornerOffset);
|
vertexIndices.push_back(cornerOffset);
|
||||||
++cornerOffset;
|
++cornerOffset;
|
||||||
}
|
}
|
||||||
@@ -313,7 +313,7 @@ void testQuadrature()
|
|||||||
stencil.update(*eIt);
|
stencil.update(*eIt);
|
||||||
|
|
||||||
// loop over all sub-control volumes
|
// loop over all sub-control volumes
|
||||||
for (int scvIdx = 0; scvIdx < stencil.numDof(); ++scvIdx) {
|
for (unsigned scvIdx = 0; scvIdx < stencil.numDof(); ++scvIdx) {
|
||||||
const auto &scvLocalGeom = stencil.subControlVolume(scvIdx).localGeometry();
|
const auto &scvLocalGeom = stencil.subControlVolume(scvIdx).localGeometry();
|
||||||
|
|
||||||
Dune::GeometryType geomType = scvLocalGeom.type();
|
Dune::GeometryType geomType = scvLocalGeom.type();
|
||||||
|
|||||||
2365
tests/referencesolutions/finger_immiscible-heuristix-new-alugrid.vtu
Normal file
2365
tests/referencesolutions/finger_immiscible-heuristix-new-alugrid.vtu
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
2779
tests/referencesolutions/reservoir_blackoil_ecfv-heuristix.vtu
Normal file
2779
tests/referencesolutions/reservoir_blackoil_ecfv-heuristix.vtu
Normal file
File diff suppressed because it is too large
Load Diff
2986
tests/referencesolutions/reservoir_blackoil_vcfv-heuristix.vtu
Normal file
2986
tests/referencesolutions/reservoir_blackoil_vcfv-heuristix.vtu
Normal file
File diff suppressed because it is too large
Load Diff
2779
tests/referencesolutions/reservoir_ncp_ecfv-heuristix.vtu
Normal file
2779
tests/referencesolutions/reservoir_ncp_ecfv-heuristix.vtu
Normal file
File diff suppressed because it is too large
Load Diff
2986
tests/referencesolutions/reservoir_ncp_vcfv-heuristix.vtu
Normal file
2986
tests/referencesolutions/reservoir_ncp_vcfv-heuristix.vtu
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,48 +2,48 @@
|
|||||||
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
|
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
|
||||||
<UnstructuredGrid>
|
<UnstructuredGrid>
|
||||||
<Piece NumberOfCells="96" NumberOfPoints="117">
|
<Piece NumberOfCells="96" NumberOfPoints="117">
|
||||||
<CellData Scalars="pressure_l">
|
<CellData Scalars="pressure_liquid">
|
||||||
<DataArray type="Float32" Name="pressure_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="pressure_liquid" NumberOfComponents="1" format="ascii">
|
||||||
2.63087e+07 2.63089e+07 2.63089e+07 2.63089e+07 2.63087e+07 2.63085e+07 2.63081e+07 2.63076e+07 2.63071e+07 2.63068e+07 2.63068e+07 2.63071e+07
|
2.63163e+07 2.63173e+07 2.63182e+07 2.6319e+07 2.63197e+07 2.63202e+07 2.63206e+07 2.63209e+07 2.6321e+07 2.63214e+07 2.6322e+07 2.63229e+07
|
||||||
2.62824e+07 2.62825e+07 2.62825e+07 2.62824e+07 2.62823e+07 2.6282e+07 2.62816e+07 2.6281e+07 2.62802e+07 2.62799e+07 2.62799e+07 2.62803e+07
|
2.629e+07 2.62909e+07 2.62918e+07 2.62926e+07 2.62933e+07 2.62938e+07 2.62942e+07 2.62944e+07 2.62943e+07 2.62946e+07 2.62951e+07 2.6296e+07
|
||||||
2.62561e+07 2.62561e+07 2.62561e+07 2.6256e+07 2.62559e+07 2.62557e+07 2.62553e+07 2.62547e+07 2.62536e+07 2.62534e+07 2.62534e+07 2.62536e+07
|
2.62637e+07 2.62646e+07 2.62654e+07 2.62662e+07 2.6267e+07 2.62676e+07 2.6268e+07 2.62683e+07 2.62681e+07 2.62682e+07 2.62686e+07 2.62691e+07
|
||||||
2.62298e+07 2.62298e+07 2.62298e+07 2.62297e+07 2.62296e+07 2.62294e+07 2.62292e+07 2.62287e+07 2.62281e+07 2.62281e+07 2.62281e+07 2.62282e+07
|
2.62374e+07 2.62383e+07 2.62392e+07 2.624e+07 2.62408e+07 2.62415e+07 2.62421e+07 2.62426e+07 2.62427e+07 2.62429e+07 2.62432e+07 2.62436e+07
|
||||||
2.62035e+07 2.62035e+07 2.62035e+07 2.62035e+07 2.62034e+07 2.62033e+07 2.62031e+07 2.62029e+07 2.62026e+07 2.62026e+07 2.62026e+07 2.62026e+07
|
2.62112e+07 2.62121e+07 2.62129e+07 2.62138e+07 2.62146e+07 2.62154e+07 2.62162e+07 2.6217e+07 2.62172e+07 2.62175e+07 2.62178e+07 2.62181e+07
|
||||||
2.61773e+07 2.61772e+07 2.61772e+07 2.61772e+07 2.61772e+07 2.61772e+07 2.61772e+07 2.61771e+07 2.6177e+07 2.6177e+07 2.6177e+07 2.61771e+07
|
2.6185e+07 2.61858e+07 2.61867e+07 2.61876e+07 2.61885e+07 2.61895e+07 2.61904e+07 2.61914e+07 2.61917e+07 2.6192e+07 2.61923e+07 2.61926e+07
|
||||||
2.6151e+07 2.6151e+07 2.61509e+07 2.6151e+07 2.6151e+07 2.61511e+07 2.61512e+07 2.61514e+07 2.61515e+07 2.61515e+07 2.61515e+07 2.61515e+07
|
2.61587e+07 2.61596e+07 2.61605e+07 2.61614e+07 2.61624e+07 2.61635e+07 2.61646e+07 2.61658e+07 2.61662e+07 2.61665e+07 2.61668e+07 2.61671e+07
|
||||||
2.61247e+07 2.61246e+07 2.61246e+07 2.61246e+07 2.61247e+07 2.61249e+07 2.61252e+07 2.61257e+07 2.61259e+07 2.6126e+07 2.6126e+07 2.61259e+07
|
2.61325e+07 2.61333e+07 2.61342e+07 2.61351e+07 2.61362e+07 2.61374e+07 2.61387e+07 2.61402e+07 2.61407e+07 2.61411e+07 2.61414e+07 2.61416e+07
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="pressure_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="pressure_gas" NumberOfComponents="1" format="ascii">
|
||||||
2.63137e+07 2.63139e+07 2.63139e+07 2.63139e+07 2.63137e+07 2.63135e+07 2.63131e+07 2.63126e+07 2.63121e+07 2.63118e+07 2.63118e+07 2.63121e+07
|
2.63213e+07 2.63223e+07 2.63232e+07 2.6324e+07 2.63247e+07 2.63252e+07 2.63256e+07 2.63259e+07 2.6326e+07 2.63264e+07 2.6327e+07 2.63279e+07
|
||||||
2.62874e+07 2.62875e+07 2.62875e+07 2.62874e+07 2.62873e+07 2.6287e+07 2.62866e+07 2.6286e+07 2.62852e+07 2.62849e+07 2.62849e+07 2.62853e+07
|
2.6295e+07 2.62959e+07 2.62968e+07 2.62976e+07 2.62983e+07 2.62988e+07 2.62992e+07 2.62994e+07 2.62993e+07 2.62996e+07 2.63001e+07 2.6301e+07
|
||||||
2.62611e+07 2.62611e+07 2.62611e+07 2.6261e+07 2.62609e+07 2.62607e+07 2.62603e+07 2.62597e+07 2.62586e+07 2.62584e+07 2.62584e+07 2.62586e+07
|
2.62687e+07 2.62696e+07 2.62704e+07 2.62712e+07 2.6272e+07 2.62726e+07 2.6273e+07 2.62733e+07 2.62731e+07 2.62732e+07 2.62736e+07 2.62741e+07
|
||||||
2.62348e+07 2.62348e+07 2.62348e+07 2.62347e+07 2.62346e+07 2.62344e+07 2.62342e+07 2.62337e+07 2.62331e+07 2.62331e+07 2.62331e+07 2.62332e+07
|
2.62424e+07 2.62433e+07 2.62442e+07 2.6245e+07 2.62458e+07 2.62465e+07 2.62471e+07 2.62476e+07 2.62477e+07 2.62479e+07 2.62482e+07 2.62486e+07
|
||||||
2.62085e+07 2.62085e+07 2.62085e+07 2.62085e+07 2.62084e+07 2.62083e+07 2.62081e+07 2.62079e+07 2.62076e+07 2.62076e+07 2.62076e+07 2.62076e+07
|
2.62162e+07 2.62171e+07 2.62179e+07 2.62188e+07 2.62196e+07 2.62204e+07 2.62212e+07 2.6222e+07 2.62222e+07 2.62225e+07 2.62228e+07 2.62231e+07
|
||||||
2.61823e+07 2.61822e+07 2.61822e+07 2.61822e+07 2.61822e+07 2.61822e+07 2.61822e+07 2.61821e+07 2.6182e+07 2.6182e+07 2.6182e+07 2.61821e+07
|
2.619e+07 2.61908e+07 2.61917e+07 2.61926e+07 2.61935e+07 2.61945e+07 2.61954e+07 2.61964e+07 2.61967e+07 2.6197e+07 2.61973e+07 2.61976e+07
|
||||||
2.6156e+07 2.6156e+07 2.61559e+07 2.6156e+07 2.6156e+07 2.61561e+07 2.61562e+07 2.61564e+07 2.61565e+07 2.61565e+07 2.61565e+07 2.61565e+07
|
2.61637e+07 2.61646e+07 2.61655e+07 2.61664e+07 2.61674e+07 2.61685e+07 2.61696e+07 2.61708e+07 2.61712e+07 2.61715e+07 2.61718e+07 2.61721e+07
|
||||||
2.61297e+07 2.61296e+07 2.61296e+07 2.61296e+07 2.61297e+07 2.61299e+07 2.61302e+07 2.61307e+07 2.61309e+07 2.6131e+07 2.6131e+07 2.61309e+07
|
2.61375e+07 2.61383e+07 2.61392e+07 2.61401e+07 2.61412e+07 2.61424e+07 2.61437e+07 2.61452e+07 2.61457e+07 2.61461e+07 2.61464e+07 2.61466e+07
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="density_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="density_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33
|
1082.41 1082.41 1082.41 1082.41 1082.41 1082.41 1082.41 1082.41 1082.41 1082.41 1082.41 1082.41
|
||||||
1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32
|
1082.4 1082.4 1082.4 1082.4 1082.4 1082.4 1082.4 1082.4 1082.38 1082.38 1082.38 1082.38
|
||||||
1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1019.16 1019.16 1019.16 1019.16
|
1082.39 1082.39 1082.39 1082.39 1082.39 1082.39 1082.39 1082.37 1019.53 1019.43 1019.45 1019.9
|
||||||
1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1019.15 1019.15 1019.15 1019.15
|
1082.38 1082.38 1082.38 1082.38 1082.38 1082.38 1082.38 1082.34 1019.34 1019.26 1019.26 1019.57
|
||||||
1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1019.14 1019.14 1019.14 1019.14
|
1082.37 1082.37 1082.37 1082.37 1082.37 1082.37 1082.37 1082.31 1019.33 1019.25 1019.25 1019.51
|
||||||
1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1019.13 1019.13 1019.13 1019.13
|
1082.36 1082.36 1082.36 1082.36 1082.36 1082.36 1082.36 1082.29 1019.32 1019.24 1019.24 1019.46
|
||||||
1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1019.12 1019.12 1019.12 1019.12
|
1082.35 1082.35 1082.35 1082.35 1082.35 1082.35 1082.35 1082.27 1019.31 1019.23 1019.23 1019.41
|
||||||
1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1019.11 1019.11 1019.11 1019.11
|
1082.34 1082.34 1082.34 1082.34 1082.34 1082.34 1082.34 1082.24 1019.3 1019.22 1019.22 1019.36
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="density_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="density_gas" NumberOfComponents="1" format="ascii">
|
||||||
969.084 969.084 969.084 969.084 969.084 969.082 969.081 969.079 969.076 969.075 969.075 969.076
|
969.118 969.122 969.126 969.13 969.133 969.135 969.137 969.138 969.139 969.14 969.143 969.147
|
||||||
968.965 968.965 968.965 968.965 968.964 968.963 968.961 968.959 968.955 968.953 968.953 968.955
|
968.999 969.003 969.007 969.011 969.014 969.016 969.018 969.018 968.699 968.7 968.702 968.708
|
||||||
968.846 968.846 968.846 968.846 968.845 968.844 968.843 968.84 527.831 527.827 527.827 527.831
|
968.88 968.884 968.888 968.892 968.895 968.898 968.9 968.581 529.158 528.737 528.848 530.666
|
||||||
968.728 968.728 968.727 968.727 968.727 968.726 968.725 968.722 527.395 527.393 527.393 527.395
|
968.762 968.766 968.77 968.773 968.777 968.78 968.782 968.248 527.957 527.646 527.654 528.908
|
||||||
968.609 968.609 968.609 968.609 968.609 968.608 968.607 968.606 526.958 526.957 526.957 526.958
|
968.644 968.648 968.651 968.655 968.659 968.663 968.665 967.905 527.517 527.21 527.217 528.271
|
||||||
968.491 968.491 968.49 968.49 968.49 968.49 968.49 968.49 526.521 526.52 526.52 526.521
|
968.525 968.529 968.533 968.537 968.541 968.545 968.548 967.641 527.081 526.775 526.781 527.679
|
||||||
968.372 968.372 968.372 968.372 968.372 968.373 968.373 968.374 526.083 526.083 526.084 526.083
|
968.407 968.411 968.415 968.419 968.423 968.428 968.431 967.373 526.645 526.339 526.345 527.087
|
||||||
968.254 968.253 968.253 968.253 968.254 968.255 968.256 968.257 525.646 525.647 525.647 525.646
|
968.289 968.292 968.296 968.301 968.305 968.311 968.314 967.021 526.209 525.905 525.91 526.456
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="saturation_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="saturation_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="saturation_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="saturation_gas" NumberOfComponents="1" format="ascii">
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="relativePerm_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="relativePerm_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="relativePerm_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="relativePerm_gas" NumberOfComponents="1" format="ascii">
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
@@ -95,15 +95,15 @@
|
|||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="temperature" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="temperature" NumberOfComponents="1" format="ascii">
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.233 293.233 293.233 293.233
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.149 393.15 393.15 393.149
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.233 392.856 392.971 392.943 392.453
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.289 393.064 393.15 393.149 392.81
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.348 393.065 393.15 393.15 392.865
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.386 393.066 393.15 393.15 392.907
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.151 293.426 393.066 393.15 393.15 392.95
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.151 293.486 393.066 393.15 393.15 393.003
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_l^Brine" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_liquid^Brine" NumberOfComponents="1" format="ascii">
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_l^CO2" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_liquid^CO2" NumberOfComponents="1" format="ascii">
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
@@ -123,25 +123,25 @@
|
|||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_g^Brine" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_gas^Brine" NumberOfComponents="1" format="ascii">
|
||||||
0.00327802 0.00327803 0.00327803 0.00327803 0.00327802 0.00327802 0.00327801 0.00327801 0.003278 0.00327799 0.00327799 0.003278
|
0.00327814 0.00327816 0.00327817 0.00327818 0.0032782 0.0032782 0.00327821 0.00327822 0.00327822 0.00327823 0.00327824 0.00327825
|
||||||
0.00327762 0.00327762 0.00327762 0.00327762 0.00327762 0.00327761 0.00327761 0.0032776 0.00327759 0.00327759 0.00327759 0.00327759
|
0.00327774 0.00327775 0.00327777 0.00327778 0.00327779 0.0032778 0.00327781 0.00327782 0.00328565 0.00328566 0.00328567 0.00328564
|
||||||
0.00327722 0.00327722 0.00327722 0.00327721 0.00327721 0.00327721 0.0032772 0.0032772 0.0297676 0.0297678 0.0297678 0.0297676
|
0.00327733 0.00327735 0.00327736 0.00327737 0.00327739 0.0032774 0.00327741 0.00328525 0.0296107 0.0296736 0.029658 0.0293922
|
||||||
0.00327681 0.00327681 0.00327681 0.00327681 0.00327681 0.00327681 0.0032768 0.0032768 0.0297621 0.0297621 0.0297621 0.0297621
|
0.00327693 0.00327694 0.00327696 0.00327697 0.00327698 0.00327699 0.00327702 0.00329016 0.0297186 0.0297655 0.0297652 0.0295803
|
||||||
0.00327641 0.00327641 0.00327641 0.00327641 0.0032764 0.0032764 0.0032764 0.0032764 0.0297563 0.0297564 0.0297564 0.0297563
|
0.00327652 0.00327654 0.00327655 0.00327657 0.00327658 0.00327659 0.00327663 0.00329534 0.0297135 0.0297599 0.0297597 0.0296042
|
||||||
0.003276 0.003276 0.003276 0.003276 0.003276 0.003276 0.003276 0.00327601 0.0297505 0.0297506 0.0297506 0.0297505
|
0.00327612 0.00327613 0.00327615 0.00327616 0.00327618 0.00327619 0.00327624 0.00329858 0.0297077 0.0297541 0.029754 0.0296215
|
||||||
0.0032756 0.0032756 0.00327559 0.00327559 0.0032756 0.0032756 0.0032756 0.00327561 0.0297447 0.0297447 0.0297447 0.0297447
|
0.00327572 0.00327573 0.00327574 0.00327576 0.00327578 0.00327579 0.00327585 0.00330191 0.0297019 0.0297483 0.0297483 0.0296388
|
||||||
0.00327519 0.00327519 0.00327519 0.00327519 0.00327519 0.00327519 0.0032752 0.00327522 0.0297389 0.0297389 0.0297389 0.0297389
|
0.00327531 0.00327532 0.00327534 0.00327535 0.00327537 0.00327539 0.00327547 0.00330729 0.0296961 0.0297425 0.0297425 0.0296619
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_g^CO2" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_gas^CO2" NumberOfComponents="1" format="ascii">
|
||||||
0.259414 0.259414 0.259414 0.259414 0.259414 0.259414 0.259414 0.259415 0.259415 0.259415 0.259415 0.259415
|
0.259408 0.259408 0.259407 0.259406 0.259406 0.259406 0.259405 0.259405 0.259405 0.259405 0.259404 0.259404
|
||||||
0.259433 0.259433 0.259433 0.259433 0.259433 0.259433 0.259434 0.259434 0.259435 0.259435 0.259435 0.259435
|
0.259428 0.259427 0.259426 0.259426 0.259425 0.259425 0.259425 0.259425 0.259536 0.259536 0.259536 0.259535
|
||||||
0.259452 0.259452 0.259452 0.259452 0.259452 0.259452 0.259453 0.259453 0.301412 0.301413 0.301413 0.301412
|
0.259447 0.259446 0.259445 0.259445 0.259444 0.259444 0.259444 0.259556 0.301795 0.301617 0.301659 0.302403
|
||||||
0.259471 0.259471 0.259471 0.259471 0.259471 0.259471 0.259472 0.259472 0.301533 0.301534 0.301534 0.301533
|
0.259466 0.259465 0.259464 0.259464 0.259463 0.259463 0.259463 0.25965 0.301596 0.301463 0.301462 0.301982
|
||||||
0.25949 0.25949 0.25949 0.25949 0.25949 0.25949 0.25949 0.259491 0.301655 0.301655 0.301655 0.301655
|
0.259485 0.259484 0.259483 0.259483 0.259482 0.259482 0.259481 0.259749 0.301716 0.301584 0.301583 0.30202
|
||||||
0.259509 0.259509 0.259509 0.259509 0.259509 0.259509 0.259509 0.259509 0.301778 0.301778 0.301777 0.301778
|
0.259503 0.259503 0.259502 0.259502 0.259501 0.2595 0.2595 0.25982 0.301838 0.301706 0.301705 0.302077
|
||||||
0.259528 0.259528 0.259528 0.259528 0.259528 0.259528 0.259528 0.259528 0.3019 0.3019 0.301899 0.3019
|
0.259522 0.259522 0.259521 0.25952 0.25952 0.259519 0.259519 0.259892 0.301959 0.301827 0.301826 0.302133
|
||||||
0.259546 0.259546 0.259546 0.259546 0.259546 0.259546 0.259546 0.259546 0.302022 0.302021 0.302021 0.302022
|
0.259541 0.25954 0.25954 0.259539 0.259538 0.259537 0.259537 0.259993 0.302081 0.301949 0.301948 0.302174
|
||||||
</DataArray>
|
</DataArray>
|
||||||
</CellData>
|
</CellData>
|
||||||
<Points>
|
<Points>
|
||||||
|
|||||||
@@ -2,48 +2,48 @@
|
|||||||
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
|
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
|
||||||
<UnstructuredGrid>
|
<UnstructuredGrid>
|
||||||
<Piece NumberOfCells="96" NumberOfPoints="117">
|
<Piece NumberOfCells="96" NumberOfPoints="117">
|
||||||
<CellData Scalars="pressure_l">
|
<CellData Scalars="pressure_liquid">
|
||||||
<DataArray type="Float32" Name="pressure_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="pressure_liquid" NumberOfComponents="1" format="ascii">
|
||||||
2.63077e+07 2.63082e+07 2.63087e+07 2.6309e+07 2.63093e+07 2.63096e+07 2.63099e+07 2.63103e+07 2.63107e+07 2.63111e+07 2.63116e+07 2.63119e+07
|
2.63242e+07 2.63256e+07 2.63269e+07 2.63282e+07 2.63294e+07 2.63306e+07 2.63317e+07 2.63328e+07 2.63339e+07 2.63349e+07 2.63357e+07 2.63362e+07
|
||||||
2.62811e+07 2.62817e+07 2.62822e+07 2.62826e+07 2.62829e+07 2.62831e+07 2.62834e+07 2.62838e+07 2.62842e+07 2.62848e+07 2.62854e+07 2.62859e+07
|
2.62976e+07 2.62991e+07 2.63005e+07 2.63017e+07 2.63029e+07 2.63041e+07 2.63052e+07 2.63063e+07 2.63074e+07 2.63085e+07 2.63094e+07 2.63102e+07
|
||||||
2.62547e+07 2.62554e+07 2.62558e+07 2.62562e+07 2.62564e+07 2.62567e+07 2.6257e+07 2.62574e+07 2.62579e+07 2.62585e+07 2.62594e+07 2.62608e+07
|
2.62711e+07 2.62727e+07 2.62741e+07 2.62753e+07 2.62765e+07 2.62776e+07 2.62787e+07 2.62798e+07 2.6281e+07 2.62821e+07 2.62834e+07 2.62849e+07
|
||||||
2.62288e+07 2.62293e+07 2.62296e+07 2.62299e+07 2.62301e+07 2.62303e+07 2.62306e+07 2.6231e+07 2.62315e+07 2.62322e+07 2.62333e+07 2.62348e+07
|
2.62452e+07 2.62465e+07 2.62478e+07 2.6249e+07 2.62501e+07 2.62512e+07 2.62523e+07 2.62533e+07 2.62545e+07 2.62557e+07 2.62571e+07 2.62588e+07
|
||||||
2.6203e+07 2.62032e+07 2.62034e+07 2.62036e+07 2.62038e+07 2.6204e+07 2.62042e+07 2.62046e+07 2.62051e+07 2.62058e+07 2.62068e+07 2.62084e+07
|
2.62193e+07 2.62205e+07 2.62216e+07 2.62226e+07 2.62237e+07 2.62247e+07 2.62258e+07 2.62268e+07 2.62279e+07 2.62291e+07 2.62305e+07 2.62322e+07
|
||||||
2.61772e+07 2.61772e+07 2.61773e+07 2.61774e+07 2.61775e+07 2.61776e+07 2.61778e+07 2.61781e+07 2.61786e+07 2.61792e+07 2.618e+07 2.61813e+07
|
2.61935e+07 2.61945e+07 2.61954e+07 2.61964e+07 2.61973e+07 2.61983e+07 2.61992e+07 2.62002e+07 2.62012e+07 2.62023e+07 2.62035e+07 2.6205e+07
|
||||||
2.61514e+07 2.61513e+07 2.61512e+07 2.61511e+07 2.61512e+07 2.61513e+07 2.61514e+07 2.61516e+07 2.6152e+07 2.61524e+07 2.61529e+07 2.61535e+07
|
2.61678e+07 2.61685e+07 2.61693e+07 2.61701e+07 2.61709e+07 2.61718e+07 2.61727e+07 2.61736e+07 2.61745e+07 2.61754e+07 2.61763e+07 2.61769e+07
|
||||||
2.61257e+07 2.61253e+07 2.6125e+07 2.61249e+07 2.61248e+07 2.61249e+07 2.6125e+07 2.61251e+07 2.61254e+07 2.61257e+07 2.6126e+07 2.61263e+07
|
2.6142e+07 2.61425e+07 2.61431e+07 2.61438e+07 2.61445e+07 2.61453e+07 2.61462e+07 2.6147e+07 2.61478e+07 2.61486e+07 2.61492e+07 2.61496e+07
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="pressure_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="pressure_gas" NumberOfComponents="1" format="ascii">
|
||||||
2.63127e+07 2.63132e+07 2.63137e+07 2.6314e+07 2.63143e+07 2.63146e+07 2.63149e+07 2.63153e+07 2.63157e+07 2.63161e+07 2.63166e+07 2.63169e+07
|
2.63292e+07 2.63306e+07 2.63319e+07 2.63332e+07 2.63344e+07 2.63356e+07 2.63367e+07 2.63378e+07 2.63389e+07 2.63399e+07 2.63407e+07 2.63412e+07
|
||||||
2.62861e+07 2.62867e+07 2.62872e+07 2.62876e+07 2.62879e+07 2.62881e+07 2.62884e+07 2.62888e+07 2.62892e+07 2.62898e+07 2.62904e+07 2.62909e+07
|
2.63026e+07 2.63041e+07 2.63055e+07 2.63067e+07 2.63079e+07 2.63091e+07 2.63102e+07 2.63113e+07 2.63124e+07 2.63135e+07 2.63144e+07 2.63152e+07
|
||||||
2.62597e+07 2.62604e+07 2.62608e+07 2.62612e+07 2.62614e+07 2.62617e+07 2.6262e+07 2.62624e+07 2.62629e+07 2.62635e+07 2.62644e+07 2.62658e+07
|
2.62761e+07 2.62777e+07 2.62791e+07 2.62803e+07 2.62815e+07 2.62826e+07 2.62837e+07 2.62848e+07 2.6286e+07 2.62871e+07 2.62884e+07 2.62899e+07
|
||||||
2.62338e+07 2.62343e+07 2.62346e+07 2.62349e+07 2.62351e+07 2.62353e+07 2.62356e+07 2.6236e+07 2.62365e+07 2.62372e+07 2.62383e+07 2.62398e+07
|
2.62502e+07 2.62515e+07 2.62528e+07 2.6254e+07 2.62551e+07 2.62562e+07 2.62573e+07 2.62583e+07 2.62595e+07 2.62607e+07 2.62621e+07 2.62638e+07
|
||||||
2.6208e+07 2.62082e+07 2.62084e+07 2.62086e+07 2.62088e+07 2.6209e+07 2.62092e+07 2.62096e+07 2.62101e+07 2.62108e+07 2.62118e+07 2.62134e+07
|
2.62243e+07 2.62255e+07 2.62266e+07 2.62276e+07 2.62287e+07 2.62297e+07 2.62308e+07 2.62318e+07 2.62329e+07 2.62341e+07 2.62355e+07 2.62372e+07
|
||||||
2.61822e+07 2.61822e+07 2.61823e+07 2.61824e+07 2.61825e+07 2.61826e+07 2.61828e+07 2.61831e+07 2.61836e+07 2.61842e+07 2.6185e+07 2.61863e+07
|
2.61985e+07 2.61995e+07 2.62004e+07 2.62014e+07 2.62023e+07 2.62033e+07 2.62042e+07 2.62052e+07 2.62062e+07 2.62073e+07 2.62085e+07 2.621e+07
|
||||||
2.61564e+07 2.61563e+07 2.61562e+07 2.61561e+07 2.61562e+07 2.61563e+07 2.61564e+07 2.61566e+07 2.6157e+07 2.61574e+07 2.61579e+07 2.61585e+07
|
2.61728e+07 2.61735e+07 2.61743e+07 2.61751e+07 2.61759e+07 2.61768e+07 2.61777e+07 2.61786e+07 2.61795e+07 2.61804e+07 2.61813e+07 2.61819e+07
|
||||||
2.61307e+07 2.61303e+07 2.613e+07 2.61299e+07 2.61298e+07 2.61299e+07 2.613e+07 2.61301e+07 2.61304e+07 2.61307e+07 2.6131e+07 2.61313e+07
|
2.6147e+07 2.61475e+07 2.61481e+07 2.61488e+07 2.61495e+07 2.61503e+07 2.61512e+07 2.6152e+07 2.61528e+07 2.61536e+07 2.61542e+07 2.61546e+07
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="density_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="density_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.34 1082.34 1082.34
|
1082.41 1082.41 1082.41 1082.42 1082.42 1082.42 1082.42 1082.42 1082.42 1082.42 1082.42 1082.42
|
||||||
1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32
|
1082.4 1082.4 1082.4 1082.4 1082.4 1082.41 1082.41 1082.41 1082.41 1082.41 1082.41 1082.42
|
||||||
1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.32
|
1082.37 1082.39 1082.39 1082.39 1082.39 1082.39 1082.39 1082.4 1082.4 1082.4 1082.41 1084.57
|
||||||
1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.31
|
1082.36 1082.38 1082.38 1082.38 1082.38 1082.38 1082.38 1082.38 1082.39 1082.39 1082.4 1084.56
|
||||||
1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29
|
1082.35 1082.37 1082.37 1082.37 1082.37 1082.37 1082.37 1082.37 1082.37 1082.37 1082.39 1084.55
|
||||||
1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28
|
1082.34 1082.36 1082.36 1082.36 1082.36 1082.36 1082.36 1082.36 1082.36 1082.36 1082.37 1084.53
|
||||||
1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1082.27
|
1082.33 1082.35 1082.35 1082.35 1082.35 1082.35 1082.35 1082.35 1082.35 1082.35 1082.35 1082.36
|
||||||
1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.26
|
1082.32 1082.34 1082.34 1082.34 1082.34 1082.34 1082.34 1082.34 1082.34 1082.34 1082.34 1082.34
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="density_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="density_gas" NumberOfComponents="1" format="ascii">
|
||||||
969.079 969.081 969.083 969.085 969.086 969.088 969.089 969.09 969.092 969.094 969.096 969.098
|
969.153 969.159 969.165 969.171 969.176 969.181 969.186 969.191 969.196 969.2 969.204 969.206
|
||||||
968.959 968.962 968.964 968.966 968.967 968.968 968.969 968.971 968.973 968.975 968.978 968.981
|
969.033 969.04 969.046 969.051 969.057 969.062 969.067 969.072 969.077 969.082 969.086 969.086
|
||||||
968.84 968.843 968.845 968.846 968.848 968.849 968.85 968.852 968.854 968.857 968.861 968.865
|
968.595 968.921 968.927 968.932 968.938 968.943 968.948 968.953 968.958 968.963 968.965 967.032
|
||||||
968.723 968.725 968.727 968.728 968.729 968.73 968.731 968.733 968.735 968.738 968.743 968.748
|
968.477 968.802 968.808 968.813 968.818 968.823 968.828 968.833 968.838 968.844 968.846 966.912
|
||||||
968.606 968.608 968.609 968.609 968.61 968.611 968.612 968.614 968.616 968.619 968.624 968.629
|
968.36 968.685 968.69 968.695 968.699 968.704 968.709 968.713 968.718 968.724 968.726 966.791
|
||||||
968.49 968.491 968.491 968.491 968.492 968.492 968.493 968.495 968.496 968.499 968.503 968.507
|
968.243 968.568 968.572 968.576 968.581 968.585 968.589 968.594 968.598 968.603 968.604 966.668
|
||||||
968.374 968.373 968.373 968.373 968.373 968.373 968.374 968.375 968.377 968.378 968.381 968.383
|
968.127 968.451 968.454 968.458 968.462 968.465 968.469 968.474 968.478 968.482 968.485 968.484
|
||||||
968.257 968.256 968.255 968.254 968.254 968.254 968.255 968.256 968.257 968.258 968.259 968.26
|
968.01 968.333 968.336 968.339 968.342 968.346 968.35 968.353 968.357 968.36 968.363 968.365
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="saturation_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="saturation_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="saturation_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="saturation_gas" NumberOfComponents="1" format="ascii">
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="relativePerm_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="relativePerm_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="relativePerm_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="relativePerm_gas" NumberOfComponents="1" format="ascii">
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
@@ -94,54 +94,54 @@
|
|||||||
0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
|
0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="temperature" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="temperature" NumberOfComponents="1" format="ascii">
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.151
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.151
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.151
|
293.233 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.151 293.653
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.151
|
293.233 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.151 293.654
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.151
|
293.233 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.151 293.654
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.233 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.151 293.653
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.233 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.151
|
||||||
|
293.233 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_l^Brine" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_liquid^Brine" NumberOfComponents="1" format="ascii">
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.994995
|
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.994995
|
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.994995
|
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.994995
|
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.994981
|
||||||
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.994978 0.989583
|
||||||
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.994975 0.989583
|
||||||
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.994975 0.989583
|
||||||
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.994979 0.989583
|
||||||
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.994979
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_l^CO2" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_liquid^CO2" NumberOfComponents="1" format="ascii">
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500002
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500005 0.00501858
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500542
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500006 0.00502189 0.0104172
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500542
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500007 0.00502495 0.0104172
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500542
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500007 0.00502472 0.0104173
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500542
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500005 0.00502111 0.0104173
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500006 0.00502117
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.00500004
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_g^Brine" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_gas^Brine" NumberOfComponents="1" format="ascii">
|
||||||
0.00327801 0.00327802 0.00327802 0.00327803 0.00327803 0.00327804 0.00327804 0.00327805 0.00327806 0.00327806 0.00327807 0.00327808
|
0.00327827 0.00327829 0.00327831 0.00327834 0.00327836 0.00327838 0.00327839 0.00327841 0.00327843 0.00327845 0.00327846 0.00327847
|
||||||
0.0032776 0.00327761 0.00327762 0.00327762 0.00327763 0.00327763 0.00327764 0.00327764 0.00327765 0.00327766 0.00327767 0.00327768
|
0.00327787 0.00327789 0.00327791 0.00327793 0.00327795 0.00327797 0.00327799 0.003278 0.00327802 0.00327804 0.00327806 0.00327809
|
||||||
0.0032772 0.0032772 0.00327721 0.00327722 0.00327722 0.00327723 0.00327723 0.00327724 0.00327724 0.00327726 0.00327727 0.00327732
|
0.00328526 0.00327748 0.0032775 0.00327752 0.00327754 0.00327756 0.00327758 0.0032776 0.00327762 0.00327764 0.00327768 0.00330738
|
||||||
0.0032768 0.0032768 0.00327681 0.00327681 0.00327682 0.00327682 0.00327682 0.00327683 0.00327684 0.00327685 0.00327687 0.00327692
|
0.00328488 0.00327708 0.0032771 0.00327712 0.00327714 0.00327716 0.00327717 0.00327719 0.00327721 0.00327723 0.00327728 0.00330699
|
||||||
0.0032764 0.0032764 0.0032764 0.00327641 0.00327641 0.00327641 0.00327642 0.00327642 0.00327643 0.00327644 0.00327646 0.00327652
|
0.00328449 0.00327668 0.0032767 0.00327671 0.00327673 0.00327675 0.00327676 0.00327678 0.0032768 0.00327682 0.00327687 0.00330658
|
||||||
0.00327601 0.003276 0.003276 0.003276 0.003276 0.00327601 0.00327601 0.00327602 0.00327602 0.00327603 0.00327605 0.0032761
|
0.0032841 0.00327628 0.00327629 0.00327631 0.00327632 0.00327634 0.00327636 0.00327637 0.00327639 0.00327641 0.00327645 0.00330613
|
||||||
0.00327561 0.0032756 0.0032756 0.0032756 0.0032756 0.0032756 0.0032756 0.00327561 0.00327561 0.00327562 0.00327563 0.00327564
|
0.0032837 0.00327588 0.00327589 0.0032759 0.00327592 0.00327593 0.00327595 0.00327596 0.00327598 0.00327599 0.00327601 0.00327604
|
||||||
0.00327522 0.0032752 0.00327519 0.00327519 0.00327519 0.00327519 0.00327519 0.0032752 0.0032752 0.00327521 0.00327521 0.00327521
|
0.00328331 0.00327548 0.00327548 0.0032755 0.00327551 0.00327552 0.00327554 0.00327555 0.00327556 0.00327558 0.00327559 0.00327559
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_g^CO2" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_gas^CO2" NumberOfComponents="1" format="ascii">
|
||||||
0.259415 0.259414 0.259414 0.259414 0.259413 0.259413 0.259413 0.259413 0.259413 0.259412 0.259412 0.259412
|
0.259403 0.259402 0.259401 0.2594 0.259399 0.259398 0.259397 0.259397 0.259396 0.259395 0.259395 0.259395
|
||||||
0.259434 0.259434 0.259433 0.259433 0.259433 0.259433 0.259432 0.259432 0.259432 0.259431 0.259431 0.259431
|
0.259422 0.259421 0.25942 0.259419 0.259418 0.259417 0.259417 0.259416 0.259415 0.259414 0.259416 0.260378
|
||||||
0.259453 0.259453 0.259452 0.259452 0.259452 0.259452 0.259451 0.259451 0.259451 0.25945 0.25945 0.259731
|
0.259553 0.25944 0.259439 0.259438 0.259438 0.259437 0.259436 0.259435 0.259434 0.259437 0.26057 0.54193
|
||||||
0.259472 0.259472 0.259471 0.259471 0.259471 0.259471 0.259471 0.25947 0.25947 0.259469 0.259469 0.25975
|
0.259572 0.259459 0.259458 0.259457 0.259457 0.259456 0.259455 0.259454 0.259454 0.259456 0.260748 0.541974
|
||||||
0.259491 0.25949 0.25949 0.25949 0.25949 0.25949 0.25949 0.259489 0.259489 0.259488 0.259488 0.259769
|
0.259591 0.259478 0.259477 0.259476 0.259476 0.259475 0.259474 0.259474 0.259473 0.259476 0.260755 0.542017
|
||||||
0.259509 0.259509 0.259509 0.259509 0.259509 0.259509 0.259508 0.259508 0.259508 0.259508 0.259507 0.259788
|
0.25961 0.259497 0.259496 0.259495 0.259495 0.259494 0.259493 0.259493 0.259492 0.259494 0.260587 0.542061
|
||||||
0.259528 0.259527 0.259528 0.259528 0.259528 0.259527 0.259527 0.259527 0.259527 0.259527 0.259526 0.259526
|
0.259628 0.259515 0.259515 0.259514 0.259514 0.259513 0.259512 0.259512 0.259511 0.25951 0.259513 0.260609
|
||||||
0.259546 0.259546 0.259546 0.259546 0.259546 0.259546 0.259546 0.259546 0.259546 0.259546 0.259545 0.259545
|
0.259647 0.259534 0.259533 0.259533 0.259532 0.259532 0.259531 0.259531 0.25953 0.25953 0.259529 0.259531
|
||||||
</DataArray>
|
</DataArray>
|
||||||
</CellData>
|
</CellData>
|
||||||
<Points>
|
<Points>
|
||||||
|
|||||||
@@ -2,48 +2,48 @@
|
|||||||
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
|
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
|
||||||
<UnstructuredGrid>
|
<UnstructuredGrid>
|
||||||
<Piece NumberOfCells="96" NumberOfPoints="117">
|
<Piece NumberOfCells="96" NumberOfPoints="117">
|
||||||
<CellData Scalars="pressure_l">
|
<CellData Scalars="pressure_liquid">
|
||||||
<DataArray type="Float32" Name="pressure_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="pressure_liquid" NumberOfComponents="1" format="ascii">
|
||||||
2.60984e+07 2.60983e+07 2.60982e+07 2.60983e+07 2.60984e+07 2.60986e+07 2.60991e+07 2.60999e+07 2.61004e+07 2.61006e+07 2.61006e+07 2.61004e+07
|
2.61061e+07 2.61069e+07 2.61078e+07 2.61088e+07 2.61099e+07 2.61112e+07 2.61126e+07 2.61145e+07 2.61153e+07 2.61158e+07 2.61161e+07 2.61162e+07
|
||||||
2.60722e+07 2.60721e+07 2.60721e+07 2.60721e+07 2.60722e+07 2.60724e+07 2.60728e+07 2.60736e+07 2.60741e+07 2.60743e+07 2.60743e+07 2.60741e+07
|
2.60799e+07 2.60807e+07 2.60817e+07 2.60827e+07 2.60839e+07 2.60852e+07 2.60868e+07 2.60887e+07 2.60895e+07 2.609e+07 2.60904e+07 2.60905e+07
|
||||||
2.60461e+07 2.60461e+07 2.60461e+07 2.60461e+07 2.60461e+07 2.60462e+07 2.60465e+07 2.6047e+07 2.60473e+07 2.60474e+07 2.60474e+07 2.60473e+07
|
2.60538e+07 2.60547e+07 2.60558e+07 2.60569e+07 2.60581e+07 2.60595e+07 2.60611e+07 2.60629e+07 2.60635e+07 2.60639e+07 2.60643e+07 2.60644e+07
|
||||||
2.602e+07 2.60199e+07 2.60199e+07 2.60199e+07 2.602e+07 2.602e+07 2.60202e+07 2.60205e+07 2.60208e+07 2.60209e+07 2.60209e+07 2.60208e+07
|
2.60276e+07 2.60287e+07 2.60297e+07 2.60309e+07 2.60322e+07 2.60337e+07 2.60353e+07 2.6037e+07 2.60376e+07 2.6038e+07 2.60383e+07 2.60385e+07
|
||||||
2.59938e+07 2.59937e+07 2.59937e+07 2.59937e+07 2.59938e+07 2.59938e+07 2.59939e+07 2.59943e+07 2.59945e+07 2.59947e+07 2.59947e+07 2.59945e+07
|
2.60014e+07 2.60025e+07 2.60036e+07 2.60048e+07 2.60062e+07 2.60077e+07 2.60093e+07 2.60112e+07 2.60117e+07 2.60123e+07 2.60126e+07 2.60127e+07
|
||||||
2.59675e+07 2.59675e+07 2.59675e+07 2.59675e+07 2.59675e+07 2.59676e+07 2.59677e+07 2.59682e+07 2.59686e+07 2.59688e+07 2.59688e+07 2.59686e+07
|
2.59752e+07 2.59763e+07 2.59774e+07 2.59786e+07 2.598e+07 2.59815e+07 2.59832e+07 2.59852e+07 2.5986e+07 2.59867e+07 2.5987e+07 2.59871e+07
|
||||||
2.59413e+07 2.59412e+07 2.59412e+07 2.59412e+07 2.59412e+07 2.59413e+07 2.59414e+07 2.59417e+07 2.59423e+07 2.59426e+07 2.59426e+07 2.59423e+07
|
2.59489e+07 2.595e+07 2.59511e+07 2.59523e+07 2.59537e+07 2.59551e+07 2.59567e+07 2.59584e+07 2.59599e+07 2.59607e+07 2.59611e+07 2.59611e+07
|
||||||
2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59151e+07 2.59153e+07 2.59154e+07 2.59154e+07 2.59153e+07
|
2.59226e+07 2.59236e+07 2.59247e+07 2.59259e+07 2.59272e+07 2.59287e+07 2.59301e+07 2.59316e+07 2.59329e+07 2.59337e+07 2.59342e+07 2.59342e+07
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="pressure_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="pressure_gas" NumberOfComponents="1" format="ascii">
|
||||||
2.61034e+07 2.61033e+07 2.61032e+07 2.61033e+07 2.61034e+07 2.61036e+07 2.61041e+07 2.61049e+07 2.61054e+07 2.61056e+07 2.61056e+07 2.61054e+07
|
2.61111e+07 2.61119e+07 2.61128e+07 2.61138e+07 2.61149e+07 2.61162e+07 2.61176e+07 2.61195e+07 2.61203e+07 2.61208e+07 2.61211e+07 2.61212e+07
|
||||||
2.60822e+07 2.60821e+07 2.60821e+07 2.60821e+07 2.60822e+07 2.60824e+07 2.60828e+07 2.60836e+07 2.60841e+07 2.60843e+07 2.60843e+07 2.60841e+07
|
2.60899e+07 2.60907e+07 2.60917e+07 2.60927e+07 2.60939e+07 2.60952e+07 2.60968e+07 2.60987e+07 2.60995e+07 2.61e+07 2.61004e+07 2.61005e+07
|
||||||
2.60561e+07 2.60561e+07 2.60561e+07 2.60561e+07 2.60561e+07 2.60562e+07 2.60565e+07 2.6057e+07 2.60573e+07 2.60574e+07 2.60574e+07 2.60573e+07
|
2.60638e+07 2.60647e+07 2.60658e+07 2.60669e+07 2.60681e+07 2.60695e+07 2.60711e+07 2.60729e+07 2.60735e+07 2.60739e+07 2.60743e+07 2.60744e+07
|
||||||
2.603e+07 2.60299e+07 2.60299e+07 2.60299e+07 2.603e+07 2.603e+07 2.60302e+07 2.60305e+07 2.60308e+07 2.60309e+07 2.60309e+07 2.60308e+07
|
2.60376e+07 2.60387e+07 2.60397e+07 2.60409e+07 2.60422e+07 2.60437e+07 2.60453e+07 2.6047e+07 2.60476e+07 2.6048e+07 2.60483e+07 2.60485e+07
|
||||||
2.60038e+07 2.60037e+07 2.60037e+07 2.60037e+07 2.60038e+07 2.60038e+07 2.60039e+07 2.60043e+07 2.60045e+07 2.60047e+07 2.60047e+07 2.60045e+07
|
2.60114e+07 2.60125e+07 2.60136e+07 2.60148e+07 2.60162e+07 2.60177e+07 2.60193e+07 2.60212e+07 2.60217e+07 2.60223e+07 2.60226e+07 2.60227e+07
|
||||||
2.59775e+07 2.59775e+07 2.59775e+07 2.59775e+07 2.59775e+07 2.59776e+07 2.59777e+07 2.59782e+07 2.59786e+07 2.59788e+07 2.59788e+07 2.59786e+07
|
2.59852e+07 2.59863e+07 2.59874e+07 2.59886e+07 2.599e+07 2.59915e+07 2.59932e+07 2.59952e+07 2.5996e+07 2.59967e+07 2.5997e+07 2.59971e+07
|
||||||
2.59513e+07 2.59512e+07 2.59512e+07 2.59512e+07 2.59512e+07 2.59513e+07 2.59514e+07 2.59517e+07 2.59523e+07 2.59526e+07 2.59526e+07 2.59523e+07
|
2.59589e+07 2.596e+07 2.59611e+07 2.59623e+07 2.59637e+07 2.59651e+07 2.59667e+07 2.59684e+07 2.59699e+07 2.59707e+07 2.59711e+07 2.59711e+07
|
||||||
2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59251e+07 2.59253e+07 2.59254e+07 2.59254e+07 2.59253e+07
|
2.59326e+07 2.59336e+07 2.59347e+07 2.59359e+07 2.59372e+07 2.59387e+07 2.59401e+07 2.59416e+07 2.59429e+07 2.59437e+07 2.59442e+07 2.59442e+07
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="density_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="density_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1019.1 1019.1 1019.1 1019.1
|
1082.32 1082.32 1082.33 1082.33 1082.33 1082.33 1082.33 1082.19 1019.29 1019.21 1019.21 1019.29
|
||||||
1082.24 1082.24 1082.24 1082.24 1082.24 1082.24 1082.24 1082.24 1019.09 1019.09 1019.09 1019.09
|
1082.31 1082.31 1082.31 1082.31 1082.32 1082.32 1082.32 1082.28 1019.28 1019.21 1019.21 1019.28
|
||||||
1082.22 1082.22 1082.22 1082.22 1082.22 1082.22 1082.22 1082.23 1019.08 1019.08 1019.08 1019.08
|
1082.3 1082.3 1082.3 1082.3 1082.3 1082.31 1082.31 1082.27 1019.27 1019.2 1019.2 1019.27
|
||||||
1082.21 1082.21 1082.21 1082.21 1082.21 1082.21 1082.21 1082.21 1019.07 1019.07 1019.07 1019.07
|
1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.3 1082.26 1019.26 1019.19 1019.19 1019.27
|
||||||
1082.2 1082.2 1082.2 1082.2 1082.2 1082.2 1082.2 1082.2 1019.06 1019.06 1019.06 1019.06
|
1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.25 1019.25 1019.18 1019.18 1019.26
|
||||||
1082.19 1082.19 1082.19 1082.19 1082.19 1082.19 1082.19 1082.19 1019.05 1019.05 1019.05 1019.05
|
1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1082.27 1082.24 1019.32 1019.25 1019.25 1019.32
|
||||||
1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18
|
1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.26 1082.24 1082.24 1082.24 1082.24
|
||||||
1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17
|
1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="density_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="density_gas" NumberOfComponents="1" format="ascii">
|
||||||
968.134 968.134 968.133 968.134 968.134 968.135 968.137 968.14 525.206 525.209 525.209 525.206
|
968.169 968.173 968.177 968.181 968.186 968.192 968.194 966.307 525.773 525.471 525.476 525.791
|
||||||
968.038 968.038 968.037 968.038 968.038 968.039 968.041 968.044 524.838 524.842 524.842 524.838
|
968.073 968.077 968.081 968.086 968.091 968.097 968.104 967.63 525.415 525.112 525.118 525.431
|
||||||
967.92 967.919 967.919 967.919 967.92 967.92 967.921 967.923 524.374 524.377 524.377 524.374
|
967.954 967.959 967.963 967.968 967.974 967.98 967.987 967.562 524.965 524.661 524.666 524.985
|
||||||
967.801 967.801 967.801 967.801 967.801 967.801 967.802 967.803 523.916 523.918 523.918 523.916
|
967.836 967.84 967.845 967.85 967.856 967.863 967.87 967.451 524.517 524.213 524.218 524.539
|
||||||
967.682 967.682 967.682 967.682 967.682 967.682 967.683 967.684 523.462 523.464 523.464 523.462
|
967.717 967.721 967.726 967.732 967.738 967.745 967.752 967.321 524.07 523.767 523.773 524.088
|
||||||
967.563 967.563 967.562 967.562 967.563 967.563 967.563 967.565 523.014 523.017 523.017 523.014
|
967.597 967.602 967.607 967.613 967.619 967.626 967.633 967.145 523.938 523.637 523.643 523.956
|
||||||
967.443 967.443 967.443 967.443 967.443 967.443 967.444 967.445 967.448 967.449 967.449 967.448
|
967.478 967.483 967.488 967.493 967.499 967.506 967.513 967.52 967.129 967.16 967.167 967.16
|
||||||
967.324 967.323 967.323 967.323 967.323 967.323 967.324 967.324 967.326 967.326 967.326 967.326
|
967.359 967.363 967.368 967.373 967.379 967.386 967.392 967.399 967.405 967.408 967.41 967.411
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="saturation_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="saturation_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="saturation_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="saturation_gas" NumberOfComponents="1" format="ascii">
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="relativePerm_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="relativePerm_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="relativePerm_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="relativePerm_gas" NumberOfComponents="1" format="ascii">
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
@@ -94,16 +94,16 @@
|
|||||||
0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
|
0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="temperature" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="temperature" NumberOfComponents="1" format="ascii">
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.151 293.64 393.066 393.15 393.15 393.065
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.275 393.066 393.15 393.15 393.066
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.262 393.066 393.15 393.15 393.064
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.26 393.066 393.15 393.15 393.064
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.264 393.065 393.15 393.15 393.065
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 393.15 393.15 393.15 393.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.278 392.981 393.066 393.066 392.981
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.253 293.246 293.244 293.246
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_l^Brine" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_liquid^Brine" NumberOfComponents="1" format="ascii">
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_l^CO2" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_liquid^CO2" NumberOfComponents="1" format="ascii">
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
@@ -123,25 +123,25 @@
|
|||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_g^Brine" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_gas^Brine" NumberOfComponents="1" format="ascii">
|
||||||
0.00327478 0.00327478 0.00327478 0.00327478 0.00327478 0.00327479 0.00327479 0.00327484 0.029733 0.0297331 0.0297331 0.029733
|
0.0032749 0.00327492 0.00327493 0.00327495 0.00327497 0.00327499 0.00327512 0.00332156 0.0296904 0.0297367 0.0297368 0.0296904
|
||||||
0.00327375 0.00327375 0.00327375 0.00327375 0.00327375 0.00327375 0.00327376 0.00327378 0.0297213 0.0297214 0.0297214 0.0297213
|
0.00327387 0.00327388 0.0032739 0.00327392 0.00327394 0.00327396 0.00327399 0.0032858 0.0296786 0.0297252 0.0297252 0.0296788
|
||||||
0.00327335 0.00327335 0.00327335 0.00327335 0.00327335 0.00327335 0.00327335 0.00327337 0.0297151 0.0297152 0.0297152 0.0297151
|
0.00327347 0.00327348 0.0032735 0.00327352 0.00327354 0.00327356 0.00327359 0.0032842 0.0296726 0.0297192 0.0297192 0.0296722
|
||||||
0.00327294 0.00327294 0.00327294 0.00327294 0.00327294 0.00327294 0.00327294 0.00327296 0.029709 0.0297091 0.0297091 0.029709
|
0.00327306 0.00327308 0.0032731 0.00327312 0.00327314 0.00327316 0.00327319 0.00328361 0.0296667 0.0297132 0.0297133 0.0296659
|
||||||
0.00327253 0.00327253 0.00327253 0.00327253 0.00327253 0.00327254 0.00327254 0.00327255 0.029703 0.0297031 0.0297031 0.029703
|
0.00327265 0.00327267 0.00327269 0.00327271 0.00327273 0.00327276 0.00327279 0.00328352 0.0296607 0.0297073 0.0297073 0.0296608
|
||||||
0.00327213 0.00327213 0.00327213 0.00327213 0.00327213 0.00327213 0.00327213 0.00327215 0.029697 0.0296971 0.0296971 0.029697
|
0.00327225 0.00327226 0.00327228 0.0032723 0.00327233 0.00327235 0.00327239 0.00328451 0.0296085 0.029655 0.0296551 0.0296088
|
||||||
0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327175 0.00327175 0.00327175 0.00327175
|
0.00327184 0.00327185 0.00327187 0.00327189 0.00327192 0.00327194 0.00327197 0.00327201 0.0032817 0.00328106 0.00328094 0.00328112
|
||||||
0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327132 0.00327132 0.00327131
|
0.00327143 0.00327144 0.00327146 0.00327148 0.0032715 0.00327153 0.00327155 0.00327158 0.0032716 0.00327162 0.00327162 0.00327163
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_g^CO2" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_gas^CO2" NumberOfComponents="1" format="ascii">
|
||||||
0.259566 0.259566 0.259566 0.259566 0.259566 0.259566 0.259565 0.259565 0.302146 0.302145 0.302145 0.302146
|
0.25956 0.25956 0.259559 0.259558 0.259557 0.259557 0.259557 0.260221 0.302203 0.302071 0.302069 0.302199
|
||||||
0.259535 0.259535 0.259535 0.259535 0.259535 0.259535 0.259535 0.259534 0.302216 0.302215 0.302215 0.302216
|
0.25953 0.259529 0.259528 0.259528 0.259527 0.259526 0.259525 0.259693 0.302271 0.302138 0.302136 0.302266
|
||||||
0.259554 0.259554 0.259554 0.259554 0.259554 0.259554 0.259554 0.259554 0.302346 0.302345 0.302345 0.302346
|
0.259549 0.259548 0.259547 0.259547 0.259546 0.259545 0.259544 0.259694 0.302397 0.302265 0.302263 0.302395
|
||||||
0.259573 0.259573 0.259573 0.259573 0.259573 0.259573 0.259573 0.259573 0.302475 0.302474 0.302474 0.302475
|
0.259568 0.259567 0.259566 0.259566 0.259565 0.259564 0.259562 0.259711 0.302523 0.302391 0.302389 0.302522
|
||||||
0.259592 0.259592 0.259592 0.259592 0.259592 0.259592 0.259592 0.259592 0.302602 0.302601 0.302601 0.302602
|
0.259587 0.259586 0.259585 0.259584 0.259583 0.259582 0.259581 0.259734 0.302649 0.302516 0.302514 0.302644
|
||||||
0.259611 0.259611 0.259611 0.259611 0.259611 0.259611 0.259611 0.259611 0.302728 0.302727 0.302727 0.302728
|
0.259606 0.259605 0.259604 0.259603 0.259602 0.259601 0.2596 0.259773 0.302903 0.30277 0.302768 0.302898
|
||||||
0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963
|
0.259625 0.259624 0.259623 0.259622 0.259621 0.25962 0.259619 0.259618 0.259757 0.259747 0.259744 0.259747
|
||||||
0.259649 0.25965 0.25965 0.25965 0.25965 0.25965 0.259649 0.259649 0.259649 0.259649 0.259649 0.259649
|
0.259644 0.259643 0.259642 0.259641 0.25964 0.259639 0.259638 0.259637 0.259637 0.259636 0.259636 0.259636
|
||||||
</DataArray>
|
</DataArray>
|
||||||
</CellData>
|
</CellData>
|
||||||
<Points>
|
<Points>
|
||||||
|
|||||||
@@ -2,48 +2,48 @@
|
|||||||
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
|
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
|
||||||
<UnstructuredGrid>
|
<UnstructuredGrid>
|
||||||
<Piece NumberOfCells="96" NumberOfPoints="117">
|
<Piece NumberOfCells="96" NumberOfPoints="117">
|
||||||
<CellData Scalars="pressure_l">
|
<CellData Scalars="pressure_liquid">
|
||||||
<DataArray type="Float32" Name="pressure_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="pressure_liquid" NumberOfComponents="1" format="ascii">
|
||||||
2.60999e+07 2.60991e+07 2.60987e+07 2.60985e+07 2.60984e+07 2.60984e+07 2.60985e+07 2.60986e+07 2.60988e+07 2.60991e+07 2.60993e+07 2.60994e+07
|
2.61161e+07 2.61163e+07 2.61168e+07 2.61174e+07 2.61181e+07 2.61188e+07 2.61196e+07 2.61204e+07 2.61212e+07 2.61218e+07 2.61224e+07 2.61227e+07
|
||||||
2.60736e+07 2.60728e+07 2.60724e+07 2.60722e+07 2.60722e+07 2.60722e+07 2.60722e+07 2.60723e+07 2.60724e+07 2.60725e+07 2.60726e+07 2.60726e+07
|
2.60903e+07 2.60903e+07 2.60907e+07 2.60912e+07 2.60918e+07 2.60924e+07 2.60931e+07 2.60938e+07 2.60944e+07 2.6095e+07 2.60954e+07 2.60957e+07
|
||||||
2.6047e+07 2.60465e+07 2.60462e+07 2.60461e+07 2.60461e+07 2.60461e+07 2.60461e+07 2.60461e+07 2.60462e+07 2.60462e+07 2.60462e+07 2.60462e+07
|
2.60645e+07 2.60646e+07 2.60648e+07 2.60651e+07 2.60656e+07 2.60661e+07 2.60666e+07 2.60671e+07 2.60676e+07 2.6068e+07 2.60684e+07 2.60685e+07
|
||||||
2.60205e+07 2.60202e+07 2.602e+07 2.602e+07 2.602e+07 2.60199e+07 2.60199e+07 2.602e+07 2.602e+07 2.602e+07 2.602e+07 2.602e+07
|
2.60386e+07 2.60386e+07 2.60388e+07 2.6039e+07 2.60393e+07 2.60397e+07 2.60401e+07 2.60405e+07 2.60409e+07 2.60412e+07 2.60415e+07 2.60416e+07
|
||||||
2.59943e+07 2.59939e+07 2.59938e+07 2.59938e+07 2.59937e+07 2.59937e+07 2.59937e+07 2.59937e+07 2.59937e+07 2.59937e+07 2.59938e+07 2.59938e+07
|
2.60127e+07 2.60127e+07 2.60127e+07 2.60128e+07 2.6013e+07 2.60133e+07 2.60136e+07 2.60139e+07 2.60142e+07 2.60145e+07 2.60146e+07 2.60147e+07
|
||||||
2.59682e+07 2.59677e+07 2.59676e+07 2.59675e+07 2.59675e+07 2.59675e+07 2.59675e+07 2.59675e+07 2.59675e+07 2.59675e+07 2.59675e+07 2.59675e+07
|
2.59869e+07 2.59866e+07 2.59865e+07 2.59865e+07 2.59867e+07 2.59869e+07 2.59871e+07 2.59874e+07 2.59876e+07 2.59878e+07 2.59879e+07 2.5988e+07
|
||||||
2.59417e+07 2.59414e+07 2.59413e+07 2.59412e+07 2.59412e+07 2.59412e+07 2.59412e+07 2.59412e+07 2.59412e+07 2.59412e+07 2.59412e+07 2.59412e+07
|
2.59606e+07 2.59603e+07 2.59602e+07 2.59602e+07 2.59603e+07 2.59604e+07 2.59606e+07 2.59608e+07 2.5961e+07 2.59612e+07 2.59613e+07 2.59613e+07
|
||||||
2.59151e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07 2.59149e+07
|
2.5934e+07 2.59338e+07 2.59337e+07 2.59337e+07 2.59338e+07 2.59339e+07 2.59341e+07 2.59342e+07 2.59344e+07 2.59346e+07 2.59347e+07 2.59347e+07
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="pressure_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="pressure_gas" NumberOfComponents="1" format="ascii">
|
||||||
2.61049e+07 2.61041e+07 2.61037e+07 2.61035e+07 2.61034e+07 2.61034e+07 2.61035e+07 2.61036e+07 2.61038e+07 2.61041e+07 2.61043e+07 2.61044e+07
|
2.61211e+07 2.61213e+07 2.61218e+07 2.61224e+07 2.61231e+07 2.61238e+07 2.61246e+07 2.61254e+07 2.61262e+07 2.61268e+07 2.61274e+07 2.61277e+07
|
||||||
2.60836e+07 2.60828e+07 2.60824e+07 2.60822e+07 2.60822e+07 2.60822e+07 2.60822e+07 2.60823e+07 2.60824e+07 2.60825e+07 2.60826e+07 2.60826e+07
|
2.61003e+07 2.61003e+07 2.61007e+07 2.61012e+07 2.61018e+07 2.61024e+07 2.61031e+07 2.61038e+07 2.61044e+07 2.6105e+07 2.61054e+07 2.61057e+07
|
||||||
2.6057e+07 2.60565e+07 2.60562e+07 2.60561e+07 2.60561e+07 2.60561e+07 2.60561e+07 2.60561e+07 2.60562e+07 2.60562e+07 2.60562e+07 2.60562e+07
|
2.60745e+07 2.60746e+07 2.60748e+07 2.60751e+07 2.60756e+07 2.60761e+07 2.60766e+07 2.60771e+07 2.60776e+07 2.6078e+07 2.60784e+07 2.60785e+07
|
||||||
2.60305e+07 2.60302e+07 2.603e+07 2.603e+07 2.603e+07 2.60299e+07 2.60299e+07 2.603e+07 2.603e+07 2.603e+07 2.603e+07 2.603e+07
|
2.60486e+07 2.60486e+07 2.60488e+07 2.6049e+07 2.60493e+07 2.60497e+07 2.60501e+07 2.60505e+07 2.60509e+07 2.60512e+07 2.60515e+07 2.60516e+07
|
||||||
2.60043e+07 2.60039e+07 2.60038e+07 2.60038e+07 2.60037e+07 2.60037e+07 2.60037e+07 2.60037e+07 2.60037e+07 2.60037e+07 2.60038e+07 2.60038e+07
|
2.60227e+07 2.60227e+07 2.60227e+07 2.60228e+07 2.6023e+07 2.60233e+07 2.60236e+07 2.60239e+07 2.60242e+07 2.60245e+07 2.60246e+07 2.60247e+07
|
||||||
2.59782e+07 2.59777e+07 2.59776e+07 2.59775e+07 2.59775e+07 2.59775e+07 2.59775e+07 2.59775e+07 2.59775e+07 2.59775e+07 2.59775e+07 2.59775e+07
|
2.59969e+07 2.59966e+07 2.59965e+07 2.59965e+07 2.59967e+07 2.59969e+07 2.59971e+07 2.59974e+07 2.59976e+07 2.59978e+07 2.59979e+07 2.5998e+07
|
||||||
2.59517e+07 2.59514e+07 2.59513e+07 2.59512e+07 2.59512e+07 2.59512e+07 2.59512e+07 2.59512e+07 2.59512e+07 2.59512e+07 2.59512e+07 2.59512e+07
|
2.59706e+07 2.59703e+07 2.59702e+07 2.59702e+07 2.59703e+07 2.59704e+07 2.59706e+07 2.59708e+07 2.5971e+07 2.59712e+07 2.59713e+07 2.59713e+07
|
||||||
2.59251e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07 2.59249e+07
|
2.5944e+07 2.59438e+07 2.59437e+07 2.59437e+07 2.59438e+07 2.59439e+07 2.59441e+07 2.59442e+07 2.59444e+07 2.59446e+07 2.59447e+07 2.59447e+07
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="density_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="density_liquid" NumberOfComponents="1" format="ascii">
|
||||||
|
1082.29 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33 1082.33
|
||||||
|
1082.29 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32 1082.32
|
||||||
|
1082.28 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31 1082.31
|
||||||
|
1082.27 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3 1082.3
|
||||||
|
1082.26 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29 1082.29
|
||||||
|
1082.25 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28 1082.28
|
||||||
|
1082.27 1082.26 1082.26 1082.26 1082.26 1082.26 1082.27 1082.27 1082.27 1082.27 1082.27 1082.27
|
||||||
1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25
|
1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25 1082.25
|
||||||
1082.24 1082.24 1082.24 1082.24 1082.24 1082.24 1082.24 1082.24 1082.24 1082.24 1082.24 1082.24
|
|
||||||
1082.23 1082.22 1082.22 1082.22 1082.22 1082.22 1082.22 1082.22 1082.22 1082.22 1082.22 1082.22
|
|
||||||
1082.21 1082.21 1082.21 1082.21 1082.21 1082.21 1082.21 1082.21 1082.21 1082.21 1082.21 1082.21
|
|
||||||
1082.2 1082.2 1082.2 1082.2 1082.2 1082.2 1082.2 1082.2 1082.2 1082.2 1082.2 1082.2
|
|
||||||
1082.19 1082.19 1082.19 1082.19 1082.19 1082.19 1082.19 1082.19 1082.19 1082.19 1082.19 1082.19
|
|
||||||
1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18 1082.18
|
|
||||||
1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17 1082.17
|
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="density_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="density_gas" NumberOfComponents="1" format="ascii">
|
||||||
968.14 968.137 968.136 968.135 968.134 968.134 968.135 968.135 968.136 968.137 968.138 968.139
|
967.656 968.215 968.217 968.22 968.223 968.227 968.23 968.234 968.237 968.24 968.242 968.244
|
||||||
968.044 968.041 968.039 968.038 968.038 968.038 968.038 968.038 968.039 968.039 968.04 968.04
|
967.763 968.12 968.121 968.124 968.126 968.129 968.132 968.135 968.138 968.141 968.143 968.144
|
||||||
967.923 967.921 967.92 967.92 967.919 967.919 967.919 967.92 967.92 967.92 967.92 967.92
|
967.679 968.003 968.004 968.005 968.007 968.01 968.012 968.014 968.017 968.018 968.02 968.021
|
||||||
967.803 967.802 967.801 967.801 967.801 967.801 967.801 967.801 967.801 967.801 967.801 967.801
|
967.562 967.885 967.886 967.887 967.888 967.89 967.892 967.893 967.895 967.897 967.898 967.898
|
||||||
967.684 967.683 967.682 967.682 967.682 967.682 967.682 967.682 967.682 967.682 967.682 967.682
|
967.442 967.767 967.767 967.768 967.769 967.77 967.771 967.773 967.774 967.775 967.776 967.776
|
||||||
967.565 967.563 967.563 967.563 967.562 967.562 967.562 967.562 967.562 967.562 967.562 967.562
|
967.28 967.648 967.648 967.648 967.649 967.65 967.651 967.652 967.653 967.654 967.655 967.655
|
||||||
967.445 967.444 967.443 967.443 967.443 967.443 967.443 967.443 967.443 967.443 967.443 967.443
|
967.53 967.529 967.529 967.529 967.529 967.53 967.531 967.531 967.532 967.533 967.534 967.534
|
||||||
967.324 967.324 967.323 967.323 967.323 967.323 967.323 967.323 967.323 967.323 967.323 967.323
|
967.41 967.409 967.409 967.409 967.409 967.409 967.41 967.411 967.412 967.412 967.413 967.413
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="saturation_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="saturation_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="saturation_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="saturation_gas" NumberOfComponents="1" format="ascii">
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="relativePerm_l" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="relativePerm_liquid" NumberOfComponents="1" format="ascii">
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="relativePerm_g" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="relativePerm_gas" NumberOfComponents="1" format="ascii">
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0
|
0 0 0 0 0 0 0 0 0 0 0 0
|
||||||
@@ -94,16 +94,16 @@
|
|||||||
0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
|
0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="temperature" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="temperature" NumberOfComponents="1" format="ascii">
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.294 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.242 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.234 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.234 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.234 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.246 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15 293.15
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_l^Brine" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_liquid^Brine" NumberOfComponents="1" format="ascii">
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995 0.995
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_l^CO2" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_liquid^CO2" NumberOfComponents="1" format="ascii">
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
@@ -123,25 +123,25 @@
|
|||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.005
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_g^Brine" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_gas^Brine" NumberOfComponents="1" format="ascii">
|
||||||
0.00327484 0.00327479 0.00327479 0.00327478 0.00327478 0.00327478 0.00327478 0.00327479 0.00327479 0.00327479 0.0032748 0.0032748
|
0.00328871 0.00327508 0.00327508 0.00327509 0.0032751 0.00327511 0.00327513 0.00327514 0.00327515 0.00327516 0.00327517 0.00327518
|
||||||
0.00327378 0.00327376 0.00327375 0.00327375 0.00327375 0.00327375 0.00327375 0.00327375 0.00327375 0.00327376 0.00327376 0.00327376
|
0.00328275 0.00327405 0.00327405 0.00327406 0.00327407 0.00327408 0.00327409 0.0032741 0.00327411 0.00327412 0.00327413 0.00327413
|
||||||
0.00327337 0.00327335 0.00327335 0.00327335 0.00327335 0.00327335 0.00327335 0.00327335 0.00327335 0.00327335 0.00327335 0.00327335
|
0.00328152 0.00327365 0.00327365 0.00327365 0.00327366 0.00327367 0.00327368 0.00327369 0.0032737 0.0032737 0.00327371 0.00327371
|
||||||
0.00327296 0.00327295 0.00327294 0.00327294 0.00327294 0.00327294 0.00327294 0.00327294 0.00327294 0.00327294 0.00327294 0.00327294
|
0.00328111 0.00327325 0.00327325 0.00327325 0.00327325 0.00327326 0.00327327 0.00327327 0.00327328 0.00327329 0.00327329 0.00327329
|
||||||
0.00327255 0.00327254 0.00327254 0.00327253 0.00327253 0.00327253 0.00327253 0.00327253 0.00327253 0.00327253 0.00327253 0.00327253
|
0.00328075 0.00327284 0.00327284 0.00327284 0.00327285 0.00327285 0.00327286 0.00327286 0.00327287 0.00327287 0.00327287 0.00327288
|
||||||
0.00327215 0.00327213 0.00327213 0.00327213 0.00327213 0.00327213 0.00327213 0.00327213 0.00327213 0.00327213 0.00327213 0.00327213
|
0.00328145 0.00327244 0.00327243 0.00327243 0.00327244 0.00327244 0.00327244 0.00327245 0.00327245 0.00327246 0.00327246 0.00327246
|
||||||
0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327172 0.00327172
|
0.00327204 0.00327203 0.00327202 0.00327202 0.00327203 0.00327203 0.00327203 0.00327203 0.00327204 0.00327204 0.00327204 0.00327204
|
||||||
0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131 0.00327131
|
0.00327162 0.00327161 0.00327161 0.00327161 0.00327161 0.00327162 0.00327162 0.00327162 0.00327162 0.00327163 0.00327163 0.00327163
|
||||||
</DataArray>
|
</DataArray>
|
||||||
<DataArray type="Float32" Name="moleFrac_g^CO2" NumberOfComponents="1" format="ascii">
|
<DataArray type="Float32" Name="moleFrac_gas^CO2" NumberOfComponents="1" format="ascii">
|
||||||
0.259565 0.259565 0.259566 0.259566 0.259566 0.259566 0.259566 0.259566 0.259566 0.259565 0.259565 0.259565
|
0.259749 0.259553 0.259552 0.259552 0.259552 0.259551 0.25955 0.25955 0.259549 0.259549 0.259548 0.259548
|
||||||
0.259534 0.259535 0.259535 0.259535 0.259535 0.259535 0.259535 0.259535 0.259535 0.259535 0.259535 0.259535
|
0.259647 0.259522 0.259522 0.259522 0.259521 0.259521 0.25952 0.25952 0.259519 0.259519 0.259519 0.259518
|
||||||
0.259554 0.259554 0.259554 0.259554 0.259554 0.259554 0.259554 0.259554 0.259554 0.259554 0.259554 0.259554
|
0.259654 0.259541 0.259541 0.259541 0.25954 0.25954 0.25954 0.259539 0.259539 0.259539 0.259538 0.259538
|
||||||
0.259573 0.259573 0.259573 0.259573 0.259573 0.259573 0.259573 0.259573 0.259573 0.259573 0.259573 0.259573
|
0.259673 0.25956 0.25956 0.25956 0.25956 0.259559 0.259559 0.259559 0.259558 0.259558 0.259558 0.259558
|
||||||
0.259592 0.259592 0.259592 0.259592 0.259592 0.259592 0.259592 0.259592 0.259592 0.259592 0.259592 0.259592
|
0.259693 0.259579 0.259579 0.259579 0.259579 0.259578 0.259578 0.259578 0.259578 0.259578 0.259577 0.259577
|
||||||
0.259611 0.259611 0.259611 0.259611 0.259611 0.259611 0.259611 0.259611 0.259611 0.259611 0.259611 0.259611
|
0.259727 0.259598 0.259598 0.259598 0.259598 0.259598 0.259597 0.259597 0.259597 0.259597 0.259597 0.259597
|
||||||
0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963 0.25963
|
0.259617 0.259617 0.259617 0.259617 0.259617 0.259617 0.259617 0.259616 0.259616 0.259616 0.259616 0.259616
|
||||||
0.259649 0.259649 0.25965 0.25965 0.25965 0.25965 0.25965 0.25965 0.25965 0.25965 0.25965 0.25965
|
0.259636 0.259636 0.259636 0.259636 0.259636 0.259636 0.259636 0.259636 0.259635 0.259635 0.259635 0.259635
|
||||||
</DataArray>
|
</DataArray>
|
||||||
</CellData>
|
</CellData>
|
||||||
<Points>
|
<Points>
|
||||||
|
|||||||
Reference in New Issue
Block a user