19 "fi_names",
"List of free energies for the n phases");
20 params.
addParam<std::vector<MaterialPropertyName>>(
21 "hi_names",
"Switching Function Materials that provide h(eta_i)");
24 params.
addCoupledVar(
"args",
"Vector of variable arguments of the fi free energies");
27 "Vector of displacement gradient variables (see " 28 "Modules/PhaseField/DisplacementGradients " 32 params.
addParam<MaterialPropertyName>(
33 "g",
"g",
"Barrier Function Material that provides g(eta_i)");
34 params.
addParam<
Real>(
"W", 0.0,
"Energy barrier for the phase transformation from A to B");
41 _eta_index(_nargs, -1),
42 _num_etas(coupledComponents(
"etas")),
43 _eta_names(_num_etas),
45 _fi_names(getParam<
std::vector<MaterialPropertyName>>(
"fi_names")),
46 _num_fi(_fi_names.size()),
51 _hi_names(getParam<
std::vector<MaterialPropertyName>>(
"hi_names")),
52 _num_hi(_hi_names.size()),
54 _g(getMaterialProperty<
Real>(
"g")),
58 _W(getParam<
Real>(
"W"))
62 mooseError(
"Need to pass in as many hi_names as fi_names in DerivativeMultiPhaseBase ",
name());
65 for (
unsigned int i = 0; i <
_num_etas; ++i)
75 _dg[i] = &getMaterialPropertyDerivative<Real>(
"g",
_eta_names[i]);
88 _d3g[i][
j][
k] = &getMaterialPropertyDerivative<Real>(
95 for (
unsigned int n = 0; n <
_num_fi; ++n)
104 _hi[n] = &getMaterialPropertyByName<Real>(
_hi_names[n]);
106 for (
unsigned int i = 0; i <
_nargs; ++i)
114 for (
unsigned int j = 0;
j <
_nargs; ++
j)
123 for (
unsigned int k = 0;
k <
_nargs; ++
k)
124 _prop_d3Fi[n][i][
j][
k] = &getMaterialPropertyDerivative<Real>(
135 for (
unsigned int n = 0; n <
_num_fi; ++n)
143 for (
unsigned n = 0; n <
_num_fi; ++n)
virtual void initialSetup()
virtual unsigned int coupled(const std::string &var_name, unsigned int comp=0) const
std::vector< std::vector< std::vector< const MaterialProperty< Real > * > > > _prop_d2Fi
Second derivatives of Fi.
VariableName coupledName(const std::string &var_name, unsigned int comp=0) const
std::vector< std::vector< std::vector< const MaterialProperty< Real > * > > > _d3g
std::vector< const MaterialProperty< Real > * > _dg
Barrier function derivatives.
const MaterialProperty< Real > & _g
Barrier function .
std::vector< MaterialPropertyName > _hi_names
phase switching function names
unsigned int _num_etas
name of the order parameter variable
virtual const std::string & name() const
std::vector< std::string > _arg_names
static const std::string F
std::vector< std::vector< std::vector< std::vector< const MaterialProperty< Real > * > > > > _prop_d3Fi
Third derivatives of Fi.
Real _W
Phase transformation energy barrier.
std::vector< MaterialPropertyName > _fi_names
phase derivative material names
std::vector< const MaterialProperty< Real > * > _hi
Switching functions.
unsigned int argIndex(unsigned int i_var) const
std::vector< VariableName > _eta_names
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
DerivativeMultiPhaseBase(const InputParameters ¶meters)
std::vector< std::vector< const MaterialProperty< Real > * > > _d2g
void mooseError(Args &&... args) const
static InputParameters validParams()
std::vector< int > _eta_index
If the variable a non-conserved OP this array holds the index into the etas parameter vector for a gi...
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
std::vector< const MaterialProperty< Real > * > _prop_Fi
Function value of the i phase.
std::vector< std::vector< const MaterialProperty< Real > * > > _prop_dFi
Derivatives of Fi w.r.t. arg[i].
static const std::string k
std::vector< unsigned int > _eta_vars
static InputParameters validParams()