14 #include "libmesh/quadrature.h" 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>(
"int_width", 0.0,
"Nucleus interface width for smooth nuclei");
26 params.
addRequiredParam<UserObjectName>(
"inserter",
"DiscreteNucleationInserter user object");
28 "Use the periodicity settings of this variable to populate the grain map");
39 _periodic(isCoupled(
"periodic") ? coupled(
"periodic") : -1),
40 _int_width(getParam<
Real>(
"int_width")),
41 _nucleus_list(_inserter.getNucleusList())
79 unsigned int active_nuclei = 0;
80 for (
unsigned int qp = 0; qp <
_qrule->n_points(); ++qp)
82 Real r = std::numeric_limits<Real>::max();
85 Real local_radius = 0.0;
115 if (active_nuclei > 0)
128 _nucleus_map.insert(uo._nucleus_map.begin(), uo._nucleus_map.end());
138 const std::vector<Real> &
141 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) ...
bool _force_rebuild_map
If a timestep is repeated due to a failed solve, we don't want to rebuild the map.
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()
Executioner * getExecutioner() const
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
virtual bool lastSolveConverged() const=0
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