21 "v",
"var_name_base",
"op_num",
"Array of coupled variables");
24 "Number of order parameters contacting a boundary " 25 "(should be 2.0 in polycrystals and 1.0 for " 26 "dispersed particles)");
29 "Range over which order parameters change across an " 30 "interface. By default order parameters are assumed to " 37 _op_num(coupledComponents(
"v")),
39 _factor(getParam<
Real>(
"grains_per_side") * getParam<
Real>(
"op_range"))
43 mooseError(
"Neither grains_per_side nor op_range may be zero.");
46 for (MooseIndex(
_op_num) op_index = 0; op_index <
_op_num; ++op_index)
55 grad_sum += (*grad)[
_qp].norm();
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
std::vector< const VariableGradient * > _grads
Order parameters.
const unsigned int _op_num
Number of order parameters.
virtual const VariableGradient & coupledGradient(const std::string &var_name, unsigned int comp=0) const
GrainBoundaryArea(const InputParameters ¶meters)
static InputParameters validParams()
registerMooseObject("PhaseFieldApp", GrainBoundaryArea)
virtual Real getValue() const override
const Real _factor
normalization factor, depending on order parameter range and grains per side
virtual Real getValue() const override
std::string grad(const std::string &var)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual Real computeQpIntegral() override
void mooseError(Args &&... args) const
static InputParameters validParams()
Calculate total grain boundary length in 2D and area in 3D.