18 params.
addClassDescription(
"Double well phase transformation barrier free energy contribution.");
19 params.
addParam<std::string>(
"function_name",
"g",
"actual name for g(eta_i)");
22 "g_order", h_order,
"Polynomial order of the switching function h(eta)");
25 "Make the g zero in [0:1] so it only contributes to "
26 "enforcing the eta range and not to the phase "
27 "transformation barrier.");
34 _function_name(getParam<
std::string>(
"function_name")),
36 _well_only(getParam<bool>(
"well_only")),
37 _num_eta(coupledComponents(
"etas")),
38 _eta(coupledValues(
"etas")),
39 _prop_g(declareProperty<Real>(_function_name)),
44 for (
unsigned int i = 0; i <
_num_eta; ++i)
46 const VariableName & eta_name = coupledName(
"etas", i);
47 if (!isCoupledConstant(eta_name))
60 for (
unsigned int i = 0; i <
_num_eta; ++i)
62 const Real n = (*
_eta[i])[_qp];
74 g += n * n * (1.0 - n) * (1.0 - n);
77 (*
_prop_dg[i])[_qp] = 2.0 * n * (n - 1.0) * (2.0 * n - 1.0);
78 (*
_prop_d2g[i])[_qp] = 12.0 * (n * n - n) + 2.0;
registerMooseObject("PhaseFieldApp", MultiBarrierFunctionMaterial)
static InputParameters validParams()
Double well phase transformation barrier free energy contribution.
const unsigned int _num_eta
order parameters
bool _well_only
zero out g contribution in the eta interval [0:1]
virtual void computeQpProperties()
const std::vector< const VariableValue * > _eta
static InputParameters validParams()
MultiBarrierFunctionMaterial(const InputParameters ¶meters)
MaterialProperty< Real > & _prop_g
Barrier functions and their drivatives.
std::vector< MaterialProperty< Real > * > _prop_dg
std::vector< MaterialProperty< Real > * > _prop_d2g
std::string _function_name
name of the function of eta (used to generate the material property names)
MooseEnum _g_order
Polynomial order of the barrier function .