Classes | |
struct | CutEdge |
Data structure defining a cut on an element edge. More... | |
struct | CutElemInfo |
Information about a cut element. More... | |
struct | CutFace |
Data structure defining a cut through a face. More... | |
struct | CutNode |
Data structure defining a cut through a node. More... | |
struct | GeomMarkedElemInfo2D |
Data structure describing geometrically described cut through 2D element. More... | |
struct | GeomMarkedElemInfo3D |
Data structure describing geometrically described cut through 3D element. More... | |
Typedefs | |
typedef std::array< std::unordered_map< unsigned int, std::string >, 2 > | CachedMaterialProperties |
Convenient typedef for local storage of stateful material properties. More... | |
Enumerations | |
enum | XFEM_CUTPLANE_QUANTITY { ORIGIN_X, ORIGIN_Y, ORIGIN_Z, NORMAL_X, NORMAL_Y, NORMAL_Z } |
enum | XFEM_QRULE { VOLFRAC, MOMENT_FITTING, DIRECT } |
Functions | |
void | dunavant_rule2 (const Real *wts, const Real *a, const Real *b, const unsigned int *permutation_ids, unsigned int n_wts, std::vector< Point > &points, std::vector< Real > &weights) |
void | stdQuadr2D (unsigned int nen, unsigned int iord, std::vector< std::vector< Real >> &sg2) |
void | wissmannPoints (unsigned int nqp, std::vector< std::vector< Real >> &wss) |
void | shapeFunc2D (unsigned int nen, std::vector< Real > &ss, std::vector< Point > &xl, std::vector< std::vector< Real >> &shp, Real &xsj, bool natl_flg) |
double | r8vec_norm (int n, double a[]) |
void | r8vec_copy (int n, double a1[], double a2[]) |
bool | r8vec_eq (int n, double a1[], double a2[]) |
double | r8vec_dot_product (int n, double a1[], double a2[]) |
bool | line_exp_is_degenerate_nd (int dim_num, double p1[], double p2[]) |
int | plane_normal_line_exp_int_3d (double pp[3], double normal[3], double p1[3], double p2[3], double pint[3]) |
double | polyhedron_volume_3d (double coord[], int order_max, int face_num, int node[], int node_num, int order[]) |
void | i4vec_zero (int n, int a[]) |
void | normalizePoint (Point &p) |
void | normalizePoint (EFAPoint &p) |
double | r8_acos (double c) |
double | angle_rad_3d (double p1[3], double p2[3], double p3[3]) |
bool | intersectSegmentWithCutLine (const Point &segment_point1, const Point &segment_point2, const std::pair< Point, Point > &cutting_line_points, const Real &cutting_line_fraction, Real &segment_intersection_fraction) |
Determine whether a line segment is intersected by a cutting line, and compute the fraction along that line where the intersection occurs. More... | |
Real | crossProduct2D (const Point &point_a, const Point &point_b) |
Compute the cross product of two vectors, provided as Point objects, which have nonzero components only in the x,y plane. More... | |
Real | pointSegmentDistance (const Point &x0, const Point &x1, const Point &x2, Point &xp) |
Calculate the signed distance from a point to a line segment. More... | |
Real | pointTriangleDistance (const Point &x0, const Point &x1, const Point &x2, const Point &x3, Point &xp, unsigned int ®ion) |
Calculate the signed distance from a point to a triangle. More... | |
bool | intersectWithEdge (const Point &p1, const Point &p2, const std::vector< Point > &vertices, Point &pint) |
check if a line intersects with an element defined by vertices calculate the distance from a point to triangle. More... | |
bool | isInsideEdge (const Point &p1, const Point &p2, const Point &p) |
check if point is inside the straight edge p1-p2 More... | |
Real | getRelativePosition (const Point &p1, const Point &p2, const Point &p) |
Get the relative position of p from p1 respect to the total length of the line segment. More... | |
bool | isInsideCutPlane (const std::vector< Point > &vertices, const Point &p) |
Check if point p is inside a plane. More... | |
bool | operator< (const CutEdge &lhs, const CutEdge &rhs) |
Operator < for two CutEdge Objects Needed to allow the use of std::set<CutEdge> More... | |
Variables | |
static const double | tol = 1.0e-10 |
typedef std::array<std::unordered_map<unsigned int, std::string>, 2> Xfem::CachedMaterialProperties |
Convenient typedef for local storage of stateful material properties.
The first (component 0) entry in the CachedMaterialProperties is a map for old material properties. The second (component 1) entry is a map for older material properties. The second entry will be empty if the material storage doesn't have older material properties.
enum Xfem::XFEM_QRULE |
double Xfem::angle_rad_3d | ( | double | p1[3], |
double | p2[3], | ||
double | p3[3] | ||
) |
Definition at line 691 of file XFEMFuncs.C.
Compute the cross product of two vectors, provided as Point objects, which have nonzero components only in the x,y plane.
Because the vectors both lie in the x,y plane, the only nonzero component of the cross product vector is in the z direction, and that is returned as a scalar value by this function.
point_a | First vector in cross product |
point_b | Second vector in cross product |
Definition at line 812 of file XFEMFuncs.C.
Referenced by intersectSegmentWithCutLine().
void Xfem::dunavant_rule2 | ( | const Real * | wts, |
const Real * | a, | ||
const Real * | b, | ||
const unsigned int * | permutation_ids, | ||
unsigned int | n_wts, | ||
std::vector< Point > & | points, | ||
std::vector< Real > & | weights | ||
) |
Definition at line 21 of file XFEMFuncs.C.
Referenced by stdQuadr2D().
Get the relative position of p from p1 respect to the total length of the line segment.
p1,p2 | End points of the line segment |
p | Point coordinate |
Definition at line 991 of file XFEMFuncs.C.
Referenced by InterfaceMeshCut3DUserObject::cutElementByGeometry(), and CrackMeshCut3DUserObject::cutElementByGeometry().
Definition at line 586 of file XFEMFuncs.C.
Referenced by XFEMCutElem3D::computePhysicalVolumeFraction().
bool Xfem::intersectSegmentWithCutLine | ( | const Point & | segment_point1, |
const Point & | segment_point2, | ||
const std::pair< Point, Point > & | cutting_line_points, | ||
const Real & | cutting_line_fraction, | ||
Real & | segment_intersection_fraction | ||
) |
Determine whether a line segment is intersected by a cutting line, and compute the fraction along that line where the intersection occurs.
segment_point1 | Point at one end of the line segment |
segment_point1 | Point at other end of the line segment |
cutting_line_points | Pair of points that define the cutting line |
cutting_line_fraction | Fractional distance from the start to end point of the cutting line over which the cutting line is currently active |
segment_intersection_fraction | Frictional distance along the cut segment from segment_point1 where the intersection occurs |
Definition at line 774 of file XFEMFuncs.C.
Referenced by XFEMCrackGrowthIncrement2DCut::cutElementByCrackGrowthIncrement(), GeometricCut2DUserObject::cutElementByGeometry(), InterfaceMeshCut2DUserObject::cutElementByGeometry(), MeshCut2DUserObjectBase::cutElementByGeometry(), GeometricCut2DUserObject::cutFragmentByGeometry(), and MeshCut2DUserObjectBase::cutFragmentByGeometry().
bool Xfem::intersectWithEdge | ( | const Point & | p1, |
const Point & | p2, | ||
const std::vector< Point > & | vertices, | ||
Point & | pint | ||
) |
check if a line intersects with an element defined by vertices calculate the distance from a point to triangle.
p1,p2 | End points of the line segment |
vertices | Vertices of two-node element. |
pint | Intersection point |
Definition at line 948 of file XFEMFuncs.C.
Referenced by InterfaceMeshCut3DUserObject::cutElementByGeometry(), and CrackMeshCut3DUserObject::cutElementByGeometry().
Check if point p is inside a plane.
vertices | Vertices of the plane |
p | Point coordinate |
Definition at line 999 of file XFEMFuncs.C.
Referenced by intersectWithEdge().
check if point is inside the straight edge p1-p2
p1,p2 | End points of the line segment |
p | Point coordinate |
Definition at line 983 of file XFEMFuncs.C.
Referenced by intersectWithEdge().
bool Xfem::line_exp_is_degenerate_nd | ( | int | dim_num, |
double | p1[], | ||
double | p2[] | ||
) |
Definition at line 394 of file XFEMFuncs.C.
Referenced by plane_normal_line_exp_int_3d().
Definition at line 621 of file XFEMFuncs.C.
Referenced by CircleCutUserObject::CircleCutUserObject(), EFAElement2D::createChild(), EFAElement3D::createChild(), EllipseCutUserObject::EllipseCutUserObject(), XFEMCutElem3D::getCutPlaneNormal(), RectangleCutUserObject::isInsideCutPlane(), isInsideCutPlane(), CrackMeshCut3DUserObject::isInsideCutPlane(), and RectangleCutUserObject::RectangleCutUserObject().
Definition at line 631 of file XFEMFuncs.C.
Operator < for two CutEdge Objects Needed to allow the use of std::set<CutEdge>
lhs | CutEdge object on the left side of the comparison |
rhs | CutEdge object on the right side of the comparison |
Definition at line 47 of file GeometricCutUserObject.h.
int Xfem::plane_normal_line_exp_int_3d | ( | double | pp[3], |
double | normal[3], | ||
double | p1[3], | ||
double | p2[3], | ||
double | pint[3] | ||
) |
Definition at line 403 of file XFEMFuncs.C.
Referenced by CrackMeshCut3DUserObject::findIntersection(), GeometricCut3DUserObject::intersectWithEdge(), intersectWithEdge(), and CrackMeshCut3DUserObject::intersectWithEdge().
Real Xfem::pointSegmentDistance | ( | const Point & | x0, |
const Point & | x1, | ||
const Point & | x2, | ||
Point & | xp | ||
) |
Calculate the signed distance from a point to a line segment.
Positive values are on the side of the line segment's normal (using standard conventions).
x1,x2 | Coordinates of line segment end points |
x0 | Coordinate of the point |
xp | Closest point coordinate on the line segment |
Definition at line 818 of file XFEMFuncs.C.
Referenced by pointTriangleDistance().
Real Xfem::pointTriangleDistance | ( | const Point & | x0, |
const Point & | x1, | ||
const Point & | x2, | ||
const Point & | x3, | ||
Point & | xp, | ||
unsigned int & | region | ||
) |
Calculate the signed distance from a point to a triangle.
Positive values are on the side of the triangle's normal (using standard conventions).
x1,x2,x3 | Coordinates of triangle vertices |
x0 | Coordinate of the point |
xp | Closest point coordinate on the triangle |
region | The seven regions where the closest point could be located |
Definition at line 836 of file XFEMFuncs.C.
Referenced by InterfaceMeshCut3DUserObject::calculateSignedDistance().
double Xfem::polyhedron_volume_3d | ( | double | coord[], |
int | order_max, | ||
int | face_num, | ||
int | node[], | ||
int | node_num, | ||
int | order[] | ||
) |
Definition at line 489 of file XFEMFuncs.C.
Referenced by XFEMCutElem3D::computePhysicalVolumeFraction().
double Xfem::r8_acos | ( | double | c | ) |
Definition at line 639 of file XFEMFuncs.C.
Referenced by angle_rad_3d().
Definition at line 365 of file XFEMFuncs.C.
Referenced by plane_normal_line_exp_int_3d().
double Xfem::r8vec_dot_product | ( | int | n, |
double | a1[], | ||
double | a2[] | ||
) |
Definition at line 384 of file XFEMFuncs.C.
Referenced by plane_normal_line_exp_int_3d().
bool Xfem::r8vec_eq | ( | int | n, |
double | a1[], | ||
double | a2[] | ||
) |
Definition at line 374 of file XFEMFuncs.C.
Referenced by line_exp_is_degenerate_nd().
double Xfem::r8vec_norm | ( | int | n, |
double | a[] | ||
) |
Definition at line 354 of file XFEMFuncs.C.
Referenced by plane_normal_line_exp_int_3d().
void Xfem::shapeFunc2D | ( | unsigned int | nen, |
std::vector< Real > & | ss, | ||
std::vector< Point > & | xl, | ||
std::vector< std::vector< Real >> & | shp, | ||
Real & | xsj, | ||
bool | natl_flg | ||
) |
Definition at line 269 of file XFEMFuncs.C.
Referenced by XFEMCutElem2D::getPhysicalQuadraturePoints(), XFEM::getXFEMqRuleOnSurface(), and XFEMCutElem2D::solveMomentFitting().
void Xfem::stdQuadr2D | ( | unsigned int | nen, |
unsigned int | iord, | ||
std::vector< std::vector< Real >> & | sg2 | ||
) |
Definition at line 96 of file XFEMFuncs.C.
Referenced by XFEMCutElem2D::getPhysicalQuadraturePoints(), and XFEM::getXFEMqRuleOnSurface().
Definition at line 233 of file XFEMFuncs.C.
|
static |
Definition at line 21 of file XFEMFuncs.h.
Referenced by EFAElement2D::addEdgeCut(), EFAElement2D::addFragmentEdgeCut(), EFAElement2D::createChild(), EFAElement3D::createChild(), GeometricCut2DUserObject::cutElementByGeometry(), InterfaceMeshCut2DUserObject::cutElementByGeometry(), MeshCut2DUserObjectBase::cutElementByGeometry(), EFAEdge::getEmbeddedNodeIndex(), EFAEdge::hasIntersectionAtPosition(), and intersectSegmentWithCutLine().