gmsh_io.C File Reference
Go to the source code of this file.
Functions | |
| void | init_eletypes () |
Variables | |
| std::map< ElemType, elementDefinition > | eletypes_exp |
| std::map< unsigned int, elementDefinition > | eletypes_imp |
Function Documentation
| void @140::init_eletypes | ( | ) | [static] |
Definition at line 75 of file gmsh_io.C.
References libMeshEnums::EDGE2, libMeshEnums::EDGE3, libMeshEnums::HEX20, libMeshEnums::HEX27, libMeshEnums::HEX8, nodes, libMeshEnums::PRISM15, libMeshEnums::PRISM18, libMeshEnums::PRISM6, libMeshEnums::PYRAMID5, libMeshEnums::QUAD4, libMeshEnums::QUAD8, libMeshEnums::QUAD9, libMeshEnums::TET10, libMeshEnums::TET4, libMeshEnums::TRI3, and libMeshEnums::TRI6.
Referenced by GmshIO::read_mesh(), GMVIO::write_ascii_new_impl(), GmshIO::write_mesh(), and GmshIO::write_post().
00076 { 00077 if (eletypes_exp.empty() && eletypes_imp.empty()) 00078 { 00079 // This should happen only once. The first time this method 00080 // is called the eletypes data struture will be empty, and 00081 // we will fill it. Any subsequent calls will find an initialized 00082 // eletypes map and will do nothing. 00083 00084 //============================== 00085 // setup the element definitions 00086 elementDefinition eledef; 00087 00088 // use "swap trick" from Scott Meyer's "Effective STL" to initialize 00089 // eledef.nodes vector 00090 00091 // POINT (only Gmsh) 00092 { 00093 eledef.exptype = 15; 00094 eledef.dim = 0; 00095 eledef.nnodes = 1; 00096 eledef.nodes.clear(); 00097 00098 // import only 00099 eletypes_imp[15] = eledef; 00100 } 00101 00102 // EDGE2 00103 { 00104 eledef.type = EDGE2; 00105 eledef.dim = 1; 00106 eledef.nnodes = 2; 00107 eledef.exptype = 1; 00108 eledef.nodes.clear(); 00109 00110 eletypes_exp[EDGE2] = eledef; 00111 eletypes_imp[1] = eledef; 00112 } 00113 00114 // EDGE3 00115 { 00116 eledef.type = EDGE3; 00117 eledef.dim = 1; 00118 eledef.nnodes = 3; 00119 eledef.exptype = 8; 00120 eledef.nodes.clear(); 00121 00122 eletypes_exp[EDGE3] = eledef; 00123 eletypes_imp[8] = eledef; 00124 } 00125 00126 // TRI3 00127 { 00128 eledef.type = TRI3; 00129 eledef.dim = 2; 00130 eledef.nnodes = 3; 00131 eledef.exptype = 2; 00132 eledef.nodes.clear(); 00133 00134 eletypes_exp[TRI3] = eledef; 00135 eletypes_imp[2] = eledef; 00136 } 00137 00138 // TRI6 00139 { 00140 eledef.type = TRI6; 00141 eledef.dim = 2; 00142 eledef.nnodes = 6; 00143 eledef.exptype = 9; 00144 eledef.nodes.clear(); 00145 00146 eletypes_exp[TRI6] = eledef; 00147 eletypes_imp[9] = eledef; 00148 } 00149 00150 // QUAD4 00151 { 00152 eledef.type = QUAD4; 00153 eledef.dim = 2; 00154 eledef.nnodes = 4; 00155 eledef.exptype = 3; 00156 eledef.nodes.clear(); 00157 00158 eletypes_exp[QUAD4] = eledef; 00159 eletypes_imp[3] = eledef; 00160 } 00161 00162 // QUAD8 00163 // TODO: what should be done with this on writing? 00164 { 00165 eledef.type = QUAD8; 00166 eledef.dim = 2; 00167 eledef.nnodes = 8; 00168 eledef.exptype = 100; 00169 const unsigned int nodes[] = {1,2,3,4,5,6,7,8}; 00170 std::vector<unsigned int>(nodes, nodes+eledef.nnodes).swap(eledef.nodes); 00171 00172 eletypes_exp[QUAD8] = eledef; 00173 eletypes_imp[10] = eledef; 00174 } 00175 00176 // QUAD9 00177 { 00178 eledef.type = QUAD9; 00179 eledef.dim = 2; 00180 eledef.nnodes = 9; 00181 eledef.exptype = 10; 00182 eledef.nodes.clear(); 00183 00184 eletypes_exp[QUAD9] = eledef; 00185 eletypes_imp[10] = eledef; 00186 } 00187 00188 // HEX8 00189 { 00190 eledef.type = HEX8; 00191 eledef.dim = 3; 00192 eledef.nnodes = 8; 00193 eledef.exptype = 5; 00194 eledef.nodes.clear(); 00195 00196 eletypes_exp[HEX8] = eledef; 00197 eletypes_imp[5] = eledef; 00198 } 00199 00200 // HEX20 00201 // TODO: what should be done with this on writing? 00202 { 00203 eledef.type = HEX20; 00204 eledef.dim = 3; 00205 eledef.nnodes = 20; 00206 eledef.exptype = 101; 00207 const unsigned int nodes[] = {1,2,3,4,5,6,7,8,9,10,11,16,17,18,19,12,13,14,15,16}; 00208 std::vector<unsigned int>(nodes, nodes+eledef.nnodes).swap(eledef.nodes); 00209 00210 eletypes_exp[HEX20] = eledef; 00211 eletypes_imp[12] = eledef; 00212 } 00213 00214 // HEX27 00215 { 00216 eledef.type = HEX27; 00217 eledef.dim = 3; 00218 eledef.nnodes = 27; 00219 eledef.exptype = 12; 00220 const unsigned int nodes[] = {0,1,2,3,4,5,6,7,8,11,12,9,13,10,14, 00221 15,16,19,17,18,20,21,24,22,23,25,26}; 00222 std::vector<unsigned int>(nodes, nodes+eledef.nnodes).swap(eledef.nodes); 00223 00224 eletypes_exp[HEX27] = eledef; 00225 eletypes_imp[12] = eledef; 00226 } 00227 00228 // TET4 00229 { 00230 eledef.type = TET4; 00231 eledef.dim = 3; 00232 eledef.nnodes = 4; 00233 eledef.exptype = 4; 00234 eledef.nodes.clear(); 00235 00236 eletypes_exp[TET4] = eledef; 00237 eletypes_imp[4] = eledef; 00238 } 00239 00240 // TET10 00241 { 00242 eledef.type = TET10; 00243 eledef.dim = 3; 00244 eledef.nnodes = 10; 00245 eledef.exptype = 11; 00246 const unsigned int nodes[] = {0,1,2,3,4,5,6,7,9,8}; 00247 std::vector<unsigned int>(nodes, nodes+eledef.nnodes).swap(eledef.nodes); 00248 eletypes_exp[TET10] = eledef; 00249 eletypes_imp[11] = eledef; 00250 } 00251 00252 // PRISM6 00253 { 00254 eledef.type = PRISM6; 00255 eledef.dim = 3; 00256 eledef.nnodes = 6; 00257 eledef.exptype = 6; 00258 eledef.nodes.clear(); 00259 00260 eletypes_exp[PRISM6] = eledef; 00261 eletypes_imp[6] = eledef; 00262 } 00263 00264 // PRISM15 00265 // TODO: what should be done with this on writing? 00266 { 00267 eledef.type = PRISM15; 00268 eledef.dim = 3; 00269 eledef.nnodes = 15; 00270 eledef.exptype = 103; 00271 eledef.nodes.clear(); 00272 00273 eletypes_exp[PRISM15] = eledef; 00274 eletypes_imp[13] = eledef; 00275 } 00276 00277 // PRISM18 00278 { 00279 eledef.type = PRISM18; 00280 eledef.dim = 3; 00281 eledef.nnodes = 18; 00282 eledef.exptype = 13; 00283 const unsigned int nodes[] = {0,1,2,3,4,5,6,8,9,7,10,11, 00284 12,14,13,15,17,16}; 00285 std::vector<unsigned int>(nodes, nodes+eledef.nnodes).swap(eledef.nodes); 00286 00287 eletypes_exp[PRISM18] = eledef; 00288 eletypes_imp[13] = eledef; 00289 } 00290 00291 // PYRAMID5 00292 { 00293 eledef.type = PYRAMID5; 00294 eledef.dim = 3; 00295 eledef.nnodes = 5; 00296 eledef.exptype = 7; 00297 eledef.nodes.clear(); 00298 00299 eletypes_exp[PYRAMID5] = eledef; 00300 eletypes_imp[7] = eledef; 00301 } 00302 00303 //============================== 00304 } 00305 }
Variable Documentation
| unsigned int dim |
Definition at line 58 of file gmsh_io.C.
Referenced by EquationSystems::build_discontinuous_solution_vector(), EquationSystems::build_solution_vector(), System::calculate_norm(), JumpErrorEstimator::coarse_n_flux_faces_increment(), DofMap::constrain_p_dofs(), DofMap::create_dof_constraints(), DofMap::dof_indices(), JumpErrorEstimator::estimate_error(), ExactErrorEstimator::estimate_error(), MeshRefinement::flag_elements_by_elem_fraction(), MeshRefinement::flag_elements_by_nelem_target(), QGrundmann_Moller::gm_rule(), MeshFunction::gradient(), MeshFunction::hessian(), XdrMESH::init(), TreeNode< N >::insert(), LaplacianErrorEstimator::internal_side_integration(), DofMap::old_dof_indices(), System::ProjectVector::operator()(), PatchRecoveryErrorEstimator::EstimateError::operator()(), MeshFunction::operator()(), GmshIO::read_mesh(), DofMap::reinit(), HPCoarsenTest::select_refinement(), Side< SideType, ParentType >::Side(), SideEdge< EdgeType, ParentType >::SideEdge(), EnsightIO::write_scalar_ascii(), and EnsightIO::write_vector_ascii().
std::map<ElemType, elementDefinition> eletypes_exp [static] |
std::map<unsigned int, elementDefinition> eletypes_imp [static] |
| unsigned int id |
| std::string label |
| unsigned int nnodes |
| std::vector<unsigned int> nodes |
Definition at line 46 of file gmsh_io.C.
Referenced by MeshTools::Private::fix_broken_node_and_element_numbering(), init_eletypes(), GmshIO::read_mesh(), and Elem::refine().
| ElemType type |
Definition at line 56 of file gmsh_io.C.
Referenced by GMVIO::_read_one_cell(), DofMap::constrain_p_dofs(), DofMap::distribute_local_dofs_node_major(), DofMap::distribute_local_dofs_var_major(), DofMap::dof_indices(), XdrMESH::header(), FE< Dim, T >::map(), FE< Dim, T >::map_eta(), FE< Dim, T >::map_xi(), FE< Dim, T >::map_zeta(), FE< Dim, T >::nodal_soln(), DofMap::old_dof_indices(), System::read_header(), UCDIO::read_implementation(), GmshIO::read_mesh(), DofMap::reinit(), DofMap::SCALAR_dof_indices(), FE< Dim, T >::shape(), FE< Dim, T >::shape_deriv(), FE< Dim, T >::shape_second_deriv(), TransientSystem< Base >::system_type(), System::write_header(), and UCDIO::write_implementation().