mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 13:45:36 -04:00
Addition of a collision tracking feature (#3417)
Co-authored-by: Paul Romano <paul.k.romano@gmail.com>
This commit is contained in:
parent
50bb0df191
commit
cd5cd35ad9
49 changed files with 2268 additions and 148 deletions
|
|
@ -756,6 +756,62 @@ instance, whereas the :meth:`openmc.Track.filter` method returns a new
|
|||
track_files = [f"tracks_p{rank}.h5" for rank in range(32)]
|
||||
openmc.Tracks.combine(track_files, "tracks.h5")
|
||||
|
||||
Collision Track File
|
||||
---------------------
|
||||
|
||||
OpenMC can generate a collision track file that contains detailed collision
|
||||
information (position, direction, energy, deposited energy, time, weight, cell
|
||||
ID, material ID, universe ID, nuclide ZAID, particle type, particle delayed
|
||||
group and particle ID) for each particle collision depending on user-defined
|
||||
parameters. To invoke this feature, set the
|
||||
:attr:`~openmc.Settings.collision_track` attribute as shown in this example::
|
||||
|
||||
settings.collision_track = {
|
||||
"max_collisions": 300,
|
||||
"reactions": ["(n,fission)", "(n,2n)"],
|
||||
"material_ids": [1,2],
|
||||
"nuclides": ["U238", "O16"],
|
||||
"cell_ids": [5, 12]
|
||||
}
|
||||
|
||||
In this example, collision track information is written to the
|
||||
collision_track.h5 file at the end of the simulation. The file contains
|
||||
300 recorded collisions that occurred in materials with IDs 1 or 2, involving
|
||||
fission or (n,2n) reactions on the nuclides U-238 or O-16, within cells
|
||||
with IDs 5 and 12.
|
||||
The file can be read using :func:`openmc.read_collision_track_file`.
|
||||
The example below shows how to extract the data from the collision_track
|
||||
feature and displays the fields stored in the file:
|
||||
|
||||
>>> data = openmc.read_collision_track_file('collision_track.h5')
|
||||
>>> data.dtype
|
||||
dtype([('r', [('x', '<f8'), ('y', '<f8'), ('z', '<f8')]),
|
||||
('u', [('x', '<f8'), ('y', '<f8'), ('z', '<f8')]), ('E', '<f8'),
|
||||
('dE', '<f8'), ('time', '<f8'), ('wgt', '<f8'), ('event_mt', '<i4'),
|
||||
('delayed_group', '<i4'), ('cell_id', '<i4'), ('nuclide_id', '<i4'),
|
||||
('material_id', '<i4'), ('universe_id', '<i4'), ('n_collision', '<i4'),
|
||||
('particle', '<i4'), ('parent_id', '<i8'), ('progeny_id', '<i8')])
|
||||
|
||||
|
||||
The full list of fields is as follows:
|
||||
|
||||
:r: Position (each direction in [cm])
|
||||
:u: Direction
|
||||
:E: Energy in [eV]
|
||||
:dE: Energy deposited during collision in [eV]
|
||||
:time: Time in [s]
|
||||
:wgt: Weight of the particle
|
||||
:event_mt: Reaction MT number
|
||||
:delayed_group: Delayed group of the particle
|
||||
:cell_id: Cell ID
|
||||
:nuclide_id: Nuclide ID (10000×Z + 10×A + M)
|
||||
:material_id: Material ID
|
||||
:universe_id: Universe ID
|
||||
:n_collision: Number of collision suffered by the particle
|
||||
:particle: Particle type
|
||||
:parent_id: Source particle ID
|
||||
:progeny_id: Progeny ID
|
||||
|
||||
-----------------------
|
||||
Restarting a Simulation
|
||||
-----------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue