Go to the documentation of this file.
12 #include "MooseMesh.h"
15 #include "libmesh/point.h"
32 virtual std::unique_ptr<MooseMesh>
safeClone()
const override;
34 virtual unsigned int dimension()
const override;
56 std::set<dof_id_type> converted_elem_id,
57 std::multimap<SubdomainID, SubdomainID> connect_block_id_pairs,
58 std::multimap<SubdomainID, SubdomainID> non_connect_block_id_pairs);
65 std::vector<dof_id_type>
getNeighbors(dof_id_type node_id);
80 std::vector<dof_id_type>
getBonds(dof_id_type node_id);
90 std::vector<dof_id_type>
getDefGradNeighbors(dof_id_type node_id,
unsigned int neighbor_id);
219 std::multimap<SubdomainID, SubdomainID> non_connect_block_id_pairs);
227 SubdomainID pdnode_blockID_j,
228 std::multimap<SubdomainID, SubdomainID> blockID_pairs);
258 Point crack_p1, Point crack_p2, Real crack_width, Point bond_p1, Point bond_p2);
unsigned int & _dim
Mesh dimension.
std::vector< dof_id_type > getPDNodeIDToFiniteElemIDMap()
Function to return the correspondence between PD node IDs and FE element IDs.
SubdomainID getNodeBlockID(dof_id_type node_id)
Function to return block ID for node node_id.
Real getPDNodeVolume(dof_id_type node_id)
Function to return nodal volume for node node_id.
bool checkPointInsideRectangle(Point point, Point rec_p1, Point rec_p2, Real rec_height, Real tol=0)
Function to check whether a material point falls within a given rectangular crack geometry.
PeridynamicsMesh(const InputParameters ¶meters)
std::vector< Real > & _pdnode_horiz_rad
bool checkCrackIntersectBond(Point crack_p1, Point crack_p2, Real crack_width, Point bond_p1, Point bond_p2)
Function to check whether a bond crosses crack surface.
virtual std::unique_ptr< MooseMesh > safeClone() const override
std::vector< Real > _cracks_width
std::vector< std::vector< Real > > & _dg_vol_frac
Volume fraction of deformation gradient region to its sum at a node.
virtual unsigned int dimension() const override
std::vector< Real > & _pdnode_avg_spacing
std::vector< std::vector< dof_id_type > > & _pdnode_bonds
Bond lists associated with material points.
bool checkInterface(SubdomainID pdnode_blockID_i, SubdomainID pdnode_blockID_j, std::multimap< SubdomainID, SubdomainID > blockID_pairs)
Function to check existence of interface between two blocks.
std::vector< std::vector< std::vector< dof_id_type > > > & _dg_neighbors
Neighbor lists for deformation gradient calculation using bond-associated horizon.
std::vector< Real > & _pdnode_horiz_vol
void createPeridynamicsMeshData(MeshBase &fe_mesh, std::set< dof_id_type > converted_elem_id, std::multimap< SubdomainID, SubdomainID > connect_block_id_pairs, std::multimap< SubdomainID, SubdomainID > non_connect_block_id_pairs)
Function to assign values to member variables (PD mesh data) of this class this function will be call...
Real getBoundaryOffset(dof_id_type node_id)
Function to return offset for boundary nodes.
InputParameters validParams< PeridynamicsMesh >()
std::vector< std::vector< dof_id_type > > & _pdnode_neighbors
Neighbor lists for each material point determined using the horizon.
void setNodeBlockID(SubdomainID id)
Function to set block ID for all PD nodes.
void createNodeHorizBasedData(std::multimap< SubdomainID, SubdomainID > connect_block_id_pairs, std::multimap< SubdomainID, SubdomainID > non_connect_block_id_pairs)
Function to create neighbors and other data for each material point with given horizon.
PeridynamicsMesh & operator=(const PeridynamicsMesh &other_mesh)=delete
dof_id_type nPDBonds() const
Function to return number of PD Edge elements.
Point getPDNodeCoord(dof_id_type node_id)
Function to return coordinates for node node_id.
std::vector< Real > & _pdnode_vol
std::map< dof_id_type, Real > & _boundary_node_offset
Offset of each boundary node to its original FE element boundary edge or face.
std::vector< Point > _cracks_start
std::vector< dof_id_type > getNeighbors(dof_id_type node_id)
Function to return neighbor nodes indices for node node_id.
Real getHorizon(dof_id_type node_id)
Function to return horizon size.
const bool _has_cracks
Information for crack generation.
std::vector< Point > _cracks_end
bool checkSegmentIntersectSegment(Point seg1_p1, Point seg1_p2, Point seg2_p1, Point seg2_p2)
Function to check whether a segment crosses another segment.
Real getHorizVolume(dof_id_type node_id)
Function to return summation of neighbor nodal volumes for node node_id.
std::vector< dof_id_type > & _pdnode_elemID
std::vector< dof_id_type > getBonds(dof_id_type node_id)
Function to return the bond number connected with node node_id.
dof_id_type getNeighborIndex(dof_id_type node_i, dof_id_type node_j)
Function to return the local neighbor index of node_j from node_i's neighbor list.
std::vector< SubdomainID > & _pdnode_blockID
unsigned int & _n_pdbonds
Number of total bonds.
void createNeighborHorizonBasedData()
Function to create node neighbors and other data for each material point based on NEIGHBOR_HORIZON ba...
Real getNodeAvgSpacing(dof_id_type node_id)
Function to return the average spacing between node node_id with its most adjacent neighbors.
virtual void buildMesh() override
std::vector< dof_id_type > getDefGradNeighbors(dof_id_type node_id, unsigned int neighbor_id)
Function to return indices of neighbors used in formulation of bond-associated deformation gradient f...
Real getDefGradVolFraction(dof_id_type node_id, dof_id_type neighbor_id)
Function to return summation of volumes of bond-associated neighbors used in the deformation gradient...
unsigned int & _n_pdnodes
Number of total material points.
dof_id_type nPDNodes() const
Function to return number of PD nodes.
const Real _horiz_rad
Horizon size control parameters.
std::vector< Point > _pdnode_coord
Data associated with each peridynamics node.
const bool _has_horiz_num