https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
47void
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
60void
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
75void
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}
registerMooseObject("PhaseFieldApp", SpecifiedSmoothSuperellipsoidIC)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
SmoothSuperellipsoidBaseIC is the base class for all initial conditions that create superellipsoids.
static InputParameters validParams()
SpecifiedSmoothSuperellipsoidIC creates multiple SmoothSuperellipsoids (number = size of x_positions)...
SpecifiedSmoothSuperellipsoidIC(const InputParameters &parameters)