13 #include "libmesh/quadrature.h" 21 params.
addClassDescription(
"Generates a spatial smoothed map of all nucleation sites with the " 22 "data of the DiscreteNucleationInserter for use by the " 23 "DiscreteNucleation material.");
24 params.
addParam<
Real>(
"int_width", 0.0,
"Nucleus interface width for smooth nuclei");
25 params.
addRequiredParam<UserObjectName>(
"inserter",
"DiscreteNucleationInserter user object");
27 "Use the periodicity settings of this variable to populate the grain map");
38 _periodic(isCoupled(
"periodic") ? coupled(
"periodic") : -1),
39 _int_width(getParam<
Real>(
"int_width")),
40 _nucleus_list(_inserter.getNucleusList())
68 unsigned int active_nuclei = 0;
69 for (
unsigned int qp = 0; qp <
_qrule->n_points(); ++qp)
71 Real r = std::numeric_limits<Real>::max();
74 Real local_radius = 0.0;
104 if (active_nuclei > 0)
117 _nucleus_map.insert(uo._nucleus_map.begin(), uo._nucleus_map.end());
127 const std::vector<Real> &
130 NucleusMap::const_iterator i =
_nucleus_map.find(elem->id());
const DiscreteNucleationInserterBase & _inserter
UserObject that manages nucleus insertin and deletion.
static InputParameters validParams()
const MooseArray< Point > & _q_point
This UserObject maintains a per QP map that indicates if a nucleus is present or not.
bool _mesh_changed
Did the mesh change since the last execution of this PP?
virtual bool isMapUpdateRequired() const
virtual void threadJoin(const UserObject &y)
static InputParameters validParams()
int _periodic
variable number to use for minPeriodicDistance calls (i.e. use the periodicity of this variable) ...
const std::vector< double > y
const Real _int_width
Nucleus interface width.
DiscreteNucleationMap(const InputParameters ¶meters)
This UserObject manages the insertion and expiration of nuclei in the simulation domain it manages a ...
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
const ExecFlagType EXEC_TIMESTEP_BEGIN
std::vector< Real > _zero_map
Dummy map for elements without nuclei.
Real minPeriodicDistance(unsigned int nonlinear_var_num, Point p, Point q) const
virtual void meshChanged()
registerMooseObject("PhaseFieldApp", DiscreteNucleationMap)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const QBase *const & _qrule
const Elem *const & _current_elem
std::vector< Real > _elem_map
Buffer for building the per QP map.
FEProblemBase & _fe_problem
virtual void initialize()
const std::vector< Real > & nuclei(const Elem *) const
bool _rebuild_map
Do we need to rebuild the map during this timestep?
const DiscreteNucleationInserterBase::NucleusList & _nucleus_list
list of nuclei maintained bu the inserter object
static const std::string center
unsigned int getMaxQps() const