@@ -90,30 +90,26 @@ class Surface {
90
90
// ! Get the BoundingBox for this surface.
91
91
virtual BoundingBox bounding_box (bool /* pos_side*/ ) const { return {}; }
92
92
93
- // Accessors
94
- const GeometryType& geom_type () const { return geom_type_; }
95
- GeometryType& geom_type () { return geom_type_; }
96
-
97
- private:
98
- GeometryType geom_type_; // !< Geometry type indicator (CSG or DAGMC)
93
+ /* Must specify if this is a CSG or DAGMC-type surface. Only
94
+ * the DAGMC surface should return the DAG type geometry, so
95
+ * by default, this returns the CSG. The main difference is that
96
+ * if the geom_type is found to be DAG in the geometry handling code,
97
+ * some DAGMC-specific operations get carried out like resetting
98
+ * the particle's intersection history when necessary.
99
+ */
100
+ virtual GeometryType geom_type () const { return GeometryType::CSG; }
99
101
100
102
protected:
101
103
virtual void to_hdf5_inner (hid_t group_id) const = 0;
102
104
};
103
105
104
- class CSGSurface : public Surface {
105
- public:
106
- explicit CSGSurface (pugi::xml_node surf_node);
107
- CSGSurface ();
108
- };
109
-
110
106
// ==============================================================================
111
107
// ! A plane perpendicular to the x-axis.
112
108
//
113
109
// ! The plane is described by the equation \f$x - x_0 = 0\f$
114
110
// ==============================================================================
115
111
116
- class SurfaceXPlane : public CSGSurface {
112
+ class SurfaceXPlane : public Surface {
117
113
public:
118
114
explicit SurfaceXPlane (pugi::xml_node surf_node);
119
115
double evaluate (Position r) const override ;
@@ -131,7 +127,7 @@ class SurfaceXPlane : public CSGSurface {
131
127
// ! The plane is described by the equation \f$y - y_0 = 0\f$
132
128
// ==============================================================================
133
129
134
- class SurfaceYPlane : public CSGSurface {
130
+ class SurfaceYPlane : public Surface {
135
131
public:
136
132
explicit SurfaceYPlane (pugi::xml_node surf_node);
137
133
double evaluate (Position r) const override ;
@@ -149,7 +145,7 @@ class SurfaceYPlane : public CSGSurface {
149
145
// ! The plane is described by the equation \f$z - z_0 = 0\f$
150
146
// ==============================================================================
151
147
152
- class SurfaceZPlane : public CSGSurface {
148
+ class SurfaceZPlane : public Surface {
153
149
public:
154
150
explicit SurfaceZPlane (pugi::xml_node surf_node);
155
151
double evaluate (Position r) const override ;
@@ -167,7 +163,7 @@ class SurfaceZPlane : public CSGSurface {
167
163
// ! The plane is described by the equation \f$A x + B y + C z - D = 0\f$
168
164
// ==============================================================================
169
165
170
- class SurfacePlane : public CSGSurface {
166
+ class SurfacePlane : public Surface {
171
167
public:
172
168
explicit SurfacePlane (pugi::xml_node surf_node);
173
169
double evaluate (Position r) const override ;
@@ -185,7 +181,7 @@ class SurfacePlane : public CSGSurface {
185
181
// ! \f$(y - y_0)^2 + (z - z_0)^2 - R^2 = 0\f$
186
182
// ==============================================================================
187
183
188
- class SurfaceXCylinder : public CSGSurface {
184
+ class SurfaceXCylinder : public Surface {
189
185
public:
190
186
explicit SurfaceXCylinder (pugi::xml_node surf_node);
191
187
double evaluate (Position r) const override ;
@@ -204,7 +200,7 @@ class SurfaceXCylinder : public CSGSurface {
204
200
// ! \f$(x - x_0)^2 + (z - z_0)^2 - R^2 = 0\f$
205
201
// ==============================================================================
206
202
207
- class SurfaceYCylinder : public CSGSurface {
203
+ class SurfaceYCylinder : public Surface {
208
204
public:
209
205
explicit SurfaceYCylinder (pugi::xml_node surf_node);
210
206
double evaluate (Position r) const override ;
@@ -223,7 +219,7 @@ class SurfaceYCylinder : public CSGSurface {
223
219
// ! \f$(x - x_0)^2 + (y - y_0)^2 - R^2 = 0\f$
224
220
// ==============================================================================
225
221
226
- class SurfaceZCylinder : public CSGSurface {
222
+ class SurfaceZCylinder : public Surface {
227
223
public:
228
224
explicit SurfaceZCylinder (pugi::xml_node surf_node);
229
225
double evaluate (Position r) const override ;
@@ -242,7 +238,7 @@ class SurfaceZCylinder : public CSGSurface {
242
238
// ! \f$(x - x_0)^2 + (y - y_0)^2 + (z - z_0)^2 - R^2 = 0\f$
243
239
// ==============================================================================
244
240
245
- class SurfaceSphere : public CSGSurface {
241
+ class SurfaceSphere : public Surface {
246
242
public:
247
243
explicit SurfaceSphere (pugi::xml_node surf_node);
248
244
double evaluate (Position r) const override ;
@@ -261,7 +257,7 @@ class SurfaceSphere : public CSGSurface {
261
257
// ! \f$(y - y_0)^2 + (z - z_0)^2 - R^2 (x - x_0)^2 = 0\f$
262
258
// ==============================================================================
263
259
264
- class SurfaceXCone : public CSGSurface {
260
+ class SurfaceXCone : public Surface {
265
261
public:
266
262
explicit SurfaceXCone (pugi::xml_node surf_node);
267
263
double evaluate (Position r) const override ;
@@ -279,7 +275,7 @@ class SurfaceXCone : public CSGSurface {
279
275
// ! \f$(x - x_0)^2 + (z - z_0)^2 - R^2 (y - y_0)^2 = 0\f$
280
276
// ==============================================================================
281
277
282
- class SurfaceYCone : public CSGSurface {
278
+ class SurfaceYCone : public Surface {
283
279
public:
284
280
explicit SurfaceYCone (pugi::xml_node surf_node);
285
281
double evaluate (Position r) const override ;
@@ -297,7 +293,7 @@ class SurfaceYCone : public CSGSurface {
297
293
// ! \f$(x - x_0)^2 + (y - y_0)^2 - R^2 (z - z_0)^2 = 0\f$
298
294
// ==============================================================================
299
295
300
- class SurfaceZCone : public CSGSurface {
296
+ class SurfaceZCone : public Surface {
301
297
public:
302
298
explicit SurfaceZCone (pugi::xml_node surf_node);
303
299
double evaluate (Position r) const override ;
@@ -315,7 +311,7 @@ class SurfaceZCone : public CSGSurface {
315
311
// ! 0\f$
316
312
// ==============================================================================
317
313
318
- class SurfaceQuadric : public CSGSurface {
314
+ class SurfaceQuadric : public Surface {
319
315
public:
320
316
explicit SurfaceQuadric (pugi::xml_node surf_node);
321
317
double evaluate (Position r) const override ;
@@ -333,7 +329,7 @@ class SurfaceQuadric : public CSGSurface {
333
329
// ! \f$(x-x_0)^2/B^2 + (\sqrt{(y-y_0)^2 + (z-z_0)^2} - A)^2/C^2 -1 \f$
334
330
// ==============================================================================
335
331
336
- class SurfaceXTorus : public CSGSurface {
332
+ class SurfaceXTorus : public Surface {
337
333
public:
338
334
explicit SurfaceXTorus (pugi::xml_node surf_node);
339
335
double evaluate (Position r) const override ;
@@ -350,7 +346,7 @@ class SurfaceXTorus : public CSGSurface {
350
346
// ! \f$(y-y_0)^2/B^2 + (\sqrt{(x-x_0)^2 + (z-z_0)^2} - A)^2/C^2 -1 \f$
351
347
// ==============================================================================
352
348
353
- class SurfaceYTorus : public CSGSurface {
349
+ class SurfaceYTorus : public Surface {
354
350
public:
355
351
explicit SurfaceYTorus (pugi::xml_node surf_node);
356
352
double evaluate (Position r) const override ;
@@ -367,7 +363,7 @@ class SurfaceYTorus : public CSGSurface {
367
363
// ! \f$(z-z_0)^2/B^2 + (\sqrt{(x-x_0)^2 + (y-y_0)^2} - A)^2/C^2 -1 \f$
368
364
// ==============================================================================
369
365
370
- class SurfaceZTorus : public CSGSurface {
366
+ class SurfaceZTorus : public Surface {
371
367
public:
372
368
explicit SurfaceZTorus (pugi::xml_node surf_node);
373
369
double evaluate (Position r) const override ;
0 commit comments