openCARP
Doxygen code documentation for the open cardiac electrophysiology simulator openCARP
Namespaces | Functions
SF_mesh_utils.h File Reference

Functions handling a distributed mesh. More...

#include <algorithm>
#include <iostream>
#include <string>
#include "asciiPlotter.hpp"
#include "SF_container.h"
#include "SF_network.h"
#include "SF_parallel_layout.h"
#include "SF_numbering.h"
#include "SF_sort.h"
#include "SF_mesh_io.h"
#include "SF_vector.h"
Include dependency graph for SF_mesh_utils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 SF
 

Functions

template<class T , class S >
void SF::permute_mesh (const meshdata< T, S > &inmesh, meshdata< T, S > &outmesh, const vector< T > &perm)
 Permute the element data of a mesh based on a given permutation. More...
 
template<class T , class S >
void SF::redistribute_elements (meshdata< T, S > &mesh, meshdata< T, S > &sendbuff, vector< T > &part)
 Redistribute the element data of a parallel mesh among the ranks based on a partitioning. More...
 
template<class T , class S >
void SF::redistribute_elements (meshdata< T, S > &mesh, vector< T > &part)
 Redistribute the element data of a parallel mesh among the ranks based on a partitioning. More...
 
template<class T , class S >
void SF::redistribute_mesh (meshdata< T, S > &mesh, vector< T > &part)
 Redistribute both element and vertex data of a mesh. More...
 
template<class T , class S >
void SF::write_mesh_parallel (const meshdata< T, S > &mesh, bool binary, std::string basename)
 Write a parallel mesh to harddisk without gathering it on one rank. More...
 
template<class T , class S >
void SF::gather_mesh (const meshdata< T, S > &locmesh, meshdata< T, S > &globmesh)
 Gather a mesh on rank 0. More...
 
template<class T , class S >
void SF::print_DD_info (const meshdata< T, S > &mesh)
 Print some basic information on the domain decomposition of a mesh. More...
 
template<class T , class S >
void SF::extract_mesh (const vector< bool > &keep, const meshdata< T, S > &mesh, meshdata< T, S > &submesh)
 Extract a submesh from a given mesh. More...
 
template<class T , class S >
void SF::rebalance_mesh (meshdata< T, S > &mesh)
 Rebalance the parallel distribution of a mesh, if a local size is 0. More...
 
template<class T , class S >
void SF::extract_myocardium (const meshdata< T, S > &mesh, meshdata< T, S > &submesh)
 Extract the myocardium submesh. More...
 
template<class T , class S >
void SF::extract_tagbased (const meshdata< T, S > &mesh, meshdata< T, S > &submesh)
 Extract a submesh based on element tags. More...
 
template<class T , class S >
void SF::print_mesh_graph (meshdata< T, S > &mesh)
 One-by-one each process prints the graph of a given mesh. More...
 
template<class T , class S >
void SF::inter_domain_mapping (const meshdata< T, S > &mesh_a, const meshdata< T, S > &mesh_b, const SF_nbr snbr, index_mapping< T > &a_to_b)
 Submesh index mapping between different domains/meshes. More...
 
template<class T >
void SF::insert_surf_tri (T n1, T n2, T n3, size_t eidx, triple< T > &surf, tri_sele< T > &sele, hashmap::unordered_map< triple< T >, tri_sele< T > > &surfmap)
 
template<class T >
void SF::insert_surf_quad (T n1, T n2, T n3, T n4, size_t eidx, vector< T > &buff, quadruple< T > &surf, quad_sele< T > &sele, hashmap::unordered_map< quadruple< T >, quad_sele< T > > &surfmap)
 
template<class T >
void SF::insert_surf_tet (const T *nod, const size_t eidx, hashmap::unordered_map< triple< T >, tri_sele< T > > &surfmap)
 
template<class T >
void SF::insert_surf_pyr (const T *nod, const size_t eidx, vector< T > &buff, hashmap::unordered_map< triple< T >, tri_sele< T > > &surfmap, hashmap::unordered_map< quadruple< T >, quad_sele< T > > &qsurfmap)
 
