From ea6ba328c9960a9e1b1cc85ab3b4f1ddd91ed3a1 Mon Sep 17 00:00:00 2001 From: Patrick Shriwise Date: Mon, 8 Jun 2026 18:37:34 -0500 Subject: [PATCH] Fix collision track feature for photon transport (#3946) Co-authored-by: Paul Romano --- docs/source/io_formats/collision_track.rst | 4 +- docs/source/io_formats/settings.rst | 31 +++--- docs/source/usersguide/settings.rst | 5 + include/openmc/constants.h | 2 +- include/openmc/nuclide.h | 3 + src/collision_track.cpp | 12 ++- .../case_1_Reactions/collision_track_true.h5 | Bin 0 -> 2960 bytes .../case_1_Reactions/inputs_true.dat | 6 +- .../case_1_Reactions/results_true.dat | 2 - .../case_2_Cell_ID/collision_track_true.h5 | Bin 0 -> 9744 bytes .../case_2_Cell_ID/inputs_true.dat | 6 +- .../case_2_Cell_ID/results_true.dat | 2 - .../collision_track_true.h5 | Bin 0 -> 9744 bytes .../case_3_Material_ID/inputs_true.dat | 6 +- .../case_3_Material_ID/results_true.dat | 2 - .../case_4_Nuclide_ID/collision_track_true.h5 | Bin 0 -> 9232 bytes .../case_4_Nuclide_ID/inputs_true.dat | 6 +- .../case_4_Nuclide_ID/results_true.dat | 2 - .../collision_track_true.h5 | Bin 0 -> 9744 bytes .../case_5_Universe_ID/inputs_true.dat | 6 +- .../case_5_Universe_ID/results_true.dat | 2 - .../collision_track_true.h5 | Bin 0 -> 6160 bytes .../inputs_true.dat | 6 +- .../results_true.dat | 2 - .../collision_track_true.h5 | Bin 0 -> 6032 bytes .../inputs_true.dat | 6 +- .../results_true.dat | 2 - .../case_8_2threads/inputs_true.dat | 57 ---------- .../case_8_2threads/results_true.dat | 2 - .../regression_tests/collision_track/test.py | 51 ++------- tests/testing_harness.py | 97 +++++++++++------- tests/unit_tests/test_collision_track.py | 43 +++++++- 32 files changed, 167 insertions(+), 196 deletions(-) create mode 100644 tests/regression_tests/collision_track/case_1_Reactions/collision_track_true.h5 delete mode 100644 tests/regression_tests/collision_track/case_1_Reactions/results_true.dat create mode 100644 tests/regression_tests/collision_track/case_2_Cell_ID/collision_track_true.h5 delete mode 100644 tests/regression_tests/collision_track/case_2_Cell_ID/results_true.dat create mode 100644 tests/regression_tests/collision_track/case_3_Material_ID/collision_track_true.h5 delete mode 100644 tests/regression_tests/collision_track/case_3_Material_ID/results_true.dat create mode 100644 tests/regression_tests/collision_track/case_4_Nuclide_ID/collision_track_true.h5 delete mode 100644 tests/regression_tests/collision_track/case_4_Nuclide_ID/results_true.dat create mode 100644 tests/regression_tests/collision_track/case_5_Universe_ID/collision_track_true.h5 delete mode 100644 tests/regression_tests/collision_track/case_5_Universe_ID/results_true.dat create mode 100644 tests/regression_tests/collision_track/case_6_deposited_energy_threshold/collision_track_true.h5 delete mode 100644 tests/regression_tests/collision_track/case_6_deposited_energy_threshold/results_true.dat create mode 100644 tests/regression_tests/collision_track/case_7_all_parameters_used_together/collision_track_true.h5 delete mode 100644 tests/regression_tests/collision_track/case_7_all_parameters_used_together/results_true.dat delete mode 100644 tests/regression_tests/collision_track/case_8_2threads/inputs_true.dat delete mode 100644 tests/regression_tests/collision_track/case_8_2threads/results_true.dat diff --git a/docs/source/io_formats/collision_track.rst b/docs/source/io_formats/collision_track.rst index 8e1e00ffb..4123fdac6 100644 --- a/docs/source/io_formats/collision_track.rst +++ b/docs/source/io_formats/collision_track.rst @@ -10,7 +10,7 @@ may also be written after each batch when multiple files are requested (``collision_track.N.h5``) or when the run is performed in parallel. The file contains the information needed to reconstruct each recorded collision. -The current revision of the collision track file format is 1.1. +The current revision of the collision track file format is 1.2. **/** @@ -33,7 +33,7 @@ The current revision of the collision track file format is 1.1. - ``event_mt`` (*int*) -- ENDF MT number identifying the reaction. - ``delayed_group`` (*int*) -- Delayed neutron group index (non-zero for delayed events). - ``cell_id`` (*int*) -- ID of the cell in which the collision occurred. - - ``nuclide_id`` (*int*) -- ZA identifier of the nuclide (ZZZAAAM format). + - ``nuclide_id`` (*int*) -- PDG number of the nuclide (100ZZZAAAM). - ``material_id`` (*int*) -- ID of the material containing the collision site. - ``universe_id`` (*int*) -- ID of the universe containing the collision site. - ``n_collision`` (*int*) -- Collision counter for the particle history. diff --git a/docs/source/io_formats/settings.rst b/docs/source/io_formats/settings.rst index 1a436a75e..fb0215916 100644 --- a/docs/source/io_formats/settings.rst +++ b/docs/source/io_formats/settings.rst @@ -98,6 +98,11 @@ sub-elements: A list of strings representing the nuclide, to define specific define specific target nuclide collisions to be banked. + .. note:: + Electron and positron collision-track events are not associated with + a specific nuclide. If a ``nuclides`` entry is specified, these events + are omitted. + *Default*: None :reactions: @@ -606,30 +611,30 @@ found in the :ref:`random ray user guide `. *Default*: None :adjoint_source: - Specifies an adjoint fixed source for adjoint transport simulations, and - follows the format for :ref:`source_element`. The distributions which make - up the adjoint source are subject to the same restrictions as forward + Specifies an adjoint fixed source for adjoint transport simulations, and + follows the format for :ref:`source_element`. The distributions which make + up the adjoint source are subject to the same restrictions as forward fixed sources in Random Ray mode. *Default*: None - + :adjoint: - Specifies whether to perform adjoint transport. The default is 'False', + Specifies whether to perform adjoint transport. The default is 'False', corresponding to forward transport. *Default*: None - + :volume_estimator: - Specifies choice of volume estimator for the random ray solver. Options + Specifies choice of volume estimator for the random ray solver. Options are 'naive', 'simulation_averaged', or 'hybrid'. The default is 'hybrid'. *Default*: None :volume_normalized_flux_tallies: - Specifies whether to normalize flux tallies by volume (bool). The - default is 'False'. When enabled, flux tallies will be reported in units - of cm/cm^3. When disabled, flux tallies will be reported in units of cm - (i.e., total distance traveled by neutrons in the spatial tally + Specifies whether to normalize flux tallies by volume (bool). The + default is 'False'. When enabled, flux tallies will be reported in units + of cm/cm^3. When disabled, flux tallies will be reported in units of cm + (i.e., total distance traveled by neutrons in the spatial tally region). *Default*: None @@ -1757,11 +1762,11 @@ mesh-based weight windows. The ratio of the lower to upper weight window bounds. *Default*: 5.0 - + For FW-CADIS: :targets: - A sequence of IDs corresponding to the tallies which cover phase + A sequence of IDs corresponding to the tallies which cover phase space regions of interest for local variance reduction. *Default*: None diff --git a/docs/source/usersguide/settings.rst b/docs/source/usersguide/settings.rst index 8ac07f3c8..e8514b856 100644 --- a/docs/source/usersguide/settings.rst +++ b/docs/source/usersguide/settings.rst @@ -792,6 +792,11 @@ 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. + +.. note:: + Electron and positron collision-track events are not associated with a + specific nuclide. If a ``nuclides`` entry is specified, these events are omitted. + 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: diff --git a/include/openmc/constants.h b/include/openmc/constants.h index 0b425a673..7baed25c5 100644 --- a/include/openmc/constants.h +++ b/include/openmc/constants.h @@ -35,7 +35,7 @@ constexpr array VERSION_VOXEL {2, 0}; constexpr array VERSION_MGXS_LIBRARY {1, 0}; constexpr array VERSION_PROPERTIES {1, 1}; constexpr array VERSION_WEIGHT_WINDOWS {1, 0}; -constexpr array VERSION_COLLISION_TRACK {1, 1}; +constexpr array VERSION_COLLISION_TRACK {1, 2}; // ============================================================================ // ADJUSTABLE PARAMETERS diff --git a/include/openmc/nuclide.h b/include/openmc/nuclide.h index 7a8b2acad..ae39a53dd 100644 --- a/include/openmc/nuclide.h +++ b/include/openmc/nuclide.h @@ -84,6 +84,9 @@ public: double collapse_rate(int MT, double temperature, span energy, span flux) const; + //! Return a ParticleType object representing this nuclide + ParticleType particle_type() const { return {Z_, A_, metastable_}; } + //============================================================================ // Data members std::string name_; //!< Name of nuclide, e.g. "U235" diff --git a/src/collision_track.cpp b/src/collision_track.cpp index 03cbc32b7..2e749007f 100644 --- a/src/collision_track.cpp +++ b/src/collision_track.cpp @@ -200,8 +200,13 @@ void collision_track_record(Particle& particle) return; int cell_id = model::cells[cell_index]->id_; - const auto* nuclide_ptr = data::nuclides[particle.event_nuclide()].get(); - std::string nuclide = nuclide_ptr->name_; + std::string nuclide {}; + int nuclide_id = 0; + if (particle.event_nuclide() != NUCLIDE_NONE) { + const auto* nuclide_ptr = data::nuclides[particle.event_nuclide()].get(); + nuclide = nuclide_ptr->name_; + nuclide_id = nuclide_ptr->particle_type().pdg_number(); + } int universe_id = model::universes[particle.lowest_coord().universe()]->id_; double delta_E = particle.E_last() - particle.E(); int material_index = particle.material(); @@ -224,8 +229,7 @@ void collision_track_record(Particle& particle) site.event_mt = particle.event_mt(); site.delayed_group = particle.delayed_group(); site.cell_id = cell_id; - site.nuclide_id = - 10000 * nuclide_ptr->Z_ + 10 * nuclide_ptr->A_ + nuclide_ptr->metastable_; + site.nuclide_id = nuclide_id; site.material_id = material_id; site.universe_id = universe_id; site.n_collision = particle.n_collision(); diff --git a/tests/regression_tests/collision_track/case_1_Reactions/collision_track_true.h5 b/tests/regression_tests/collision_track/case_1_Reactions/collision_track_true.h5 new file mode 100644 index 0000000000000000000000000000000000000000..c315462134217a7b6f4f23b5831d8097fe92d024 GIT binary patch literal 2960 zcmeHJ&1(};5PzEw*tV%nDnxBB!Gm6UP^efeWFvGXDr#vX7OJFiv&L;Uo3P!)MlXU0 z6+A>i1hFV0*grrJK~0PxMJl58AS&oVdb3sVB$fC+<4dw>yo!BccjnFfelzcLvX{a` z`#Rfu+5u{!2wcF6RradTR_GuW)@S|+st8ohP&wxyiU1=b-)3s}()a-+-)^fv~)H7)^ML&N@KlJUwT$3zW33Yg1a_(_`!H4Co8yE0^5QYkn>w&i;r@+rcK& zMB1%SoRSBcaG2SSYiTKb=0gnBMA~uBBrJ>$H{md|9aqh%h80bb01$|a10&c-{$9mZ zJ(gGF(S(`KW*|0VgXc{=S5b96s>Q2yh{y3d&oQ!!uEkYE!|gZ^w9$EPDrTvs7Q;Ca zbixMDn|N;4&`?>aCZ_3mc#Y0;jcB!EVa(|oWMhZtW@4tLDLOtE2&p&1Yb6nRs`NJZ=W1J zd}K&~5y)5oDADhmwZ^{gYg~b?pLcy-{PevTf0y)4b^esjeH(vr@M2k-k<0J*tlX6j zl&;)5`f|CbZR*+L+xA)#pFTcz^Zo;gMbhpCl@sN~AnSKi#Si83$GJhYUx(o1gHH%< zRv(n8q5o>sR-U~YAC*_7!j0k5{PRb}or7aJSMLw$!sWin7nPFqW>vX9a%ZV{^+V*^ k!tN#M%fxK%S8$=4f7a=K80dQ2GC#_P^7rDb0BoT0Hw#|g3IG5A literal 0 HcmV?d00001 diff --git a/tests/regression_tests/collision_track/case_1_Reactions/inputs_true.dat b/tests/regression_tests/collision_track/case_1_Reactions/inputs_true.dat index 7533616c0..005a56020 100644 --- a/tests/regression_tests/collision_track/case_1_Reactions/inputs_true.dat +++ b/tests/regression_tests/collision_track/case_1_Reactions/inputs_true.dat @@ -38,9 +38,9 @@ eigenvalue - 100 + 80 5 - 1 + 4 -2.0 -2.0 -2.0 2.0 2.0 2.0 @@ -51,7 +51,7 @@ (n,fission) 101 - 300 + 100 1 diff --git a/tests/regression_tests/collision_track/case_1_Reactions/results_true.dat b/tests/regression_tests/collision_track/case_1_Reactions/results_true.dat deleted file mode 100644 index d4d1d1e5a..000000000 --- a/tests/regression_tests/collision_track/case_1_Reactions/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -5.642735E-02 1.494035E-02 diff --git a/tests/regression_tests/collision_track/case_2_Cell_ID/collision_track_true.h5 b/tests/regression_tests/collision_track/case_2_Cell_ID/collision_track_true.h5 new file mode 100644 index 0000000000000000000000000000000000000000..850bba8415ef0534522e94487a08473e1fae182b GIT binary patch literal 9744 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 E1#}!hp#T5? literal 0 HcmV?d00001 diff --git a/tests/regression_tests/collision_track/case_2_Cell_ID/inputs_true.dat b/tests/regression_tests/collision_track/case_2_Cell_ID/inputs_true.dat index 55fb835de..8d46c3d3b 100644 --- a/tests/regression_tests/collision_track/case_2_Cell_ID/inputs_true.dat +++ b/tests/regression_tests/collision_track/case_2_Cell_ID/inputs_true.dat @@ -38,9 +38,9 @@ eigenvalue - 100 + 80 5 - 1 + 4 -2.0 -2.0 -2.0 2.0 2.0 2.0 @@ -51,7 +51,7 @@ 22 - 300 + 100 1 diff --git a/tests/regression_tests/collision_track/case_2_Cell_ID/results_true.dat b/tests/regression_tests/collision_track/case_2_Cell_ID/results_true.dat deleted file mode 100644 index d4d1d1e5a..000000000 --- a/tests/regression_tests/collision_track/case_2_Cell_ID/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -5.642735E-02 1.494035E-02 diff --git a/tests/regression_tests/collision_track/case_3_Material_ID/collision_track_true.h5 b/tests/regression_tests/collision_track/case_3_Material_ID/collision_track_true.h5 new file mode 100644 index 0000000000000000000000000000000000000000..777d91f088810687d7762eaba930c31b7caffe2a GIT binary patch literal 9744 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 w>p+y eigenvalue - 100 + 80 5 - 1 + 4 -2.0 -2.0 -2.0 2.0 2.0 2.0 @@ -51,7 +51,7 @@ 1 - 300 + 100 1 diff --git a/tests/regression_tests/collision_track/case_3_Material_ID/results_true.dat b/tests/regression_tests/collision_track/case_3_Material_ID/results_true.dat deleted file mode 100644 index d4d1d1e5a..000000000 --- a/tests/regression_tests/collision_track/case_3_Material_ID/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -5.642735E-02 1.494035E-02 diff --git a/tests/regression_tests/collision_track/case_4_Nuclide_ID/collision_track_true.h5 b/tests/regression_tests/collision_track/case_4_Nuclide_ID/collision_track_true.h5 new file mode 100644 index 0000000000000000000000000000000000000000..527705297feba53a95173def72577be38f8954f8 GIT binary patch literal 9232 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 N=I?(5e+d%)zX2?eSMmS= literal 0 HcmV?d00001 diff --git a/tests/regression_tests/collision_track/case_4_Nuclide_ID/inputs_true.dat b/tests/regression_tests/collision_track/case_4_Nuclide_ID/inputs_true.dat index 8960dde5c..6202bcacc 100644 --- a/tests/regression_tests/collision_track/case_4_Nuclide_ID/inputs_true.dat +++ b/tests/regression_tests/collision_track/case_4_Nuclide_ID/inputs_true.dat @@ -38,9 +38,9 @@ eigenvalue - 100 + 80 5 - 1 + 4 -2.0 -2.0 -2.0 2.0 2.0 2.0 @@ -51,7 +51,7 @@ O16 U235 - 300 + 100 1 diff --git a/tests/regression_tests/collision_track/case_4_Nuclide_ID/results_true.dat b/tests/regression_tests/collision_track/case_4_Nuclide_ID/results_true.dat deleted file mode 100644 index d4d1d1e5a..000000000 --- a/tests/regression_tests/collision_track/case_4_Nuclide_ID/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -5.642735E-02 1.494035E-02 diff --git a/tests/regression_tests/collision_track/case_5_Universe_ID/collision_track_true.h5 b/tests/regression_tests/collision_track/case_5_Universe_ID/collision_track_true.h5 new file mode 100644 index 0000000000000000000000000000000000000000..65419d5ead9739ee3000454f40eeafe20497d129 GIT binary patch literal 9744 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 eigenvalue - 100 + 80 5 - 1 + 4 -2.0 -2.0 -2.0 2.0 2.0 2.0 @@ -52,7 +52,7 @@ 22 77 - 300 + 100 1 diff --git a/tests/regression_tests/collision_track/case_5_Universe_ID/results_true.dat b/tests/regression_tests/collision_track/case_5_Universe_ID/results_true.dat deleted file mode 100644 index d4d1d1e5a..000000000 --- a/tests/regression_tests/collision_track/case_5_Universe_ID/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -5.642735E-02 1.494035E-02 diff --git a/tests/regression_tests/collision_track/case_6_deposited_energy_threshold/collision_track_true.h5 b/tests/regression_tests/collision_track/case_6_deposited_energy_threshold/collision_track_true.h5 new file mode 100644 index 0000000000000000000000000000000000000000..507665a60fdac4d894511918d0492b9509172c8e GIT binary patch literal 6160 zcmeHKc|4U_AAc^cu7)Bdv}qI?`&x+eoDe3W)Fd?_Zd}XND@zo~v}&0q&CoIvm8rBZ zS`5xjs!5VHrA-N0(?+(u&vWndm^%+%-ap^ZJLi7x{hf1u%lG_#=XZYR-0cpwbLB>= zj>O2u;b2mjys%6E^ioY;Su{hBX}%ZLVNrA&MNdeGIxNB>$)nT>>mvJVk|KVJh+vBr z+Sy@*ByFFj6dQAp5%oCq#6R@^Dgq96(3N!9o$^|ZqJL6(Mh!8akf0#m8eRzBGc45G zC(v`HH$RZ%(fK)x791v3pz@WO*Rq(%5(|^TIK*caFNhl!wVF$tRU|s2i7$=ISQjRX z;X+Xsp({(AjtFijxoS+FNN_13M@__Mi7e1=(v+Mf`z(wt#8}G~iW7a&Nn=rZ6GYP( zO(ijTHmR#b9K$$*hEn{Yh!SyLNy}@85~TPFYJl*JY&d4}6=u>)=toh!q0aC?y3v&G z->VZfDMkj;4X5~`$cPCuy8p{Q62(*43>ZE!hXcjOmr|a^6lRPE(hcJU3v(W4$TEim z=|=j63B??k!i@1iy4(mZKg=^&WPp$t76*o&_)z>@`ErB2qqx4FexV`Zs|le+;(`P8 z#dUqSK|!88-@ZCDfVgl53F^B{b@i@AEP){X_xa0{1z>8^ihACMEOc!*%S5mF723M# zo0ax^FM8($jKcJMT-P??e%8+gJsQmTGkCCa?V)vSnwZL;;a+{x5397QbG=074R_PM#W!$ifXQ{=pAvm4sG!FIM=OZ0F$CUGVNOQ z;K|CV+hcAm=)`#T5?`w1@FRQjo^b8k&{)~M4FTHKU`@ss zqssd=$Z;YoKP}`YIG?j;;kNo(WMBDO{dxFwxIw~VY0XA;cCpw+d{Cjy0Kth)E{7$XW9L$3N^@PiAwb2!?i&6x0W2K%|&QL z;@L%4lPT6v+jiqy2L0yT|@@WZV|HhQFy6joI#jEgXFtJ^2{X`gl|=YBjTXu5-@>rX^@7J&iSnBYhV=a}S)= zhfmubEdRa{cb@3K*V&Z4?(#e2s-h#WzKtc2U2Dg8I@k!HxslYDefQ9|(+0dko!h`| zWqb1Pf)?Q9^@Z0GGY9UQ-pbd@w}#)1d+6-~jfagtkAc53WM;-`cS%8k{dt4TRaM~U zF73!k=?y4p;!eKx;bJuYlef9Ujuxc&;0+k#nvFWA##x&*xWY$LcIT3GZJ?okNvvCh z=CJWq82CmB??xT{7aQMq&8phar7E+N=eK za&Lg>J=(G#_Tw-%*5b{+w-(ST`jq=A34>wd|LsyC)-rom)WL7<Ib_4o8*X;C-(Cf%NHsWBavlZm$@lO?BG=zo@S-pvm zP5a>wcK(?DpUm>oZ&Uk>4!r(-@dvqj@WxKr({+3YICxj%c9Q-xge@<-*LkHFa9nG5 zNGLR-tjM{Nq5Hpu^2xeI@ln%Z_U)Jp>nhFq;gjb~P4ZB``m4@}e}Rpk=H%=maG)em z`v$uh1zRC+A2Q@z%!`=32W%5uP zy1&#a@$xnr(tq*}BJ2Ms8knLJ7MDDcHDe3(iu2AkpYKBFrB<*cnlzI=dQC+(-G4tIAi=Mf36c zk1Xm?=k4k8n;ul7n*}K)(4kK=9Y{;?jZ}z&~oT;q01b^rrhMN0nU;O5Kf= zWY;;sJfjrlFYl&7pT^D|zQ(Yh|IGR$P2iIIPy5fN)}i=O+CA=Q4_I=kt>(3A8E~4q zeX>`mB(4|sL_6qIA~+#&ZsV@fX3%!|1xH4+qA&jo?dy&l-);#N*J!!8YYspECo eigenvalue - 100 + 80 5 - 1 + 4 -2.0 -2.0 -2.0 2.0 2.0 2.0 @@ -51,7 +51,7 @@ 550000.0 - 300 + 100 1 diff --git a/tests/regression_tests/collision_track/case_6_deposited_energy_threshold/results_true.dat b/tests/regression_tests/collision_track/case_6_deposited_energy_threshold/results_true.dat deleted file mode 100644 index d4d1d1e5a..000000000 --- a/tests/regression_tests/collision_track/case_6_deposited_energy_threshold/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -5.642735E-02 1.494035E-02 diff --git a/tests/regression_tests/collision_track/case_7_all_parameters_used_together/collision_track_true.h5 b/tests/regression_tests/collision_track/case_7_all_parameters_used_together/collision_track_true.h5 new file mode 100644 index 0000000000000000000000000000000000000000..b7ff67c48e1c0261d34de2a9a61179e569671da2 GIT binary patch literal 6032 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 literal 0 HcmV?d00001 diff --git a/tests/regression_tests/collision_track/case_7_all_parameters_used_together/inputs_true.dat b/tests/regression_tests/collision_track/case_7_all_parameters_used_together/inputs_true.dat index 005d9feb2..1449c3596 100644 --- a/tests/regression_tests/collision_track/case_7_all_parameters_used_together/inputs_true.dat +++ b/tests/regression_tests/collision_track/case_7_all_parameters_used_together/inputs_true.dat @@ -38,9 +38,9 @@ eigenvalue - 100 + 80 5 - 1 + 4 -2.0 -2.0 -2.0 2.0 2.0 2.0 @@ -56,7 +56,7 @@ 1 11 U238 U235 H1 U234 100000.0 - 300 + 100 1 diff --git a/tests/regression_tests/collision_track/case_7_all_parameters_used_together/results_true.dat b/tests/regression_tests/collision_track/case_7_all_parameters_used_together/results_true.dat deleted file mode 100644 index d4d1d1e5a..000000000 --- a/tests/regression_tests/collision_track/case_7_all_parameters_used_together/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -5.642735E-02 1.494035E-02 diff --git a/tests/regression_tests/collision_track/case_8_2threads/inputs_true.dat b/tests/regression_tests/collision_track/case_8_2threads/inputs_true.dat deleted file mode 100644 index 514932c1a..000000000 --- a/tests/regression_tests/collision_track/case_8_2threads/inputs_true.dat +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eigenvalue - 100 - 5 - 1 - - - -2.0 -2.0 -2.0 2.0 2.0 2.0 - - - true - - - - 200 - - 1 - - diff --git a/tests/regression_tests/collision_track/case_8_2threads/results_true.dat b/tests/regression_tests/collision_track/case_8_2threads/results_true.dat deleted file mode 100644 index d4d1d1e5a..000000000 --- a/tests/regression_tests/collision_track/case_8_2threads/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -5.642735E-02 1.494035E-02 diff --git a/tests/regression_tests/collision_track/test.py b/tests/regression_tests/collision_track/test.py index 00e1e3de4..2f9de9ac0 100644 --- a/tests/regression_tests/collision_track/test.py +++ b/tests/regression_tests/collision_track/test.py @@ -59,28 +59,13 @@ TODO: """ -import os - import openmc -import openmc.lib import pytest from tests.testing_harness import CollisionTrackTestHarness from tests.regression_tests import config -@pytest.fixture(scope="function") -def two_threads(monkeypatch): - """Set the number of OMP threads to 2 for the test.""" - monkeypatch.setenv("OMP_NUM_THREADS", "2") - - -@pytest.fixture(scope="function") -def single_process(monkeypatch): - """Set the number of MPI process to 1 for the test.""" - monkeypatch.setitem(config, "mpi_np", "1") - - @pytest.fixture(scope="module") def model_1(): """Cylindrical core contained in a first box which is contained in a larger box. @@ -181,9 +166,9 @@ def model_1(): # ============================================================================= model.settings = openmc.Settings() - model.settings.particles = 100 + model.settings.particles = 80 model.settings.batches = 5 - model.settings.inactive = 1 + model.settings.inactive = 4 model.settings.seed = 1 bounds = [ @@ -203,19 +188,19 @@ def model_1(): @pytest.mark.parametrize( "folder, model_name, parameter", - [("case_1_Reactions", "model_1", {"max_collisions": 300, "reactions": ["(n,fission)", 101]}), + [("case_1_Reactions", "model_1", {"max_collisions": 100, "reactions": ["(n,fission)", 101]}), ("case_2_Cell_ID", "model_1", { - "max_collisions": 300, "cell_ids": [22]}), + "max_collisions": 100, "cell_ids": [22]}), ("case_3_Material_ID", "model_1", { - "max_collisions": 300, "material_ids": [1]}), + "max_collisions": 100, "material_ids": [1]}), ("case_4_Nuclide_ID", "model_1", { - "max_collisions": 300, "nuclides": ["O16", "U235"]}), + "max_collisions": 100, "nuclides": ["O16", "U235"]}), ("case_5_Universe_ID", "model_1", { - "max_collisions": 300, "cell_ids": [22], "universe_ids": [77]}), + "max_collisions": 100, "cell_ids": [22], "universe_ids": [77]}), ("case_6_deposited_energy_threshold", "model_1", { - "max_collisions": 300, "deposited_E_threshold": 5.5e5}), + "max_collisions": 100, "deposited_E_threshold": 5.5e5}), ("case_7_all_parameters_used_together", "model_1", { - "max_collisions": 300, + "max_collisions": 100, "reactions": ["elastic", 18, "(n,disappear)"], "material_ids": [1, 11], "universe_ids": [77], @@ -235,21 +220,3 @@ def test_collision_track_several_cases( "statepoint.5.h5", model=model, workdir=folder ) harness.main() - - -@pytest.mark.skipif(config["event"], reason="Results from history-based mode.") -def test_collision_track_2threads(model_1, two_threads, single_process): - # This test checks that the `max_collisions` setting is honored: - # no collisions beyond the specified limit should be recorded. - # - # For the result to be reproducible, the number of threads and - # the transport mode (history vs. event) must remain fixed. - assert os.environ["OMP_NUM_THREADS"] == "2" - assert config["mpi_np"] == "1" - model_1.settings.collision_track = { - "max_collisions": 200 - } - harness = CollisionTrackTestHarness( - "statepoint.5.h5", model=model_1, workdir="case_8_2threads" - ) - harness.main() diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 1ad91b7a8..8d156bd64 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -546,19 +546,19 @@ class CollisionTrackTestHarness(PyAPITestHarness): def _test_output_created(self): """Make sure collision_track.h5 has also been created.""" - super()._test_output_created() if self._model.settings.collision_track: assert os.path.exists( "collision_track.h5" ), "collision_track file has not been created." - def _compare_output(self): + def _compare_results(self): """Compare collision_track.h5 files.""" if self._model.settings.collision_track: collision_track_true = self._return_collision_track_data( "collision_track_true.h5") collision_track_test = self._return_collision_track_data( "collision_track.h5") + assert collision_track_true.shape == collision_track_test.shape np.testing.assert_allclose( collision_track_true, collision_track_test, rtol=1e-07) @@ -582,15 +582,18 @@ class CollisionTrackTestHarness(PyAPITestHarness): def _overwrite_results(self): """Also add the 'collision_track.h5' file during overwriting.""" - super()._overwrite_results() if os.path.exists("collision_track.h5"): shutil.copyfile("collision_track.h5", "collision_track_true.h5") + def _write_results(self, results_string): + # The result file for this test are written by the OpenMC executable itself + pass + @staticmethod def _return_collision_track_data(filepath): """ - Read a collision_track file and return a sorted array composed - of flatten arrays of collision information. + Read a collision_track file and return a sorted array composed of + flattened collision records. Parameters ---------- @@ -600,42 +603,58 @@ class CollisionTrackTestHarness(PyAPITestHarness): Returns ------- data : np.array - Sorted array composed of flatten arrays of collision_track data for - each collision information + Sorted array composed of flattened collision-track records. """ - data = [] - keys = [] - - # Read source file source = openmc.read_collision_track_file(filepath) - for src in source: - r = src['r'] - u = src['u'] - e = src['E'] - de = src['dE'] - time = src['time'] - wgt = src['wgt'] - delayed_group = src['delayed_group'] - cell_id = src['cell_id'] - nuclide_id = src['nuclide_id'] - material_id = src['material_id'] - universe_id = src['universe_id'] - n_collision = src['n_collision'] - event_mt = src['event_mt'] - key = ( - f"{r[0]:.10e} {r[1]:.10e} {r[2]:.10e} {u[0]:.10e} {u[1]:.10e} {u[2]:.10e}" - f"{e:.10e} {de:.10e} {time:.10e} {wgt:.10e} {event_mt} {delayed_group} {cell_id}" - f"{nuclide_id} {material_id} {universe_id} {n_collision} " - ) - keys.append(key) - values = [*r, *u, e, de, time, wgt, event_mt, - delayed_group, cell_id, nuclide_id, material_id, - universe_id, n_collision] - assert len(values) == 17 - data.append(values) + columns = [ + source['r']['x'], + source['r']['y'], + source['r']['z'], + source['u']['x'], + source['u']['y'], + source['u']['z'], + source['E'], + source['dE'], + source['time'], + source['wgt'], + source['event_mt'], + source['delayed_group'], + source['cell_id'], + source['nuclide_id'], + source['material_id'], + source['universe_id'], + source['n_collision'], + source['particle'], + source['parent_id'], + source['progeny_id'], + ] + data = np.column_stack(columns) - data = np.array(data) - keys = np.array(keys) - sorted_idx = np.argsort(keys, kind='stable') + # Sort by the complete record, prioritizing stable integer identifiers + # before floating-point fields. This removes dependence on the order in + # which threads append otherwise reproducible collision records. + sort_columns = [ + source['parent_id'], + source['progeny_id'], + source['n_collision'], + source['particle'], + source['cell_id'], + source['material_id'], + source['universe_id'], + source['nuclide_id'], + source['event_mt'], + source['delayed_group'], + source['r']['x'], + source['r']['y'], + source['r']['z'], + source['u']['x'], + source['u']['y'], + source['u']['z'], + source['E'], + source['dE'], + source['time'], + source['wgt'], + ] + sorted_idx = np.lexsort(tuple(reversed(sort_columns))) return data[sorted_idx] diff --git a/tests/unit_tests/test_collision_track.py b/tests/unit_tests/test_collision_track.py index 25344a3bd..96676e2cd 100644 --- a/tests/unit_tests/test_collision_track.py +++ b/tests/unit_tests/test_collision_track.py @@ -34,6 +34,7 @@ def geometry(): {"max_collisions": 200, "mcpl": True} ], + ids=str ) def test_xml_serialization(parameter, run_in_tmpdir): """Check that the different use cases can be written and read in XML.""" @@ -45,7 +46,7 @@ def test_xml_serialization(parameter, run_in_tmpdir): assert read_settings.collision_track == parameter -@pytest.fixture(scope="module") +@pytest.fixture def model(): """Simple hydrogen sphere divided in two hemispheres by a z-plane to form 2 cells.""" @@ -127,3 +128,43 @@ def test_format_similarity(run_in_tmpdir, model): np.testing.assert_allclose(data_h5, data_mcpl, rtol=1e-05) # tolerance not that low due to the strings that is saved in MCPL, # not enough precision! + + +def test_photon_particles(run_in_tmpdir, model): + """Test that the collision track can be used to track photon particles.""" + model.settings.collision_track = {"max_collisions": 200, "cell_ids": [1, 2]} + + model.settings.source = openmc.IndependentSource( + space=openmc.stats.Box(*model.geometry.bounding_box), + energy=openmc.stats.delta_function(1e5), + particle='photon' + ) + model.run() + + with h5py.File("collision_track.h5", "r") as f: + source = f["collision_track_bank"] + + assert len(source) < 200 + + allowed_particles = (openmc.ParticleType.PHOTON, openmc.ParticleType.ELECTRON) + + for point in source: + particle_type = openmc.ParticleType(point['particle']) + assert particle_type in allowed_particles + + if particle_type == openmc.ParticleType.ELECTRON: + assert point['nuclide_id'] == 0 + + +def test_collision_track_two_threads(model, run_in_tmpdir): + # This test checks that the `max_collisions` setting is honored: + # no collisions beyond the specified limit should be recorded. + # + # The exact set of events in the capped bank is not reproducible with + # multiple threads because the bank stores whichever thread appends first + # until capacity is reached. + model.settings.collision_track = {"max_collisions": 200} + model.run(threads=2, particles=500) + + collision_track = openmc.read_collision_track_hdf5("collision_track.h5") + assert len(collision_track) == 200