https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
GeochemistrySpatialReactor Class Reference

Class that controls the space-dependent and time-dependent geochemistry reactions. More...

#include <GeochemistrySpatialReactor.h>

Inheritance diagram for GeochemistrySpatialReactor:
[legend]

Public Types

enum  TEST_TYPE
 
typedef DataFileName DataFileParameterType
 

Public Member Functions

 GeochemistrySpatialReactor (const InputParameters &parameters)
 
virtual void initialize () override
 
virtual void finalize () override
 the main-thread information is used to set the other-thread information in finalize() More...
 
virtual void threadJoin (const UserObject &uo) override
 
virtual void initialSetup () override
 
virtual void execute () override
 
virtual void meshChanged () override
 
virtual const GeochemicalSystemgetGeochemicalSystem (dof_id_type node_id) const override
 
virtual const std::stringstream & getSolverOutput (dof_id_type node_id) const override
 
virtual unsigned getSolverIterations (dof_id_type node_id) const override
 
virtual Real getSolverResidual (dof_id_type node_id) const override
 
virtual const DenseVector< Real > & getMoleAdditions (dof_id_type node_id) const override
 
virtual Real getMolesDumped (dof_id_type node_id, const std::string &species) const override
 
const PertinentGeochemicalSystemgetPertinentGeochemicalSystem () const
 returns a reference to the PertinentGeochemicalSystem used to creat the ModelGeochemicalDatabase More...
 
virtual void subdomainSetup () override
 
bool isUniqueNodeExecute ()
 
SubProblemgetSubProblem () const
 
bool shouldDuplicateInitialExecution () const
 
virtual Real spatialValue (const Point &) const
 
virtual const std::vector< Point > spatialPoints () const
 
void gatherSum (T &value)
 
void gatherMax (T &value)
 
void gatherMin (T &value)
 
void gatherProxyValueMax (T1 &proxy, T2 &value)
 
void gatherProxyValueMin (T1 &proxy, T2 &value)
 
void setPrimaryThreadCopy (UserObject *primary)
 
UserObjectprimaryThreadCopy ()
 
std::set< UserObjectName > getDependObjects () const
 
virtual bool needThreadedCopy () const
 
const std::set< std::string > & getRequestedItems () override
 
const std::set< std::string > & getSuppliedItems () override
 
unsigned int systemNumber () const
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
virtual const std::string & name () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
virtual void timestepSetup ()
 
virtual void jacobianSetup ()
 
virtual void residualSetup ()
 
virtual void customSetup (const ExecFlagType &)
 
const ExecFlagEnumgetExecuteOnEnum () const
 
UserObjectName getUserObjectName (const std::string &param_name) const
 
const T & getUserObject (const std::string &param_name, bool is_dependency=true) const
 
const T & getUserObjectByName (const UserObjectName &object_name, bool is_dependency=true) const
 
const UserObjectgetUserObjectBase (const std::string &param_name, bool is_dependency=true) const
 
const UserObjectgetUserObjectBaseByName (const UserObjectName &object_name, bool is_dependency=true) const
 
const std::vector< SubdomainName > & blocks () const
 
unsigned int numBlocks () const
 
virtual const std::set< SubdomainID > & blockIDs () const
 
unsigned int blocksMaxDimension () const
 
bool hasBlocks (const SubdomainName &name) const
 
bool hasBlocks (const std::vector< SubdomainName > &names) const
 
bool hasBlocks (const std::set< SubdomainName > &names) const
 
bool hasBlocks (SubdomainID id) const
 
bool hasBlocks (const std::vector< SubdomainID > &ids) const
 
bool hasBlocks (const std::set< SubdomainID > &ids) const
 
bool isBlockSubset (const std::set< SubdomainID > &ids) const
 
bool isBlockSubset (const std::vector< SubdomainID > &ids) const
 
bool hasBlockMaterialProperty (const std::string &prop_name)
 
const std::set< SubdomainID > & meshBlockIDs () const
 
virtual bool blockRestricted () const
 
virtual void checkVariable (const MooseVariableFieldBase &variable) const
 
virtual const std::set< BoundaryID > & boundaryIDs () const
 
const std::vector< BoundaryName > & boundaryNames () const
 
unsigned int numBoundaryIDs () const
 
bool hasBoundary (const BoundaryName &name) const
 
bool hasBoundary (const std::vector< BoundaryName > &names) const
 
bool hasBoundary (const BoundaryID &id) const
 
bool hasBoundary (const std::vector< BoundaryID > &ids, TEST_TYPE type=ALL) const
 
bool hasBoundary (const std::set< BoundaryID > &ids, TEST_TYPE type=ALL) const
 
bool isBoundarySubset (const std::set< BoundaryID > &ids) const
 
bool isBoundarySubset (const std::vector< BoundaryID > &ids) const
 
bool hasBoundaryMaterialProperty (const std::string &prop_name) const
 
virtual bool boundaryRestricted () const
 
const std::set< BoundaryID > & meshBoundaryIDs () const
 
virtual bool checkVariableBoundaryIntegrity () const
 
virtual const VariableValuecoupledValueByName (const std::string &var_name)
 
virtual const ArrayVariableValuecoupledArrayValueByName (const std::string &var_name)
 
const std::unordered_map< std::string, std::vector< MooseVariableFieldBase *> > & getCoupledVars () const
 
const std::vector< MooseVariableFieldBase *> & getCoupledMooseVars () const
 
const std::vector< MooseVariable *> & getCoupledStandardMooseVars () const
 
const std::vector< VectorMooseVariable *> & getCoupledVectorMooseVars () const
 
const std::vector< ArrayMooseVariable *> & getCoupledArrayMooseVars () const
 
void addFEVariableCoupleableVectorTag (TagID tag)
 
void addFEVariableCoupleableMatrixTag (TagID tag)
 
std::set< TagID > & getFEVariableCoupleableVectorTags ()
 
const std::set< TagID > & getFEVariableCoupleableVectorTags () const
 
std::set< TagID > & getFEVariableCoupleableMatrixTags ()
 
const std::set< TagID > & getFEVariableCoupleableMatrixTags () const
 
auto & getWritableCoupledVariables () const
 
bool hasWritableCoupledVariables () const
 
const ADVariableValuegetADDefaultValue (const std::string &var_name) const
 
const ADVectorVariableValuegetADDefaultVectorValue (const std::string &var_name) const
 
const ADVariableGradientgetADDefaultGradient () const
 
const ADVectorVariableGradientgetADDefaultVectorGradient () const
 
const ADVariableSecondgetADDefaultSecond () const
 
const ADVectorVariableCurlgetADDefaultCurl () const
 
const std::vector< MooseVariableScalar *> & getCoupledMooseScalarVars ()
 
const std::set< TagID > & getScalarVariableCoupleableVectorTags () const
 
const std::set< TagID > & getScalarVariableCoupleableMatrixTags () const
 
const std::set< MooseVariableFieldBase *> & getMooseVariableDependencies () const
 
std::set< MooseVariableFieldBase *> checkAllVariables (const DofObjectType &dof_object, const std::set< MooseVariableFieldBase * > &vars_to_omit={})
 
std::set< MooseVariableFieldBase *> checkVariables (const DofObjectType &dof_object, const std::set< MooseVariableFieldBase * > &vars_to_check)
 
void addMooseVariableDependency (MooseVariableFieldBase *var)
 
void addMooseVariableDependency (const std::vector< MooseVariableFieldBase * > &vars)
 
bool isImplicit ()
 
Moose::StateArg determineState () const
 
void setRandomResetFrequency (ExecFlagType exec_flag)
 
unsigned long getRandomLong () const
 
Real getRandomReal () const
 
unsigned int getSeed (std::size_t id)
 
unsigned int getMasterSeed () const
 
bool isNodal () const
 
ExecFlagType getResetOnTime () const
 
void setRandomDataPointer (RandomData *random_data)
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
const FunctiongetFunction (const std::string &name) const
 
const FunctiongetFunctionByName (const FunctionName &name) const
 
bool hasFunction (const std::string &param_name) const
 
bool hasFunctionByName (const FunctionName &name) const
 
bool isDefaultPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
bool hasPostprocessor (const std::string &param_name, const unsigned int index=0) const
 
bool hasPostprocessorByName (const PostprocessorName &name) const
 
std::size_t coupledPostprocessors (const std::string &param_name) const
 
const PostprocessorName & getPostprocessorName (const std::string &param_name, const unsigned int index=0) const
 
const VectorPostprocessorValuegetVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name) const
 
const VectorPostprocessorName & getVectorPostprocessorName (const std::string &param_name) const
 
T & getSampler (const std::string &name)
 
SamplergetSampler (const std::string &name)
 
T & getSamplerByName (const SamplerName &name)
 
SamplergetSamplerByName (const SamplerName &name)
 
virtual void meshDisplaced ()
 
PerfGraphperfGraph ()
 
const PostprocessorValuegetPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOld (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOld (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOlder (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOlder (const std::string &param_name, const unsigned int index=0) const
 
virtual const PostprocessorValuegetPostprocessorValueByName (const PostprocessorName &name) const
 
virtual const PostprocessorValuegetPostprocessorValueByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOldByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOldByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOlderByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOlderByName (const PostprocessorName &name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
const DistributiongetDistribution (const std::string &name) const
 
const T & getDistribution (const std::string &name) const
 
const DistributiongetDistribution (const std::string &name) const
 
const T & getDistribution (const std::string &name) const
 
const DistributiongetDistributionByName (const DistributionName &name) const
 
const T & getDistributionByName (const std::string &name) const
 
const DistributiongetDistributionByName (const DistributionName &name) const
 
const T & getDistributionByName (const std::string &name) const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters sharedParams ()
 params that are shared with AddTimeDependentReactionSolverAction More...
 
static InputParameters validParams ()
 
static void sort (typename std::vector< T > &vector)
 
static void sortDFS (typename std::vector< T > &vector)
 
static void cyclicDependencyError (CyclicDependencyException< T2 > &e, const std::string &header)
 
static bool restricted (const std::set< BoundaryID > &ids)
 

Public Attributes

 ALL
 
 ANY
 
const ConsoleStream _console
 

Static Public Attributes

static constexpr auto SYSTEM
 
static constexpr auto NAME
 

Protected Member Functions

void buildMyNodeNumber ()
 Build the _my_node_number map. More...
 
virtual void addPostprocessorDependencyHelper (const PostprocessorName &name) const override
 
virtual void addVectorPostprocessorDependencyHelper (const VectorPostprocessorName &name) const override
 
virtual void addUserObjectDependencyHelper (const UserObject &uo) const override
 
void addReporterDependencyHelper (const ReporterName &reporter_name) override
 
const ReporterNamegetReporterName (const std::string &param_name) const
 
T & declareRestartableData (const std::string &data_name, Args &&... args)
 
ManagedValue< T > declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
const T & getRestartableData (const std::string &data_name) const
 
T & declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
T & declareRecoverableData (const std::string &data_name, Args &&... args)
 
T & declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args)
 
T & declareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args)
 
std::string restartableName (const std::string &data_name) const
 
const T & getMeshProperty (const std::string &data_name, const std::string &prefix)
 
const T & getMeshProperty (const std::string &data_name)
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name) const
 
bool hasMeshProperty (const std::string &data_name) const
 
std::string meshPropertyName (const std::string &data_name) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 
virtual bool hasBlockMaterialPropertyHelper (const std::string &prop_name)
 
void initializeBlockRestrictable (const MooseObject *moose_object)
 
Moose::CoordinateSystemType getBlockCoordSystem ()
 
bool hasBoundaryMaterialPropertyHelper (const std::string &prop_name) const
 
virtual void coupledCallback (const std::string &, bool) const
 
virtual bool isCoupled (const std::string &var_name, unsigned int i=0) const
 
virtual bool isCoupledConstant (const std::string &var_name) const
 
unsigned int coupledComponents (const std::string &var_name) const
 
VariableName coupledName (const std::string &var_name, unsigned int comp=0) const
 
std::vector< VariableName > coupledNames (const std::string &var_name) const
 
virtual unsigned int coupled (const std::string &var_name, unsigned int comp=0) const
 
std::vector< unsigned intcoupledIndices (const std::string &var_name) const
 
virtual const VariableValuecoupledValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledValues (const std::string &var_name) const
 
std::vector< const VectorVariableValue *> coupledVectorValues (const std::string &var_name) const
 
const GenericVariableValue< is_ad > & coupledGenericValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericValue (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericValue (const std::string &var_name, unsigned int comp) const
 
const GenericVectorVariableValue< is_ad > & coupledGenericVectorValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVectorVariableValue< false > & coupledGenericVectorValue (const std::string &var_name, unsigned int comp) const
 
const GenericVectorVariableValue< true > & coupledGenericVectorValue (const std::string &var_name, unsigned int comp) const
 
std::vector< const GenericVariableValue< is_ad > *> coupledGenericValues (const std::string &var_name) const
 
std::vector< const GenericVariableValue< false > *> coupledGenericValues (const std::string &var_name) const
 
std::vector< const GenericVariableValue< true > *> coupledGenericValues (const std::string &var_name) const
 
const GenericVariableValue< is_ad > & coupledGenericDofValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericDofValue (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericDofValue (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< is_ad > & coupledGenericDot (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericDot (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericDot (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< is_ad > & coupledGenericDotDot (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericDotDot (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericDotDot (const std::string &var_name, unsigned int comp) const
 
virtual const VariableValuecoupledValueLower (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVariableValue *> adCoupledValues (const std::string &var_name) const
 
const ADVariableValueadCoupledLowerValue (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableValueadCoupledVectorValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVectorVariableValue *> adCoupledVectorValues (const std::string &var_name) const
 
virtual const VariableValuecoupledVectorTagValue (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const VariableValuecoupledVectorTagValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const VariableValue *> coupledVectorTagValues (const std::string &var_names, TagID tag) const
 
std::vector< const VariableValue *> coupledVectorTagValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const ArrayVariableValuecoupledVectorTagArrayValue (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const ArrayVariableValuecoupledVectorTagArrayValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const ArrayVariableValue *> coupledVectorTagArrayValues (const std::string &var_names, TagID tag) const
 
std::vector< const ArrayVariableValue *> coupledVectorTagArrayValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const VariableGradientcoupledVectorTagGradient (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const VariableGradientcoupledVectorTagGradient (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const VariableGradient *> coupledVectorTagGradients (const std::string &var_names, TagID tag) const
 
std::vector< const VariableGradient *> coupledVectorTagGradients (const std::string &var_names, const std::string &tag_name) const
 
virtual const ArrayVariableGradientcoupledVectorTagArrayGradient (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const ArrayVariableGradientcoupledVectorTagArrayGradient (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const ArrayVariableGradient *> coupledVectorTagArrayGradients (const std::string &var_names, TagID tag) const
 
std::vector< const ArrayVariableGradient *> coupledVectorTagArrayGradients (const std::string &var_names, const std::string &tag_name) const
 
virtual const VariableValuecoupledVectorTagDofValue (const std::string &var_name, TagID tag, unsigned int index=0) const
 
virtual const VariableValuecoupledVectorTagDofValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
const ArrayVariableValuecoupledVectorTagArrayDofValue (const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledVectorTagDofValues (const std::string &var_names, TagID tag) const
 
std::vector< const VariableValue *> coupledVectorTagDofValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const VariableValuecoupledMatrixTagValue (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const VariableValuecoupledMatrixTagValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const VariableValue *> coupledMatrixTagValues (const std::string &var_names, TagID tag) const
 
std::vector< const VariableValue *> coupledMatrixTagValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const VectorVariableValuecoupledVectorValue (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ArrayVariableValue *> coupledArrayValues (const std::string &var_name) const
 
MooseWritableVariablewritableVariable (const std::string &var_name, unsigned int comp=0)
 
virtual VariableValuewritableCoupledValue (const std::string &var_name, unsigned int comp=0)
 
void checkWritableVar (MooseWritableVariable *var)
 
virtual const VariableValuecoupledValueOld (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledValuesOld (const std::string &var_name) const
 
std::vector< const VectorVariableValue *> coupledVectorValuesOld (const std::string &var_name) const
 
virtual const VariableValuecoupledValueOlder (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledValuesOlder (const std::string &var_name) const
 
virtual const VariableValuecoupledValuePreviousNL (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorValueOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorValueOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayValueOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayValueOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradient (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableGradient *> coupledGradients (const std::string &var_name) const
 
const ADVariableGradientadCoupledGradient (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableGradientadCoupledGradientDot (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVariableGradient *> adCoupledGradients (const std::string &var_name) const
 
const GenericVariableGradient< is_ad > & coupledGenericGradient (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableGradient< false > & coupledGenericGradient (const std::string &var_name, unsigned int comp) const
 
const GenericVariableGradient< true > & coupledGenericGradient (const std::string &var_name, unsigned int comp) const
 
std::vector< const GenericVariableGradient< is_ad > *> coupledGenericGradients (const std::string &var_name) const
 
std::vector< const GenericVariableGradient< false > *> coupledGenericGradients (const std::string &var_name) const
 
std::vector< const GenericVariableGradient< true > *> coupledGenericGradients (const std::string &var_name) const
 
const ADVectorVariableGradientadCoupledVectorGradient (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableSecondadCoupledSecond (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableSecondadCoupledVectorSecond (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientOld (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableGradient *> coupledGradientsOld (const std::string &var_name) const
 
virtual const VariableGradientcoupledGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientPreviousNL (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorGradientOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradientOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradientDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableCurlcoupledCurl (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableCurlcoupledCurlOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableCurlcoupledCurlOlder (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableCurladCoupledCurl (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableDivergencecoupledDiv (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableDivergencecoupledDivOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableDivergencecoupledDivOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecond (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecondOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecondOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecondPreviousNL (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDot (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledDots (const std::string &var_name) const
 
virtual const VariableValuecoupledDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledDot (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVariableValue *> adCoupledDots (const std::string &var_name) const
 
const ADVariableValueadCoupledDotDot (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableValueadCoupledVectorDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledVectorDotDu (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledVectorDotDotDu (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotDu (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotDotDu (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledArrayDotDu (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValue (const std::string &var_name, unsigned int comp=0) const
 
const Moose::ADType< T >::typeadCoupledNodalValue (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValueOld (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValueOlder (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValuePreviousNL (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNodalDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNodalDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNodalDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDofValues (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledAllDofValues (const std::string &var_name) const
 
virtual const VariableValuecoupledDofValuesOld (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledAllDofValuesOld (const std::string &var_name) const
 
virtual const VariableValuecoupledDofValuesOlder (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledAllDofValuesOlder (const std::string &var_name) const
 
virtual const ArrayVariableValuecoupledArrayDofValues (const std::string &var_name, unsigned int comp=0) const
 
virtual const ADVariableValueadCoupledDofValues (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadZeroValue () const
 
const ADVariableGradientadZeroGradient () const
 
const ADVariableSecondadZeroSecond () const
 
const GenericVariableValue< is_ad > & genericZeroValue ()
 
const GenericVariableValue< false > & genericZeroValue ()
 
const GenericVariableValue< true > & genericZeroValue ()
 
const GenericVariableGradient< is_ad > & genericZeroGradient ()
 
const GenericVariableGradient< false > & genericZeroGradient ()
 
const GenericVariableGradient< true > & genericZeroGradient ()
 
const GenericVariableSecond< is_ad > & genericZeroSecond ()
 
const GenericVariableSecond< false > & genericZeroSecond ()
 
const GenericVariableSecond< true > & genericZeroSecond ()
 
bool checkVar (const std::string &var_name, unsigned int comp=0, unsigned int comp_bound=0) const
 
const MooseVariableFieldBasegetFEVar (const std::string &var_name, unsigned int comp) const
 
const MooseVariableFieldBasegetFieldVar (const std::string &var_name, unsigned int comp) const
 
MooseVariableFieldBasegetFieldVar (const std::string &var_name, unsigned int comp)
 
const T * getVarHelper (const std::string &var_name, unsigned int comp) const
 
T * getVarHelper (const std::string &var_name, unsigned int comp)
 
MooseVariablegetVar (const std::string &var_name, unsigned int comp)
 
const MooseVariablegetVar (const std::string &var_name, unsigned int comp) const
 
VectorMooseVariablegetVectorVar (const std::string &var_name, unsigned int comp)
 
const VectorMooseVariablegetVectorVar (const std::string &var_name, unsigned int comp) const
 
ArrayMooseVariablegetArrayVar (const std::string &var_name, unsigned int comp)
 
const ArrayMooseVariablegetArrayVar (const std::string &var_name, unsigned int comp) const
 
void validateExecutionerType (const std::string &name, const std::string &fn_name) const
 
std::vector< T > coupledVectorHelper (const std::string &var_name, const Func &func) const
 
bool isCoupledScalar (const std::string &var_name, unsigned int i=0) const
 
unsigned int coupledScalarComponents (const std::string &var_name) const
 
unsigned int coupledScalar (const std::string &var_name, unsigned int comp=0) const
 
libMesh::Order coupledScalarOrder (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< is_ad > & coupledGenericScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const
 
const VariableValuecoupledVectorTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const
 
const VariableValuecoupledMatrixTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const
 
const VariableValuecoupledScalarValueOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarValueOlder (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDot (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledScalarDot (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDot (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDu (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDotDu (const std::string &var_name, unsigned int comp=0) const
 
const MooseVariableScalargetScalarVar (const std::string &var_name, unsigned int comp) const
 
const T & getReporterValue (const std::string &param_name, const std::size_t time_index=0)
 
const T & getReporterValue (const std::string &param_name, ReporterMode mode, const std::size_t time_index=0)
 
const T & getReporterValue (const std::string &param_name, const std::size_t time_index=0)
 
const T & getReporterValue (const std::string &param_name, ReporterMode mode, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0)
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 

Static Protected Member Functions

static std::string meshPropertyName (const std::string &data_name, const std::string &prefix)
 

Protected Attributes

const Real _initial_temperature
 Initial equilibration temperature. More...
 
const VariableValue_temperature
 Temperature specified by user. More...
 
const unsigned _num_kin
 Number of kinetic species. More...
 
std::vector< ModelGeochemicalDatabase_mgd_at_node
 ModelGeochemicalDatabase at each node. More...
 
std::vector< GeochemicalSystem_egs_at_node
 GeochemicalSystem at each node. More...
 
GeochemicalSystem _egs_copy
 GeochemicalSystem into which the nodal GeochemicalSystem is copied to enable recovery during adaptive timestepping. More...
 
GeochemicalSolver _solver
 The solver. More...
 
const Real _close_system_at_time
 Defines the time at which to close the system. More...
 
bool _closed_system
 Whether the system has been closed. More...
 
const std::vector< std::string > _source_species_names
 Names of the source species. More...
 
const unsigned _num_source_species
 Number of source species. More...
 
std::vector< const VariableValue * > _source_species_rates
 Rates of the source species. More...
 
const std::vector< std::string > _remove_fixed_activity_name
 Names of species to remove the fixed activity or fugacity constraint from. More...
 
const std::vector< Real_remove_fixed_activity_time
 Times at which to remove the fixed activity or fugacity from the species in _remove_fixed_activity_name. More...
 
const unsigned _num_removed_fixed
 Number of elements in the vector _remove_fixed_activity_name;. More...
 
std::vector< std::vector< bool > > _removed_fixed_activity
 Whether the activity or activity constraint has been removed at each node. More...
 
const std::vector< std::string > _controlled_activity_species_names
 Names of the species with controlled activity or fugacity. More...
 
const unsigned _num_controlled_activity
 Number of species with controlled activity or fugacity. More...
 
std::vector< const VariableValue * > _controlled_activity_species_values
 Activity or fugacity of the species with controlled activity or fugacity. More...
 
DenseVector< Real_mole_rates
 Rate of mole additions. More...
 
std::vector< DenseVector< Real > > _mole_additions
 Moles of each basis species added at each node at the current timestep, along with kinetic rates. More...
 
std::vector< DenseMatrix< Real > > _dmole_additions
 Derivative of moles_added. More...
 
const unsigned _ramp_subsequent
 the ramp_max_ionic_strength to use during time-stepping More...
 
std::unordered_map< dof_id_type, unsigned > _my_node_number
 _my_node_number[_current_node->id()] = node number used in this object that corresponds to _current_node->id() More...
 
std::vector< bool > _execute_done
 whether execute has been called using this thread More...
 
const bool _adaptive_timestepping
 Whether to use adaptive timestepping at the nodes. More...
 
const Real _dt_min
 minimum value of dt allowed during adpative timestepping. This is set to a large number if _adaptive_timestepping = false so that if any solve ever fails, this class will throw a mooseException More...
 
const Real _dt_dec
 value to multiply dt my in the case of a failed solve More...
 
const Real _dt_inc
 value to multiply dt my in the case of a successful solve More...
 
unsigned _nthreads
 number of threads used to execute this UserObject More...
 
const unsigned _num_my_nodes
 Number of nodes handled by this processor (will need to be made un-const when mesh adaptivity is handled) More...
 
ModelGeochemicalDatabase _mgd
 my copy of the underlying ModelGeochemicalDatabase More...
 
const PertinentGeochemicalSystem_pgs
 Reference to the original PertinentGeochemicalSystem used to create the ModelGeochemicalDatabase. More...
 
const unsigned _num_basis
 number of basis species More...
 
const unsigned _num_eqm
 number of equilibrium species More...
 
const Real _initial_max_ionic_str
 Initial value of maximum ionic strength. More...
 
GeochemistryIonicStrength _is
 The ionic strength calculator. More...
 
GeochemistryActivityCoefficientsDebyeHuckel _gac
 The activity calculator. More...
 
const unsigned _max_swaps_allowed
 Maximum number of swaps allowed during a single solve. More...
 
GeochemistrySpeciesSwapper _swapper
 The species swapper. More...
 
const Real _small_molality
 A small value of molality. More...
 
std::vector< std::stringstream > _solver_output
 The solver output at each node. More...
 
std::vector< unsigned > _tot_iter
 Number of iterations used by the solver at each node. More...
 
std::vector< Real_abs_residual
 L1norm of the solver residual at each node. More...
 
MooseMesh_mesh
 
const unsigned int _qp
 
const Node *const & _current_node
 
const bool & _unique_node_execute
 
SubProblem_subproblem
 
FEProblemBase_fe_problem
 
SystemBase_sys
 
const THREAD_ID _tid
 
Assembly_assembly
 
const Moose::CoordinateSystemType_coord_sys
 
const bool _duplicate_initial_execution
 
std::set< std::string > _depend_uo
 
const bool & _enabled
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
const ExecFlagEnum_execute_enum
 
const ExecFlagType_current_execute_flag
 
MooseApp_restartable_app
 
const std::string _restartable_system_name
 
const THREAD_ID _restartable_tid
 
const bool _restartable_read_only
 
FEProblemBase_mci_feproblem
 
FEProblemBase_mdi_feproblem
 
MooseApp_pg_moose_app
 
const std::string _prefix
 
const MaterialData_blk_material_data
 
const InputParameters_c_parameters
 
const std::string & _c_name
 
const std::string & _c_type
 
FEProblemBase_c_fe_problem
 
const SystemBase *const _c_sys
 
std::unordered_map< std::string, std::vector< MooseVariableFieldBase *> > _coupled_vars
 
std::vector< MooseVariableFieldBase *> _coupled_moose_vars
 
std::vector< MooseVariable *> _coupled_standard_moose_vars
 
std::vector< VectorMooseVariable *> _coupled_vector_moose_vars
 
std::vector< ArrayMooseVariable *> _coupled_array_moose_vars
 
std::vector< MooseVariableFV< Real > *> _coupled_standard_fv_moose_vars
 
std::vector< MooseLinearVariableFV< Real > *> _coupled_standard_linear_fv_moose_vars
 
const std::unordered_map< std::string, std::string > & _new_to_deprecated_coupled_vars
 
bool _c_nodal
 
bool _c_is_implicit
 
const bool _c_allow_element_to_nodal_coupling
 
THREAD_ID _c_tid
 
std::unordered_map< std::string, std::vector< std::unique_ptr< VariableValue > > > _default_value
 
std::unordered_map< std::string, std::unique_ptr< MooseArray< ADReal > > > _ad_default_value
 
std::unordered_map< std::string, std::unique_ptr< VectorVariableValue > > _default_vector_value
 
std::unordered_map< std::string, std::unique_ptr< ArrayVariableValue > > _default_array_value
 
std::unordered_map< std::string, std::unique_ptr< MooseArray< ADRealVectorValue > > > _ad_default_vector_value
 
VariableValue _default_value_zero
 
VariableGradient _default_gradient
 
MooseArray< ADRealVectorValue_ad_default_gradient
 
MooseArray< ADRealTensorValue_ad_default_vector_gradient
 
VariableSecond _default_second
 
MooseArray< ADRealTensorValue_ad_default_second
 
MooseArray< ADRealVectorValue_ad_default_curl
 
const VariableValue_zero
 
const VariablePhiValue_phi_zero
 
const MooseArray< ADReal > & _ad_zero
 
const VariableGradient_grad_zero
 
const MooseArray< ADRealVectorValue > & _ad_grad_zero
 
const VariablePhiGradient_grad_phi_zero
 
const VariableSecond_second_zero
 
const MooseArray< ADRealTensorValue > & _ad_second_zero
 
const VariablePhiSecond_second_phi_zero
 
const VectorVariableValue_vector_zero
 
const VectorVariableCurl_vector_curl_zero
 
VectorVariableValue _default_vector_value_zero
 
VectorVariableGradient _default_vector_gradient
 
VectorVariableCurl _default_vector_curl
 
VectorVariableDivergence _default_div
 
ArrayVariableValue _default_array_value_zero
 
ArrayVariableGradient _default_array_gradient
 
bool _coupleable_neighbor
 
FEProblemBase_sc_fe_problem
 
const THREAD_ID _sc_tid
 
const Real_real_zero
 
const VariableValue_scalar_zero
 
const Point & _point_zero
 
const InputParameters_ti_params
 
FEProblemBase_ti_feproblem
 
bool _is_implicit
 
Real_t
 
const Real_t_old
 
int_t_step
 
Real_dt
 
Real_dt_old
 
bool _is_transient
 
const Parallel::Communicator & _communicator
 

Detailed Description

Class that controls the space-dependent and time-dependent geochemistry reactions.

Definition at line 18 of file GeochemistrySpatialReactor.h.

Constructor & Destructor Documentation

◆ GeochemistrySpatialReactor()

GeochemistrySpatialReactor::GeochemistrySpatialReactor ( const InputParameters parameters)

Definition at line 128 of file GeochemistrySpatialReactor.C.

130  _initial_temperature(getParam<Real>("initial_temperature")),
131  _temperature(coupledValue("temperature")),
133  // NOTE: initialize _mgd_at_node before the swaps are performed
135  _egs_at_node(),
136  // NOTE: the following implements the swaps in _mgd
137  _egs_copy(_mgd,
138  _gac,
139  _is,
140  _swapper,
141  getParam<std::vector<std::string>>("swap_out_of_basis"),
142  getParam<std::vector<std::string>>("swap_into_basis"),
143  getParam<std::string>("charge_balance_species"),
144  getParam<std::vector<std::string>>("constraint_species"),
145  getParam<std::vector<Real>>("constraint_value"),
146  getParam<MultiMooseEnum>("constraint_unit"),
147  getParam<MultiMooseEnum>("constraint_meaning"),
149  getParam<unsigned>("extra_iterations_to_make_consistent"),
150  getParam<Real>("min_initial_molality"),
151  getParam<std::vector<std::string>>("kinetic_species_name"),
152  getParam<std::vector<Real>>("kinetic_species_initial_value"),
153  getParam<MultiMooseEnum>("kinetic_species_unit")),
155  _mgd.kin_species_name.size(),
156  _is,
157  getParam<Real>("abs_tol"),
158  getParam<Real>("rel_tol"),
159  getParam<unsigned>("max_iter"),
160  getParam<Real>("max_initial_residual"),
163  getParam<std::vector<std::string>>("prevent_precipitation"),
164  getParam<Real>("max_ionic_strength"),
165  getParam<unsigned>("ramp_max_ionic_strength_initial"),
166  getParam<bool>("evaluate_kinetic_rates_always")),
167  _close_system_at_time(getParam<Real>("close_system_at_time")),
168  _closed_system(false),
169  _source_species_names(getParam<std::vector<std::string>>("source_species_names")),
172  _remove_fixed_activity_name(getParam<std::vector<std::string>>("remove_fixed_activity_name")),
173  _remove_fixed_activity_time(getParam<std::vector<Real>>("remove_fixed_activity_time")),
175  _removed_fixed_activity(_num_my_nodes, std::vector<bool>(_num_removed_fixed, false)),
177  getParam<std::vector<std::string>>("controlled_activity_name")),
181  _mole_additions(_num_my_nodes, DenseVector<Real>(_num_basis + _num_kin)),
184  _ramp_subsequent(getParam<unsigned>("ramp_max_ionic_strength_subsequent")),
185  _my_node_number(),
187  _adaptive_timestepping(getParam<bool>("adaptive_timestepping")),
188  _dt_min(_adaptive_timestepping ? getParam<Real>("dt_min") : std::numeric_limits<Real>::max()),
189  _dt_dec(getParam<Real>("dt_dec")),
190  _dt_inc(getParam<Real>("dt_inc")),
191  _nthreads(1)
192 {
193  // build _egs_at_node
194  for (unsigned i = 0; i < _num_my_nodes; ++i)
195  _egs_at_node.push_back(
197  _gac,
198  _is,
199  _swapper,
200  getParam<std::vector<std::string>>("swap_out_of_basis"),
201  getParam<std::vector<std::string>>("swap_into_basis"),
202  getParam<std::string>("charge_balance_species"),
203  getParam<std::vector<std::string>>("constraint_species"),
204  getParam<std::vector<Real>>("constraint_value"),
205  getParam<MultiMooseEnum>("constraint_unit"),
206  getParam<MultiMooseEnum>("constraint_meaning"),
208  getParam<unsigned>("extra_iterations_to_make_consistent"),
209  getParam<Real>("min_initial_molality"),
210  getParam<std::vector<std::string>>("kinetic_species_name"),
211  getParam<std::vector<Real>>("kinetic_species_initial_value"),
212  getParam<MultiMooseEnum>("kinetic_species_unit")));
213 
214  // check sources and set the rates
215  if (coupledComponents("source_species_rates") != _num_source_species)
216  paramError("source_species_names", "must have the same size as source_species_rates");
217  for (unsigned i = 0; i < _num_source_species; ++i)
218  _source_species_rates.push_back(&coupledValue("source_species_rates", i));
219  for (unsigned i = 0; i < _num_source_species; ++i)
220  if (!(_mgd.basis_species_index.count(_source_species_names[i]) == 1 ||
223  paramError("source_species_names",
224  "The name " + _source_species_names[i] +
225  " does not appear in the basis, equilibrium or kinetic species list");
226 
227  // check and set activity controllers
228  for (unsigned i = 0; i < _num_removed_fixed; ++i)
229  {
231  paramError(
232  "remove_fixed_activity_name",
233  "The species ",
235  " is not in the basis, so cannot have its activity or fugacity constraint removed");
236  else if (_num_my_nodes >
237  0) // don't consider the silly (but possible) case that there are no nodes
238  {
239  const unsigned basis_ind = _mgd.basis_species_index.at(_remove_fixed_activity_name[i]);
241  _egs_at_node[0].getConstraintMeaning()[basis_ind];
244  paramError("remove_fixed_activity_name",
245  "The species ",
247  " is does not have an activity or fugacity constraint so cannot have such a "
248  "constraint removed");
249  }
250  }
252  paramError("remove_fixed_activity_name",
253  "must be of the same size as remove_fixed_activity_time");
254  if (coupledComponents("controlled_activity_value") != _num_controlled_activity)
255  paramError("controlled_activity_name", "must have the same size as controlled_activity_value");
256  for (unsigned i = 0; i < _num_controlled_activity; ++i)
257  _controlled_activity_species_values.push_back(&coupledValue("controlled_activity_value", i));
258 
259  // record coupled variables
260  const std::vector<MooseVariableFEBase *> & coupled_vars = getCoupledMooseVars();
261  for (unsigned int i = 0; i < coupled_vars.size(); i++)
262  addMooseVariableDependency(coupled_vars[i]);
263 
265 }
const unsigned _num_basis
number of basis species
const Real _close_system_at_time
Defines the time at which to close the system.
const unsigned _ramp_subsequent
the ramp_max_ionic_strength to use during time-stepping
const unsigned _max_swaps_allowed
Maximum number of swaps allowed during a single solve.
void buildMyNodeNumber()
Build the _my_node_number map.
const unsigned _num_controlled_activity
Number of species with controlled activity or fugacity.
std::vector< const VariableValue * > _source_species_rates
Rates of the source species.
ModelGeochemicalDatabase _mgd
my copy of the underlying ModelGeochemicalDatabase
std::vector< DenseMatrix< Real > > _dmole_additions
Derivative of moles_added.
std::unordered_map< std::string, unsigned > basis_species_index
basis_species_index[name] = index of the basis species, within all ModelGeochemicalDatabase internal ...
GeochemicalSolver _solver
The solver.
const Real _initial_temperature
Initial equilibration temperature.
std::unordered_map< std::string, unsigned > eqm_species_index
eqm_species_index[name] = index of the equilibrium species (secondary aqueous species, redox couples in equilibrium with the aqueous solution, minerals in equilibrium with the aqueous solution, gases in equilibrium with the aqueous solution) within all ModelGeochemicalDatabase internal datastrcutres, with given name
DenseVector< Real > _mole_rates
Rate of mole additions.
const bool _adaptive_timestepping
Whether to use adaptive timestepping at the nodes.
std::unordered_map< std::string, unsigned > kin_species_index
kin_species_index[name] = index of the kinetic species, within all ModelGeochemicalDatabase internal ...
unsigned _nthreads
number of threads used to execute this UserObject
ConstraintMeaningEnum
Each basis species has one of the following constraints.
virtual const VariableValue & coupledValue(const std::string &var_name, unsigned int comp=0) const
const unsigned _num_my_nodes
Number of nodes handled by this processor (will need to be made un-const when mesh adaptivity is hand...
const VariableValue & _temperature
Temperature specified by user.
const Real _dt_inc
value to multiply dt my in the case of a successful solve
std::vector< std::vector< bool > > _removed_fixed_activity
Whether the activity or activity constraint has been removed at each node.
const unsigned _num_source_species
Number of source species.
const T & getParam(const std::string &name) const
const unsigned _num_kin
Number of kinetic species.
void paramError(const std::string &param, Args... args) const
GeochemicalSystem _egs_copy
GeochemicalSystem into which the nodal GeochemicalSystem is copied to enable recovery during adaptive...
const Real _dt_dec
value to multiply dt my in the case of a failed solve
std::vector< GeochemicalSystem > _egs_at_node
GeochemicalSystem at each node.
const std::vector< MooseVariableFieldBase *> & getCoupledMooseVars() const
unsigned int coupledComponents(const std::string &var_name) const
std::vector< const VariableValue * > _controlled_activity_species_values
Activity or fugacity of the species with controlled activity or fugacity.
void addMooseVariableDependency(MooseVariableFieldBase *var)
GeochemistryIonicStrength _is
The ionic strength calculator.
std::vector< bool > _execute_done
whether execute has been called using this thread
This class holds information about bulk composition, molalities, activities, activity coefficients...
GeochemistryReactorBase(const InputParameters &parameters)
GeochemistrySpeciesSwapper _swapper
The species swapper.
const InputParameters & parameters() const
std::unordered_map< dof_id_type, unsigned > _my_node_number
_my_node_number[_current_node->id()] = node number used in this object that corresponds to _current_n...
std::vector< std::string > kin_species_name
kin_species_name[j] = name of the j^th kinetic species
const std::vector< std::string > _controlled_activity_species_names
Names of the species with controlled activity or fugacity.
bool _closed_system
Whether the system has been closed.
const unsigned _num_removed_fixed
Number of elements in the vector _remove_fixed_activity_name;.
std::vector< DenseVector< Real > > _mole_additions
Moles of each basis species added at each node at the current timestep, along with kinetic rates...
const Real _small_molality
A small value of molality.
const Real _dt_min
minimum value of dt allowed during adpative timestepping. This is set to a large number if _adaptive_...
GeochemistryActivityCoefficientsDebyeHuckel _gac
The activity calculator.
std::vector< std::string > basis_species_name
basis_species_name[j] = name of the j^th basis species
const std::vector< std::string > _source_species_names
Names of the source species.
const std::vector< Real > _remove_fixed_activity_time
Times at which to remove the fixed activity or fugacity from the species in _remove_fixed_activity_na...
std::vector< ModelGeochemicalDatabase > _mgd_at_node
ModelGeochemicalDatabase at each node.
const std::vector< std::string > _remove_fixed_activity_name
Names of species to remove the fixed activity or fugacity constraint from.

Member Function Documentation

◆ buildMyNodeNumber()

void GeochemistrySpatialReactor::buildMyNodeNumber ( )
protected

Build the _my_node_number map.

Definition at line 268 of file GeochemistrySpatialReactor.C.

Referenced by GeochemistrySpatialReactor().

269 {
270  const MeshBase & msh = _subproblem.mesh().getMesh();
271 
272  // create the map from MOOSE's node numbering to the local node numbering (_my_node_number) used
273  // by this object
274  _my_node_number.clear();
275  unsigned num_nodes_inserted = 0;
276  for (const auto & node : as_range(msh.local_nodes_begin(), msh.local_nodes_end()))
277  {
278  if (_my_node_number.count(node->id()) == 0)
279  _my_node_number[node->id()] = num_nodes_inserted;
280  else
281  mooseError(
282  "GeochemistrySpatialReactor: something wrong with node numbering in buildMyNodeNumber");
283  num_nodes_inserted += 1;
284  }
285  mooseAssert(
286  _my_node_number.size() == _num_my_nodes,
287  "GeochemistrySpatialReactor: something wrong with node numbering in buildMyNodeNumber");
288 }
virtual MooseMesh & mesh()=0
SubProblem & _subproblem
const unsigned _num_my_nodes
Number of nodes handled by this processor (will need to be made un-const when mesh adaptivity is hand...
MeshBase & getMesh()
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
void mooseError(Args &&... args) const
std::unordered_map< dof_id_type, unsigned > _my_node_number
_my_node_number[_current_node->id()] = node number used in this object that corresponds to _current_n...

◆ execute()

void GeochemistrySpatialReactor::execute ( )
overridevirtual

Reimplemented from GeochemistryReactorBase.

Definition at line 317 of file GeochemistrySpatialReactor.C.

318 {
319  if (_my_node_number.count(_current_node->id()) == 0)
320  mooseError(
321  "GeochemistrySpatialReactor: something wrong with node numbering in buildMyNodeNumber");
322  const unsigned my_node_number = _my_node_number.at(_current_node->id());
323 
324  const unsigned aux_comp_number = 0; // component number to use for AuxVariables
325  const ModelGeochemicalDatabase & mgd_ref =
326  _egs_at_node[my_node_number].getModelGeochemicalDatabase();
327 
328  // close system
330  _egs_at_node[my_node_number].closeSystem();
331 
332  // remove fixed-activity constraints.
333  for (unsigned i = 0; i < _num_removed_fixed; ++i)
334  {
335  if (!_removed_fixed_activity[my_node_number][i] && _t >= _remove_fixed_activity_time[i])
336  {
337  if (mgd_ref.basis_species_index.count(_remove_fixed_activity_name[i]))
338  _egs_at_node[my_node_number].changeConstraintToBulk(
340  _removed_fixed_activity[my_node_number][i] = true;
341  }
342  }
343 
344  // control activity
345  for (unsigned ca = 0; ca < _num_controlled_activity; ++ca)
346  {
347  const std::vector<GeochemicalSystem::ConstraintMeaningEnum> & cm =
348  _egs_at_node[my_node_number].getConstraintMeaning();
350  {
351  const unsigned basis_ind =
355  _egs_at_node[my_node_number].setConstraintValue(
356  basis_ind, (*_controlled_activity_species_values[ca])[aux_comp_number]);
357  }
358  }
359 
361 
362  Real temperature0 = _egs_at_node[my_node_number].getTemperature();
363  const Real temperature_rate = (_temperature[aux_comp_number] - temperature0) / _dt;
364 
365  // record the system in case of solve failures using the copy-assignment operator of
366  // GeochemicalSystem
368  _egs_copy = _egs_at_node[my_node_number];
369 
370  Real done_dt = 0.0;
371  Real my_dt = _dt;
372 
373  // the following loop implements adaptive timestepping at the node
374  while (done_dt < _dt)
375  {
376  // compute moles added in the current basis (the basis might change during adaptive
377  // timestepping)
378  _mole_rates.zero();
379  for (unsigned i = 0; i < _num_source_species; ++i)
380  {
381  const Real this_rate = (*_source_species_rates[i])[aux_comp_number];
382  if (mgd_ref.basis_species_index.count(_source_species_names[i]))
383  {
384  const unsigned basis_ind = mgd_ref.basis_species_index.at(_source_species_names[i]);
385  _mole_rates(basis_ind) += this_rate;
386  }
387  else if (mgd_ref.eqm_species_index.count(_source_species_names[i]))
388  {
389  const unsigned eqm_j = mgd_ref.eqm_species_index.at(_source_species_names[i]);
390  for (unsigned basis_ind = 0; basis_ind < _num_basis; ++basis_ind)
391  _mole_rates(basis_ind) += mgd_ref.eqm_stoichiometry(eqm_j, basis_ind) * this_rate;
392  }
393  else
394  {
395  const unsigned kin_ind = mgd_ref.kin_species_index.at(_source_species_names[i]);
396  _mole_rates(_num_basis + kin_ind) += this_rate;
397  }
398  }
399 
400  Real temperature = temperature0 + my_dt * temperature_rate;
401  for (unsigned i = 0; i < _num_basis + _num_kin; ++i)
402  _mole_additions[my_node_number](i) = my_dt * _mole_rates(i);
403  _dmole_additions[my_node_number].zero();
404 
405  // set temperature, if needed
406  if (temperature != _egs_at_node[my_node_number].getTemperature())
407  {
408  _egs_at_node[my_node_number].setTemperature(temperature);
409  _egs_at_node[my_node_number].computeConsistentConfiguration();
410  }
411 
412  // solve the geochemical system
413  try
414  {
415  _solver.solveSystem(_egs_at_node[my_node_number],
416  _solver_output[my_node_number],
417  _tot_iter[my_node_number],
418  _abs_residual[my_node_number],
419  my_dt,
420  _mole_additions[my_node_number],
421  _dmole_additions[my_node_number]);
422  done_dt += my_dt;
423  if (done_dt < _dt)
424  {
425  temperature0 = _egs_at_node[my_node_number].getTemperature();
426  _egs_copy =
427  _egs_at_node[my_node_number]; // use the copy-assignment operator of GeochemicalSystem
428  }
429  my_dt *= _dt_inc;
430  }
431  catch (const MooseException & e)
432  {
433  // use the copy-assignment operator of GeochemicalSystem to restore to the original
435  _egs_at_node[my_node_number] = _egs_copy;
436  my_dt *= _dt_dec;
437  if (my_dt < _dt_min)
438  mooseException(
439  "Geochemistry solve failed with dt = ", my_dt, " at node: ", _current_node->get_info());
440  }
441 
442  if (done_dt + my_dt > _dt)
443  my_dt = _dt - done_dt; // avoid overstepping
444  }
445 
446  _execute_done[my_node_number] = true;
447 }
const unsigned _num_basis
number of basis species
const Real _close_system_at_time
Defines the time at which to close the system.
const unsigned _ramp_subsequent
the ramp_max_ionic_strength to use during time-stepping
std::vector< unsigned > _tot_iter
Number of iterations used by the solver at each node.
const unsigned _num_controlled_activity
Number of species with controlled activity or fugacity.
std::vector< const VariableValue * > _source_species_rates
Rates of the source species.
std::vector< DenseMatrix< Real > > _dmole_additions
Derivative of moles_added.
std::unordered_map< std::string, unsigned > basis_species_index
basis_species_index[name] = index of the basis species, within all ModelGeochemicalDatabase internal ...
GeochemicalSolver _solver
The solver.
const Node *const & _current_node
std::unordered_map< std::string, unsigned > eqm_species_index
eqm_species_index[name] = index of the equilibrium species (secondary aqueous species, redox couples in equilibrium with the aqueous solution, minerals in equilibrium with the aqueous solution, gases in equilibrium with the aqueous solution) within all ModelGeochemicalDatabase internal datastrcutres, with given name
DenseVector< Real > _mole_rates
Rate of mole additions.
static const std::string temperature
Definition: NS.h:59
const bool _adaptive_timestepping
Whether to use adaptive timestepping at the nodes.
std::unordered_map< std::string, unsigned > kin_species_index
kin_species_index[name] = index of the kinetic species, within all ModelGeochemicalDatabase internal ...
DenseMatrix< Real > eqm_stoichiometry
eqm_stoichiometry(i, j) = stoichiometric coefficient for equilibrium species "i" in terms of the basi...
const VariableValue & _temperature
Temperature specified by user.
std::vector< std::stringstream > _solver_output
The solver output at each node.
const Real _dt_inc
value to multiply dt my in the case of a successful solve
std::vector< std::vector< bool > > _removed_fixed_activity
Whether the activity or activity constraint has been removed at each node.
const unsigned _num_source_species
Number of source species.
const unsigned _num_kin
Number of kinetic species.
void solveSystem(GeochemicalSystem &egs, std::stringstream &ss, unsigned &tot_iter, Real &abs_residual, Real dt, DenseVector< Real > &mole_additions, DenseMatrix< Real > &dmole_additions)
Solve the system.
GeochemicalSystem _egs_copy
GeochemicalSystem into which the nodal GeochemicalSystem is copied to enable recovery during adaptive...
const Real _dt_dec
value to multiply dt my in the case of a failed solve
std::vector< GeochemicalSystem > _egs_at_node
GeochemicalSystem at each node.
std::vector< const VariableValue * > _controlled_activity_species_values
Activity or fugacity of the species with controlled activity or fugacity.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::vector< Real > _abs_residual
L1norm of the solver residual at each node.
std::vector< bool > _execute_done
whether execute has been called using this thread
void setRampMaxIonicStrength(unsigned ramp_max_ionic_strength)
Sets the value of _ramp_max_ionic_strength.
void mooseError(Args &&... args) const
std::unordered_map< dof_id_type, unsigned > _my_node_number
_my_node_number[_current_node->id()] = node number used in this object that corresponds to _current_n...
Data structure to hold all relevant information from the database file.
const std::vector< std::string > _controlled_activity_species_names
Names of the species with controlled activity or fugacity.
bool _closed_system
Whether the system has been closed.
const unsigned _num_removed_fixed
Number of elements in the vector _remove_fixed_activity_name;.
std::vector< DenseVector< Real > > _mole_additions
Moles of each basis species added at each node at the current timestep, along with kinetic rates...
const Real _dt_min
minimum value of dt allowed during adpative timestepping. This is set to a large number if _adaptive_...
const std::vector< std::string > _source_species_names
Names of the source species.
const std::vector< Real > _remove_fixed_activity_time
Times at which to remove the fixed activity or fugacity from the species in _remove_fixed_activity_na...
const std::vector< std::string > _remove_fixed_activity_name
Names of species to remove the fixed activity or fugacity constraint from.

◆ finalize()

void GeochemistrySpatialReactor::finalize ( )
overridevirtual

the main-thread information is used to set the other-thread information in finalize()

Reimplemented from GeochemistryReactorBase.

Definition at line 473 of file GeochemistrySpatialReactor.C.

474 {
476  // if relevant, record that system is closed
478  _closed_system = true;
479  // ensure that the non-main threads have the main-thread's copy of _egs_at_node (and hence
480  // _mgd_at_node) and _removed_fixed_activity, since the main-thread's copy has correctly gathered
481  // all the information during threadJoin
482  for (unsigned thrd = 1; thrd < _nthreads; ++thrd)
483  {
484  std::vector<GeochemistrySpatialReactor *> objects;
486  .query()
487  .condition<AttribSystem>("UserObject")
488  .condition<AttribThread>(thrd)
489  .condition<AttribName>(name())
490  .queryInto(objects);
491  mooseAssert(objects.size() == 1,
492  "GeochemistrySpatialReactor::finalize() failed to obtain a single thread copy of "
493  "the GeochemistrySpatialReactor");
494  objects[0]->_removed_fixed_activity = _removed_fixed_activity;
495  objects[0]->_egs_at_node = _egs_at_node;
496  objects[0]->_closed_system = _closed_system;
497  }
498 }
virtual void finalize() override
const Real _close_system_at_time
Defines the time at which to close the system.
virtual const std::string & name() const
unsigned _nthreads
number of threads used to execute this UserObject
TheWarehouse & theWarehouse() const
std::vector< std::vector< bool > > _removed_fixed_activity
Whether the activity or activity constraint has been removed at each node.
std::vector< GeochemicalSystem > _egs_at_node
GeochemicalSystem at each node.
FEProblemBase & _fe_problem
Query query()
bool _closed_system
Whether the system has been closed.

◆ getGeochemicalSystem()

const GeochemicalSystem & GeochemistrySpatialReactor::getGeochemicalSystem ( dof_id_type  node_id) const
overridevirtual
Returns
a reference to the equilibrium geochemical system at the given node
Parameters
node_idthe ID of the node

Implements GeochemistryReactorBase.

Definition at line 523 of file GeochemistrySpatialReactor.C.

524 {
525  if (_my_node_number.count(node_id) != 1)
526  mooseError("GeochemistrySpatialReactor does not know about node ", node_id);
527  return _egs_at_node[_my_node_number.at(node_id)];
528 }
std::vector< GeochemicalSystem > _egs_at_node
GeochemicalSystem at each node.
void mooseError(Args &&... args) const
std::unordered_map< dof_id_type, unsigned > _my_node_number
_my_node_number[_current_node->id()] = node number used in this object that corresponds to _current_n...

◆ getMoleAdditions()

const DenseVector< Real > & GeochemistrySpatialReactor::getMoleAdditions ( dof_id_type  node_id) const
overridevirtual
Returns
the mole additions (the first num_basis of these are additions to the bulk composition of the equilibrium system, the last num_kin of these are -dt*kinetic_reaction_rate, ie dt*dissolution_rate) at the specified node_id
Parameters
node_idthe node ID

Implements GeochemistryReactorBase.

Definition at line 531 of file GeochemistrySpatialReactor.C.

532 {
533  if (_my_node_number.count(node_id) != 1)
534  mooseError("GeochemistrySpatialReactor does not know about node ", node_id);
535  return _mole_additions[_my_node_number.at(node_id)];
536 }
void mooseError(Args &&... args) const
std::unordered_map< dof_id_type, unsigned > _my_node_number
_my_node_number[_current_node->id()] = node number used in this object that corresponds to _current_n...
std::vector< DenseVector< Real > > _mole_additions
Moles of each basis species added at each node at the current timestep, along with kinetic rates...

◆ getMolesDumped()

Real GeochemistrySpatialReactor::getMolesDumped ( dof_id_type  node_id,
const std::string &  species 
) const
overridevirtual
Returns
the moles dumped of the given species at the specified node_id
Parameters
speciesthe name of the species
node_idthe node ID

Implements GeochemistryReactorBase.

Definition at line 563 of file GeochemistrySpatialReactor.C.

565 {
566  return 0.0;
567 }

◆ getPertinentGeochemicalSystem()

const PertinentGeochemicalSystem& GeochemistryReactorBase::getPertinentGeochemicalSystem ( ) const
inlineinherited

returns a reference to the PertinentGeochemicalSystem used to creat the ModelGeochemicalDatabase

Definition at line 73 of file GeochemistryReactorBase.h.

Referenced by GeochemistryQuantityAux::computeValue(), GeochemistryQuantityAux::GeochemistryQuantityAux(), and GeochemistryConsoleOutput::output().

73 { return _pgs; };
const PertinentGeochemicalSystem & _pgs
Reference to the original PertinentGeochemicalSystem used to create the ModelGeochemicalDatabase.

◆ getSolverIterations()

unsigned GeochemistrySpatialReactor::getSolverIterations ( dof_id_type  node_id) const
overridevirtual
Returns
the total number of iterations used by the most recent solve at the specified node_id
Parameters
node_idthe node ID

Implements GeochemistryReactorBase.

Definition at line 547 of file GeochemistrySpatialReactor.C.

548 {
549  if (_my_node_number.count(node_id) != 1)
550  mooseError("GeochemistrySpatialReactor does not know about node ", node_id);
551  return _tot_iter[_my_node_number.at(node_id)];
552 }
std::vector< unsigned > _tot_iter
Number of iterations used by the solver at each node.
void mooseError(Args &&... args) const
std::unordered_map< dof_id_type, unsigned > _my_node_number
_my_node_number[_current_node->id()] = node number used in this object that corresponds to _current_n...

◆ getSolverOutput()

const std::stringstream & GeochemistrySpatialReactor::getSolverOutput ( dof_id_type  node_id) const
overridevirtual
Returns
a reference to the most recent solver output (containing iteration info, swap info, residuals, etc) at the specified node_id
Parameters
node_idthe node ID

Implements GeochemistryReactorBase.

Definition at line 539 of file GeochemistrySpatialReactor.C.

540 {
541  if (_my_node_number.count(node_id) != 1)
542  mooseError("GeochemistrySpatialReactor does not know about node ", node_id);
543  return _solver_output[_my_node_number.at(node_id)];
544 }
std::vector< std::stringstream > _solver_output
The solver output at each node.
void mooseError(Args &&... args) const
std::unordered_map< dof_id_type, unsigned > _my_node_number
_my_node_number[_current_node->id()] = node number used in this object that corresponds to _current_n...

◆ getSolverResidual()

Real GeochemistrySpatialReactor::getSolverResidual ( dof_id_type  node_id) const
overridevirtual
Returns
the L1norm of the residual at the end of the most recent solve at the specified node_id
Parameters
node_idthe node ID

Implements GeochemistryReactorBase.

Definition at line 555 of file GeochemistrySpatialReactor.C.

556 {
557  if (_my_node_number.count(node_id) != 1)
558  mooseError("GeochemistrySpatialReactor does not know about node ", node_id);
559  return _abs_residual[_my_node_number.at(node_id)];
560 }
std::vector< Real > _abs_residual
L1norm of the solver residual at each node.
void mooseError(Args &&... args) const
std::unordered_map< dof_id_type, unsigned > _my_node_number
_my_node_number[_current_node->id()] = node number used in this object that corresponds to _current_n...

◆ initialize()

void GeochemistrySpatialReactor::initialize ( )
overridevirtual

Reimplemented from GeochemistryReactorBase.

Definition at line 309 of file GeochemistrySpatialReactor.C.

310 {
312  _execute_done.assign(_num_my_nodes, false);
313  _nthreads = 1;
314 }
unsigned _nthreads
number of threads used to execute this UserObject
const unsigned _num_my_nodes
Number of nodes handled by this processor (will need to be made un-const when mesh adaptivity is hand...
virtual void initialize() override
std::vector< bool > _execute_done
whether execute has been called using this thread

◆ initialSetup()

void GeochemistrySpatialReactor::initialSetup ( )
overridevirtual

Reimplemented from NodalUserObject.

Definition at line 291 of file GeochemistrySpatialReactor.C.

292 {
293  // Solve the geochemical system with its initial composition and with dt=0 so no kinetic additions
294  for (unsigned i = 0; i < _num_my_nodes; ++i)
295  {
296  _mole_additions[i].zero();
297  _dmole_additions[i].zero();
299  _solver_output[i],
300  _tot_iter[i],
301  _abs_residual[i],
302  0.0,
303  _mole_additions[i],
304  _dmole_additions[i]);
305  }
306 }
std::vector< unsigned > _tot_iter
Number of iterations used by the solver at each node.
std::vector< DenseMatrix< Real > > _dmole_additions
Derivative of moles_added.
GeochemicalSolver _solver
The solver.
const unsigned _num_my_nodes
Number of nodes handled by this processor (will need to be made un-const when mesh adaptivity is hand...
std::vector< std::stringstream > _solver_output
The solver output at each node.
void solveSystem(GeochemicalSystem &egs, std::stringstream &ss, unsigned &tot_iter, Real &abs_residual, Real dt, DenseVector< Real > &mole_additions, DenseMatrix< Real > &dmole_additions)
Solve the system.
std::vector< GeochemicalSystem > _egs_at_node
GeochemicalSystem at each node.
std::vector< Real > _abs_residual
L1norm of the solver residual at each node.
std::vector< DenseVector< Real > > _mole_additions
Moles of each basis species added at each node at the current timestep, along with kinetic rates...

◆ meshChanged()

void GeochemistrySpatialReactor::meshChanged ( )
overridevirtual

Reimplemented from NodalUserObject.

Definition at line 501 of file GeochemistrySpatialReactor.C.

502 {
503  mooseError("GeochemistrySpatialReactor cannot yet handle adaptive meshing");
504  /*
505 Note to future coders:
506 - have to rebuild _my_node_number. _num_my_nodes has to be changed (so its not const anymore).
507 The Action must not just execute_on = EXEC_INITIAL for NearestNodeNumberUO
508 - have to populate the new nodes correctly. This might be easiest if, at the start of execute,
509 _egs_at_node was always populated using AuxVariables (probably a RequiredCoupledVar that is
510 actually a ArrayVariableValue & (constructed with coupledArrayValue instead of just coupledValue)
511 that record the kg_solvent_water, free molality, surface_pot_expr, etc. That is use
512 _egs_at_node[i].setSolventMassAndFreeMolalityAndMineralMolesAndSurfacePotsAndKineticMoles with the
513 values from the AuxVariables. The reason for this design is that then MOOSE handles the
514 interpolation of the AuxVariables to the newly-created nodes during mesh adaptivity. The
515 difficult thing is to figure out the variables at the new nodes. Probably should copy the basis
516 species, swap stuff, etc (_mgd_at_node) from the nearest original node to the newly-created node.
517 And then solve the new system to allow basis swaps if appropriate. This is a bit tricky, hence it
518 hasn't yet been implemented.
519  */
520 }
void mooseError(Args &&... args) const

◆ sharedParams()

InputParameters GeochemistrySpatialReactor::sharedParams ( )
static

params that are shared with AddTimeDependentReactionSolverAction

Definition at line 15 of file GeochemistrySpatialReactor.C.

Referenced by AddSpatialReactionSolverAction::validParams(), and validParams().

16 {
18  params.addParam<unsigned>(
19  "ramp_max_ionic_strength_subsequent",
20  0,
21  "The number of iterations over which to progressively increase the maximum ionic strength "
22  "(from zero to max_ionic_strength) during time-stepping. Unless a great deal occurs in each "
23  "time step, this parameter can be set quite small");
24  params.addParam<Real>("initial_temperature",
25  25,
26  "Temperature at which the initial system is equilibrated. This is uniform "
27  "over the entire mesh.");
28  params.addCoupledVar("temperature", 25, "Temperature");
29  params.addParam<Real>("close_system_at_time",
30  0.0,
31  "Time at which to 'close' the entire spatial system, that is, change a "
32  "kg_solvent_water constraint to moles_bulk_water, and all free_molality "
33  "and free_moles_mineral_species to moles_bulk_species");
34  params.addParam<std::vector<std::string>>(
35  "remove_fixed_activity_name",
36  {},
37  "The name of the species that should have their activity or fugacity constraint removed at "
38  "time given in remove_fixed_activity_time. There should be an equal number of these names "
39  "as times given in remove_fixed_activity_time. Each of these must be in the basis and have "
40  "an activity or fugacity constraint");
41  params.addParam<std::vector<Real>>("remove_fixed_activity_time",
42  {},
43  "The times at which the species in remove_fixed_activity_name "
44  "should have their activity or fugacity constraint removed.");
45  params.addParam<std::vector<std::string>>(
46  "source_species_names",
47  {},
48  "The name of the species that are added at rates given in source_species_rates. There must "
49  "be an equal number of these as source_species_rates.");
50  params.addCoupledVar("source_species_rates",
51  "Rates, in mols/time_unit, of addition of the species with names given in "
52  "source_species_names. A negative value corresponds to removing a species: "
53  "be careful that you don't cause negative mass problems!");
54  params.addParam<std::vector<std::string>>(
55  "controlled_activity_name",
56  {},
57  "The names of the species that have their activity or fugacity constrained. There should be "
58  "an equal number of these names as values given in controlled_activity_value. NOTE: if "
59  "these species are not in the basis, or they do not have an activity (or fugacity) "
60  "constraint then their activity cannot be controlled: in this case MOOSE will ignore the "
61  "value you prescribe in controlled_activity_value.");
62  params.addCoupledVar("controlled_activity_value",
63  "Values of the activity or fugacity of the species in "
64  "controlled_activity_name list. These should always be positive");
65  params.addParam<bool>(
66  "evaluate_kinetic_rates_always",
67  true,
68  "If true, then, evaluate the kinetic rates at every Newton step during the solve using the "
69  "current values of molality, activity, etc (ie, implement an implicit solve). If false, "
70  "then evaluate the kinetic rates using the values of molality, activity, etc, at the start "
71  "of the current time step (ie, implement an explicit solve)");
72  params.addParam<std::vector<std::string>>(
73  "kinetic_species_name",
74  {},
75  "Names of the kinetic species given initial values in kinetic_species_initial_value");
76  params.addParam<std::vector<Real>>(
77  "kinetic_species_initial_value",
78  {},
79  "Initial number of moles, mass or volume (depending on kinetic_species_unit) for each of the "
80  "species named in kinetic_species_name");
81  MultiMooseEnum kin_species_unit("dimensionless moles molal kg g mg ug kg_per_kg_solvent "
82  "g_per_kg_solvent mg_per_kg_solvent ug_per_kg_solvent cm3");
83  params.addParam<MultiMooseEnum>(
84  "kinetic_species_unit",
85  kin_species_unit,
86  "Units of the numerical values given in kinetic_species_initial_value. Moles: mole number. "
87  "kg: kilograms. g: grams. mg: milligrams. ug: micrograms. cm3: cubic centimeters");
88  params.addParam<bool>("adaptive_timestepping",
89  false,
90  "Use adaptive timestepping at each node in an attempt to ensure "
91  "convergence of the solver. Setting this parameter to false saves some "
92  "compute time because copying of datastructures is avoided");
93  params.addParam<Real>(
94  "dt_min",
95  1E-10,
96  "If, during adaptive timestepping at a node, the time-step fails below this value, "
97  "MOOSE will give up trying to solve the geochemical system. Optimally, you should set this "
98  "value bearing abs_tol in mind because as dt changes, the initial value of the residual will "
99  "also typically change. For example, if you set dt_min very small relative to abs_tol MOOSE "
100  "may think the system has converged just because dt is small. Also, bear in mind your "
101  "typical timestep size: if dt_min < 1E-16*typical_dt then you will run out of precision");
102  params.addRangeCheckedParam<Real>(
103  "dt_dec",
104  0.5,
105  "dt_dec >= 0 & dt_dec < 1.0",
106  "If a geochemical solve fails, then 'adpative timestepping' at the node is initiated "
107  "(assuming adaptive_timestepping = true): the time-step at the node is multiplied by this "
108  "amount, and the solve process re-tried");
109  params.addRangeCheckedParam<Real>(
110  "dt_inc",
111  1.1,
112  "dt_inc >= 1.0",
113  "If a geochemical solve suceeds during adpative timestepping at a node, then the time-step "
114  "at the node is multiplied by this amount before performing the next adaptive timestep");
115  return params;
116 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
InputParameters emptyInputParameters()
void addCoupledVar(const std::string &name, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)

◆ threadJoin()

void GeochemistrySpatialReactor::threadJoin ( const UserObject uo)
overridevirtual

Reimplemented from GeochemistryReactorBase.

Definition at line 450 of file GeochemistrySpatialReactor.C.

451 {
452  _nthreads += 1;
453  const auto & gsr = static_cast<const GeochemistrySpatialReactor &>(uo);
454  for (unsigned i = 0; i < _num_my_nodes; ++i)
455  {
456  if (!_execute_done[i] && gsr._execute_done[i])
457  {
458  _solver_output[i].str("");
459  _solver_output[i] << gsr._solver_output[i].str();
460  _tot_iter[i] = gsr._tot_iter[i];
461  _abs_residual[i] = gsr._abs_residual[i];
462  _mole_additions[i] = gsr._mole_additions[i];
463  _egs_at_node[i] = gsr._egs_at_node[i];
464  _removed_fixed_activity[i] = gsr._removed_fixed_activity[i];
465  // _mgd_at_node does not need to be threadJoined, because _egs_at_node[i] =
466  // gsr._egs_at_node[i] uses the copy-assignment operator to copy the data in
467  // _egs_at_node[i]._mgd
468  }
469  }
470 }
Class that controls the space-dependent and time-dependent geochemistry reactions.
std::vector< unsigned > _tot_iter
Number of iterations used by the solver at each node.
unsigned _nthreads
number of threads used to execute this UserObject
const unsigned _num_my_nodes
Number of nodes handled by this processor (will need to be made un-const when mesh adaptivity is hand...
std::vector< std::stringstream > _solver_output
The solver output at each node.
std::vector< std::vector< bool > > _removed_fixed_activity
Whether the activity or activity constraint has been removed at each node.
std::vector< GeochemicalSystem > _egs_at_node
GeochemicalSystem at each node.
std::vector< Real > _abs_residual
L1norm of the solver residual at each node.
std::vector< bool > _execute_done
whether execute has been called using this thread
std::vector< DenseVector< Real > > _mole_additions
Moles of each basis species added at each node at the current timestep, along with kinetic rates...

◆ validParams()

InputParameters GeochemistrySpatialReactor::validParams ( )
static

Definition at line 119 of file GeochemistrySpatialReactor.C.

120 {
123  params.addClassDescription("UserObject that controls the space-dependent and time-dependent "
124  "geochemistry reaction processes");
125  return params;
126 }
static InputParameters validParams()
static InputParameters sharedParams()
params that are shared with AddTimeDependentReactionSolverAction
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _abs_residual

std::vector<Real> GeochemistryReactorBase::_abs_residual
protectedinherited

◆ _adaptive_timestepping

const bool GeochemistrySpatialReactor::_adaptive_timestepping
protected

Whether to use adaptive timestepping at the nodes.

Definition at line 95 of file GeochemistrySpatialReactor.h.

Referenced by execute().

◆ _close_system_at_time

const Real GeochemistrySpatialReactor::_close_system_at_time
protected

Defines the time at which to close the system.

Definition at line 59 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and finalize().

◆ _closed_system

bool GeochemistrySpatialReactor::_closed_system
protected

Whether the system has been closed.

Definition at line 61 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and finalize().

◆ _controlled_activity_species_names

const std::vector<std::string> GeochemistrySpatialReactor::_controlled_activity_species_names
protected

Names of the species with controlled activity or fugacity.

Definition at line 77 of file GeochemistrySpatialReactor.h.

Referenced by execute().

◆ _controlled_activity_species_values

std::vector<const VariableValue *> GeochemistrySpatialReactor::_controlled_activity_species_values
protected

Activity or fugacity of the species with controlled activity or fugacity.

Definition at line 81 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and GeochemistrySpatialReactor().

◆ _dmole_additions

std::vector<DenseMatrix<Real> > GeochemistrySpatialReactor::_dmole_additions
protected

Derivative of moles_added.

Definition at line 87 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and initialSetup().

◆ _dt_dec

const Real GeochemistrySpatialReactor::_dt_dec
protected

value to multiply dt my in the case of a failed solve

Definition at line 99 of file GeochemistrySpatialReactor.h.

Referenced by execute().

◆ _dt_inc

const Real GeochemistrySpatialReactor::_dt_inc
protected

value to multiply dt my in the case of a successful solve

Definition at line 101 of file GeochemistrySpatialReactor.h.

Referenced by execute().

◆ _dt_min

const Real GeochemistrySpatialReactor::_dt_min
protected

minimum value of dt allowed during adpative timestepping. This is set to a large number if _adaptive_timestepping = false so that if any solve ever fails, this class will throw a mooseException

Definition at line 97 of file GeochemistrySpatialReactor.h.

Referenced by execute().

◆ _egs_at_node

std::vector<GeochemicalSystem> GeochemistrySpatialReactor::_egs_at_node
protected

◆ _egs_copy

GeochemicalSystem GeochemistrySpatialReactor::_egs_copy
protected

GeochemicalSystem into which the nodal GeochemicalSystem is copied to enable recovery during adaptive timestepping.

Definition at line 55 of file GeochemistrySpatialReactor.h.

Referenced by execute().

◆ _execute_done

std::vector<bool> GeochemistrySpatialReactor::_execute_done
protected

whether execute has been called using this thread

Definition at line 93 of file GeochemistrySpatialReactor.h.

Referenced by execute(), initialize(), and threadJoin().

◆ _gac

GeochemistryActivityCoefficientsDebyeHuckel GeochemistryReactorBase::_gac
protectedinherited

The activity calculator.

Definition at line 91 of file GeochemistryReactorBase.h.

Referenced by GeochemistrySpatialReactor().

◆ _initial_max_ionic_str

const Real GeochemistryReactorBase::_initial_max_ionic_str
protectedinherited

Initial value of maximum ionic strength.

Definition at line 87 of file GeochemistryReactorBase.h.

◆ _initial_temperature

const Real GeochemistrySpatialReactor::_initial_temperature
protected

Initial equilibration temperature.

Definition at line 45 of file GeochemistrySpatialReactor.h.

Referenced by GeochemistrySpatialReactor().

◆ _is

GeochemistryIonicStrength GeochemistryReactorBase::_is
protectedinherited

The ionic strength calculator.

Definition at line 89 of file GeochemistryReactorBase.h.

Referenced by GeochemistrySpatialReactor().

◆ _max_swaps_allowed

const unsigned GeochemistryReactorBase::_max_swaps_allowed
protectedinherited

Maximum number of swaps allowed during a single solve.

Definition at line 93 of file GeochemistryReactorBase.h.

◆ _mgd

ModelGeochemicalDatabase GeochemistryReactorBase::_mgd
protectedinherited

◆ _mgd_at_node

std::vector<ModelGeochemicalDatabase> GeochemistrySpatialReactor::_mgd_at_node
protected

ModelGeochemicalDatabase at each node.

Definition at line 51 of file GeochemistrySpatialReactor.h.

Referenced by GeochemistrySpatialReactor().

◆ _mole_additions

std::vector<DenseVector<Real> > GeochemistrySpatialReactor::_mole_additions
protected

Moles of each basis species added at each node at the current timestep, along with kinetic rates.

Definition at line 85 of file GeochemistrySpatialReactor.h.

Referenced by execute(), getMoleAdditions(), initialSetup(), and threadJoin().

◆ _mole_rates

DenseVector<Real> GeochemistrySpatialReactor::_mole_rates
protected

Rate of mole additions.

Definition at line 83 of file GeochemistrySpatialReactor.h.

Referenced by execute().

◆ _my_node_number

std::unordered_map<dof_id_type, unsigned> GeochemistrySpatialReactor::_my_node_number
protected

_my_node_number[_current_node->id()] = node number used in this object that corresponds to _current_node->id()

Definition at line 91 of file GeochemistrySpatialReactor.h.

Referenced by buildMyNodeNumber(), execute(), getGeochemicalSystem(), getMoleAdditions(), getSolverIterations(), getSolverOutput(), and getSolverResidual().

◆ _nthreads

unsigned GeochemistrySpatialReactor::_nthreads
protected

number of threads used to execute this UserObject

Definition at line 103 of file GeochemistrySpatialReactor.h.

Referenced by finalize(), initialize(), and threadJoin().

◆ _num_basis

const unsigned GeochemistryReactorBase::_num_basis
protectedinherited

◆ _num_controlled_activity

const unsigned GeochemistrySpatialReactor::_num_controlled_activity
protected

Number of species with controlled activity or fugacity.

Definition at line 79 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and GeochemistrySpatialReactor().

◆ _num_eqm

const unsigned GeochemistryReactorBase::_num_eqm
protectedinherited

number of equilibrium species

Definition at line 85 of file GeochemistryReactorBase.h.

◆ _num_kin

const unsigned GeochemistrySpatialReactor::_num_kin
protected

Number of kinetic species.

Definition at line 49 of file GeochemistrySpatialReactor.h.

Referenced by execute().

◆ _num_my_nodes

const unsigned GeochemistryReactorBase::_num_my_nodes
protectedinherited

Number of nodes handled by this processor (will need to be made un-const when mesh adaptivity is handled)

Definition at line 73 of file GeochemistryReactorBase.h.

Referenced by buildMyNodeNumber(), GeochemistrySpatialReactor(), initialize(), GeochemistryTimeIndependentReactor::initialSetup(), GeochemistryTimeDependentReactor::initialSetup(), initialSetup(), and threadJoin().

◆ _num_removed_fixed

const unsigned GeochemistrySpatialReactor::_num_removed_fixed
protected

Number of elements in the vector _remove_fixed_activity_name;.

Definition at line 73 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and GeochemistrySpatialReactor().

◆ _num_source_species

const unsigned GeochemistrySpatialReactor::_num_source_species
protected

Number of source species.

Definition at line 65 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and GeochemistrySpatialReactor().

◆ _pgs

const PertinentGeochemicalSystem& GeochemistryReactorBase::_pgs
protectedinherited

Reference to the original PertinentGeochemicalSystem used to create the ModelGeochemicalDatabase.

Definition at line 81 of file GeochemistryReactorBase.h.

Referenced by GeochemistryReactorBase::getPertinentGeochemicalSystem().

◆ _ramp_subsequent

const unsigned GeochemistrySpatialReactor::_ramp_subsequent
protected

the ramp_max_ionic_strength to use during time-stepping

Definition at line 89 of file GeochemistrySpatialReactor.h.

Referenced by execute().

◆ _remove_fixed_activity_name

const std::vector<std::string> GeochemistrySpatialReactor::_remove_fixed_activity_name
protected

Names of species to remove the fixed activity or fugacity constraint from.

Definition at line 69 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and GeochemistrySpatialReactor().

◆ _remove_fixed_activity_time

const std::vector<Real> GeochemistrySpatialReactor::_remove_fixed_activity_time
protected

Times at which to remove the fixed activity or fugacity from the species in _remove_fixed_activity_name.

Definition at line 71 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and GeochemistrySpatialReactor().

◆ _removed_fixed_activity

std::vector<std::vector<bool> > GeochemistrySpatialReactor::_removed_fixed_activity
protected

Whether the activity or activity constraint has been removed at each node.

Definition at line 75 of file GeochemistrySpatialReactor.h.

Referenced by execute(), finalize(), and threadJoin().

◆ _small_molality

const Real GeochemistryReactorBase::_small_molality
protectedinherited

A small value of molality.

Definition at line 97 of file GeochemistryReactorBase.h.

Referenced by GeochemistryTimeDependentReactor::postSolveFlowThrough().

◆ _solver

GeochemicalSolver GeochemistrySpatialReactor::_solver
protected

The solver.

Definition at line 57 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and initialSetup().

◆ _solver_output

std::vector<std::stringstream> GeochemistryReactorBase::_solver_output
protectedinherited

◆ _source_species_names

const std::vector<std::string> GeochemistrySpatialReactor::_source_species_names
protected

Names of the source species.

Definition at line 63 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and GeochemistrySpatialReactor().

◆ _source_species_rates

std::vector<const VariableValue *> GeochemistrySpatialReactor::_source_species_rates
protected

Rates of the source species.

Definition at line 67 of file GeochemistrySpatialReactor.h.

Referenced by execute(), and GeochemistrySpatialReactor().

◆ _swapper

GeochemistrySpeciesSwapper GeochemistryReactorBase::_swapper
protectedinherited

The species swapper.

Definition at line 95 of file GeochemistryReactorBase.h.

Referenced by GeochemistrySpatialReactor().

◆ _temperature

const VariableValue& GeochemistrySpatialReactor::_temperature
protected

Temperature specified by user.

Definition at line 47 of file GeochemistrySpatialReactor.h.

Referenced by execute().

◆ _tot_iter

std::vector<unsigned> GeochemistryReactorBase::_tot_iter
protectedinherited

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