22 params.
addClassDescription(
"Bimodal size distribution of large particles (specified in input " 23 "file) and small particles (placed randomly outside the larger " 25 params.
addRequiredParam<
unsigned int>(
"npart",
"The number of random (small) particles to place");
28 "minimum spacing between small particles, measured from closest edge to closest edge");
30 "minimum spacing between large and small particles, " 31 "measured from closest edge to closest edge");
33 "small_a",
"Mean semiaxis a value for the randomly placed (small) superellipsoids");
35 "small_b",
"Mean semiaxis b value for the randomly placed (small) superellipsoids");
37 "small_c",
"Mean semiaxis c value for the randomly placed (small) superellipsoids");
39 "Exponent n for the randomly placed (small) superellipsoids");
42 "Plus or minus fraction of random variation in the " 43 "semiaxes for uniform, standard deviation for " 45 MooseEnum rand_options(
"uniform normal none",
"none");
47 "size_variation_type", rand_options,
"Type of distribution that random semiaxes will follow");
49 "numtries", 1000,
"The number of tries to place the random particles");
55 _npart(getParam<unsigned
int>(
"npart")),
56 _small_spac(getParam<
Real>(
"small_spac")),
57 _large_spac(getParam<
Real>(
"large_spac")),
58 _small_a(getParam<
Real>(
"small_a")),
59 _small_b(getParam<
Real>(
"small_b")),
60 _small_c(getParam<
Real>(
"small_c")),
61 _small_n(getParam<
Real>(
"small_n")),
62 _size_variation(getParam<
Real>(
"size_variation")),
63 _size_variation_type(getParam<
MooseEnum>(
"size_variation_type")),
64 _max_num_tries(getParam<unsigned
int>(
"numtries"))
80 mooseError(
"If size_variation > 0.0, you must pass in a size_variation_type in " 81 "BimodalSuperellipsoidsIC");
94 for (
unsigned int i = 0; i <
_input_as.size(); ++i)
141 for (
unsigned int i = 0; i <
_input_ns.size(); ++i)
166 unsigned int num_tries = 0;
180 for (
unsigned int j = 0;
j < i; ++
j)
188 const Real dist = dist_vec.norm();
219 mooseError(
"Too many tries in MultiSmoothCircleIC");
registerMooseObject("PhaseFieldApp", BimodalSuperellipsoidsIC)
virtual Real getMaxInDimension(unsigned int component) const
virtual void computeSuperellipsoidSemiaxes()
virtual Real getMinInDimension(unsigned int component) const
virtual void initialSetup()
std::vector< Point > _centers
unsigned int number() const
virtual void computeSuperellipsoidCenters()
const unsigned int _max_num_tries
std::vector< Real > _input_ns
RealVectorValue minPeriodicVector(unsigned int nonlinear_var_num, Point p, Point q) const
const Real _size_variation
std::vector< Real > _input_bs
static constexpr std::size_t dim
static InputParameters validParams()
SpecifiedSmoothSuperellipsoidIC creates multiple SmoothSuperellipsoids (number = size of x_positions)...
MooseVariableField< T > & _var
static InputParameters validParams()
Real randNormal(std::size_t i, Real mean, Real sigma)
BimodalSuperellipsoidsIC takes a specified number of superellipsoids, each with given parameters Thes...
ADRealEigenVector< T, D, asd > abs(const ADRealEigenVector< T, D, asd > &)
TensorValue< Real > RealTensorValue
unsigned int _npart
Variables to describe the randomly placed (smaller) superellipsoids.
const MooseEnum _size_variation_type
std::vector< Real > _input_as
BimodalSuperellipsoidsIC(const InputParameters ¶meters)
std::vector< Real > _y_positions
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void computeSuperellipsoidExponents()
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
std::vector< Real > _z_positions
std::vector< Real > _x_positions
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
virtual void initialSetup()
MooseUnits pow(const MooseUnits &, int)
void ErrorVector unsigned int
std::vector< Real > _input_cs