Loading [MathJax]/extensions/tex2jax.js
Mesh Oriented datABase  (version 5.5.1)
An array-based unstructured mesh library
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
WriteAns.hpp
Go to the documentation of this file.
1 /** 2  * MOAB, a Mesh-Oriented datABase, is a software component for creating, 3  * storing and accessing finite element mesh data. 4  * 5  * Copyright 2004 Sandia Corporation. Under the terms of Contract 6  * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government 7  * retains certain rights in this software. 8  * 9  * This library is free software; you can redistribute it and/or 10  * modify it under the terms of the GNU Lesser General Public 11  * License as published by the Free Software Foundation; either 12  * version 2.1 of the License, or (at your option) any later version. 13  * 14  */ 15  16 //------------------------------------------------------------------------- 17 // Filename : WriteTEMPLATE.hpp 18 // 19 // Purpose : ExodusII writer 20 // 21 // Special Notes : Lots of code taken from verde implementation 22 // 23 // Creator : Corey Ernst 24 // 25 // Date : 8/02 26 // 27 // Owner : Corey Ernst 28 //------------------------------------------------------------------------- 29  30 #ifndef WRITEANS_HPP 31 #define WRITEANS_HPP 32  33 #ifndef IS_BUILDING_MB 34 #error "WriteAns.hpp isn't supposed to be included into an application" 35 #endif 36  37 #include <string> 38  39 #include "moab/Forward.hpp" 40 #include "moab/Range.hpp" 41 #include "moab/ExoIIInterface.hpp" 42 #include "moab/WriterIface.hpp" 43  44 namespace moab 45 { 46  47 class WriteUtilIface; 48  49 class WriteAns : public WriterIface 50 { 51  52  public: 53  //! Constructor 54  WriteAns( Interface* impl ); 55  56  //! Destructor 57  virtual ~WriteAns(); 58  59  static WriterIface* factory( Interface* ); 60  61  //! writes out a file 62  ErrorCode write_file( const char* file_name, 63  const bool overwrite, 64  const FileOptions& opts, 65  const EntityHandle* output_list, 66  const int num_sets, 67  const std::vector< std::string >& qa_list, 68  const Tag* tag_list = NULL, 69  int num_tags = 0, 70  int export_dimension = 3 ); 71  72  //! struct used to hold data for each block to be output; used by 73  //! initialize_file to initialize the file header for increased speed 74  struct MaterialSetData 75  { 76  int id; 77  int number_elements; 78  int number_nodes_per_element; 79  int number_attributes; 80  ExoIIElementType element_type; 81  EntityType moab_type; 82  Range* elements; 83  }; 84  85  //! struct used to hold data for each nodeset to be output; used by 86  //! initialize_file to initialize the file header for increased speed 87  struct DirichletSetData 88  { 89  int id; 90  int number_nodes; 91  std::vector< EntityHandle > nodes; 92  std::vector< double > node_dist_factors; 93  }; 94  95  //! struct used to hold data for each sideset to be output; used by 96  //! initialize_file to initialize the file header for increased speed 97  struct NeumannSetData 98  { 99  int id; 100  int number_elements; 101  std::vector< EntityHandle > elements; 102  std::vector< int > side_numbers; 103  EntityHandle mesh_set_handle; 104  }; 105  106  protected: 107  //! number of dimensions in this file 108  // int number_dimensions(); 109  110  //! open a file for writing 111  // ErrorCode open_file(const char *filename); 112  113  //! contains the general information about a mesh 114  class MeshInfo 115  { 116  public: 117  unsigned int num_dim; 118  unsigned int num_nodes; 119  unsigned int num_elements; 120  unsigned int num_matsets; 121  unsigned int num_dirsets; 122  unsigned int num_neusets; 123  Range nodes; 124  125  MeshInfo() 126  : num_dim( 0 ), num_nodes( 0 ), num_elements( 0 ), num_matsets( 0 ), num_dirsets( 0 ), num_neusets( 0 ) 127  { 128  } 129  }; 130  131  private: 132  //! interface instance 133  Interface* mbImpl; 134  // WriteUtilIface* mWriteIface; 135  136  //! file name 137  std::string fileName; 138  139  //! Meshset Handle for the mesh that is currently being read 140  EntityHandle mCurrentMeshHandle; 141  142  //! Cached tags for reading. Note that all these tags are defined when the 143  //! core is initialized. 144  Tag mMaterialSetTag; 145  Tag mDirichletSetTag; 146  Tag mNeumannSetTag; 147  Tag mGlobalIdTag; 148  Tag mMatSetIdTag; 149  150  ErrorCode write_nodes( const int num_nodes, const Range& nodes, const int dimension, const char* file_name ); 151 }; 152  153 } // namespace moab 154  155 #endif