https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
PorousFlowAqueousPreDisMineral Class Reference

Material designed to form a std::vector of mass fractions of mineral concentrations from reaction rates for an equilibrium precipitation-dissolution chemistry reaction system. More...

#include <PorousFlowAqueousPreDisMineral.h>

Inheritance diagram for PorousFlowAqueousPreDisMineral:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 PorousFlowAqueousPreDisMineral (const InputParameters &parameters)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

void initQpStatefulProperties () override
 
void computeQpProperties () override
 

Protected Attributes

const unsigned int _num_reactions
 Number of equations in the aqueous geochemistry system.
 
const unsigned int _aq_ph
 Aqueous phase number.
 
const MaterialProperty< std::vector< Real > > & _saturation
 Saturation.
 
MaterialProperty< std::vector< Real > > & _sec_conc
 Mineral concentrations at quadpoint or nodes.
 
const MaterialProperty< Real > & _porosity_old
 Porosity.
 
const MaterialProperty< std::vector< Real > > & _sec_conc_old
 Old values of the mineral species concentrations.
 
const MaterialProperty< std::vector< Real > > & _reaction_rate
 Reaction rate of mineralisation.
 
const bool _initial_conc_supplied
 Whether the initial values of the secondary species concentrations have been supplied by the user.
 
const unsigned _num_initial_conc
 Number of secondary species concentrations supplied by the user.
 
std::vector< const VariableValue * > _initial_conc
 Initial values of the secondary species concentrations.
 
const unsigned int _num_phases
 Number of phases.
 
const unsigned int _num_components
 Number of fluid components.
 
const unsigned int _num_var
 Number of PorousFlow variables.
 

Private Member Functions

bool haveMaterialProperty (const std::string &prop_name)
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

FEProblemBase_dmi_fe_problem
 

Detailed Description

Material designed to form a std::vector of mass fractions of mineral concentrations from reaction rates for an equilibrium precipitation-dissolution chemistry reaction system.

Definition at line 19 of file PorousFlowAqueousPreDisMineral.h.

Constructor & Destructor Documentation

◆ PorousFlowAqueousPreDisMineral()

PorousFlowAqueousPreDisMineral::PorousFlowAqueousPreDisMineral ( const InputParameters parameters)

Definition at line 28 of file PorousFlowAqueousPreDisMineral.C.

