MOAB: Mesh Oriented datABase  (version 5.5.0)
gqt_pointinvol_test.cpp File Reference
#include <iostream>
#include "moab/Interface.hpp"
#include "TestUtil.hpp"
#include "Internals.hpp"
#include "moab/Core.hpp"
#include "moab/GeomQueryTool.hpp"
#include "moab/GeomTopoTool.hpp"
+ Include dependency graph for gqt_pointinvol_test.cpp:

Go to the source code of this file.

Macros

#define IS_BUILDING_MB
 
#define CHKERR(A)
 

Functions

void gqt_setup_test ()
 
void gqt_point_in ()
 
int gqt_point_in_vol_dir (double origin[3], double dir[3], int vol_idx)
 
void gqt_point_in_vol_1 ()
 
void gqt_point_in_vol_2 ()
 
void gqt_point_in_vol_3 ()
 
void gqt_point_in_vol_4 ()
 
void gqt_point_in_vol_5 ()
 
void gqt_point_in_vol_6 ()
 
void gqt_point_on_corner_1 ()
 
void gqt_point_on_corner_2 ()
 
void gqt_point_on_corner_3 ()
 
void gqt_point_on_corner_4 ()
 
void gqt_point_on_corner_5 ()
 
void gqt_point_on_corner_6 ()
 
void gqt_point_on_corner_7 ()
 
void gqt_point_on_corner_8 ()
 
int main (int, char **)
 

Variables

CoreMBI
 
GeomTopoToolGTT
 
GeomQueryToolGQT
 
const std::string input_file = TestDir + "unittest/test_geom.h5m"
 

Macro Definition Documentation

◆ CHKERR

#define CHKERR (   A)
Value:
do \
{ \
if( MB_SUCCESS != ( A ) ) \
{ \
std::cerr << "Failure (error code " << ( A ) << ") at " __FILE__ ":" << __LINE__ << std::endl; \
return A; \
} \
} while( false )

Definition at line 19 of file gqt_pointinvol_test.cpp.

◆ IS_BUILDING_MB

#define IS_BUILDING_MB

Definition at line 4 of file gqt_pointinvol_test.cpp.

Function Documentation

◆ gqt_point_in()

void gqt_point_in ( )

Definition at line 41 of file gqt_pointinvol_test.cpp.

42 {
43  int result = 0;
44  int expected_result = 1;
45  double xyz[3] = { 0.0, 0.0, 0.0 };
46  int vol_idx = 1;
47  EntityHandle vol_h = GQT->gttool()->entity_by_id( 3, vol_idx );
48  ErrorCode rval = GQT->point_in_volume( vol_h, xyz, result );CHECK_ERR( rval );
49  CHECK_EQUAL( expected_result, result );
50 }

References CHECK_EQUAL, CHECK_ERR, moab::GeomTopoTool::entity_by_id(), ErrorCode, GQT, moab::GeomQueryTool::gttool(), and moab::GeomQueryTool::point_in_volume().

Referenced by main().

◆ gqt_point_in_vol_1()

void gqt_point_in_vol_1 ( )

Definition at line 79 of file gqt_pointinvol_test.cpp.

