13#include "libmesh/quadrature.h"
22 "governing equations. Uses a tensor diffusivity");
24 "The interfacial width in the lengthscale of the problem");
25 params.
addParam<MaterialPropertyName>(
"chi",
"Coefficient to multiply by D");
26 params.
addParam<Real>(
"GBmob0", 0.0,
"Grain boundary mobility prefactor");
27 params.
addRequiredParam<Real>(
"Q",
"Grain boundary migration activation energy in eV");
29 "GBMobility", -1,
"GB mobility input that overrides the temperature dependent calculation");
30 params.
addParam<std::string>(
"f_name",
"chiD",
"Name for the mobility material property");
31 params.
addRequiredParam<MaterialPropertyName>(
"surface_energy",
"Surface energy of material");
32 params.
addParam<std::string>(
"solid_mobility",
"L",
"Name of grain mobility for solid phase");
33 params.
addParam<std::string>(
"void_mobility",
"Lv",
"Name of void phase mobility");
39 _chiD_name(getParam<
std::string>(
"f_name")),
40 _chiD(declareProperty<RealTensorValue>(_chiD_name)),
41 _dchiDdc(isCoupledConstant(_c_name)
43 : &declarePropertyDerivative<RealTensorValue>(_chiD_name, _c_name)),
44 _dchiDdgradc(isCoupledConstant(_c_name)
47 _Ls_name(getParam<
std::string>(
"solid_mobility")),
48 _Ls(declareProperty<Real>(_Ls_name)),
49 _Lv_name(getParam<
std::string>(
"void_mobility")),
50 _Lv(declareProperty<Real>(_Lv_name)),
51 _chiDmag(declareProperty<Real>(_chiD_name +
"_mag")),
52 _sigma_s(getMaterialProperty<Real>(
"surface_energy")),
53 _int_width(getParam<Real>(
"int_width")),
54 _chi_name(getParam<MaterialPropertyName>(
"chi")),
55 _chi(getMaterialProperty<Real>(_chi_name)),
56 _dchidc(getMaterialPropertyDerivative<Real>(_chi_name, _c_name)),
59 _dchiDdgradeta(_op_num),
60 _GBMobility(getParam<Real>(
"GBMobility")),
61 _GBmob0(getParam<Real>(
"GBmob0")),
62 _Q(getParam<Real>(
"Q"))
64 for (
unsigned int i = 0; i <
_op_num; ++i)
80 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
84 (*_dchiDdc)[_qp] = (*_dDdc)[_qp] *
_chi[_qp] +
_D[_qp] *
_dchidc[_qp];
86 (*_dchiDdgradc)[_qp] = (*_dDdgradc)[_qp] *
_chi[_qp];
87 for (
unsigned int i = 0; i <
_op_num; ++i)
registerMooseObject("PhaseFieldApp", GrandPotentialTensorMaterial)
Calculates mobilities for grand potential model.
static InputParameters validParams()
std::string _chiD_name
mobility tensor
std::vector< const MaterialProperty< Real > * > _dchideta
virtual void computeProperties() override
const MaterialPropertyName _chi_name
susceptibility
Real _int_width
interface width
std::vector< MaterialProperty< RankThreeTensor > * > _dchiDdgradeta
MaterialProperty< RealTensorValue > & _chiD
MaterialProperty< Real > & _Ls
const MaterialProperty< Real > & _chi
std::vector< MaterialProperty< RealTensorValue > * > _dchiDdeta
MaterialProperty< RankThreeTensor > * _dchiDdgradc
MaterialProperty< RealTensorValue > * _dchiDdc
MaterialProperty< Real > & _chiDmag
magnitude of mobility tensor
GrandPotentialTensorMaterial(const InputParameters ¶meters)
const MaterialProperty< Real > & _dchidc
MaterialProperty< Real > & _Lv
Generates a diffusion tensor to distinguish between the bulk, grain boundary, and surface diffusion r...
static InputParameters validParams()
std::vector< NonlinearVariableName > _vals_name
solid phase order parameters
MaterialProperty< RealTensorValue > & _D
std::vector< MaterialProperty< RealTensorValue > * > _dDdeta
const unsigned int _op_num
virtual void computeProperties()
std::vector< MaterialProperty< RankThreeTensor > * > _dDdgradeta