Loading [MathJax]/extensions/tex2jax.js
https://mooseframework.inl.gov
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected 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. More...
 
const unsigned int _aq_ph
 Aqueous phase number. More...
 
const MaterialProperty< std::vector< Real > > & _saturation
 Saturation. More...
 
MaterialProperty< std::vector< Real > > & _sec_conc
 Mineral concentrations at quadpoint or nodes. More...
 
const MaterialProperty< Real > & _porosity_old
 Porosity. More...
 
const MaterialProperty< std::vector< Real > > & _sec_conc_old
 Old values of the mineral species concentrations. More...
 
const MaterialProperty< std::vector< Real > > & _reaction_rate
 Reaction rate of mineralisation. More...
 
const bool _initial_conc_supplied
 Whether the initial values of the secondary species concentrations have been supplied by the user. More...
 
const unsigned _num_initial_conc
 Number of secondary species concentrations supplied by the user. More...
 
std::vector< const VariableValue * > _initial_conc
 Initial values of the secondary species concentrations. More...
 
const unsigned int _num_phases
 Number of phases. More...
 
const unsigned int _num_components
 Number of fluid components. More...
 
const unsigned int _num_var
 Number of PorousFlow variables. More...
 

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 }
std::vector< const VariableValue * > _initial_conc
Initial values of the secondary species concentrations.
const unsigned int _aq_ph
Aqueous phase number.
void mooseError(Args &&... args)
const MaterialProperty< Real > & _porosity_old
Porosity.
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 > > & _saturation
Saturation.
MaterialProperty< std::vector< Real > > & _sec_conc
Mineral concentrations at quadpoint or nodes.
const unsigned _num_initial_conc
Number of secondary species concentrations supplied by the user.
PorousFlowMaterialVectorBase(const InputParameters &parameters)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const MaterialProperty< std::vector< Real > > & _reaction_rate
Reaction rate of mineralisation.
const unsigned int _num_reactions
Number of equations in the aqueous geochemistry system.
const MaterialProperty< std::vector< Real > > & _sec_conc_old
Old values of the mineral species concentrations.

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 }
const unsigned int _aq_ph
Aqueous phase number.
const MaterialProperty< Real > & _porosity_old
Porosity.
const MaterialProperty< std::vector< Real > > & _saturation
Saturation.
virtual void resize(const std::size_t size) override final
MaterialProperty< std::vector< Real > > & _sec_conc
Mineral concentrations at quadpoint or nodes.
const MaterialProperty< std::vector< Real > > & _reaction_rate
Reaction rate of mineralisation.
const unsigned int _num_reactions
Number of equations in the aqueous geochemistry system.
const MaterialProperty< std::vector< Real > > & _sec_conc_old
Old values of the mineral species concentrations.

◆ 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 }
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...
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.

◆ 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 addCoupledVar(const std::string &name, const std::string &doc_string)
void addClassDescription(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: