19 "Generates a diffusion coefficient to distinguish between the bulk, pore, grain " 20 "boundaries, and surfaces");
22 "v",
"var_name_base",
"op_num",
"Array of coupled variables");
23 params.
addParam<
Real>(
"Dbulk", 1.0,
"Diffusion coefficient for volumetric diffusion in solid");
25 "Dvoid", 1.0,
"Diffusion coefficient for diffusion within void/pore/bubble ");
26 params.
addParam<
Real>(
"Dsurf", 1.0,
"Diffusion coefficient for surface diffusion");
27 params.
addParam<
Real>(
"Dgb", 1.0,
"Diffusion coefficient for grain boundary diffusion");
29 params.
addParam<
Real>(
"surf_weight", 1.0,
"Surface diffusion weight");
30 params.
addParam<
Real>(
"gb_weight", 1.0,
"Grain boundary diffusion weight");
31 params.
addParam<
Real>(
"bulk_weight", 1.0,
"Bulk diffusion weight");
32 params.
addParam<
Real>(
"void_weight", 1.0,
"Void diffusion weight");
33 params.
addParam<MaterialPropertyName>(
34 "void_switch",
"hb",
"Switching Function Materials for the void");
35 params.
addParam<MaterialPropertyName>(
36 "solid_switch",
"hm",
"Switching Function Materials for the solid");
37 params.
addParam<MaterialPropertyName>(
"diffusivity",
"D",
"The name of the diffusion property");
43 _c(coupledValue(
"c")),
44 _c_name(coupledName(
"c", 0)),
45 _op_num(coupledComponents(
"v")),
47 _diff_name(getParam<MaterialPropertyName>(
"diffusivity")),
48 _diff(declareProperty<
Real>(_diff_name)),
49 _dDdc(isCoupledConstant(_c_name) ? nullptr
50 : &declarePropertyDerivative<
Real>(_diff_name, _c_name)),
51 _hb(getMaterialProperty<
Real>(
"void_switch")),
52 _hm(getMaterialProperty<
Real>(
"solid_switch")),
53 _dhbdc(getMaterialPropertyDerivative<
Real>(
"void_switch", _c_name)),
54 _dhmdc(getMaterialPropertyDerivative<
Real>(
"solid_switch", _c_name)),
57 _diff_bulk(getParam<
Real>(
"Dbulk")),
58 _diff_void(getParam<
Real>(
"Dvoid")),
59 _diff_surf(getParam<
Real>(
"Dsurf")),
60 _diff_gb(getParam<
Real>(
"Dgb")),
61 _s_weight(getParam<
Real>(
"surf_weight")),
62 _gb_weight(getParam<
Real>(
"gb_weight")),
63 _b_weight(getParam<
Real>(
"bulk_weight")),
64 _v_weight(getParam<
Real>(
"void_weight"))
67 paramError(
"op_num",
"Model requires a non zero number of order parameters.");
70 for (MooseIndex(
_op_num) op_index = 0; op_index <
_op_num; ++op_index)
73 const VariableName op_name =
coupledName(
"v", op_index);
76 _dhbdv[op_index] = &getMaterialPropertyDerivative<Real>(
"void_switch", op_index);
77 _dhmdv[op_index] = &getMaterialPropertyDerivative<Real>(
"solid_switch", op_index);
94 c = std::abs(
c) > 1.0 ? 1.0 : (
c < 0.0 ? std::abs(
c) :
c);
95 const Real mc = 1.0 -
c;
const unsigned int _op_num
const Real _diff_bulk
Input parameters.
std::vector< const MaterialProperty< Real > * > _dhbdv
virtual bool isCoupledConstant(const std::string &var_name) const
VariableName coupledName(const std::string &var_name, unsigned int comp=0) const
const MaterialProperty< Real > & _hm
virtual void computeQpProperties()
registerMooseObject("PhaseFieldApp", PolycrystalDiffusivity)
std::vector< const VariableValue * > _vals
MaterialProperty< Real > * _dDdc
std::vector< MaterialProperty< Real > * > _dDdv
std::vector< const MaterialProperty< Real > * > _dhmdv
virtual const VariableValue & coupledValue(const std::string &var_name, unsigned int comp=0) const
static InputParameters validParams()
MaterialProperty< Real > & _diff
void paramError(const std::string ¶m, Args... args) const
Generates a diffusion function to distinguish between the solid, void, grain boundary, and surface diffusion rates.
const VariableValue & _c
Variable values for concentration and order parameters.
const MaterialPropertyName _diff_name
Mateiral property and its derivatives declarations.
const MaterialProperty< Real > & _dhbdc
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static InputParameters validParams()
IntRange< T > make_range(T beg, T end)
const MaterialProperty< Real > & _dhmdc
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
PolycrystalDiffusivity(const InputParameters ¶meters)
const MaterialProperty< Real > & _hb
Switching function material and its derivatives.