https://mooseframework.inl.gov
SpecifiedSmoothSuperellipsoidIC.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 #include "MooseRandom.h"
12 
14 
17 {
19  params.addClassDescription("Multiple smooth superellipsoids with manually specified center "
20  "points; semiaxes a,b,c; and exponents n");
21  params.addRequiredParam<std::vector<Real>>("x_positions",
22  "The x-coordinate for each superellipsoid center");
23  params.addRequiredParam<std::vector<Real>>("y_positions",
24  "The y-coordinate for each superellipsoid center");
25  params.addRequiredParam<std::vector<Real>>("z_positions",
26  "The z-coordinate for each superellipsoid center");
27  params.addRequiredParam<std::vector<Real>>("as", "Semiaxis a for each superellipsoid");
28  params.addRequiredParam<std::vector<Real>>("bs", "Semiaxis b for each superellipsoid");
29  params.addRequiredParam<std::vector<Real>>("cs", "Semiaxis c for each superellipsoid");
30  params.addRequiredParam<std::vector<Real>>("ns", "Exponent n for each superellipsoid");
31 
32  return params;
33 }
34 
36  : SmoothSuperellipsoidBaseIC(parameters),
37  _x_positions(getParam<std::vector<Real>>("x_positions")),
38  _y_positions(getParam<std::vector<Real>>("y_positions")),
39  _z_positions(getParam<std::vector<Real>>("z_positions")),
40  _input_as(getParam<std::vector<Real>>("as")),
41  _input_bs(getParam<std::vector<Real>>("bs")),
42  _input_cs(getParam<std::vector<Real>>("cs")),
43  _input_ns(getParam<std::vector<Real>>("ns"))
44 {
45 }
46 
47 void
49 {
50  _centers.resize(_x_positions.size());
51 
52  for (unsigned int circ = 0; circ < _x_positions.size(); ++circ)
53  {
54  _centers[circ](0) = _x_positions[circ];
55  _centers[circ](1) = _y_positions[circ];
56  _centers[circ](2) = _z_positions[circ];
57  }
58 }
59 
60 void
62 {
63  _as.resize(_input_as.size());
64  _bs.resize(_input_bs.size());
65  _cs.resize(_input_cs.size());
66 
67  for (unsigned int circ = 0; circ < _input_as.size(); ++circ)
68  {
69  _as[circ] = _input_as[circ];
70  _bs[circ] = _input_bs[circ];
71  _cs[circ] = _input_cs[circ];
72  }
73 }
74 
75 void
77 {
78  _ns.resize(_input_ns.size());
79 
80  for (unsigned int circ = 0; circ < _input_ns.size(); ++circ)
81  _ns[circ] = _input_ns[circ];
82 }
static InputParameters validParams()
registerMooseObject("PhaseFieldApp", SpecifiedSmoothSuperellipsoidIC)
SmoothSuperellipsoidBaseIC is the base class for all initial conditions that create superellipsoids...
SpecifiedSmoothSuperellipsoidIC creates multiple SmoothSuperellipsoids (number = size of x_positions)...
void addRequiredParam(const std::string &name, const std::string &doc_string)
SpecifiedSmoothSuperellipsoidIC(const InputParameters &parameters)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)