Mesh Oriented datABase  (version 5.6.0)
An array-based unstructured mesh library
honodes.cpp File Reference
#include <iostream>
#include <moab/Core.hpp>
#include "moab/ProgOptions.hpp"
+ Include dependency graph for honodes.cpp:

Go to the source code of this file.

Functions

int main (int argc, char *argv[])
 

Variables

const char BRIEF_DESC []
 
std::ostringstream LONG_DESC
 

Function Documentation

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 11 of file honodes.cpp.

12 {
13  moab::Core* mb = new moab::Core();
14  bool edge = false;
15  bool face = false;
16  bool volume = false;
17 
18  LONG_DESC << "mbhonodes tool reads a mesh file and adds higher order nodes." << std::endl
19  << "Options to add higher order nodes on all volume or face or edge elements of the mesh "
20  "are supported"
21  << std::endl
22  << "Example1: Use the following command to create hex mid volume nodes, in.h5m is a hex8 "
23  "mesh"
24  << std::endl
25  << " -> mbhonodes -i in.h5m -o o.h5m -f -e" << std::endl
26  << "Example2: Use the following command to create hex27 mesh o2.h5m, in.h5m is a hex8 mesh" << std::endl
27  << " -> mbhonodes -i in.h5m -o o2.h5m" << std::endl;
28 
29  ProgOptions opts( LONG_DESC.str(), BRIEF_DESC );
30  string inFileName = "";
31  opts.addRequiredArg< string >( "inFile,i", "Specify the output file name string", &inFileName );
32 #ifdef MOAB_HAVE_HDF5
33  string outFileName = "outfile.h5m";
34 #else
35  string outFileName = "outfile.vtk";
36 #endif
37  opts.addOpt< string >( "outFile,o", "Specify the output file name string (default outfile.h5m)", &outFileName );
38  opts.addOpt< void >( "edge,e", "DO NOT create mid nodes along edge (default=true)", &edge );
39  opts.addOpt< void >( "face,f", "DO NOT create face mid nodes (default=true)", &face );
40  opts.addOpt< void >( "volume,v", "DO NOT create volume mid nodes (default=true)", &volume );
41 
42  opts.parseCommandLine( argc, argv );
43 
44  // load the input file
45  MB_CHK_SET_ERR( mb->load_mesh( inFileName.c_str() ), "Failed to write the mesh file" );
46  std::cout << "Read input mesh file: " << inFileName << std::endl;
47  moab::Range entities;
48  moab::EntityHandle meshset;
49 
50  MB_CHK_SET_ERR( mb->get_entities_by_type( 0, MBHEX, entities ), "Failed to get hex entities" );
51  MB_CHK_SET_ERR( mb->create_meshset( MESHSET_SET, meshset ), "Failed to create meshset" );
52  MB_CHK_SET_ERR( mb->add_entities( meshset, entities ), "Failed to add entitites to meshset" );
53 
54  MB_CHK_SET_ERR( mb->convert_entities( meshset, !edge, !face, !volume ),
55  "Failed to convert to higher dimension entities" );
56 
57  MB_CHK_SET_ERR( mb->write_mesh( outFileName.c_str() ), "Failed to write the mesh file" );
58  std::cout << "Wrote mesh file: " << outFileName << std::endl;
59  delete mb;
60 }

References moab::Core::add_entities(), ProgOptions::addOpt(), ProgOptions::addRequiredArg(), BRIEF_DESC, moab::Core::convert_entities(), moab::Core::create_meshset(), moab::Core::get_entities_by_type(), moab::Core::load_mesh(), LONG_DESC, mb, MB_CHK_SET_ERR, MBHEX, MESHSET_SET, ProgOptions::parseCommandLine(), and moab::Core::write_mesh().

Variable Documentation

◆ BRIEF_DESC

const char BRIEF_DESC[]
Initial value:
= "Add higher order nodes to existing mesh, eg. hex8 to hex27 (default). "
"Use available options as desired."

Definition at line 7 of file honodes.cpp.

Referenced by main().

◆ LONG_DESC

std::ostringstream LONG_DESC

Definition at line 9 of file honodes.cpp.

Referenced by main().