From 96753f9af0101d94aa4c3b2e9de9c86d639bf5dd Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 22 Sep 2022 23:31:43 -0500 Subject: [PATCH 1/2] Fix reading source file with time attribute. Closes #2223 --- src/state_point.cpp | 1 + tests/unit_tests/test_source_file.py | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/state_point.cpp b/src/state_point.cpp index 648d1a2491..470dd77182 100644 --- a/src/state_point.cpp +++ b/src/state_point.cpp @@ -527,6 +527,7 @@ hid_t h5banktype() H5Tinsert(banktype, "r", HOFFSET(SourceSite, r), postype); H5Tinsert(banktype, "u", HOFFSET(SourceSite, u), postype); H5Tinsert(banktype, "E", HOFFSET(SourceSite, E), H5T_NATIVE_DOUBLE); + H5Tinsert(banktype, "time", HOFFSET(SourceSite, time), H5T_NATIVE_DOUBLE); H5Tinsert(banktype, "wgt", HOFFSET(SourceSite, wgt), H5T_NATIVE_DOUBLE); H5Tinsert(banktype, "delayed_group", HOFFSET(SourceSite, delayed_group), H5T_NATIVE_INT); diff --git a/tests/unit_tests/test_source_file.py b/tests/unit_tests/test_source_file.py index 1398088e52..78115a1f61 100644 --- a/tests/unit_tests/test_source_file.py +++ b/tests/unit_tests/test_source_file.py @@ -75,3 +75,25 @@ def test_wrong_source_attributes(run_in_tmpdir): with pytest.raises(RuntimeError) as excinfo: openmc.run() assert 'platypus, axolotl, narwhal' in str(excinfo.value) + + +def test_source_file_transport(run_in_tmpdir): + # Create a source file with a single particle + particle = openmc.SourceParticle() + openmc.write_source_file([particle], 'source.h5') + + # Created simple model to use source file + model = openmc.Model() + al = openmc.Material() + al.add_element('Al', 1.0) + al.set_density('g/cm3', 2.7) + sph = openmc.Sphere(r=10.0, boundary_type='vacuum') + cell = openmc.Cell(fill=al, region=-sph) + model.geometry = openmc.Geometry([cell]) + model.settings.source = openmc.Source(filename='source.h5') + model.settings.particles = 10 + model.settings.batches = 3 + model.settings.run_mode = 'fixed source' + + # Try running OpenMC + model.run() From b2270d4aefdaea4f3a2b564742a1a76f2e2e7812 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 23 Sep 2022 08:43:48 -0500 Subject: [PATCH 2/2] Update reference surface source for regression test --- .../surface_source/surface_source_true.h5 | Bin 106088 -> 106144 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/regression_tests/surface_source/surface_source_true.h5 b/tests/regression_tests/surface_source/surface_source_true.h5 index 2ea48b2ac16fa4acb1275d48ab3ef28c2136af37..c26afee8671dba0b729d6959614a6856166bd37a 100644 GIT binary patch delta 11162 zcmYjXd03X!(|#5;K~2FWK~o_!!A!wiK&?bg!7a#4$PI7*0Tef%}dGiPSboO5RGGw1#8xn|q;H(S@!-BzBk z-0OITbZOFK=Yfx0dB}Um-6Tu=gywyH*KwQ<&3D)MkzT~&f(5hiuQO8ALWO~E$}7dLo%1kp;lxzdRh!+VbLLy{c(Pnx>hoe@cU9%vO3Vf zDOXM}rsO^;xSrp4d$KQr%zq^JQ!*F&lK2S+-R$VeH1lehqbn{ky00%;MHG3#k>aSl zrlDzil5`zaJmTwWj0<}+Nb5(rbSzCzjW9AvDoyr)BMt5I!g2B)IeLt0ul6O<$Wlkr zO2~cG*TPYzH$@J`QtfG}|D1NO^Q0!4q9;9#4cr~-%JHRSKj}%`rzCH5<>(TU&$^P= zithfaN77wtOZIiwShF@<;=ZM|MUwdqzprp4xf4Ba;z)^EsC6_0qr!`p>Ph@^l8^b~ zeNVE;m%0X$D;-VDG!r9q?|8G^&zG96)ZEmOoSW&|K`B^8%a8k7fni}AgFPwvnF7TU z^)m%lIa)l)1V%dQO*HyKUs7+O@Qc#eJwF`wW{w=coywl@H8L1C#FN;s$-dr`=x!YL zmz14F8^3s(H`4T8wweLy4cr)Q%!Dw zuXWRn9_2`EA8KvxNZwiwe_4}eSnx0MBvQ!TCFLhLfg3!@IhPLn?P^+vt=Yv=(3t|i zdUEnx3f$yM)k>24UD@?-c(NV-qg&VdQhX~v?(sA=&%7GwYxFErI$Gk+;$Cy)R6nj! z1P;M^I`xX2P}cO;Uc~M3!UE45dRY9P#evsMj2cwte}$D>c>RKIQA-z{D_5vhE=JX-~Y) zBwbgtS}_!RT3IM=z*)Y=92?_kT9J8^D#y0dheJ5cX-s4-rR)JR_xPF-3`_I0D%yr& z%F#CEJ8*<=FwJ8fjla(5!M>D?;+$GJa_~X=R)={1LbAk@!iUXyoaaEta8Gt!K=!|` zR$Xouhe<*Y`t&;l8YytID>-+Oe8JV|v&?h}_C*Jy@5Hp$QREp<4=*+L5MPUznd)(J ztQ%E(&^MMopXtcy_vlq|@GS8{|W8BdrxB>7IJ;x4W2Z1Gr%NZ)MILvfl{7(L#R z)J*DbjU%{|O5VU}E;Wgfo*aCVTWYV?ce6^dMyumY^^Lw%{mF4lJ*ntN@;_HgkUql2 zCQTxGadZ74r+z0@s^zzsf{T1jzRj#nfIk(~aKM$=Np!7^Bd4Dt_f1FZZZ+XcQIhwP zz0a5E4J7x%VM_|WtFb*yco{a$xkj%=B3^Cu#W>@48hsh;}$a<*P=eQXv?Lnk}CFj zx_YbmHVoNeg9&Fzbt2cNiDb^q4+Ds{Quz``y@Q$s$*^bXC_aZs?)SB!pRsTDb>D?X zS2!A7Y4qg?Okgk#8>WB}Xom`ITIvx2&!m^(Or#nuSnxqcm-^DsoZ-ljvN!4J^IDx} z6C5F#L+PrERCyuYJLPT2vhgbcw>Fb|(3SW|lEZynvDqXh!l8xCH|-_+Eh;;Vl4sfP zSx-v>(6|CS>S7zW9tpBF)s6Aw@L`fK07{~&g;uhuD+gPUyaI>+OwMA2RKH6b@1g(~ zGbkM#tr%eovO#Ny+vHZtlD3o`i96M$sT}ex! z2d6!$N+aocn%vYTu?pC08`&?ql6nK(ISYB=BWin3Q%0M$Rayi@7Czn^rTh~buJz?$ zM=BVHlyomgJtvI@PA&ypZb#;ol6xTsHA7(-Z_`yR9cS*|;>)fZ=|M*vOT)hJV=1hl zjK@JbMq>v7j$=qpMglpTtr{|eF zmrB`1oa0{-HHz-~o<>L7_gf?;p5G_PiLd$nMWFEesp=(HR>YGW4dmQ~Gtbr|lPq$# zY1CvRD<$C}D%cPB{|!fd2uJ`}5`yuuj?~!do#9II|IC6f6+K8^hN^oG$s8c4^GK%S zJO;?^b|i}_7LO{V9@OZN=1z`OnYxcK_ck`Sn`OsObm(PYj`pJOnc@y7^KVa&E;41K zT+L~1!)}$vF_dV6BWPY+h47wFhcbLgt|9rdt6r`RE7SU1TlmcYzCTmq2wX#%40+kv zk=4JF`wAl5mt+?9z@sFe$1THbOmQSWiQF;1#9u_RxvRToo4GBzWR?YfwbcGbhmXQA zYDmc1*+5CBIP6tqtNtV}$DG@nhEj0{aOuZNSrVzKT3hIb;I8(VXM1d`BN?MP`X5jC zU274;HT3Xh3~5uXZWn9^N!Uza*#&j}G>3hR!~8hOS6s>Xm*i`xcc~;NBHs)kISn%~ z?l{~Tg7vxE(bTKW@|{SbR^?ytWW|3R_=zKtIQgNecg56))3pdq@NH2J`Et_Yc!j4~ zm`C{N-=i^$P2w(`{fo&RFX@9B(&>)wi#5wDP|NP4jc$(SH8J+5jwFubxPP@^scB0G zM8AUEW?C9!0lHly0;F4qJJSd{KgpBTyGg$4YTXj^ZJXvUv2kl8;SxGD1A!euy%QvN z2csPa=ow+|eC9~q9x6M4t5!N?uhbJQ&9m15<8Cq&)p}%^vDc!)16YPqeWWW5HtsSh z8cD;sI0BDx_VK`@XPUXs9j)qW^h!_bqKtk62YVdVO$N%zB>A7GCs&&7?HaezY_Ie6 z^x4KPlkyzy#xtZeowoCk55`kNrZ0uhkbDitudSK;0w)F`46Xk;j+O+F^-Y}oEJ|ks zX9J{#SG`>8Z#UETVp^Azn?&N}Dopl%%`P_yfkOe9&T!@AWJ=Eh z2AE26A`U|>VMGs236S!a=o-{g;Gn15H=5=Lw0?tWUXSZZE+wXTx(j$U9IkgHWg4BE zjT3GHSD>WW;Q z{Sczjg6xgH94;g|4LP=tNgVby@fP!RjMTqO_g=&$!wk+veVos6S0dj9?Ybjr}e7@A?wEh>@Ev!)DN$hX54O#AF0~KED@e<@px3J0+=r zdni(hUM2Oq9C?qaCDG9=;NkFcd@H9~@_UW!Y)5L7W+#~WTRbfU=nad$C*_N2e+IJV zBHAy+F}{}Hvo$HjhJA-heuR_lg)3ojtr?42QO9vFd2$rZz|c8(SjuClw-OzXCH$U? zodz5m7IW?ij*y<>;gwBu$MwU zzU)bIPm)`3PP>tO4Bm`3Z~h06@+|{#0r1)kO0;&xE2IxiG<$$qTjOfOI2-p7)LBnu zCKBcF`#xmjb=tqn3Y9fBGOV1edhi zfceqE2v6z=B77%x%#u@UxZ=|!y^Pe=l42LaC!{fn7VbvhPHgyiS0dk|rdNRY8)>XB zaAeR4{Q+$j>xL}CaTN+r$B8c|Ios2kD{VE7O4%$LZX@Ye(_B+uQwN*5wXPHn;IMme zm#~h^PFxDEC$|+6)9-X52~{0>!?XMmo9+Y7@-3;Zpot=hv+M8-oP4F^9F*7qB!7&$ zI?z13T@w0n*e=;QnAA3nn_^kuCyDrrCqCKH*x)uf0Z72EPOnPkR?a6E$w%o+v6OEn zb1n`)uyEMfPmpH@QDC=}8*r)iwQ7d>^0S=ykH-1|JT0bZGbt#fTTz-h%r@CN^iY;j z>zSV9Z6SFLis*Kdd076VB;UqywcB5Trx^iM{#0Uy(8nhM5=T;YJKB#!%-u4;mJpZ= z71s+<<7XMa5&8W=is$>1R!uh-Yxz8L?lU9>yD1fVa{3a=KIKSO2FZJUjYrcUoR}_? zq|fNaYuGP9YvJBRf6WHs4hx)=>KiC<2B6_1)G!n9{{fQM0%=`pu9dr59Dw7`eW}|) zk$FG~mYSknsVF74H4dDir~811ECPFQ&-{V{@3^`;gy%v57=UaLKm@sz5qbc3nh9h+qe&&U9>=g33`Z|OX10CP9MEBm`B>rV zX>>%xPW-0n9nFbBIDf0iZ6meU(8;#4^DA1b2STv!-3`b9`{>vlWPqt0^q}mxoP+ji z)N=FYIKCTFU5I=YEZrTRrU8D356bUA79rdl3Pg&;9iWc660whlmtc+B&_tHRP3Gr) z5|hu*4*{<1r>3jX4+F3cYyA?r_B)bwC=~H#AXWFSFxURT9bp9}B7Duc%mxbXEM;Uz z;cE3fEtiOEz@@;K({sq&Aq7+E#Irb5R)^cUT6nwZ`U?2}AY~WHDSPfX48$G?{0U%j z9)v@4AB;v@utaxa4QoissXD4bsf3bhiiy00=w0u3t+`dkS3c z>hS=BpK>($e2c^ossEl5ucOua7FEo{_I-`yjmY@3N$$tZ^9q~Ndi0-eBRdkn4!AlT z?r#A4-ym5GWM>aY(NemMHrfNl|H$v}x?0oM<~-EVgXN~;G@6SOjK0g0)OR_P`O^3% zbu2^2t)4or!IG*?^;=EZXiNGRo>}^v>Wcs$V<0)HZ0EPdJ8<+Jn-b3QGve*^}*LGG1?1tcha19Wg zA*m~nm{8zCc;rn_Pfs&58-X#bp0>oB<|#_N4^*{@WIMD+Zln8W>CS9(e=RbNHH{|0 zi@zxFmLADB0R@cQNNy`h+R7u;UY7jBnSKBSawiRRbTu*XW*z#AJvr*i4SOwXy{&Nt zMsAYqDylkDqPCOjptYVE{SZ+v=kORU3S242lWK2rCu?O>lYIyG(ghZTN;EC+p+swG ze1Lk-((0f?`jMVMGc>%*D`d$AP9YYrE6JQfHa2{*?Tsoay^jKIkO0x}3x~WOy%tO3 z9r2Wn?qXQm5j`~D{1F_9DhlKG2dM)okRzw8yBCEA(Ccm3X02^)!w#dR`vhfUG&jn; zJgQN}Ca@k|fP1L7Gf>44l2_qyJj!9wnsTGbZgDlWoq7B&&eT(sh}B^oO!3Fsc%2Dv zK$in;nb3wh8xIS^NKV1qpB1ULXrq>zwyk(ji81;;^xpPSb0>}KWST!wH|XJP#4f0z zx-K~Tmr{1BR6fnXw(~XbRtv@5n%l)3dLNC<7bx3V-QdCLQ#}?`2E|6Oj#yXhzcDm1 z4UgTp;)mwZ9!-EdOz}OE`y!Y8Y&{ZhPJW=rx|_An(7Rk^ve=eS(zR|lPM1;HbeK3m zvICl_YfW~W410~TT|ABNY1|LB7T3A(p7>m=%Z#j)l)aRV!*3oYQrQgb4&2#8{+@*g zu=S>)TH-8eb@kNiZL$6ckJ7mEgcX0GrE5%amBc(x#qp@IInlr$9$! z18U=P0i9LCW1CC-NDed^z$eO>{?=ilB-6uutA68H*Om$8;=ShYdBgUuyMW zTe*+%wjW7>t#W8CbF6p8;jsMQ9E#vuAVM zL)gJbskf&j7?$V)Nd6PQ_W<}o`3&!YZ)I3l>aF(lAdn6BvZUWg?p$D;I1bx^Ed4pZ zCrI@VoK08B{DqR|;a4_xIo+=H6K(yz)9Nd1{k}k^yqT&Bu*rH*RgIiDNmbn>-2h}F z9z6b}WKYa6f#kioq-5KYoj_j7G5Q#ODRL`C3Q^PS<>FyE^amY_!^Sdv*9(yOABrXb zH(7PLPs^v7yA7H<-P}D6NW7Y|^RUVK(%na7$KP}}UK?E#O@s&bD~$7{HkoGc2k^+Z zc>Yg^%{19Bal2ScwevB}{#5&@mIcbr0f1;`<9bP{1*f-E52W1(G;=N=9rnz%M~AOa z>(^7~0%XNh>U>P=o0-w>_-#*6(#{9u_=Cb1xU#|u%Y&Zg%{Qw*sJqbO@wGJCm3bjH z>%~<3xbAFWiqFOGS%TJfZ=9XKskjfa#W0c&VG|eGO8tl(bT`>oz2S8D4T|h= zl1~6sv@v!MUk|r6`U1?*>d6j`3qsWw7qQ@n9zS8D-b*Emkm7@q`>pI8&A9E@Hrj}nvk83^nlN)%}|YHs+5d?%;Ik=msvVoY&Q{6qj3 zl<=(j;)f+xQXWPpb-A${UCn4=bTXPL_L^0U4ILES6DYJ3YDEyeepuU`6ut(xxS*}tAbYQ*+fV9_b8K89uBAN!pKwaEIqp#u zp)zCtf*W*uqc6n1eVQVRT|J5pWH=)KlgcSn{ggKLv@rG3L%qyOKcv}d9QGKh&>GYB zE2>Pa(f#oQqi3n@T8&$01HZ>l4|2)fqxHRwdp;VHK~=jD*ROo4ejFe(A`*&>Rmq}ia z-~6CY9*)64-Lc7L{-dPKVQxsK!w*xx`J zVS|HQZ3x;-KLI>mP4-??x?+ delta 11163 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 j$?zyz#`bI