Mesh Oriented datABase
(version 5.6.0)
An array-based unstructured mesh library
honodes.cpp
Go to the documentation of this file.
1
#include <iostream>
2
#include <
moab/Core.hpp
>
3
#include "
moab/ProgOptions.hpp
"
4
5
using namespace
moab
;
6
using namespace
std;
7
const
char
BRIEF_DESC
[] =
"Add higher order nodes to existing mesh, eg. hex8 to hex27 (default). "
8
"Use available options as desired."
;
9
std::ostringstream
LONG_DESC
;
10
11
int
main
(
int
argc,
char
* argv[] )
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
}
tools
honodes.cpp
Generated on Wed Jun 3 2026 02:04:38 for Mesh Oriented datABase by
1.9.1.