Go to the documentation of this file.
12 #include "GeneralUserObject.h"
14 #include "BoundaryRestrictable.h"
18 class AuxiliarySystem;
61 const unsigned int point_index)
const;
63 const unsigned int point_index)
const;
69 const unsigned int point_index)
const;
76 const unsigned int point_index,
91 const dof_id_type connected_node_id,
92 const unsigned int node_index)
const;
95 unsigned int ring_index,
96 const Node *
const current_node)
const;
98 unsigned int ring_index,
99 const Node *
const current_node)
const;
166 std::map<std::pair<dof_id_type, unsigned int>, std::set<dof_id_type>>
180 std::set<dof_id_type> & nodes,
181 std::map<dof_id_type, std::vector<dof_id_type>> & node_to_line_elem_map,
182 std::vector<std::vector<dof_id_type>> & line_elems);
183 unsigned int maxNodeCoor(std::vector<Node *> & nodes,
unsigned int dir0 = 0);
187 const RealVectorValue & tangent_direction,
192 const std::set<dof_id_type> & nodes_old_ring,
193 const std::set<dof_id_type> & nodes_all_rings,
194 const std::set<dof_id_type> & nodes_neighbor1,
195 const std::set<dof_id_type> & nodes_neighbor2,
196 std::vector<std::vector<const Elem *>> & nodes_to_elem_map);
198 Real & dist_along_tangent,
199 unsigned int crack_front_point_index,
200 const Node *
const current_node)
const;
void addCrackFrontDefinitionParams(InputParameters ¶ms)
void createQFunctionRings()
void pickLoopCrackEndNodes(std::vector< dof_id_type > &end_nodes, std::set< dof_id_type > &nodes, std::map< dof_id_type, std::vector< dof_id_type >> &node_to_line_elem_map, std::vector< std::vector< dof_id_type >> &line_elems)
std::vector< unsigned int > _ordered_crack_front_nodes
std::vector< Real > _j_integral_radius_outer
std::vector< Real > _angles_along_front
const Node * getCrackFrontNodePtr(const unsigned int node_index) const
const RealVectorValue & getCrackFrontTangent(const unsigned int point_index) const
RealVectorValue calculateCrackFrontDirection(const Point &crack_front_point, const RealVectorValue &tangent_direction, const CRACK_NODE_TYPE ntype) const
virtual void initialize()
std::vector< BoundaryName > _crack_mouth_boundary_names
void addNodesToQFunctionRing(std::set< dof_id_type > &nodes_new_ring, const std::set< dof_id_type > &nodes_old_ring, const std::set< dof_id_type > &nodes_all_rings, const std::set< dof_id_type > &nodes_neighbor1, const std::set< dof_id_type > &nodes_neighbor2, std::vector< std::vector< const Elem * >> &nodes_to_elem_map)
std::vector< BoundaryName > _intersecting_boundary_names
unsigned int maxNodeCoor(std::vector< Node * > &nodes, unsigned int dir0=0)
Real DomainIntegralQFunction(unsigned int crack_front_point_index, unsigned int ring_index, const Node *const current_node) const
void calculateTangentialStrainAlongFront()
static InputParameters validParams()
RealVectorValue _crack_direction_vector_end_2
std::vector< Point > _crack_front_points
bool isNodeOnIntersectingBoundary(const Node *const node) const
bool isNodeInRing(const unsigned int ring_index, const dof_id_type connected_node_id, const unsigned int node_index) const
Works on top of NodalNormalsPreprocessor.
std::vector< Real > _strain_along_front
Real getCrackFrontTangentialStrain(const unsigned int node_index) const
std::vector< Real > _distances_along_front
void orderEndNodes(std::vector< dof_id_type > &end_nodes)
std::vector< Real > _j_integral_radius_inner
virtual ~CrackFrontDefinition()
bool isPointWithIndexOnIntersectingBoundary(const unsigned int point_index) const
bool hasAngleAlongFront() const
void updateCrackFrontGeometry()
std::vector< BoundaryID > _crack_mouth_boundary_ids
std::string _disp_y_var_name
const Point * getCrackFrontPoint(const unsigned int point_index) const
void updateDataForCrackDirection()
Real DomainIntegralTopologicalQFunction(unsigned int crack_front_point_index, unsigned int ring_index, const Node *const current_node) const
RealVectorValue rotateFromCrackFrontCoordsToGlobal(const RealVectorValue vector, const unsigned int point_index) const
rotate a vector from crack front cartesian coordinate to global cartesian coordinate
std::map< std::pair< dof_id_type, unsigned int >, std::set< dof_id_type > > _crack_front_node_to_node_map
unsigned int _num_points_from_provider
RealVectorValue _crack_mouth_coordinates
std::vector< BoundaryID > _intersecting_boundary_ids
std::vector< RealVectorValue > _crack_directions
void calculateRThetaToCrackFront(const Point qp, const unsigned int point_index, Real &r, Real &theta) const
calculate r and theta in the crack front polar coordinates
unsigned int getNumCrackFrontPoints() const
const RealVectorValue & getCrackDirection(const unsigned int point_index) const
END_DIRECTION_METHOD _end_direction_method
std::string _disp_z_var_name
void getCrackFrontNodes(std::set< dof_id_type > &nodes)
MooseEnum _q_function_type
RealVectorValue _crack_direction_vector
virtual void initialSetup()
std::vector< RankTwoTensor > _rot_matrix
RealVectorValue rotateToCrackFrontCoords(const RealVectorValue vector, const unsigned int point_index) const
Real getDistanceAlongFront(const unsigned int point_index) const
void projectToFrontAtPoint(Real &dist_to_front, Real &dist_along_tangent, unsigned int crack_front_point_index, const Node *const current_node) const
RankTwoTensorTempl< Real > RankTwoTensor
void orderCrackFrontNodes(std::set< dof_id_type > &nodes)
CRACK_GEOM_DEFINITION _geom_definition_method
bool hasCrackFrontNodes() const
InputParameters validParams< CrackFrontDefinition >()
const CrackFrontPointsProvider * _crack_front_points_provider
std::vector< RealVectorValue > _tangent_directions
RealVectorValue _crack_plane_normal
Real getAngleAlongFront(const unsigned int point_index) const
Real getCrackFrontBackwardSegmentLength(const unsigned int point_index) const
std::vector< bool > _is_point_on_intersecting_boundary
std::vector< std::pair< Real, Real > > _segment_lengths
DIRECTION_METHOD _direction_method
Real getCrackFrontForwardSegmentLength(const unsigned int point_index) const
std::string _disp_x_var_name
RealVectorValue _crack_direction_vector_end_1
unsigned int _symmetry_plane
CrackFrontDefinition(const InputParameters ¶meters)
Base class for crack front points provider.