mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Merge pull request #4654 from totto82/solvent_foam
Add solvent + foam simulator
This commit is contained in:
@@ -368,5 +368,5 @@ INSTANCE(BlackOilIndices<0u,1u,0u,0u,false,false,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,1u,0u,false,false,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,false,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,true,0u,0u>)
|
||||
|
||||
INSTANCE(BlackOilIndices<1u,0u,0u,0u,true,false,0u,0u>)
|
||||
}
|
||||
|
||||
@@ -520,4 +520,5 @@ INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,false,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,0u,false,false,1u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,true,0u,0u>)
|
||||
|
||||
INSTANCE(BlackOilIndices<1u,0u,0u,0u,true,false,0u,0u>)
|
||||
} // namespace Opm
|
||||
|
||||
@@ -646,4 +646,6 @@ INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,true,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,0u,false,false,1u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,0u,false,true,2u,0u>)
|
||||
|
||||
INSTANCE(BlackOilIndices<1u,0u,0u,0u,true,false,0u,0u>)
|
||||
|
||||
}
|
||||
|
||||
@@ -786,4 +786,6 @@ INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,false,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,0u,false,false,1u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,true,0u,0u>)
|
||||
|
||||
INSTANCE(BlackOilIndices<1u,0u,0u,0u,true,false,0u,0u>)
|
||||
|
||||
} // namespace Opm
|
||||
|
||||
@@ -283,5 +283,6 @@ INSTANCE(9u, BlackOilIndices<0u,0u,0u,1u,false,false,0u,0u>)
|
||||
INSTANCE(10u, BlackOilIndices<1u,0u,0u,0u,false,false,0u,0u>)
|
||||
INSTANCE(10u, BlackOilIndices<0u,0u,0u,1u,false,true,0u,0u>)
|
||||
INSTANCE(10u, BlackOilIndices<0u,0u,0u,1u,false,false,1u,0u>)
|
||||
INSTANCE(11u, BlackOilIndices<1u,0u,0u,0u,true,false,0u,0u>)
|
||||
|
||||
}
|
||||
|
||||
@@ -569,4 +569,6 @@ INSTANCE(BlackOilIndices<0u,0u,0u,0u,false,true,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,true,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,false,1u,0u>)
|
||||
|
||||
INSTANCE(BlackOilIndices<1u,0u,0u,0u,true,false,0u,0u>)
|
||||
|
||||
}
|
||||
|
||||
@@ -232,4 +232,6 @@ INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,false,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,false,1u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,true,0u,0u>)
|
||||
|
||||
INSTANCE(BlackOilIndices<1u,0u,0u,0u,true,false,0u,0u>)
|
||||
|
||||
}
|
||||
|
||||
@@ -743,4 +743,6 @@ INSTANCE(BlackOilIndices<0u,0u,0u,0u,false,true,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,true,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,false,1u,0u>)
|
||||
|
||||
INSTANCE(BlackOilIndices<1u,0u,0u,0u,true,false,0u,0u>)
|
||||
|
||||
}
|
||||
|
||||
@@ -763,8 +763,26 @@ namespace Opm
|
||||
|
||||
if constexpr (has_foam) {
|
||||
// TODO: the application of well efficiency factor has not been tested with an example yet
|
||||
const unsigned gasCompIdx = Indices::canonicalToActiveComponentIndex(FluidSystem::gasCompIdx);
|
||||
EvalWell cq_s_foam = cq_s[gasCompIdx] * this->well_efficiency_factor_;
|
||||
auto getFoamTransportIdx = [&deferred_logger] {
|
||||
switch (FoamModule::transportPhase()) {
|
||||
case Phase::WATER: {
|
||||
return Indices::canonicalToActiveComponentIndex(FluidSystem::waterCompIdx);
|
||||
}
|
||||
case Phase::GAS: {
|
||||
return Indices::canonicalToActiveComponentIndex(FluidSystem::gasCompIdx);
|
||||
}
|
||||
case Phase::SOLVENT: {
|
||||
if constexpr (has_solvent)
|
||||
return (unsigned)Indices::contiSolventEqIdx;
|
||||
else
|
||||
OPM_DEFLOG_THROW(std::runtime_error, "Foam transport phase is SOLVENT but SOLVENT is not activated.", deferred_logger);
|
||||
}
|
||||
default: {
|
||||
OPM_DEFLOG_THROW(std::runtime_error, "Foam transport phase must be GAS/WATER/SOLVENT.", deferred_logger);
|
||||
}
|
||||
}
|
||||
};
|
||||
EvalWell cq_s_foam = cq_s[getFoamTransportIdx()] * this->well_efficiency_factor_;
|
||||
if (this->isInjector()) {
|
||||
cq_s_foam *= this->wfoam();
|
||||
} else {
|
||||
|
||||
@@ -269,6 +269,7 @@ INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,6,0>)
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,7,0>)
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,8,0>)
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,9,0>)
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,10,0>)
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,-1,4>)
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,-1,5>)
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,-1,6>)
|
||||
@@ -276,7 +277,7 @@ INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,-1,7>)
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,-1,8>)
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,-1,9>)
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,-1,10>)
|
||||
|
||||
INSTANCE_TARGET_CALCULATOR(DenseAd::Evaluation<double,-1,11>)
|
||||
|
||||
} // namespace WellGroupHelpers
|
||||
|
||||
|
||||
@@ -648,6 +648,7 @@ INSTANCE(DenseAd::Evaluation<double, -1, 7u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 8u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 9u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 10u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 11u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 3, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 4, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 5, 0u>)
|
||||
@@ -655,7 +656,7 @@ INSTANCE(DenseAd::Evaluation<double, 6, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 7, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 8, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 9, 0u>)
|
||||
|
||||
INSTANCE(DenseAd::Evaluation<double, 10, 0u>)
|
||||
|
||||
} // namespace detail
|
||||
} // namespace Opm
|
||||
|
||||
@@ -130,6 +130,7 @@ INSTANCE(DenseAd::Evaluation<double, -1, 7u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 8u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 9u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 10u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 11u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 3, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 4, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 5, 0u>)
|
||||
@@ -137,5 +138,5 @@ INSTANCE(DenseAd::Evaluation<double, 6, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 7, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 8, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 9, 0u>)
|
||||
|
||||
INSTANCE(DenseAd::Evaluation<double, 10, 0u>)
|
||||
} //Namespace Opm
|
||||
|
||||
@@ -194,6 +194,7 @@ INSTANCE(DenseAd::Evaluation<double, -1, 7u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 8u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 9u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 10u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, -1, 11u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 3, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 4, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 5, 0u>)
|
||||
@@ -201,5 +202,6 @@ INSTANCE(DenseAd::Evaluation<double, 6, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 7, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 8, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 9, 0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double, 10, 0u>)
|
||||
|
||||
}
|
||||
|
||||
@@ -317,5 +317,5 @@ INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,7u>)
|
||||
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,8u>)
|
||||
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,9u>)
|
||||
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,10u>)
|
||||
|
||||
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,11u>)
|
||||
} // namespace Opm
|
||||
|
||||
@@ -783,6 +783,7 @@ INSTANCE(DenseAd::Evaluation<double,6,0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,7,0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,8,0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,9,0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,10,0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,4u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,5u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,6u>)
|
||||
@@ -790,5 +791,5 @@ INSTANCE(DenseAd::Evaluation<double,-1,7u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,8u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,9u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,10u>)
|
||||
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,11u>)
|
||||
} // namespace Opm
|
||||
|
||||
@@ -534,6 +534,7 @@ INSTANCE(DenseAd::Evaluation<double,6,0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,7,0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,8,0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,9,0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,10,0u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,4u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,5u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,6u>)
|
||||
@@ -541,5 +542,5 @@ INSTANCE(DenseAd::Evaluation<double,-1,7u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,8u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,9u>)
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,10u>)
|
||||
|
||||
INSTANCE(DenseAd::Evaluation<double,-1,11u>)
|
||||
} // namespace Opm
|
||||
|
||||
@@ -145,5 +145,6 @@ INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,false,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,false,1u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,0u,false,false,1u,0u>)
|
||||
INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,true,0u,0u>)
|
||||
INSTANCE(BlackOilIndices<1u,0u,0u,0u,true,false,0u,0u>)
|
||||
|
||||
} // namespace Opm
|
||||
|
||||
Reference in New Issue
Block a user