80 {
81  double dir[3] = { -1.0, 0.0, 0.0 };
82  double origin[3] = { 0.0, 0.0, 0.0 };
83  int vol_idx = 1;
84  int expected_result = 1;
85 
86  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
87  CHECK_EQUAL( expected_result, result );
88 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

Referenced by main().

◆ gqt_point_in_vol_2()

void gqt_point_in_vol_2 ( )

Definition at line 90 of file gqt_pointinvol_test.cpp.

91 {
92  int expected_result = 1;
93  int vol_idx = 1;
94  double dir[3] = { 1.0, 0.0, 0.0 };
95  double origin[3] = { 0.0, 0.0, 0.0 };
96 
97  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
98 
99  CHECK_EQUAL( expected_result, result );
100 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

Referenced by main().

◆ gqt_point_in_vol_3()

void gqt_point_in_vol_3 ( )

Definition at line 102 of file gqt_pointinvol_test.cpp.

103 {
104  int expected_result = 1;
105  int vol_idx = 1;
106  double dir[3] = { 0.0, -1.0, 0.0 };
107  double origin[3] = { 0.0, 0.0, 0.0 };
108 
109  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
110 
111  CHECK_EQUAL( expected_result, result );
112 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

Referenced by main().

◆ gqt_point_in_vol_4()

void gqt_point_in_vol_4 ( )

Definition at line 114 of file gqt_pointinvol_test.cpp.

115 {
116  int expected_result = 1;
117  int vol_idx = 1;
118  double dir[3] = { 0.0, 1.0, 0.0 };
119  double origin[3] = { 0.0, 0.0, 0.0 };
120 
121  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
122 
123  CHECK_EQUAL( expected_result, result );
124 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

Referenced by main().

◆ gqt_point_in_vol_5()

void gqt_point_in_vol_5 ( )

Definition at line 126 of file gqt_pointinvol_test.cpp.

127 {
128  int expected_result = 1;
129  int vol_idx = 1;
130  double dir[3] = { 0.0, 0.0, -1.0 };
131  double origin[3] = { 0.0, 0.0, 0.0 };
132 
133  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
134 
135  CHECK_EQUAL( expected_result, result );
136 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

Referenced by main().

◆ gqt_point_in_vol_6()

void gqt_point_in_vol_6 ( )

Definition at line 138 of file gqt_pointinvol_test.cpp.

139 {
140  int expected_result = 1;
141  int vol_idx = 1;
142  double dir[3] = { 0.0, 0.0, 1.0 };
143  double origin[3] = { 0.0, 0.0, 0.0 };
144 
145  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
146 
147  CHECK_EQUAL( expected_result, result );
148 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

Referenced by main().

◆ gqt_point_in_vol_dir()

int gqt_point_in_vol_dir ( double  origin[3],
double  dir[3],
int  vol_idx 
)

Definition at line 52 of file gqt_pointinvol_test.cpp.

53 {
54  int result = 0;
55  EntityHandle vol_h = GQT->gttool()->entity_by_id( 3, vol_idx );
56  double xyz[3];
57  double next_surf_dist;
58  EntityHandle next_surf;
59 
60  // normalise the vector
61  double dir_norm = ( dir[0] * dir[0] ) + ( dir[1] * dir[1] ) + ( dir[2] * dir[2] );
62 
63  dir[0] = dir[0] / sqrt( dir_norm );
64  dir[1] = dir[1] / sqrt( dir_norm );
65  dir[2] = dir[2] / sqrt( dir_norm );
66 
67  ErrorCode rval = GQT->ray_fire( vol_h, origin, dir, next_surf, next_surf_dist );CHECK_ERR( rval );
68 
69  xyz[0] = origin[0] + ( next_surf_dist * dir[0] );
70  xyz[1] = origin[1] + ( next_surf_dist * dir[1] );
71  xyz[2] = origin[2] + ( next_surf_dist * dir[2] );
72 
73  std::cout << xyz[0] << " " << xyz[1] << " " << xyz[2] << std::endl;
74 
75  rval = GQT->point_in_volume( vol_h, xyz, result, dir );CHECK_ERR( rval );
76  return result;
77 }

References CHECK_ERR, moab::GeomTopoTool::entity_by_id(), ErrorCode, GQT, moab::GeomQueryTool::gttool(), origin, moab::GeomQueryTool::point_in_volume(), and moab::GeomQueryTool::ray_fire().

Referenced by gqt_point_in_vol_1(), gqt_point_in_vol_2(), gqt_point_in_vol_3(), gqt_point_in_vol_4(), gqt_point_in_vol_5(), gqt_point_in_vol_6(), gqt_point_on_corner_1(), gqt_point_on_corner_2(), gqt_point_on_corner_3(), gqt_point_on_corner_4(), gqt_point_on_corner_5(), gqt_point_on_corner_6(), gqt_point_on_corner_7(), and gqt_point_on_corner_8().

◆ gqt_point_on_corner_1()

void gqt_point_on_corner_1 ( )

Definition at line 150 of file gqt_pointinvol_test.cpp.

151 {
152  int expected_result = 1;
153  int vol_idx = 1;
154  double dir[3] = { 1.0, 1.0, 1.0 };
155  double origin[3] = { 0.0, 0.0, 0.0 };
156 
157  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
158 
159  CHECK_EQUAL( expected_result, result );
160 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

Referenced by main().

◆ gqt_point_on_corner_2()

void gqt_point_on_corner_2 ( )

Definition at line 162 of file gqt_pointinvol_test.cpp.

163 {
164  int expected_result = 1;
165  int vol_idx = 1;
166  double dir[3] = { -1.0, 1.0, 1.0 };
167  double origin[3] = { 0.0, 0.0, 0.0 };
168 
169  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
170 
171  CHECK_EQUAL( expected_result, result );
172 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

Referenced by main().

◆ gqt_point_on_corner_3()

void gqt_point_on_corner_3 ( )

Definition at line 174 of file gqt_pointinvol_test.cpp.

175 {
176  int expected_result = 1;
177  int vol_idx = 1;
178  double dir[3] = { 1.0, 1.0, -1.0 };
179  double origin[3] = { 0.0, 0.0, 0.0 };
180 
181  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
182 
183  CHECK_EQUAL( expected_result, result );
184 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

Referenced by main().

◆ gqt_point_on_corner_4()

void gqt_point_on_corner_4 ( )

Definition at line 186 of file gqt_pointinvol_test.cpp.

187 {
188  int expected_result = 1;
189  int vol_idx = 1;
190  double dir[3] = { -1.0, 1.0, -1.0 };
191  double origin[3] = { 0.0, 0.0, 0.0 };
192 
193  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
194 
195  CHECK_EQUAL( expected_result, result );
196 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

Referenced by main().

◆ gqt_point_on_corner_5()

void gqt_point_on_corner_5 ( )

Definition at line 198 of file gqt_pointinvol_test.cpp.

199 {
200  int expected_result = 1;
201  int vol_idx = 1;
202  double dir[3] = { 1.0, -1.0, 1.0 };
203  double origin[3] = { 0.0, 0.0, 0.0 };
204 
205  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
206 
207  CHECK_EQUAL( expected_result, result );
208 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

◆ gqt_point_on_corner_6()

void gqt_point_on_corner_6 ( )

Definition at line 210 of file gqt_pointinvol_test.cpp.

211 {
212  int expected_result = 1;
213  int vol_idx = 1;
214  double dir[3] = { -1.0, -1.0, 1.0 };
215  double origin[3] = { 0.0, 0.0, 0.0 };
216 
217  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
218 
219  CHECK_EQUAL( expected_result, result );
220 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

◆ gqt_point_on_corner_7()

void gqt_point_on_corner_7 ( )

Definition at line 222 of file gqt_pointinvol_test.cpp.

223 {
224  int expected_result = 1;
225  int vol_idx = 1;
226  double dir[3] = { 1.0, -1.0, -1.0 };
227  double origin[3] = { 0.0, 0.0, 0.0 };
228 
229  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
230 
231  CHECK_EQUAL( expected_result, result );
232 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

◆ gqt_point_on_corner_8()

void gqt_point_on_corner_8 ( )

Definition at line 234 of file gqt_pointinvol_test.cpp.

235 {
236  int expected_result = 1;
237  int vol_idx = 1;
238  double dir[3] = { -1.0, -1.0, -1.0 };
239  double origin[3] = { 0.0, 0.0, 0.0 };
240 
241  int result = gqt_point_in_vol_dir( origin, dir, vol_idx );
242 
243  CHECK_EQUAL( expected_result, result );
244 }

References CHECK_EQUAL, gqt_point_in_vol_dir(), and origin.

◆ gqt_setup_test()

void gqt_setup_test ( )

Definition at line 31 of file gqt_pointinvol_test.cpp.

32 {
33  MBI = new Core();
34  ErrorCode rval = MBI->load_file( input_file.c_str() );CHECK_ERR( rval );
35 
36  GTT = new GeomTopoTool( MBI );
37  GQT = new GeomQueryTool( GTT );
38  rval = GQT->initialize();CHECK_ERR( rval );
39 }

References CHECK_ERR, ErrorCode, GQT, GTT, moab::GeomQueryTool::initialize(), input_file, moab::Core::load_file(), and MBI.

Referenced by main().

◆ main()

int main ( int  ,
char **   
)

Definition at line 246 of file gqt_pointinvol_test.cpp.

247 {
248  int result = 0;
249 
250  result += RUN_TEST( gqt_setup_test ); // setup problem
251  result += RUN_TEST( gqt_point_in ); // point in centre
252  // rays fired along cardinal directions
253  result += RUN_TEST( gqt_point_in_vol_1 ); // point in centre
254  result += RUN_TEST( gqt_point_in_vol_2 ); // point in centre
255  result += RUN_TEST( gqt_point_in_vol_3 ); // point in centre
256  result += RUN_TEST( gqt_point_in_vol_4 ); // point in centre
257  result += RUN_TEST( gqt_point_in_vol_5 ); // point in centre
258  result += RUN_TEST( gqt_point_in_vol_6 ); // point in centre
259  // rays fired at nodes
260  result += RUN_TEST( gqt_point_on_corner_1 );
261  result += RUN_TEST( gqt_point_on_corner_2 );
262  result += RUN_TEST( gqt_point_on_corner_3 );
263  result += RUN_TEST( gqt_point_on_corner_4 );
264 
265  // result += RUN_TEST(dagmc_point_in({0.0, 0.0, 5.0}); // point in centre
266  // result += RUN_TEST(dagmc_point_in({0.0, 0.0, -5.0}); // point in centre
267  // result += RUN_TEST(dagmc_point_in({0.0, 5.0, 0.0}); // point in centre
268  // result += RUN_TEST(dagmc_point_in({0.0, -5.0, 0.0}); // point in centre
269  // result += RUN_TEST(dagmc_point_in({5.0, 0.0, 0.0}); // point in centre
270  // result += RUN_TEST(dagmc_point_in({-5.0, 0.0, 0.0}); // point in centre
271 
272  delete GQT;
273  delete GTT;
274  delete MBI;
275 
276  return result;
277 }

References GQT, gqt_point_in(), gqt_point_in_vol_1(), gqt_point_in_vol_2(), gqt_point_in_vol_3(), gqt_point_in_vol_4(), gqt_point_in_vol_5(), gqt_point_in_vol_6(), gqt_point_on_corner_1(), gqt_point_on_corner_2(), gqt_point_on_corner_3(), gqt_point_on_corner_4(), gqt_setup_test(), GTT, MBI, and RUN_TEST.

Variable Documentation

◆ GQT

◆ GTT

Definition at line 16 of file gqt_pointinvol_test.cpp.

Referenced by gqt_setup_test(), and main().

◆ input_file

const std::string input_file = TestDir + "unittest/test_geom.h5m"

Definition at line 29 of file gqt_pointinvol_test.cpp.

Referenced by gqt_setup_test().

◆ MBI

Core* MBI

Definition at line 15 of file gqt_pointinvol_test.cpp.

Referenced by gqt_setup_test(), and main().