02.05.2014 Views

PENELOPE 2003 - OECD Nuclear Energy Agency

PENELOPE 2003 - OECD Nuclear Energy Agency

PENELOPE 2003 - OECD Nuclear Energy Agency

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!