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

std::map<ElemType, elementDefinition> eletypes_exp [static]

Definition at line 68 of file gmsh_io.C.

Referenced by GmshIO::write_mesh().

std::map<unsigned int, elementDefinition> eletypes_imp [static]

Definition at line 69 of file gmsh_io.C.

Referenced by GmshIO::read_mesh().

unsigned int exptype

Definition at line 57 of file gmsh_io.C.

unsigned int id

Definition at line 47 of file gmsh_io.C.

Referenced by GmshIO::read_mesh(), and FroIO::write().

std::string label

Definition at line 54 of file gmsh_io.C.

Referenced by OFFIO::read_stream().

unsigned int nnodes

Definition at line 59 of file gmsh_io.C.

Referenced by init_eletypes(), and GmshIO::read_mesh().

std::vector<unsigned int> nodes


Site Created By: libMesh Developers
Last modified: November 25 2009 03:43:51.

Hosted By:
SourceForge.net Logo