19 params.addClassDescription(
20 "Enforce the sum of sublattice concentrations to a given phase concentration.");
21 params.addRequiredCoupledVar(
"cs",
"other sublattice concentrations in the same phase");
22 params.addRequiredParam<
Real>(
"a",
"Sublattice site fraction for the kernel variable");
23 params.addRequiredParam<std::vector<Real>>(
"as",
"Phase a sublattice site fractions");
24 params.addRequiredCoupledVar(
"sum",
"prescribed sum");
30 _ncs(coupledComponents(
"cs")),
32 _a_cs(getParam<
std::vector<
Real>>(
"as")),
33 _cs_map(getParameterJvarMap(
"cs")),
34 _a_u(getParam<
Real>(
"a")),
35 _target(coupledValue(
"sum"))
38 paramError(
"as",
"Specify one sublattice site fraction per sublattice concentration variable");
42 for (std::size_t i = 0; i <
_ncs; ++i)
45 paramError(
"as",
"The sum of the 'as' values and 'a' must be greater than zero");
46 for (std::size_t i = 0; i <
_ncs; ++i)
51 for (std::size_t i = 0; i <
_ncs; ++i)
59 for (std::size_t i = 0; i <
_ncs; ++i)
static InputParameters validParams()
virtual Real computeQpJacobian()
std::vector< Real > _a_cs
virtual Real computeQpOffDiagJacobian(unsigned int jvar)
static InputParameters validParams()
SLKKSSum(const InputParameters ¶meters)
virtual const VariableValue & coupledValue(const std::string &var_name, unsigned int comp=0) const
Real _a_u
sublattice fraction for the sublattice B concentration represented by the kernel variable ...
const VariableTestValue & _test
virtual Real computeQpResidual()
unsigned int _ncs
sublattice A variables
void paramError(const std::string ¶m, Args... args) const
unsigned int mapJvarToCvar(unsigned int jvar)
std::vector< const VariableValue * > _cs
Enforce the sum of sublattice concentrations to a given phase concentration.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
registerMooseObject("PhaseFieldApp", SLKKSSum)
const VariablePhiValue & _phi
const VariableValue & _target
AuxVariable to hold the target sum.