23 "List of gamma material property names for each other order parameter. Place " 24 "in same order as order parameters (v)!");
31 _gamma_names(this->template getParam<
std::vector<MaterialPropertyName>>(
"gamma_names")),
32 _num_j(_gamma_names.size()),
36 if (
_num_j != this->coupledComponents(
"v"))
39 "Need to pass in as many gamma_names as coupled variables in v in ACGrGrMulti");
41 for (
unsigned int n = 0; n <
_num_j; ++n)
47 _uname(this->template getParam<NonlinearVariableName>(
"variable")),
48 _dmudu(this->template getMaterialPropertyDerivative<
Real>(
"mu", _uname)),
49 _vname(this->template getParam<
std::vector<VariableName>>(
"v")),
52 for (
unsigned int n = 0; n <
_num_j; ++n)
53 _dmudEtaj[n] = &this->
template getMaterialPropertyDerivative<Real>(
"mu",
_vname[n]);
60 Real SumGammaEtaj = 0.0;
62 SumGammaEtaj += (*
_prop_gammas[i])[_qp] * (*_vals[i])[_qp] * (*_vals[i])[_qp];
74 Real d2f0du2 = 3.0 * _u[_qp] * _u[_qp] - 1.0 + 2.0 * SumGammaEtaj;
89 SumGammaEtaj += (*
_prop_gammas[i])[_qp] * (*_vals[i])[_qp] * (*_vals[i])[_qp];
97 for (
unsigned int i = 0; i < _op_num; ++i)
98 if (jvar == _vals_var[i])
101 const Real dSumGammaEtaj = 2.0 * (*
_prop_gammas[i])[_qp] * (*_vals[i])[_qp];
102 const Real dDFDOP = _mu[_qp] * 2.0 * _u[_qp] * dSumGammaEtaj;
104 return _L[_qp] * _test[_i][_qp] * _phi[_j][_qp] *
111 template <
bool is_ad>
117 SumGammaEtaj += (*_prop_gammas[i])[_qp] * (*_vals[i])[_qp] * (*_vals[i])[_qp];
119 return _u[_qp] * _u[_qp] * _u[_qp] - _u[_qp] + 2.0 * _u[_qp] * SumGammaEtaj;
registerMooseObject("PhaseFieldApp", ACGrGrMulti)
static InputParameters validParams()
const std::vector< VariableName > _vname
virtual Real computeDFDOP(PFFunctionType type) override
void mooseError(Args &&... args)
std::vector< MaterialPropertyName > _gamma_names
Names of gammas for each order parameter.
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
GenericReal< is_ad > computedF0du()
std::vector< const MaterialProperty< Real > * > _dmudEtaj
typename std::conditional< is_ad, ADGrainGrowthBase, ACGrGrBase >::type ACGrGrMultiBase
This kernel calculates the residual for grain growth for a multi-phase, poly-crystal system...
std::vector< const GenericMaterialProperty< Real, is_ad > * > _prop_gammas
Values of gammas for each order parameter.
InputParameters validParams()
ACGrGrMultiTempl(const InputParameters ¶meters)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
ACGrGrMulti(const InputParameters ¶meters)
IntRange< T > make_range(T beg, T end)
typename Moose::GenericType< Real, is_ad > GenericReal
const MaterialProperty< Real > & _dmudu
virtual ADReal computeDFDOP() override