www.mooseframework.org
PorousFlowMassFractionAqueousEquilibriumChemistry.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "PorousFlowMassFraction.h"
13 
21 {
22 public:
24 
26 
27 protected:
28  virtual void initQpStatefulProperties() override;
29  virtual void computeQpProperties() override;
30 
36  Real stoichiometry(unsigned reaction_num, unsigned primary_num) const;
37 
42  virtual void computeQpSecondaryConcentrations();
43 
47  virtual void initQpSecondaryConcentrations();
48 
57  void findZeroConcentration(unsigned & zero_conc_index, unsigned & zero_count) const;
58 
65  virtual void dQpSecondaryConcentration_dprimary(unsigned reaction_num,
66  std::vector<Real> & dsc) const;
67 
74  virtual Real dQpSecondaryConcentration_dT(unsigned reaction_num) const;
75 
78 
81 
84 
87 
89  const unsigned int _num_primary;
90 
92  const unsigned int _aq_ph;
93 
95  const unsigned int _aq_i;
96 
98  const unsigned int _num_reactions;
99 
102 
105 
107  std::vector<const VariableValue *> _equilibrium_constants;
108 
110  const std::vector<Real> _primary_activity_coefficients;
111 
113  const std::vector<Real> _reactions;
114 
116  const std::vector<Real> _secondary_activity_coefficients;
117 };
const bool _equilibrium_constants_as_log10
Whether the equilibium constants are written in their log10 form, or in absolute terms.
const unsigned int _num_reactions
Number of equations in the aqueous geochemistry system.
Material designed to form a std::vector<std::vector> of mass fractions from the individual mass fract...
const std::vector< Real > _reactions
Stoichiometry defining the aqeuous geochemistry equilibrium reactions.
MaterialProperty< std::vector< Real > > & _sec_conc
Secondary concentrations at quadpoint or nodes.
virtual void computeQpSecondaryConcentrations()
Compute the secondary-species concentration as defined by the chemistry Must be overridden by derived...
const std::vector< Real > _primary_activity_coefficients
Activity coefficients for the primary species (dimensionless)
virtual Real dQpSecondaryConcentration_dT(unsigned reaction_num) const
Computes derivative of the secondary concentration with respect to the temperature Must be overridden...
void findZeroConcentration(unsigned &zero_conc_index, unsigned &zero_count) const
Checks gamp[i] = _primary_activity_coefficients[i] * (*_primary[i])[qp].
Real stoichiometry(unsigned reaction_num, unsigned primary_num) const
The stoichiometric coefficient.
const MaterialProperty< std::vector< Real > > & _dtemperature_dvar
d(temperature)/(d porflow variable)
virtual void dQpSecondaryConcentration_dprimary(unsigned reaction_num, std::vector< Real > &dsc) const
Computes derivative of the secondary concentration with respect to the primary concentrations Must be...
const unsigned int _aq_i
Index (into _mf_vars) of the first of the primary species.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void initQpSecondaryConcentrations()
Initialises (at _t_step = 0) the secondary concentrations.
const unsigned _num_equilibrium_constants
Number of equilibrium_constants provided.
Material designed to form a std::vector<std::vector> of mass fractions from primary-species concentra...
std::vector< const VariableValue * > _equilibrium_constants
Equilibrium constants (dimensionless)
MaterialProperty< std::vector< std::vector< Real > > > & _dsec_conc_dvar
Derivative of the secondary concentrations with respect to the porous flow variables.
const std::vector< Real > _secondary_activity_coefficients
Activity coefficients for the secondary species.