|
| | TruncatedCone (const dealii::Point< dim, number > &axis_center, const dealii::Tensor< 1, dim, number > &axis_direction, const number radius_bottom, const number radius_top, const number half_length) |
| |
| dealii::Tensor< 1, dim, number > | gradient (const dealii::Point< dim, number > &x, const unsigned int component=0) const override |
| |
| number | value (const dealii::Point< dim, number > &x, const unsigned int component=0) const override |
| |
|
| const dealii::Point< dim, number > | axis_center |
| | The midpoint on its axis of the truncated cone.
|
| |
| dealii::Tensor< 1, dim, number > | axis |
| | The unit vector along the axis, pointing from the bottom to the top end.
|
| |
| const number | radius_bottom |
| | The radius at the bottom end, i.e. at -half_length along the axis.
|
| |
| const number | radius_top |
| | The radius at the top end, i.e. at +half_length along the axis.
|
| |
| const number | half_length |
| | Half of the truncated cone height, measured from the axis center along the axis.
|
| |
| const number | tolerance = 1e-12 |
| |
template<int dim, typename number>
class MeltPoolDG::Functions::Distance::TruncatedCone< dim, number >
Distance function of a finite truncated cone wall, described by the axis_center, the axis_direction, the radii at its two ends and its half_length along the axis. Setting one radius to zero yields a full cone; setting both radii equal yields a cylinder.
Only the lateral surface is modelled. Points beyond either end of the axis measure the distance to the corresponding rim circle, not to a closed solid.
template<int dim, typename number >
Gradient (unit vector) pointing from the closest point on the lateral surface towards x. On the surface itself, where the gradient is undefined, the inward surface normal is returned instead. On the axis, where every radial direction is equivalent, a fixed radial direction perpendicular to the axis is used. Since the distance function is scalar-valued, component must be 0; any other value triggers an exception in debug mode.
template<int dim, typename number >
Offset (axial, radial) from the closest point on the lateral surface to x, expressed in the meridian half plane through x.
Since the surface is generated by revolving a straight line about the axis, the closest point lies in the meridian half plane through x. The problem therefore reduces to the distance between the point (axial_coord, radial_coord) and the meridian segment running from (-half_length, radius_bottom) to (+half_length, radius_top).
The projection onto the segment is clamped to its endpoints.