14 #include "libmesh/utility.h" 26 "Arbitrary material property of the sum of an arbitary number ($i$) of " 27 "Arrhenius functions $A_i * \\exp{-Q_i / (RT)}$, where $A_i$ is the frequency " 28 "factor, $Q_i$ is the activation energy, and $R$ is the gas constant.");
31 "Specify the name of this material property");
34 "List of Arrhenius pre-exponential coefficients");
35 params.
addRequiredParam<std::vector<Real>>(
"activation_energy",
"List of activation energies");
39 "Gas constant for Arrhenius function");
41 "initial_temperature",
43 "initial_temperature > 0",
44 "Initial temperature utilized for initialization of stateful properties");
54 this->template declareGenericProperty<
Real, is_ad>(getParam<
std::string>(
"property_name"))),
55 _diffusivity_dT(this->template declareGenericProperty<
Real, is_ad>(
56 getParam<
std::string>(
"property_name") +
"_dT")),
57 _temperature(this->template coupledGenericValue<is_ad>(
"temperature")),
58 _D_0(getParam<
std::vector<
Real>>(
"frequency_factor")),
59 _Q(getParam<
std::vector<
Real>>(
"activation_energy")),
60 _R(getParam<
Real>(
"gas_constant")),
62 _initial_temperature(this->template getParam<
Real>(
"initial_temperature"))
66 "frequency_factor and activation_energy must have the same number of entries");
69 "At least one frequency_factor and activation_energy parameter must be given");
76 _diffusivity[_qp] = 0.0;
77 _diffusivity_dT[_qp] = 0.0;
79 for (
unsigned int i = 0; i < _number; ++i)
81 _diffusivity[_qp] += _D_0[i] * std::exp(-_Q[i] / _R / _initial_temperature);
82 _diffusivity_dT[_qp] -= _D_0[i] * std::exp(-_Q[i] / _R / _initial_temperature) * _Q[i];
85 _diffusivity_dT[_qp] /= _R * Utility::pow<2>(_initial_temperature);
94 _diffusivity[_qp] = 0.0;
95 _diffusivity_dT[_qp] = 0.0;
97 for (
unsigned int i = 0; i < _number; ++i)
99 _diffusivity[_qp] += _D_0[i] * std::exp(-_Q[i] / _R / temp);
100 _diffusivity_dT[_qp] += _D_0[i] * std::exp(-_Q[i] / _R / temp) * _Q[i];
103 _diffusivity_dT[_qp] /= (_R * Utility::pow<2>(temp));
Moose::GenericType< Real, is_ad > GenericReal
const auto ideal_gas_constant
const unsigned int _number
Number of _D_0 and _Q parameters.
ArrheniusMaterialPropertyTempl(const InputParameters ¶meters)
static InputParameters validParams()
static InputParameters validParams()
void paramError(const std::string ¶m, Args... args) const
const std::vector< Real > _Q
Vector of activation energies.
virtual void computeQpProperties() override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void initQpStatefulProperties() override
registerMooseObject("MiscApp", ArrheniusMaterialProperty)