32 std::vector<Xfem::CutEdge> & cut_edges,
33 std::vector<Xfem::CutNode> & cut_nodes)
const override;
35 std::vector<Xfem::CutFace> & cut_faces)
const override;
37 std::vector<Xfem::CutEdge> & cut_edges)
const override;
39 std::vector<Xfem::CutFace> & cut_faces)
const override;
42 virtual const std::vector<Point>
51 virtual const std::vector<RealVectorValue>
107 std::map<
unsigned int, std::pair<RealVectorValue, RealVectorValue>> & nucleated_elems_map,
108 Real nucleationRadius);
116 std::map<
unsigned int, std::pair<RealVectorValue, RealVectorValue>> & nucleated_elems_map,
117 Real nucleationRadius);
Class used in fracture integrals to define geometric characteristics of the crack front.
MeshCut2DUserObjectBase: (1) reads in a mesh describing the crack surface, (2) Fills xfem cut element...
void addNucleatedCracksToMesh()
Calls into MeshCutNucleation UO to add cracks.
void growFront()
grow the cutter mesh
void findOriginalCrackFrontNodes()
Find the original crack front nodes in the cutter mesh and use to populate _original_and_current_fron...
virtual unsigned int getNumberOfCrackFrontPoints() const override
Get the current number of crack front points.
virtual const std::vector< Point > getCrackFrontPoints(unsigned int num_crack_front_points) const override
get a set of points along a crack front from a XFEM GeometricCutUserObject
virtual bool cutFragmentByGeometry(std::vector< std::vector< Point > > &frag_edges, std::vector< Xfem::CutEdge > &cut_edges) const override
virtual void findActiveBoundaryGrowth()=0
Find growth direction at each active node.
static InputParameters validParams()
void removeNucleatedCracksTooCloseToExistingCracks(std::map< unsigned int, std::pair< RealVectorValue, RealVectorValue > > &nucleated_elems_map, Real nucleationRadius)
Remove nucleated cracks that are too close to a pre-existing crack in the mesh.
const MeshCut2DNucleationBase * _nucleate_uo
2D UO for nucleating cracks
std::vector< std::pair< dof_id_type, dof_id_type > > _original_and_current_front_node_ids
This vector of pairs orders crack tips to make the order used in this class the same as those for the...
std::vector< std::pair< dof_id_type, Point > > _active_front_node_growth_vectors
contains the active node ids and their growth vectors
virtual const std::vector< RealVectorValue > getCrackPlaneNormals(unsigned int num_crack_front_points) const override
get a set of normal vectors along a crack front from a XFEM GeometricCutUserObject CrackFrontDefiniti...
void removeNucleatedCracksTooCloseToEachOther(std::map< unsigned int, std::pair< RealVectorValue, RealVectorValue > > &nucleated_elems_map, Real nucleationRadius)
Remove nucleated cracks that are too close too each other.
virtual bool cutElementByGeometry(const Elem *elem, std::vector< Xfem::CutEdge > &cut_edges, std::vector< Xfem::CutNode > &cut_nodes) const override
bool _is_mesh_modified
Indicator that shows if the cutting mesh is modified or not in this calculation step.
virtual void initialSetup() override final
MooseMesh & _mesh
The FE solution mesh.
CrackFrontDefinition * _crack_front_definition
user object for communicating between solid_mechanics interaction integrals and xfem cutter mesh
Simple base class for XFEM cutting objects that use a mesh to cut.
const InputParameters & parameters() const