https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
GrandPotentialTensorMaterial Class Reference

Calculates mobilities for grand potential model. More...

#include <GrandPotentialTensorMaterial.h>

Inheritance diagram for GrandPotentialTensorMaterial:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 GrandPotentialTensorMaterial (const InputParameters &parameters)
 
virtual void computeProperties () override
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Attributes

std::string _chiD_name
 mobility tensor
 
MaterialProperty< RealTensorValue > & _chiD
 
MaterialProperty< RealTensorValue > * _dchiDdc
 
MaterialProperty< RankThreeTensor > * _dchiDdgradc
 
std::string _Ls_name
 grain boundary mobility
 
MaterialProperty< Real > & _Ls
 
std::string _Lv_name
 void mobility
 
MaterialProperty< Real > & _Lv
 
MaterialProperty< Real > & _chiDmag
 magnitude of mobility tensor
 
const MaterialProperty< Real > & _sigma_s
 surface energy
 
Real _int_width
 interface width
 
const MaterialPropertyName _chi_name
 susceptibility
 
const MaterialProperty< Real > & _chi
 
const MaterialProperty< Real > & _dchidc
 
std::vector< const MaterialProperty< Real > * > _dchideta
 
std::vector< MaterialProperty< RealTensorValue > * > _dchiDdeta
 
std::vector< MaterialProperty< RankThreeTensor > * > _dchiDdgradeta
 
Real _GBMobility
 
Real _GBmob0
 
const Real _Q
 
const VariableValue_T
 
std::vector< const VariableValue * > _vals
 
std::vector< const VariableGradient * > _grad_vals
 
const VariableValue_c
 
const VariableGradient_grad_c
 
VariableName _c_name
 
std::string _diffusivity_name
 
MaterialProperty< RealTensorValue > & _D
 
MaterialProperty< RealTensorValue > * _dDdc
 
MaterialProperty< RankThreeTensor > * _dDdgradc
 
Real _D0
 
Real _Em
 
Real _s_index
 
Real _gb_index
 
Real _b_index
 
Real _Dbulk
 
const Real _kb
 
const unsigned int _op_num
 
std::vector< NonlinearVariableName > _vals_name
 solid phase order parameters
 
std::vector< MaterialProperty< RealTensorValue > * > _dDdeta
 
std::vector< MaterialProperty< RankThreeTensor > * > _dDdgradeta
 

Private Member Functions

bool haveMaterialProperty (const std::string &prop_name)
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

FEProblemBase_dmi_fe_problem
 

Detailed Description

Calculates mobilities for grand potential model.

The potential mobility (\chi*D) is a tensor, while the Allen Cahn mobilities for the solid and void phases are scalars.

Definition at line 21 of file GrandPotentialTensorMaterial.h.

Constructor & Destructor Documentation

◆ GrandPotentialTensorMaterial()

GrandPotentialTensorMaterial::GrandPotentialTensorMaterial ( const InputParameters parameters)

Definition at line 37 of file GrandPotentialTensorMaterial.C.

39 _chiD_name(getParam<std::string>("f_name")),
40 _chiD(declareProperty<RealTensorValue>(_chiD_name)),
41 _dchiDdc(isCoupledConstant(_c_name)
42 ? nullptr
44 _dchiDdgradc(isCoupledConstant(_c_name)
45 ? nullptr
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)),
60 _GBMobility(getParam<Real>("GBMobility")),
61 _GBmob0(getParam<Real>("GBmob0")),
62 _Q(getParam<Real>("Q"))
63{
64 for (unsigned int i = 0; i < _op_num; ++i)
65 {
66 _dchideta[i] = &getMaterialPropertyDerivative<Real>(_chi_name, _vals_name[i]);
67 if (!isCoupledConstant(_vals_name[i]))
68 _dchiDdeta[i] = &declarePropertyDerivative<RealTensorValue>(_chiD_name, _vals_name[i]);
69 if (!isCoupledConstant(_vals_name[i]))
71 &declarePropertyDerivative<RankThreeTensor>(_chiD_name, ("grad" + _vals_name[i]));
72 }
73}
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative(const std::string &base, const std::vector< VariableName > &c)
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative(const std::string &base, const std::vector< VariableName > &c)
std::vector< const MaterialProperty< Real > * > _dchideta
const MaterialPropertyName _chi_name
susceptibility
std::vector< MaterialProperty< RankThreeTensor > * > _dchiDdgradeta
MaterialProperty< RealTensorValue > & _chiD
const MaterialProperty< Real > & _sigma_s
surface energy
const MaterialProperty< Real > & _chi
std::vector< MaterialProperty< RealTensorValue > * > _dchiDdeta
MaterialProperty< RankThreeTensor > * _dchiDdgradc
MaterialProperty< RealTensorValue > * _dchiDdc
MaterialProperty< Real > & _chiDmag
magnitude of mobility tensor
const MaterialProperty< Real > & _dchidc
std::string _Ls_name
grain boundary mobility
Generates a diffusion tensor to distinguish between the bulk, grain boundary, and surface diffusion r...
std::vector< NonlinearVariableName > _vals_name
solid phase order parameters
TensorValue< Real > RealTensorValue
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Member Function Documentation

