/usr/include/libmesh/exodusII_io_helper.h is in libmesh-dev 0.7.1-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 | // $Id: exodusII_io_helper.h 4172 2011-01-17 21:56:25Z jasondhales $
// The libMesh Finite Element Library.
// Copyright (C) 2002-2008 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#ifndef __exodusII_io_helper_h__
#define __exodusII_io_helper_h__
#include "libmesh_config.h"
#ifdef LIBMESH_HAVE_EXODUS_API
#include <iostream>
#include <string>
#include <vector>
#include "mesh_base.h"
namespace libMesh
{
namespace exII {
extern "C" {
#include "exodusII.h" // defines MAX_LINE_LENGTH, MAX_STR_LENGTH used later
}
}
/**
* This is the \p ExodusII_IO_Helper class. This class hides the implementation
* details of interfacing with the Exodus binary format.
*
* @author Johw W. Peterson, 2002.
*/
class ExodusII_IO_Helper
{
public:
/**
* Constructor. Automatically initializes all the private members of
* the class. Also allows you to set the verbosity level to v=1
* (on) or v=0 (off).
*/
ExodusII_IO_Helper(bool v=false) :
comp_ws(sizeof(Real)),
io_ws(0),
ex_id(0),
ex_err(0),
num_dim(0),
num_globals(0),
num_nodes(0),
num_elem(0),
num_elem_blk(0),
num_node_sets(0),
num_side_sets(0),
num_elem_this_blk(0),
num_nodes_per_elem(0),
num_attr(0),
req_info(0),
ret_int(0),
num_elem_all_sidesets(0),
ex_version(0.0),
ret_float(0.0),
ret_char(0),
num_time_steps(0),
_created(false),
_verbose(v),
_elem_vars_initialized(false),
_global_vars_initialized(false)
{
title.resize(MAX_LINE_LENGTH+1);
elem_type.resize(MAX_STR_LENGTH);
}
/**
* Destructor. The only memory
* allocated is for \p title and
* \p elem_type. This memory
* is freed in the destructor.
*/
virtual ~ExodusII_IO_Helper();
/**
* Returns true once create() has been successfully called, and
* false otherwise.
*/
bool created();
/**
* Get/set flag telling whether message printing is on or off.
*/
void verbose (bool set_verbosity);
/**
* @returns the \p ExodusII
* mesh dimension.
*/
int get_num_dim() const { return num_dim; }
/**
* @returns the total number of
* global variables.
*/
int get_num_globals() const { return num_globals; }
/**
* @returns the total number of
* nodes in the \p ExodusII mesh.
*/
int get_num_nodes() const { return num_nodes; }
/**
* @returns the total number of
* elements in the \p ExodusII mesh.
*/
int get_num_elem() const { return num_elem; }
/**
* @returns the total number
* of element blocks in
* the \p ExodusII mesh.
*/
int get_num_elem_blk() const { return num_elem_blk; }
/**
* For a given block,
* returns the total number
* of elements.
*/
int get_num_elem_this_blk() const { return num_elem_this_blk; }
/**
* @returns the number of
* nodes per element in
* a given block. e.g.
* for HEX27 it returns 27.
*/
int get_num_nodes_per_elem() const { return num_nodes_per_elem; }
/**
* @returns the total number
* of sidesets in the \p ExodusII
* mesh. Each sideset contains
* only one type of element.
*/
int get_num_side_sets() const { return num_side_sets; }
/**
* @returns the total number
* of nodesets in the \p ExodusII
* mesh.
*/
int get_num_node_sets() const { return num_node_sets; }
// /**
// * @returns the number of
// * elements in all the sidesets.
// * Effectively returns the
// * total number of elements
// * on the \p ExodusII mesh boundary.
// */
// int get_num_elem_all_sidesets() const { return num_elem_all_sidesets; }
/**
* @returns the \f$ i^{th} \f$
* node number in the
* element connectivity
* list for a given element.
*/
int get_connect(int i) const { return connect[i]; }
/**
* For a single sideset,
* returns the total number of
* elements in the sideset.
*/
int get_num_sides_per_set(int i) const { return num_sides_per_set[i]; }
/**
* For a single nodeset,
* returns the total number of
* nodes in the nodeset.
*/
int get_num_nodes_per_set(int i) const { return num_nodes_per_set[i]; }
// /**
// * @returns the \f$ i^{th} \f$ entry
// * in the element list.
// * The element list contains
// * the numbers of all elements
// * on the boundary.
// */
// int get_elem_list(int i) const { return elem_list[i]; }
/**
* @return a constant reference to the \p elem_list.
*/
const std::vector<int>& get_elem_list() const { return elem_list; }
// /**
// * @returns the \f$ i^{th} \f$ entry in
// * the side list. This is
// * effectively the "side"
// * (face in 3D or edge in
// * 2D) number which lies
// * on the boundary.
// */
// int get_side_list(int i) const { return side_list[i]; }
/**
* @return a constant reference to the \p side_list.
*/
const std::vector<int>& get_side_list() const { return side_list; }
/**
* @return a constant reference to the \p node_list.
*/
const std::vector<int>& get_node_list() const { return node_list; }
/**
* @return the nodeset id corresponding to the ith nodeset.
*/
int get_nodeset_id(unsigned int i) const { return nodeset_ids[i]; }
// /**
// * @returns the \f$ i^{th} \f$ entry in
// * the id list. This is the id
// * for the ith face on the boundary.
// */
// int get_id_list(int i) const { return id_list[i]; }
/**
* @return a constant reference to the \p id_list.
*/
const std::vector<int>& get_id_list() const { return id_list; }
/**
* @returns the current
* element type. Note:
* the default behavior
* is for this value
* to be in all capital
* letters, e.g. \p HEX27.
*/
const char* get_elem_type() const { return &elem_type[0]; }
/**
* @returns the \f$ i^{th} \f$
* node's x-coordinate.
*/
Real get_x(int i) const { return x[i]; }
/**
* @returns the \f$ i^{th} \f$
* node's y-coordinate.
*/
Real get_y(int i) const { return y[i]; }
/**
* @returns the \f$ i^{th} \f$
* node's z-coordinate.
*/
Real get_z(int i) const { return z[i]; }
/**
* Opens an \p ExodusII mesh
* file named \p filename
* for reading.
*/
void open(const char* filename);
/**
* Reads an \p ExodusII mesh
* file header.
*/
void read_header();
/**
* Prints the \p ExodusII
* mesh file header,
* which includes the
* mesh title, the number
* of nodes, number of
* elements, mesh dimension,
* number of sidesets, and
* number of nodesets
*/
void print_header();
/**
* Reads the nodal data
* (x,y,z coordinates)
* from the \p ExodusII mesh
* file.
*/
void read_nodes();
/**
* Reads the optional \p node_num_map
* from the \p ExodusII mesh file.
*/
void read_node_num_map();
/**
* Prints the nodal information,
* by default to \p libMesh::out.
*/
void print_nodes(std::ostream &out = libMesh::out);
/**
* Reads information for
* all of the blocks in
* the \p ExodusII mesh file.
*/
void read_block_info();
/**
* Get's the block number
* for the given block.
*/
int get_block_id(int block);
/**
* Reads all of the element
* connectivity for
* block \p block in the
* \p ExodusII mesh file.
*/
void read_elem_in_block(int block);
/**
* Reads the optional \p node_num_map
* from the \p ExodusII mesh file.
*/
void read_elem_num_map();
/**
* Reads information about
* all of the sidesets in
* the \p ExodusII mesh file.
*/
void read_sideset_info();
/**
* Reads information about
* all of the nodesets in
* the \p ExodusII mesh file.
*/
void read_nodeset_info();
/**
* Reads information about
* sideset \p id and
* inserts it into the global
* sideset array at the
* position \p offset.
*/
void read_sideset(int id, int offset);
/**
* Reads information about
* nodeset \p id and
* inserts it into the global
* nodeset array at the
* position \p offset.
*/
void read_nodeset(int id);
/**
* Prints information
* about all the sidesets.
*/
void print_sideset_info();
/**
* Prints information
* about all the nodesets.
*/
void print_nodeset_info();
/**
* Closes the \p ExodusII
* mesh file.
*/
void close();
/**
* Generic inquiry, returns the value
*/
int inquire(int req_info, std::string error_msg="");
// For reading solutions:
/*
* Returns an array containing the timesteps in the file
*/
const std::vector<Real>& get_time_steps();
/*
* Number of Nodal variables defined.
*/
int get_num_nodal_vars(){ return num_nodal_vars; }
/*
* Returns an array containing the nodal var names in the file
*/
const std::vector<std::string>& get_nodal_var_names();
/*
* Returns an array containing the nodal variable values
* at the specified time
*/
const std::vector<Real>& get_nodal_var_values(std::string nodal_var_name, int time_step);
// For Writing Solutions
/**
* Opens an \p ExodusII mesh
* file named \p filename
* for writing.
*/
void create(std::string filename);
/**
* Initializes the Exodus file
*/
void initialize(std::string title, const MeshBase & mesh);
/**
* Initializes the Exodus file
*/
void initialize_discontinuous(std::string title, const MeshBase & mesh);
/**
* Writes the nodal coordinates contained in "mesh"
*/
void write_nodal_coordinates(const MeshBase & mesh);
/**
* Writes the nodal coordinates contained in "mesh"
*/
void write_nodal_coordinates_discontinuous(const MeshBase & mesh);
/**
* Writes the elements contained in "mesh"
* FIXME: This only works for Mesh's having a single type of element!
*/
void write_elements(const MeshBase & mesh);
/**
* Writes the elements contained in "mesh"
* FIXME: This only works for Mesh's having a single type of element!
*/
void write_elements_discontinuous(const MeshBase & mesh);
/**
* Writes the sidesets contained in "mesh"
*/
void write_sidesets(const MeshBase & mesh);
/**
* Writes the nodesets contained in "mesh"
*/
void write_nodesets(const MeshBase & mesh);
/**
* Sets up the nodal variables
*/
void initialize_element_variables(std::vector<std::string> names);
/**
* Sets up the nodal variables
*/
void initialize_nodal_variables(std::vector<std::string> names);
/**
* Sets up the global variables
*/
void initialize_global_variables(const std::vector<std::string> & names);
/**
* Writes the time for the timestep
*/
void write_timestep(int timestep, Real time);
/**
* Writes the vector of values to the element variables.
*/
void write_element_values(const MeshBase & mesh, const std::vector<Number> & values, int timestep);
/**
* Writes the vector of values to a nodal variable.
*/
void write_nodal_values(int var_id, const std::vector<Number> & values, int timestep);
/**
* Writes the vector of information records.
*/
void write_information_records(const std::vector<std::string> & records);
/**
* Writes the vector of global variables.
*/
void write_global_values(const std::vector<Number> & values, int timestep);
/**
* This is the \p ExodusII_IO_Helper Conversion class.
* It provides a data structure which contains \p ExodusII node/edge
* maps and name conversions. It's defined below.
*/
class Conversion;
/**
* This is the \p ExodusII_IO_Helper ElementMap class.
* It contains constant maps between the \p ExodusII naming/numbering
* schemes and the canonical schemes used in this code. It's defined
* below.
*/
class ElementMaps;
//private:
/**
* All of the \p ExodusII
* API functions return
* an \p int error value.
* This function checks
* to see if the error has
* been set, and if it has,
* prints the error message
* contained in \p msg.
*/
void check_err(const int error, const std::string msg);
/**
* Prints the message defined
* in \p msg. Can be turned off if
* verbosity is set to 0.
*/
void message(const std::string msg);
/**
* Prints the message defined
* in \p msg, and appends the number
* \p i to the end of the
* message. Useful for
* printing messages in loops.
* Can be turned off if
* verbosity is set to 0.
*/
void message(const std::string msg, int i);
int comp_ws; // ?
int io_ws; // ?
int ex_id; // File identification flag
int ex_err; // General error flag
int num_dim; // Number of dimensions in the mesh
int num_globals; // Number of global variables
int num_nodes; // Total number of nodes in the mesh
int num_elem; // Total number of elements in the mesh
int num_elem_blk; // Total number of element blocks
int num_node_sets; // Total number of node sets
int num_side_sets; // Total number of element sets
int num_elem_this_blk; // Number of elements in this block
int num_nodes_per_elem; // Number of nodes in each element
int num_attr; // Number of attributes for a given block
int req_info; // Generic required info tag
int ret_int; // Generic int returned by ex_inquire
int num_elem_all_sidesets; // Total number of elements in all side sets
std::vector<int> block_ids; // Vector of the block identification numbers
std::vector<int> connect; // Vector of nodes in an element
std::vector<int> ss_ids; // Vector of the sideset IDs
std::vector<int> nodeset_ids; // Vector of the nodeset IDs
std::vector<int> num_sides_per_set; // Number of sides (edges/faces) in current set
std::vector<int> num_nodes_per_set; // Number of nodes in current set
std::vector<int> num_df_per_set; // Number of distribution factors per set
std::vector<int> num_node_df_per_set;// Number of distribution factors per set
std::vector<int> elem_list; // List of element numbers in all sidesets
std::vector<int> side_list; // Side (face/edge) number actually on the boundary
std::vector<int> node_list; // Node number actually on the boundary
std::vector<int> id_list; // Side (face/edge) id number
std::vector<int> node_num_map; // Optional mapping from internal [0,num_nodes) to arbitrary indices
std::vector<int> elem_num_map; // Optional mapping from internal [0,num_elem) to arbitrary indices
float ex_version; // Version of Exodus you are using
float ret_float; // Generic float returned by ex_inquire
std::vector<Real> x; // x locations of node points
std::vector<Real> y; // y locations of node points
std::vector<Real> z; // z locations of node points
char ret_char; // Generic char returned by ex_inquire
// Use vectors of char to emulate char*'s
std::vector<char> title; // Problem title
std::vector<char> elem_type; // Type of element in a given block
// Maps libMesh element numbers to Exodus element numbers
// gets filled in when write_elements gets called
std::map<int, int> libmesh_elem_num_to_exodus;
//Solution Data
int num_time_steps;
std::vector<Real> time_steps;
int num_nodal_vars;
std::vector<std::string> nodal_var_names;
std::vector<Real> nodal_var_values;
int num_elem_vars;
// A pair of containers used to emulate a char** data
// structure without having to worry about dynamic memory
// allocation ourselves.
std::vector<std::vector<char> > vvc;
std::vector<char*> strings; // vector of pointers into vvc
protected:
bool _created; // This flag gets set after the the create() function has been successfully called.
bool _verbose; // On/Off message flag
bool _elem_vars_initialized; // True once the elem vars are initialized
bool _global_vars_initialized; // True once the global vars are initialized
};
class ExodusII_IO_Helper::Conversion
{
public:
/**
* Constructor. Initializes the const private member
* variables.
*/
Conversion(const int* nm, const int* sm, const int* ism, const ElemType ct, std::string ex_type)
: node_map(nm), // Node map for this element
side_map(sm),
inverse_side_map(ism),
canonical_type(ct), // Element type name in this code
exodus_type(ex_type) // Element type in Exodus
{}
/**
* Returns the ith component of the node map for this
* element. The node map maps the exodusII node numbering
* format to this library's format.
*/
int get_node_map(int i) const { return node_map[i]; }
/**
* Returns the ith component of the side map for this
* element. The side map maps the exodusII side numbering
* format to this library's format.
*/
int get_side_map(int i) const { return side_map[i]; }
/**
* Returns the ith component of the side map for this
* element. The side map maps the libMesh side numbering
* format to this exodus's format.
*/
int get_inverse_side_map(int i) const { return inverse_side_map[i]; }
/**
* Returns the canonical element type for this
* element. The canonical element type is the standard
* element type understood by this library.
*/
ElemType get_canonical_type() const { return canonical_type; }
/**
* Returns the string corresponding to the Exodus type for this element
*/
std::string exodus_elem_type() const { return exodus_type; };
private:
/**
* Pointer to the node map for this element.
*/
const int* node_map;
/**
* Pointer to the side map for this element.
*/
const int* side_map;
/**
* Pointer to the inverse side map for this element.
*/
const int* inverse_side_map;
/**
* The canonical (i.e. standard for this library)
* element type.
*/
const ElemType canonical_type;
/**
* The string corresponding to the Exodus type for this element
*/
const std::string exodus_type;
};
class ExodusII_IO_Helper::ElementMaps
{
public:
/**
* Constructor.
*/
ElementMaps() {}
/**
* 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.
*/
static const int quad4_node_map[4];
/**
* The Quad8 node map.
* Use this map for serendipity
* quadrilateral elements in 2D.
*/
static const int quad8_node_map[8];
/**
* The Quad9 node map.
* Use this map for bi-quadratic
* quadrilateral elements in 2D.
*/
static const int quad9_node_map[9];
/**
* The Tri3 node map.
* Use this map for linear
* triangles in 2D.
*/
static const int tri3_node_map[3];
/**
* The Tri6 node map.
* Use this map for quadratic
* triangular elements in 2D.
*/
static const int tri6_node_map[6];
/**
* 2D edge maps
*/
/**
* Maps the Exodus edge numbering for triangles.
* Useful for reading sideset information.
*/
static const int tri_edge_map[3];
/**
* Maps the Exodus edge numbering for quadrilaterals.
* Useful for reading sideset information.
*/
static const int quad_edge_map[4];
/**
* Maps the Exodus edge numbering for triangles.
* Useful for writing sideset information.
*/
static const int tri_inverse_edge_map[3];
/**
* Maps the Exodus edge numbering for quadrilaterals.
* Useful for writing sideset information.
*/
static const int quad_inverse_edge_map[4];
/**
* 3D maps. These define
* mappings from ExodusII-formatted
* element numberings.
*/
/**
* The Hex8 node map.
* Use this map for bi-linear
* hexahedral elements in 3D.
*/
static const int hex8_node_map[8];
/**
* The Hex20 node map.
* Use this map for serendipity
* hexahedral elements in 3D.
*/
static const int hex20_node_map[20];
/**
* The Hex27 node map.
* Use this map for bi-quadratic
* hexahedral elements in 3D.
*/
static const int hex27_node_map[27];
/**
* The Tet4 node map.
* Use this map for linear
* tetrahedral elements in 3D.
*/
static const int tet4_node_map[4];
/**
* The Tet10 node map.
* Use this map for quadratic
* tetrahedral elements in 3D.
*/
static const int tet10_node_map[10];
/**
* The Prism6 node map.
*/
static const int prism6_node_map[6];
/**
* The Prism15 node map.
* Use this map for "serendipity" prisms in 3D.
*/
static const int prism15_node_map[15];
/**
* The Prism18 node map.
*/
static const int prism18_node_map[18];
/**
* The Pyramid5 node map.
* Use this map for linear
* pyramid elements in 3D.
*/
static const int pyramid5_node_map[5];
/**
* 3D face maps. Are these ever used for anything?
*/
/**
* Maps the Exodus face numbering for general hexahedrals.
* Useful for reading sideset information.
*/
static const int hex_face_map[6];
/**
* Maps the Exodus face numbering for 27-noded hexahedrals.
* Useful for reading sideset information.
*/
static const int hex27_face_map[6];
/**
* Maps the Exodus face numbering for general tetrahedrals.
* Useful for reading sideset information.
*/
static const int tet_face_map[4];
/**
* Maps the Exodus face numbering for general prisms.
* Useful for reading sideset information.
*/
static const int prism_face_map[5];
/**
* Maps the Exodus face numbering for general pyramids.
* Useful for reading sideset information.
*/
static const int pyramid_face_map[5];
/**
* Maps the Exodus face numbering for general hexahedrals.
* Useful for writing sideset information.
*/
static const int hex_inverse_face_map[6];
/**
* Maps the Exodus face numbering for 27-noded hexahedrals.
* Useful for writing sideset information.
*/
static const int hex27_inverse_face_map[6];
/**
* Maps the Exodus face numbering for general tetrahedrals.
* Useful for writing sideset information.
*/
static const int tet_inverse_face_map[4];
/**
* Maps the Exodus face numbering for general prisms.
* Useful for writing sideset information.
*/
static const int prism_inverse_face_map[5];
/**
* Maps the Exodus face numbering for general pyramids.
* Useful for writing sideset information.
*/
static const int pyramid_inverse_face_map[5];
/**
* @returns a conversion object given an element type name.
*/
ExodusII_IO_Helper::Conversion assign_conversion(const std::string type_str);
/**
* @returns a conversion object given an element type.
*/
ExodusII_IO_Helper::Conversion assign_conversion(const ElemType type);
};
} // namespace libMesh
#endif // LIBMESH_HAVE_EXODUS_API
#endif // #ifndef __exodusII_io_helper_h__
|