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

Go to the source code of this file.

Macros

#define IS_BUILDING_MB
 
#define CHKERR(A)
 

Functions

void dagmc_setup_test ()
 
void dagmc_point_in ()
 
int dagmc_point_in_vol_dir (double origin[3], double dir[3], int vol_idx)
 
void dagmc_point_in_vol_1 ()
 
void dagmc_point_in_vol_2 ()
 
void dagmc_point_in_vol_3 ()
 
void dagmc_point_in_vol_4 ()
 
void dagmc_point_in_vol_5 ()
 
void dagmc_point_in_vol_6 ()
 
void dagmc_point_on_corner_1 ()
 
void dagmc_point_on_corner_2 ()
 
void dagmc_point_on_corner_3 ()
 
void dagmc_point_on_corner_4 ()
 
void dagmc_point_on_corner_5 ()
 
void dagmc_point_on_corner_6 ()
 
void dagmc_point_on_corner_7 ()
 
void dagmc_point_on_corner_8 ()
 
int main (int, char **)
 

Variables

DagMC * DAG
 
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 18 of file dagmc_pointinvol_test.cpp.

◆ IS_BUILDING_MB

#define IS_BUILDING_MB

Definition at line 4 of file dagmc_pointinvol_test.cpp.

Function Documentation

◆ dagmc_point_in()

void dagmc_point_in ( )

Definition at line 46 of file dagmc_pointinvol_test.cpp.

47 {
48  int result = 0;
49  int expected_result = 1;
50  double xyz[3] = { 0.0, 0.0, 0.0 };
51  int vol_idx = 1;
52  EntityHandle vol_h = DAG->entity_by_index( 3, vol_idx );
53  ErrorCode rval = DAG->point_in_volume( vol_h, xyz, result );CHECK_ERR( rval );
54  CHECK_EQUAL( expected_result, result );
55 }

References CHECK_EQUAL, CHECK_ERR, DAG, and ErrorCode.

Referenced by main().

◆ dagmc_point_in_vol_1()

void dagmc_point_in_vol_1 ( )

Definition at line 84 of file dagmc_pointinvol_test.cpp.

