103 std::unique_ptr<RealSpace::Particles::Particle> result;
106 double length = ff_AnisoPyramid->getLength();
107 double width = ff_AnisoPyramid->getWidth();
108 double height = ff_AnisoPyramid->getHeight();
109 double alpha = ff_AnisoPyramid->getAlpha();
110 result = std::make_unique<RealSpace::Particles::AnisoPyramid>(length, width, height, alpha);
112 double length = ff_BarGauss->getLength();
113 double width = ff_BarGauss->getWidth();
114 double height = ff_BarGauss->getHeight();
115 result = std::make_unique<RealSpace::Particles::BarGauss>(length, width, height);
117 double length = ff_BarLorentz->getLength();
118 double width = ff_BarLorentz->getWidth();
119 double height = ff_BarLorentz->getHeight();
120 result = std::make_unique<RealSpace::Particles::BarLorentz>(length, width, height);
121 }
else if (
auto ff_Box =
dynamic_cast<const FormFactorBox*
>(ff)) {
122 double length = ff_Box->getLength();
123 double width = ff_Box->getWidth();
124 double height = ff_Box->getHeight();
125 result = std::make_unique<RealSpace::Particles::Box>(length, width, height);
126 }
else if (
auto ff_Cone =
dynamic_cast<const FormFactorCone*
>(ff)) {
127 double radius = ff_Cone->getRadius();
128 double height = ff_Cone->getHeight();
129 double alpha = ff_Cone->getAlpha();
130 result = std::make_unique<RealSpace::Particles::Cone>(radius, height, alpha);
132 double baseedge = ff_Cone6->getBaseEdge();
133 double height = ff_Cone6->getHeight();
134 double alpha = ff_Cone6->getAlpha();
135 result = std::make_unique<RealSpace::Particles::Cone6>(baseedge, height, alpha);
137 double length = ff_Cuboctahedron->getLength();
138 double height = ff_Cuboctahedron->getHeight();
139 double height_ratio = ff_Cuboctahedron->getHeightRatio();
140 double alpha = ff_Cuboctahedron->getAlpha();
141 result = std::make_unique<RealSpace::Particles::Cuboctahedron>(length, height, height_ratio,
144 double radius = ff_Cylinder->getRadius();
145 double height = ff_Cylinder->getHeight();
146 result = std::make_unique<RealSpace::Particles::Cylinder>(radius, height);
148 double edge = ff_Dodecahedron->getEdge();
149 result = std::make_unique<RealSpace::Particles::Dodecahedron>(edge);
150 }
else if (
auto ff_Dot =
dynamic_cast<const FormFactorDot*
>(ff)) {
152 result = std::make_unique<RealSpace::Particles::Dot>();
153 }
else if (
auto ff_EllipsoidalCylinder =
155 double radius_x = ff_EllipsoidalCylinder->getRadiusX();
156 double radius_y = ff_EllipsoidalCylinder->getRadiusY();
157 double height = ff_EllipsoidalCylinder->getHeight();
159 std::make_unique<RealSpace::Particles::EllipsoidalCylinder>(radius_x, radius_y, height);
161 double radius = ff_FullSphere->getRadius();
162 result = std::make_unique<RealSpace::Particles::FullSphere>(radius);
164 double radius = ff_FullSpheroid->getRadius();
165 double height = ff_FullSpheroid->getHeight();
166 result = std::make_unique<RealSpace::Particles::FullSpheroid>(radius, height);
168 double radius_x = ff_HemiEllipsoid->getRadiusX();
169 double radius_y = ff_HemiEllipsoid->getRadiusY();
170 double height = ff_HemiEllipsoid->getHeight();
171 result = std::make_unique<RealSpace::Particles::HemiEllipsoid>(radius_x, radius_y, height);
173 double edge = ff_Icosahedron->getEdge();
174 result = std::make_unique<RealSpace::Particles::Icosahedron>(edge);
176 double baseedge = ff_Prism3->getBaseEdge();
177 double height = ff_Prism3->getHeight();
178 result = std::make_unique<RealSpace::Particles::Prism3>(baseedge, height);
180 double baseedge = ff_Prism6->getBaseEdge();
181 double height = ff_Prism6->getHeight();
182 result = std::make_unique<RealSpace::Particles::Prism6>(baseedge, height);
184 double baseedge = ff_Pyramid->getBaseEdge();
185 double height = ff_Pyramid->getHeight();
186 double alpha = ff_Pyramid->getAlpha();
187 result = std::make_unique<RealSpace::Particles::Pyramid>(baseedge, height, alpha);
189 double length = ff_CosineRippleBox->getLength();
190 double width = ff_CosineRippleBox->getWidth();
191 double height = ff_CosineRippleBox->getHeight();
192 result = std::make_unique<RealSpace::Particles::CosineRippleBox>(length, width, height);
194 double length = ff_CosineRippleGauss->getLength();
195 double width = ff_CosineRippleGauss->getWidth();
196 double height = ff_CosineRippleGauss->getHeight();
197 result = std::make_unique<RealSpace::Particles::CosineRippleGauss>(length, width, height);
198 }
else if (
auto ff_CosineRippleLorentz =
200 double length = ff_CosineRippleLorentz->getLength();
201 double width = ff_CosineRippleLorentz->getWidth();
202 double height = ff_CosineRippleLorentz->getHeight();
203 result = std::make_unique<RealSpace::Particles::CosineRippleLorentz>(length, width, height);
205 double length = ff_SawtoothRippleBox->getLength();
206 double width = ff_SawtoothRippleBox->getWidth();
207 double height = ff_SawtoothRippleBox->getHeight();
208 result = std::make_unique<RealSpace::Particles::SawtoothRippleBox>(length, width, height);
209 }
else if (
auto ff_SawtoothRippleGauss =
211 double length = ff_SawtoothRippleGauss->getLength();
212 double width = ff_SawtoothRippleGauss->getWidth();
213 double height = ff_SawtoothRippleGauss->getHeight();
214 result = std::make_unique<RealSpace::Particles::SawtoothRippleGauss>(length, width, height);
215 }
else if (
auto ff_SawtoothRippleLorentz =
217 double length = ff_SawtoothRippleLorentz->getLength();
218 double width = ff_SawtoothRippleLorentz->getWidth();
219 double height = ff_SawtoothRippleLorentz->getHeight();
221 std::make_unique<RealSpace::Particles::SawtoothRippleLorentz>(length, width, height);
223 double baseedge = ff_Tetrahedron->getBaseEdge();
224 double height = ff_Tetrahedron->getHeight();
225 double alpha = ff_Tetrahedron->getAlpha();
226 result = std::make_unique<RealSpace::Particles::Tetrahedron>(baseedge, height, alpha);
228 double length = ff_TruncatedCube->getLength();
229 double removed_length = ff_TruncatedCube->getRemovedLength();
230 result = std::make_unique<RealSpace::Particles::TruncatedCube>(length, removed_length);
232 double radius = ff_TruncatedSphere->getRadius();
233 double height = ff_TruncatedSphere->getHeight();
234 double deltaH = ff_TruncatedSphere->getRemovedTop();
235 result = std::make_unique<RealSpace::Particles::TruncatedSphere>(radius, height, deltaH);
237 double radius = ff_TruncatedSpheroid->getRadius();
238 double height = ff_TruncatedSpheroid->getHeight();
239 double hfc = ff_TruncatedSpheroid->getHeightFlattening();
240 double deltaH = ff_TruncatedSpheroid->getRemovedTop();
242 std::make_unique<RealSpace::Particles::TruncatedSpheroid>(radius, height, hfc, deltaH);