9#ifndef IGL_MSH_LOADER_H
10#define IGL_MSH_LOADER_H
18#include <unordered_map>
32 return this->tag==a.
tag &&
37 return (this->tag*100+this->el_type) <
97 return m_node_fields_components[c];
108 return m_element_fields_components[c];
112 return (std::find(std::begin(m_node_fields_names),
113 std::end(m_node_fields_names),
114 fieldname) != std::end(m_node_fields_names) );
118 return (std::find(std::begin(m_element_fields_names),
119 std::end(m_element_fields_names),
120 fieldname) != std::end(m_node_fields_names) );
133 return m_structure_index;
139 return m_structure_length;
153 void parse_nodes(std::ifstream& fin);
154 void parse_elements(std::ifstream& fin);
155 void parse_node_field(std::ifstream& fin);
156 void parse_element_field(std::ifstream& fin);
157 void parse_unknown_field(std::ifstream& fin,
158 const std::string& fieldname);
159 int node_dense_index(
int node_tag)
const;
160 int element_dense_index(
int elem_tag)
const;
165 std::unordered_map<int, int> m_node_tag_to_dense;
166 std::unordered_map<int, int> m_element_tag_to_dense;
193#ifndef IGL_STATIC_LIBRARY
194# include "MshLoader.cpp"
MshLoader(const std::string &filename)
Load a .msh file from a given path.
const IntVector & get_node_fields_components() const
Definition MshLoader.h:93
const IndexVector & get_elements_nodes_idx() const
Definition MshLoader.h:86
bool is_node_field(const std::string &fieldname) const
Definition MshLoader.h:111
const IntVector & get_elements_types() const
Definition MshLoader.h:77
const StructIndex & get_structure_index() const
Definition MshLoader.h:131
std::vector< int > IntVector
Definition MshLoader.h:45
const FloatVector & get_nodes() const
Definition MshLoader.h:71
const FloatField & get_element_fields() const
Definition MshLoader.h:101
bool is_element_map_identity() const
bool is_element_field(const std::string &fieldname) const
Definition MshLoader.h:117
std::vector< int > IndexVector
Definition MshLoader.h:44
const IndexVector & get_elements() const
Definition MshLoader.h:74
const IntVector & get_elements_ids() const
Definition MshLoader.h:83
std::vector< FloatVector > FloatField
Definition MshLoader.h:47
std::vector< msh_struct > StructVector
Definition MshLoader.h:51
const StructVector & get_structures() const
get list of structures
Definition MshLoader.h:143
static int num_nodes_per_elem_type(int elem_type)
std::vector< std::string > FieldNames
Definition MshLoader.h:49
const FloatField & get_node_fields() const
Definition MshLoader.h:89
double Float
Definition MshLoader.h:42
@ ELEMENT_PYRAMID
Definition MshLoader.h:55
@ ELEMENT_TET_2ND_ORDER
Definition MshLoader.h:58
@ ELEMENT_LINE_2ND_ORDER
Definition MshLoader.h:57
@ ELEMENT_PRISM_2ND_ORDER
Definition MshLoader.h:59
@ ELEMENT_PRISM
Definition MshLoader.h:54
@ ELEMENT_HEX
Definition MshLoader.h:54
@ ELEMENT_TRI_2ND_ORDER
Definition MshLoader.h:57
@ ELEMENT_TET
Definition MshLoader.h:54
@ ELEMENT_LINE
Definition MshLoader.h:53
@ ELEMENT_PYRAMID_2ND_ORDER
Definition MshLoader.h:60
@ ELEMENT_HEX_2ND_ORDER
Definition MshLoader.h:59
@ ELEMENT_POINT
Definition MshLoader.h:62
@ ELEMENT_TRI
Definition MshLoader.h:53
@ ELEMENT_QUAD_2ND_ORDER
Definition MshLoader.h:58
@ ELEMENT_QUAD
Definition MshLoader.h:53
std::vector< Float > FloatVector
Definition MshLoader.h:46
const FieldNames & get_node_fields_names() const
Definition MshLoader.h:91
int get_node_field_components(size_t c) const
Definition MshLoader.h:95
int get_element_field_components(size_t c) const
Definition MshLoader.h:107
void index_structures(int tag_column)
const StructIndex & get_structure_length() const
Definition MshLoader.h:137
std::multimap< msh_struct, int > StructIndex
Definition MshLoader.h:50
const IntVector & get_element_fields_components() const
Definition MshLoader.h:105
const IntField & get_elements_tags() const
Definition MshLoader.h:81
const FieldNames & get_element_fields_names() const
Definition MshLoader.h:103
const IntVector & get_elements_lengths() const
Definition MshLoader.h:79
std::vector< IntVector > IntField
Definition MshLoader.h:48
msh_struct(int _tag=0, int _type=0)
Definition MshLoader.h:29
int tag
Definition MshLoader.h:28
int el_type
Definition MshLoader.h:28
bool operator<(const msh_struct &a) const
Definition MshLoader.h:36
bool operator==(const msh_struct &a) const
Definition MshLoader.h:31