11 #include "MooseMesh.h"
13 #include "libmesh/quadrature.h"
21 InputParameters params = validParams<ElementUserObject>();
22 params.addClassDescription(
"Generates a spatial smoothed map of all nucleation sites with the "
23 "data of the DiscreteNucleationInserter for use by the "
24 "DiscreteNucleation material.");
25 params.addParam<Real>(
"radius", 0.0,
"Radius for the inserted nuclei");
26 params.addParam<Real>(
"int_width", 0.0,
"Nucleus interface width for smooth nuclei");
27 params.addRequiredParam<UserObjectName>(
"inserter",
"DiscreteNucleationInserter user object");
28 params.addCoupledVar(
"periodic",
29 "Use the periodicity settings of this variable to populate the grain map");
32 params.set<ExecFlagEnum>(
"execute_on") = EXEC_TIMESTEP_BEGIN;
37 : ElementUserObject(parameters),
40 _periodic(isCoupled(
"periodic") ? coupled(
"periodic") : -1),
41 _radius(getParam<Real>(
"radius")),
42 _int_width(getParam<Real>(
"int_width")),
43 _nucleus_list(_inserter.getNucleusList())
45 _zero_map.assign(_fe_problem.getMaxQps(), 0.0);
71 unsigned int active_nuclei = 0;
72 for (
unsigned int qp = 0; qp < _qrule->n_points(); ++qp)
74 Real r, rmin = std::numeric_limits<Real>::max();
98 value = (1.0 + std::cos(int_pos * libMesh::pi)) / 2.0;
104 if (active_nuclei > 0)
106 std::pair<dof_id_type, std::vector<Real>>(_current_elem->id(),
_elem_map));
127 const std::vector<Real> &
130 NucleusMap::const_iterator i =
_nucleus_map.find(elem->id());