11 #include "libmesh/quadrature.h" 12 #include "libmesh/utility.h" 21 "Calculates density, susceptibility, and derivatives for a defect species in the grand " 22 "potential sintering model coupled with electrochemistry");
24 "etas",
"var_name_base",
"op_num",
"Array of order parameters that describe solid phase");
29 "Name of the electric potential variable with units of V");
30 params.
addParam<MaterialPropertyName>(
33 "Name of material property to be created for defect number density in the void phase.");
34 params.
addParam<MaterialPropertyName>(
37 "Name of material property to be created for defect number density in the solid phase.");
38 params.
addParam<MaterialPropertyName>(
39 "chi_name",
"chi",
"Name of material property to be created defect susceptibility.");
40 params.
addParam<MaterialPropertyName>(
"solid_energy_coefficient",
42 "Parabolic solid energy coefficient (energy*volume) for " 43 "defect species. Only used for parabolic energy.");
45 "void_energy_coefficient",
46 "Parabolic void energy coefficient (energy*volume) for defect species.");
48 "min_vacancy_concentration_solid",
49 "Name of material that determines the minimum in energy wrt defect concentration in the " 52 "Minimum in energy wrt defect concentration in the void phase");
53 MooseEnum solid_energy_model(
"PARABOLIC DILUTE IDEAL",
"PARABOLIC");
56 "Type of energy function to use for the solid phase.");
57 params.
addRequiredParam<
int>(
"defect_charge",
"Effective charge of defect species");
59 "Solid phase relative permittivity (dimensionless)");
60 params.
addParam<
Real>(
"voltage_scale", 1,
"Voltage scale (default is for voltage in V)");
66 _neta(coupledComponents(
"etas")),
69 _w(coupledValue(
"chemical_potential")),
70 _w_name(coupledName(
"chemical_potential", 0)),
71 _phi(coupledValue(
"void_op")),
72 _phi_name(coupledName(
"void_op", 0)),
73 _ns_min_name(getParam<MaterialPropertyName>(
"min_vacancy_concentration_solid")),
74 _ns_min(getMaterialProperty<
Real>(_ns_min_name)),
77 _temp(coupledValue(
"Temperature")),
78 _v(coupledValue(
"electric_potential")),
79 _grad_V(coupledGradient(
"electric_potential")),
80 _kv(getMaterialProperty<
Real>(
"void_energy_coefficient")),
81 _ks(getMaterialProperty<
Real>(
"solid_energy_coefficient")),
82 _hv(getMaterialPropertyByName<
Real>(
"hv")),
83 _dhv(getMaterialPropertyDerivativeByName<
Real>(
"hv", _phi_name)),
84 _d2hv(getMaterialPropertyDerivativeByName<
Real>(
"hv", _phi_name, _phi_name)),
85 _hs(getMaterialPropertyByName<
Real>(
"hs")),
86 _dhs(getMaterialPropertyDerivativeByName<
Real>(
"hs", _phi_name)),
87 _d2hs(getMaterialPropertyDerivativeByName<
Real>(
"hs", _phi_name, _phi_name)),
88 _chi_name(getParam<MaterialPropertyName>(
"chi_name")),
89 _chi(declareProperty<
Real>(_chi_name)),
90 _dchidphi(declarePropertyDerivative<
Real>(_chi_name, _phi_name)),
91 _dchidw(declarePropertyDerivative<
Real>(_chi_name, _w_name)),
92 _d2chidphi2(declarePropertyDerivative<
Real>(_chi_name, _phi_name, _phi_name)),
93 _d2chidw2(declarePropertyDerivative<
Real>(_chi_name, _w_name, _w_name)),
94 _d2chidphidw(declarePropertyDerivative<
Real>(_chi_name, _phi_name, _w_name)),
95 _nv_name(getParam<MaterialPropertyName>(
"void_density_name")),
96 _nv(declareProperty<
Real>(_nv_name)),
97 _dnvdw(declarePropertyDerivative<
Real>(_nv_name, _w_name)),
98 _ns_name(getParam<MaterialPropertyName>(
"solid_density_name")),
99 _ns(declareProperty<
Real>(_ns_name)),
100 _dnsdw(declarePropertyDerivative<
Real>(_ns_name, _w_name)),
101 _d2nsdw2(declarePropertyDerivative<
Real>(_ns_name, _w_name, _w_name)),
105 _solid_energy(getParam<
MooseEnum>(
"solid_energy_model")),
108 _z(getParam<
int>(
"defect_charge")),
109 _v_scale(getParam<
Real>(
"voltage_scale")),
110 _eps_r(getParam<
Real>(
"solid_relative_permittivity")),
111 _nv_min(getParam<
Real>(
"min_vacancy_concentration_void"))
114 for (
unsigned int i = 0; i <
_neta; ++i)
124 for (
unsigned int j = 0;
j <= i; ++
j)
151 for (
unsigned int i = 0; i <
_neta; ++i)
155 for (
unsigned int j = i;
j <
_neta; ++
j)
170 for (
unsigned int i = 0; i <
_neta; ++i)
174 for (
unsigned int j = i;
j <
_neta; ++
j)
183 mooseError(
"Ideal solution in solid is not yet supported in ElectrochemicalDefectMaterial");
const MooseEnum _solid_energy
Type of energy function to use for the solid phase.
const VariableValue & _v
electric potential
const Real _kB
Boltzmann constant.
MaterialProperty< Real > & _dchidphi
const MaterialProperty< Real > & _hv
void phase switching function
VariableName coupledName(const std::string &var_name, unsigned int comp=0) const
MaterialProperty< Real > & _d2chidphi2
const Real _nv_min
minimum in energy wrt vacancy concentration in void
const MaterialProperty< Real > & _dhs
const Real _e
Electron charge.
virtual void computeQpProperties()
MaterialProperty< Real > & _dnsdw
const MaterialProperty< Real > & _d2hs
std::vector< std::vector< MaterialProperty< Real > * > > _d2ns
const int _z
Defect species charge.
std::vector< MaterialProperty< Real > * > _dns
virtual const VariableValue & coupledValue(const std::string &var_name, unsigned int comp=0) const
const MaterialProperty< Real > & _ns_min
registerMooseObject("PhaseFieldApp", ElectrochemicalDefectMaterial)
const MaterialProperty< Real > & _ks
solid energy coefficient
MaterialProperty< Real > & _ns
MaterialPropertyName _ns_name
solid phase vacancy density
static InputParameters validParams()
const VariableValue & _temp
temperature
const unsigned int _neta
number of solid phase order paramters
const MaterialProperty< Real > & _kv
void energy coefficient
MaterialProperty< Real > & _dchidw
const MaterialProperty< Real > & _hs
solid phase switching function
std::vector< std::vector< const MaterialProperty< Real > * > > _d2ns_min
static InputParameters validParams()
MaterialProperty< Real > & _dnvdw
MaterialProperty< Real > & _nv
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const NonlinearVariableName _w_name
ElectrochemicalDefectMaterial(const InputParameters ¶meters)
MaterialProperty< Real > & _d2chidphidw
std::vector< MaterialProperty< Real > * > _d2nsdwdeta
void mooseError(Args &&... args) const
const MaterialProperty< Real > & _d2hv
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
std::vector< const MaterialProperty< Real > * > _dns_min
const Real _v_scale
Voltage scale.
MaterialProperty< Real > & _chi
std::vector< VariableName > _eta_name
This material calculates defect-specific parameters for the grand potential sintering model with mult...
MaterialProperty< Real > & _d2nsdw2
std::vector< const VariableValue * > _eta
solid phase order parameters
const MaterialProperty< Real > & _dhv
void ErrorVector unsigned int
const MaterialPropertyName _ns_min_name
minimum in energy wrt vacancy concentration in solid
const VariableValue & _w
chemical potential
MaterialProperty< Real > & _d2chidw2