21 {{0, 1, 7, 6},
false},
22 {{1, 2, 8, 7},
false},
23 {{2, 3, 9, 8},
false},
24 {{3, 4, 10, 9},
false},
25 {{4, 5, 11, 10},
false},
26 {{5, 0, 6, 11},
false},
27 {{6, 7, 8, 9, 10, 11},
true}},
30 FormFactorCone6::FormFactorCone6(
const std::vector<double> P)
33 "frustum with regular hexagonal base",
34 {{
"BaseEdge",
"nm",
"base edge length", 0, +INF, 0},
35 {
"Height",
"nm",
"height", 0, +INF, 0},
36 {
"Alpha",
"rad",
"angle between base and a side face", 0., M_PI_2, 0}}},
38 m_base_edge(m_P[0]), m_height(m_P[1]), m_alpha(m_P[2])
43 FormFactorCone6::FormFactorCone6(
double base_edge,
double height,
double alpha)
54 m_height - effects.dz_bottom - effects.dz_top, m_alpha);
55 return createTransformedFormFactor(slicedff, rot, effects.position);
61 if (!std::isfinite(cot_alpha) || cot_alpha < 0)
63 double r = cot_alpha * 2 / sqrt(3) * m_height / m_base_edge;
65 std::ostringstream ostr;
66 ostr <<
"Incompatible parameters in Cone6 ";
67 ostr <<
"(base_edge=" << m_base_edge;
68 ostr <<
", height:" << m_height;
69 ostr <<
", alpha[rad]:" << m_alpha <<
")";
73 double a = m_base_edge;
75 double ac = a * sqrt(3) / 2;
76 double b = a * (1 - r);
78 double bc = b * sqrt(3) / 2;
80 double zcom = m_height * (.5 - 2 * r / 3 + r * r / 4) / (1 - r + r * r / 3);
91 {b, 0., m_height - zcom},
92 {bs, bc, m_height - zcom},
93 {-bs, bc, m_height - zcom},
94 {-b, 0., m_height - zcom},
95 {-bs, -bc, m_height - zcom},
96 {bs, -bc, m_height - zcom}});
Defines many exception classes in namespace Exceptionss.
Defines M_PI and some more mathematical constants.
Defines namespace MathFunctions.
Pure virtual interface for rotations.
For internal use in IFormFactorPolyhedron.
Class that contains upper and lower limits of the z-coordinate for the slicing of form factors.
double cot(double x)
cotangent function: