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. | |
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. | |
| 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. | |
| Real | pointSegmentDistance (const Point &x0, const Point &x1, const Point &x2, Point &xp) |
| Calculate the signed distance from a point to a line segment. | |
| 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. | |
| 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. | |
| bool | isInsideEdge (const Point &p1, const Point &p2, const Point &p) |
| check if point is inside the straight edge p1-p2 | |
| 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. | |
| bool | isInsideCutPlane (const std::vector< Point > &vertices, const Point &p) |
| Check if point p is inside a plane. | |
| bool | operator< (const CutEdge &lhs, const CutEdge &rhs) |
| Operator < for two CutEdge Objects Needed to allow the use of std::set<CutEdge> | |
| 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 | shapeFunc2D (unsigned int nen, std::vector< Real > &ss, std::vector< Point > &xl, std::vector< std::vector< Real > > &shp, Real &xsj, bool natl_flg) |
| void | normalizePoint (Point &p) |
| 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) |
| Real | crossProduct2D (const Point &point_a, const Point &point_b) |
| Real | pointSegmentDistance (const Point &x0, const Point &x1, const Point &x2, Point &xp) |
| Real | pointTriangleDistance (const Point &x0, const Point &x1, const Point &x2, const Point &x3, Point &xp, unsigned int ®ion) |
| bool | intersectWithEdge (const Point &p1, const Point &p2, const std::vector< Point > &vertices, Point &pint) |
| bool | isInsideEdge (const Point &p1, const Point &p2, const Point &p) |
| Real | getRelativePosition (const Point &p1, const Point &p2, const Point &p) |
| bool | isInsideCutPlane (const std::vector< Point > &vertices, const Point &p) |
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 |
| Enumerator | |
|---|---|
| VOLFRAC | |
| MOMENT_FITTING | |
| DIRECT | |
| double Xfem::angle_rad_3d | ( | double | p1[3], |
| double | p2[3], | ||
| double | p3[3] | ||
| ) |
Definition at line 689 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 |
Referenced by intersectSegmentWithCutLine().
| Real Xfem::crossProduct2D | ( | const Point & | point_a, |
| const Point & | point_b | ||
| ) |
Definition at line 810 of file XFEMFuncs.C.
| 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 | ||
| ) |
Referenced by stdQuadr2D().
| 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 19 of file XFEMFuncs.C.
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 |
Referenced by InterfaceMeshCut3DUserObject::cutElementByGeometry().
| Real Xfem::getRelativePosition | ( | const Point & | p1, |
| const Point & | p2, | ||
| const Point & | p | ||
| ) |
Definition at line 989 of file XFEMFuncs.C.
Definition at line 584 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 |
Referenced by XFEMCrackGrowthIncrement2DCut::cutElementByCrackGrowthIncrement(), GeometricCut2DUserObject::cutElementByGeometry(), InterfaceMeshCut2DUserObject::cutElementByGeometry(), MeshCut2DUserObjectBase::cutElementByGeometry(), GeometricCut2DUserObject::cutFragmentByGeometry(), and MeshCut2DUserObjectBase::cutFragmentByGeometry().
| 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 | ||
| ) |
Definition at line 772 of file XFEMFuncs.C.
| 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 |
Referenced by InterfaceMeshCut3DUserObject::cutElementByGeometry().
| bool Xfem::intersectWithEdge | ( | const Point & | p1, |
| const Point & | p2, | ||
| const std::vector< Point > & | vertices, | ||
| Point & | pint | ||
| ) |
Definition at line 946 of file XFEMFuncs.C.
Check if point p is inside a plane.
| vertices | Vertices of the plane |
| p | Point coordinate |
Referenced by intersectWithEdge().
| bool Xfem::isInsideCutPlane | ( | const std::vector< Point > & | vertices, |
| const Point & | p | ||
| ) |
Definition at line 997 of file XFEMFuncs.C.
check if point is inside the straight edge p1-p2
| p1,p2 | End points of the line segment |
| p | Point coordinate |
Referenced by intersectWithEdge().
| bool Xfem::isInsideEdge | ( | const Point & | p1, |
| const Point & | p2, | ||
| const Point & | p | ||
| ) |
Definition at line 981 of file XFEMFuncs.C.
| bool Xfem::line_exp_is_degenerate_nd | ( | int | dim_num, |
| double | p1[], | ||
| double | p2[] | ||
| ) |
Definition at line 392 of file XFEMFuncs.C.
Referenced by plane_normal_line_exp_int_3d().
| void Xfem::normalizePoint | ( | EFAPoint & | p | ) |
Definition at line 629 of file XFEMFuncs.C.
| void Xfem::normalizePoint | ( | Point & | p | ) |
Referenced by CircleCutUserObject::CircleCutUserObject(), EFAElement2D::createChild(), EFAElement3D::createChild(), EllipseCutUserObject::EllipseCutUserObject(), XFEMCutElem3D::getCutPlaneNormal(), CrackMeshCut3DUserObject::isInsideCutPlane(), isInsideCutPlane(), RectangleCutUserObject::isInsideCutPlane(), and RectangleCutUserObject::RectangleCutUserObject().
| void Xfem::normalizePoint | ( | Point & | p | ) |
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 45 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 401 of file XFEMFuncs.C.
Referenced by CrackMeshCut3DUserObject::findIntersection(), CrackMeshCut3DUserObject::intersectWithEdge(), intersectWithEdge(), and GeometricCut3DUserObject::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 |
Referenced by pointTriangleDistance().
| Real Xfem::pointSegmentDistance | ( | const Point & | x0, |
| const Point & | x1, | ||
| const Point & | x2, | ||
| Point & | xp | ||
| ) |
Definition at line 816 of file XFEMFuncs.C.
| 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 |
Referenced by InterfaceMeshCut3DUserObject::calculateSignedDistance().
| Real Xfem::pointTriangleDistance | ( | const Point & | x0, |
| const Point & | x1, | ||
| const Point & | x2, | ||
| const Point & | x3, | ||
| Point & | xp, | ||
| unsigned int & | region | ||
| ) |
Definition at line 834 of file XFEMFuncs.C.
| double Xfem::polyhedron_volume_3d | ( | double | coord[], |
| int | order_max, | ||
| int | face_num, | ||
| int | node[], | ||
| int | node_num, | ||
| int | order[] | ||
| ) |
Definition at line 487 of file XFEMFuncs.C.
Referenced by XFEMCutElem3D::computePhysicalVolumeFraction().
| double Xfem::r8_acos | ( | double | c | ) |
Definition at line 637 of file XFEMFuncs.C.
Referenced by angle_rad_3d().
| void Xfem::r8vec_copy | ( | int | n, |
| double | a1[], | ||
| double | a2[] | ||
| ) |
Definition at line 363 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 382 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 372 of file XFEMFuncs.C.
Referenced by line_exp_is_degenerate_nd().
| double Xfem::r8vec_norm | ( | int | n, |
| double | a[] | ||
| ) |
| 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 267 of file XFEMFuncs.C.
| void Xfem::stdQuadr2D | ( | unsigned int | nen, |
| unsigned int | iord, | ||
| std::vector< std::vector< Real > > & | sg2 | ||
| ) |
Definition at line 94 of file XFEMFuncs.C.
Referenced by XFEMCutElem2D::getPhysicalQuadraturePoints(), and XFEM::getXFEMqRuleOnSurface().
| void Xfem::wissmannPoints | ( | unsigned int | nqp, |
| std::vector< std::vector< Real > > & | wss | ||
| ) |
Definition at line 231 of file XFEMFuncs.C.
|
static |
Definition at line 23 of file XFEMFuncs.h.
Referenced by EFAElement2D::addEdgeCut(), EFAElement2D::addFragmentEdgeCut(), EFAElement2D::createChild(), EFAElement3D::createChild(), GeometricCut2DUserObject::cutElementByGeometry(), InterfaceMeshCut2DUserObject::cutElementByGeometry(), MeshCut2DUserObjectBase::cutElementByGeometry(), EFAEdge::getEmbeddedNodeIndex(), EFAEdge::hasIntersectionAtPosition(), intersectSegmentWithCutLine(), normalizePoint(), and normalizePoint().