Go to the documentation of this file.
19 InputParameters params = validParams<Kernel>();
20 params.addClassDescription(
21 "Term for inserting grain nuclei or phases in non-conserved order parameter fields");
22 params.addRequiredParam<UserObjectName>(
"map",
"DiscreteNucleationMap user object");
23 params.addParam<Real>(
"no_nucleus_value", 0.0,
"Variable value indicating no nucleus is present");
24 params.addParam<Real>(
25 "nucleus_value", 1.0,
"Variable value indicating the presence of a nucleus");
32 _v0(getParam<Real>(
"no_nucleus_value")),
33 _v1(getParam<Real>(
"nucleus_value"))
47 return -((*_nucleus)[_qp] * (
_v1 -
_v0) +
_v0) * _test[_i][_qp];
This UserObject maintains a per QP map that indicates if a nucleus is present or not.
registerMooseObject("PhaseFieldApp", DiscreteNucleationForce)
void precalculateResidual() override
Free energy penalty contribution to force the nucleation of subresolution particles.
const std::vector< Real > * _nucleus
nucleus data for the current element
const DiscreteNucleationMap & _map
UserObject providing a map of currently active nuclei.
DiscreteNucleationForce(const InputParameters ¶ms)
const std::vector< Real > & nuclei(const Elem *) const
Real computeQpResidual() override
InputParameters validParams< DiscreteNucleationForce >()
const Real _v0
Bounds for the returned values.