template<class T >
void SF::insert_surf_pri (const T *nod, const size_t eidx, vector< T > &buff, hashmap::unordered_map< triple< T >, tri_sele< T > > &surfmap, hashmap::unordered_map< quadruple< T >, quad_sele< T > > &qsurfmap)
 
template<class T >
void SF::insert_surf_hex (const T *nod, const size_t eidx, vector< T > &buff, hashmap::unordered_map< quadruple< T >, quad_sele< T > > &surfmap)
 
template<class T , class S >
void SF::search_for_surface (const meshdata< T, S > &mesh, const SF_nbr numbering, const hashmap::unordered_map< triple< T >, tri_sele< T > > &search_tri, const hashmap::unordered_map< quadruple< T >, quad_sele< T > > &search_quad, hashmap::unordered_map< triple< T >, tri_sele< T > > &found_tri, hashmap::unordered_map< quadruple< T >, quad_sele< T > > &found_quad)
 
template<class T , class S >
void SF::compute_surface (const meshdata< T, S > &mesh, const SF_nbr numbering, const hashmap::unordered_set< T > &tags, hashmap::unordered_map< triple< T >, tri_sele< T > > &tri_surf, hashmap::unordered_map< quadruple< T >, quad_sele< T > > &quad_surf)
 
template<class T , class S >
void SF::compute_surface (const meshdata< T, S > &mesh, const SF_nbr numbering, hashmap::unordered_map< triple< T >, tri_sele< T > > &tri_surf, hashmap::unordered_map< quadruple< T >, quad_sele< T > > &quad_surf)
 
template<class V >
void SF::get_hashmap_duplicates (const vector< V > &data, const MPI_Comm comm, vector< bool > &is_dup)
 
template<class K , class V >
void SF::remove_duplicates (hashmap::unordered_map< K, V > &map, const MPI_Comm comm)
 remove parallel duplicates from a hashmap::unordered_map More...
 
template<class K >
void SF::remove_duplicates (hashmap::unordered_set< K > &set, const MPI_Comm comm)
 remove parallel duplicates from a hashmap::unordered_set More...
 
template<class T >
void SF::remove_parallel_duplicates (hashmap::unordered_map< triple< T >, tri_sele< T >> &tri_surf, hashmap::unordered_map< quadruple< T >, quad_sele< T > > &quad_surf, MPI_Comm comm)
 
template<class T , class S >
void SF::convert_surface_mesh (hashmap::unordered_map< triple< T >, tri_sele< T >> &tri_surf, hashmap::unordered_map< quadruple< T >, quad_sele< T > > &quad_surf, meshdata< T, S > &surfmesh, vector< T > &elem_orig)
 
template<class T , class S >
void SF::convert_mesh_surface (const meshdata< T, S > &surfmesh, hashmap::unordered_map< triple< T >, tri_sele< T >> &tri_surf, hashmap::unordered_map< quadruple< T >, quad_sele< T >> &quad_surf)
 
template<class T , class S >
void SF::compute_surface_mesh (const meshdata< T, S > &mesh, const SF_nbr numbering, const hashmap::unordered_set< T > &tags, meshdata< T, S > &surfmesh)
 Compute the surface of a given mesh. More...
 
template<class T , class S >
void SF::compute_surface_mesh (const meshdata< T, S > &mesh, const SF_nbr numbering, meshdata< T, S > &surfmesh)
 Compute the surface of a given mesh. More...
 
template<class T , class S >
void SF::read_surface_mesh (const meshdata< T, S > &mesh, meshdata< T, S > &surface, std::string filename)
 
template<class T >
void SF::restrict_to_set (vector< T > &v, const hashmap::unordered_set< T > &set)
 
template<class T >
void SF::restrict_to_set (vector< T > &v, const vector< T > &vset)
 

Detailed Description

Functions handling a distributed mesh.

Author
Aurel Neic
Version
Date
2017-02-14

Definition in file SF_mesh_utils.h.