85 {
86  double dir[3] = { -1.0, 0.0, 0.0 };
87  double origin[3] = { 0.0, 0.0, 0.0 };
88  int vol_idx = 1;
89  int expected_result = 1;
90 
91  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
92  CHECK_EQUAL( expected_result, result );
93 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

Referenced by main().

◆ dagmc_point_in_vol_2()

void dagmc_point_in_vol_2 ( )

Definition at line 95 of file dagmc_pointinvol_test.cpp.

96 {
97  int expected_result = 1;
98  int vol_idx = 1;
99  double dir[3] = { 1.0, 0.0, 0.0 };
100  double origin[3] = { 0.0, 0.0, 0.0 };
101 
102  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
103 
104  CHECK_EQUAL( expected_result, result );
105 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

Referenced by main().

◆ dagmc_point_in_vol_3()

void dagmc_point_in_vol_3 ( )

Definition at line 107 of file dagmc_pointinvol_test.cpp.

108 {
109  int expected_result = 1;
110  int vol_idx = 1;
111  double dir[3] = { 0.0, -1.0, 0.0 };
112  double origin[3] = { 0.0, 0.0, 0.0 };
113 
114  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
115 
116  CHECK_EQUAL( expected_result, result );
117 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

Referenced by main().

◆ dagmc_point_in_vol_4()

void dagmc_point_in_vol_4 ( )

Definition at line 119 of file dagmc_pointinvol_test.cpp.

120 {
121  int expected_result = 1;
122  int vol_idx = 1;
123  double dir[3] = { 0.0, 1.0, 0.0 };
124  double origin[3] = { 0.0, 0.0, 0.0 };
125 
126  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
127 
128  CHECK_EQUAL( expected_result, result );
129 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

Referenced by main().

◆ dagmc_point_in_vol_5()

void dagmc_point_in_vol_5 ( )

Definition at line 131 of file dagmc_pointinvol_test.cpp.

132 {
133  int expected_result = 1;
134  int vol_idx = 1;
135  double dir[3] = { 0.0, 0.0, -1.0 };
136  double origin[3] = { 0.0, 0.0, 0.0 };
137 
138  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
139 
140  CHECK_EQUAL( expected_result, result );
141 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

Referenced by main().

◆ dagmc_point_in_vol_6()

void dagmc_point_in_vol_6 ( )

Definition at line 143 of file dagmc_pointinvol_test.cpp.

144 {
145  int expected_result = 1;
146  int vol_idx = 1;
147  double dir[3] = { 0.0, 0.0, 1.0 };
148  double origin[3] = { 0.0, 0.0, 0.0 };
149 
150  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
151 
152  CHECK_EQUAL( expected_result, result );
153 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

Referenced by main().

◆ dagmc_point_in_vol_dir()

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

Definition at line 57 of file dagmc_pointinvol_test.cpp.

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

References CHECK_ERR, DAG, ErrorCode, and origin.

Referenced by dagmc_point_in_vol_1(), dagmc_point_in_vol_2(), dagmc_point_in_vol_3(), dagmc_point_in_vol_4(), dagmc_point_in_vol_5(), dagmc_point_in_vol_6(), dagmc_point_on_corner_1(), dagmc_point_on_corner_2(), dagmc_point_on_corner_3(), dagmc_point_on_corner_4(), dagmc_point_on_corner_5(), dagmc_point_on_corner_6(), dagmc_point_on_corner_7(), and dagmc_point_on_corner_8().

◆ dagmc_point_on_corner_1()

void dagmc_point_on_corner_1 ( )

Definition at line 155 of file dagmc_pointinvol_test.cpp.

156 {
157  int expected_result = 1;
158  int vol_idx = 1;
159  double dir[3] = { 1.0, 1.0, 1.0 };
160  double origin[3] = { 0.0, 0.0, 0.0 };
161 
162  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
163 
164  CHECK_EQUAL( expected_result, result );
165 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

Referenced by main().

◆ dagmc_point_on_corner_2()

void dagmc_point_on_corner_2 ( )

Definition at line 167 of file dagmc_pointinvol_test.cpp.

168 {
169  int expected_result = 1;
170  int vol_idx = 1;
171  double dir[3] = { -1.0, 1.0, 1.0 };
172  double origin[3] = { 0.0, 0.0, 0.0 };
173 
174  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
175 
176  CHECK_EQUAL( expected_result, result );
177 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

Referenced by main().

◆ dagmc_point_on_corner_3()

void dagmc_point_on_corner_3 ( )

Definition at line 179 of file dagmc_pointinvol_test.cpp.

180 {
181  int expected_result = 1;
182  int vol_idx = 1;
183  double dir[3] = { 1.0, 1.0, -1.0 };
184  double origin[3] = { 0.0, 0.0, 0.0 };
185 
186  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
187 
188  CHECK_EQUAL( expected_result, result );
189 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

Referenced by main().

◆ dagmc_point_on_corner_4()

void dagmc_point_on_corner_4 ( )

Definition at line 191 of file dagmc_pointinvol_test.cpp.

192 {
193  int expected_result = 1;
194  int vol_idx = 1;
195  double dir[3] = { -1.0, 1.0, -1.0 };
196  double origin[3] = { 0.0, 0.0, 0.0 };
197 
198  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
199 
200  CHECK_EQUAL( expected_result, result );
201 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

Referenced by main().

◆ dagmc_point_on_corner_5()

void dagmc_point_on_corner_5 ( )

Definition at line 203 of file dagmc_pointinvol_test.cpp.

204 {
205  int expected_result = 1;
206  int vol_idx = 1;
207  double dir[3] = { 1.0, -1.0, 1.0 };
208  double origin[3] = { 0.0, 0.0, 0.0 };
209 
210  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
211 
212  CHECK_EQUAL( expected_result, result );
213 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

◆ dagmc_point_on_corner_6()

void dagmc_point_on_corner_6 ( )

Definition at line 215 of file dagmc_pointinvol_test.cpp.

216 {
217  int expected_result = 1;
218  int vol_idx = 1;
219  double dir[3] = { -1.0, -1.0, 1.0 };
220  double origin[3] = { 0.0, 0.0, 0.0 };
221 
222  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
223 
224  CHECK_EQUAL( expected_result, result );
225 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

◆ dagmc_point_on_corner_7()

void dagmc_point_on_corner_7 ( )

Definition at line 227 of file dagmc_pointinvol_test.cpp.

228 {
229  int expected_result = 1;
230  int vol_idx = 1;
231  double dir[3] = { 1.0, -1.0, -1.0 };
232  double origin[3] = { 0.0, 0.0, 0.0 };
233 
234  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
235 
236  CHECK_EQUAL( expected_result, result );
237 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

◆ dagmc_point_on_corner_8()

void dagmc_point_on_corner_8 ( )

Definition at line 239 of file dagmc_pointinvol_test.cpp.

240 {
241  int expected_result = 1;
242  int vol_idx = 1;
243  double dir[3] = { -1.0, -1.0, -1.0 };
244  double origin[3] = { 0.0, 0.0, 0.0 };
245 
246  int result = dagmc_point_in_vol_dir( origin, dir, vol_idx );
247 
248  CHECK_EQUAL( expected_result, result );
249 }

References CHECK_EQUAL, dagmc_point_in_vol_dir(), and origin.

◆ dagmc_setup_test()

void dagmc_setup_test ( )

Definition at line 30 of file dagmc_pointinvol_test.cpp.

31 {
32  ErrorCode rval = DAG->load_file( input_file.c_str() ); // open the Dag file
33  CHECK_ERR( rval );
34  rval = DAG->init_OBBTree();CHECK_ERR( rval );
35 
36  /*
37  int num_vols = DAG->num_entities(3);
38  EntityHandle vol;
39  for (int i = 0; i < num_vols; i++)
40  vol = DAG->entity_by_index(3, i);
41  */
42  // EntityHandle volume = 12682136550675316765;
43  // CHECK_EQUAL(volume, vol);
44 }

References CHECK_ERR, DAG, ErrorCode, and input_file.

Referenced by main().

◆ main()

int main ( int  ,
char **   
)

Definition at line 251 of file dagmc_pointinvol_test.cpp.

252 {
253  int result = 0;
254 
255  DAG = new DagMC();
256 
257  result += RUN_TEST( dagmc_setup_test ); // setup problem
258  result += RUN_TEST( dagmc_point_in ); // point in centre
259  // rays fired along cardinal directions
260  result += RUN_TEST( dagmc_point_in_vol_1 ); // point in centre
261  result += RUN_TEST( dagmc_point_in_vol_2 ); // point in centre
262  result += RUN_TEST( dagmc_point_in_vol_3 ); // point in centre
263  result += RUN_TEST( dagmc_point_in_vol_4 ); // point in centre
264  result += RUN_TEST( dagmc_point_in_vol_5 ); // point in centre
265  result += RUN_TEST( dagmc_point_in_vol_6 ); // point in centre
266  // rays fired at nodes
267  result += RUN_TEST( dagmc_point_on_corner_1 );
268  result += RUN_TEST( dagmc_point_on_corner_2 );
269  result += RUN_TEST( dagmc_point_on_corner_3 );
270  result += RUN_TEST( dagmc_point_on_corner_4 );
271 
272  // result += RUN_TEST(dagmc_point_in({0.0, 0.0, 5.0}); // point in centre
273  // result += RUN_TEST(dagmc_point_in({0.0, 0.0, -5.0}); // point in centre
274  // result += RUN_TEST(dagmc_point_in({0.0, 5.0, 0.0}); // point in centre
275  // result += RUN_TEST(dagmc_point_in({0.0, -5.0, 0.0}); // point in centre
276  // result += RUN_TEST(dagmc_point_in({5.0, 0.0, 0.0}); // point in centre
277  // result += RUN_TEST(dagmc_point_in({-5.0, 0.0, 0.0}); // point in centre
278 
279  delete DAG;
280 
281  return result;
282 }

References DAG, dagmc_point_in(), dagmc_point_in_vol_1(), dagmc_point_in_vol_2(), dagmc_point_in_vol_3(), dagmc_point_in_vol_4(), dagmc_point_in_vol_5(), dagmc_point_in_vol_6(), dagmc_point_on_corner_1(), dagmc_point_on_corner_2(), dagmc_point_on_corner_3(), dagmc_point_on_corner_4(), dagmc_setup_test(), and RUN_TEST.

Variable Documentation

◆ DAG

DagMC* DAG

◆ input_file