Derived class for 2-node edge surface elements (Edge2). More...
#include <SurfaceEdge2.h>
Public Member Functions | |
| SurfaceEdge2 (const Elem *elem) | |
| Constructor. | |
| bool | intersect (const LineSegment &line_segment) const override |
| Check if a line segment intersects another line segment, without returning the intersection point. | |
| Ball | computeBoundingBall () const override |
| Compute a bounding ball for this line segment. | |
| bool | intersect (const libMesh::Plane &pl, Point &intersect_p) const |
| Check if a line segment intersects a plane, and if so, return the intersection point. | |
| bool | intersect (const LineSegment &l1, Point &intersect_p) const |
| Check if a line segment intersects another line segment, and if so, return the intersection point. | |
| bool | intersect (const LineSegment &line_segment) const override |
| Check if a line segment intersects another line segment, without returning the intersection point. | |
| const Point & | normal () const |
| Getter for the normal vector. | |
| Point | closest_point (const Point &p) const |
| Returns the closest point on the LineSegment to the passed in point. | |
| bool | closest_normal_point (const Point &p, Point &closest_p) const |
| Finds the closest point on the Line determined by the Line Segments. | |
| bool | contains_point (const Point &p) const |
| Determines whether a point is in a line segment or not. | |
| const Point & | start () const |
| Beginning of the line segment. | |
| const Point & | end () const |
| Ending of the line segment. | |
| void | setStart (const Point &p0) |
| Sets the beginning of the line segment. | |
| void | setEnd (const Point &p1) |
| Sets the end of the line segment. | |
| void | set (const Point &p0, const Point &p1) |
| Sets the points on the line segment. | |
| Real | length () const |
| Length of segment. | |
| const Elem & | elem () const |
| Getter for the underlying element. | |
| unsigned int | expectedEmbeddingMeshDim () const |
| Getter of expected embedding solving mesh dimension Because the surface element is a face of the embedding mesh, its dimension is one less than the dimension of the embedding mesh. | |
| Real | getProjectedBoundingBoxDiagonal (const Point &normal_dir) const |
| Compute the length of the element bounding-box diagonal projected onto a plane orthogonal to a given direction. | |
Private Member Functions | |
| bool | closest_point (const Point &p, bool clamp_to_segment, Point &closest_p) const |
Private Attributes | |
| Point | _p0 |
| Point | _p1 |
| const Elem * | _elem |
| Pointer to the libMesh element representing this surface face. | |
| const Point | _normal |
| Unit normal vector of the surface element. | |
Derived class for 2-node edge surface elements (Edge2).
Definition at line 16 of file SurfaceEdge2.h.
|
explicit |
Constructor.
Definition at line 13 of file SurfaceEdge2.C.
Finds the closest point on the Line determined by the Line Segments.
Returns a boolean indicating whether that normal point is within the LineSegment or not
Definition at line 58 of file LineSegment.C.
Returns the closest point on the LineSegment to the passed in point.
Note that the closest point may be one of the ends of the LineSegment.
Definition at line 50 of file LineSegment.C.
Referenced by LineSegment::closest_point(), and LineSegment::contains_point().
|
privateinherited |
Definition at line 25 of file LineSegment.C.
|
inlineoverridevirtual |
Compute a bounding ball for this line segment.
The ball is defined by the midpoint of the segment and a radius equal to half the segment length.
Reimplemented from LineSegment.
Definition at line 33 of file SurfaceEdge2.h.
|
inherited |
Determines whether a point is in a line segment or not.
Definition at line 64 of file LineSegment.C.
Referenced by Moose::sideIntersectedByLine().
|
inlineinherited |
Getter for the underlying element.
Definition at line 40 of file SurfaceElement.h.
Referenced by SurfaceEdge2(), SurfaceElement::SurfaceElement(), and SurfaceTri3::SurfaceTri3().
|
inlineinherited |
Ending of the line segment.
Definition at line 90 of file LineSegment.h.
Referenced by dataStore(), IntersectionPointsAlongLine::execute(), Triangle::intersect(), Ball::intersect(), Moose::recursivelyFindElementsIntersectedByLine(), and to_json().
|
inlineinherited |
Getter of expected embedding solving mesh dimension Because the surface element is a face of the embedding mesh, its dimension is one less than the dimension of the embedding mesh.
Definition at line 54 of file SurfaceElement.h.
|
inherited |
Compute the length of the element bounding-box diagonal projected onto a plane orthogonal to a given direction.
The projection plane is defined only by its normal direction; the specific location (offset) of the plane is irrelevant for this operation. Equivalently, this function removes the component of the bounding-box diagonal along the given normal direction and returns the norm of the remaining tangential component.
| normal_dir | A direction vector defining the plane normal. |
Definition at line 24 of file SurfaceElement.C.
| bool LineSegment::intersect | ( | const libMesh::Plane & | pl, |
| Point & | intersect_p | ||
| ) | const |
Check if a line segment intersects a plane, and if so, return the intersection point.
There are three cases in 3D for intersection of a line and a plane Case 1: The line is parallel to the plane - No intersection Numerator = non-zero Denominator = zero
Case 2: The line is within the plane - Inf intersection Numerator = zero Denominator = zero
Case 3: The line intersects the plane at a single point Denominator = non-zero
Definition at line 60 of file LineSegment.C.
| bool LineSegment::intersect | ( | const LineSegment & | l1, |
| Point & | intersect_p | ||
| ) | const |
Check if a line segment intersects another line segment, and if so, return the intersection point.
|
overridevirtual |
Check if a line segment intersects another line segment, without returning the intersection point.
Reimplemented from LineSegment.
Definition at line 72 of file LineSegment.C.
|
inlineoverridevirtual |
Check if a line segment intersects another line segment, without returning the intersection point.
Reimplemented from LineSegment.
Definition at line 29 of file SurfaceEdge2.h.
|
inlineinherited |
|
inline |
Getter for the normal vector.
Definition at line 43 of file SurfaceElement.h.
Sets the points on the line segment.
| p0 | The start point of the line segment |
| p1 | The end point of the line segment |
Definition at line 261 of file LineSegment.C.
Referenced by dataLoad().
|
inlineinherited |
Sets the end of the line segment.
Definition at line 100 of file LineSegment.h.
Referenced by LineSegment::set().
|
inlineinherited |
Sets the beginning of the line segment.
Definition at line 95 of file LineSegment.h.
Referenced by LineSegment::set().
|
inlineinherited |
Beginning of the line segment.
Definition at line 85 of file LineSegment.h.
Referenced by dataStore(), Triangle::intersect(), Ball::intersect(), and to_json().
|
privateinherited |
Pointer to the libMesh element representing this surface face.
Derived classes access it through elem() rather than this field directly.
Definition at line 80 of file SurfaceElement.h.
Referenced by SurfaceElement::elem(), SurfaceElement::expectedEmbeddingMeshDim(), and SurfaceElement::getProjectedBoundingBoxDiagonal().
|
privateinherited |
Unit normal vector of the surface element.
Definition at line 82 of file SurfaceElement.h.
Referenced by SurfaceElement::normal(), and SurfaceElement::SurfaceElement().
|
privateinherited |
Definition at line 122 of file LineSegment.h.
Referenced by LineSegment::closest_point(), LineSegment::computeBoundingBall(), intersect(), LineSegment::length(), LineSegment::normal(), LineSegment::setStart(), and LineSegment::start().
|
privateinherited |
Definition at line 122 of file LineSegment.h.
Referenced by LineSegment::closest_point(), LineSegment::computeBoundingBall(), LineSegment::end(), intersect(), LineSegment::length(), LineSegment::normal(), and LineSegment::setEnd().