Introduction
Neutron transport Monte Carlo codes simulate the stochastic trajectories of particles through matter and therefore require an efficient, exact representation of the 3D geometry.
Several families of geometric engines have been developed for this purpose.
Boundary representation (B-Rep) and CAD-based engines describe solids through their bounding surfaces as imported from engineering models, at the cost of significant pre-processing and complex ray-surface intersection queries.
Unstructured mesh engines tessellate space into polyhedral cells, enabling faithful reproduction of arbitrary shapes but at the expense of large memory footprints and potential accuracy loss at curved boundaries.
Constructive Solid Geometry (CSG) engines, by contrast, represent any region of space as a Boolean combination — union, intersection, and complement — of half-spaces bounded by analytical surfaces (planes, quadrics, tori, …). This algebraic, combinatorial description is both compact and exact: locating a point or advancing a ray reduces to evaluating a logical expression over a small set of surface equations, making CSG the dominant approach in production-level neutronics codes such as MCNP, Serpent, OpenMC, or TRIPOLI-4.
M6Geo belongs to this family; it implements a CSG engine in which volumes are described through combinatories of oriented surfaces, extended with lattice replication and nesting operators to handle the highly periodic structures encountered in reactor cores.