From 5c38b1552849bdd2df0169219aff98d44b75a409 Mon Sep 17 00:00:00 2001 From: Patrick Shriwise Date: Tue, 7 Oct 2025 17:34:42 -0500 Subject: [PATCH 1/6] Reset DAGMC history when reviving from source. --- src/particle.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/particle.cpp b/src/particle.cpp index 402af2498a5..d8967b55029 100644 --- a/src/particle.cpp +++ b/src/particle.cpp @@ -151,6 +151,10 @@ void Particle::from_source(const SourceSite* src) int index_plus_one = model::surface_map[std::abs(src->surf_id)] + 1; surface() = (src->surf_id > 0) ? index_plus_one : -index_plus_one; } + +#ifdef OPENMC_DAGMC_ENABLED + history().reset(); +#endif } void Particle::event_calculate_xs() From 676a073485319bfc3a0a92234b18441098c0be5c Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 14 Oct 2025 07:53:33 -0500 Subject: [PATCH 2/6] Move history reset up --- src/particle.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/particle.cpp b/src/particle.cpp index d8967b55029..bf7d79d7db5 100644 --- a/src/particle.cpp +++ b/src/particle.cpp @@ -121,6 +121,9 @@ void Particle::from_source(const SourceSite* src) fission() = false; zero_flux_derivs(); lifetime() = 0.0; +#ifdef OPENMC_DAGMC_ENABLED + history().reset(); +#endif // Copy attributes from source bank site type() = src->particle; @@ -151,10 +154,6 @@ void Particle::from_source(const SourceSite* src) int index_plus_one = model::surface_map[std::abs(src->surf_id)] + 1; surface() = (src->surf_id > 0) ? index_plus_one : -index_plus_one; } - -#ifdef OPENMC_DAGMC_ENABLED - history().reset(); -#endif } void Particle::event_calculate_xs() From c951e1a101715b9f4faa0d4b5eab4cafeacb04f1 Mon Sep 17 00:00:00 2001 From: Patrick Shriwise Date: Mon, 20 Oct 2025 23:02:16 -0500 Subject: [PATCH 3/6] Adding simple test for ensuring particle splitting near a boundary doesn't cause a problem in DAGMC models --- .../dagmc/weight_windows/model.xml | 58 ++++++++++++++++++ .../weight_windows/nested_shell_geometry.h5m | Bin 0 -> 58352 bytes .../dagmc/weight_windows/test.py | 33 ++++++++++ 3 files changed, 91 insertions(+) create mode 100644 tests/regression_tests/dagmc/weight_windows/model.xml create mode 100644 tests/regression_tests/dagmc/weight_windows/nested_shell_geometry.h5m create mode 100644 tests/regression_tests/dagmc/weight_windows/test.py diff --git a/tests/regression_tests/dagmc/weight_windows/model.xml b/tests/regression_tests/dagmc/weight_windows/model.xml new file mode 100644 index 00000000000..2986a89a492 --- /dev/null +++ b/tests/regression_tests/dagmc/weight_windows/model.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + fixed source + 500 + 2 + 1 + + + 0.0 0.0 0.0 + + + + 14100000.0 1.0 + + + + false + false + + false + + 10003 + neutron + 0.0 1.7976931348623157e+308 + 0.030750733294361156 0.056110505674355333 0.08187875047968339 0.1101743496347699 0.13982370013053508 0.17443799246829372 0.21576286623367483 0.26416659508033646 0.318574932646899 0.3804031702117963 0.42899359749256355 0.4954283294279403 0.49999999999999994 0.43432341070872266 0.38302303850488206 0.32148375935490886 0.2637416945702018 0.21498369367288853 0.17163611765361744 0.13832102142074995 0.10717772257151495 0.07986176041282561 0.05499644859408233 0.03058023506703803 + 0.15375366647180577 0.2805525283717767 0.40939375239841697 0.5508717481738494 0.6991185006526754 0.8721899623414686 1.0788143311683742 1.3208329754016823 1.592874663234495 1.9020158510589815 2.1449679874628176 2.4771416471397014 2.4999999999999996 2.1716170535436135 1.9151151925244103 1.6074187967745444 1.318708472851009 1.0749184683644426 0.8581805882680872 0.6916051071037498 0.5358886128575747 0.39930880206412805 0.27498224297041163 0.15290117533519015 + 3.0 + 1.0 + 10 + 1e-38 + + + -60.0 -55.0 -50.0 -45.0 -40.0 -35.0 -30.0 -25.0 -20.0 -15.0 -10.0 -5.0 0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 55.0 60.0 + -60.0 60.0 + -60.0 60.0 + + true + + true + true + + 10000000 + + diff --git a/tests/regression_tests/dagmc/weight_windows/nested_shell_geometry.h5m b/tests/regression_tests/dagmc/weight_windows/nested_shell_geometry.h5m new file mode 100644 index 0000000000000000000000000000000000000000..ff6d67b4c777651a2f4ba5e8a2fb8dee68df90c9 GIT binary patch literal 58352 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 Date: Mon, 20 Oct 2025 23:13:24 -0500 Subject: [PATCH 4/6] Adding init file for pytest --- tests/regression_tests/dagmc/weight_windows/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/regression_tests/dagmc/weight_windows/__init__.py diff --git a/tests/regression_tests/dagmc/weight_windows/__init__.py b/tests/regression_tests/dagmc/weight_windows/__init__.py new file mode 100644 index 00000000000..e69de29bb2d From 2031255f5dff3c765734d36a28bae1effed399f9 Mon Sep 17 00:00:00 2001 From: Patrick Shriwise Date: Tue, 21 Oct 2025 09:35:08 -0500 Subject: [PATCH 5/6] Skip test if DAGMC is not enabled --- tests/regression_tests/dagmc/weight_windows/test.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/regression_tests/dagmc/weight_windows/test.py b/tests/regression_tests/dagmc/weight_windows/test.py index bb4cfd001a7..7f2fe00b7ef 100644 --- a/tests/regression_tests/dagmc/weight_windows/test.py +++ b/tests/regression_tests/dagmc/weight_windows/test.py @@ -2,6 +2,13 @@ import openmc +import pytest + +pytestmark = pytest.mark.skipif( + not openmc.lib._dagmc_enabled(), + reason="DAGMC CAD geometry is not enabled.") + + class DagmcWeightWindowsTestHarness(TestHarness): def __init__(self): From bcc27f5eb6f5da4a70bd4e1d8d90b7b46ef22754 Mon Sep 17 00:00:00 2001 From: Patrick Shriwise Date: Fri, 7 Nov 2025 15:45:30 -0600 Subject: [PATCH 6/6] Updating DAGMC model to avoid a point in volume issue with it. The current set of weight windows still elicits the bug we're concerned with here. --- .../weight_windows/nested_shell_geometry.h5m | Bin 58352 -> 58680 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/regression_tests/dagmc/weight_windows/nested_shell_geometry.h5m b/tests/regression_tests/dagmc/weight_windows/nested_shell_geometry.h5m index ff6d67b4c777651a2f4ba5e8a2fb8dee68df90c9..af1d5563d9255b518d42b551b7527cdf45eeaaf3 100644 GIT binary patch delta 2307 zcmZ8iZ){Ul6o2n-xW1ySB95|6RurWeQd+{lEDTB;uLYvvh7)7HXLtX4&E)U7kRbuLzJk<_@r7;v!_Y8{Y@;&%>FHIJ+ zG_FEu#dvyypiKKU)Yv%Oa5GfGof1VmIJ1^XYBSAjjydP$qTVJmm^u`lsO0LTks5dd z3gPFjxsV)EgP&@EW(87;0Sre>C~`0uT?}fT0bz-(ju_CWCm8($>}U5#rf+D9FtpY! zqCHJIBcPru5GAPJwMQIR*!s2IlYB zURfpzS%Qh;1oLsuDW$2dvC}wNy*ejf+F65(Bi$?AhgdafR z098z9HQh?{dvsPP&=$KJ$U`XH3Kc{9(8NiofMMim=U2Pi^p(BOfC7F_!tV=4ZxRyf z37X5_s*zCOo&KnSW=rfsmX&@@f_u3 z=+HPd1hE0kT`mZ9xt4EtZY$S;m8GQwui4#Oc9id=hspl#s>;fpLeRMoCf;h_nk{%) zY(1mOCptr&0s;&dK1CNC7ia#Tr=eJ>4t^E}d)`w|XQ#Uq>Eu!+nz&T)^IWRYcXg>u z&61Q!Gx&Z4sgoI5bea6WW_(?yL=%xI{99%_={ygEr}Csw4<)FQsj^(49-At;N1LjB zMxmSTT6&=O@LA*zFplChoa!zjljIHRljLgIW5kbGidm0RA0hwId^Fvo^Ds^@$n1B^ z`6&GvK31_mdR?2QR3A)jZqP@hV5FCZ6MfV^BhYW3);cKI?S#hWttiqTjjq)`qQ}fA zbqOl!SBirqP3RIylWLH}At*kP58b{tR5M7x`WvXZNOO8GL4Iq4WDQf7yf-u&COJBX zwH%F0=LiuR6ehapf;V`URu%0w-w1 z(S@)PvjC=r+1P;v@-1VL@TF2Ht7meBy-TfW+cEX|%#r3C`9R}D>Ytn{%x!)1@CLKr zfnR^=i?iR}vdUYTC2?OZ$204zlGy=X0liqOoK=8ZpWi5S2L<^gvm>{2{Eqn!nFu%Y z94o+vF(X=Rc~hvmZ^av!B}xs|Vuojh*<^zEDTQ3pv}KZF)*5<&CLwE$%r21G1+*1I zwOkp@l)_9QUJ$j(5}CD9))gw#B*IK0Dxt5ISBzQ3m{rVMLkS5BFl!BtxjytRkI7$; J0}(vYb<--W8_xeK*BmV7aP-pS;49|KctnOcMyywsf9Jp_Sh3{-ObcQi zA+$N2dYnUrh*M`)!bTSLr;YJ`;_yIK`J>7o!u>}IpS}N=7xEQ%D(!Xk>i=m>7>Mmy zU*B-Z-e5lj`KNYscBN>~UJJH-2nTCLeW~KEZ4j{gBh#_)%tkSed;&L)5C*Iq$>GqK za8sfWWX0iB_IA(iCUkhW_T40&(I+ zZpvpgKgIEBLP%2Hc!W$CFG+DGM*L~YTc?Q`&vKOn?6btWh=Izh)T&FsV@Soqo?I`7oJ#oeJ>NO6xFTp>r5vL;d)MI?l zbb!XPysokazK0uL%3AT}InD--g8ewrC(oDTSg$qK?1G4k7gFz$?UQipt~6R?}z#DB- zZKGsy{4%Bg6|?hL={d= zL(M>UG|huI=sv(+omNLnlSWhVE63Z~+Q|}vn@=>gBank91$I~=xOMuS(gIoqLY}au zR=rkS1{_nB`nB?1(sXMbH@{!Vjk;jz`~vo@86O8E-de<&UcHX|8eH_7bx1&D`1A|5 z3QBH5y=!@ddzo1)w7N* zw~bA~{%#K2e>Sl+y{IPBwYh&W-br9zK$5;7J}7hBxH+QFJ*(-%q3iHQZy3a5yGjd< zgUViK60LJgB1$lc`S+Pb^NE6*u_TUUO-Y)>g*ztJBwFWmi7R(ach(V#rgsHeC2~rJ zP3t(@Lj2j5tr!_R5@*=tZRZorc&K$N4s3UzYD%b1VwEv;kyR zx}A_l`gov#2gHpNqH$KSQIMpkC538_8zcO$r3(!n!_*o=(?}l_?>q?-*9(76Wts#M gK!#F=nU#<}jEy8E{;~f6r0@A5`ME_Ae@vAB3%#CNivR!s