Merge pull request #6487 from daavid00/conc

Biofilm and Calcite set to volume fraction instead of concentration
This commit is contained in:
David Landa-Marbán authored and GitHub committed 2025-09-22 09:44:43 +02:00
commit 3f267e3983
20 files changed
+112 -112

No files matched your search

@@ -115,8 +115,8 @@ class BlackOilBioeffectsModule
static constexpr unsigned microbialConcentrationIdx = Indices::microbialConcentrationIdx;
static constexpr unsigned oxygenConcentrationIdx = Indices::oxygenConcentrationIdx;
static constexpr unsigned ureaConcentrationIdx = Indices::ureaConcentrationIdx;
static constexpr unsigned biofilmConcentrationIdx = Indices::biofilmConcentrationIdx;
static constexpr unsigned calciteConcentrationIdx = Indices::calciteConcentrationIdx;
static constexpr unsigned biofilmVolumeFractionIdx = Indices::biofilmVolumeFractionIdx;
static constexpr unsigned calciteVolumeFractionIdx = Indices::calciteVolumeFractionIdx;
static constexpr unsigned contiMicrobialEqIdx = Indices::contiMicrobialEqIdx;
static constexpr unsigned contiOxygenEqIdx = Indices::contiOxygenEqIdx;
static constexpr unsigned contiUreaEqIdx = Indices::contiUreaEqIdx;
@@ -191,7 +191,7 @@ public:
const LhsEval accumulationMicrobes = surfaceVolumeWater * Toolbox::template decay<LhsEval>(intQuants.microbialConcentration());
storage[contiMicrobialEqIdx] += accumulationMicrobes;
// biofilm
const LhsEval accumulationBiofilm = Toolbox::template decay<LhsEval>(intQuants.biofilmConcentration());
const LhsEval accumulationBiofilm = Toolbox::template decay<LhsEval>(intQuants.biofilmVolumeFraction());
storage[contiBiofilmEqIdx] += accumulationBiofilm;
if constexpr (enableMICP) {
// oxygen in water phase
@@ -202,7 +202,7 @@ public:
storage[contiUreaEqIdx] += accumulationUrea;
storage[contiUreaEqIdx] *= getPropValue<TypeTag, Properties::BlackOilUreaScalingFactor>();
// calcite
const LhsEval accumulationCalcite = Toolbox::template decay<LhsEval>(intQuants.calciteConcentration());
const LhsEval accumulationCalcite = Toolbox::template decay<LhsEval>(intQuants.calciteVolumeFraction());
storage[contiCalciteEqIdx] += accumulationCalcite;
}
}
@@ -318,20 +318,20 @@ public:
// see https://doi.org/10.1016/j.ijggc.2021.103256 for the MICP processes in the model
source[Indices::contiMicrobialEqIdx] += intQuants.microbialConcentration() * intQuants.porosity() *
b * (Y * k_g - k_d - k_a) +
rho_b * intQuants.biofilmConcentration() * k_str * pow(normVelocityCell / intQuants.porosity(), eta);
rho_b * intQuants.biofilmVolumeFraction() * k_str * pow(normVelocityCell / intQuants.porosity(), eta);
source[Indices::contiOxygenEqIdx] -= (intQuants.microbialConcentration() * intQuants.porosity() *
b + rho_b * intQuants.biofilmConcentration()) * F * k_g;
b + rho_b * intQuants.biofilmVolumeFraction()) * F * k_g;
source[Indices::contiUreaEqIdx] -= rho_b * intQuants.biofilmConcentration() * k_c;
source[Indices::contiUreaEqIdx] -= rho_b * intQuants.biofilmVolumeFraction() * k_c;
source[Indices::contiBiofilmEqIdx] += intQuants.biofilmConcentration() * (Y * k_g - k_d -
source[Indices::contiBiofilmEqIdx] += intQuants.biofilmVolumeFraction() * (Y * k_g - k_d -
k_str * pow(normVelocityCell / intQuants.porosity(), eta) - Y_uc * (rho_b / rho_c) *
intQuants.biofilmConcentration() * k_c / (intQuants.porosity() +
intQuants.biofilmConcentration())) + k_a * intQuants.microbialConcentration() *
intQuants.biofilmVolumeFraction() * k_c / (intQuants.porosity() +
intQuants.biofilmVolumeFraction())) + k_a * intQuants.microbialConcentration() *
intQuants.porosity() * b / rho_b;
source[Indices::contiCalciteEqIdx] += (rho_b / rho_c) * intQuants.biofilmConcentration() * Y_uc * k_c;
source[Indices::contiCalciteEqIdx] += (rho_b / rho_c) * intQuants.biofilmVolumeFraction() * Y_uc * k_c;
// since the urea concentration can be much larger than 1, then we apply a scaling factor
source[Indices::contiUreaEqIdx] *= getPropValue<TypeTag, Properties::BlackOilUreaScalingFactor>();
@@ -351,7 +351,7 @@ public:
const auto& xG = RswToMassFraction(pvtRegionIndex, Rsw);
// get porosity, biofilm concentration, and gas density for convenience
// get the porosity and and gas density for convenience
const Evaluation& poro = intQuants.porosity();
Scalar rho_gRef = FluidSystem::referenceDensity(FluidSystem::gasPhaseIdx, pvtRegionIndex);
@@ -365,16 +365,16 @@ public:
// decay, detachment, and attachment rate of suspended microbes
source[contiMicrobialEqIdx] += Sw * intQuants.microbialConcentration() * intQuants.porosity() * b
* (- k_a - k_d)
+ intQuants.biofilmConcentration() * rho_b * k_str
+ intQuants.biofilmVolumeFraction() * rho_b * k_str
* pow(normVelocityCell / intQuants.porosity(), eta);
// biofilm growth and decay rate
source[contiBiofilmEqIdx] += (k_g - k_d - k_str * pow(normVelocityCell / intQuants.porosity(), eta))
* intQuants.biofilmConcentration()
* intQuants.biofilmVolumeFraction()
+ k_a * Sw * intQuants.microbialConcentration() * intQuants.porosity() * b / rho_b;
// biofilm consumption of dissolved gas is proportional to biofilm growth rate
unsigned activeGasCompIdx = FluidSystem::canonicalToActiveCompIdx(gasCompIdx);
source[activeGasCompIdx] -= intQuants.biofilmConcentration() * rho_b * k_g / (Y * rho_gRef);
source[activeGasCompIdx] -= intQuants.biofilmVolumeFraction() * rho_b * k_g / (Y * rho_gRef);
}
}
}
@@ -531,8 +531,8 @@ class BlackOilBioeffectsIntensiveQuantities
static constexpr int microbialConcentrationIdx = Indices::microbialConcentrationIdx;
static constexpr int oxygenConcentrationIdx = Indices::oxygenConcentrationIdx;
static constexpr int ureaConcentrationIdx = Indices::ureaConcentrationIdx;
static constexpr int biofilmConcentrationIdx = Indices::biofilmConcentrationIdx;
static constexpr int calciteConcentrationIdx = Indices::calciteConcentrationIdx;
static constexpr int biofilmVolumeFractionIdx = Indices::biofilmVolumeFractionIdx;
static constexpr int calciteVolumeFractionIdx = Indices::calciteVolumeFractionIdx;
static constexpr int temperatureIdx = Indices::temperatureIdx;
static constexpr int waterPhaseIdx = FluidSystem::waterPhaseIdx;
static constexpr bool enableMICP = Indices::enableMICP;
@@ -554,16 +554,16 @@ public:
unsigned satnumRegionIdx = elemCtx.problem().satnumRegionIndex(elemCtx, dofIdx, timeIdx);
microbialConcentration_ = priVars.makeEvaluation(microbialConcentrationIdx, timeIdx, linearizationType);
biofilmConcentration_ = priVars.makeEvaluation(biofilmConcentrationIdx, timeIdx, linearizationType);
biofilmMass_ = biofilmConcentration_ * BioeffectsModule::densityBiofilm(satnumRegionIdx);
calciteConcentration_ = 0.0;
biofilmVolumeFraction_ = priVars.makeEvaluation(biofilmVolumeFractionIdx, timeIdx, linearizationType);
biofilmMass_ = biofilmVolumeFraction_ * BioeffectsModule::densityBiofilm(satnumRegionIdx);
calciteVolumeFraction_ = 0.0;
if constexpr (enableMICP) {
oxygenConcentration_ = priVars.makeEvaluation(oxygenConcentrationIdx, timeIdx, linearizationType);
ureaConcentration_ = priVars.makeEvaluation(ureaConcentrationIdx, timeIdx, linearizationType);
calciteConcentration_ = priVars.makeEvaluation(calciteConcentrationIdx, timeIdx, linearizationType);
calciteMass_ = calciteConcentration_ * BioeffectsModule::densityCalcite(satnumRegionIdx);
calciteVolumeFraction_ = priVars.makeEvaluation(calciteVolumeFractionIdx, timeIdx, linearizationType);
calciteMass_ = calciteVolumeFraction_ * BioeffectsModule::densityCalcite(satnumRegionIdx);
}
const Evaluation poroFact = min(1.0 - (biofilmConcentration_ + calciteConcentration_) /
const Evaluation poroFact = min(1.0 - (biofilmVolumeFraction_ + calciteVolumeFraction_) /
(referencePorosity_), 1.0); //phi/phi_0
const auto& permfactTable = BioeffectsModule::permfactTable(satnumRegionIdx);
@@ -579,11 +579,11 @@ public:
const Evaluation& ureaConcentration() const
{ return ureaConcentration_; }
const Evaluation& biofilmConcentration() const
{ return biofilmConcentration_; }
const Evaluation& biofilmVolumeFraction() const
{ return biofilmVolumeFraction_; }
const Evaluation& calciteConcentration() const
{ return calciteConcentration_; }
const Evaluation& calciteVolumeFraction() const
{ return calciteVolumeFraction_; }
const Evaluation biofilmMass() const
{ return biofilmMass_; }
@@ -598,8 +598,8 @@ protected:
Evaluation microbialConcentration_;
Evaluation oxygenConcentration_;
Evaluation ureaConcentration_;
Evaluation biofilmConcentration_;
Evaluation calciteConcentration_;
Evaluation biofilmVolumeFraction_;
Evaluation calciteVolumeFraction_;
Evaluation biofilmMass_;
Evaluation calciteMass_;
Evaluation permFactor_;
@@ -629,11 +629,11 @@ public:
const Evaluation& ureaConcentration() const
{ throw std::logic_error("ureaConcentration() called but MICP is disabled"); }
const Evaluation& biofilmConcentration() const
{ throw std::logic_error("biofilmConcentration() called but biofilm/MICP is disabled"); }
const Evaluation& biofilmVolumeFraction() const
{ throw std::logic_error("biofilmVolumeFraction() called but biofilm/MICP is disabled"); }
const Evaluation& calciteConcentration() const
{ throw std::logic_error("calciteConcentration() called but MICP is disabled"); }
const Evaluation& calciteVolumeFraction() const
{ throw std::logic_error("calciteVolumeFraction() called but MICP is disabled"); }
const Evaluation& biofilmMass() const
{ throw std::logic_error("biofilmMass() called but biofilm/MICP is disabled"); }
@@ -311,7 +311,7 @@ public:
else if constexpr (enableBioeffects) {
if (BioeffectsModule::hasPcfactTables() && referencePorosity_ > 0) {
unsigned satnumRegionIdx = problem.satnumRegionIndex(globalSpaceIdx);
const Evaluation Sb = priVars.makeEvaluation(Indices::biofilmConcentrationIdx, timeIdx);
const Evaluation Sb = priVars.makeEvaluation(Indices::biofilmVolumeFractionIdx, timeIdx);
const Evaluation porosityFactor = min(1.0 - Sb/referencePorosity_, 1.0); //phi/phi_0
const auto& pcfactTable = BioeffectsModule::pcfactTable(satnumRegionIdx);
const Evaluation pcFactor = pcfactTable.eval(porosityFactor, /*extrapolation=*/true);
@@ -580,11 +580,11 @@ public:
// deal with bioeffects (minimum porosity of 1e-8 to prevent numerical issues)
if constexpr (enableBioeffects) {
const Evaluation biofilm_ = priVars.makeEvaluation(Indices::biofilmConcentrationIdx,
const Evaluation biofilm_ = priVars.makeEvaluation(Indices::biofilmVolumeFractionIdx,
timeIdx, linearizationType);
Evaluation calcite_ = 0.0;
if constexpr (enableMICP) {
calcite_ = priVars.makeEvaluation(Indices::calciteConcentrationIdx, timeIdx, linearizationType);
calcite_ = priVars.makeEvaluation(Indices::calciteVolumeFractionIdx, timeIdx, linearizationType);
}
porosity_ -= min(biofilm_ + calcite_, referencePorosity_ - 1e-8);
}
+3 -3
View File
@@ -211,7 +211,7 @@ protected:
static constexpr bool enableEnergy = Indices::temperatureIdx >= 0;
static constexpr bool enableFoam = Indices::foamConcentrationIdx >= 0;
static constexpr bool enableBrine = Indices::saltConcentrationIdx >= 0;
static constexpr bool enableBioeffects = Indices::biofilmConcentrationIdx >= 0;
static constexpr bool enableBioeffects = Indices::biofilmVolumeFractionIdx >= 0;
static constexpr bool enableMICP = Indices::enableMICP;
currentValue.checkDefined();
@@ -397,7 +397,7 @@ protected:
if (pvIdx == Indices::microbialConcentrationIdx) {
nextValue[pvIdx] = std::max(nextValue[pvIdx], Scalar{0.0});
}
if (pvIdx == Indices::biofilmConcentrationIdx) {
if (pvIdx == Indices::biofilmVolumeFractionIdx) {
nextValue[pvIdx] = std::clamp(nextValue[pvIdx],
Scalar{0.0},
this->problem().referencePorosity(globalDofIdx, 0) - 1e-8);
@@ -409,7 +409,7 @@ protected:
if (pvIdx == Indices::ureaConcentrationIdx) {
nextValue[pvIdx] = std::max(nextValue[pvIdx], Scalar{0.0});
}
if (pvIdx == Indices::calciteConcentrationIdx) {
if (pvIdx == Indices::calciteVolumeFractionIdx) {
nextValue[pvIdx] = std::clamp(nextValue[pvIdx], Scalar{0.0},
this->problem().referencePorosity(globalDofIdx, 0) - 1e-8);
}
@@ -163,12 +163,12 @@ struct BlackOilOnePhaseIndices
numMICPs > 2 ? oxygenConcentrationIdx + 1 : -1000;
//! Index of the primary variable for the fourth MICP component
static constexpr int biofilmConcentrationIdx =
static constexpr int biofilmVolumeFractionIdx =
numMICPs > 3 ? ureaConcentrationIdx + 1 : -1000;
//! Index of the primary variable for the fifth MICP component
static constexpr int calciteConcentrationIdx =
numMICPs > 4 ? biofilmConcentrationIdx + 1 : -1000;
static constexpr int calciteVolumeFractionIdx =
numMICPs > 4 ? biofilmVolumeFractionIdx + 1 : -1000;
//! Index of the primary variable for the foam
static constexpr int foamConcentrationIdx =
@@ -601,7 +601,7 @@ public:
else if constexpr (enableBioeffects) {
if (BioeffectsModule::hasPcfactTables() && problem.referencePorosity(globalDofIdx, 0) > 0) {
unsigned satnumRegionIdx = problem.satnumRegionIndex(globalDofIdx);
Scalar Sb = biofilmConcentration_() /
Scalar Sb = biofilmVolumeFraction_() /
problem.referencePorosity(globalDofIdx, 0);
Scalar porosityFactor = std::min(1.0 - Sb, 1.0); //phi/phi_0
const auto& pcfactTable = BioeffectsModule::pcfactTable(satnumRegionIdx);
@@ -987,10 +987,10 @@ private:
}
}
Scalar biofilmConcentration_() const
Scalar biofilmVolumeFraction_() const
{
if constexpr (enableBioeffects)
return (*this)[Indices::biofilmConcentrationIdx];
return (*this)[Indices::biofilmVolumeFractionIdx];
else
return 0.0;
}
@@ -155,13 +155,13 @@ struct BlackOilTwoPhaseIndices
enableBiofilm ? PVOffset + numPhases + numSolvents : -1000;
//! Index of the primary variable for the biofilm component
static constexpr int biofilmConcentrationIdx =
static constexpr int biofilmVolumeFractionIdx =
enableBiofilm ? PVOffset + numPhases + numSolvents + 1 : -1000;
//! MICP only available for one phase indices
static constexpr int oxygenConcentrationIdx = -1000;
static constexpr int ureaConcentrationIdx = -1000;
static constexpr int calciteConcentrationIdx = -1000;
static constexpr int calciteVolumeFractionIdx = -1000;
//! Index of the primary variable for the foam
static constexpr int foamConcentrationIdx =
@@ -142,8 +142,8 @@ struct BlackOilVariableAndEquationIndices
static constexpr int microbialConcentrationIdx = -1000;
static constexpr int oxygenConcentrationIdx = -1000;
static constexpr int ureaConcentrationIdx = -1000;
static constexpr int biofilmConcentrationIdx = -1000;
static constexpr int calciteConcentrationIdx = -1000;
static constexpr int biofilmVolumeFractionIdx = -1000;
static constexpr int calciteVolumeFractionIdx = -1000;
//! Index of the primary variable for the foam
static constexpr int foamConcentrationIdx =
+18 -18
View File
@@ -103,8 +103,8 @@ public:
if (params_.microbialConcentrationOutput_) {
this->resizeScalarBuffer_(microbialConcentration_, BufferType::Dof);
}
if (params_.biofilmConcentrationOutput_) {
this->resizeScalarBuffer_(biofilmConcentration_, BufferType::Dof);
if (params_.biofilmVolumeFractionOutput_) {
this->resizeScalarBuffer_(biofilmVolumeFraction_, BufferType::Dof);
}
if constexpr (enableMICP) {
if (params_.oxygenConcentrationOutput_) {
@@ -113,8 +113,8 @@ public:
if (params_.ureaConcentrationOutput_) {
this->resizeScalarBuffer_(ureaConcentration_, BufferType::Dof);
}
if (params_.calciteConcentrationOutput_) {
this->resizeScalarBuffer_(calciteConcentration_, BufferType::Dof);
if (params_.calciteVolumeFractionOutput_) {
this->resizeScalarBuffer_(calciteVolumeFraction_, BufferType::Dof);
}
}
}
@@ -139,9 +139,9 @@ public:
microbialConcentration_[globalDofIdx] =
scalarValue(intQuants.microbialConcentration());
}
if (params_.biofilmConcentrationOutput_) {
biofilmConcentration_[globalDofIdx] =
scalarValue(intQuants.biofilmConcentration());
if (params_.biofilmVolumeFractionOutput_) {
biofilmVolumeFraction_[globalDofIdx] =
scalarValue(intQuants.biofilmVolumeFraction());
}
if constexpr (enableMICP) {
if (params_.oxygenConcentrationOutput_) {
@@ -152,9 +152,9 @@ public:
ureaConcentration_[globalDofIdx] =
scalarValue(intQuants.ureaConcentration());
}
if (params_.calciteConcentrationOutput_) {
calciteConcentration_[globalDofIdx] =
scalarValue(intQuants.calciteConcentration());
if (params_.calciteVolumeFractionOutput_) {
calciteVolumeFraction_[globalDofIdx] =
scalarValue(intQuants.calciteVolumeFraction());
}
}
}
@@ -175,9 +175,9 @@ public:
this->commitScalarBuffer_(baseWriter, "microbial concentration",
microbialConcentration_, BufferType::Dof);
}
if (params_.biofilmConcentrationOutput_) {
this->commitScalarBuffer_(baseWriter, "biofilm fraction",
biofilmConcentration_, BufferType::Dof);
if (params_.biofilmVolumeFractionOutput_) {
this->commitScalarBuffer_(baseWriter, "biofilm voulme fraction",
biofilmVolumeFraction_, BufferType::Dof);
}
if constexpr (enableMICP) {
if (params_.oxygenConcentrationOutput_) {
@@ -188,9 +188,9 @@ public:
this->commitScalarBuffer_(baseWriter, "urea concentration",
ureaConcentration_, BufferType::Dof);
}
if (params_.calciteConcentrationOutput_) {
this->commitScalarBuffer_(baseWriter, "calcite fraction",
calciteConcentration_, BufferType::Dof);
if (params_.calciteVolumeFractionOutput_) {
this->commitScalarBuffer_(baseWriter, "calcite volume fraction",
calciteVolumeFraction_, BufferType::Dof);
}
}
}
@@ -201,8 +201,8 @@ private:
ScalarBuffer microbialConcentration_{};
ScalarBuffer oxygenConcentration_{};
ScalarBuffer ureaConcentration_{};
ScalarBuffer biofilmConcentration_{};
ScalarBuffer calciteConcentration_{};
ScalarBuffer biofilmVolumeFraction_{};
ScalarBuffer calciteVolumeFraction_{};
};
} // namespace Opm
@@ -33,7 +33,7 @@ void VtkBlackOilBioeffectsParams::registerParameters(const bool isMICP)
Parameters::Register<Parameters::VtkWriteMicrobialConcentration>
("Include the concentration of the microbial component in the water phase "
"in the VTK output files");
Parameters::Register<Parameters::VtkWriteBiofilmConcentration>
Parameters::Register<Parameters::VtkWriteBiofilmVolumeFraction>
("Include the biofilm volume fraction in the VTK output files");
if (isMICP) {
Parameters::Register<Parameters::VtkWriteOxygenConcentration>
@@ -42,7 +42,7 @@ void VtkBlackOilBioeffectsParams::registerParameters(const bool isMICP)
Parameters::Register<Parameters::VtkWriteUreaConcentration>
("Include the concentration of the urea component in the water phase "
"in the VTK output files");
Parameters::Register<Parameters::VtkWriteCalciteConcentration>
Parameters::Register<Parameters::VtkWriteCalciteVolumeFraction>
("Include the calcite volume fraction in the VTK output files");
}
}
@@ -50,11 +50,11 @@ void VtkBlackOilBioeffectsParams::registerParameters(const bool isMICP)
void VtkBlackOilBioeffectsParams::read(const bool isMICP)
{
microbialConcentrationOutput_ = Parameters::Get<Parameters::VtkWriteMicrobialConcentration>();
biofilmConcentrationOutput_ = Parameters::Get<Parameters::VtkWriteBiofilmConcentration>();
biofilmVolumeFractionOutput_ = Parameters::Get<Parameters::VtkWriteBiofilmVolumeFraction>();
if (isMICP) {
oxygenConcentrationOutput_ = Parameters::Get<Parameters::VtkWriteOxygenConcentration>();
ureaConcentrationOutput_ = Parameters::Get<Parameters::VtkWriteUreaConcentration>();
calciteConcentrationOutput_ = Parameters::Get<Parameters::VtkWriteCalciteConcentration>();
calciteVolumeFractionOutput_ = Parameters::Get<Parameters::VtkWriteCalciteVolumeFraction>();
}
}
@@ -33,8 +33,8 @@ namespace Opm::Parameters {
struct VtkWriteMicrobialConcentration { static constexpr bool value = true; };
struct VtkWriteOxygenConcentration { static constexpr bool value = true; };
struct VtkWriteUreaConcentration { static constexpr bool value = true; };
struct VtkWriteBiofilmConcentration { static constexpr bool value = true; };
struct VtkWriteCalciteConcentration { static constexpr bool value = true; };
struct VtkWriteBiofilmVolumeFraction { static constexpr bool value = true; };
struct VtkWriteCalciteVolumeFraction { static constexpr bool value = true; };
} // namespace Opm::Parameters
@@ -54,8 +54,8 @@ struct VtkBlackOilBioeffectsParams
bool microbialConcentrationOutput_;
bool oxygenConcentrationOutput_;
bool ureaConcentrationOutput_;
bool biofilmConcentrationOutput_;
bool calciteConcentrationOutput_;
bool biofilmVolumeFractionOutput_;
bool calciteVolumeFractionOutput_;
};
} // namespace Opm
+4 -4
View File
@@ -55,21 +55,21 @@ void BioeffectsContainer<Scalar>::
assign(const unsigned globalDofIdx,
const Scalar oxygenConcentration,
const Scalar ureaConcentration,
const Scalar calciteConcentration)
const Scalar calciteVolumeFraction)
{
cOxygen_[globalDofIdx] = oxygenConcentration;
cUrea_[globalDofIdx] = ureaConcentration;
cCalcite_[globalDofIdx] = calciteConcentration;
cCalcite_[globalDofIdx] = calciteVolumeFraction;
}
template<class Scalar>
void BioeffectsContainer<Scalar>::
assign(const unsigned globalDofIdx,
const Scalar microbialConcentration,
const Scalar biofilmConcentration)
const Scalar biofilmVolumeFraction)
{
cMicrobes_[globalDofIdx] = microbialConcentration;
cBiofilm_[globalDofIdx] = biofilmConcentration;
cBiofilm_[globalDofIdx] = biofilmVolumeFraction;
}
template<class Scalar>
+2 -2
View File
@@ -44,11 +44,11 @@ public:
void assign(const unsigned globalDofIdx,
const Scalar oxygenConcentration,
const Scalar ureaConcentration,
const Scalar calciteConcentration);
const Scalar calciteVolumeFraction);
void assign(const unsigned globalDofIdx,
const Scalar microbialConcentration,
const Scalar biofilmConcentration);
const Scalar biofilmVolumeFraction);
BioeffectsSolutionContainer<Scalar> getSolution() const;
+2 -2
View File
@@ -98,8 +98,8 @@ public:
static constexpr int microbialConcentrationIdx = Indices::microbialConcentrationIdx;
static constexpr int oxygenConcentrationIdx = Indices::oxygenConcentrationIdx;
static constexpr int ureaConcentrationIdx = Indices::ureaConcentrationIdx;
static constexpr int biofilmConcentrationIdx = Indices::biofilmConcentrationIdx;
static constexpr int calciteConcentrationIdx = Indices::calciteConcentrationIdx;
static constexpr int biofilmVolumeFractionIdx = Indices::biofilmVolumeFractionIdx;
static constexpr int calciteVolumeFractionIdx = Indices::calciteVolumeFractionIdx;
using VectorBlockType = Dune::FieldVector<Scalar, numEq>;
using MatrixBlockType = typename SparseMatrixAdapter::MatrixBlock;
+4 -4
View File
@@ -192,14 +192,14 @@ public:
Scalar ureaConcentration(unsigned elemIdx) const;
/*!
* \brief Returns the initial biofilm concentration for a given a cell index
* \brief Returns the initial biofilm volume fraction for a given a cell index
*/
Scalar biofilmConcentration(unsigned elemIdx) const;
Scalar biofilmVolumeFraction(unsigned elemIdx) const;
/*!
* \brief Returns the initial calcite concentration for a given a cell index
* \brief Returns the initial calcite volume fraction for a given a cell index
*/
Scalar calciteConcentration(unsigned elemIdx) const;
Scalar calciteVolumeFraction(unsigned elemIdx) const;
/*!
* \brief Returns the index the relevant PVT region given a cell index
+10 -10
View File
@@ -528,9 +528,9 @@ readBlackoilExtentionsInitialConditions_(std::size_t numDof,
bioeffects_.microbialConcentration.resize(numDof, 0.0);
}
if (eclState_.fieldProps().has_double("SBIOF")) {
bioeffects_.biofilmConcentration = getArray(eclState_.fieldProps().get_double("SBIOF"));
bioeffects_.biofilmVolumeFraction = getArray(eclState_.fieldProps().get_double("SBIOF"));
} else {
bioeffects_.biofilmConcentration.resize(numDof, 0.0);
bioeffects_.biofilmVolumeFraction.resize(numDof, 0.0);
}
if (enableMICP) {
if (eclState_.fieldProps().has_double("SOXYG")) {
@@ -544,9 +544,9 @@ readBlackoilExtentionsInitialConditions_(std::size_t numDof,
bioeffects_.ureaConcentration.resize(numDof, 0.0);
}
if (eclState_.fieldProps().has_double("SCALC")) {
bioeffects_.calciteConcentration = getArray(eclState_.fieldProps().get_double("SCALC"));
bioeffects_.calciteVolumeFraction = getArray(eclState_.fieldProps().get_double("SCALC"));
} else {
bioeffects_.calciteConcentration.resize(numDof, 0.0);
bioeffects_.calciteVolumeFraction.resize(numDof, 0.0);
}
}
}
@@ -672,25 +672,25 @@ ureaConcentration(unsigned elemIdx) const
template<class GridView, class FluidSystem>
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
FlowGenericProblem<GridView,FluidSystem>::
biofilmConcentration(unsigned elemIdx) const
biofilmVolumeFraction(unsigned elemIdx) const
{
if (bioeffects_.biofilmConcentration.empty()) {
if (bioeffects_.biofilmVolumeFraction.empty()) {
return 0;
}
return bioeffects_.biofilmConcentration[elemIdx];
return bioeffects_.biofilmVolumeFraction[elemIdx];
}
template<class GridView, class FluidSystem>
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
FlowGenericProblem<GridView,FluidSystem>::
calciteConcentration(unsigned elemIdx) const
calciteVolumeFraction(unsigned elemIdx) const
{
if (bioeffects_.calciteConcentration.empty()) {
if (bioeffects_.calciteVolumeFraction.empty()) {
return 0;
}
return bioeffects_.calciteConcentration[elemIdx];
return bioeffects_.calciteVolumeFraction[elemIdx];
}
template<class GridView, class FluidSystem>
+2 -2
View File
@@ -931,11 +931,11 @@ public:
if constexpr (enableBioeffects) {
values[Indices::microbialConcentrationIdx] = this->bioeffects_.microbialConcentration[globalDofIdx];
values[Indices::biofilmConcentrationIdx]= this->bioeffects_.biofilmConcentration[globalDofIdx];
values[Indices::biofilmVolumeFractionIdx]= this->bioeffects_.biofilmVolumeFraction[globalDofIdx];
if constexpr (enableMICP) {
values[Indices::oxygenConcentrationIdx]= this->bioeffects_.oxygenConcentration[globalDofIdx];
values[Indices::ureaConcentrationIdx]= this->bioeffects_.ureaConcentration[globalDofIdx];
values[Indices::calciteConcentrationIdx]= this->bioeffects_.calciteConcentration[globalDofIdx];
values[Indices::calciteVolumeFractionIdx]= this->bioeffects_.calciteVolumeFraction[globalDofIdx];
}
}
+2 -2
View File
@@ -1590,12 +1590,12 @@ private:
{
bioeffectsC.assign(ectx.globalDofIdx,
ectx.intQuants.microbialConcentration().value(),
ectx.intQuants.biofilmConcentration().value());
ectx.intQuants.biofilmVolumeFraction().value());
if (Indices::enableMICP) {
bioeffectsC.assign(ectx.globalDofIdx,
ectx.intQuants.oxygenConcentration().value(),
ectx.intQuants.ureaConcentration().value(),
ectx.intQuants.calciteConcentration().value());
ectx.intQuants.calciteVolumeFraction().value());
}
}, this->bioeffectsC_.allocated()
},
+4 -4
View File
@@ -65,8 +65,8 @@ void BioeffectsSolutionContainer<Scalar>::resize(const unsigned numElems)
microbialConcentration.resize(numElems, 0.0);
oxygenConcentration.resize(numElems, 0.0);
ureaConcentration.resize(numElems, 0.0);
biofilmConcentration.resize(numElems, 0.0);
calciteConcentration.resize(numElems, 0.0);
biofilmVolumeFraction.resize(numElems, 0.0);
calciteVolumeFraction.resize(numElems, 0.0);
}
template<class Scalar>
@@ -76,8 +76,8 @@ operator==(const BioeffectsSolutionContainer<Scalar>& rhs) const
return this->microbialConcentration == rhs.microbialConcentration &&
this->oxygenConcentration == rhs.oxygenConcentration &&
this->ureaConcentration == rhs.ureaConcentration &&
this->biofilmConcentration == rhs.biofilmConcentration &&
this->calciteConcentration == rhs.calciteConcentration;
this->biofilmVolumeFraction == rhs.biofilmVolumeFraction &&
this->calciteVolumeFraction == rhs.calciteVolumeFraction;
}
#define INSTANTIATE_TYPE(T) \
+4 -4
View File
@@ -58,8 +58,8 @@ struct BioeffectsSolutionContainer {
std::vector<Scalar> microbialConcentration;
std::vector<Scalar> oxygenConcentration;
std::vector<Scalar> ureaConcentration;
std::vector<Scalar> biofilmConcentration;
std::vector<Scalar> calciteConcentration;
std::vector<Scalar> biofilmVolumeFraction;
std::vector<Scalar> calciteVolumeFraction;
static BioeffectsSolutionContainer serializationTestObject();
@@ -72,8 +72,8 @@ struct BioeffectsSolutionContainer {
serializer(microbialConcentration);
serializer(oxygenConcentration);
serializer(ureaConcentration);
serializer(biofilmConcentration);
serializer(calciteConcentration);
serializer(biofilmVolumeFraction);
serializer(calciteVolumeFraction);
}
bool operator==(const BioeffectsSolutionContainer& rhs) const;
+3 -3
View File
@@ -81,13 +81,13 @@ ComponentName<FluidSystem,Indices>::ComponentName()
names_[Indices::microbialConcentrationIdx] = "Microbes";
names_[Indices::oxygenConcentrationIdx] = "Oxygen";
names_[Indices::ureaConcentrationIdx] = "Urea";
names_[Indices::biofilmConcentrationIdx] = "Biofilm";
names_[Indices::calciteConcentrationIdx] = "Calcite";
names_[Indices::biofilmVolumeFractionIdx] = "Biofilm";
names_[Indices::calciteVolumeFractionIdx] = "Calcite";
}
if constexpr (Indices::enableBiofilm) {
names_[Indices::microbialConcentrationIdx] = "Microbes";
names_[Indices::biofilmConcentrationIdx] = "Biofilm";
names_[Indices::biofilmVolumeFractionIdx] = "Biofilm";
}
}