16 #include "Base/Const/Units.h"
17 #include "Sample/HardParticle/HardParticles.h"
23 m_length.init(
"Length",
"Length of the rectangular base", 20.0,
Unit::nanometer,
"length");
24 m_width.init(
"Width",
"Width of the rectangular base", 16.0,
Unit::nanometer,
"width");
25 m_height.init(
"Height",
"Height of pyramid", 13.0,
Unit::nanometer,
"height");
26 m_alpha.init(
"Alpha",
"Dihedral angle between base and facet", 60.0,
Unit::degree,
"alpha");
31 return std::make_unique<Pyramid2>(length(), width(), height(), alpha() * Units::deg);
38 m_length.init(
"Length",
"Length of the base", 20.0,
Unit::nanometer,
"length");
39 m_width.init(
"Width",
"Width of the base", 16.0,
Unit::nanometer,
"width");
40 m_height.init(
"Height",
"Height of the box", 13.0,
Unit::nanometer,
"height");
45 return std::make_unique<BarGauss>(length(), width(), height());
52 m_length.init(
"Length",
"Length of the base", 20.0,
Unit::nanometer,
"length");
53 m_width.init(
"Width",
"Width of the base", 16.0,
Unit::nanometer,
"width");
54 m_height.init(
"Height",
"Height of the box", 13.0,
Unit::nanometer,
"height");
59 return std::make_unique<BarLorentz>(length(), width(), height());
66 m_length.init(
"Length",
"Length of the base", 20.0,
Unit::nanometer,
"length");
67 m_width.init(
"Width",
"Width of the base", 16.0,
Unit::nanometer,
"width");
68 m_height.init(
"Height",
"Height of the box", 13.0,
Unit::nanometer,
"height");
73 return std::make_unique<Box>(length(), width(), height());
80 m_radius.init(
"Radius",
"Radius of the base", 10.0,
Unit::nanometer,
"radius");
81 m_height.init(
"Height",
"Height of the cone", 13.0,
Unit::nanometer,
"height");
82 m_alpha.init(
"Alpha",
"Angle between the base and the side surface", 60.0,
Unit::degree,
88 return std::make_unique<Cone>(radius(), height(), alpha() * Units::deg);
95 m_baseEdge.init(
"Base edge",
"Edge of the regular hexagonal base", 10.0,
Unit::nanometer,
97 m_height.init(
"Height",
"Height of a truncated pyramid", 13.0,
Unit::nanometer,
"height");
98 m_alpha.init(
"Alpha",
"Dihedral angle between base and facet", 60.0,
Unit::degree,
"alpha");
103 return std::make_unique<Pyramid6>(baseEdge(), height(), alpha() * Units::deg);
110 m_length.init(
"Length",
"Side length of the common square base", 20.0,
Unit::nanometer,
113 m_height.init(
"Height",
"Height of the lower pyramid", 13.0,
Unit::nanometer,
"height");
115 m_heightRatio.init(
"Height ratio",
"Ratio of heights of top to bottom pyramids", 0.7,
118 m_alpha.init(
"Alpha",
"Dihedral angle between base and facets", 60.0,
Unit::degree,
"alpha");
123 return std::make_unique<Bipyramid4>(length(), height(), heightRatio(), alpha() * Units::deg);
130 m_radius.init(
"Radius",
"Radius of the circular base", 8.0,
Unit::nanometer,
"radius");
131 m_height.init(
"Height",
"Height of the cylinder", 16.0,
Unit::nanometer,
"height");
136 return std::make_unique<Cylinder>(radius(), height());
143 m_edge.init(
"Edge",
"Length of the edge", 10.0,
Unit::nanometer,
"edge");
148 return std::make_unique<Dodecahedron>(edge());
155 m_radiusX.init(
"Radius x",
"Radius of the ellipse base in the x-direction", 8.0,
157 m_radiusY.init(
"Radius y",
"Radius of the ellipse base in the y-direction", 13.0,
159 m_height.init(
"Height",
"Height of the ellipsoidal cylinder", 16.0,
Unit::nanometer,
"height");
164 return std::make_unique<EllipsoidalCylinder>(radiusX(), radiusY(), height());
171 m_radius.init(
"Radius",
"Radius of the sphere", 8.0,
Unit::nanometer,
"radius");
176 return std::make_unique<Sphere>(radius());
183 m_radius.init(
"Radius",
"Radius of the circular cross section", 10.0,
Unit::nanometer,
185 m_height.init(
"Height",
"Height of the full spheroid", 13.0,
Unit::nanometer,
"height");
190 return std::make_unique<Spheroid>(radius(), height());
197 m_radiusX.init(
"Radius x",
"Radius of the ellipse base in the x-direction", 10.0,
199 m_radiusY.init(
"Radius y",
"Radius of the ellipse base in the y-direction", 6.0,
201 m_height.init(
"Height",
"Height of the hemi ellipsoid", 8.0,
Unit::nanometer,
"height");
206 return std::make_unique<HemiEllipsoid>(radiusX(), radiusY(), height());
213 m_edge.init(
"Edge",
"Length of the edge", 10.0,
Unit::nanometer,
"edge");
218 return std::make_unique<Icosahedron>(edge());
225 m_baseEdge.init(
"Base edge",
"Length of the base edge", 10.0,
Unit::nanometer,
"baseEdge");
231 return std::make_unique<Prism3>(baseEdge(), height());
238 m_baseEdge.init(
"Base edge",
"Length of the hexagonal base", 5.0,
Unit::nanometer,
"baseEdge");
244 return std::make_unique<Prism6>(baseEdge(), height());
251 m_baseEdge.init(
"Base edge",
"Length of the square base", 18.0,
Unit::nanometer,
"baseEdge");
252 m_height.init(
"Height",
"Height of the pyramid", 13.0,
Unit::nanometer,
"height");
253 m_alpha.init(
"Alpha",
"Dihedral angle between the base and a side face", 60.0,
Unit::degree,
259 return std::make_unique<Pyramid4>(baseEdge(), height(), alpha() * Units::deg);
266 m_length.init(
"Length",
"Length of the rectangular base", 27.0,
Unit::nanometer,
"length");
267 m_width.init(
"Width",
"Width of the rectangular base", 20.0,
Unit::nanometer,
"width");
268 m_height.init(
"Height",
"Height of the ripple", 14.0,
Unit::nanometer,
"height");
273 return std::make_unique<CosineRippleBox>(length(), width(), height());
280 m_length.init(
"Length",
"Length of the rectangular base", 27.0,
Unit::nanometer,
"length");
281 m_width.init(
"Width",
"Width of the rectangular base", 20.0,
Unit::nanometer,
"width");
282 m_height.init(
"Height",
"Height of the ripple", 14.0,
Unit::nanometer,
"height");
287 return std::make_unique<CosineRippleGauss>(length(), width(), height());
294 m_length.init(
"Length",
"Length of the rectangular base", 27.0,
Unit::nanometer,
"length");
295 m_width.init(
"Width",
"Width of the rectangular base", 20.0,
Unit::nanometer,
"width");
296 m_height.init(
"Height",
"Height of the ripple", 14.0,
Unit::nanometer,
"height");
301 return std::make_unique<CosineRippleLorentz>(length(), width(), height());
308 m_length.init(
"Length",
"Length of the rectangular base", 36.0,
Unit::nanometer,
"length");
309 m_width.init(
"Width",
"Width of the rectangular base", 25.0,
Unit::nanometer,
"width");
310 m_height.init(
"Height",
"Height of the ripple", 14.0,
Unit::nanometer,
"height");
311 m_asymmetry.init(
"Asymmetry",
"Asymmetry length of the triangular profile", 3.0,
317 return std::make_unique<SawtoothRippleBox>(length(), width(), height(), asymmetry());
324 m_length.init(
"Length",
"Length of the rectangular base", 36.0,
Unit::nanometer,
"length");
325 m_width.init(
"Width",
"Width of the rectangular base", 25.0,
Unit::nanometer,
"width");
326 m_height.init(
"Height",
"Height of the ripple", 14.0,
Unit::nanometer,
"height");
327 m_asymmetry.init(
"Asymmetry",
"Asymmetry length of the triangular profile", 3.0,
333 return std::make_unique<SawtoothRippleGauss>(length(), width(), height(), asymmetry());
340 m_length.init(
"Length",
"Length of the rectangular base", 36.0,
Unit::nanometer,
"length");
341 m_width.init(
"Width",
"Width of the rectangular base", 25.0,
Unit::nanometer,
"width");
342 m_height.init(
"Height",
"Height of the ripple", 14.0,
Unit::nanometer,
"height");
343 m_asymmetry.init(
"Asymmetry",
"Asymmetry length of the triangular profile", 3.0,
349 return std::make_unique<SawtoothRippleLorentz>(length(), width(), height(), asymmetry());
356 m_baseEdge.init(
"Base edge",
"Length of one edge of the equilateral triangular base", 15.0,
358 m_height.init(
"Height",
"Height of the tetrahedron", 6.0,
Unit::nanometer,
"height");
359 m_alpha.init(
"Alpha",
"Dihedral angle between base and facet", 60.0,
Unit::degree,
"alpha");
364 return std::make_unique<Pyramid3>(baseEdge(), height(), alpha() * Units::deg);
371 m_length.init(
"Length",
"Length of the full cube's edge", 15.0,
Unit::nanometer,
"length");
372 m_removedLength.init(
"Removed length",
"Removed length from each corner of the cube", 6.0,
378 return std::make_unique<TruncatedCube>(length(), removedLength());
385 m_radius.init(
"Radius",
"Radius of the truncated sphere", 5.0,
Unit::nanometer,
"radius");
386 m_height.init(
"Height",
"Height of the truncated sphere", 7.0,
Unit::nanometer,
"height");
387 m_removedTop.init(
"Delta height",
"Height of the removed top cap", 0.0,
Unit::nanometer,
393 return std::make_unique<TruncatedSphere>(radius(), height(), removedTop());
400 m_radius.init(
"Radius",
"Radius of the truncated spheroid", 7.5,
Unit::nanometer,
"radius");
401 m_height.init(
"Height",
"Height of the truncated spheroid", 9.0,
Unit::nanometer,
"height");
402 m_heightFlattening.init(
404 "Ratio of the height of the corresponding full spheroid to its diameter", 1.2,
407 m_removedTop.init(
"Delta height",
"Height of the removed top cap", 0.0,
Unit::nanometer,
413 return std::make_unique<TruncatedSpheroid>(radius(), height(), heightFlattening(),
421 m_length.init(
"Length",
"Length of the full cube's edge", 15.0,
Unit::nanometer,
"length");
422 m_removedLength.init(
"Removed length",
"Removed length from each edge and vertice of the cube",
428 return std::make_unique<CantellatedCube>(length(), removedLength());
435 m_radius.init(
"Radius",
"Radius of the horizontal cylinder", 7.5,
Unit::nanometer,
"radius");
436 m_length.init(
"Length",
"Length of the horizontal cylinder", 9.0,
Unit::nanometer,
"length");
437 m_sliceBottom.init(
"Bottom boundary",
"Position of the lower boundary relative to the center",
439 m_sliceTop.init(
"Top boundary",
"Position of the upper boundary relative to the center", +5.2,
445 return std::make_unique<HorizontalCylinder>(radius(), length(), sliceBottom(), sliceTop());
452 m_edge.init(
"Edge",
"Length of the edge", 10.0,
Unit::nanometer,
"edge");
457 return std::make_unique<PlatonicOctahedron>(edge());
464 m_edge.init(
"Edge",
"Length of the edge", 10.0,
Unit::nanometer,
"edge");
469 return std::make_unique<PlatonicTetrahedron>(edge());
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
CosineRippleLorentzItem()
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
EllipsoidalCylinderItem()
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
PlatonicTetrahedronItem()
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
SawtoothRippleGaussItem()
std::unique_ptr< IFormFactor > createFormFactor() const override
SawtoothRippleLorentzItem()
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
Supports serialization to or deserialization from QXmlStream.
void assertVersion(unsigned expectedVersion) const
As reader, throws DeserializationException unless the expected version is read. As writer,...
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
std::unique_ptr< IFormFactor > createFormFactor() const override
void rwProperty(Streamer &s, DoubleProperty &d)