18 params.addClassDescription(
19 "SLKKS multi-phase model kernel to enforce $c_i = \\sum_j h_j\\sum_k a_{jk} c_{ijk}$. "
20 "The non-linear variable of this kernel is a phase's sublattice concentration");
21 params.addRequiredCoupledVar(
"c",
"Physical concentration");
30 for (std::size_t i = 0; i <
_nh; ++i)
36 for (std::size_t j = 0; j <
_neta; ++j)
41 for (std::size_t i = 0; i <
_ncs; ++i)
42 if (coupled(
"cs", i) == _var.number())
47 paramError(
"cs",
"One of the listed variables must be the kernel variable");
56 for (std::size_t i = 0; i <
_nh; ++i)
60 for (
unsigned int j = 0; j <
_ns[i]; ++j)
65 sum += (*
_prop_h[i])[_qp] * csum;
80 return -_test[_i][_qp] * _phi[_j][_qp];
82 auto csvar = mapJvarToCvar(jvar,
_cs_map);
86 auto etavar = mapJvarToCvar(jvar,
_eta_map);
90 for (
unsigned int i = 0; i <
_ncs; ++i)
93 return _test[_i][_qp] * sum * _phi[_j][_qp];
registerMooseObject("PhaseFieldApp", SLKKSMultiPhaseConcentration)
Enforce sum of phase sublattice concentrations to be the real concentration.
std::vector< const VariableValue * > _cs
const std::size_t _neta
Order parameters for each phase .
const unsigned int _c_var
std::vector< MaterialPropertyName > _h_names
Switching function names.
const VariableValue & _c
Physical concentration.
std::vector< unsigned int > _phase
phase index of each cs entry
static InputParameters validParams()
std::vector< Real > _a_cs
Sublattice site numbers.
const std::size_t _ncs
Sublattice concentrations.
std::vector< VariableName > _eta_names
std::vector< unsigned int > _ns
Number of sublattices per phase.
Enforce sum of phase sublattice concentrations to be the real concentration.
int _l
Position of the nonlinear variable in the cs list.
virtual Real precomputeQpResidual()
static InputParameters validParams()
std::vector< std::vector< const MaterialProperty< Real > * > > _prop_dhdeta
std::vector< const MaterialProperty< Real > * > _prop_h
Switching functions for each phase and their derivatives w.r.t. all etas.
SLKKSMultiPhaseConcentration(const InputParameters ¶meters)
virtual Real precomputeQpJacobian()
virtual Real computeQpOffDiagJacobian(unsigned int jvar)