19 "Two phase material that combines two single phase materials using a switching function.");
22 params.
addRequiredParam<MaterialPropertyName>(
"fa_name",
"Phase A material (at eta=0)");
23 params.
addRequiredParam<MaterialPropertyName>(
"fb_name",
"Phase A material (at eta=1)");
24 params.
addParam<MaterialPropertyName>(
25 "h",
"h",
"Switching Function Material that provides h(eta)");
26 params.
addParam<MaterialPropertyName>(
"g",
"g",
"Barrier Function Material that provides g(eta)");
29 params.
addCoupledVar(
"args",
"Vector of variable arguments of fa and fb");
32 "Vector of displacement gradient variables (see " 33 "Modules/PhaseField/DisplacementGradients " 40 params.
addParam<
Real>(
"W", 0.0,
"Energy barrier for the phase transformation from A to B");
47 _eta(coupledValue(
"eta")),
48 _eta_name(coupledName(
"eta", 0)),
49 _eta_var(coupled(
"eta")),
50 _h(getMaterialProperty<
Real>(
"h")),
51 _dh(getMaterialPropertyDerivative<
Real>(
"h", _eta_name)),
52 _d2h(getMaterialPropertyDerivative<
Real>(
"h", _eta_name, _eta_name)),
53 _d3h(getMaterialPropertyDerivative<
Real>(
"h", _eta_name, _eta_name, _eta_name)),
54 _g(getMaterialProperty<
Real>(
"g")),
55 _dg(getMaterialPropertyDerivative<
Real>(
"g", _eta_name)),
56 _d2g(getMaterialPropertyDerivative<
Real>(
"g", _eta_name, _eta_name)),
57 _d3g(getMaterialPropertyDerivative<
Real>(
"g", _eta_name, _eta_name, _eta_name)),
58 _W(getParam<
Real>(
"W")),
59 _prop_Fa(getMaterialProperty<
Real>(
"fa_name")),
60 _prop_Fb(getMaterialProperty<
Real>(
"fb_name"))
69 for (
unsigned int i = 0; i <
_nargs; ++i)
98 _prop_d3Fa[i][
j][
k] = &getMaterialPropertyDerivative<Real>(
100 _prop_d3Fb[i][
j][
k] = &getMaterialPropertyDerivative<Real>(
111 validateCoupling<Real>(
"fa_name");
112 validateCoupling<Real>(
"fb_name");
virtual Real computeF() override
virtual Real computeDF(unsigned int i_var) override
DerivativeTwoPhaseMaterial(const InputParameters ¶meters)
const MaterialProperty< Real > & _dh
const MaterialProperty< Real > & _d3g
const MaterialProperty< Real > & _prop_Fa
Function value of the A and B phase.
std::vector< std::vector< const MaterialProperty< Real > * > > _prop_d2Fa
Second derivatives of Fa and Fb.
const MaterialProperty< Real > & _g
std::vector< const MaterialProperty< Real > * > _prop_dFb
virtual Real computeD3F(unsigned int i_var, unsigned int j_var, unsigned int k_var) override
std::vector< std::string > _arg_names
std::vector< std::vector< std::vector< const MaterialProperty< Real > * > > > _prop_d3Fb
DerivativeMaterial child class to evaluate a parsed function for the free energy and automatically pr...
static InputParameters validParams()
const MaterialProperty< Real > & _d2h
std::vector< std::vector< std::vector< const MaterialProperty< Real > * > > > _prop_d3Fa
Third derivatives of Fa and Fb.
registerMooseObject("PhaseFieldApp", DerivativeTwoPhaseMaterial)
Real _W
Phase transformatuion energy barrier.
const MaterialProperty< Real > & _d3h
unsigned int argIndex(unsigned int i_var) const
virtual void initialSetup() override
const MaterialProperty< Real > & _h
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const MaterialProperty< Real > & _d2g
const MaterialProperty< Real > & _dg
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
std::vector< const MaterialProperty< Real > * > _prop_dFa
Derivatives of Fa and Fb with respect to arg[i].
static const std::string k
const MaterialProperty< Real > & _prop_Fb
unsigned int _eta_var
libMesh variable number for eta
virtual Real computeD2F(unsigned int i_var, unsigned int j_var) override
static InputParameters validParams()
std::vector< std::vector< const MaterialProperty< Real > * > > _prop_d2Fb