◆ computeProperties()

void GrandPotentialTensorMaterial::computeProperties ( )
overridevirtual

Reimplemented from PolycrystalDiffusivityTensorBase.

Definition at line 76 of file GrandPotentialTensorMaterial.C.

77{
79
80 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
81 {
82 _chiD[_qp] = _D[_qp] * _chi[_qp];
83 if (_dchiDdc)
84 (*_dchiDdc)[_qp] = (*_dDdc)[_qp] * _chi[_qp] + _D[_qp] * _dchidc[_qp];
85 if (_dchiDdgradc)
86 (*_dchiDdgradc)[_qp] = (*_dDdgradc)[_qp] * _chi[_qp];
87 for (unsigned int i = 0; i < _op_num; ++i)
88 {
89 if (_dchiDdeta[i])
90 (*_dchiDdeta[i])[_qp] = _D[_qp] * (*_dchideta[i])[_qp] + (*_dDdeta[i])[_qp] * _chi[_qp];
91 if (_dchiDdgradeta[i])
92 (*_dchiDdgradeta[i])[_qp] = (*_dDdgradeta[i])[_qp] * _chi[_qp];
93 }
94
95 _chiDmag[_qp] = _chiD[_qp].norm();
96
97 Real GBmob;
98 if (_GBMobility < 0)
99 GBmob = _GBmob0 * std::exp(-_Q / (_kb * _T[_qp]));
100 else
101 GBmob = _GBMobility;
102
103 _Ls[_qp] = 4.0 / 3.0 * GBmob / _int_width;
104 _Lv[_qp] = 40 * _Ls[_qp];
105 }
106}
MaterialProperty< RealTensorValue > & _D
std::vector< MaterialProperty< RealTensorValue > * > _dDdeta
std::vector< MaterialProperty< RankThreeTensor > * > _dDdgradeta

◆ validParams()

InputParameters GrandPotentialTensorMaterial::validParams ( )
static

Definition at line 18 of file GrandPotentialTensorMaterial.C.

