20 #ifndef __mast_material_point_libmesh_indexing_h__ 21 #define __mast_material_point_libmesh_indexing_h__ 28 #include <libmesh/mesh_base.h> 32 namespace MaterialPoint {
33 namespace libMeshWrapper {
62 inline void init(
const libMesh::MeshBase &mesh,
uint_t n_points_per_elem) {
69 libMesh::MeshBase::const_element_iterator
70 it = mesh.active_local_elements_begin(),
71 end = mesh.active_local_elements_end();
73 for ( ; it != end; it++) {
75 const libMesh::Elem* e = *it;
81 comm_rank = mesh.comm().rank(),
82 comm_size = mesh.comm().size();
86 n_ids_on_rank(comm_size);
91 mesh.comm().sum(n_ids_on_rank);
93 for (
uint_t i=1; i<comm_size; i++)
94 n_ids_on_rank[i] += n_ids_on_rank[i-1];
109 "Index must be less than points per element");
111 std::map<const libMesh::Elem*, uint_t>::const_iterator
116 return it->second + i;
142 #endif // __mast_material_point_libmesh_indexing_h__ indexes the material point ID to quadrature points on each element.
const libMesh::MeshBase * _mesh
uint_t local_id_for_point_on_elem(const libMesh::Elem *e, uint_t i) const
#define Assert0(cond, msg)
std::map< const libMesh::Elem *, uint_t > _elem_id_map
#define Assert2(cond, v1, v2, msg)
uint_t n_local_points() const
uint_t global_id_for_point_on_elem(const libMesh::Elem *e, uint_t i) const
void init(const libMesh::MeshBase &mesh, uint_t n_points_per_elem)