25 "The variable value for nested particles inside the superellipsoid in inverse configuration");
27 "int_width", 0.0,
"The interfacial width of the void surface. Defaults to sharp interface");
28 params.
addParam<
bool>(
"zero_gradient",
30 "Set the gradient DOFs to zero. This can avoid " 31 "numerical problems with higher order shape " 33 params.
addParam<
unsigned int>(
"rand_seed", 12345,
"Seed value for the random number generator");
39 _mesh(_fe_problem.
mesh()),
40 _invalue(parameters.
get<
Real>(
"invalue")),
41 _outvalue(parameters.
get<
Real>(
"outvalue")),
42 _nestedvalue(isParamValid(
"nestedvalue") ? parameters.
get<
Real>(
"nestedvalue")
43 : parameters.
get<
Real>(
"outvalue")),
44 _int_width(parameters.
get<
Real>(
"int_width")),
45 _zero_gradient(parameters.
get<bool>(
"zero_gradient"))
59 mooseError(
"_center and semiaxis _as vectors are not the same size in the Superellipsoid IC");
61 mooseError(
"_center and semiaxis _bs vectors are not the same size in the Superellipsoid IC");
63 mooseError(
"_center and semiaxis _cs vectors are not the same size in the Superellipsoid IC");
65 mooseError(
"_center and exponent _ns vectors are not the same size in the Superellipsoid IC");
68 mooseError(
"_centers, _as, _bs, _cs, and _ns were not initialized in the Superellipsoid IC");
98 for (
unsigned int ellip = 0; ellip <
_centers.size(); ++ellip)
115 const Point & p,
const Point &
center, Real
a, Real
b, Real
c, Real n)
135 std::pow(std::abs(dist_vec(1) / dist /
b), n) +
136 std::pow(std::abs(dist_vec(2) / dist /
c), n));
156 const Point & p,
const Point &
center, Real
a, Real
b, Real
c, Real n)
176 std::pow(std::abs(dist_vec(1) / dist /
b), n) +
177 std::pow(std::abs(dist_vec(2) / dist /
c), n));
196 const Point & p,
const Point &
center, Real
a, Real
b, Real
c, Real n)
215 std::pow(std::abs(dist_vec(1) / dist /
b), n) +
216 std::pow(std::abs(dist_vec(2) / dist /
c), n));
222 if (dist < r + _int_width / 2.0 && dist > r -
_int_width / 2.0)
230 return dist_vec * (DvalueDr / dist);
virtual RealGradient gradient(const Point &p)
virtual void computeSuperellipsoidSemiaxes()=0
std::vector< Point > _centers
unsigned int number() const
static InputParameters validParams()
RealVectorValue minPeriodicVector(unsigned int nonlinear_var_num, Point p, Point q) const
void seed(std::size_t i, unsigned int seed)
static InputParameters validParams()
virtual Real value(const Point &p)
MooseVariableField< T > & _var
RealGradient computeSuperellipsoidGradient(const Point &p, const Point ¢er, Real a, Real b, Real c, Real n)
Real minPeriodicDistance(unsigned int nonlinear_var_num, Point p, Point q) const
virtual Real computeSuperellipsoidValue(const Point &p, const Point ¢er, Real a, Real b, Real c, Real n)
virtual Real computeSuperellipsoidInverseValue(const Point &p, const Point ¢er, Real a, Real b, Real c, Real n)
virtual void computeSuperellipsoidCenters()=0
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void computeSuperellipsoidExponents()=0
void mooseError(Args &&... args) const
virtual void initialSetup()
MooseUnits pow(const MooseUnits &, int)
SmoothSuperellipsoidBaseIC(const InputParameters ¶meters)
const Elem & get(const ElemType type_in)
static const std::string center