19 "Free energy contribution asymmetric across interfaces between arbitrary pairs of phases.");
20 params.
addParam<std::vector<MaterialPropertyName>>(
21 "hi_names",
"Switching Function Materials that provide h(eta_i)");
30 const std::vector<MaterialPropertyName> & hi_names =
31 getParam<std::vector<MaterialPropertyName>>(
"hi_names");
33 paramError(
"hi_names",
"The number of hi_names must be equal to the number of coupled etas");
35 for (
unsigned int i = 0; i <
_num_eta; ++i)
37 _h[i] = &getMaterialProperty<Real>(hi_names[i]);
38 _dh[i] = &getMaterialPropertyDerivative<Real>(hi_names[i],
_eta_names[i]);
50 for (
unsigned int i = 0; i <
_num_eta; ++i)
68 Real B, dBi, dBj, d2Bii, d2Bjj, d2Bij;
72 B = 16.0 * ni * ni * nj * nj;
73 dBi = 16.0 * 2.0 * ni * nj * nj;
74 dBj = 16.0 * 2.0 * ni * ni * nj;
75 d2Bii = 16.0 * 2.0 * nj * nj;
76 d2Bjj = 16.0 * 2.0 * ni * ni;
77 d2Bij = 16.0 * 4.0 * ni * nj;
95 (*
_prop_dg[i])[
_qp] += (Wij * hi + Wji * hj) * dBi + (Wij * dhi) *
B;
96 (*
_prop_dg[
j])[
_qp] += (Wij * hi + Wji * hj) * dBj + (Wji * dhj) *
B;
99 (Wij * hi + Wji * hj) * d2Bii + 2 * (Wij * dhi) * dBi + (Wij * d2hi) *
B;
101 (Wij * hi + Wji * hj) * d2Bjj + 2 * (Wji * dhj) * dBj + (Wji * d2hj) *
B;
104 (Wij * hi + Wji * hj) * (d2Bij) + (Wji * dhj) * dBi + (Wij * dhi) * dBj;
const std::vector< const VariableValue * > _eta
std::vector< Real > _W_ij
barrier function height matrix
std::vector< std::vector< MaterialProperty< Real > * > > _prop_d2g
const std::vector< VariableName > _eta_names
AsymmetricCrossTermBarrierFunctionMaterial adds a free energy contribution on the interfaces between ...
unsigned int _num_eta
order parameters
std::vector< const MaterialProperty< Real > * > _h
Switching functions and their drivatives.
std::vector< MaterialProperty< Real > * > _prop_dg
virtual void computeQpProperties()
std::vector< const MaterialProperty< Real > * > _d2h
std::vector< const MaterialProperty< Real > * > _dh
virtual void computeQpProperties()
void paramError(const std::string ¶m, Args... args) const
MaterialProperty< Real > & _prop_g
Barrier function and its derivatives.
registerMooseObject("PhaseFieldApp", AsymmetricCrossTermBarrierFunctionMaterial)
AsymmetricCrossTermBarrierFunctionMaterial(const InputParameters ¶meters)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void mooseError(Args &&... args) const
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
unsigned int _g_order
polynomial order of the switching function
static InputParameters validParams()
static InputParameters validParams()
CrossTermBarrierFunctionBase is the base to a set of free energy penalties that set the phase interfa...