libMesh::ExodusII_IO_Helper::ElementMaps Class Reference

#include <exodusII_io_helper.h>

List of all members.

Public Member Functions

 ElementMaps ()
ExodusII_IO_Helper::Conversion assign_conversion (std::string type_str)
ExodusII_IO_Helper::Conversion assign_conversion (const ElemType type)

Static Public Attributes

static const int edge2_node_map [2] = {0, 1}
static const int edge3_node_map [3] = {0, 1, 2}
static const int edge_edge_map [2] = {0, 1}
static const int edge_inverse_edge_map [2] = {1, 2}
static const int quad4_node_map [4] = {0, 1, 2, 3}
static const int quad8_node_map [8] = {0, 1, 2, 3, 4, 5, 6, 7}
static const int quad9_node_map [9] = {0, 1, 2, 3, 4, 5, 6, 7, 8}
static const int tri3_node_map [3] = {0, 1, 2}
static const int tri6_node_map [6] = {0, 1, 2, 3, 4, 5}
static const int tri_edge_map [3] = {0, 1, 2}
static const int quad_edge_map [4] = {0, 1, 2, 3}
static const int tri_inverse_edge_map [3] = {1, 2, 3}
static const int quad_inverse_edge_map [4] = {1, 2, 3, 4}
static const int hex8_node_map [8] = {0, 1, 2, 3, 4, 5, 6, 7}
static const int hex20_node_map [20]
static const int hex27_node_map [27]
static const int hex27_inverse_node_map [27]
static const int tet4_node_map [4] = {0, 1, 2, 3}
static const int tet10_node_map [10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
static const int prism6_node_map [6] = {0, 1, 2, 3, 4, 5}
static const int prism15_node_map [15]
static const int prism18_node_map [18]
static const int pyramid5_node_map [5] = {0, 1, 2, 3, 4}
static const int hex_face_map [6] = {1, 2, 3, 4, 0, 5}
static const int hex27_face_map [6] = {1, 2, 3, 4, 0, 5}
static const int tet_face_map [4] = {1, 2, 3, 0}
static const int prism_face_map [5] = {1, 2, 3, 0, 4}
static const int pyramid_face_map [5] = {-1,-1,-1,-1,-1}
static const int hex_inverse_face_map [6] = {5, 1, 2, 3, 4, 6}
static const int hex27_inverse_face_map [6] = {5, 1, 2, 3, 4, 6}
static const int tet_inverse_face_map [4] = {4, 1, 2, 3}
static const int prism_inverse_face_map [5] = {4, 1, 2, 3, 5}
static const int pyramid_inverse_face_map [5] = {-1,-1,-1,-1,-1}

Detailed Description

Definition at line 869 of file exodusII_io_helper.h.


Constructor & Destructor Documentation

libMesh::ExodusII_IO_Helper::ElementMaps::ElementMaps (  )  [inline]

Constructor.

Definition at line 876 of file exodusII_io_helper.h.

00876 {}


Member Function Documentation

ExodusII_IO_Helper::Conversion libMesh::ExodusII_IO_Helper::ElementMaps::assign_conversion ( const ElemType  type  ) 
Returns:
a conversion object given an element type.

Definition at line 1639 of file exodusII_io_helper.C.

References libMeshEnums::EDGE2, edge2_node_map, libMeshEnums::EDGE3, edge3_node_map, edge_edge_map, edge_inverse_edge_map, libMeshEnums::HEX20, hex20_node_map, libMeshEnums::HEX27, hex27_face_map, hex27_inverse_face_map, hex27_inverse_node_map, hex27_node_map, libMeshEnums::HEX8, hex8_node_map, hex_face_map, hex_inverse_face_map, libMeshEnums::PRISM15, prism15_node_map, libMeshEnums::PRISM18, prism18_node_map, libMeshEnums::PRISM6, prism6_node_map, prism_face_map, prism_inverse_face_map, libMeshEnums::PYRAMID5, pyramid5_node_map, pyramid_face_map, pyramid_inverse_face_map, libMeshEnums::QUAD4, quad4_node_map, libMeshEnums::QUAD8, quad8_node_map, libMeshEnums::QUAD9, quad9_node_map, quad_edge_map, quad_inverse_edge_map, libMeshEnums::TET10, tet10_node_map, libMeshEnums::TET4, tet4_node_map, tet_face_map, tet_inverse_face_map, libMeshEnums::TRI3, tri3_node_map, libMeshEnums::TRI6, tri6_node_map, tri_edge_map, and tri_inverse_edge_map.

01640 {
01641   switch (type)
01642     {
01643     case EDGE2:
01644       {
01645         const Conversion conv(edge2_node_map,
01646                               ARRAY_LENGTH(edge2_node_map),
01647                               edge2_node_map, // inverse node map same as forward node map
01648                               ARRAY_LENGTH(edge2_node_map),
01649                               edge_edge_map,
01650                               ARRAY_LENGTH(edge_edge_map),
01651                               edge_inverse_edge_map,
01652                               ARRAY_LENGTH(edge_inverse_edge_map),
01653                               EDGE2, "EDGE2");
01654         return conv;
01655       }
01656     case EDGE3:
01657       {
01658         const Conversion conv(edge3_node_map,
01659                               ARRAY_LENGTH(edge3_node_map),
01660                               edge3_node_map, // inverse node map same as forward node map
01661                               ARRAY_LENGTH(edge3_node_map),
01662                               edge_edge_map,
01663                               ARRAY_LENGTH(edge_edge_map),
01664                               edge_inverse_edge_map,
01665                               ARRAY_LENGTH(edge_inverse_edge_map),
01666                               EDGE3, "EDGE3");
01667         return conv;
01668       }
01669     case QUAD4:
01670       {
01671         const Conversion conv(quad4_node_map,
01672                               ARRAY_LENGTH(quad4_node_map),
01673                               quad4_node_map, // inverse node map same as forward node map
01674                               ARRAY_LENGTH(quad4_node_map),
01675                               quad_edge_map,
01676                               ARRAY_LENGTH(quad_edge_map),
01677                               quad_inverse_edge_map,
01678                               ARRAY_LENGTH(quad_inverse_edge_map),
01679                               QUAD4,
01680                               "QUAD4");
01681         return conv;
01682       }
01683 
01684     case QUAD8:
01685       {
01686         const Conversion conv(quad8_node_map,
01687                               ARRAY_LENGTH(quad8_node_map),
01688                               quad8_node_map, // inverse node map same as forward node map
01689                               ARRAY_LENGTH(quad8_node_map),
01690                               quad_edge_map,
01691                               ARRAY_LENGTH(quad_edge_map),
01692                               quad_inverse_edge_map,
01693                               ARRAY_LENGTH(quad_inverse_edge_map),
01694                               QUAD8,
01695                               "QUAD8");
01696         return conv;
01697       }
01698 
01699     case QUAD9:
01700       {
01701         const Conversion conv(quad9_node_map,
01702                               ARRAY_LENGTH(quad9_node_map),
01703                               quad9_node_map, // inverse node map same as forward node map
01704                               ARRAY_LENGTH(quad9_node_map),
01705                               quad_edge_map,
01706                               ARRAY_LENGTH(quad_edge_map),
01707                               quad_inverse_edge_map,
01708                               ARRAY_LENGTH(quad_inverse_edge_map),
01709                               QUAD9,
01710                               "QUAD9");
01711         return conv;
01712       }
01713 
01714     case TRI3:
01715       {
01716         const Conversion conv(tri3_node_map,
01717                               ARRAY_LENGTH(tri3_node_map),
01718                               tri3_node_map, // inverse node map same as forward node map
01719                               ARRAY_LENGTH(tri3_node_map),
01720                               tri_edge_map,
01721                               ARRAY_LENGTH(tri_edge_map),
01722                               tri_inverse_edge_map,
01723                               ARRAY_LENGTH(tri_inverse_edge_map),
01724                               TRI3,
01725                               "TRI3");
01726         return conv;
01727       }
01728 
01729     case TRI6:
01730       {
01731         const Conversion conv(tri6_node_map,
01732                               ARRAY_LENGTH(tri6_node_map),
01733                               tri6_node_map, // inverse node map same as forward node map
01734                               ARRAY_LENGTH(tri6_node_map),
01735                               tri_edge_map,
01736                               ARRAY_LENGTH(tri_edge_map),
01737                               tri_inverse_edge_map,
01738                               ARRAY_LENGTH(tri_inverse_edge_map),
01739                               TRI6,
01740                               "TRI6");
01741         return conv;
01742       }
01743 
01744     case HEX8:
01745       {
01746         const Conversion conv(hex8_node_map,
01747                               ARRAY_LENGTH(hex8_node_map),
01748                               hex8_node_map, // inverse node map same as forward node map
01749                               ARRAY_LENGTH(hex8_node_map),
01750                               hex_face_map,
01751                               ARRAY_LENGTH(hex_face_map),
01752                               hex_inverse_face_map,
01753                               ARRAY_LENGTH(hex_inverse_face_map),
01754                               HEX8,
01755                               "HEX8");
01756         return conv;
01757       }
01758 
01759     case HEX20:
01760       {
01761         const Conversion conv(hex20_node_map,
01762                               ARRAY_LENGTH(hex20_node_map),
01763                               hex20_node_map, // inverse node map same as forward node map
01764                               ARRAY_LENGTH(hex20_node_map),
01765                               hex_face_map,
01766                               ARRAY_LENGTH(hex_face_map),
01767                               hex_inverse_face_map,
01768                               ARRAY_LENGTH(hex_inverse_face_map),
01769                               HEX20,
01770                               "HEX20");
01771         return conv;
01772       }
01773 
01774     case HEX27:
01775       {
01776         const Conversion conv(hex27_node_map,
01777                               ARRAY_LENGTH(hex27_node_map),
01778                               hex27_inverse_node_map, // different inverse node map for Hex27!
01779                               ARRAY_LENGTH(hex27_inverse_node_map),
01780                               hex27_face_map,
01781                               ARRAY_LENGTH(hex27_face_map),
01782                               hex27_inverse_face_map,
01783                               ARRAY_LENGTH(hex27_inverse_face_map),
01784                               HEX27,
01785                               "HEX27");
01786         return conv;
01787       }
01788 
01789     case TET4:
01790       {
01791         const Conversion conv(tet4_node_map,
01792                               ARRAY_LENGTH(tet4_node_map),
01793                               tet4_node_map, // inverse node map same as forward node map
01794                               ARRAY_LENGTH(tet4_node_map),
01795                               tet_face_map,
01796                               ARRAY_LENGTH(tet_face_map),
01797                               tet_inverse_face_map,
01798                               ARRAY_LENGTH(tet_inverse_face_map),
01799                               TET4,
01800                               "TETRA4");
01801         return conv;
01802       }
01803 
01804     case TET10:
01805       {
01806         const Conversion conv(tet10_node_map,
01807                               ARRAY_LENGTH(tet10_node_map),
01808                               tet10_node_map, // inverse node map same as forward node map
01809                               ARRAY_LENGTH(tet10_node_map),
01810                               tet_face_map,
01811                               ARRAY_LENGTH(tet_face_map),
01812                               tet_inverse_face_map,
01813                               ARRAY_LENGTH(tet_inverse_face_map),
01814                               TET10,
01815                               "TETRA10");
01816         return conv;
01817       }
01818 
01819     case PRISM6:
01820       {
01821         const Conversion conv(prism6_node_map,
01822                               ARRAY_LENGTH(prism6_node_map),
01823                               prism6_node_map, // inverse node map same as forward node map
01824                               ARRAY_LENGTH(prism6_node_map),
01825                               prism_face_map,
01826                               ARRAY_LENGTH(prism_face_map),
01827                               prism_inverse_face_map,
01828                               ARRAY_LENGTH(prism_inverse_face_map),
01829                               PRISM6,
01830                               "WEDGE");
01831         return conv;
01832       }
01833 
01834     case PRISM15:
01835       {
01836         const Conversion conv(prism15_node_map,
01837                               ARRAY_LENGTH(prism15_node_map),
01838                               prism15_node_map, // inverse node map same as forward node map
01839                               ARRAY_LENGTH(prism15_node_map),
01840                               prism_face_map,
01841                               ARRAY_LENGTH(prism_face_map),
01842                               prism_inverse_face_map,
01843                               ARRAY_LENGTH(prism_inverse_face_map),
01844                               PRISM15,
01845                               "WEDGE15");
01846         return conv;
01847       }
01848 
01849     case PRISM18:
01850       {
01851         const Conversion conv(prism18_node_map,
01852                               ARRAY_LENGTH(prism18_node_map),
01853                               prism18_node_map, // inverse node map same as forward node map
01854                               ARRAY_LENGTH(prism18_node_map),
01855                               prism_face_map,
01856                               ARRAY_LENGTH(prism_face_map),
01857                               prism_inverse_face_map,
01858                               ARRAY_LENGTH(prism_inverse_face_map),
01859                               PRISM18,
01860                               "WEDGE18");
01861         return conv;
01862       }
01863 
01864     case PYRAMID5:
01865       {
01866         const Conversion conv(pyramid5_node_map,
01867                               ARRAY_LENGTH(pyramid5_node_map),
01868                               pyramid5_node_map, // inverse node map same as forward node map
01869                               ARRAY_LENGTH(pyramid5_node_map),
01870                               pyramid_face_map,
01871                               ARRAY_LENGTH(pyramid_face_map),
01872                               pyramid_inverse_face_map,
01873                               ARRAY_LENGTH(pyramid_inverse_face_map),
01874                               PYRAMID5,
01875                               "PYRAMID5");
01876         return conv;
01877       }
01878 
01879     default:
01880       libmesh_error();
01881     }
01882 
01883   libmesh_error();
01884 
01885   // dummy return value, we will never get here
01886   const Conversion conv(tri3_node_map,
01887                         ARRAY_LENGTH(tri3_node_map),
01888                         tri3_node_map, // inverse node map same as forward node map
01889                         ARRAY_LENGTH(tri3_node_map),
01890                         tri_edge_map,
01891                         ARRAY_LENGTH(tri_edge_map),
01892                         tri_inverse_edge_map,
01893                         ARRAY_LENGTH(tri_inverse_edge_map),
01894                         TRI3,
01895                         "TRI3");
01896   return conv;
01897 }

ExodusII_IO_Helper::Conversion libMesh::ExodusII_IO_Helper::ElementMaps::assign_conversion ( std::string  type_str  ) 
Returns:
a conversion object given an element type name.

Definition at line 1613 of file exodusII_io_helper.C.

References libMeshEnums::EDGE2, and libMesh::err.

Referenced by libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::Nemesis_IO_Helper::write_elements(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO_Helper::write_elements_discontinuous(), libMesh::Nemesis_IO_Helper::write_sidesets(), and libMesh::ExodusII_IO_Helper::write_sidesets().

01614 {
01615   init_element_equivalence_map();
01616 
01617   // Do only upper-case comparisons
01618   std::transform(type_str.begin(), type_str.end(), type_str.begin(), ::toupper);
01619 
01620   std::map<std::string, libMeshEnums::ElemType>::iterator it =
01621     element_equivalence_map.find(type_str);
01622 
01623   if (it != element_equivalence_map.end())
01624     return assign_conversion( it->second );
01625   else
01626     {
01627       libMesh::err << "ERROR! Unrecognized element type_str: " << type_str << std::endl;
01628       libmesh_error();
01629     }
01630 
01631   libmesh_error();
01632 
01633   // dummy return value, we won't get here
01634   return assign_conversion (EDGE2);
01635 }


Member Data Documentation

1D node maps. These define mappings from ExodusII-formatted element numberings. The Edge2 node map. Use this map for linear elements in 1D.

Definition at line 888 of file exodusII_io_helper.h.

Referenced by assign_conversion().

The Edge3 node map. Use this map for quadratic elements in 1D.

Definition at line 894 of file exodusII_io_helper.h.

Referenced by assign_conversion().

1D edge maps Maps the Exodus edge numbering for line elements. Useful for reading sideset information.

Definition at line 905 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Maps the Exodus edge numbering for line elements. Useful for writing sideset information.

Definition at line 911 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Initial value:
 { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
                                                        10, 11, 12, 13, 14, 15, 16, 17, 18, 19}

The Hex20 node map. Use this map for serendipity hexahedral elements in 3D.

Definition at line 1000 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::hex27_face_map = {1, 2, 3, 4, 0, 5} [static]

Maps the Exodus face numbering for 27-noded hexahedrals. Useful for reading sideset information.

Definition at line 1068 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Maps the Exodus face numbering for 27-noded hexahedrals. Useful for writing sideset information.

Definition at line 1098 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Initial value:
 {
  
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
  
  26, 20, 25, 24, 22, 21, 23}

The Hex27 inverse node map. Use this map for writing tri-quadratic hexahedral elements in 3D.

Definition at line 1014 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Initial value:
 {
  
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
  
  21, 25, 24, 26, 23, 22, 20}

The Hex27 node map. Use this map for reading tri-quadratic hexahedral elements in 3D.

Definition at line 1007 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::hex8_node_map = {0, 1, 2, 3, 4, 5, 6, 7} [static]

3D maps. These define mappings from ExodusII-formatted element numberings. The Hex8 node map. Use this map for bi-linear hexahedral elements in 3D.

Definition at line 993 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::hex_face_map = {1, 2, 3, 4, 0, 5} [static]

3D face maps. Are these ever used for anything? Maps the Exodus face numbering for general hexahedrals. Useful for reading sideset information.

Definition at line 1062 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::hex_inverse_face_map = {5, 1, 2, 3, 4, 6} [static]

Maps the Exodus face numbering for general hexahedrals. Useful for writing sideset information.

Definition at line 1092 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Initial value:
 {0, 1, 2, 3, 4, 5, 6,  7,  8,  9,
                                                                     10, 11, 12, 13, 14}

The Prism15 node map. Use this map for "serendipity" prisms in 3D.

Definition at line 1039 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Initial value:
 {0, 1, 2, 3, 4, 5, 6,  7,  8,  9,
                                                                     10, 11, 12, 13, 14, 15, 16, 17}

The Prism18 node map.

Definition at line 1044 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::prism6_node_map = {0, 1, 2, 3, 4, 5} [static]

The Prism6 node map.

Definition at line 1033 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::prism_face_map = {1, 2, 3, 0, 4} [static]

Maps the Exodus face numbering for general prisms. Useful for reading sideset information.

Definition at line 1080 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Maps the Exodus face numbering for general prisms. Useful for writing sideset information.

Definition at line 1110 of file exodusII_io_helper.h.

Referenced by assign_conversion().

The Pyramid5 node map. Use this map for linear pyramid elements in 3D.

Definition at line 1051 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::pyramid_face_map = {-1,-1,-1,-1,-1} [static]

Maps the Exodus face numbering for general pyramids. Useful for reading sideset information.

Definition at line 1086 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Maps the Exodus face numbering for general pyramids. Useful for writing sideset information.

Definition at line 1116 of file exodusII_io_helper.h.

Referenced by assign_conversion().

2D node maps. These define mappings from ExodusII-formatted element numberings. The Quad4 node map. Use this map for bi-linear quadrilateral elements in 2D.

Definition at line 924 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::quad8_node_map = {0, 1, 2, 3, 4, 5, 6, 7} [static]

The Quad8 node map. Use this map for serendipity quadrilateral elements in 2D.

Definition at line 931 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::quad9_node_map = {0, 1, 2, 3, 4, 5, 6, 7, 8} [static]

The Quad9 node map. Use this map for bi-quadratic quadrilateral elements in 2D.

Definition at line 938 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Maps the Exodus edge numbering for quadrilaterals. Useful for reading sideset information.

Definition at line 968 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Maps the Exodus edge numbering for quadrilaterals. Useful for writing sideset information.

Definition at line 980 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::tet10_node_map = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} [static]

The Tet10 node map. Use this map for quadratic tetrahedral elements in 3D.

Definition at line 1028 of file exodusII_io_helper.h.

Referenced by assign_conversion().

The Tet4 node map. Use this map for linear tetrahedral elements in 3D.

Definition at line 1021 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::tet_face_map = {1, 2, 3, 0} [static]

Maps the Exodus face numbering for general tetrahedrals. Useful for reading sideset information.

Definition at line 1074 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Maps the Exodus face numbering for general tetrahedrals. Useful for writing sideset information.

Definition at line 1104 of file exodusII_io_helper.h.

Referenced by assign_conversion().

The Tri3 node map. Use this map for linear triangles in 2D.

Definition at line 945 of file exodusII_io_helper.h.

Referenced by assign_conversion().

const int libMesh::ExodusII_IO_Helper::ElementMaps::tri6_node_map = {0, 1, 2, 3, 4, 5} [static]

The Tri6 node map. Use this map for quadratic triangular elements in 2D.

Definition at line 952 of file exodusII_io_helper.h.

Referenced by assign_conversion().

2D edge maps Maps the Exodus edge numbering for triangles. Useful for reading sideset information.

Definition at line 962 of file exodusII_io_helper.h.

Referenced by assign_conversion().

Maps the Exodus edge numbering for triangles. Useful for writing sideset information.

Definition at line 974 of file exodusII_io_helper.h.

Referenced by assign_conversion().


The documentation for this class was generated from the following files:

Site Created By: libMesh Developers
Last modified: February 05 2013 19:55:18 UTC

Hosted By:
SourceForge.net Logo