20 "Computes the KKS phase concentration derivatives wrt global concentrations and order "
21 "parameters, which are used for the chain rule in the KKS kernels. This class is intended to "
22 "be used with KKSPhaseConcentrationMultiPhaseMaterial.");
27 "Phase concentrations. They must have the same order as Fj_names and global_cs, for "
28 "example, c1, c2, b1, b2.");
30 "Fj_names",
"Free energy material objects in the same order as all_etas.");
32 "hj_names",
"witching functions in the same order as all_etas.");
39 _num_c(coupledComponents(
"global_cs")),
40 _c_names(coupledNames(
"global_cs")),
41 _eta_names(coupledNames(
"all_etas")),
42 _num_j(coupledComponents(
"all_etas")),
43 _prop_ci(_num_c * _num_j),
44 _ci_names(getParam<
std::vector<MaterialPropertyName>>(
"ci_names")),
47 _Fj_names(getParam<
std::vector<MaterialName>>(
"Fj_names")),
49 _hj_names(getParam<
std::vector<MaterialPropertyName>>(
"hj_names")),
57 for (
const auto m : make_range(
_num_c))
62 for (
const auto n : make_range(
_num_j))
69 for (
const auto l : make_range(
_num_c))
74 for (
const auto l : make_range(
_num_j))
83 for (
const auto m : make_range(
_num_j))
87 for (
const auto n : make_range(
_num_c))
91 for (
const auto l : make_range(
_num_c))
92 _d2Fidcidbi[m][n][l] = &getMaterialPropertyDerivative<Real>(
97 for (
const auto m : make_range(
_num_j))
103 for (
const auto n : make_range(
_num_j))
118 for (
const auto m : make_range(
_num_c))
121 for (
const auto n : make_range(
_num_j - 1))
123 for (
const auto l : make_range(
_num_c))
131 for (
const auto n : make_range(
_num_j))
139 for (
const auto i : make_range(
_num_c))
151 x_c[m] +=
A(m, n) * k_c[n];
155 for (
const auto m : make_range(
_num_c))
157 for (
const auto n : make_range(
_num_j))
164 for (
const auto i : make_range(
_num_j))
170 for (
const auto m : make_range(
_num_c))
174 for (
const auto n : make_range(
_num_j))
184 x_eta[m] +=
A(m, n) * k_eta[n];
188 for (
const auto m : make_range(
_num_c))
190 for (
const auto n : make_range(
_num_j))
registerMooseObject("PhaseFieldApp", KKSPhaseConcentrationMultiPhaseDerivatives)
std::vector< const MaterialProperty< Real > * > _prop_ci
Phase concentrations.
const unsigned int _num_c
Number of global concentrations.
std::vector< const MaterialProperty< Real > * > _prop_hj
const unsigned int _num_j
Number of phase parameters.
std::vector< std::vector< std::vector< MaterialProperty< Real > * > > > _dcidetaj
Derivative of phase concentrations wrt etaj .
virtual void computeQpProperties() override
std::vector< MaterialName > _Fj_names
Free energy names.
const std::vector< VariableName > _c_names
Names of global concentrations.
KKSPhaseConcentrationMultiPhaseDerivatives(const InputParameters ¶meters)
static InputParameters validParams()
std::vector< MaterialPropertyName > _ci_names
std::vector< std::vector< std::vector< const MaterialProperty< Real > * > > > _d2Fidcidbi
Second derivative of phase concentrations wrt two phase concentrations .
const std::vector< VariableName > _eta_names
Phase parameters.
std::vector< MaterialPropertyName > _hj_names
Switching functions.
std::vector< std::vector< std::vector< MaterialProperty< Real > * > > > _dcidb
Derivative of phase concentrations wrt global concentrations .
std::vector< std::vector< const MaterialProperty< Real > * > > _dhjdetai
Derivatives of switching functions.