PENELOPE 2003 - OECD Nuclear Energy Agency
PENELOPE 2003 - OECD Nuclear Energy Agency
PENELOPE 2003 - OECD Nuclear Energy Agency
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
168 Chapter 5. Constructive quadric geometry<br />
STEP displaces the particle and stops it at the end of the step, or just after entering<br />
a new material. The output value DSEF is the distance travelled within the initial<br />
material. If the particle enters a void region, STEP continues the particle track, as<br />
a straight segment, until it penetrates a material body or leaves the system (the<br />
path length through inner void regions is not included in DSEF). When the particle<br />
arrives from a void region (MAT = 0), it is stopped after entering the first material<br />
body. The output value MAT = 0 indicates that the particle has escaped from the<br />
system.<br />
◦ Input-output values (through COMMON/TRACK/):<br />
X, Y, Z: Input: coordinates of the initial position.<br />
Output: coordinates of the final position.<br />
U, V, W: Direction cosines of the displacement. They are kept unaltered.<br />
IBODY Input: initial body, i.e. the one that contains the initial position.<br />
Output: final body.<br />
MAT: Material in body IBODY (automatically changed when the particle crosses an<br />
interface).<br />
◦ Input argument:<br />
DS: Distance to travel (unaltered).<br />
◦ Output arguments:<br />
DSEF: Travelled path length before leaving the initial material or completing the<br />
jump (less than DS if the track crosses an interface).<br />
NCROSS: Number of interface crossings (=0 if the particle does not leave the initial<br />
material, greater than 0 if the particle enters a new material).<br />
For the handling and storage of geometric information we take advantage of the<br />
structure of the genealogical tree. It is assumed that an enclosure has been defined so<br />
that it is the only common ancestor for all bodies and modules. To understand the<br />
operation of the geometry routines, it is convenient to define a matrix FLAG(KB,KS) as<br />
follows (the indices KS and KB indicate the label of a surface and a body or module,<br />
respectively),<br />
FLAG(KB,KS) = 1, if KS is a limiting surface of KB and KB is inside KS (i.e. side<br />
pointer = −1).<br />
= 2, if KS is a limiting surface of KB and KB is outside KS (i.e. side<br />
pointer = +1).<br />
= 3, if KB is a body and KS does not directly limit KB, but appears<br />
in the definition of a body that limits KB.<br />
= 4, if KB is a module and KS limits one of its daughters (bodies and<br />
submodules), but does not appear in the definition of KB.<br />
= 5, otherwise.<br />
To locate a point we call subroutine LOCATE, where we proceed upwards in the<br />
genealogical tree of modules. If the point is outside the enclosure, we set MAT = 0 and<br />
return to the main program. Otherwise, we look for a module or body of the second<br />
generation that contains the point. If it exists, we continue analyzing its descendants