29 : PorousFlowMaterialVectorBase(parameters),
30 _num_reactions(_dictator.numAqueousKinetic()),
31 _aq_ph(_dictator.aqueousPhaseNumber()),
32 _saturation(_nodal_material
33 ? getMaterialProperty<std::vector<Real>>("PorousFlow_saturation_nodal")
34 : getMaterialProperty<std::vector<Real>>("PorousFlow_saturation_qp")),
35 _sec_conc(_nodal_material
36 ? declareProperty<std::vector<Real>>("PorousFlow_mineral_concentration_nodal")
37 : declareProperty<std::vector<Real>>("PorousFlow_mineral_concentration_qp")),
38
39 _porosity_old(_nodal_material ? getMaterialPropertyOld<Real>("PorousFlow_porosity_nodal")
40 : getMaterialPropertyOld<Real>("PorousFlow_porosity_qp")),
42 _nodal_material
43 ? getMaterialPropertyOld<std::vector<Real>>("PorousFlow_mineral_concentration_nodal")
44 : getMaterialPropertyOld<std::vector<Real>>("PorousFlow_mineral_concentration_qp")),
46 _nodal_material
47 ? getMaterialProperty<std::vector<Real>>("PorousFlow_mineral_reaction_rate_nodal")
48 : getMaterialProperty<std::vector<Real>>("PorousFlow_mineral_reaction_rate_qp")),
49
50 _initial_conc_supplied(isParamValid("initial_concentrations")),
51 _num_initial_conc(_initial_conc_supplied ? coupledComponents("initial_concentrations")
53{
54 /* Not needed due to PorousFlow_mineral_reaction_rate already checking this condition
55 if (_dictator.numPhases() < 1)
56 mooseError("PorousFlowAqueousPreDisMineral: The number of fluid phases must not be zero");
57 */
58
59 if (_num_initial_conc != _dictator.numAqueousKinetic())
60 mooseError("PorousFlowAqueousPreDisMineral: The number of initial concentrations is ",
62 " but the Dictator knows that the number of aqueous kinetic "
63 "(precipitation-dissolution) reactions is ",
64 _dictator.numAqueousKinetic());
65
68 for (unsigned r = 0; r < _num_reactions; ++r)
69 {
70 // If initial_concentrations are elemental AuxVariables (or constants), we want to use
71 // coupledGenericValue() rather than coupledGenericDofValue()
72 const bool is_nodal = isCoupled("initial_concentrations")
73 ? getFieldVar("initial_concentrations", r)->isNodal()
74 : false;
75
76 _initial_conc[r] =
77 (_nodal_material && is_nodal ? &coupledDofValues("initial_concentrations", r)
78 : &coupledValue("initial_concentrations", r));
79 }
80}
void mooseError(Args &&... args)
const unsigned int _aq_ph
Aqueous phase number.
std::vector< const VariableValue * > _initial_conc
Initial values of the secondary species concentrations.
const bool _initial_conc_supplied
Whether the initial values of the secondary species concentrations have been supplied by the user.
const MaterialProperty< std::vector< Real > > & _sec_conc_old
Old values of the mineral species concentrations.
const MaterialProperty< Real > & _porosity_old
Porosity.
const MaterialProperty< std::vector< Real > > & _reaction_rate
Reaction rate of mineralisation.
const unsigned _num_initial_conc
Number of secondary species concentrations supplied by the user.
MaterialProperty< std::vector< Real > > & _sec_conc
Mineral concentrations at quadpoint or nodes.
const unsigned int _num_reactions
Number of equations in the aqueous geochemistry system.
const MaterialProperty< std::vector< Real > > & _saturation
Saturation.
Base class for all PorousFlow vector materials.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Member Function Documentation

◆ computeQpProperties()

void PorousFlowAqueousPreDisMineral::computeQpProperties ( )
overrideprotected

Definition at line 92 of file PorousFlowAqueousPreDisMineral.C.

93{
95
96 /*
97 *
98 * Note the use of the OLD value of porosity here.
99 * This strategy, which breaks the cyclic dependency between porosity
100 * and mineral concentration, is used in
101 * Kernel: PorousFlowPreDis
102 * Material: PorousFlowPorosity
103 * Material: PorousFlowAqueousPreDisChemistry
104 * Material: PorousFlowAqueousPreDisMineral
105 *
106 */
107 for (unsigned r = 0; r < _num_reactions; ++r)
108 _sec_conc[_qp][r] = _sec_conc_old[_qp][r] + _porosity_old[_qp] * _reaction_rate[_qp][r] *
109 _saturation[_qp][_aq_ph] * _dt;
110}
virtual void resize(const std::size_t size) override final

◆ initQpStatefulProperties()

void PorousFlowAqueousPreDisMineral::initQpStatefulProperties ( )
overrideprotected

Definition at line 83 of file PorousFlowAqueousPreDisMineral.C.

84{
85 _sec_conc[_qp].assign(_num_reactions, 0.0);
87 for (unsigned r = 0; r < _num_reactions; ++r)
88 _sec_conc[_qp][r] = (*_initial_conc[r])[_qp];
89}

◆ validParams()

InputParameters PorousFlowAqueousPreDisMineral::validParams ( )
static

Definition at line 15 of file PorousFlowAqueousPreDisMineral.C.

16{
18 params.addCoupledVar("initial_concentrations",
19 "Initial concentrations for the mineral species "
20 "(m^{3}(precipitate)/m^{3}(porous material)). Default = 0");
21 params.addPrivateParam<std::string>("pf_material_type", "mineral");
22 params.addClassDescription("This Material forms a std::vector of mineral concentrations "
23 "(volume-of-mineral/volume-of-material) appropriate to the aqueous "
24 "precipitation-dissolution system provided.");
25 return params;
26}
void addPrivateParam(const std::string &name, const T &value)
void addClassDescription(const std::string &doc_string)
void addCoupledVar(const std::string &name, const std::string &doc_string)

Member Data Documentation

◆ _aq_ph

const unsigned int PorousFlowAqueousPreDisMineral::_aq_ph
protected

Aqueous phase number.

Definition at line 34 of file PorousFlowAqueousPreDisMineral.h.

Referenced by computeQpProperties().

◆ _initial_conc

std::vector<const VariableValue *> PorousFlowAqueousPreDisMineral::_initial_conc
protected

Initial values of the secondary species concentrations.

Definition at line 59 of file PorousFlowAqueousPreDisMineral.h.

Referenced by initQpStatefulProperties(), and PorousFlowAqueousPreDisMineral().

◆ _initial_conc_supplied

const bool PorousFlowAqueousPreDisMineral::_initial_conc_supplied
protected

Whether the initial values of the secondary species concentrations have been supplied by the user.

Definition at line 53 of file PorousFlowAqueousPreDisMineral.h.

Referenced by initQpStatefulProperties(), and PorousFlowAqueousPreDisMineral().

◆ _num_components

const unsigned int PorousFlowMaterialVectorBase::_num_components
protectedinherited

◆ _num_initial_conc

const unsigned PorousFlowAqueousPreDisMineral::_num_initial_conc
protected

Number of secondary species concentrations supplied by the user.

Definition at line 56 of file PorousFlowAqueousPreDisMineral.h.

Referenced by PorousFlowAqueousPreDisMineral().

◆ _num_phases

const unsigned int PorousFlowMaterialVectorBase::_num_phases
protectedinherited

◆ _num_reactions

const unsigned int PorousFlowAqueousPreDisMineral::_num_reactions
protected

Number of equations in the aqueous geochemistry system.

Definition at line 31 of file PorousFlowAqueousPreDisMineral.h.

Referenced by computeQpProperties(), initQpStatefulProperties(), and PorousFlowAqueousPreDisMineral().

◆ _num_var

const unsigned int PorousFlowMaterialVectorBase::_num_var
protectedinherited

◆ _porosity_old

const MaterialProperty<Real>& PorousFlowAqueousPreDisMineral::_porosity_old
protected

Porosity.

Definition at line 43 of file PorousFlowAqueousPreDisMineral.h.

Referenced by computeQpProperties().

◆ _reaction_rate

const MaterialProperty<std::vector<Real> >& PorousFlowAqueousPreDisMineral::_reaction_rate
protected

Reaction rate of mineralisation.

Definition at line 49 of file PorousFlowAqueousPreDisMineral.h.

Referenced by computeQpProperties().

◆ _saturation

const MaterialProperty<std::vector<Real> >& PorousFlowAqueousPreDisMineral::_saturation
protected

Saturation.

Definition at line 37 of file PorousFlowAqueousPreDisMineral.h.

Referenced by computeQpProperties().

◆ _sec_conc

MaterialProperty<std::vector<Real> >& PorousFlowAqueousPreDisMineral::_sec_conc
protected

Mineral concentrations at quadpoint or nodes.

Definition at line 40 of file PorousFlowAqueousPreDisMineral.h.

Referenced by computeQpProperties(), and initQpStatefulProperties().

◆ _sec_conc_old

const MaterialProperty<std::vector<Real> >& PorousFlowAqueousPreDisMineral::_sec_conc_old
protected

Old values of the mineral species concentrations.

Definition at line 46 of file PorousFlowAqueousPreDisMineral.h.

Referenced by computeQpProperties().


The documentation for this class was generated from the following files: