www.mooseframework.org
TotalConcentrationAux.C
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 #include "TotalConcentrationAux.h"
11 
12 registerMooseObject("ChemicalReactionsApp", TotalConcentrationAux);
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<AuxKernel>();
19  params.addCoupledVar("primary_species", "Primary species free concentration");
20  params.addParam<std::vector<Real>>(
21  "sto_v",
22  "The stoichiometric coefficient of primary species in secondary equilibrium species");
23  params.addCoupledVar("v",
24  "Secondary equilibrium species in which the primary species is involved");
25  params.addClassDescription("Total concentration of primary species (including stoichiometric "
26  "contribution to secondary equilibrium species)");
27  return params;
28 }
29 
30 TotalConcentrationAux::TotalConcentrationAux(const InputParameters & parameters)
31  : AuxKernel(parameters),
32  _primary_species(coupledValue("primary_species")),
33  _sto_v(getParam<std::vector<Real>>("sto_v"))
34 {
35  const unsigned int n = coupledComponents("v");
36  _secondary_species.resize(n);
37 
38  for (unsigned int i = 0; i < n; ++i)
39  _secondary_species[i] = &coupledValue("v", i);
40 
41  // Check that the correct number of stoichiometric coefficients have been included
42  if (_sto_v.size() != n)
43  mooseError("The number of stoichiometric coefficients and coupled species must be equal in ",
44  _name);
45 }
46 
47 Real
49 {
50  Real total_concentration = _primary_species[_qp];
51 
52  for (unsigned int i = 0; i < _secondary_species.size(); ++i)
53  total_concentration += _sto_v[i] * (*_secondary_species[i])[_qp];
54 
55  return total_concentration;
56 }
TotalConcentrationAux::_sto_v
const std::vector< Real > _sto_v
Stoichiometric coefficients for primary species in coupled secondary species.
Definition: TotalConcentrationAux.h:35
TotalConcentrationAux
Computes the total concentration of given primary species, including its free concentration and its s...
Definition: TotalConcentrationAux.h:24
TotalConcentrationAux::_primary_species
const VariableValue & _primary_species
Primary species that this AuxKernel acts on.
Definition: TotalConcentrationAux.h:33
validParams< TotalConcentrationAux >
InputParameters validParams< TotalConcentrationAux >()
Definition: TotalConcentrationAux.C:16
TotalConcentrationAux::_secondary_species
std::vector< const VariableValue * > _secondary_species
Coupled secondary species concentration.
Definition: TotalConcentrationAux.h:37
registerMooseObject
registerMooseObject("ChemicalReactionsApp", TotalConcentrationAux)
TotalConcentrationAux::TotalConcentrationAux
TotalConcentrationAux(const InputParameters &parameters)
Definition: TotalConcentrationAux.C:30
TotalConcentrationAux.h
TotalConcentrationAux::computeValue
virtual Real computeValue() override
Definition: TotalConcentrationAux.C:48