19{
21 params.addClassDescription("Diffusion and mobility parameters for grand potential model "
22 "governing equations. Uses a tensor diffusivity");
23 params.addRequiredParam<Real>("int_width",
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");
28 params.addParam<Real>(
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");
34 return params;
35}
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _b_index

Real PolycrystalDiffusivityTensorBase::_b_index
protectedinherited

◆ _c

const VariableValue& PolycrystalDiffusivityTensorBase::_c
protectedinherited

◆ _c_name

VariableName PolycrystalDiffusivityTensorBase::_c_name
protectedinherited

Definition at line 34 of file PolycrystalDiffusivityTensorBase.h.

◆ _chi

const MaterialProperty<Real>& GrandPotentialTensorMaterial::_chi
protected

Definition at line 56 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _chi_name

const MaterialPropertyName GrandPotentialTensorMaterial::_chi_name
protected

susceptibility

Definition at line 55 of file GrandPotentialTensorMaterial.h.

Referenced by GrandPotentialTensorMaterial().

◆ _chiD

MaterialProperty<RealTensorValue>& GrandPotentialTensorMaterial::_chiD
protected

Definition at line 33 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _chiD_name

std::string GrandPotentialTensorMaterial::_chiD_name
protected

mobility tensor

Definition at line 32 of file GrandPotentialTensorMaterial.h.

Referenced by GrandPotentialTensorMaterial().

◆ _chiDmag

MaterialProperty<Real>& GrandPotentialTensorMaterial::_chiDmag
protected

magnitude of mobility tensor

Definition at line 46 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _D

MaterialProperty<RealTensorValue>& PolycrystalDiffusivityTensorBase::_D
protectedinherited

◆ _D0

Real PolycrystalDiffusivityTensorBase::_D0
protectedinherited

◆ _Dbulk

Real PolycrystalDiffusivityTensorBase::_Dbulk
protectedinherited

◆ _dchidc

const MaterialProperty<Real>& GrandPotentialTensorMaterial::_dchidc
protected

Definition at line 57 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _dchiDdc

MaterialProperty<RealTensorValue>* GrandPotentialTensorMaterial::_dchiDdc
protected

Definition at line 34 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _dchiDdeta

std::vector<MaterialProperty<RealTensorValue> *> GrandPotentialTensorMaterial::_dchiDdeta
protected

◆ _dchiDdgradc

MaterialProperty<RankThreeTensor>* GrandPotentialTensorMaterial::_dchiDdgradc
protected

Definition at line 35 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _dchiDdgradeta

std::vector<MaterialProperty<RankThreeTensor> *> GrandPotentialTensorMaterial::_dchiDdgradeta
protected

◆ _dchideta

std::vector<const MaterialProperty<Real> *> GrandPotentialTensorMaterial::_dchideta
protected

◆ _dDdc

MaterialProperty<RealTensorValue>* PolycrystalDiffusivityTensorBase::_dDdc
protectedinherited

◆ _dDdeta

std::vector<MaterialProperty<RealTensorValue> *> PolycrystalDiffusivityTensorBase::_dDdeta
protectedinherited

◆ _dDdgradc

MaterialProperty<RankThreeTensor>* PolycrystalDiffusivityTensorBase::_dDdgradc
protectedinherited

◆ _dDdgradeta

std::vector<MaterialProperty<RankThreeTensor> *> PolycrystalDiffusivityTensorBase::_dDdgradeta
protectedinherited

◆ _diffusivity_name

std::string PolycrystalDiffusivityTensorBase::_diffusivity_name
protectedinherited

◆ _Em

Real PolycrystalDiffusivityTensorBase::_Em
protectedinherited

◆ _gb_index

Real PolycrystalDiffusivityTensorBase::_gb_index
protectedinherited

◆ _GBmob0

Real GrandPotentialTensorMaterial::_GBmob0
protected

Definition at line 63 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _GBMobility

Real GrandPotentialTensorMaterial::_GBMobility
protected

Definition at line 62 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _grad_c

const VariableGradient& PolycrystalDiffusivityTensorBase::_grad_c
protectedinherited

◆ _grad_vals

std::vector<const VariableGradient *> PolycrystalDiffusivityTensorBase::_grad_vals
protectedinherited

◆ _int_width

Real GrandPotentialTensorMaterial::_int_width
protected

interface width

Definition at line 52 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _kb

const Real PolycrystalDiffusivityTensorBase::_kb
protectedinherited

◆ _Ls

MaterialProperty<Real>& GrandPotentialTensorMaterial::_Ls
protected

Definition at line 39 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _Ls_name

std::string GrandPotentialTensorMaterial::_Ls_name
protected

grain boundary mobility

Definition at line 38 of file GrandPotentialTensorMaterial.h.

◆ _Lv

MaterialProperty<Real>& GrandPotentialTensorMaterial::_Lv
protected

Definition at line 43 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _Lv_name

std::string GrandPotentialTensorMaterial::_Lv_name
protected

void mobility

Definition at line 42 of file GrandPotentialTensorMaterial.h.

◆ _op_num

const unsigned int PolycrystalDiffusivityTensorBase::_op_num
protectedinherited

◆ _Q

const Real GrandPotentialTensorMaterial::_Q
protected

Definition at line 64 of file GrandPotentialTensorMaterial.h.

Referenced by computeProperties().

◆ _s_index

Real PolycrystalDiffusivityTensorBase::_s_index
protectedinherited

◆ _sigma_s

const MaterialProperty<Real>& GrandPotentialTensorMaterial::_sigma_s
protected

surface energy

Definition at line 49 of file GrandPotentialTensorMaterial.h.

◆ _T

const VariableValue& PolycrystalDiffusivityTensorBase::_T
protectedinherited

◆ _vals

std::vector<const VariableValue *> PolycrystalDiffusivityTensorBase::_vals
protectedinherited

◆ _vals_name

std::vector<NonlinearVariableName> PolycrystalDiffusivityTensorBase::_vals_name
protectedinherited

The documentation for this class was generated from the following files: