From be999a2359e0112fe9f01209e64f08e3ac724d64 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 24 Oct 2024 17:10:41 -0400 Subject: [PATCH] switch CNO_He_burn and subch_simple to derive reverse rates this makes them consistent with the other nets --- networks/CNO_He_burn/CNO_He_burn.png | Bin 114151 -> 114584 bytes networks/CNO_He_burn/CNO_He_burn.py | 2 +- networks/CNO_He_burn/actual_network.H | 630 +- networks/CNO_He_burn/actual_network_data.cpp | 166 +- networks/CNO_He_burn/actual_rhs.H | 1482 ++-- networks/CNO_He_burn/partition_functions.H | 791 ++ networks/CNO_He_burn/reaclib_rates.H | 6931 ++++++++++------- networks/subch_simple/actual_network.H | 416 +- networks/subch_simple/actual_network_data.cpp | 98 +- networks/subch_simple/actual_rhs.H | 720 +- networks/subch_simple/partition_functions.H | 575 ++ networks/subch_simple/reaclib_rates.H | 3753 +++++---- networks/subch_simple/subch_simple.png | Bin 110344 -> 111353 bytes networks/subch_simple/subch_simple.py | 2 +- 14 files changed, 9750 insertions(+), 5816 deletions(-) diff --git a/networks/CNO_He_burn/CNO_He_burn.png b/networks/CNO_He_burn/CNO_He_burn.png index 24c454e17c45b28b699c5ba4e65ee219d0a453b0..bfa65876b4e982fdfe5a9dae718a03c488639177 100644 GIT binary patch literal 114584 zcmd3OWmH_<(k6riw*>bPLLkB2A%x%_XbA4^?hb+A?$88+ySrP0d*cp`yXzcsznk~o zHS=?3t;vEWoIbtJ-n*)vs(Pw6-{oXP(U1v|VPIg;#Kk^;fq{834+8_+fd~&=InO~! z1%7bZ3xBm&urjoF(y=vwk=C)dHn*}jH_?6VXkcq+Vr9uf&q>cp``Xyv-rA0vfx+VM z4fIyFMhs+>6b`^3NY-L1b}%p)I#1uQc>=j6Ft9K%;-3W-om2M~oSYRWr`lGQl9CsZ zkdT_4UVMJbDvVvv9{Yy9>@vLBYv+8nF%w(<AZ!yPW#FM1>mdN0I z7+HS5C17SMx^!`7&D|@C;d4l9hA1h5KrcTblKW%+`{i@7@iP+dzrQ}cF^VbHq4A&h z_#eTE*P;B!hx{=;Un4pF*M$y@w=4Aj3=914%IEETz<&)a5b59eUl&#oqOI}%J(E8l zzWey<;J+^Tll@wp3%i)LruE#JN(e zrDLYr)`9(3_<1-4PYSgfdTW6)f0cB50WI}~8g`5pkPvIt%(vtz>R;hilbhNw4f>-%h_@5obpFa4xt?3A^ z$&K%;x%abLXOt@7B+~%Ay**5)PeW+M>r=iSze_i;2lqG{N^Z+gJ~>KN2<?WmBiPKQj-X&K-O8D|^=L`z_wSMHje!l4 z8K;MR8rLHc;SFm`p+ssgo@%xFHmq5uUvK} z@`1TldfvOjqvB(h)dA0~>t`0UMP&{5mclx-fV-`bJ%E^Is40A{CK^z>JRMZ}>IHLC zV@I-UJ!NwBS2~!Mgo+*a_5lF_FkM|;&$+S5{W%MpIf-3sZSNoNdey(5;CcFAdIe%w zIa2lyDmiaJW1yb{yyY=^k(+DXiZFf8N}^6&n3Kf+;tcGRHr9bmZcHGVXJTwDc7y%) z>N#gfw{N%Z`^Oo5=1F<~Plz@b&ev4Kb6zuBH~&a~6q7ZN@F2J0u;q5T#)4?c<5DBL zxB1~__p^vd{G-`yl}TDRwLfM@qwklp>DT0Aw@gS;a)y4N>@-B){oVEz6+fxEC9lW( zffSAiO3C=h)KvBDa#?|UR$z%6k7HwFJG3$Y;4N~cmQkX)R@ujeacM*@R$ECXPgwnh zu+R4+8Ltis3Tz+mFHgs11rJA~fg~YkXU^Vm61dmQ%+brs%O3-Qm1ic$=XMOR zSwmkN6T_m^Hr8MqJXgN7-&czw+@k&mbJejypvjL2D-6Mz&hrl&30lmS^PJ#W#w00V zYrcH_N}aV3fSC#Ztr<&fboWxk{25ps?SJ}(Q_60LjP_@<`5eoTtMx1(hCYWC31CGnvtiUk)XqH<-CID z6-Z-8Dz6d`&655^3&&mkmPr-26ZhXb+Lc7{2Lah~3ee4S@N8m-5bdcgktO@Twmu^6 zUXsCT??fYdx*gPf45a+G9t6Ql{qaAhpF#a)n*yQZCvF)+$G_|8Ql4`^|GOeq>pyNw z-lCuq(`<2{)8Y{@0C1P+x8pN5ycgW4|8Zl5aRKJ1AX9k~g0Hrs_h!-iFq8(k=!P2z z|8>`&;Z|63EimF!&E)qRn~8OvOWTu(Zpd(LEYLA=r@jga zk);1c2SRFL5QuF=aDwVx%y+;6BBP*u4+=uG=LF=)z}ffEmi+iy`?yYPl(il66o=4* z2-h+YDI{ZJ$1^oJ__u2CM%&(57@% z1krEo86nc!EBX+#KZi0_XL3%30|@O}>GJK(w*Bl^-OgT@`2>|KbZGBIaRnMon3BOr zwMjQ_8gCxY0(OP8g2*`f8FG4;2^QhC-zBe?v6zKFob z&2ToYNEM~68m-dN8*EAUD-GjVx!V1Ar=NUNdA^Sb-%QBZ%e{SU)}iinbLz=2;Jw^G z9C$Dbk%c1vRWwE6KWaPASxgiGF~8)k&>*s<_?8zTkFA%z@7{2Wp}F+H!aliT)2eYk z{{Somf3+#pRzUUWO>w8H@{C9bM9QhMKtJ$%lO1->!po>V z+*{9A_A{V#GO}2)peZ&9%`ACm)2r7#8q-+b9G;qe!6XRo;lh74pabhqut}ZEZCkb( z24|Gsd*5($yw!OqDj)k{4tbQo_!Y6nHj^U*#S-6xr3EWel&tGK-e#)u#&u(eV+F07 z&Gm3_=FzW>djc0hWksCyz$`g-p(Z7#awf|#ru--eg-O*k|1#4x!_p^~iBLR!M zc5Z~iop>Gx87g9_5WNDH4wBdGd#=7{8VfZXW1C~sa_7?ChvTgjo$j_PO2SVI2}qr* zKoT~2}x?SA`r!)$#27-&X;W6=wYj9FfW*9AX zfh=l10JGcJ!jiUUX5O~5j&;;~49W0~(YNK_IDMzI1E29rIo%j%`lXs7B4jVK)M& zrrGA;Jk*RW(k?T_PBbNC3qMM6-&rUW`U=Z6ZSDeJ<2^+tQz!kNB<`F(yIQMpG^PQ{%z7xZ?b9cU-(2Me?nZ&{u#-4%Zy%78*rwD50mSw z;8lLrrVrqQ2fwV%7`D+;i`kTrR}I!$w~|TIQ2GONH=AnF0dOS#d2H_s#o`ONbsTAt zEaNTWnYfVEKxbaB_HviK_Y%cr#gdiJ)5)0dy^*|%bdIN**@C72iqweVNo%@P22AFH zo3}`YdDzPFbpgcCD_l6(yb~JWJyX6O4)c3c-+DhX>#yn~LnNfTu0VQekj&p@DvPk3 zye|J1p3R0wMA)Fuhk?2}L223(bU38G^hgYoer*VQ8@_QvXZY9PSlyrYIjAzWK(!1v z6oHpkz2LcCXnLp!q-l0Pp3D4hX^KpaO9kORiM|tQ9AT1u9a*=d2h)6Ovql5d&l&yr zte`-51i!9$a>1A{w)1!OCL@bQ!`wx032~c?Me-NZ^5c=%`osYP&oH&WYeY+UQm0i~ z1BM%z$(FfJQZ&HCNAVjVc?;j&@NDYV*FWVaP@QL3WjR&{O|V#@~89?eh*)^mVuR(zC{Zh-@d&18$FC3{YkurKFREg z>`{W<=5tZpU@S(2*-V|>1i8mAOQ|2ZrtpU-NFEi|I169t@&+cB?eZP;|MCiW)ejFt zFJ2ews6)a_%E4j*&z@V{QIlAPx!AaY?0d$obin=VY=da{{AI)zbTBm=J*xVjce)*&H!MAWS3jg}8s&wd_BMwoZ?Lp7M zFX1fXy6la#=Vn6l;r%uG<&1Vda~I*ik9oP=F=4>8U!_G_wox^F{u&A)@{_`RhRfwf zDNkDLh<3wbA2*vu*81$QcWV8URA^$3I=E%FwR5%Xc>2cVXToNjRpZ-oA~+(a0)sQq zxJi}??rlr&7&E&le4s7aM-WLDp&mgL@2notDa&TG)u7#+=is%**64@t%!O$XFLhgy z)qmo|&Oe4?+@?7Bo$b&O*xuEuk}geVq(GPWUOfjLjLcD|qKiZ80vXLk?i9Kgf&H~? zXx}%EWt68rTvFu2-5sVivs?5S6GF8H=Egq{1Z;$B{Yrc1-2U!@S(~tFo9aXSNH_Nsb^{V zXM*|u+Eno{3Nmuqyw+Ziq#O*!q=XE4)=(42tX{o`A+^r*OvT#$Vk}((CmjZuhugJR z5`9IU;p+eU!$?Hkxn=a~V1!3OjraB2yGa#RCfCER!u@J|mOoXD)vM@9q}B)L19a}Pry!&F@C(M27){3>NPsGk}BjkZDG z{%{AQk=I`%7UWMT3s_oJrAzx4dcA7z6?NuN7D_he@h_w49E5YjvR&qlyl)5L0xP|R zxSZA$>C|I*qhCu$&M|FocG30yIyjxe$Wc^;E*HEv+9t>8#&fht^uY?7jmQB;`*ZN|TIw z={%51As}bY;5e5)_Tz=nutkId$YtYJm^1Z&V&$&^+Bn8M<>IXR{NdK3Sbmun8{{iQ{U6m-zmKjqQ9&wEwd*Dv{73w%jfO$`ULQMn^;EZ zFY^c}zs=;w4!=-y*?#@00y@u#e?aBY@(+^1OC1~dH@@;E-=V;kHjWF7pQa1d5=a98 zd&9`Jr)qtMUO9_e!lLt>NLb#O@Dx`>!z|(!MG|WB_VA?$NAu9y!^VuHI1S%k4Ikhk z5FTTmwFS18ys2#Sc-!>X=7u!?=UK(Nt(g|znJ$c~dRjm=aaQj))2m~ql@gU&iiM3S z7WZr@T&2(P)cMA%k{MOIJiKPQwvQjhPA=q@c)Vh7aBQ4rjD@^psr4;h@ z%~`u=2xQ3@b>C!WYgZ!rpw-s%NY$RyQrevMDlp6Nvf+X-tOJFDK}3G}Qo7Lq7WCH- z#QsZ0+Jr))avk$EyPpnwG4Bb2-!=8IU*H(n&S`<|>fYwMs}(V&MhrK`tw-Xw_U>8f z2sWGG2n?EyX+Xb<*J56tFu}AM4xH9CdwikzmNp0LEsJ-z(QEuy6^^amJvmn6 zgdSIc3?vosIU5(@lkIh%@o~Gl-TKli3vQfMF$u=&hEuHDi`&M2;+&ANKnGJPNph!sE-M z7MJUOojd1|R8QG20r7wvTe_Jah0ab!-SP{5gifoI2U$#} z=b&17*^*8*Fup^v95!EpD$@#SPW2em74_WU?~S?eg9dm>o0#!0r@3RXkoIAQbLBIf z>$PJL+0CC>y8bguR$zwV#5Q1QP=eu5>U*soS@Qp!*3&HC$owJq9!-6S%Xbg)cRH)} z<6`S6=Sn3Gx_6=zgjy~`PXyL z$-mwF`55L}XvH)^b-r>aPo|qEyVJRp#or|do(OCe^$7aG zpO4`caf2!3@rCSx^qd^tCi+hV982Ty^}`)+&E&`QeP-gcp4RLy&wj5^&Y)xdpv&@* zGfeCGORfcd6Z(_O@VeG@G9H+-B<9~HobKhQ?9uWPZbja`d2^L1K~r#!%7ysrov`dkur z+Fa)K>Q!qDs?V^zUM0_!%?9r31ASYhkq|7s^Rh>Bjpb*E;dgrp^Ut9mA#vB2w>4xs z!xt35w7Mp$urY={UR9$v%K=-bX_?Uzi4pnrq zWGDVra(`IKLlUa~KyDaVJPRdc<9_9r#g#Lv!)F1`-3>wyh_K>!ky1p&j_p7LPoBJi zdGX@bM>`ea(}x4<5gjcOjR!p@8OWotVk{$%;0j^1?whUDNU{E_*Y6%oI}cWl0UEnx z2NrS;n}+*^WjPMqu3NfL?TaGmV`)F+Xvi?@`t43L%!#kc}Lo=$sgfjS9c z6QDkFbToT)_zumVYFy=1T(&j1lVE00BbPRvAjA8?hKY1WQHUlo>O3>7Oo|YAz%QH( zUN~?)y;}Ce;Iv&Ai?cv}%qy~@Z`gW6-?+zIrAmi@LAqW!%-?BP_yDDp=W|+c!1F`E zFr3JfkGqIK3{|+Ldh^B?n(kKOt_3ie0LMfHc4y9DV*gy)d_ibfIkVrq8qRZ&VKkf$ z5Xp?D6L}v4U8asNNa+vvji~-5XMp7P?>_2%4?a}HA-%fMe|8Y{!&)JDx9+BI+#&U7 z#Qqoc(cvLYS={m&`3$KMYObCBtF)}>E&QaJAN6lqdaYg%?57CTAPYiaxm(WQPMonaZR9V4 zS=Qdn4}G)4kdTXUdxf_iv+P*|?2-BX=jOcY5)I9+bfMg2hD9ZJOq*7O#oy?gRY$Uw zLy+ergZrkN*}^nZ#>Ey=dwdTe#|!?HFmK=Xj;y5S*dLB3+uha(Qzqy4A3M`M)&PS2 z=?i(_QW$nxN$FdJ+dXmk=v`2-@%xo`id9PzO=(kf5{uEZqnq8*n6&-C#;wfRrt`tR zI2r$ln2+4GKb7V4hY8+T{pvOehbg1fWTG^)ilchG`#o=nTMMS&;Dr8{Td zK@muuy*mRj5U3lz4UfBZ1H&Y-nc-ql$)J8!H{!86Tsc|v{8L8C6r6Sbb$WsI9bVW+ zn=dw|9Ju_Wt*ljhbd{9OBdZk$i4Q#8& zypYmvx%ZiF zR;{-tx^C@6oT2+%tGl~xNY|7lMDM^1Hiu*@DOgBC!t#uSVX<*>AeW(h*NeU1BR_;p z78=+D1qIhPHp*R24L1iBpb!mT52h(u-b}G78CjI(Sm^S4I3?qMyt9j^Rr%7Ze0pfWN?3o;ul_Up2c0j{Km3VWId|Qeac8O8T4ns}P`52yEHw!7d#OLM4CJYd=EZUCZl&R{j^}(vyUpEcl^}w0Dhipi^PX}}Lqzth9Ckp@ZzfimaGm9{0~l08I5;~x{v6<7(h@LZu_p>kF>T}e} zext>DPPF`3;!}P&kG6bP=wc?SY_seHf9r*m5n8z{6Q)9fS zwr-@fdr!VcE(A}_!xoQ^ZukobEnin}oH~-5OY|4g@H&z`%HCA3x&V319ruHbIXVJ> zOyYdW-9r>JdwlUiOOAsy#AYKqTd(4z67uwWs_I}spc&=V?%7li_ln=mq|F?GwkvA_ zD`~qL=UtC8hu80d6ap-^`Pq>_cYiw`>@#}*f!g4)1odK{w=c?%i`8N>Z|wAwA1dnJ zM6geqYPosD?r|n{2@%dCv3Kjm4XKbcspJDLDZ!_{NP2&ZZ(|ZA*%eTZ^L5oB_&C0) zCcY(E{Mm)``59|W`h&fO{LSt9x28D-&>#*#*DT;_NPM(NeawdaIH2IsNTMP@iExDF z>yCSf>d(d`lX#ry8JdosxwyFChl!9nFT<8Jo%A7RNGg>xN;m{}Qe_WK z@b+TgWWJ6`%kw(B_dfjw>fcY_7;4ZT&tx%Mbz%Wv;%b7HCl`gE$dCx=9HY$}7Vc|P zovuc!!|s$0d&)MX6s*?KET1J(Wwn(4UO^_smzvjgx43q?)vFb92{`b5#~RB83E*FV zzng>v^7i&NsHFz!u&Ft)-|coLznyYkQbJ;Dv6-iK(Uk_GZYQ15`SR0*f(*{4h5uuC zQKESr`3u`%b&7mGmHNh^PeqDT$L(B(Gy^j*kW}b(ow(%6J<$&}h3V)`w_BSY>($jx z@$UjIf$jO+qtwZ>-wtwYewtNnyux64-K!20kj-cjciUo8sC{-_q9-F;2hM<)nk3+h zHg<8AY;CLY0%7;NCMJsxB9_i&&4?D}RtuZ^wJYjHKdu(ATHH|{X2Ye4^d*0>*?dpT zqfOkkGqiRGyt}KHZ>CV^#Aq+>NGYy-;CSD17fl$rFK+-@-M`jIGuxiUw%k7aK!bz3 z{(+KBulkZ%B=e2cy~51ty}x8*!>e|LNcj;=H{L*I4zX}(r0nCKobPrV-XQa z_Q%s*-yXKoq#9MLUIVQfb<4geR{(_3oQVP=M-TLyEL4VUSKq1OVAtWEoLp$i$Hmbo z+urWivKaKmog;#+?l5ck$_oH1y+*(pRNH|=3`r8JfxFA) zp+)}SATsq&xvhWoE!~(6=W#Lsfx(87 zN9$@d4zZYCi&Ro0r2|@9w=*rk*AI%$SBN&7Xccg2cnWkTo8!C0rrq&1)8HZotocO1 zt$l3VYKkQly~(xETcm{)!7r?|)2oC8T5_u&XedlexrbkB`4f^e<5y&J3snaM24azt zYChP3`8~uWB|D8-Ul9|ddW&SO078Y1{D@(TVg(rM4>*$Rb7c&+eeaddKo%g8$&pFxJ8V_1^h|-#9!lk!_qbe`2iiZLzG0qTIMZZG z@9jDs?r#a0^%3zj?B!j+X(b-F7fk>-ZJoP5g+z-kP?CphC>gl#Inv?1-KycQCyZ!x zq*E%qMYsaw3`kKZS0?R)`5~l~Os&Q|Dq4Ua85#K*!y!(~*H%wH*XDG~g$CHj*x1h@ zxO88u`#PzqUVr!ytY%psP;Uo4S#&%60oknwT7mAZDbWJkwU4ey4~8!<()rv@wz49k z)6<94teU&$>+PN38H19?flhCfF zr+z+E>qZvpAmY*xj^}BA&s)TEcZqjtm-(sSAVM#oga|XLJrW9iIT3g4$X6QbU1!Z` zywdBXz2bOjClp$CksUmj4)(Csze^gSopOL%{>bj`kzh7A>ro<1L$jL#1ae;+yb$+z zkt4jEZ08oG5?#QB>f@vWvFm4!bf@e}4|gR8)pzB^tHVSX^*c&hKy!d`_^e#=11;p(pU8C6SsC<5Qq;J2jUvVa+IWCuETj$UOLd` zaM1eb31qLqnNP6|fb-(|`uZ+m%Ed~OrlubR9-J#EIyyU<@KM*-uWW8&^V-ywV1Vs~ z`z$J&1=+nm9TvFWWw>nI0Rrt%0+w%pOL39@6_Q+7%zR&8^It8Z)j*(0d!hz z4ufSK9odOXi@o-ynKXeU>qLG^ttPb{L)Rz?77qTX8&Au5z7`19f!+(it&q*tHu6(* zSj@&64kj}h4W)92pDpc{_mXyQ+cz{T&$}Hq+wboX<{!-%fy)7nL}qy@Q>I#6q*faa zG)}Qw&Wp8r-it{~(|Lub($mt0CTO~TKeJc1;0o#PkYs3HKc21xeg6DBg8wFO&dpg- zF?MNjPBfhOH=tElK*+Xob^2Sk+!~_cGzz2$5)wN{DCK!$Dqw3MI)k_XpbJOx4YOld z^Wsa#K@JiKtmfC=Y7|<#n>W-^Ea}(~onDJ!8#aOV+zJBAxSG`v+9lAWG3=oQ@~}+8 zIp8ej-FP|70>0n0rayCSKW*u|*|d-2iw|{$phjUlb_BA|rI7JjD=p94LASx*cXxLu`aHehkj%`~RN{!k z6%`c~PZui=!muji(aeq;Y?wmj(#?{_gG`}7^dc>--*3b-htkfGE`cGFf$3J=8O8km zJf0&BM;L?oh7ozNBq|Om-3a_pD6InjNb+JI3y$RbA+m&q0o8}y2!AnUFi!F=bH%Jp zL5ckGqtYU&o!!{{EW zLQ?p&vJR7j&@0sM=2+^p(ytDD99Ip06f|gpS)|!$WGPKc^70T1CqEc4>@a~qE^A>N z&fD1u&L_XAT#mc(79`SxScX@u%WT#}03AmB2n6*mJNdczOuEk%a-;;aMxBdK>4%!0 z+$Zoc+aWG!8DLyrzI*|Y)FYq|ZgpU;$%O@QxuaR4SY%{}Hd8}Lxe=)~bNddMD>Lno z%Zrf_IaWexm+c&^0Yet0!nm@sG8W?eypl@(6-!n^Cc-cubRk4}49?V&Y zl1?>6pgY{3UamHFI6YpZ1fcnhZ|g%!H0-y>UWAGGjn8=V=dr#9I5~)>TbQz@OMnsB zBOZu17R{32XWL8yS=Z=fpR~20mQ|IUB>l+x1mTCz|y~7G4;xGid zKYh@5i`J|;pS;vlbgNct=^(it+_19i<|ZzVB$GRCVG+E%tc?l}*WKOifL(qB68bFy zlykM*D`!D|w^Oj`m$_BNyFqtCAe}y2WtY&Jux22W9o7+=8vlti_+!G6by>lp^}Zj} zf8T?B>A{gxcj2O%II;K3Q0FGheDFSKV63&AN3xvrWG3;PHUwR(C%UTeEBN}k8%j-aRz z2^O`j**U%Z0eH3X9|oy3@11U1L!VvN?8%^b8F_W=!9kAieMX-KBeKi2u5+gBuF*5P zJBIG7o~c5lIp*H);syYmQXmWAkjh}5(|Kn!i8UlP_%S_cBbm?U`v5(r@AWAZi-cs5 z4dPtK@*>skpx%Kr#@dKEsZVl*_wnvj6YmiF0lIBf4B7o27M7in0RtfI!9pVeqc%+N zyf{W8s8DIN(nuB_gEaKFzAj*pKIq#;fDONyD%D~zlX;%VaJY{f5&-a~wm>|gJPiRL z0LF2D7DQE!yu?=b@&J&<-hx|2;<^tU!gQ4h784WGQza;)9Ep6V738*Dh*L5{i@RPc(BCv3vy@1aryuuLI+=mCg-KBUrFF~d1gG@N~FjVZ=9VT>E*Rcmj27ZyWs@-1|0xF|mQLdv#O5#!!3U zKt#S@^(BVLma2m8aUHo(xQ1c_f|MaB8p$4(8m_Bi7X@h2^%{~1LtpfnN-5hDRgp>Iguw;UwlyrM$BM$ciVs0A&?yAUWgEP}Zpi=lZSBzI`_+G%=uH_o9+O)TrNr@i9f2ZAv%D7{Av?<%J3y!hORrJ(yQ+l>7-) zkB@%x{GvnW*JHYQL;E)7R%A;5a}~`sX^v!$!MYgfoi1yAw~q#tg7s}kxn>TYE3^R} z?E^`s7ICx++PU7h zyIf0htUn^^lSjqlHdKO)|chz-9Y6=r^Da7M-KeALjLc9dC>S1fPF$dw)#1H z>C1wg=k9QFBi1eReg8FOjh|ctVxS#1=GD68Aax!!_DnR)fpmsR?P=2jqY2UWZdp{@K27J{Vh`x+JM3g9bF-k49qZXba&ZAqeo59Vah&=I7unMKxM6=sgD96l$!3F9;|Uo^=9AI3@w{kik9bo0JUsFi`=1>v zvP{|dm!zo65cCvwd*_;GOtm)_FIbT|MyUrr+lwKA9FdSoJ`J~Po*{lX*DJ60o!8}e zF(Id$r5b6n&;!bfJ=(l>yZFy%A#RY9Rywa`-t0Tsxe+N+%jO_XA@PrTJU?F7CSHP7 zKAt*;nT*m$IcmfpqG8+>g|iqO``pi;&Z!sW(lRGtsI2eS@VFlW7KaC+XMDF{KPXK^+;HtfHb~h7k9zO0kkTI}rjp@oR4GWRWn! z7u-K9HC0py3JNN`9zB5+UtCHm7E%Jkk}{ZAAfc*C2xNANi9s^T0{lzq#S)T|z=+tm zxVr2qPiQKlr!8rdz7KG7zkdG~ES!u^Ns$DY6-1;cSbU#1rE);;yCi#{p9)beXxdQ{ zOv=lqp8>H`G~zdXXx3KKLU?&Iq-v;l05P+f)(}rk$mNqY$F15G6BvnkECeMBnFDkF{ zIisx;dSOTSb`QNaaR{ObfnD|gH?u=#lV5Gv{ z33>w76Ox`EwPNBfh7z$U<$lx7jma4(>7*_+tmV407*b6|rz${B2o5!1j_&o?Q<6As-dtaoTpmBA zOh-qRR^NgP3Z7W5ii(Plfu8`WVZD>0F1_agj-w=VSdng(J<~ni984VaX|1;ec(kjv zi1*agZQJ&?K(;wvX*B#X5C;xhna<;+tx8aNHrZdq#wU^t8Y*2vQxGcz;i znX&-K5B9uyj~)nDIU@yRRdw4rDbGlhK4RnHK|&z(ft~F@D#nP9ij9Nw5*N2eFM!0jcF{eYrAd(Ur*X#vmGi~@0E@xx^I;6j2Pn(vVH&2|H5L_#5V}-K-k=xf%Ac~ zdLmsW%7H=Y^wR&USH8|le1m}_{Kj58`miX`@1XwgSW_+CV63%<7|opSE_m za(#W>)zf1;2~r031$Qg*+3I2Iqv7#tH?XNNCnqO}$jG`^M=Purv#cX4&$|G|@(KuZ zb_dbwfs!Ao1c-$eB>lX&yh;< z9aj-pJPip6f!&%c#DjxJ1&*7*p6=H!>DJD{k-)>?hP(*r{sb`abpY80M>3>R?CIVC zoTGt%OV8T1yX80;ADqlnu=s9HRxa)6tZNPt3B`6Uml~P8LH|u^3R3lua6ZRcu7}=8 zDltw0btL9|5`Q~pCMlA!I!M9UzN0x*B1s(FQ#!_cw}b4)7X0Z@M0QNzSb8d@W7ngC zWcgmQbY(23^asRWX-^d71Y0@Eq zNB4u4+XGk7!)u^Anj@W(4!VbZia4f<)wU<{v78oNsNns`N66z8umgZ(U@|2I#-ZD^ zx&la$qobpr>S=<42Vg!ppbcpZh*Dh7=ZjGQ!a+KPT?eSq0%fyZ4e?;0dN)znE3Pq9 zZ})V-2Pjv(BqZGFByga5|9-nDmCoU4SumWGuMeOzb{5d~>gqUw(%dtW9+mw)R}P@V zoqOaR{kNdkmp2Xt=T;L z)OH}DcvWB~()&x^evI^UbuK)2mBjmCUy;I<%l9CW5&W;ZB1eJXp>@Kou>rVLG8@$SjTz>UhpAk1Voem7j+p@9MYll9+E z#Xw+dboKP$NWQ%I{{6f8bQ$@G&P0B6^eaH0J1PwN5m8VmfLvgN95j-zKm|no-)1qD zxG$r|x7T+|TMgTNUjTjyV0oXBeBlCE#sqqeuT9QO>?w33D--!#cAJb&2kHR-X9AdH zM(6un$gas~<_mz!rXf@DsQFs1`=Zit5C{?dfRU#{QnG_HGsd@rzJFh7^MTVhaJdbi zV+68@G~i5Xa-lzGQf9;?LMtcY~? zDPWQR;JJwdD@v<3>~9u=$Rp%1i=`~?v1Zm+K3`;S-qw4(DP?eu=Oel}oyabgi`5F% z#OmR)S*tIakyVdnec@Na_qcG4n=kCvH_T#;$~$`i>sxhhh8?My_2ZYR!NesCS0q^0 z-P-6I+kN82%ga~h*YWS*hsmb*3w))E$v7}Rb@*N_L7a4Jxt;HBkbqV)G z_Sygx`k-e&0~)3P7b2ps|F-q+1O+HJo~{&q`%zRB`cwoTm*$uZ>H38P97h@v!WeCE zFpH*Bid!i$ebd$^%I(RDfO(fIz?m0X{1x zG7@vk`U5_Y(g3YDMnDBz3e10B)W8K&QtAOrcWWYFAw%eWZovmW*R$mzp2N2+EHU{C zxw_>OrPXCaKLIrbh_bDvR<8`9{0xAt<^^2nv^l%sK%$_dqazStnf*BlZ7Oc(-rgG@ zhSuaVD2!jFikow=wy4r7XIPmPFC|LnjCoY?HMxXBV!$b5YnR;`gH`YYQ-uDAaakV= zmeoe-Qti=Bv6eQInhiG!(RB>$d45&36eu?cvgIj8+RsNwMqcsR0!$FCQmRZ7rN=b97Z2o#m_@~F8T_kN*q%zw1CWu~O0JkJq1O^O7A zhy9VTrfaRp0CJxMXu(0U7sJ6vg$EGd7zm2jdcv}Razf(ZrmI5MwG@CGQYq|VI5bMu z0P{5h`1_B6iazby87`-rKyGXel)8bMJ4TU`S@YM>8!3RwxC2UYPv58n%>JiCJPZI9 zYO@k@9_!KmViTzUHp!nJHbcS+Oi|!|B>>?`iha8PSR#iu}&M$Lwp$&49k(#~19tc++ z3(a}Lj|hu9sYEv!T>~FSdmtfZOrH~M6~TQ~LROVc8*h8uCjtj)6kKk7IH-RShA-UI zCa|#ii?oP~T?zT)KYRSqX-qBXBvI@*_@4YcVn!@>Ltc)r^lj;AH96}6Rn-kT5DA4c z8A`;2pPWX?CSu)i>v@WiGf;p<5n9BCqSVpjh&SU%9x3{5ZO=Z1k|#sC`NdPpl;mX7 zsbFk$Tyr$+=%AF8r~5(jRUu)NjaB|m@y)%~?7XR1mY$zzJRt79ikx1y?Q-`-56$y8BN?@hZWOltexsj%tk zuK)?c=Lr<8;gjr@L2*Dw;;WZ01*Jl7i>hx%s76PrBE7LXlQyiB7L~ntWsl6K<0I4<44loXt}@*6!b*^mTci-GLZj!aPS8PI2>YPDWKrPTP?f`2yt${H>!Q?%-KW0hLML z|I<;1PJdy!o!oY`0@I#tn~6&F;+mJj>{#gM>j`AVC836ChA$HonO^R*vgwo=k}1~| z|J<}0VT}F7A&)JT4bgSt{#6|t@AVRWYWq8@;`z4{U8nWTRZY7uh5lL8_cwQl{Q~l>7XcLtB?3&;K2+SipHh$Yo0t32sbnUDJ55C7&$eQ< zArciJIS>N65&JU#jZEQp8ZRmEhyVG@CXJq&;DkN|9&6q$H)gyN?Re-QA!|cY`!YgLHRy_dEOi-hcgg z%e}bQH8bCu`>t4ZoAx-ycEr4Vb#i#wMhz+BeRRS$L^Io$97D_`m{|EuzV~aXrnla# z=St-$aNjte5?`xVg;CEC3fy#7ogH4>G1Ql2+sXOdk$MM@U|8}2&1^;;U)Ym%&X2jt zS%#a=f?n$Pv+@q$|e#PGb+ z^f@_FB$y(e!~!7n8zS;FEuWB)$E%&b*fchGg&dV=kS)TD6lYe|u`=^{hLZ#nbtiaX zlD7Buo+z39DndZRm6{q>d;y<;&Xsik@M6o(Iiq;F=Ew($M2QnOr)%RNqohJTpxu1+ z<(wN4pp2GwpXAZniWr;CW){krxYpI!B3qfcuR291`jVL$oygU`qt}w-GUHQT8scW` z`v})(Zq0VsTGLp^i|>~Q7&PZcP0KHp;zs4pS{&P&O_aty8>h;f3s92^HqUmkjB`+X zsQujjN%|g7qo_>kgP;W8>Avg%yUiZi$jqP?9q!N56ciPFu5m6(OSZR2{!~5=8>~%LySDp&2&)M)BAYi7 z^L58g>I$C`Njn!Y5u9;rSjeIP98uq{8jChL%yhD)jE4)Wc5cQ= zy}4p4`+>XHfh{>bR^+aKSuY<*m0Xd2Z*^_Zxm8>CuzSAl`3Sxgzr|hQ+!dzwma^Ma z+s+=(FFMALc~hB|_R}wr{!;St$9n2QzlL02N{0O;FvPWVjxde?QqJkH^6N8wQhkiq z4RAHWR*?wzey(}dCO5#)sxEttdDyay8q$B&N)#1A(ZCPpV}|j`2Ae|oI6L7 zj(qEk4>M|;Zf2OPW+g{E&zya|60!Ed z#9AI~6YeWBe38_f9~8-?(F26iGghPUwh-^>pU6MwM;ic{eF0h6Po%GKnkJ~R4>#8? zw1;$<_ux3ccG&%Le!QiUW?V3_wYa!gU_8QjezK#HEBMZ}#P!0??Q{-}v1Yf?Xk=un zP#X=9v>fG9^tkRHps%Vq=+R#7L(Y7X1OY=0lx39O5j+J&_Z4T?;e0bI`JZr_TazG_9OBx!n>FY& zWv0J2kP#1f2c91FB{3d8K1!?y@|((qKyIY18C)vR6ay>6tD{qa(D3r~+#A&nlFv?n zsky*>20`Ys+aMaY4Zj9oAkCNlL;&>k1C$m<Jd+M7U!dT# z1R>7xCg+*j@mf|=-mt_Z$n=UKtOs|aGJBFiAv|Q3R(G~ty)#;@ zk99I-pVUVD@3c~`0zfQGaBb1~zpjUNH@nmVBn#Cjd%oQziM!NTwLKFU zEI@#oCT!}x9)ijnu|yZ@e@eK0_C2-Z5Pz!)dHy?@nR#D2qr;B!@?rR{KCMLAM1rLH z%q2Be?pYy!5$V4OjvU`-s{8?058fp1lugZby~tX{sS-TSJG^`#LHOc@y^}A*aQ&Kz@ho9`^hvtjyKBX^=j->9Iii2WN3uMUjYuEw<*+sZXIfvEfus3D!#>vfY!P*(_r?>((qiP1YCv93E z$M{7%6)H{3xwc%aSFy}APBavjO){O^vCWJYUHe7SEN|^u@;%l1konOfenjUY@|(MZ z@rX4lf8`+1ZD-Kd;4MY7po8RXeS$h)d-sv{(F4p z{>5H_m-M3yE|Cag-cloTO<*%oxZXKs(3tRM*?_UKj9>@B>gULEy+4;zWnI$VJm`1x zrTvg8W`kl3fz;MUkX>d$c#Pzr_i#XcKJ!?jamReFnv^1lDmUrITCfi&lC&he9UfRn zH7?`!Hk%w>6_OF)wGv4Ar@9t9?E7_19xc<`ksQ`Y{;n4SPX-*BY=xqP1)oe19~2u6 zA@@I<07q@JHD0Q`1>;v=z59)F1bP3O4d{#&a+Dfs91n~pC0#X{V?KQRn4(etCy6*q zrPhfRLalfKZEDf8?tc3A*`p!JapO{D#@fRH<%l(S8oD}YXWK!y0(@*>M{q3--GUnbF^sCvWUL6i+)OQC0=w>iHtu*Tj#G3St`pC1Bt4G~BMk*tYnX)XKPugK<>ztlE9PXa zDcwd791~IGipXwPXdPV|j45)?ZM&l2nnAp!@#TME?qf8l{}RoSJOU?u^ch}d*z155 zta?JUv_j>2!7Tgy0|(@b7C)s>H=GQ+-j40AfuV>*cm9GD9PEbePeSrT{CW*^Z!wPC zUZjUnMEMB})@pTOl<2kqsjBw6%Y3h`@>vhknFAZlkXR+#9k~(+Med;e_J0a=l(#`sEy2S&D`zi zZ4xdji81eo(skd+}9PvSW@9o$htYJ}p0YzfkcYzUAdUeG{Qv zv9dL0GH%`M#j=4VFORY*pnyLR;N{Br_<&#&4YqZIGyU$}6hL8^)kZLE{R-qjzWL zcc|lI_hsixyY--6dO z_YdM>G~fhT(^Tk>YWtl$J9>b%QT9L*9)~A>E!H&L8Yt-ue59xup38D*J7z&4^8(s= zVzY{`rw%8*84>U!;sMKnLY&#SG2QSTE&ECdWQ(XD3t$tvt~7EZRE!aImplt-b=OS- z=_Pn<=-5m~e?yrB2irM|BDejvI22U6E;0nn1*HU$^0=NT`T`$cA)6J$>1e$LKCzI4 z!)bky)V1mVpzSOf+{Yo<3%uKOjA!5QDI|EdH%Q}~bmtOrUPyj(G;1jp9}Dl=nz{T? z*mB_=EoGOpxMQ-TvAH>PT7*Xw&hOpt`nSY4;@=5-vflo=+3|Kcty=moYc|J=VftQs zT|Z-R@f@xTX63d_Iw{S4yy;|mG6PNgks()XgMGMQMJlYw#*G)rL5V`1)?6ex_+A>{#m&m50 z*(2b%qF412(V)De;bbED_;chgdfFGXHjQ?)k^1+8WgR@WYuV{Ldza7TA7$>^=IUNlDD?rrG5gaSw+g_iQHaH9zCw zOM3C0DNX+JkqyxfJF%%GMm@<{@R1o?fQw=mk{-evHzPe9|kU zH?duq@I}CWobCEyTF-^@KaxWo-~7o>wQl0VxoYY$MToU(x4G4{JXVN*v_!HlM)mAf zlK!_F{4c`oP}!+ODzn*SDdog{{)@1B>G*?mz>x}pWP{|$PYY~LhpP?1v8;g~wxOZn zB_$=)$mZ$VY4dRfl*bHk_*&tI7dQ~}*a38CFASqG(3jTJHpGR5G|ad784e-k111b+ z>Ugg%PEgt+4==B<@Nkc&xi7%(uo^MJ!2v96n09Tt!crTWaDH%FHWFyK?Bx^5s{y>< z%XcGgWn~p05=jmB2l(m+zzPC}x(^>dypzEl&ObqjRPx z#-0T3GZaxypOfyd!+QvVvZvsn*mByS78DY)1j#K*X$(*S&{^;EM~YpmS5D|PQ2Cb- z75ewo<$J?#P&3ic($06Y&%ETVU4Q@TsN?eN0HjiH%_b{^SBL|I;m7a;8G)jzC@3gU z5Ordrx~AR-TY8PU_|L_9L#NBx!f6zgl%A`r2Gb4;0YvqI_fe*vj`sFf8qdnAfH%H_ zhN(0A`zt7@F~2vwQ&lD5Ca z>p7QZ#Z#YaWzZkW+^iHn`p-y3xXaMbnf9kDSz(k;?MnY6r-gU(p?dq5Q44RDqIO$( zKUr{0*87|HUU^U5tMh+!e04`PIOWBgltg3OALCP<$<2mhgxGax32ice(OZ9F(F`Y$ z{~14 z**mti*_iUZL2x8=9af3GTvicv)ZQRh-M?t-;wd1j&Z_2bTf^g)DpUJlRj|^+ktUFr z0trh7xI3la<>hs^L$Jo=3V!|>jUQSK+fBX}yz3mBm}m9!hV!pzUMCKi{?6vWsdD6c zdU&&3;Cj_yl%PSZ7Z>nw<3{hdV%V9(6p^T89M=p(-5U)JTZS1-a-kp(s`Mq^_m*Q; zL8g#$lV*FFv*35`bfUl9dueB4=Q;K|@fDewj+6G^@_(nr9$&qYfj~?%4W2kd{efxE_^mI;6MB3MD3K^1NO*X-a%rh%(|u5twwRVrwSuNW5+-18 zzXR9*e*Z$bR{?)EcEMSao2s^_=HpAMzd5cub#?{eL#K$Yx@8MqsnG^}(=V?tb{-M4 z`B!gO`GKh;_U#_etxQ@?P0hoNkzOX(fihDSaIc6((*Lqmv3)Nu|L4!2ig{l;RQsL# zX9G;Oul0LKs_b|ECn3dCRDGW&%&HNj-5yNgwif2$arf!dr$!Mq`C^bl#}-Ej^e~V= z*~k39vx<~+FTn%?Sq!_V&))Qy{mIj(vI|G#C_V-n?v@t$-ru?65Ra3ijP8nLkAe%YZ6a z(+yExis4J}2GGaSdT=!8i7hD&x0qq5;*Wlh4z>TMXW^s2jvCELTc*}u2hnQ-nN&W3 zH&yuRli`UC0UGW>-E*@IUkNN`{zI7QN9XABoQ`1S>`QAC&VD<^cj4V_HB##=yd-F+ zOWZ7T{a(qU(nbBWp7y%{)&O0zHG^7i9Y#oDu}omp*=U6eL9f~g_Q)h}^n^M`Ohp;D zSd8=Ua;EAPcDK0nf(F1Grb2qRweMJP&<$IZWfLvOo@*i8il2*X>#8ndJ}*fW`AYag zz44hH9i)IxM0RO8wszDX34Jt;<}kQRgf-Y_pQUfTurc$+p3CvN)sHh?{x|x8s@8aA z5S2^qMs+h$Ep@Y%Z{6~Tx(ls*wA_c6+LCz%-M{!VDR287EVd7{wi>AK9BUlLhD{8} z23g#kNe!BQp;o_M^FbdZARs5>k7;ryy}%h4;(HhO6G;FELw<{-hsbxRtjTnSPe>vr zb}3d9JDtNJV~H!3HPKw$^T)Kf&EgF>#-C_)bt^vfNM zP4~8}(dkV@$QM)Z-Vs^lve=SMY_b#9fSZnm*az~cyRpwZ=pp8t{p~L2hv>i5NxO}% z7>x-vw$z&b)*8PmypX0NjTqt1Ptz?}>7Unpe`PpkKug4A{4zdRpYuq80m3O;Y~Sa-e*Bxzs%PEM9AqtzW6S648) zr(67-n@nT zL_=PaO~y48EMnkJZb7xC6J`5FMs=q%H`i@|c^TD=uC2vOQUeMd-L0pk?V40O`w{S} zkdP1vWf(G;tErL&Efi2yFqF@I!*Ef-$Y2hmmdb=imQ{W8&<4(5@mPCjXSUtc^x)FU ziuPL~8aldc1%|mQy+WmEW?l4-j*e2vGHaLG@4!BRs6cUx`TaD^{LCyYpk(}*J5K*U zAsl!*yaNM|Ra~x@ZMaZaRe=)yq*W(FshK%6ASiDb*cQ;z`pd_R>zboOLf%6M;n`a- zq+6;CISmG-$}pQ74-Lm0g95r(w-diLh+Jc%P4a(cxYHNFE=SF%lfx$kXmF|cnbDs) zi{P*@0k{UBDS|6YTm|fmFlj7+O)cB5GGlOQc^Qm7Nfsc1=r7V0t8ZSh;et^CC3OmZ zGE=`2FDWk{NXjh?Ml|KzV~zUP_O5d78jc=Mp8q~PKlbpd3|jOXhzNNa>G_S{f4GtK zjdRV*2?}{anM4yb4rQFKUei4;&i^)x)-^M4oumYoH#te}`t~zNW0_UKQNJ7f)iUo7?)J4JoXWB$*XJ zMX^tKvgI2_*5KSv!{zUr(2xBK9!49Qe%54Wn~>GN`@TNgfXI${uI#j39WlMG-Zr^y zvA3blF zv63gCMV3#}IX~!qZo#gSn4sS4V#g}Bo4#M?W~p#y2UHffD{<{?PV4iOTfQ)2&+7(V zIC*CEGjfC-XpbLgUWn&+949A>c?Y`WUiu0DZ1}yRs4A4+-=3-6=AhY;x{v)PBBGT; z%~rVLj>p|2N}gtGcfDo4Pr3Kxq`bW`ms)yTLqj4vxuu3&l+ARRyM<~>kE9q?cM(aO z%G;lcYK?7hGLy{rQNWpfs?g+$Jk`WMUHS!5{#AN!k7c*1(`Jv17?Pd7O(!pmVVMh> z_wD_0)zGHN9^*HSc=MUw<+xY*+?6#XDw4@gtc*Rtdoh6`YHuPsuCl~-V!zGJZ0}Ki zhg||yqQahrVvGseE9+?2L<#AH&uF)lC4P>iJ1O*sqyBw<6P;J)Q|^@a6C&~AP7YdB zXNFH6c(nKtKoc#u!PJ99hJvo435##D9K3Q_1?Hm#Uwv?>hn?iKTwHiiY6@t4mq!cF zs|&V}^4WbGM?gn+d!^Au!DFD1n2mb52Lhb}P!ZRi&ifHXVRKM`#CUR26>+|rrX2B$ za}dZSK}}5x*YgT2`d@k9zTN(TN%{wx;>{5qJNR=D4kP6WaRW!9M>dXJ4*NxN)YaTI zsxirU+F?k}uDw-&BCZbChy1`ZFk;?ujPrkzu~HS|CBe18jxg#2u$lawkQoAj9@qt6 zTg?7e<}2&`^T%MkgeHh*-&@1H)$lD53Z!4|`lUWrF=$w-OvG;11rpBo!?i)cuu;OL1a-B}aGtCk8Aa~{EHad27_Pa84ce{NTra|pFJPu&2}YKmUtPEmS{aemR`t0 zZ$fF$y4EP9nHZL$mlYY~NqTzSe!?L|H)nA~N?^736XCKu`pC}QDuF!JSlpzq644?* zwaEC+X4T-^PzT8WC4dn$C<3z*5TltZ=DttY_Zc$r*Z!Dx6_ zJC^rj_3m6am!w-v|7?0;zenn5Ou{ijLBHiG#|qX)LvDV6W~(t@!RAGM;0>cESU)3L zt@&+3|6mSv?6eJA?JV=u5z$n|F zx_cwR&8HOKc|g2uxwk{k?AWV;pd63$YTb3)!FCz=B(xH}wD+u*%|{`ijz4?Pw8}Va zcDVUj4O6BQGL~nBSZFff{m7)Lvjo00F9j`|{|a9%Gz-P2vz6qR$GSY#=^pHg`N=bX znH&!CBNpS2mnac$!xhogx*Cbi=VCDv`VyJfdvw%4I3->@7P=JxS#+oQKn9%Sig+`I zOJdj6Vk(|cJ$NU#>;3?1edQPHzOrX}4jX#E1+Hl^QD&u^Kgxmwx?xlFST9E`V#6 z{XztmK)sA0aqs*_4Ytsu(l9U_UA$UC!MZRx!y%R1C<_e>LuqH}6!Q+nOs?%tcQs*h zBmuMcwQ_{k?CJbBa@Rv_Xvq1qZJC0Uhzkn~ZPx$#pu!`nazSGUoLH|f9^JaG)d?_I za8UL^w>M-o^)N7K^#+o$K0}qe|J_}G3yvdDZYxoUxzp5yICk^Ap~fVAQLux->w1wn zdBedUK{5b|1SZQ4Fnaa2zgmJUfnwm={`}#In#u_TP|SLKO_N_6&w@uc_Xgk76dIdfdbf6WoU^@=;(jW655o04{W@% z)Hc_Tfk_W!d81a9RERpi%?pws6AaP#8kTdSA2^?fevKcY_km{5S--o*=JJksNUs0N z$c?gF{Oy{-6{BgyjS-v1!Am+Ocki!0tQW~7gjNg<_fN2F?zix#n})VoZz3D9JW1QF z?-pk{U}RgnWfy43;F395KVsl|I~SqCN6k0E>dVD>D4V1u%kwuff1gB1K=#m`mob@W zMO8F-@ZcMdm&x3v>|b>0Q;I7V@v^WN+T23y%SVW)h?|_-SoyJ?|Ab|4AJ667rs}c| zP4 z>M7e~f5+FDg>y~nYpf0lgonE=6p|*CQCb#ir1U!^Vvf~2VkB;^5cwRf7iHu~NWG9F z5RQ|cF`_ay+C3dG#PRk!tWnA`{%0t5NL;)!9fKWV@kXQmgxeT@gz;e+!_6zK{Df{@ zcbCQ!H1;nCnrdE3+OL>w>ir!Bwo|0K+?dg?dlxK~DMO(MrscQJSNf)=2vnHslDtLm z)J^t2d`>fNU6XfD&N%Y7(IAZvkj>vHt=adRaC?siTy1|A{I?QGpFX3Ab7pcigPTzH zQ`1KJiB#63FJs;1mI5Q&&m_f2B9z%IU#+O`R`lfu;#(%+XsycTM)w39o9g@${&hX_ z4=T?0%3U2_T1{mOI)jQDbL!SdYybTA3nM6C=gkt{I-T%g>X~u7U`Rx(o*Cy32hrXmyQw zxp2P#_XQ4x0g%zwH``Z%Ju?!*UCt>foZ)iVgA2hLI98{KSzchBAyG;Ph%7gn$F}pC zG5{lAJxQp3|NXut#0Q-&nU8{rAC(Z4qd-?#S&4|3VF!Z)RDUM$MVkhUY;p{Nw57eL zC(m|%IxbJGdLL$C?eYm@SAkzpM*Ye862XFGx!8_f-=d@f&A$t9NtXcs!CsZ&^IA@r z>;L|htMA(1dr3p%v$xO&md#HaCrhBq1hV>lmF>oI6ziAfkN-2B(B4JU@a&f^q;gEx zYF?$ZEGee{_Sv($6Q_|-*RYG5tGMxvQ*I=du&Sh%AP3q3`m>wC+mK3UZlW%jdA5kw zr81t-TUnUrG<`oH^0jMsy)>;azt*8K9=^2ve;)#}BM;W(@Z8>%E_q)qI^jdi@N9JD zy!Ty!;KY^s8Vs+gj_h)Y^n$|&69;_9G?~%K>y*Kg57=xdsWz9#PfAqu(P%PhUWFU2lxKY(9w&>j_rzul*ux(9JGQsTG>GP*!T9r#N zMSZs>ySD7f=(4NSx!!60{X|9}J@rYpJqk@vZWLet71e49A>PKm8}(304?|`f)r^?c z1y#-4ONsrWqS45MP^mpZLb{~T`c9kRHg@+ej0q~Mg2hEve9mu5s-xMBg+y|P>WF-! zw}o$gFYf1-?R&18?evGyjhDA=+gROPI?{`4Gz6w1adHZO2zzW8m*I=qjOISG*_tXF zvH52Rr*)D&8U)eofxCg~;#PTHe2+I}n39E#my{T$m%-8GjOD-Xs^_;x z$`M#uED0r(Z9HVzUy_B=KHgp9?H%8xD&D+hyuYmA7%$u(^5id4*)-`1whK0PLzKg4 zT4>@8z0qS~!#gMurtlP}H`B~{z!4o%16^0d4j+p#x=m;>^R@PbUQU+ln&DIY9*jGT zI!hJYmBnq2ch@Fy{$lFCfr$H-UrvcJgKw858o#3{(B)~x`6LC2pRA4IQ?O zLZu2gXsF1)D@4`R-2h<$sG2*qCuD|(@>t%**274M9F_5+@U=7|JFZF}WC5zSI6~bX#23}rL@b2qIow2?9 z#f(HgB_jF*x=<+y@p0iu(}Rak;gg;MIA`qoqS@fB73fGnCbAs0l3?+_&1rJ)WpGo| z)bFUi7=L8&P@ZQ*hDjPHM!64t#V{>DO7BJ#`D?y?W3=xHg3R`wa6+W6GuCc%e*K$+ z->v&s-TY~e6~#LkV`tCX`+TAc!Z0X>UL_yxw^&6~vQ+2d5vUetLlFKYg`Iv2(~hN& z3=iLuq@6ie^9`Bvaj>&*WLDNs>R|jr4|{u zXZWqMvZYqOZ0pK?-H_x;Bj`drgHKxdSTSIH$lxu{ajU_6oZz1OiJOFs=1}R=1mvG2 z5xX}|YdWpD(XH$BGs20hxQ|E5xgZG4^}h>l%$IWd@8lEGmjc^s>vRTLH8~pQf!Oi*fKL*F%?H%8J>7G zaZoQ(x76N%6p_nD{uzI}z_n?G{3k6$U%%{-Tp0Sy&O@9v-#YgLW z^Y*?C9-XfuOUK&gZ{SD$m^V zX=GRnUN7{<;#8k&KnmJ&;SW4}qZb795w% z&MC}LhMT^;E`T#f9+)={^<4sjj&eo1M-<+_{|6PD2Y+|DsFU%abG6TY#x)8uMdSB8 zF9CA?ATF*mM0;}NY@`JOHJAuM9eO#SE)fwCfjYvd&HX4O~)W_+3zZ`ljD(*4PI01mwU~|xZikPD?c?p@VQFdVRqA2 znIkHn;%fQbv^7o9I&{d3Ia)&^dl)HkQcFBGF?j?6-&pCu0<|CFRmHHR`<6fnW zxqC2<8d=WcxtKunTfy4hsg57$4r9kh@OWdL$%QibDosa>;|6%<>`P)}CGH@cIHJ7r zuDp+@V)yq6%9Dqx>Jya`Fx@z7B0g3tS|(RG4JI>*tv3rKFr^DAwP2l(329ipy}1{( z0t-C83abm#De4(6v(xup_n20H`=O#-``(`-#6*lJ;JfmZ^xP|himpa1NQp0-unTx9 zT(1%>{FDazQib2ixAD&#ux&tx@%0Q6(%y(<&UVbTnWhBl&z0^50MdK-l0B1Ewcg zL-_ga8mQ~gi%;kKSt)=j#S0kYLnmG$iLEwe2wjBv8s#yvTxfOkDdYl$;~AKGpznPQ zA(a6dnEw{1c@_-k_W!U)vK=6Oo6+rwj=qItAyo z_&R3XXZNS*H?3klF!}QzQ!}2b)`QS9RX_wg&3K)24D;Cw4FUbtuHE$N2P2h1mj&4h zZk*@3o~8lc1kOx;v#v^g6pvOJT^pXdNDY1{-1~{cm4Pk|P_ZW&r@n)rBrr%==GTmgp>NXoZ_Z?ZGZyBD$xL<4GFQL&^u#gqT9-8JqWr)X#pGy_} zGuaH(n$Scem?GNPT-#5($sNVZuuNDS{kJTw9S!kl1>-?OKd0;@i1+3h@{ZossqbQmv2W+@lel;G_GUpmHXuT$7B)jb z$3W<<9>kft8TJxbT3XV>-q`%Q^FK^!Pw|8_A>S6<5)A*QAtk6#A`iEi1ZQrwGnkh&IcB-v>Me;+y~f zl=Y=~ba3!*Af|dj%(@lDX39nk{X2?$b~DVcf(;@eM3^T_gqC-GeoAK4vv z%svm_4oryrscvaP&V6Y3lL8Z0p5hg^$DSG^&mG0tR3xqPgi+8#iY#QP_Lx`8vhrU` zgT`l1zfEq0aa+DVS&dryNRwrx?K+GxIwX6}W8qzKOiAxv%ZeGtA6$k#HP1sGVdTmX z*yNF&DE1DQQ$7&iJqXG5V91lDXw8)@NQ`0px8xunURlD#E1&E%DZ-HS-+nija|&$p z9v)wMI~+7{wr^3iTK5x)6#lg-va7&E6G$ry(YUH^FR#pl=SzA6Xar&M*)^Kr3BkGTRIz9f|xCJGsSEv*(&Pc1}2fKGhkO z-fX+DKo+zoo>lnr9=p}Vjt&0Tse?o5EOgHd_gR~&C=#T29c$FiVCGX|d2ug=wOgB9 z!QwGOQc>+>hk?Jw9*iSbOCB~meSTM(ZbIQGl=Qb^%lgx})q+6O?p3qy=7eRqix>_0 zw$dM=`r6)`vg`Lif}M{LVfo!n>Z8je{B%Cm{@0DYpOvb^v>wUD5r6UwxsG7r&zH#j zShC`oLZ@vTt(KuJ!Sm0Fl+6W|4Uptm3KqiT}$tJcz+so8+mIC zRP(Z{&l6D`FZ;KIN9W2XE-(T8L=8q>n^w&FjRh!lF|pI zx0@lbR+^A4`bkx_c4U8?3lJ=jN`Oo0*Ko$OTbLvqzai(`_oNgCIqcOKdYSI5_y7gG0s4FwN>f z1_rP5an3>2oRE-^$#_YJd0Jw(9t(uBd;tTyEh3xp?ORm#=pN8grx~>{S)(M}%K0hM zYLJ>(YCM7p2|3G%tZSN^g#{CHpiq0sS-HH#X^aG=IlWTBZ>9}gNK&(aV6BU#Wo=t9 zr~u}*I#JGa2Tj2|fy8{PJBcp|YV#oU++0cT`vLO5zP>PrldHS|5P~KE<3Ewg`S_wY z?EhP-Rx6|$-zcm?&9L?EyLm<_lcZT72rf;HK@5EE~;U1d8 zfYo;M9KB#xKTGD=cLNJ4woS(IF3dqbc=aEfitRMk0eQo#a_4-NNsT36%3KCL$O6=V zCm%`qFb)|uDxbd?9@w!Q9ehpTk4A6SHYOk8BA+o@6i+{RajOJ_&kI9~H;6Xg-p0tY z>d<|Mt82jVqHiVMC2lg@I(+BYL0yoFpI}Xa_QAhtL=Wwuy9l1S>*vIbJ;?6D^oDB$ zt*@yvNVAX>nJQ_QRj+icp=TXEWaF=s(%@wg17QM+T)>@;Q7Px~0cioDU8TDSW`tLpD*$0o$Q zoPXG_S^m`IP<4bSYxl8erx8NbXmRV#M+3s9!G-$8RE?RHLA6er68X!0E3JTgSzeT~ z7p>)53@T{PG;Ly8qNM#{31W2L2G4dU)796SP;;Y6yLz$e0c~mLX~#LVb67;c z#H7*KpX$rb_lSsL#D1+c6$q`Sl&Ha9GA*IKbCI7qhlE+Wb@h zjnlIh4fzW`(z967%mA{JAOolD8Q~J=r|ISrVLz!sT3nd7@}Xga)$C$>4k(wPmvr^f z5BWyAe>NW;+5l;@6~&ZClJCmne(l0#zwOeB@16tlO=c9-mcVU)EEdWGhik&DIsg>n z_5SydJ;9pFhGPeVesF`|+TK}0eM)eEq8uhi67hSx5%36gCvA4|a= z9WN|r<>Hnbh{QrUARtX;Z1t(TOQGdzevNbp1jN`TBd<>$|z!^U{9w*d?f zl5p#+n}k<`nGxmIKT_--j@{E4E7FBLr2ag$BYe3NFC3qG(5J}A%Fajimq8)`3Zyrg zuBq%9PE)F|pn%%Dud;6igY)K0eG;SEWWDjQCxyTdRBpMPe2du$&$C=ER75WH)?-k{ za|zClhxl$Tn;@KIy_~qs3yXXiHbv}pK8}c89V^y93y^Z3eDG0JbRMiz`ru-_oeIZc6K0Mq> z(r#QTT>Z8$kOxXUm4E7ex(&4lu20%uiNV6*SAC^hnz(WU#V?eS5*2m1OH*EP#WuVB zP*_03lE;&D*P>OYIej`MMTSulR#&d;UiD{gu5;G&;Z`)~ zszT;rb;!XyEtQ_UJSBrU&qZbxfp6O#150iw`@MjN2hK1g}aJnEpve(%z8pHVV}DuCysQhDR#(G5q3i zrV=-w-6mTp)SBF?v739MEO=J;?sMcC&asYqPyZ#sXp$`{nl(?W8P>BC-~bi z(a=B;vIS_jN2(a)xWNJ&`MemLTj$k)6I|tVyi)09vZpq zXlddOu0{yGhP0T=0TfaPi&N%cGS3MU;^c*(b5ORwf#6Ii`%6(T9YNLtCzb`6?PD>2 z`Ht>xU6?YS1#Dx~D=NaXp#7YOXVV=ISU$Ox&=LjwfIUM8aE-k&9C(>CJl=~ap4dW3 z$zd_aIb|zSM^6vTVf#0m3APR-L)SMNEE{p9CX<7IYfCa16wvRXx8zo6kTC8qG}_*% z-`Q^2n(t{zkS&om!1xA@kN}DwgkE(Z!dz5g`2xrU$2LA=YVqu ztE1xzP2$k2ZGi$JI-zZehmexTo!5_lY;KyM+Ac^^eQjd<8xoV@wQE@DC(db@87qQV zdN>vY-yiebvRd(_brSq0hWTU-*O9hUohZ)z$IH^t)ZW?l#nprjcG{$+SX(BUg^3el zuMF|om_fyms4rQCL!DDeuDpv2!Ov|^d8bU7oP@nT6!}+Aw3*Eq#ZCs@vJhV%i~h^| z;&<$KTbIu>EWcj<)>QmaK;3rmn@NK#vemNSh;Z?Pe#pP)Y*V4)BPr-HzRSc9e`LS@ zIjk%g{LElmEkasK zX`OGsiO_0abqtZBO!*+EVEY|z6_$`s|Qf3zX z+IjPn@2@27-K*PKA{PC7b)Xwm)K;9`#_ZS8mg?i{aO2g>*Tmka6{H-&@6`C>iS8|i z=d7|*4ie&#gbe>M1?{M}S!R>Zj+<*NXIE+6=A>2i8yZzali{Q+N!=$-d3C+pmLUZx zk@@p;0=>F(V8xRr6H_TSkwH(PR6P2+_Z6P=?c4vC| z%M+nHl|DiLqVuBl>3j=kRTWUOI;c!F15Gef!e#c7WJ?f$2#~ z{^O7@udOa9yo$Gr=qeWqGG4Ylwh;brF>}~a|3u1}EbPm3x;aS?gO8OLUp{rR*Qj0b z|J9``^(jrvF@Y7Xl9@BsT9{ ze{Wc_>K_j+VCD7*|NRq=^`B{{0N3xHxx8^n zGe^ZinVD^S_wwvsT%lqWAh|5Drlx`N$xatwWhe+v=9k>X)HF2_j2~$Q1;I#U;y==N z0EY7f)5xQVS#5K{=h*uP2PprTSIZy>1Ex@D+~48hK+%EqZ4$dt&A06AVM$5kP2;X< zgKJ84E@$3Y;vGfeaH{~|w^{HAe|TiX8j!bQ@U{Uzpmo~XUi78mwj3=UG27t`pPwhV z!UK^=}K%2sIzHV^hR5<#Oiu`zgm?Si0T+d6Pix!A{Bfh_-Z#CBO2a z_d4QSwt;9 z2xv$g+-j1IR?E8`dq>pfxHyAp?%|GKJRj>7ZsuqzwTH3c6}d!W6!twl>P(TKP}2u- z7D82iPoLw=yNeCy>q~!9XcKUEilo&TaUJv}lI&FaGwA2uCh z=PuUC@8Md+`%xd%Eu8LuVu8YJBjLY+-cT}IACGjSUo@MHwEUYenYDc z$y58kx(y%h;RTc*#*UVyXTX_h=c!dZ z^E0#HPvR@#UVo==|5ThHMINim&o+oVX{D1auu7c4pu(k*A^L5T_8J}rZGWRjGpK(P zWn4lxQ_}a=-&2>>9!=^-KjN~B7}{Ic@87EZAu1qn2Ph|c=i^Pn$gQo(N}T+WPHYiD zG1}@I_|l`o!Q*X*Kg%g7V2+{xOF{7!Ch~|6FPXJI^|&I)K~_SdQuatHMo~@I}ZXLQ?wd%d7-d$F9!27YshtOu&#L+yWfyMjUqwK>OWHuIRwfJ6b zJ5LgOkyt%IZG=K3nYV|eroOU*YR_UmU4u>f0Ck2T@M|?PrFT$Z zV*L}9rUmbW7uPMUt$lbYac3?)Omf}>NAg+!*I+;eeNonErRTpV%GqJ{kc^+njwB=> zu}|6HK==!J0k{ zLB^-Q`Tvo06+l&XUDp>75R{beZjg`;k(N&B?(Pl=rMo+&L%Kn_Q@XpmoB!PJpV1j- zxNx7ryU*Es?G@AT%F?rFAybvaFW`3NDH<6Js5%zU18Xm4kjm4Q_{6o~4U0yQ%9&92eR~f5n;1x#%vb zGt{1V%F`WTC7M*plJ#lOgE>cP3J-sgeVzi+9D0{$ruI^uk%H@qV=7Bro>{4fx52P< zKI+bFZ)7bWd^`2_Jg)CdPqDk(oiOC-WoGF&i#^8_jCJbKYS$Yd70r@@XFJFm86P{NDW*8X7p{+r9qv zP@ahGHW%jG-G0e%wOaN6kIZ+v!H@hB+^&sJnR2J@g_~ZgF?S8F$XKn{xI>vfAq92T zodicI&|lv~jE-y;DUNOV29|d!uW#jI{lcaAsFBR(mVpLebU|lNM?5m0!l)2I$~x(qUb`-}ko5j88*d@6p>eN@W<>>suV5O6 zBXAs#sv{d>0hOsYQ>wP)_)mK7_(pHBFFQw}2*h7PA{Zd<`CS`|t>8-4_I7hMu68PD zYQhyn`PK6+zojJ&wBisjSx@ z0q+GQ#{uu+tEhTq9i7Or-Ayo<5?wfPECG=RWE};9W0(yyO$1TqfU7Eqv)l@LAJAVV z1@P-W0<6|>78HQYD=RBMJ?#n*u|g{zgKw*|obNOMMv+>}oqa;OkMbERUZ2z>^vhBF4F!<{;`-r(^>3(%^MWfa=W&*3CjI8GW1UAoyqd@zf*p zEzifBqxr5hE(ZW45=}aHu73ir!3R9>ry~;qyz6;|bYSt|%1fBxeo&-0uuBXN#ngI* zW-%k2xy~(f`hNdgE8yco{FVc4Y()KnOMC=}^O;AL&iN9I46YD#ViYt-_%c zzOnHmH{YWMn&HSuMkS)Us)Tp@T3)nRlqOZ?8*TkRNlnlrPY-B2e;?#>ESWdoH`M>q zm_J#1_akiBdaMn`77FV7j#h}eQoWinZwU2O7=6q;xf$Ef*|s0(6qvr!-GsGVe{(f$7NIe}%>?Iasc)`4_KT^@@XFx259hH3?wbg&o)m10N%j1`X_3h%-%Ytdv zc2h>RqdY~XZjo^9i+`iXct@v+TDrh8ydbLY@LH4aRky9>&V<+QVxN8}{coIFa+>?O z9tf55cItU(D%md%g& zeJC-H%?dAw_-S_TVSi*(0aXEt5#nGloQA_!FH!2+s-5BeUUdyJFF8QXmzI|Fq@N@g--x@paV3Iiy(kk-5mHob_k9Y8hvAj`a}qtoU6sXQXISr^ z2oUMO;u-sfC7XfdL4qp1+pHj+eai}*FdmRdzH#;_z8S!L*$N_yz^>zcD@Ncn6%;oR znNITV1Y~eggH&bGNWPo7v*QWS$g++m5%-SP(FO`XZU%j=30gx5m&QVUU%EM5Dw!k7 zm7kQh_nGe}e)GiN<39SgYreIs3ftI6jx(yq1TY)#=_IONNDmZr&O8S3m`EiIh^6uP zHrm*tx|J5Ew^U{JFB8IQeSqAh*eE^1IlhCxw!#N{tsH(dEg)A%YAsGy4~!o)f4H1}_w@klhA#xy$O7R0$5pYq6*2 zs@&jzrgz!-DX+(K{Qa9j1o5U6eCNzCIU2@nb(;OV%BLIeZ?3$iLkGE*_$CR6Ss62` zPgNs2DkwJ{e1{u4?tddNYg74UiIs&Uz}L|+bf|07KC+U~G*P=KJUB_QGhv^3BZ03| zQk@F|qIq4Ji}qNeN9ON^f2^eL*57Dd2po7U%nz{;UM zI}D8!q(Jbz=^|`f;pUWeT?qJn!{Wr9&iit=3H)n}R7v50Q#uz=<@N<+TG)V`W`BsN z_Tk}yWKk1%dD#L)DOaH==)Imw#_H*5&` zEoIT2`juywnXhT@&?)}_Tp7D+Qy$a2`?`` z+IVx-nDU5^;DvPM4Sqt%d~v`Pi|hkQK_D?aq@jk~RGj$FyI%Xi=EBTsnIqN(=#U`~ z-xUM>_t<&Uz7bLqzrg!{MS&URKBNb;-g}U$%Dv^g1TNud;Fn_C@86IIG(dGx< z5e7n+w_D9O+bDld2C3fA*WF&BF>)Q-WeA`PaSLYKfB`mabByv&5p)7!##IExKa4dWw!K zF^Q~ZYUV(=#I&vh3=Z2a)S87Mu_F zm2CT(NL9#Q4-d9k^1q{E?{uf~%hcl>vR6UdB`P7$eB4FMTt|G*Xm$baw-F%j37$PP0z`|w z>jx65S_^Y?eIU_+B!toH5VkTBNCxHf12&c0PO^!qHQ^II(n9{9c92C1+SN6aYQD>1 z))vr!!9e{7T0m1PtL;BsNO+UpZmrsoE)%%Wa)DR$#bF4s3CkM-?i6t7LllZAp4oRS z)ox8O$#63s&)EWIl>Ly-@)I^7V*dh&2?^rXx@{6<;scy5JD^O6H0ubdV=*%|T>}&7 zZXl6<>dz@WP?SLSbk;u9)D;Dp#~5N=99MoV`3;MbceGJI0Kds z>{%juK#Bp9AFP}9DOp(I5;l$4P+)w)-4_HINyT$YiQyYG8G&ZGO>kGq%-Z^Yk%l=r zQ1y!=09J-T2NYXd#gOA23zfx_$asn63ovQHLhQow_A9JpU!U-Ld5RYOi1q2~d+-ua3zs5mv*6(|8L9!^8U)WY@2Ce<;@Uvsxfg$8+HKu&BLDd-hoy{1_fpzTvF+CX zoYq{wilT-WAKoh*R%`|CIMILGTku7N@f9f394(6E8^iLrxv&#NrOQX2s>^O)Z284` zNHl@NWc?@|{r<5vZYuo?^`zqX#D;E;ijd-*l-Zwxf-9=)3On1*3DchPbSn9ejpw76 zjpuXimkUA`oToc`?*t#eMqC|FQx_NL{t@_9s3PpsYD|lB{+dmStV|@+hMrXyPg<0-UgFqT3TNQ=(E4*PA&NJd${6PoMyP$pG~4>KlyXFSO_>pL zvwQF3=jzwW(Uiy!nihic=DmYC8j@$ejBQo>9g&Dou*iS!lkpid9VAZ=bgRQi%W#4! zdMICPJTd1iLBawalYhAO%dE3)K--lO3k zWB!O9<5y~tK4&z3I2CrOYAR4OyV_{DBG}Rh%m9ADzT8YFKJDH`hYrUWB}+?Vw5Xet zi+v8yMfadoRS~|uz0+Ekh;#Ko>NFL>pfVZR$q5cknqhc%u%AfSVRCA@)3(~y;iKJ3 z7;mn-5j75_;@vSab6{93{7bTaT&zDF(zmk`A!|{iARNk*2=pLQXYU zwYq^JQWa=^v+Aqc)!IC{z{j7BogHc3!W+c9Kt^YLu%7m>`f>jF43OFjuq|1;edGc+ zzl1n;Qkja0q1p~u9p^VTCJP}Sw<6(KK=j0egWt?8ERsKEp9(g-sMeUG%JQDW04$X<+Gdqd}`*oOgjChCza9@DYnTPnq zv6GWi3lOn@1=r~hl*L7^z*9L@@`TJn{Fd*kVzEpRUM5 zNC8iV*CgEub2r_E5QN22LdfU|hn> zDeciVk`q$;TS^^Sj%Tpz*knxdnkdFoldxSr`|TSCSVs?5;b%8)8@II0=6Exp$lJNx zv((t}o%#RgLGX-6f}cp{2`fon*JY zslvl6QNVdF zI@M2TxI*66A#8lsc6QBYo$!8FLP`I({7}nquJ(7B#&^E%5g(pV3=;z0tY=F{0WsyF zid@EjMN~1VSJ>_&as2i2>kMn#Rqbn`!m{7ECfG6^9K1tmdrcprbK0i67Jt5NQA-*t z@4fMeA69nYH`xwY@uZwKoImX(8l*y@?Z^{|6TbZYESk+R!`*lg(9C(>BGj;P!Sp%#>?E{ zh2tSXf516xz5diF*rZ3Y5ueWzt>L=@T~XPA9IiO>xm(T4>FO%S;~7DwZ?TK|~S*oYI_ z!$N&tQd}GY42hb$4#W!nMaReY08x13g#Uzz*O(AF?$p!y0kq5EktZu+HeOP za;f)8*uVX5-A};n6qf!CI|s)l=rmmBtO}>i!R8J`!QePfP60w(&g>!F=Qp1)?|}F5 zI~XW}j7R^DLuLD%J;$d1R@)cgG)s!(=7ar+qvGQse4oK`YHl(B1Z>0$X) zatZ&7TEy*(q0imBW{D}KkCNxNkd2vb(>$q?x^JVW;~!hmjhfL7(&dy=jR|6hB_3e$ zwGH^f>GuySYj9oPL-|TvR~}`&ScyC-3@j?Q3eDWoI6Y{8F~=!;3}+?3>!@h*Dir;* z9GWG-e()Ve@F(93;g`RM9<_b;>9m~$T$$%mLtj(Kv_zsGzI@QY$4eqwb*Q;J=)ycd z*db7=;dHZDWE|zEzCm@WH73dOv&Q^HJ3>!?vy0+!ZaZT}8Jqe<>v1R}6yqWKn5ra* z6i#Ox-dxbrhjndJO}@@Kr9bwopG!ceBXG=TgzmO%r>Q+1{nGADVXfplQPd@;1c99J z=F-_-(<+hRr4wmK0jE*(wkxS@mMN!h0qT3T*}MPx@|~B*it5N2(^xVK5ZeRU|9kPj zfRY(Zj*$NMkDZ$Q?YU@6ckMg93D1@PCa;T@*tXp#KTQ0L_?0#6@A$aF3j&iCwfY~OEG31g<8T20@!XFM@qmTmJTq)rKXv${F;4d+vw z|0Y+%(m(APYD?e0wC8-fn{T-qFTnR26f~`=Q3mVA;r@4?kQ!yI@j?end@e7ZJPHy>RhaT&`Yg9<`U51QqFRvbK-ydiEEgUPuA- z=^WAi1xDvuf^TKp+I?3w(ORuf!cW*S0s9v818XmmPEMb}Bt=`0?u-k<1aZe*`p~%3 zk=j?sAgRC%^-F%vQC3}Gy#S)ztRnXYbgf+yr3B2;;}OXk)#B+$GSY&;iCU~eo=iy01P~qwV;D9 z#D77{A_`U^R2kTO)SF*A{@>Icls6n7ihixS8!*Or_wy_C&CZE7WwdwzpxXR5#tRxk z2>o|vMrD-8=4e&2JI2gDH{5wAF&C`QO9-yv+7*do2=eYmoWs8)G88-|(Ca3(7 zxJ|$4H_{J5%xNt_s2F(nn;#z+7J>8Q(NbeInZ&K`xGCGz?Cd4LUTs0+gGAj}MGVge zivtGW{=q?9+h;%dELAiVj`MiU#JKLWSm$C zU1w`6gLS2EzVFXfK|mY4GrhYqSBNQ zOgKiLqt2%BgddV*#p7m5p!q3<<&)UqoGdlAN4JuamDCqir=@(JL-|b>4gb?g+One5 zNLC9Sg8}Jaxs0=gUmaQyY8_sW#yy~oeCV!AuNa>Z{NbmgUU#wa@+1Bsm`gHZZftE# zOEsL)N#Zsya4au**q(LX?InNm6~DXvM^^g8?(D~jXMwneRB>gW8H2`eaa`o(VYga* z^_OWN8}TkaIB3rtPOpzoh|(Oz2WDnMw_n0SJ`v2QT?@Hi^%n#%>rvj zhmjOCWH)A3>X#z{&=ygh$EYjj@6VC5n6HSeii1v|oYIBUM~7#=-=Hl0H}l!+FRBDp z?sq2)-SSi?cqS~X4kCHdwv)x1&s2ueJ^A4$|4!j+9pO(VaL3^KnAQe^6ZPbrFz}wD zi4Sq>E1R65H3&S!XPP+4Bz}ruP6*SWSJQrp$Pb>BoAr$g!Z+6HS}c`n&*^gk|AiX@ z8C{uUO`%p6m&w&Nrw%QwuwC-lj&x^lRqDM+bw98A_Mk2I764+(eM^s6kpnj!{e95a z)!QT8h98(?2IQ*N#}2J{SWN57olyL%&4~=3KM&&x#~I6o{Hb$Bwn?@{s1$3(_5EyyBeKQHT}J$FueEHp%Dgzc zj%@2=N5q(AZ*@PQ9<&qGOOFs;dS46mw+{1)PZ~LBkDg8x!x|T{D3Plfdl|j8!Q8pj zo3K_FYV~j)la|=-oOj@|n;bKns zZeZa7kRRBoY&b}=HIS*186}xaAK3ub43?H7D%c7FUJgD|Ul!RlD=X{$K}iKHeS=Ge z9Uv2pf;>8L8JS*lf;p)XWd6H1?W+QYhq0A^!A5ixl9ie)#m2@K6*uKmb!ZBRd{qE` zMG|;A`>*zt!+L2Bb=kU7m2*EY7Nn3tuS9}oNI_nnIUhZ*7vl2@lzo(dgxJ)?4c04g z6k*0DCYQkW<9{qCBBIu3>~KJecHYt)-*-#{J4%o}_MeBR4QPyjNH=2NFs+gW#N2~} z1DsZ%RXTEh%zCHO%HVbT z;!ks2-M#~myS1AR)h^>|;LG`44y=NQw!fCCAk&I3nAhrm!d7kfe$IkZ^rn69;X3*H zy!r|WXajdbC#o2J2k5dqzmU6Pn;a=>u6C!UUfySy##|UvG3xxVegE#qR8G)H78TV* zZ$~4@5#f*C2lH}iQmH~wQgp^}*wu>|Iykd17-Z^{j;hCLEbQeD9XCJxG?47k%R5BcgJ(P9_GJTZOOXj-VSsYE~}OIlm+g>HcZdbJgzhv)9nTL;&t#nU4D zCReW^q*0Ae96JWgNsK}!y#7(Iib@M2h11WgvA0dyCJtSzZ-OtP!Y#vd1NRu=KZ)rK zP-SF59q(S-*#CJhER_FKpjjElLG&D!c={ZK_v++5+(#0kz7fMuiAMV+#FTc)d?%s-}0N7a^e~`NxJ@=`p8aDC}I`Dtu@4LYbH5Z_uW$rvHU!-SDCe53w@AwB?}o( zD6`qtLNi~u{1klsXl-pXlN9>7I@;Fen08PIpT{>{)Q4<6MS~;u|&B4 zQX)~38*-xM9r|YE?QYh1I7zc3ziFlBY;U$qgsp9YED_ZD_ z>C{0RTpa*sN`8I6%X#V1o*iHrU0X_9)t5VNe33YkvbJol)@kT&CWqB_-wdd(3HAh0H|L8-_{XiOWR0Ev|cNPUK7T zz7&1$rtKqtS5|tc_P=(b!`l&^%dhif;_@*{(BuaSjm{fP5>o`6Uu~-HtJo)6U+39s zM<4(6rTbD}tq5jvaQO=vZ=W4Uuw=M`-FAbg$nfK2BZ2F4cWF$Zy+HS3Qj*DT|94_cO3L8Dbjdw%cEB!U z(;}gZ85&Ur2Xkf% zKP{1uGwhRlW)vtVuej5N!j_`Y=&?ui>1jhnm&Upr;SoQlRGVZ-tGadAD|UWv5WPW( zzVksB*bRuw$a!?up)Fa~YNf*~!BkYV<#&&95BmLPMHeMe;K#R*;$fk9H{VvlV?`tk zi2HE*vwTDF|yaBB|V_jd=BVRRQC=R^J z`mL%;)KP+G_iY0`5d1}z@wunlUcV+7K`Fec%@SoO{xA6tIck(2%x}5CEV@D{>#}3Qb9`*JQ2s$z4R|`raGHN`5SUKN4&`KA0xFfS`DzS-rBJ@R#K{u z9|Y=fvY4-%h`ps@ehSnoFQ54m>v)ZCGao!RMq|aXI=mCI_}H>T79;Fmk74)+FWhSs zHdq|3O&s2bd}@7w=tFjFLj*Q))XiJe#kRs^Hvgah9Cqy0Z{7>9GMQfcOy2rtkuX^i z=wKS&c+s!JGlUav(7V6yZ6nKu^Or~bPDDUr>JvwlB5>f;YL-BemT~_&er3;xOck!p zbb3OwHsa@5H+!2wJ)bvW-U@9^Kp7{S8uu+V$gzmgUKXEM^3IzXo4logFdJsDux&U5)7h~h8(ArcHY zCu3##A)lC2}Yj$MDDHp#_N12@F?&wpbOcnS;+WTw-BU4Nf;Rj?r?k% z@ar_Ib(@P)(sT)|fU2F3)va63dkOumD{tgI`I*$Mj@s7OZQ(0s14VOzkN)jLyC_|( zIC-a{ET4#h0T}?aFQd>zB9%en3`F?ccvLl%gAiO97rJ^XR;JQNpCTC((6=f0TS4y= z_CrfsPW%uk4QjRK(?8&9kzjZUks)L+aNLA&I}j(ZfC*8UG#a%rGAtjHEA736t*ng9 zPKL)xFl_@gq@SuD;8jJj6>dh9{=^FREXtUbXy8zy0(}xpU6mv zag;S8W|}z0y8rIwu)n97@UlhkR*9J^?Z*a$RkF969h1eOBF&!dSAqc_*K^4G34BRJEBEQPFaNK;+7p z+v4VE65`Ah3lb#jfH?^2@{0kW8AEJm{W^35#Vo6jD>efe^81<3k{Tqsfp=cJJq=UHw}YuwDA!uE}jHTIgE@?@Y8& z^23AsOoa}_aufLSf+Y-W?nJ+jH>c&)qIUWacy9-JtpwQnR07cea1I16q1(VrY~wfqQLL4( zrM;#<+EAQt2GD2t-(G=m<1>g$^`r#VIdJ;?uwCFC6Q@Y7(W8- z^D279Q|s+oBImOOWFEP9P-ZHueZxuJpNBB@2(ryu4c58OVGPS39x&R9R;loV;Gdk< zgGGilr*3DrV>5Vn_Gdv@gHHpkAoP3Y-548tcbG}FJp9bryN(!e0rp*gM#J9Zd z^t1vv2gb#ngY=na*qrrmpgQ)Tq;nQ#E9Q`hhxnJgIZ&Es_W@R`=4P>7Hdn(ph8(zi z?%m`3Ch^v%2KEF-^gHqXAz>5!Jye9a`e#!4;B4`L@ag!L=H@8m5a&-4~SQGGNM zsnh{rtrpGpx9Ii_(&^zdfa2QLjCs8UJ~hp@E)tzM&3D|8aWXv?%S)>BXf{9}K42{V z*Qr2e-42JnOpI+~tHaU^()aAPTwZU0Dm(3Wr-7x`hNPF_o>I-o4TZP{TiLYS^CY9ohat6 zk^OQNg_IQGq4VjUBt9zPPW_XoQ{Nzz_dy5>XkWG_mKnvs=aj$TZTs}`0nOy{q;jDz_iHY zLx1(}h455H>2ZIUcy(vmXV6P&`$ao8S3f-&>^>^31OIZ(T*friCXclgZq87rZLRmh zKU#4jOiuOb#@O^-P+F2V!R2w^heKztY!r(j$@_*p5MPwA_Fh;P1|bR`tItfaz~NyE zM@kZ3Gv=>zOGg=V1zxmPF5oNnGSd{;Dl9Y#AY{+tVfQ;tavuQRzlcarBxUmQ7tWhG zgUZEYKzs28qOG1WkFY$!3s+u(fg|r>`Qzne0Uv%?e_!B0tzIY7ZO zNC4O7Of~6~9u!FLVZOh=Z#nbRhogjtlILm7{R=pI(wz8|baWOqE=KKo^@|W^p?TnL zD9d;Kv5LO_J}@#obQ{v4)YT0?@jf4WzQ2FFS`OJO7#lE zZ%<=1ex?U1e6~Rq{3tO9lfllSnTZ4n2k{oWH zRLcE6MXhF>)ka9^;p~El0R~29tRaak7A_;srWEWxL-fijg@{pzfflZ$yy-y9ste_V zAPOWO87K+l#V&?zIbp(1hKqDR{UDdnblZ;4`+YrJePLh%?5QcrM7#=NDAYxcE+ z*vV-GlD0@rP98=>V&wyp7P>$yx^%7`LIO804)%i7G(~H1iZUdOj3;9I^D9{3!v}a< z3tDll+DzUPaA7hhmCj$YQGgqV5nzxCga~&+cUZC;e8PsWw}4sygMC+VX6h?-4jaG!I{e$(4^Q{4WA~RHnFiy9$tfw_6oL3tBr8Ow z!V7n<!S_#S?SrV2upg9lWP*Boyqw_`oL^^EkU*(u1rjtAE1I`RxyV3zjL|C= z#Rn|(_lY9UCyrVpNf=A9jx?G)`$#d4gSr+u*BoqIuRo=HF5&v>3S$f(F?`1(utjbw zDMYcAj7LZA8Ps~SDFTb_n^hGRy89?ZEK7@p5hQ{Hag^mmiR3b(<8wa3_?iVv;3ve7 zbl@cKea7up4<@)aN}`7?WhcWd`LE3SEc`|IlA;EdeeKF??sc$pZ?&B}7i|iVI+Adj zGTxQx_iSG){@du?zTUif>+W?Yq^IOJZmdQ^j4&ufQRhVo55#YlcCZ_pSKX;$b5iNr zeK_M520R4}zsMxmbwpYpgOli!L{oJ?iF49B2Oa-*8iDuwB6G23yyyx|Qkw}Z=>zHx zMM~riSn+~5@cyK{?@kS$8+PAzXT}R=H4Rjv^lr}tjAN*FpH=$o2`1FD`)9V#pP3!< zW41@PFRKgMg74?|{kd0cg>!oMb1J7p7m5CEBMW<3kG=km`>znDQmoNbnbuO2&pFrk zt}c*o^heoot#XCf5tD-l5x~r6$~43r94@o!nb9CiJz822)`C~LDi?DOd+rL=z~{}I z@usXSL^_T52QdPCjR4)Y-y2*&4OEMqHt*J-$yGu2N%a8TYFxaN6{*2Rqi{uJ*Qc-S4R3&aAySeCIdTX<9kQJG`wFn|HCkj=w@mVX4QC9@ERYXB zbXDL?O--Ev{-z5}Y-NVW~zB?dluK)aKf< zh9tKDT1X}rx)~ge!IJyggW99Q;zJbqW`jwy zj69kWoZyPNKmER1>E35eOCUpPmCmk1J)97NTcoV1-8H;pp}#YJO_rutOnQR*+_noIs}yt(eW9lj&eqTIh2IStc6 z?XhDG@(STqtfc+w$p^{dnvI8UleY`h4zA}l^9293=|+F2_3x19u`(P>szc+Qy>(ef##lqf z*g!n~n(#cQT&CLMy>(`q81&VHl~FNG>dxQ4P=Hx#^8I$T>!njtxXC7>r{pK4FT_gX zpK3zo@;?5M6Bkj;O|~^%BV6eUCzt52LQ(!A7tCH2yV^yx^o_VC{EI1;uN;Z*+9)Ic zh964cH+&w6tx|p3&Okcq3=9&w-uaPe+kgjks%eZ7%Vn*O+vdSJ4RzU)t_t|0|B~Mc z;#6i53t$;}isN_(jjJ2$W!5EZCtQ{z75f;gE%Kh&*rglskUq?UQ~MFa-q!@fOCwjP)pbOS zHAKt}WDK-0CFg~lAK&nw_u3m8I5#%p91gpP5bj1CN|+DWJfC*ym_>2k19qqA_ro@O zQ%8k~y{zH^36b1b%6gaf<7Sy$QiheuB6>@LidcHPXM}7F3=GTV;yD)SbnbY7_nsXU zq@VhOpFH_5e%>_I<-7eMpUpaAfa`rlVpJ+7ANR!ixxDgeR&j@fQEO~5EL{Ax4DBHS z8z=7-8WY=5p%N*LGwVDJyS>8ZfJ`tIkFs0d+{p9j3E(UncflGtFM@ShVMz&e-^=`M z+b7%)1o|FkiiqENZ()^@up-lZXovEJu{`-+-hjoXNrRbdyrl;ijjNip}G84^lAGWQeTmiDXMi|A@IyK*4_1OhYP} z{?TJ8m%#vwb_5vN8w10CV&idSJw0D$2iMeCnk6QUQ?dRg6wlag#_c}Sn>90=8tPwjZON>6L4JT9|aUXnf!_?_jME0z( z);Evs3=QW8hQAS$4aw+N8GZ3r2FZ?Db#<5^V1C;CcU6_WR9x^xVVXu2{pFydj^3vO z&g-Q)V~=k!!UpM*G?5|3=Cr9r<(An+E7K(99!vawzS+q1dsitDb$>`Z@hayx#fL(u zSb3taEP0Cd*_EKN|1N+Od*Dg{A_)Lbi-v{<2i@qx;7inY$E-d?MhdJ01G@B#N7E#< zvqEY7W@fgB4Wujh?DQu$I+7Xjdu}jwNP^LHAIB@NmXd?xQv>e zD2|Y;(iL_E;wQFMNs!9`#^NkL|J&hK;-YSdeG8p6-SmLymG)B1ot?rSP4H#H3#G37IsZpC!GL%1(&!pFd1Z zai7Ee<+;Q)Jl+dc`8qCbKbwmRSo!&+O74f%)1mafdmTEtuB!~?$-{FanmwgeYq8?Kp?=j<| zrt&Atm)hzda8rHHO)ept5dSKgU}Pwva_~lNU(Q|ATT_NfCJ-yJD|Bf7<)~}>Y;tKY zziv>lVdR@&u5xSwj;ygW6pmHo(K`vLw3G!4VL8r8zoA#Ie$?TIT+Zu^Zuttung_~J z-c5mqI>JGX)sN1eFDs{vWUL+El&eG2w`-56OAJih816By39e;qx>MhG_u+iPbJQZt zm#MhM{Tx#o2RZ;@@@+M94+aSqLZ2TADntx~L`adyVvC31-|OBmSfTP_G77xt3P;2J z-}GdxX%#19#~qusNn_yZeF#X3P^(YiM;kaiKr25FMYIIVuNWHhhsDKpOY)LCj02SyLL%ROJD zQ(C_%+_EC447{ehf z=aYlRCY%eWh&;Jj8@h@f$k#v$ALzbpJJ8vevMc2&udf-cTQ`l0i`7-#p76cx4&Q0b zAi{h-qAAV=CDr;nTxpiGu-rO3dt#Xx<@a>4gk*J0G^VU)3u>%HZbj5%-O-1*CI@g!n^|1Vcl)45MT@YCm8kvVF1c_+Z<#pyOfJ_{6EDjf=ZHHQUU6 z(_uOl6HO?qlAj(H=32#aB$X7^AFz~H2z>$`)wvmvM!Gi7&wwcYGLxZioHqGp=yeru z0Mqq&;Z6H%51r+rW^YY0&JxH^(VBS|NEU}Vs~DvtEg_#yS_SZZcH+A0=(!)w&>?z4v?CfdPwXW_~0GEvo_qR6~C&upjddW<~ z!@QGQJRAZ%UM`S`+Ns@c-qq`&} zV*^tL6C%9iibN(^HU|17h{@=D!_r`?z_YozbN4pv-OGSlsGt9xS) zcz-vqhmv=;2`lcpeTr8UKACPj+ZN%+&{dQuI zZ%;I3j!8BoBkTB9Ql4gWlO|2Rd$6O%V(ZDrAJZ_0M@ zTT&*X-aG!GKrsQlK~!pST&$C#TQr2iKtnS!uh%xlHJ zHU(#iVW?Gu!5U*P3G{xMN~ry*=U{a@NIc#`TuUMVQYP}^@2 zp_>gY68Nbc!4x=Zreay)DDT7yOY9VsCxn&N6bp8Z4~hx;tHKJ=22$fXYvz-sQsW1v z)Nl-U$Q}2EYyUOM?3avU2V1lf#8$@pD+=sxj(9YAW+dvLqSQC%ss!gPG8j@U^h^DT zNj9Yb7m!L$co+<#=yLx;!ax=26MIvO5<53_iA{E?pc`YEP4>)s!~-A5Ck`t$G~Uf) z=HZCv;xfzYO>Nd>nmBM1{6XcNKSe@|`VDW5$;MwDzsOzNc)P~t?zB(qQr?JC^_>Xm z1l+`1-zitttvr7WOgrs9a7=PDW=kS61yX_JI8cx4$+iuqBZG%%^t1BfVR3h>s3)LB zLG2>Haa*VygW+kDm8Xfkl!=BRMH6K)Jv||!GwJW@EBDzp`=k-!>pS>JZ%~kzbsvIz7ylYC*39Z~S-(4a@Juw( zWZzco`eT#}6?IubLF4z{wN{k$c>*a`jhd{T95L1zFdpwfQobo6*N%i_T1+^|b7+zn z8;IpA&(VSBMR~bZL1kq|l+=;0a+4GBg)4TcjGWDx>91tN~`*b)7e*EoXO|5 zT%jbf`@26Couy!+3HXm||9vOw$tClz%)+e}@L)rc6hSxOXKK1FFkcp%k0j+H z$!nSMj*qLUoPP@ZVZ)78P(R48EX-&1F>+;b92JS{u zyGmL z{w33rIx6^n2u;FaZc!cNk)S4tkI!hY^{`PuFz#S|Lp zDM=Gk*{Ej6rOb3R8SQe=5f`6q*-!R#LjJ;iqw_Non+V`FIM31FL#>VALE0h*ib)lJ z%-x)@#bvU`bZ<`fZ{6sUwqp;TQ2LL8#n-9Ly>VHe@dD6M9K#4rGrnU#VS}P6Cn5?% z2!ja6P65boIUGcg-d_37ZoCBB5G#B|titelpz8QP(|Ea?jpuhoyI%WapPkBxLVyeg zi|_zl@_0g&Xvm7Jup%^76LtMb@Gh$Jj_=c>fBPK&On+o|ftQx_6YSuw^FN1SIvH<& zIH-Kl(O_MnLij!!8&7Ht1 zHMRwQ=q_DSmz${z!L_(b9qRe`=!io)JWa`%$;gWrDY^pgF>qlj)Y{*F&spy#OzxJR z>@Mm*cDL4XOL+pic89vo9QA$n%^5kgUj@EUe{)$0azui#ecjjB3sW7673H$V_ZUeR+*g(|V~Vp4iWP9cD1jY>wM0YN)) zE#WW5FU9%Y{OEXK zE|qge1=-n#eAl61 zS(})Gu9&j$mYJ3uVGQv>B#{+KEVp%1*4r4^&NL%q?kf(Pc*|AX^{UA{Ls8OTWcwq^ z()9YcfyLS$T5db|sXCkWAcQT9@MsB^WW>(ILlUZa2HcM&49&b?)CN~&4}lM~99MHSU@?lQ%Qn#_+uQSLw`@0q_U8ygbDWuiK6G7IZkVN-Bq9yRIbyhD}{zb2+?Z z;yg~XOh&>CU=3?3J!v{SlnaO%@q@gd8x6tVZ?8Tu!Jmm*K(jJ4J6A`VS!~x?dtZ-n zfI1KlpsH)ex~_*kIS;E0t_Px)N9-&l&qra!R2}ap20o1RciqYJn-=>Fr*V!m`t)A5 zs58img*Op`UqfJG*m3L`z)>H&DmY2*EesnQOU6E$!Mj^g}Pen*WzNz*qRrI z4Q0?tU*KJ7?M3UGcN|3DY5GqcuS?;}ZO5bA705L(6b1xOzS+G$|&7s3!lJLo)(+ib@`u{ER5 z#dowjB$(6J*Y(NySY2>fZ5h(8QCIr8dQKts3_@laDnRoWD>}|s#Ffdp*A_GeQ%9^m z3Qm;^gOx(a^Fl}_I_%?uZMqhqAw9fNbewVKDoFTOovE-J0c>lzgo4-o<746#tCtl+ z1kk_10n?zF5JP_ZmhWz2Wy7oyLq78C)d687xn0dTedY zz)1E*^1nbPD9wfE0FFrA3ZuImy53fW#gdjBKh(8ujn7G#@m`62{~Aj~N3a5>jaYgf zm_YLNJMR)q6U#HSK?4xLc_mBklk$YIFt47L52Ky#gt*B$!Hgcsnhg(0%0$QE_poAH zv{;eLN*gaUv&wN_7=QqW{V?}clol5*-QOb!-7iC004p@$*0eXxNuW@=@#HG^=w7qv zw!>`?6kk%`;B3~n;NpLPYiaEvlmRDAxhsC0 zn)75exIROS{&hIr$T&#G1aR#C$QPKXzva(B4U0cp=>5+re+d>VwkzJ6$wlf5gaIZ241N$ zW9KiM2MF~&ov}43EjBgPhCrg4Y>i&4`bq=vcV)ewft+VjA$HHT+v_*JEf;;?&fo8^ zqZ|hPA-S$mgJ;8sSLXp+{Nn0ffEt?pdF`GE)B z@oQS|@UsbGk>X@G*V+p!1=zaY_r1osdzeR$2(eOIYuewBV2XcL0(r5++@0(qzeTH* zSxmLCl}k$;Co-hqIoc-04gFe(fsyUEGuAt|A1K!I7OGR(IiVbus^S|}EMS%!?qzko zs;mPA5(o`^e3LV}ar$Dycc&2h@MtY!qSr$vP88%#`^~Q)FTO%ghw94pMTxo_)UO}G zSKV(9+#-qw6H~vm?&(3j2vj0UY6&Fzs@m9Z183s3E`W)rKp8&Wd1G=i>VF=Ra@=R6 za$HBKa-4f1RYtmsSkKj( z;*!(5ttG09qKD^GaH9hy;(viG;_q!m?wt%bAW#3p7ft7%!^-3PLaNs0w%_nmtS_?b zP^K8&@_YY>jz;{3YVrka%bb76;r=BqeQq&nLIP>VT^M?6D$sH&KN~LesCmpuhMYd* zcEaEL9wt2r4!%waU({81<$YL6)W+YOh4(8Id9TL@;^WpOJ)=P8@iJDiMo2_3D$`b2 zDA7>Zh@~JRQ?UKBKsXhWfb8vkWpC%?H(@d5fx1Wr;UU5Ro4osbwY~HTJb*gEL4+6) zie)i*N>ll`74MHsLsR5*jH-=YxtX&u8&IKHF23`+Dc>rnTNWF_0M%b_R5Jg$iGA7u zpa@cm1v0%fbfgzQu18pOpN z%>5>JJSB>{$|W5~MO(QYELHMbRf*z2-mN>ae)VJU(JmG#HDBMWr95#l7e-pu0HrZ= z=L5#i1Eg$V>yP}xb20W5m8OFF?3-s5t?Oj6~|q=M>d-k z%{_%JaK<$!kn2w|V*0jyT4g7|ulYVuyy7UK#~yxY`deF9>Bym>qc9B4o93mo_?Ni! z?3082)pPIqW15?@yYCydhbNy8Kr*btMlEE#_dMB+2U9YUiq4*Uclc>rLW0rp#ZZ~^ zgYgI-JyPOwTX_;8YjU-@0#%+7M9a4B+mqJzb+28|;^KEyp#&+hVs{yO)6uB&&Uy5j zk-=VKB&|+k-IZ!m6UHI4cYkmH)_Ns6yFI1hVwllKFXHJF^!3)H8KJ8$?PqOZYa{|{ zn9I|DIZywQD}m-Vu&&7?eZbKtP!RDS-yg^_Gw&1Sphn%VxXHho!sVc@`o7YsG_s_vSg?H?X9 zU``3iklN&sm%u*=)Z42l(|?1DzI7XNh5WHy@O*ha*J4t9)0a-mN~hI>7>ZhST8hI$ z(C@@PB8sOG@jQ?589?q>l)ogCEQNBU)X>{t9(CdCex#JC-#Xv>vL-j$j3#KDZ!Pb- zrhc&qsh%rpHA7e(Oqad(?v6Nqf0?RivS((wi?;(LxbU8@Yl;wtNKK+*l`v-W#O*jU zI0t!N!t)meR?Ux#U39)jeOd*IjsX#+fok6#h*fuaL>e zp71=O-TS1IQY!8eP)VJgR1B$dw_AJ8akmSc{MuNwcYkziKOlWMd4K07r8%a=`)6$a z_;JO8K42V6%doSD8hg0u zv4eyey4q(TOG+yPxDcVYF!CBoBIjfFuuZ#iY5$gQPVI>b?aCY1pS>PB2l=wtJr3{P z4%c@G%c{b%XTmkB{T=nZ+1d#Rm?~__@@jK;SFnBs@FpU!#wr3>V9ODF$IMB|5KI%R z8^VCOU)&X{2bosqFNTHDdCO^P@U&K!GW*_%Fr>u3CE1$kvHSLis=WG!GAU>RB3n=3 zR)E-$0~P(Xg__Sd!hy;NcHPT@qN9rV#(zL#z{kyX#=ir3;xlXpkVM@mI^9$k^ z8@1^i6W8{TF^B%l^_>^YB=AO5lsDAmgNs$$pBA`gMiLE#K7*E#kl$@40ZMt8+j46)lkyU_FA zAj-8Xlk@Sv`QuA}@+V)Ee14^*TO7}b(-&B{(+ziBP;RQqQeuiljgE6%Awo* zq1uc4y8w`+mECg3Mba#sT9oN1%iwh;UL*I;8_kbpVlt{xj%>EdJMJ#f$Vjwg3u>xa zbl4`ExHwsU{P=RdK;1j+{_O>GO((>GaPygWCk87C9S<&%7$8tAmKqA5fJdlkZJNp! zm$A%irb&^Ak`^U}$YmHV^E(;|Sy?G1qJhtrSde?-*8{7>{gVQxSqfZ|)sbe|xnlNBG{7KChOx+hlAvn&Z%_y= zI;lw$AyXDsD{FIMR0>Z2#lHKutS=o>!2p?68u&X5Ds$NzKt1D}6d{hGjEKwOg? zc2{2QKt62dei`|f82seKaecK7{PYx&bMpQAB}3s>cvqfsgU$tduu_^xQBSvb7C#M? zaQNS~Skmzj;sko=S3elcW^5Pi{J1rp#9ueIVSPD0@(wo_{D{(PF5-ybwK9aLSPFdK#)3sk^PllNY5hD|Z*?0RnoQbA3VLs99TWuI9oD|veleTROgjFw zG7>6@Exws`l#ChU?7)F8ZjVFWz!5^oT%2LvQ-UDs&*S6r!dAFCuf}gL{^eHt@5g=q z_mra2V^^OY0+=G60H6MFFd;+*_bjqy?f1{eoA9!{9qk;W7HmyMfwZ6Z&ff3m@-RY( zUUYwUdba&P@h=`1Rz9T>f0|7L-J3Tr6S$|qfPdx&J@pY9emjp2ex{2nvE9LFu+R@8 zq{P2sVR>5z$cM{a?OB-Kk32W5JT^RZjnJ7E);sJ8>-jz|`K_RcCIEFa$jgkNAHW=k zV_+!5Au#V4Y&St1e-AiwJON4y4%7NRj{Mfb69|{(Jd(i&`3hZuHByvDh4-NUDR1ea z+l710PeA{D19kZU^tdGQ^TRFH*lSJma;sJ)o|;x-wn11>_R_sZ2fm*R5edS7x`r-N|=-;3o zr%P0$9jz&O6tkFagpILOR(mb4lFPhr86-1H)pm)a&sm)~6mH?uoX) z2+wntc0nOlY<4MYx?E0Q-5wxEW2U44z;Gr;1B=p_krzKbFl2K#71=|+d3p7}JNUGr zSTp7R?(v2YQEg^%C#Monv6J%POWTlW6>MIore{y7#%bUTH_*7 zsg-UgCzPR=VcMu?Y(eozqO}VgI~FUl_>1}uR{vZY*>J+p@*d>MabXPo5#6{ zh(zx!!e1LaR&7|V^c}>j5X(**THdGP7hvV-z~WUIWn;tBwJ0$-KWD~vu=o5G*loU7 zV(jcJygxq(Gz1Q8pH_Y1TX*?o?-jH)N-#d^_8~Oaan8N3$fM<$=@Yx8K#9)=6l$4j zR@=UBzo{LpuguL^Cx5qkuMKIfu*i4~1y00OKEXl+16^DZKF-zq&R=9uMPs>+F?)eY zyoy_GpMi>yIA55)8Ewj-EjY2N+&Fz6o;&8EuKy+;Cr~R~y~X_WN3qO{UkA^mjy(gO zzw?Nv_&-zjw>sO1I>$`eDAB$&tbU2|#P0Ml)!Xvkl5KkC?z{IkS&6tc>3i|S_Vt1F z3E;_a4_n`))m^^FPOtiV0=QGc0+tZ@sIsIG$JtAn$CHI}se&a-W$t9o(gDAvB>)?@ zn@!l)T^g2$uR;IP+PwTY)_dOE>!=i2NkrX*Z%)1hwnGJSe{j?&gbeLGC7g8kIal<( z9aSj}AF!!(UaYB*X)0md%9JYPXSZM3jy>v`_SN43<4cWmck%55j?@Ek8XR80 zpRIGxH;}FOZr;DX&aeKhGzpf49heQ$TzJ=#z%a7aRQW>u#pp_g57#R>PGOlb)U(1~ z$22edP#Kdx|I9wW(fU5|o_KxiT16)oF;y_h4opCV^yfwa6cRtB0BDpm z->IA2MkdWXPHTSU-vGe`T2qSY)xc8OYrRt~ahMCfNgMXw$?V_^(fZGiP1Qo=pPxhPtLH9nXWB8=`oBr~!N0lN z%-0Z&b$4bo=19bX2~u{qS63xSk%`F2N+wT$bR<+%5rj2Za8Pj2cYsBjb%5Dikw~*# zy8x6r|JwciA_g@QNplST%yf{qz%@6F#&&V^{>&I=-&yqi!LGc$*mt+U4_Gqu-GGQO zr0zXLh!ne35@Bzi*qH}+nYiSkAe)&;kKy3wye&XD)r6OJSL${{*}z}yx)BI z?Bc&++Q!*UC*#H5c~MIFU(zOIBzP&*V~xEHVkqeeztRnZ>Db(hp;4;$?Jefo&mO%R zLq)OUueCj}=)|z?*@~~)$9*r2M-bYX;NhfX6U7repbKv2x#X%Yk5SiWQhxCddavS> z6S|tu9mxN?MiB*e>XA|A?;Kqz}a_WLL&R;dwdm)8; zJP4U^Z8IFh!e{>1q-nfI9X!{qmb;3{vu>#KRI~Iv){L~&6(}z)cq8uyJ{*h&;WJ@> zl!HI_|9kHH&Jp-LlP~JQ84Mz&DRST9Dom0u5v^m5{n~+^DB__KNC-g$hRnc~$z$cn z;_bT5;kr1#bqW-sw5+z6?YE%sx0qdO!J4%oHH}0_+FE#HZs1S6Cm@~`-5#d>Yg3gf zzHmTH9`G3C*BbQGBAI9+IV`2xEoAEk$MkZd4OefNKCR+a0umBjpK;y8gR-B8|5%8i zNphn^zHuTyk|#a@KLcV4n@_Fg#~-me-exaa?4usZqKl;o6V6lM@~H?bfy+|{@Ene! z!0*EUw1D=gcDkE`z)5Z1H{t?K9cWy-M3f}h;MdiNOJ%yGO z{}WLx60YY^j_gWcn<_3%6G9U8Z#(1qW)#bB0I7szWjjNg8Tz_I@XTiO%gKKS-<%YS zA#2`rT%a574_g@fUET^!r{Hcvx<; zBEZC5=^cR>tP#hBiY~CbnUj=}5h+npR99a)x(5PLV9;5S--&wP8yYYG#d_2`ZBkTC zZ8_rR!eZ|!n6zJ6pK5Wu3x%%hmGj_3B|;(!a;>m?m9IbLCKA9sZLx%et%}b|O`)X< zu6QZ%B_yIU|%!flZ>9cy_gqExc80RE|`n$ z`n-7DYhxTpxIer23CWh$_Y{<^OkZ~6(vR4tYpqearexyaL2zEeR*_D!G%45|L0ZBQ z{Y<|_{#MT$E}uHSGe8yz0U}J z-IF5?Y4o|U(O|LU@S^fEEB1a|i$BRCHYkZ=-tr@7GahS~`f5{(x!)dQv!=I>6Gg^qGlFG!u`Gl}w(s~7kNZGG zfeLp0-##Ul0@h%EXH2ffw?8@*0euaOoB$fKz%_ZA3>8^ev}mEzYWxM-;!RkVQH?|= zlHUF&=p2OO5c!OiEBjrxc-7{MYx_Y&*3lm#;=vgPB`p~Xa*$hl@ZsWd3(SKeZug=3 z;E;NH-R|B7HG~UvP`^M2opCZ*;bGx+9e9bFn)-L#xf)K* z-h5r17f+f|g}#j=ex;UsqEULdmP%|%w=0h5_2bwW>6w${vOK9`T8tL%>wR6D@qBr5 ztV;PJnI&Lg!LrAmhWICyLvJ9DN~Dk}g&s!+_!esPxe2gsCYDU@%D%L;GI4iC0s3rM zJkW!Mpg%jknG$79@AezPrwXH1m<04-y9t?oNVrX1Js+!TcvK z+*3P;!g}XVB((82=;G6Ri8<2(Zugd3D>6+}#JYK} zMbdXVH+81Eix}V~AV5>l#%L}R%tprYu+(63?1pCFwq%5Ey$>doq(%LMwG&V{onEh;}tFO%Us6Q-hFu_$<*>k4zT#jHj-F}jVd0nrCvX3z&oA?$q#0@ z$nxROvd7^{@sD)Ogj8EXL<684>OWuR|MUnXw%C%tEHPBU)5$uH6RcRw;pU-Kks2gmL>rKiuZ(38sZn56!~Nz8d= z^c8v+nl1k315tl9P%h!_E_xYU|vkonU4aANVAhP|O zR>5jk!RS_?YPg0ZQWKNCNJbhIYRl-8Nr1Vt%AM-z63Iaz@|A`bSk%dJi8$p~ zmZ7BQ)h&&YuDgk*k?T?n>r30S271(~B^;*Zt>vm(PXBQwG~T4m!onwWaZjs)q>am( z5~pFUlg+mW0)98RP9R7g-~-|ZQkNYv)te?Mj#*-LUZ`f0o8TV}{iV;Oty%;xpIY=^ z>8#_Ys_e|aU^A@yFcopP<#s1mXr4>$|K!hujhkt-wBHB~xD6-;xL4hP5(;IBhBVFu;o?ejm=Z3N3Z5@7)+3pLV6b6F@fx} zNgfW#5{+`E03&0Hah#qu4EiPN2Rjl@q;7<-)%GGIR+}YO$K9Q1wKk$>#u?cyf_gOnaYRRT3_i5TpdQTEA`%riw=nGml0Fq`qHsC$k! zHD4fwoytcWJ!C=6TClp<6O}i@U+<6n*xt`)^ZU z0_c$9&NrkMp4c{9$j;QCJRZ_6bGP3(#$K9WD?^a#?8NyN1w5^M%;A*j*2;}C{JaD1 z9OkpSl|Ruy#8Ps3mAR8-G7dAC(-G4qz>OiWm&TU!8m#nl>*H=RsWXfx@e)4tjYC&x zdiMlErN|9x%FPO?V#beM$g>v5|45rwa)Es!I@vyo(|QfXMI!NZnR>dYL^;oJg#!(^ z{J!6Jl(n@dyFKq;PK)BaNR>XRnrcA(o3Eb?R`P_T5U%z4j)_ZaBMLBQhf zmoGw*-2-)PBMqXfg5dAdR5fdD4lXzsh7_Lwdj567I|=F}A^O}~LmN}$oh^#u+q1o>YW8~A|LKw!<{%_eQI1_NWv@K>_7nJWXus` zphB9m5^6|^08Zg0PGL5{3+(FIOL7&tK&U9ohaW-@-lV-=uzp^l20mv`6sHMbAT*qM za;qOil^#RY4uh=LejeK!sGi48A;_AKn}$L`K2J~5n_=0(<2wEHy>vdB$CyvV>G|rp zvp4~~PB=UIrt=Dl6;jn_mHxH6%drPBP*{^(o+VvlOhWynMSfi5HY1OA!_MYEL_4jo z$z@6Y%Xyj;&}a$GHn(qK@aMNBq6Iiz#z^ELW?4K6M+)u%s!S%>DCX0BCx=(WRrB;; zYxw1P-0GqM?V;n;x^~wI-D1ozvz`tkcmSu@ciqkgXj@H4^vi178GP63`A1-l+_1K^ zh-fNPIJ9FDcZf$9`(D6Vn~&DFkV*qyJ{dqnx;)ZJpGrG>$Jz7xk+zwD`EVz?mS>YUs5AvtmO)83nHkB)#_#H%A3=EnswY8e>%(hegXr_l zMCcG^zQGJ|?rz{p>sGPshi2)tuZPPQn5GjaS)Jh*={jVZ4h`mUF!9wecD?{C2K*L3e1@zP$32C*gQ7eL6a)$G|GOwJ(6d9b86Nfj zUB|=lhnY~-wtqg(yN-T_&CmUYl=bk+aXT?OTq4ifk7GjWi407WNfhBJC85nGOvKU#o-0+wg zVhJ}!1yqw$T1OZhMqhSueSfX7wu^HFi6L)sUP`eNQ$s7_^jAM8=GzVv z%q{LVAVxnhRIg>$3X{cLs~83sBqYiAP#!;uk^+Q9JQ4SfdSER-_u|I-=lR+|_M;zl z{LF0VXf?waiIFr#HP9QZDC(IHR&*S8M6frDHUd*r@iVXD3|KrQn>f=`wECx-D_47I z1_yU&%jV6=I&Qs$3kptnP7(eHMUubz)gku?u>6j6`}Sk_*t_zg=RTN9ZzaheD3ly6 zogOZo>@S^G)U$4yj~KLfX2k5?Bgg&>Rq^6Tyz$^WzVX!olC~c^WU4==%U7r%ev{D1 z$FzLX8Z40}Gy>tAF(wK6zJ(7a2uSa%q==A;P;W#Qw?0$L7oTF$hPSc1 zE44Rus)1#v6<|`t++x2zWo4+lR})V@ia*Ij7h?QPCh-xg_>`Hk!q!;$0Z!^irEiIf z*Pqw+C$tYG8?jcbFkZXNyIH3Br-jojuG5#i(Qd!&36VOt_(G)A z0hMpi_4A0mih-@M8g@)?6~{if4ZpFd)drIUqDr4xN2?UVhS87a`lm|Ju{hT}Iz0QV-TXlyYU=q9r>@%@XR5!W0iFvUy;)bPWO@_%F z*Fo`LBCXr1Z`b=yX*@P1jd=3VwStI~tckkl-&p+{H5Mv89MG=v^ zNKRk1Y;2T5dKoV*K1i}u6pAp%*JxI6SyoS3;A^votcVFxe55kuEu{E62t-(jgaSJB zgw$^b(;52hE#x7Nbsly>@E@!a7T{zgs-#MPyN)mpV!D5l#+~5o#(0|>3uNLu?KT0zW6*#$7bYeK8F{uXBPN4xMN zXRs^h@5hM?IfPk|^QRfiW}(V0yQxOrbHzfiVLZG3E6akhMc3m$LTKWR^uZ#!*yysn zW-V|@>!sbxtBh5)ry_*@Zd5hQ>Rl2t+J`oL5LuvmklJMPs05&$M!WsiW5;cWbq zHLGQe2c_MXtmDNsecpu#9I-A}rlRy9 zS%eQqkUGE$sa=l1s&rIUTHKP1EKkMu)tO$4_v6PSW_{+lG;dlw)uWo?dCmR-HyN!q z!?^?pX_BD?(O|qxCsC-(Z;p&$n&&Zqf*&YP zU{j`eR#P^nELqT%Z6vSS7ff(P+c;}58gXMu`{4IoiNIM=w=;6`I6;e^0*ouEPcoJv z=An)%FEnZHOFL{QP z+PtuUhbQ$O!DL*yMhSEf38g3`?jy<}c7@S$jW7w$f<7iUJL^tg`aufLON3XOpL^pL z3LW=k_q_^T5id+l&1b2yOhIBrtTBy$OsZbb+Liq)7)&Vs_RW=+k^Sy{g@JPy{F#8K z=ul(jr(!Y$S?i)1n9A87b3I||*nPvDmU53^he_D^v|%`9>3TLDdF%GxSyz`rtelA` zsX0Ozpo|e+QNi7-PDqfH_8m%cf`s-JdYpg2_Qo_!pre^~ur`&oIRT7Dt3sd~3Gzq} z@@V_iO&mmPK0wh_l+H>K8e7HoX#Pu!&I0i#8WEMC!W~MoPY9_%LF?P zZl=nDj9JKTAX)2kD8qtOhC7Gp_Et}A5mIwHs~T$%dP}|#8TC;t~?YIT#!(IJPAe>jJ8UkdZ@hy;w@%M%h<(RxkFa#H~k7DCEg^plvLu zTZi=O)wXm^AMi2Ur&2)TGK`cKjTfynVC26F5i%dFWOC=V!Ddm5k)$Gsfu0r=yW1!% z*q9u^xjle;cL>=8yl0ievMQa}7tZVe8!y7G3zh0v+y*lgEv!Fp@DkG_hN zra?{Nz^>@V<#jzsCt;`bg=K6hZEG*uKP&0utmH|BZN`h~^_J5UO(P+y)&r$X#*3MA z@D3m}#L_Rse!#JAw_%A+HW5P0mzmY4EZ{A(;+8}4#GagSOi17dr-1oSb5p$Gq~P^| ze~INR_mgWF4IL%vKI%Wawt5f_Mb-<4X?kL+tv8oUGc;`pfkoyLoZ}G_=}~i6Z~5F4 zyOPQH%K=0>k<2H7u*Ogzx1PYBGl1r@WMoCSr7jX%AC|4xtkQRy3HD;1lid}+FV7R7 zq89&weB^8h7?3WPS1v+FeE!3|)F%P`sa?Q4PMayS#bRNM6<b@T`- zx`DJ@YP)M1+&0o3R$*6@Cr7^4+k!?^Ao&SsZno0gFfy$X6E1;mV6BPRxbGzrVtE;v za9F^eyW1}HG$CV8NSTY~t91ohu!g9;Mnl=07pY1klaf38ealplYB}U!NQ+|iO3-x$uf`Aca!T)sJmkc07ftEQLgr(oz zd>8k&NBxuT++<%olqBEb&f)qsAtV|xDl7rNfLxR__C-3#7^u9!fOEBV`nR;fQFVLz z((R6%Av;Qb%PC%G3v1D*Z+|i9Wsg1+IvwnaZ4HN+mT=FGwm<&=r+4!|cXA zIqsgSOmON8(tzi_Ix1(*#glX7TU&<0cB+yoXG-)$i6NP40rzeR2l-D7ba43^(F^wQ>0-;uo>-AX+8Sj^^)PWl4k7 z{7I5U&b;dO*J7OGeAO7Zn-#~fG+=qm=nJN})1+)q1K#c+UB6r?R0V+E3I15AzPRuo z31ZciqaB7datRS^Uw?is z;zr{OR5!+-tjJcz@#9G}>6rTRu?>+j#;}=sHW)D23m#_oO00=v76g&l8As#8wDR;~ zxd^fGfq1f5mzHuRfDDlYl8n>fjZBgD z@kl>2l06_Zpr?y9vWqoxESBa)!^rJ%3D9N*aluRr3FoL=5XQ#J<56#Qe-$ASmnRe+ zx22e_9!Z*3@mvHnrCN-lEZi+@|CDK%J{%vUC%D==6GR0}#R`P4-JSs5t#cjl9((Zs z@9s)B8eP(bJsm8^aHBgpwQhtHMM+y80SgsGY(*KdN zt*i3trg*UNTLXV>=AQ-8g&DyESi&HR{Ndq)^hmO9F<}HScEKdqmZ({?D%ty4X@6~SdztUjmTmy; zS|687A;Xp{BJXG`!Yo2fmn4!9iuCjnc+tu!Oi+=AQa-CG9a0snt4qi9rCRCJ(G>)4 z1dfk+ki47!ohxKdGM_LN)`9nQ>@dOk67YV;!xwku^ZDRm*?6ykd!V;Gw&fTi?%dA$y0XeFR*j>+&GMPmjo`^EK(hvBLBEyWiKXq2OpKmu+edtf2da zV85eExoU%>0Ih6Xkh+D78Dhd(s}wIheEY@ts$ty`APhJn-bJ&dea|J)^ya+Y$w& zK-Dv?PQ^;_OwZe88gE_3xF#)7e7PGd$tUp+VPs)S_%EJT8r7DizUFctcUXH?dV{%N z`?1zdV_~!gAjBC|pAgZO5s#J`8Q5o!d+A0E@)^ml_1El=n+pSWkWY%w@v>EVz#z=91-7`; z2>QI>Ew{iiyWOv8d|Yl>k~mKrs39!T33&~_yJtvCWzPyzwDU|+BP zoF$K&TVliX$Ro^V*W13RTYFBqJ%=Q#Q_9cJ@MYtpHqTOKUFrjZ^ry8$c3KD8r*fAC z97{6tP7Jq~CUuqGa|4BQ>#rv6xw#F^?x*4U$!VtRQ1Oz&@k|x9A%S5TNo$V z(ll!e0#xlQv$p2(SVy1c5-dtc=Ed~S|K6<-*wIhRnuItvR$j8w*S-J6v2&CLX|gJv zXA2fviSEAhU>6cEbY_Iw!M`bHSretiBTt6MyURF(f#GjTgVDx9TXveLF%6D`vBn}p z_wWB%rfN##*?b`hg6@s+?{;m)c(HUubRcpLH3h;P4sIs1`z|@Rly6&ByZgU4O+6)# zhe47GN00_tv366oq$?RvlPal6ma@i5Xp zF=rr(Dwa2-DH}7)(#)Q&_4}N8ALup@by`Ha&!@p4Nr*<^h5f;!PYR~ihE{D|C@}ZF zzOd59B4_)ye{il;gNNAsG~?LObE1o>UH{EL^SfZ+xM<+`pn0MoTBUuZFs%d7(x+25qhg!d2Ko3o?E92j7{2d1g^DVYc`P`uX zr-lrboFp3e`oI3P{;MVPXmRKnB~=E|otuEea@q#x-a)sQ9D&ScupBs(HZbGm!%5Ed_a?$%pJc|Uw-=K_L`1 zx{e$yVLh*u zv0}oP>4|cxk8aZRq*}bKW)bn^R8^>LT~*f4?M8@`meDsR@SEdaa%GDJY?zJT=7*UlBDT$TTWO|LtoZ~Id zqsG+Py^zk^dsp`0=a_z zSdXz<)s>+K(s6^V{hLS1Ilxi*Znjvkv)25Z2)iUD9ucF1oKqasyo}Ai&mDL8r*Cd! zlZJA1Tyh+@=`iPA9ZtxZxIvRaQzr#Gx_A6$FWi-sTw@s*Wa1Y%E4gE)i$Ix6uH~-`HRef_54sq z46cOq28kc&5*?jDRCTibJ>_>|wDVi2-*O@cp=>;A(qyn;%^|}E?1-J(rWcw4pmjod za$Hnr>iR7wSEVD9Q{;o|9SP=W@~MIto+8xJXE6N6=sd^dk!b#;q`dZ5G%Exl#ImgUJc&Fk_1obJgz z+4Qc(XU)y$QCmIc821lK-nMz}mA|$i@jO3{=6L8_0hZdx0aO&NPCJ=>uXSVe1C1hd zA|-Gth4g_Hh=;?Rm^Jm)3i8u}QE;*LWAX49TOr5&>NSqG%DS{5WC-WPsDPms1EKAJ z*YLP}cl!W*ce#zKGRL!S-*1X5(PP6rWW!uM*dkax!Rn5^^r_aKa#CiYw05~xCSYE4y6(lkgc=fWi#u;l3K z!?2G}jP*j1gI)g{-yF=2jpfz)DQC^%cX&4`6k>6Vcht9kSK0t_x~>^TT<@f6Op%QCh^OdeBsq&xtKtG1NJn{b9hYwa+Y zLAQ#E^ddX(?P+Rpd9=LpEkAscD^2SnIQ|sr@PRL9hsg&EYHc*_)00tF)Q7c1en+&K z4wz$_&1kE0;BkxKHJ0AExl0^~X(lme9-GLcB$laI-Y8pU=@Jm*-xF*9&EP*GCN0H~ z>0UFfJ-^$D<8T74rkq=v&gqZ2XaA9h{X+Q8(NX_>VG3Jse0|^c3$P0DRKTuaU(r5a zpq8n6)r7v#-WcESpu5khQe17lIqFb>d+iUle8Wt(Z4t}T_rS7Wo$4IV!+Rn4`pB+c z?27~{JKB;lW^{PBEg?{c@S}gWmk`FMQ z?}4PhX8jcb@Hj(np?v3Ozs1FQ(1iWZ;In1BE5K8s$a1Ua6z5iw;^BzgmFAbAz^g@& zLC6W-W|5jA)CqIxz!&kKRlJRBscFsVYh`R)eu%I~k`G^qt#!WB3!+7d;2NtHAVTh`Qj`5Kx&DmLZNTk7x8ud|u; zJH|>!=9%)`*JeB!XWhNjx<|HoR_tVtXDoiSrz|Z{NvgwIA$j*(#kq`oqAI&@4mHjy zg(k3Qf(X(n!@CCeIOl10Eq;6PTpaFj*Jr%2y2!<2G5>&gD#e3lcw`OjAzSfwhI;CX zeeTAf{90KC^X9Xfx1RuVMNlPclst}i^5-AYYbJHZgp%jZsz$LN{b?rTGKBvVgmjS; zd3SyrEQQ&GGcsXWdiKv3;3uk-NV+VNC*@jO?uzsn_M_SNhs+mb<24FO%B{3tCNfxPtzl&80&3zYfA?+b4CkmnN>{+X%VAMA-6 zvx&6$)ZLjxJj70aawXZ$3J0maHcSXkK9P?^irN$0-{DJ3a$%IRQPt;cMs>?+9n)ma z_CZUX6byG;AaYj<%AxJPkFo?86($ySBAmTEZ`?m8r>Yul=g;a&vBqzTzqUkat*pFT z$qg=ua{-l z30vS7XudpcyE_?3t?|=EHXEl7o$y+XYvg53h^v_D)Yrj*=k4qD}uW&nVR!ZVx6tA@4 z0kU2jUK3cjkagmCUXnf~Nm}KxtyQWrL9ju}Ug{Z$iE4J8a3$8yhu(Q*lw%Ix#kmt1 zK$9Ca$yaM*UQbpl&V5OjSIZbxbK0^UNBa`5f@5Y8k0yUM zWtIY1t#FA3KnQ=hp=mihx9-!FnPw>RjC|T=%D70`h4|TpDH1QJY-m}azlyh#S`chK zaXtGr(F~!=L?Znpk3jD6s3HBZKJ{RTdZai*j}3i~2|bygXWEn0?6LRSpM;r>$Ec+qq!Ms5k=*EmV~Dn3Lj362Tzc-mT^o}{!D{y1 z8s#-(sgpsG z&Px+*MtbyC;BGm5<1f>Lx?S~Vn_N|K@7@qAT7_ju?$6`DtU%ND<=0Quw<6N{N7k_{ zZE3(N3!GCc`pnc}!oJ2A@|U_34bbVLgk2q`|Eq+86mLT~hNNy`@9AFTl3Yu@3(;I` zNH)gaxUb@E>WHOJfD;Gi>FNY!o97e>g;4cPaNT9kr^kwfkZfJ!x{bI}_V7}3`gRI6 z6EwA9b#IZPUc#b;((?fMFgAHEwJjkaidmX$Q7=5=8)QwE4}+P}M{nJzqV=Vf9fZ)p zS3UP0-C(1^S4~s%OwLe}Y|Tr3=9VcXBE@e$MdQ6Lw&CB-u>Mt*%hecu`WIs+ z!e=Yb-#(p&Aavmta}e{N0~qSO9>$eJmW`0;7ZT#z_pz;6vr^f=JXudrYcMB_o5qLS z2_2<`7dL2H$t8JE^4C!`IV)LzZ`O2s6d%#9kA5g>j9Yr$o>5|7fr0WoD9PlQUmYXO z8_)eL-IJqL2tR7Fo&$GEB-s0m$ZQXTU9m*s2czT5Dq}ufL^j*L%WdDe|RfN1W`t*BcMZ}L!#+V>PzOk%i zW%K1OPZ+^%0aX$)94j)q@>R5pod6RSCs(bmZ8e z>}udIZ;NN^M3uQ*4HLL3K2P-ux<*BM2ih{J?|YY)VjP4*Ug1&K-g zoq9ge(QkFa_*1iCV*-&^B=~BMZe%mHojMc4&d(RTlgAF*zl7R+++m7h!_!VDI+{8{ zznLw$Zwxm+ldWXjWXfB(Di)FR(Wu2`CYH)fjLuR*%@5<I(6XFc z6G1`1L!sfUYichn=?09@R_bh>+AY@P96Ee;32{*g6?I%rbqTUn&FOa|bM2mwsb^hT zdeRK~AN42kKPW3wYp|(VWQhC@@h8%_MT(&64k)p>`2<+j$|DJTv%Y)@sMU*OXf@Ki zb}`()``c`2=5j!jb^@3I zhUeN?OU*WRKSr*2Z?{PFYq+f+tAY7O>+WrAg&buW9sTfmsPHiZqDZ=yVgfhqvIk-$ zxTcBkK4;|`)e0Oy2ei$4j`Ww#Wm4{9S!j9Cvb2_&Kcz6Y=dcxDuc)`NP!?LfFV6pG z221RKw#Pm6yDbCcMk$}R<&|R$vFA2kmGrvs#IM=`kEwLpYMh>sS3!m`T``&Kr-$~G zP&~WahT9OX{(FQpqxs%c#V0LMA6|!DNOgONo264uzwqtA;CIQLNtR6MK|#N_ouUns zk{v_hz&VN1afy~W86f-~mpJHNu+Sv%Oa!K!``hog{8H95@o#5sx;ntqa@O4y7$j9< zvk{VG#VZ!U%NHTaciQA@5>j8!j>H=C%mV^0-)>$c{i><~d)MXwm8mD zmevfv{hn3J3OiZ;13771#I>g}?~jCr6Ak_ej#p8^3)|J;(&u+0Dptw}nf!8qi_z%L zJ(?ct336QTgN!RwoE;P1G{G}FUQbE-pbJLd{LFw@IebLI`^ks~~K0vDlS zp%P}VXy2*b!j}h`gUvsLw@R%Ui9_oy7qkzT5x)UT@9bWDp=ZA=$wgIgZ=cnWI~{B0 zYe&=wosHIR$WHZPZ*%3hDqMavB~NUtpWXHVPbiUAIKq2Ir&V>;D2=RdfClO-?f-C8 ze!X7Jh@VwJdIO(m9lv4NySke&Y`p&4#ghTBU0mgexwp7~^=clMnJ8WUGx6dodpu4V zYm)taFxYXSXHn!eJZK4&%Ysu>?No7P>+CqkJyE6`mG?s&36IQQTR5&QgW|8A9lvsN zuA9m^*T^Ox;`?Hp>tfT;nH@Qtz1jgfmpvo%pVUn5QkfDgy2naA-FCk&dWa@f97$Rc z`>QPOHpi@58V>4nDY9M(o9n5zfe@rs4+ALhR!DHM zJ#0=0VDk%x$>`o{l#ivDpNmL@*M|@#vs=Fm%+zc8tyXTe!%op1S#GKh2oVL@!V#kY z@UAKZO50we-cxJr-YxV08zXU8ajTxDEgzNs3mLKZY#OBVKOW(lyf*fXnRB%L-ark3 zOOw3K>I@P@LaE0&9syPtpdOZnM&eW zXyD5}qJO)!f@;}9qsoFEyAd*U(HQKHD`6rrhq*WlWANRs-fWbIS7&-sx~ro)2gBF1 zf0(ciy>`09*@e3)igpXx6|}fc*mt_m@^MN%c(=L{D0v-kwp6WstvjD=%x|`oG^shi zJk+|MJ_Qe=H6wq)04?!iic_HU(-SH8QL}4Uj-_k|o%##vMtfHy8$)J%pcs^y~U##(^I!ETYKUP@=GoM_DFXXKd&!urds?+@M$ zHD|~W6Jtgw7Eh>1gn%P`rSQ;W=?}A#?cY0Y-x>sdD#b)9O=u;emG5wVAf?HMZ?|mC z!vZ-vZVwl&39ik4X9aF%>&5QKm7g*#LMw0V?qA@#9`$*Bq_}b!_mhnS`;W*g;GEF$ z7J(o7z-iB+vZ9u}Evl3UUF1=9q)gl38c;U^k%py~|$b>}=WK=}|;M{6I=-X@B(Mc9-Oc0M2s;#c}#`||%>XxQMIKKfd=8x!V<%b-qzNt`qeeNw4 zQxm#dTbLnv5EV60+9ct1u*xkBYl38G(8!GnCu&)8`RJ^uEn;?ucV?S%B&(eXJL&JF zZ!waquam7whJfRJwLYAACZC@U?iSP$X~G)M<%jU!9(df1<+l6FGO5Jg9Dg4E1D4*A z;ZUl~mZBC&0vC*#^(NO$;mb^cYa`thFO6@g4wS<7<-$G`<`W|R`e3=(+LE_TwW=HN zO;^Pgys8JerxPUAB}Os}#r=Y!glu(jd&z~w#n92FO;MREqQ?6;Q*OaKycT8?Y7CfR zeSakGLF4V|CR&-neunOI!j05)8AaAbw`#=lVph-Bnr!w|th(iXaeI&I^Y|2I?vaIV zkR`ZOAJLK9Fze$9Ju#cE%Un4p{=5c4WhRK9C=+b<|2#cA74{)w_E#d$d0lAVhymZz5~&xmZtxQ_!nj>*m*#sOf)`XaYdN}ps+t@8_~o1?n51KO zAk!GVd>TCh+XAb%S1qL5x*I_6W2wpQmwOrhXUyUWg#rH26eN<8J%9E*mB;y|wB~Bc z>f#gWNp#dzW2i;EFo@S!7gyJ~Sfe_AX|3qV9GNKzrWt8Y$e=^`N;`vg=eV>LoT{RZ z|K|Y3NbReScn;y}yoBl-1lk+TE|kyD;vCj+5kn5EiN6)#iG-z-?Hcw{{1FE*ZPR$L z2^|n!oF*RqU#yK^V~yTot-w5rygspJKk_?7voQ6VgG&_c(~I}}s_xHq4ryz-H>YGJ z<;y>Z-{~)WjDCriZxpH)EccowcwpP@%ovwRvv8P%Mb1|ryif}t=?kXRz6RPm zPlyq{mw}7Ax|29N8UiIaYU@n-85oKn6be(TkJG^~%q7~RMu-e-c42RT@|wE`=vP0B z!{1)wOQAH>MWnqcN=lXQ9toL5;=S;uU?{5G{5#^q**f~6;ETJ&i#X#0RT9=II~|7v z%G=Y(x5XM`g9RzZgf01;XozHpeN)pqvaBmHTBDeL>9|>#^Vi1OBB2Y%y=I=WeRz6cxr(V zZN6n(^9dh0pgbfY$ZDe-ys-@jV{M}ofzjHX-OM9dfS`k^U7p?kGclE7fbSB1%452u zBkMOFcI#>mxYQ0*o7J-0A8=<8%iw=Ra@%V`3*5X&$!cGm>)(69(A|C`wzSx6Rn3w1 zMY4w#R~Zd=JZEsnL<6o6US|LIE|SQbap24p3%N)De|Kq*8e}`NYkC$lG`L#aZ)v3= zj!3hhWToMch&LhL_ObH67|e;gnqkvWR~H5G4OaES=+pgG%YI%|8eHDau_@!Ix(g)o zw1wGz;t+N~5Sk|czp`0PhF=n!Zw^Ot4A$tL<=|Py=Ps5{6qD~*qZ#>^f_@mEE`6h* zT|jQ~5Fc8s4k%%cax_Q2on~XLDXYQ?fpU-QDO=91IPT9H=n$E#k0ayPk`?glGFOvx-n=i@J%DYSG)ZSV-STiZ1yB^I2R8Ijuv1e>#_<3s>qwag0p89;wbY4pwAW`Mv>sAz0t<&c@w zrEB^tyN%)D((q0e$s(zJA=kP%FWI0?6m(o($%0dLDgG6c1C144)v>3lpj83xdOPb^ zS0{>+>@vq*q;Ki>roTi;I)E7-h*@r)Q}GH3+D{h*lGs}(4y*7%wrc~eo!qzIeGg=$ zq#1}%ss^2hTmH13 z_B`%9LHE8HdB*>`*!MzDHtIB=7Nz0Esjgv%^pi*z%q8|j5LYL%(+B}@GVyNNH^MS| zg^@1SpeBnzfJC}z{427hC<6q$Mvsz&17~TshmRw)j5ux1vBK8mBOs7Uw|@Uimcn!| zaO=@cXHRXXGhzOm0_D*2+MlG$AFs@mlK4sR;O~yaBP%d&@Z=FG(pE|%Ku&J*G3cpu zt#w^VZ*p!{V?C-&o31Iv)uPYhsmq}W_d0b}fp-|QnS_vYsF7o+!@l3F6y~44zKCdk z{nS1ZbIbj(gDOoVZnivYFupv|+T)-w>^eU-F4*Guc{mM;lKXr|pUoB1fNI4|f=MZ- z>>ZZrT}20FEK+yH{$djD2g*RUzk7=*DloH8H-BQK;UTJ{g?|okZJOCP@$-yi*(bbc zNctFRqg5UKMKm9aRh!9=mA|G%<&nu2VBTs=It@<>1b`T<#`l6%9|;M{kvRPJVrIq0}LirZC&%@4Kwd z|B-hGk_xHe5&-Pm+t3t*^jY^bembJMpmJrr8k z|Irb^&tP}ttY?9x`@aO>Ge+vd4Z$=#NV|K2icIQQWep$;pTFt6ZKzf;Fz`Q@qzV0) zD6N7!;=hqsdKDe~!~V<7m#syS3*HUk(--27vrn1J!&OrosE4}wn6(_uNjjZgG0Q_} zP*Tu=Pjil+mpe(o=mq7e6?m+0_4#va-+ff`g96+7;hJ32ts$Dap`B}8WrJIdp&B@| z-Wrwal=g}v%l?q;L1dkkK{+whk_0GBBFd3AlK7P~xicvQd-P8!I_E%lwZy^r9<+A@ zd%0V@@`$g<{$1hxwhcznqhkSsuZWFMV51NFilp1QCcVPD;l+)}({fu5=hW3-d3&x2 z0w={PTaWYxLDjhR3Iz)@Yk@e)R2x(&zpfsI?)_7AWcOum;z>;`J=NTgO5S*Z_wsvS zI-a-wpS$#jU85b4>5eoCf+n2No49t3`i1=mHHn}6GdTlM<0|w7aVxlQ!xYe^?e0eA@TwdGRiU&T!5t#~ahRR%&tDMq zkQ4uo_T~9>)VijI8B&y3GbQKraZ)2a5khmP^LvbY@38;u(LhJlk4N}GYcpJf)917W z`af{NwWyo7!v6=fz;j7jII#Yhg2FcZ$)2~e31)Bp>G}l;z)wGYAsuRm@$3- zD}R9E@}KOv4Qz@>#cGrV3wOzvIO)TNcGoE4;+gsnV;g&JN-uOypO^5s+R}6q+7?;! z^D+h+3@V&TSI@p7gU}JtkSI$tDB! z#Axh^K^X>MJmUV2Je89=x_aTZOTc zF1~9mW9t6GzcJmMujb~@ZeSg*!pN{wnrX`c+a9m zjKXXRIuZ~MX(D5K$fhvc)F6KC4yn1)q?hK_ z$f}fFzWy|~r7Rtb4Ss0sR020TA^mRSRW@PT$?_n`r>BqVKt)*m_=E`vFEl(*Y>b63 zXRM%M1OFwdIBG62eluqf1ic?z7QvRmTr*(ns>mwTxR3Gz)f>|o@xKV!pUPgz>M>N; zH%t?e-T4tdwsP^>&4;UmoFFiJgd%A$ec;bC#KlvN>2dT>pV7gq+gq)$Cc_nfgUE>s zCx%dI(%_vk`X8S5yfBslDHxwwuY@2&esSTb#p(M$MFcDbz=yp>cuHV*)-iV`3yTAZ z_9;E@+`W4c0C=K1;l8k)_juTJ+mdm0w6fL}P}fkAn=6PoI{VJLd&Z4tZtXT(z7WZlr_ADw@UetwO3 zo8tcgdBgX@&lH%u)SWt(9aOn(5pIQoQ2?-(eTgfF285PFK|dS`k5ORfepWbL&94$~ zb8$f!VJL1}c_rcT*`@_ty1a?R-6pb-Y=j!RO;{LwFFZ1U+ap2klo_so<}G{v9r2#q1^uXEP21CBQ|6>hE%xuyIeILw zY2j_HkIf%F{P*p?Q+5oe`RE(&$RWQT0C0I(-4rgqv%X>1;NpJ684FJXODlREg|BTQ z|E-w9K~3FdL2G!L^C3*kyTdTJ zCrAJ5M=>;Zw2(%S7nYo`j@PO6u04%u40yyy}JXw`~6`U6v^?-(O_`h`vV7=&~Z%axoRLHlpCM< zPYaLwAZSw_mr5>$vo+zn23R8GfFP;bLSq<%z5#bv_rhWv^;4^s0&j>-&*VD!S z1R`<7-CuU^52ZIPMHwsm0M6T8_d$}icTnd?A(*wtAXiv+ev5MW?b>}~&8RHz_cXZR z8jT*Ss``;cQH^==b-`fh;;ciwWkf+YB_ZKGgj7^B>5PuQbG(PXF^v9d1dS|M!BF)B zDtf1*aOYvb*z#0Z@|**@;D%ttV1lBU403fnyqaS+zf}iCt`|Tg2dy>}&Y`8b*A=0) z@(I|Y09V-#XYUZx>T`{_9=>1%yF8XW#{B&o>5!=f&b3|>YEvAtQ`iQFE|HYxQt4&@ zHt^ncioY{mjAXA#UeUy}IM1Y|-49n(o%}s!DNUj?+FHMvgP`IoD-;>!3!HnU4Kw4MfnTbZ7l)J}Mbx*SYI4GKMUMS(%0UUeb1fVH%0JC4cRRe!v-Ej^!B z4@bkAjvmM;Oi2VWvCP%=KFl7y+QiFUO_bu*@sY`Gb+pDtoDQ9S)l%4F8OQJDC0Ve` zikU-BfG=>m9ARIUG8sg&lwk`6-D++xtpW(;GF;NGHk2~x6rD_8b@t%AQlJe6CI~uii@R?meeD}%fETP9Wj&CsG5a07F!-2H-5)Pe7Yk9Tt zD<4Qv*GxDMZiZozw&zv(+3+R0+27Q1GP|k;KwcC#XbAE3VXyVfl!R_@GQ~T8sK;ph^Zt ztobrJ4h`&_DyeYBRz6|GopuC&Z?w~{?6DKt*qu!m$)UZ6{A947lXyImZ;WApm)j1W z2>}n}o3}T`7%9Lc#%$ib0ADdB)$L{qg`3OR*0@WEL-vtN=N@=tlaqu!Q|%ad}cSBhX8OdrY`3)m9cuXa82e&hZ~vSr=b{lv!(bc5KF76 zkkvq1FvHS{SL8<-9m8&H_2#wVO51V~ zU{g;}WZcqzsWJckP3PWEZry+IfN-{fzBy#09m%e^|L2 z27&iw+Lk`1NdmcoM>9nLnrdkHzAN5^UflR|(FS1Gq^4iHQ~+ltrHfJMM(@?Q8*iB< z4=TN`4%Z2w-E2Y+Vd}q(X=Z+;Ra#^!d!cD9eb98|_Xyha^6z<%+kf674NY&}xTx#! z?Nafx6o3dBy-FQpZ^)HWsbrPDh#Apy|F)!(NN0>rDkoK*ZmD?D7&|=wDm9hpd}$2W z3M=iiaSNn^=)Wn;3M);Dt+e0k$&zDbnAiWfX5VM!qHO7=Yy(r?IafY)HlgJYlFuaD za%}vEe+mEC)QO+}>0v#s>=>l)+))v0CVP~2RN2otU->@o8+)ROo)Jq%TifCcWIP45 zigs&UcgK&Mf3ad8(y|a&T4mxQL8S@#{EDal|7}DW3>{e@54{W>Whh}x)sXcme}=oI zm1tHTZ%KJGMY+#J=)#ct_*IV(z?Tc66Vkx4kz!NhVC=Qx~j); zvk`3hbroJxjc`RVVmtF$=i}j7SvM1jI0~li!w; zl?MlhibX~Rit&mFr_mRIwehT+vIZjNv9E#^%gR3(;$O;}? zKM*!wwYZDU%fKyV)cmZtYv!%$tf5@!ZtuK~Mnk2s%FIMs#(2<{*Vp3>Nl^`4b#+b& zN|MPbYZC%ZHZW6bug1Hb7)>U90#A`!vdp#~krj<+5 z(*3k{6t{C>5Jl@2dUt>CqAC9v(9?;)awGhwYbC%yxzlW+w8Dl>+5#*ATglElTz&#eB#Rxjx|}%5lu+ep{1tfB2sopS{t_| z>mUb&c14aqH{s7Z96$3xGKneS8%+kHLwmztr%a7TqD0dvQkbd}CjMF% zgB`U^2`wQfa_1keNudad@}eFMv5@l6gDUJpgMgwoS>CF4lnic8@n=lHOPm7PhZjg! znpaX4^Zw)5OpJcRX0bNY)#XTF-3^XA^%W$NR86<%Of!~cZffs^nfY!qi?v3*a)lJ? z4+fD`z<>hx-=2Lflb;cOL@eXLIeKTo0pzDoTo(A4)t&+7tZ;`r?^CV=;m!i3MbLOw zno5{henA+iY>*fg0bH8m1C%VZ0x2?D+g#(|ZpH)7VEQ}xz*LU0hqQty#N62Q&c_GF zaDPGyFT6c*di%q}7~ts*+ZuEyEwZ)8_^GHlJMq%EOs@?QM{5%>=aOxGu; zI$E7Bmmvhi25z{r~8U zUzMEuXHUG4pdP9MPuy<(!ZnNJKPF(Cp!r`+p1ygvk(BG7Wx0qc6h|)zjtVq zFx&w)K9-QDhb~WMBQd#tAb3NI9fHj&;1Qkw`<(Pa)9Sh*7-w-*{ z5lngd=BahfygF}I;@*{*NMB{HwlA~2q->b+qE7O<1fUFH>RPp&a9&CvXnro_XfeBa z#|-R><}0*7GNU8e`XcRBhnHB!UR?k0Px^u^sbBuEqVa!;4?^%GsJ?Z~Ut_x#E>I&D zIvKDsfc2YR_nWrQ%>2+))pjTCz_sE4rs?T&0fm(TqbkcE^kXbiGw=#;H8O@;!3n<*d1fo9ZkyUS!s?jXhxYI9y zyx&wGb1kl~jmDAtr#oc@YW8$ejys>p;=eP73`3=am=V^Lt%tQyG@COI4tMKXweIb% zTqIz2aS=a>vN&~p-(9tlg!eMFDgAA8dkM2y9Qf&diR4T9nltts+f#S>C2FbY8eT%7 zFmyX8+39rHiL&1(8L-E6OCy!i5bp5~q9(4#eB z+UGN2Y0)WlZgDwARzmp=k>+)5^xv~lEVC=Xk{u>=J(Lj=e<6F!BuJujPd82dx<;>{ zlZ2tOe|jGScwXxFw8wI9ZqFxQw{^E4*1o|X&Z0^@TYw@T;q856r}KxYub7?xW#p!r z|2^cARhUOYX~S2@5z1jJB993N%Ydbj@9MJ#pO(srV9f3QPMc<$+q#56)l zjY5bCPJ5znrg9NQb&I*RQs3rPoKSyPlY@zk1sBci{KX`bIJlqWnaa;}SEqoT+|#4O zjx}pon5ZM82t;CCaYtgM(HYVZWcAbh(ulWgWih?NG{}LrP@xb?ss6a$x3IB1(sueJ z@Tv_Cib`cP_VEw+vF31TqIUB2`Y8!xO(M80TqTVJz^lPlQqN@Kl*d~Acz~xjOzh@U zP@djt9>BWfsK}OIz~jU=my#1#^)n-|k!6>R%MRsXW&K8C{bE)zGXU33jUYz2P}#a&gUXh>>Z!Zx z)*qo%fy|b=AghQuFmGx(@=UY|*q=iI+&tSdpVoIC1?>cWcq?)1W47JwFn*s2FQO9x;9a8d@GpD!`bx;V7}KEnA{ku zOV~AwKKb)eq0qJG%G;gQe@gkA5X{3#P*I6d_AA%L>TN!puWOr{;aeT&Tb&9&@2Z`Q zS7;85|G!2U5&h3<*vD-T){Mgv`W9g0It+i-qRye-(@0X`USyEW-7CGAZQ=DZ_sw%% z4s+9wLn3W1isZ)aH$xNONx*C3rB>lAmMtRHbCO>;lJN6;-4Lh$mWSfR;n$yFY=oEb z@{M>=DtWF;dhv^7N#e&eT=1`}>MHmjU|y=4`aMJ^db=MfdR|{&v_Xw_mo@Hf3`Qy; zaC(qXsb`%ezQXh^1DO$qorXtE%{Fp{V;8RfVsB$BmX*QKqqgpi6#l&xWdGty{#9g{ zof8lcZ}o;?q9tk1`uCnRg+hD)`AL+E&y5j^;n7psjo_+KT#+{&oRx+E8ci_QVwK>W z83IXDgul@-D==fbyS01WVF4Hx^dI)y)YYs4h+|^6yoA05KB<75Ixvc#8Ps*@59B@Y z>uqFGos;GU*^;}ysYST%cfFS6w^&_Sa>LxO){3*YrL3|On~Zeg!_>f%;VmzzbUbmM;Pvs6Iex#Y8#aGw~!_<%30HH=&);-&wc{7ySZ`mO(GD$&jR|fOr!z7NX(=Yfe zTjH2#Ul&@({cepgO}T8IV68A!C=7jGX#QS_{Fs(>2fFv1scJX3>DhdiUw{pZ_GWx+ zmJ5g&@WjuG53DVOa!9PC&0*tfyu|8xij3I>qTmJI_x^2 z=SsfzlW({;zk)1FKt#`$rfriN^g`wAO7(1sM{i9kWI-wnLU(`q|Lt?N*fD1Uv7aG1 zvsXmerE~p>len{m>?_tMo$jCZ4cRP>(oIclmZ08M&y+|W0I^r|aOlZh<&}#yv+2?k zCryugK+Q}+tZ*Mk`O#OfI9ORBJv+QkZ*lsb8x2KGuwSj5j-$t2jsTzPA9Y4U3{xb zcZ2V&E$O$;CafZrunX4}JWdIGgsLEyySwA|INX0$h~5WiK6DP8#zIWA(|;2mDLNW$ z4edOAYC7J}p=;!-?wqjL6?cm*7Qo7d9}av|IYG|BTC`ze`le&SF{TPp!L$dnoFV+LL_ zb_Pz@QjlDOnHFQ(lrorpiSa8$$FvkJ_j^L8cV?&e@sG0@C3#IIs5!u_T%{1Uludp**zWCe5m2&yHA>x ztO^kl!>UfFxhzLt_!tdh#*<8{x)Njj!)$)4J4M>-heStWap!xx65wnDw>i#F`Yg}l z@G~b4QG~Fdv`nr~DYO*!ekrbc1=jv@V?#!_6@-}`P8teHOPNW!SuIu>QS9Z3su_v! zn?1v>X2Psd!TOy$e?}n>dAaN&8u{<~IU*{)JQx*<=@3TIm@5bXlt7tF2hB=(R_At-JjF6AN5ZG`pBq}c= zlbT)Vg0Fm^#7Rp2Cdnf=W0{}fSyMACD0Wunr?Ix&sERUatY`asPhI_{^yN|6lSDy* zwaQraVtu_jn4K~fL4DfoyZAUfT?|+9a%dH8$9!$)-@Rsp-=6&ZPoJ)_MEy(z&gI7;dQ-A=^)IVp;^(&% z^__ElM)@EscUry8IWEWmI)4?sIODkD4w*Sp5%AfdIUVjuhPj zD49_+Cp?dEu)Y>=3067W92$Rj@NT(%jRwvKx^ceq?W=n2$|zc-{SAg|j5%*x2zBKw zI0E3f1Q^yLRr^cM*)~~Kwx8*ImS*A+K8tq;sP|q!dF$8TFbEG@^HviJ5r-bJ->Z@2 zWyUgwrzt=^p(wo=b=1`YEu&EQTLsNvLKP8>vzBEA{>x!>0oN$baimS4y6YESFXBn^ zRQU^u4U-Xqn-aMhp8=VU$ZSFFPr5!L*xa`H`u3E3z!th3#oY;GKH;<{U{5) z`vGV5nYfTROJ`Vjz(fy0us|Z^EZ{KvL(oBy282Ko9&`&AE%3yn^@;xnezFlGY|*Eu z$nkwHWAolbg@ae}3$!7ryUNTbKerrgyfF;Ar|G2kpR;+?{7!ot?V(?|a3HMs%|## z=|qU5K74AMF%4V?haX6ly$P7DbrmjBc05u_3p21Q!-OTYt7(}$JQ04` z6f^>8@?I0V!62B(Re5}R)jJk1X=F8Z4_4bk=t@qQ_}@^+>z|#}@Yni}dW1W19E6p` zEBljWExYc#v268L2&lh`nn4m^*psC2+O!tc$3U-Pd*;OKqB)uOnbQ*I(tly(;W+o@+2;&@M%JlUAuy$u@f{B#YL;8xPDfUT+=92c7 zelTTdJ3)}*D>8+H1JD*U4Sx3QI&FU>&c`(xD2!@3nnc&1mzkxe}%KAR=%^B8Y+7W>S+ z{cJBs(&u-bvh@#1VXRKC^@3er>n6ca4GK+vEyBM>n%*!ne0KcjGc1k;94IC?`C zUT5DRq8v(rU+VSqov{XC5F7A`-l~QR90sO4$`FSQn1q6Pa;MgHh~HTb*?R6WOr}5a zKj=S_Xo*5~>wy~3;QJ$DxwuoNd!8<*O>w0o4|4W?pFr_Th0TY_?}rQ)@jO6D(4C-d zA%8eFm(LgQp-(J&`t4hCA8Rgo@1ugd9psDrL!+?5Ys0EVpBMB+M;%!Z^Alf}pDrN? zmx^xj&3?g#^ljZ%U{7jKnxLtoGgn+j-^y!2g}KTJ+5axY0g3ZcF#>P^KB7U=&Kybt z(loaOFA6zx#x=!ElSAs1;|k-No96F`iulPt5Q)9eS%o~6*{^(J0DBX)EWr;56V9jmQ@xnL{nrHIhMH|9Ap^zqK<9blJ6FD;a}yNx^cSjkeAG${?yInsS6^Fddeuy zOe&83K!ozO29Y%G^EBIB&<9G(b=gvSn##}SPD3609$cxx+{!M*xe<f}%!Je1zph2r7!{G=?O&bN+L2NHRupMofnxXVGzD%c#~+oKVt9wWIeI>Q z+Lb-w8SbZ7#YIZ6ree}$60;yg23et;PO5wi4hp8yHT*i!i4((d^iWu^SaVW6IcEtu zyA=XL5?d{|)XncEl1of2XGOW$Z>_HT@`y)MXmWYv`z(hjn zCDm4n^C$P-rXEtoFU!1wa&-Qz9#nn{%j$&k$E%kV+&{OG>^8zS9#2t%4*PxK>qu$~ z;x5~`?+n%Y53JYAZhs8lAW#u+g?hYxHADAto5f_EZVQ~sP#_vM1I(gKN`57xxWfWL zI#6KgWXSi!#jBis6$Z!pgSc=1Ol!WT$fpBBFf^}^@F`f?`-AIy=1 zGT!bBVVYffxQ*;KbWzmjJReiFHC8mU{owsk_EZ8Efq2wDdwP?468cb;eM9o>duOvP z&q@N3@<-Wo4LyQ#Bp1wh<%N5Olj-Wwg^rKMd>~y2D!$%{02Til4-jT+@S;lOn4QN0 zw-7{w*2*Cs<{{yVme4Qawd6?zZvF+XOc}$h>8+Lb=pVHE-p;Qr6xt7hYAXNHu$%WE z@D*nf_gAKSS29O1FpTSA8uNB9dJk!Yj%%aX=+iop3TS#e`7URo4@dFO)>C1>0KC z7v0_$K&vn}!S~Fs=9-p%MM_$0?U|K+^;sy=rEKW1I7xjkJ=mrtdneH}wi`v}8@+9y z7=qxPirY2n$wIyktRb}0j7+L%a2c8VmoHF&O{ymi`}6|vJNy?wW%(08#jVS8Yr5{# zYtH(zgi)#gVbxM*KtSdAtEEq}?scEz>ZH5fs%(gp*E0q6L}kklb7H-$I@=6i2O|8{ z;~H~~U7b3$nL8gWL+c|=UJx2SS+FhwP0%N>fi-)*WEt7Dr_?6z$wS*;>JLp;M)c}` zjoI!T!rn|c=3@rxA_82YRc^Xu)iIh84=iwGONQ5=i)ObPBce0vs11V|%5Smj4NUh8bdTd1|LF}y}@ zST$f|R8)5x^rrJL6Iiv|V%~3|vV393?~qRD=z4jx`Vi=yq!fNZSf2c@%FCuR*R21k z{N>DQSYU+@vr`cI{tMcMqhWnxLrj-1GiyebJ$(jXr{QfixV1T4&5xdQgjQs39AgO~ zVa4sFq$hoj8H<>$QHu@qtvw4ezf5<c)v1F!(J46v@>6~kA|ClhZ zjDl_jdT8sL41->`w_MFzsxjareEswz8>r6C`%dhGU4%gHEy?uiA;|P>-%xyZ3X_}{ zPp8!}M+YnLbi|--4{HbQ>k^{078*cq;h9!$)bs(uE{ikFP^Bp|iCdzkC97cGTfSXP``-yC3{p z9x6hpHdx30Tu<8$yZq{KWpnwEBeKF)k@} zS>BSxKWgefgxT_eR383XiLS>uLHpNfFZl?m>muu1_w$e6Kgn>d2wAT1CEy`1zUHF1 z&sXh==2cT|aM{V(N83zWr@fi6a9gN^T&j{_cM{&8&UJaiZWvk|h0BIc0CBd7N$u#~ z-3MocnL4e8z0hTCg0}Aa7fc0arM)|0uuzXq!=4RG$#p zRH%GHm6AXJ5wb(BmT-3q9CUuZTl1+;JpN2)(8w3z+QyX!_Jx&R>$} zN2-!T}aw} zNPO(vnHVGTwoIhKmAbq{>4+sJJ5M7PZADoK8m{Lvk6DH@m|XaEA53lTT5?ZPeIr}S zyV01JV|B0Mn!lNV$muA;A;}3JLBtF%@6YkvjMjg9hh3`Q{#LJO#1uTQ&#WR%J@Mu0 z2(H%m+B%Z>C;jBF#||h@+LtD`lYJXQ8PnH! zC`ZFlxDF86gZD$)+U9Yi^Sw8J8xO%n%bwEB&vfkh(YHo9>u%SKL7tQ-y<)wHcDo~@ zV6G^?V&7!l>3LtfUz|x%zr4DSd%?YC=~Tr;@zb3nWc}&2;6?P*%ta|z)CPhob0&N@ zStIS0)5m_xgVQIWfZdw(f9fT%fi_)X>pUICACeVzJ6mNu0DlczI`$zbpW(YHC@$tJ zSO=WOg)8;4UE+@VHkU?`M)wGnS{m_m$G@$MT7HOqV)5Y?y}I2IvBAHAMvfAj-BWnS z^S@&;KPhx{WWTxgRl0L%JQTJUg@6@myqv)>tUI-T)?$mGqR+Rxe8EfFWk9S%&YNrv zf>0J=1Z^isf{;F0ESsQ@uTh)OUq^6b+Xh%RtrjU}c*o*0DvGO&PhH0WwXo`?;^sVOnzT^Z6=GiFcLJxO=QDmwe66EM!= zq;qil!jl3UGu}J|uiO|P=rW*{hpZLPTXfKyT^Rp~?OT+fq|hDt;+fCQu<^+#^3z_& z4_A2MC&!!>^~XOjw!gECIC?#*d(9iFN2T`%w?B!0KgY9!?Wwl+ANvYj^zO-vk|K4i zM+yxW=BM!nQviA9efh+8+Y={oq12v~IOpAWj_mo&d{{mW+^Tii=r&C#N4k8sZL|Vn zk{8c4vLfL!=u{+1&}nKJGbig374~0P<&AgS;iAY|UYxe*@x7lG8&6mi({)$}`XvV9 z#ewstolpF00o+d?1{NQEv6Kxe*Tyhmtk>HcXr`PMj91v_=r3`;puFCSJN{nsHank% zG%J+)pU%T#>S4h!tU_Up3;6iDMTfal?^&eikvG9d62a|FXFV(IDIe{|BiKCh~1 zrNy>Rw0vu5JRa%qe*xi*7MMTvOgn6B&bZgc)HRI1OB5%H`6mT~d9qCY;1vgNsOClZ z2D3_G#wy3mkKgzBC$jUigkq8BUcL2CbLyUnACvZyeX0^!`w=cl;^oLsAA-DCAE+Ds zKgx~-MBn#lUzYoSh!?07jQ%D#_vv-1sClp;|EeAzA^{ezFc0PW3l!aO?{_jlH-I+I zix&=`vi>PcRax|8&6y`)~O#a(a+r9fSy?1x>o1;UhB;1xL^XY64qr<$$KuXL<6deEE)-HV7OZh< zlDIrKaUGC$@kUJ& zSghg!b1-W@aaBV@ZaHdJm}N?U*6^_v=_7-(`uwrXS>Gn~{qnLMGQwW};g)-B51qY0 z9Pc*4m32mA8Nz?Lc$G-Z)4GMl9}kM*WjehbaxSOQXk)w|{~sM44D<;D7X5W`+GyKj zUL}3Sf<@QO;+Azs2Aw%gc)n23Kbd;!V?Wf_QVs2P`l;Jd1Sxb)4KHdrRe*l~=orF~ zf>y!T6k#X{_L%JjXyMNW4epJ;0S4N4)`!|%_1oyEN6@p0)sHOi4huT3+>Z?H%$K`) z%YxmqEIGf11vR!^vn+YHJz0o+#Z;Ycp}C4s$XLlp_>J{{02X`%_&aTvKIq{2m%dmg zjW+i2&LG{k)HI_4vj=Eimwni~Z#8LatfBv=`F$p4|G3Xn>EotM8 zYk=}Pu0h|ZZ%@19WUc}&N#mP>(Yu;%gkC0e2U-4lYh`I}>36pZji5u%ENv~=xb^+n zY;j>lIRCk4$@+KWF5&ZBPbnYV%}ZSr7c~b%nzvEmXLkZ%Q&*>n?|11s_Ow9S7>=+! z)*cVMzfv7>Hw{KcvNCy*Mq(9k392uXI!~CDo8!Jc^4)bFbeM^_ z={F=5Wh17_?M2rGZ+ue38ZJl6P9=~p7-o%3@PKK{Ex%as11oU;4=&&J{P2u9|3A^# z%l^k;Mw}+Sq5JyV7Oh|V3cY~o!FkLZqkF|xdZdcAA%Xs-%4$7#<7ymulNgA>-GU>&9?6|?WUb5q2$qpYwRs}!mA;>#W&OA^lCfBhDq50 znh~wvG(3TD_p}@NOuG{?W92g9OI3eEo3S&X?+xOfEq@k>rT)0d{HI>CIP3Y*H`#C^ ztC>s6eO|%OjwkqR9$&)9asn;~L%IuYzn0tz(=}B}w&;=?{L>G@IL$YuByRIES z&b`qx;R9f9B6{XahQ`r}~`rHN4qp1E9p!->4~l{wP$w1=)aQZu4C9@!M4r!M-YXd28bndwbWL<9_)&@f=OH340#EyNbTo zWOyBE$xvjFIefjE<=lMNCR!(^kzfGy?+2?pFb;TCBM%tNQKsv9(pw_({hI29S|!Ce zSgs!2OgB7nrB*C8)cK%pniXvHPNk;xpGNHaBc-|hAWK{sG=bHN>xBeQdyk1+g*M+| zxAR_Eywr~KH(u%+g&%U7!NsYKP)FL7uC(3}K1*&VYl_;m9TFn8ziR2#>T(VT8;L|A z(Ou6F_$H|?fJG>4E6rNvDXAaC=(KISi>7d6sjICIFqhemd=8T0Y#G~^;@z(*>N zFq`I>@XUmeX;n2#h~2ttLDf{`ysYGj%(SbHun2b8tO%onyx~S2{>yuE^3_@!>a=C{ zqqdTyz;fo>SM-uWOoWt|9N<|u>ZRbQUQMa+)*ImT+( z@P`If34Ffb4B%sj^O3F+6Z?uvjD$6(Cq4ITE`70>%AtHklo*nu8_f?yLjUS6=Re-g z2)m-ajKRChEN4LEi04t`x14K`+~4e6%bPf3#|unW# zlyJkbn;YrY7swU+(;P>}OoS70*SM|uU?~yTy5fLffox@}O?!PFY<>m|ut;(CWx&-nJGTZqsoUhO8%Hvv)2AUi5;_!*@_o0RhlkhtWAMuOru{OncQXBLC zhtJm{f7rZx*%oB~aEv!~s#JV8u^zBX%69`tT zp!?tAXuo$(m(WDj)i@zjitVh@wQ5gh%*?Yt)HP(rINCD;%)`VJwV$2x3@ccpFBTkT zdjU_yU&6HdqrkaPLmQvB-`!?83v>oEW;BgZ)%M!^46*tzJQUKT`yR@!_mk=febfLQ zA!>1RMx&lJ3xHo2_J&NS3mqadoRy`>rK?kXIpZX8JDLQ zQ1d)Pr_;53o>RxCa&-zi*IjwRr>?=@KPYpLkXH}=z9VZvQo3#|IpUCE(&cSfO2s%S z4R5C|HWghepVZK;(Ly+i>D52O9V!LW|FK*jag`YTN2=St0T^WQI{Yt#(kO))s0Oo*y+~YEG~(=NzKGYXJ#XMe{+mAj>n;0Q@U^MvQCXnp5yC; zDeouBpxMY~wSj|ck15IN23wAbRZhDlY6fb3wJm6i2+5{>O)KRsZ%Igd%l{uC21jA5-YP?C~0+ zNV#yWFD3rBAf>Ac#nXc--3{B~tfk7Tk8wx3{lDB?78Q~gJdYomXHkS(a{gY2ix zLRvLUNp9bvzZp>`kDFhr06wX;&coCw8R+!I!S};Zq{TZ0ZKI2e2A$*DjtMKYR;`*N zz|gWw_FmsJ_4Py$qDW*|-cG4H)>A+?-6Y3&J2f;I&5U0fnpa;@eVm8bzui`4_4?Sx zZD7TP8)u!X8Om;OXTZLQ>2yogz-KNII%p?)#Q#ri(~3Wy{OMceHOP~91NOrE9{xa^ zBrl&XZ@Q4Kd;+cSy+-5=cSFOXJ7FjxbfFP&tY}A>GIk(#IUZyg>FlTk%@t z9Feb+!FAJ$dR<6Im!9g&n#6WtxFwo=Oc6Dt>oy_OHMmsvS^pJl3T;}viEolYmu+F< zsM`AO+jmYnicV2VUwDkcU8eMD9@}!2$@%R02Y15zFF>tU`;Y^8Mk`MsRk=YrqVrJb z!2L(rXI~v+hU(`v zY^jEkxikx=Vj&;9W`X6AV;6z684*Pe2}Wh4I~Qtnf}KfR>%p19mqfsLo$ZF+#Qv+w zvhzGJ~0l&-1;_JO#Up-!@a`=X*p3NVJKtDG7u zqU!lLv$zIull{vb8h@w`0Z#f-UfY8YE#8l}`}@SSBUR;3N1VM0^QyC8_ibz&(=Z01 z#f$P5JrDP&_XY})csW1hLvzw-O(HyZ6Rj~Qy7P`?pUITcYv>vXh0o>cev*&1Z{5nw zq62DmVHl2Mf!3IHmtGOWCrda7ikrXY5;EDGtlDRxBP~usRKg|=6z+=v(web;C<*=3 zB!3C*=c{C6)Xg?qyi)csZtK=#klpA*O}}snLo$0qYm+Ylc3u0s25pm4rY2pMrI`BE zsR_fj>5n65GNpt9NMSZPvx^V3w`-9ErLLOz)fxBHH0u~AbRKai7T|&zIat z5(r8Mke13R_*664N*fl*KRJ111Tg^>;hS z{HH+-B%&Vuh2MdwfZQq!p6RYfcpsDEgXKuv!C}*vRBOlCsk+3Y4(V*B0`+~GO>cHt z(#0c5;Res+P&l_iD&cEXO!S6iJj*c`m!TdMQ!kJrJ<|te5ol%npwpSgUGvkoIt&`N zDh~{WEr_8i_Xr(E#g{t5t=HKUlUsgA`}5!-$012K{bPHpy(ai2v5499Zlm>E!2aYm zG(s_LBY4h4EXO9z7KtIUf2(=k$vkJ|aE{CjyRATK&>!Kd#jV>G2g zIfC8~%4dz?dKdNCSCFz@YDEisY#W&Qb<9t;K6{i!S-SR&jPQkxZNqBc-&WVr^16KS z%RNa~1HpOq_@%0N#G!Py-8Mj}sgN?qjnF%ZQBuD?0(jEV-SCGX9iMs z1$YfwrPJVQ#K_tJx=%M3J`8j{a)V$p#J0D8`HRfd zy4UmfPLE@fW{pI=G7KsGa8~{fWbx9AOX2u#Ht`UHjRVDp)gsyO-cfxA#M)(lO-#fw)BscJ=T$!>4Oxnl?yU6M-PhlE89TjtZg)p~0iMJBQh%ug}x z$hvKwo4+%DrP-3&7}XQ!s>d#!d}1kuC;cFl&2w|ks!XM39HaO*Z7KJ-hf#MHZ`IYqApIg1 zOK$@87ik~s>GzC8e%Iss!uqj^;gw(J=kFi_>siZwX-G-X2t@e@i!&{#C1R#S& z<#9JNuB{1?qm)AI=zsy8W<`EQG&De8`j8@)2J117l05(O_4;vlR>sT)Yzf`}q&{%H ze)yx147BJZeMEeBwgc9$qxmbvoT_qxpBri|`^?PTjAOuJGRQ5^^1*Aky+$1=Foo4+j zBa%o^h+Na%ODEZmt?#x>2I#ObL4tw7?^pBfV~(@;$8u8@WnAG-7L2NItOm~n)A~kV zVvW7T3ZGBUqnUJX9Xx@6R?-Gi*h$%>9~f*}e1Z`GPTn1nIJr6#nH<}2ul?&a>jn6WA;8WNGhJxvkCRv+7k+UHc;33k%L-c z>6JX+kgWD)hhb9sytxlBz==XQ>OU-fpOO6|N8d^*w$7H)S7@r@P8KQ}IX_Eqe;&!D zJy5Q*%&m6yGi@n_*PGXpk56r8u5Ug9>#;2eH}hgi(WFPqq^Dz~L;`X7R0#F4KJk5% zS`nf5tCKX(ot!H5+jZ32HP+iT)LR_;+jV=7bync#?V9~Og}%%6HO`39EY8yk>Srsb z0?p^Qml~xEr9}qn%9kD4XzA9dHv2E&UPAiyG$(L*sNrCq4me;a1aYUSGke5_6r&-3 zLfz$^Yqh&4O0ug{g}W!;P^q^O3c`9)o`UvjZeIU@eCQrGY_Mli>6Ye{&z{e^L0d%& zi~jAzZ`UVbLBR0ZHCn$_H=r%A%rlJM-6PD2aWXwyPa(_c<6N$1q>H`Vm5Qo|rXJoz z=%%XGdMwzN_tWg<)c$d#x)JTz=x^Q%Z|hdial>PQPUm{(5rs z)feaKf4$~jkwuzT1p(e-TkglW=Qrs^=o(Um1(TAS9z+%W8ZsVe*LSw&jM8pbqmm^n-6hqSeaZI`~O}E;H_fER+^dFW#IZ81( zh72YppZ7EITe9*cd(5^qhbr-g<`r^GC$Rdua8{efDk^T~=k-epgHR?2;SaiLUrJ&j zuV~KS&MhpDLN>y2%8dgdmC%XUde3*Dofr3{Z|JtB=RRR%e_IShEgwxjO|@kant}h;iaY`c>1>X zx&NU|HOSD?LR~?=g6< zG@ThiPWec`@BU>xv$-B58o47}f5UH2S?6hwW2eijaxdSRlz304z?D*=;o1c-scPr= zt=0*2|C(g}`tM|pr>{T1{&P>^-nc?~9#jol?KbV|g+3)9;XH%>OWVtU<7-+eOIU%{ z_AHo+^tD3cf2rT!95_;YJXH)4o>0?L?_2AaP;0{Y0(DENO(kua9uqv-c@-;lwsWL? zqaZ%bp&oLTOT6;(yI-@_C;)zdH~jLH=SmWIYsULbi`$t@>m~+~4@+5D&Hciu?Iw!r z3IZ67Hmf^5mn5y+u2DZ(Fq%BNt>&kPe_0>4)Y&s*3$+q;e;M@KuT)FXvctVU@P$06 zN#Qc0h?#b5f5|3ZnG*Q4sjQ=>g+8{CDJb!u3cGN-aci{QUPg|B)) z8$}u`?k4)-xnI^=*v>jKcRvk6NZ3;*iZwz16&gCUb;O;9p`8LEkdw=}EUxq_|u*e>ywH#@@C&?`Wn&;k#yOhtb6W%RgkbZoM2iL~am#TJ^7 zfKzSFDmAUQ>gBs(h_?a6-WYFORY;=Svq?8{RUnrfn=b(w0S&H5-YhorAfi#x58<_W zVA`Ia@g;dv3j3guyt~ZAMxzF6Jv9*@FYoD@x4)@q6YvrPlR|QToiVian-G>YuS}>& z2K8G^pH_<-`qD2os@*~}IEvaGgF)iujWhIg_HP|*Ng1rQytY_{15ox`MPUV5YYN`& zcRySnoWwrpRCtBu3kM)sib)XQ1#%|@fT{-{ZY~Banagb;D(1IhyUegsi3;pvD)0Mn zC-capOJA<{O`9JJ-M`lur(fJV?1uB@Hd5~*J_2ud>-BcE&2d|XhXkwjte<{wwlcfU zdLi$0y|=icLT-frJZx$e9!_SIT7K^ZeeRN?a=c5V)4<1Fv9FG>TO-<$ zBuEhZMl100?N^2U+U1MgzK{D*Y`3eI7CSC~yJ~mnECiF8Z`6G$^f~EX+J4}Fh_METOuBJ>Q!eAmQ$5auY@QRe|UPoK2XRCrrD zM~iv9>eU`}9b0!0cST;RemxzUB00(rETG#y0LfTGP2kwrd4ytRaf2Q8dVXVTt4KH$ zpSo00K_M$Tx+p(%b8|DbMi6f0VyH!<=~Z9j16YU$XA>KCw_*L}Q%(mQEnoc+?_A?B zO1a1r$#(o{ZER;<|8~ZNH1hTPuB-+nj|2avk<-1G=2w@)wdeJwQ~ZLv3g*2&=JN~6 z#?4p~$5OG#&P7czWHPP{4nDi`OJ9Qa!9Ea`-BZh)_rB(8vb(95ocpsFg_4%r&Sf^2 zSTBwq_dEK`>)mRbD0K0dOlLs;jIdm@1AhXMs6>{<8#q z-Big0|D-#Y=P;_SSZV|Ib}@^)5b{&T2RfI=I$?C^KRK%SU*L+99_BH+vQ?Dd-BJPtPn{< zv95(4c4c33*({3hQ&Lei)?FWi%U^%`MngpL1y$L}?M8qQ`+=)_yhf7mjwG&LK z*7e-3V(sl;j6^}=j`XfB-?}}-Gij8Xko~65VKEp!#4#j7z8-QoPL3^EuT4o>P`4-x zW$j!2fnVy(r0S5BEgWqmv6kdE9z>jrp9wI7rO**e?jYj0uy$^JF(VIqgJyQ%)5i^N z$G%Osi;Rd+adL8M-7_&ZHvj$O^&Ysr9iLHyGP$%5+<^_p9b7-2+sGxsg&7TPn}3*< z_D|VwX^+#X*4Br}3&56?YOxQquZC`E1aq3-AZS3O5PbH>lr`M#qR<8+>E683DD~ql zP?q!TL3WiZ&Y%p0)LT_lCgokUr;A5wFwU83SVNJYAIL#A+>kfWO}(S<6hNzNV~AK zk)BFC6B=bfyr^vdT6^kUL$L;mtHPI|JD=59?fdNUs;!2r$avDpu`2)mL0Ffv$?v@B zPSVS}1{7SI$TK$#a$kyYa)#7&%EOUDI$xVc4&RiE4YS=CYXzT5TpT9MgB2}mpSur1 zE*rU)qG{)v(XTWM=D#_qc!{a@Ai2tGiJ2ln+`$^uft&6gp2snC&fGKa`k7(M5Ty3K zJHMiZVN4?-)AK9t z3)%*B%a6}e_bp~O@>M>FhoJ8kO?RdOhgKf{)xK)M@1+@KS|vTKSaF(la}>IEd=V*t zy)!J6ucLG5#3N;Xs7~*ugf$}^TBoS0ow9>Qyfcq zr=#-Nd1dz6X7f2bs|C@H)P>00x_0o5Ui*oNcJwa}(nn0Y8wbTHCY2r-HUkIlUlp?7 zklT*WlY2+s?j(5LurG1q)6fUu9gBDvkM*7ODa%+mwtjo6DBwNpFxyhH$AW z>7`^LuH)hn>OxFYy6!bO&Nx|>)uM_Q$GiJ!`3n4dea4|{+ViSPFiV9!?mTid_DR|j zU;kek+HMu+1gOM5(P)x6=kvVBF1oFscw=YG^#8!c(+Qj=9Gu%no4MDU@ucICNJp}n z7hDKagF*_K(4ncp_QoVgyzm>hFnl?S zTabtDDe$(ySr$SWjeZYFjb*{Uo1BF{)|7=cT@YwOQm>N6s*g0(?ebMw%15`)$X%NiYjInE;|Ys$*ab;o25>F0reWs6h3Zxuayd5sJRBxlJx>QbyfR@LYiu?9pqFO>iR zk>^*0&XEmr(Mnr1@-C-L4_YmXLIj6$DyK4d@#M9>{-C*~uFYY?;vKdoKm$ zw7XFxqUi=5NcroU*-+E}Y{_iyb#eDagJ4v`PDmZjrfJGtx5A@DgIoR@zz4UI@>~yH z$!o_w1Y1D1$m^+z4}|$P*C>5qU#w3MPnn}NU;NvRFwMJ$?5xA!+r1fVqyANw#UIiX z^HNISt!~E9Qzr-!)B+xUo7c-K-G>&U9wZq7gH)dlM5>Y6V1BK8 zR*NO0u%Cf7@8DD$Lg!#PNrZdJhiT23C+-9P$Dsa$*e{Op`h;lM-&Ne+*F+~>I`XL~ zrD=k`z|CdfaGx?0t!@B({>E z)Ren6T7Swynhx9VAJVJvjCe%PvY&d^oR54l6P`E3B^s3&IxIC}w~Ef$$#{}$JmhF8 z#BhZz5!}?D&H4weNlcH#G5O}F&_`70bBU*i^85Bd>X}&~{CKgO1r={ZjU!(03_8Rm z8yDHd7IrbH2C8o@at#>&{;`D5(99_2(yoUz>u1E}m*P9`hqpmcWC9&BR(fkIYiu_- zgm#KOQ+AJub{RRDv9mu(SI`;+4$Pza&HUN^bt)dgc;oaszi0HV1mWZEKGZ$qL^qQ^HrBfp(Rq_>)z96e0RK%Jprpw*b>_%6lt<$D zk{1q82b^h#$xR{1*OBww)^r;{FgOkSvW8OS+V8OHIsplNwgh|nPXFeQp+({vMCq5j3gpVKS zNT|rcfa}OUYWVB{Q7kN&OoDzo7$%hK*|U68CRtk2#-#N}>74L)b4X9@y-JF1Y2g?C z{F#P}OLcX1RVC;T2LTJ6ykMaH_x=mY}T)&|Lv3Wyj?wU(m7JyzITv&SR>gaARxdh`giP& z=;+zk*ZJzyxiJ9ZJahqV0d zw`Yuux*gEMe}46)Lx+-f{qJ${kN(%j?rcS7Q<6bc4S~nbnx6K*86B-~{J72g$BHG| zM;8AmC^*6jq?vei6=z+$ew|U`Ve0egA@>*Kfa&mIZ%bX&T z;BJSpl2(1%evDm)hEF%Vj5T8V^^QUpH#fH={fJ7!{6t<`+eI>tX6VvzuN?+kF-D|s z$aVI7d_#HZXko@?|y8wjZ}|+veF-?6y4L|zcdQ(OB z@I@`arVS>yoUHfAB5h;B!>K*B6u9Iwn-cdt_#>+9e1kDKq$ZM$OS0PWJsorRfTCL1 z{3RBFL$ZqAqNL%{z)!L*zu?U*Bx~!={RKtX&-B9Pe?ELT!))k!FwrM6MojavSa#v2q+b5oOP&z6}8J>&LVRN9n>GLZG}mnDB)DpM6BdH)|G{TqJ_<52h7l|Cj5jxTgJtVKr&8_q@87>`*RIP7LV|*w zuyc>Ejh&Vz$ouAF{PDY{pFn?*&)8Q6w%^#fH}K1!KM+q|6FO^TWCo2E7ZgLVZz~lv97h;fZuCD&| zd5J#_#>)6`I!Rug1y8qZ-HLBS1&^&Q^kWvdEM)0%VX*12y(c5jLRQhS#%`~SahrWG zD+~5fu||o8|6*v$;-Y1th+{XG^KHR#&`d6W>oE%Qw?^~^+cSwL$DVwD0+cO=b zs^8StlLU9@{|I(dR6U=hzcy#FHmnrY4m?23`R(7(mX^>awHLNiqgRIog8*srEmwe( z5gShpUi=;(pe3H9;&z8mK=j2SJ%Tk#F#N3j6;4_h*X-Q6JIKm9k4$^32a{M-lkdx_ zl#`auY9Ffanl0D86-Jw1Jy$H@V6a}d+?E!9?A%q=cf zu@9RhtC(2Kj<%L-i!c7Mv6Q|M;IlB%Wl>GwnMVtvN(nqK`^!zzj~n==H2nH>NshG+ zI2`Vru`%5vJt7;{SiVWJhNyO6E@SZZUE>rjGw8z*=EigdSS?JnRiRxT02EtMF=~IF ze$}13cX=bpewB*Vd{b{wT+fb)pepU4iCpl09QYcW`BYyuulGtTY?4T|gSqt%$I(c( znv<+5X7Q5&TkXKHXX@UaxzC>cvNAtO!#GA{!7WHjOWVMVwtaP7Nz)4}b$+*t>wD(9 z(YbTxmX?o#CcEA6KTkWuoDc?n-=P-FwX+X+x1Y@*Cd!y3z2Fp9UHFCxq4P;jZmdB4D z$JT^X)|Z*JSk#{I4{!^>c8btMt30>&kFBD&NzBi-8gTx6AnC=bBt!JOn~;!@S5RQA zk-Spv7#SIPSxX$=Of}_{lr3YLRsf%MBw~uJU~ou+JM}+XUhxKyR5@AJ)7y-M8<;UG zj9tKK$uqnCu4t#*7u7817gA@=oj!9$)9c=}_#UojF}HRjGUlN2iJd!lHn+Aill^M) z5YMtSGi(*jrxYB{s+LU;H)lG8k!qIN3W^YAfCRk+Yx-mOed2pH6a09`>8hZ~j#3g<2csnd`y&?eTpD9V^}{Q&0y4*Sx_Zx@J==C# z*!~5MmMsVI_xA1E*b?^`X(P61>ht<8*D7ab!DCrQayI8ZK9h@ zr2O`J3*rSsM^l480LZ1mro(VwBX4i-ZOJ?nhXu251M@RBQg?t`RF8rXjEyr=!H}?S z__66NFe2aVCI%8vFwZ=FJKX(rgTa*U1u4&{kE@|ZVtvfyh3^hE3 zLV)u1Yu7#;wXb{vFYZ-F2}UzA>UYz5!Trxq-?hWLe@qE&)~>tFRxS7Po?Ty=()3E1 zzQ9X$L;$0RgoK|JIJN@{AJd$)m9+n!pK0yZRonmf|NN(E=)X0~O&NNgndx@0!N{?^ zKeCG9ga|d0v|7ey_WJTdXecEuV!jI-2PApCFKh~JWOUmwMwBu33OS*#;g|`nRC|*d znw*D2<`x!Y@M_g_9p{sdIbCCH!Znja=bMq6^0zQE%MkOe_!ZVsr(~S&iDD$>&XwhE zX7B?eaZ#(82aek1g5zV~6n1#2Ee?n4y#LBH6Ooe3ZsDVJ*a?aVA+e9`k2G2Yt`7NI z%Ba;~gUYR0@fAR6TW+jPMY)ytz)FQf)AHZ6z!<5#uOmjY5AlfJ;EIsw_N|8w(VI%Z zKh_pJMq$P0U67AEq(`k&U~K+sH3LAyem$hhKgBS={n( zQak^mnbq~Pkq%H_zj6VPgZ09L=o2dGnS?Z^SeqZ9x8!DnDR1ETz8`w+vb5b12_r@9AL&!GdrmkB2tf+|2iyhw(k=*}ViOz0;Wd39`iqBa_nLsiL8%p-6hj;x@ z7zPeUlS!8y$!QqFVag>&cP?Qi--mWA|A0_IU$m1}T;An?*IsK+W#=aIJ#yL9GOr#+ zv)iAO)NI>OvPNSoMx@Bb=U}#NKkw)AyiR>PbQbFflY)`Ck4ZflNXux@Ty( zVdom9S)s=&nOjWht|%{Z@O>B-h6z>d(Rj*Tk-da5nbKzG5-6GZLg;r+s^T-S(^*{9 zzQv|TPFi-Oyep~YY`aKCxj-~O+NVdpXBnNguz1|()=3Stj^A)u`k?>2K}_`pH-o|u zd!7jfwXmGM${)SzS~-b{$&(Mlpy~sCbX+VMVb)9fD)(eqZH-4 z`10~o-yiexO-A=*JDtt;ns++*(ItL1guHHCe_uS`ru8Bt)Q3?5ZUrE4}ku+Ftm76vm8D4rz>J0g^ z?LRT|r^R{sy{-QJ<><6errG@UgW5&u94dNrhFIgH<(li&W7XAJG(&A{#i@!H=XHlF zl&|qeD+t!I@$xGH?>PB>mFx7g?H5t(P%8P|ZG=?cF1incr96ywKHpe^tI8 zpDblif4_z7NS-{BNbD_|vD?1ns|wZ)J0BrIMr(T&tMJn&>xi^!OJKO7-(8h`*U-@H zTW*WugE;ZSEnHG~7Ssy;cQwYMEFc%poJ&Yd%mJJ;*;8%`5Gtl4C*fd`p9{67MYzGc zyl4NueXfY3t2?t9rGC-dwtc%g;e?E?Zm;)VYmaMRmo*wVJs-(m!DZ8LMrUtgP?++6 zf~QQ30m4AmkXKjt3-Kgw-#uozvO|ARVT>@GZuyT8r|w(CL%i+(8)rS+iDMR~^4I%^ z>8;JteDO6)BVudw<+VUO?gMnBWu#UXlGFJ7FASe|>}bg=o)KmBz^&JQ64|AhPZ zpFMl_BiWaQh4ijueyV@Usu9yr6}I4uXmhXrnrZ~qWSrd5l5*T4D=W*F7w$%lpL@I4 z6schzK79Djy?X`ZkA2l)c+gD>Qc|aYp(JVeBsIT(FQ#W@8uIm>Fr(03XZ!Z;xPiLg zm)XRk0wiA7UEU0&Nl(s5L|E<+6!))&{Ch(CF-!!|4mo9IGtgM{iLMeJ>|yKq`r7u# z4dG?nswsWIJ=unoqL^Ti>dT`B8+iabs$mQ6&D6F$R8i3+(=f&ylC3RUwuDDgOFUXTL5uU?Z6)XQ!{Ke84h3+Hv9b0{-(kRO zG!QuCsEtUn7vo&~9PA+Ny*xLr9lrRIqc_dBb%!8*X*9hED95kyU;MT9Nk|kmJ(NY1 z4aoHGzWYsNGdJ^ePK#W|kuPtB$NUB5B8vf>u8+0wM_YjE-LZ2b#N6mQjXdi&Bv-eFkdw~rQ zJzCQWU9039lVPG^x!H>Lj6)v40AQycICc^9w8fp)mT@v6EzK8q2}aavGns0;(Tiu= z6ILe6;RfYdkt>sgnI>602pLMOhlfX%G)IauUs6&crq@>jlL3w8=x{3#VV_He>0YQ9 zr{ySsT2!mhq5j%?^Mr zsBPO!wFEA~c&Q({LHNvBoDs3exxj!i0AZ)Z3TQ+nsd~gB?Zn6LAx4||@laDhG9IO; z7XhW}XWwsa9=CHeLRJM3fC5wfrBk3hMOEGJQE>^4G*pok5KRQBfr9B={5qs~cg;AZ zDFou2KX(TB1^hTJ8*;8I__c!7NnOD1<_<}$!XTL466mo60u9?~7N8eNQp zf9?QG34LfzP=J9f1Xok;f0_If+$B=xV_Cu-60%FdHHkDeX@g&pD0+*FDExadRrZ2(fd)T z2tyxL6&2T#u6=v=N*bNJaG~?MkUqjmn3erdV!oJo)SgZay%N_Dk8@Blz_O_#hF)MI~xZ5&&G3v`D--#fE){msGM3`SzvyRSWBg=N* zre0C|VSIdi84~$yFpe<p|k@p+S#RiaT!{JHOPCjTj^&>$&+F86YVe+cwkAy zlhJ}OCXd4}QEhB&M0G=6?%A_v?t^OU7)V=i^}0=Od!AV7$#N4DHGN!4a3iY&Bf_IrMQ zdmG{K;2yIOe*rG#aRYZJJS&Ir5pw9PJ8zuUh~_E`u|WDGqRgkO_%v`^1hs%hih~h65tH)xh>dw>I4Cq^7^HBmX?lp5v?_8S0o0E{ z=~#hYC|zBvo@#7VqE26PZ%sou16=Y9q5(NfIk=rs`G1r_-vlVKT>eSqMSlHXMAFSu zzWXl}`2i8=F8Fw7{6TW_hYyyp+@N})I9^*?YB||Wrri<{J2H+u0Hn3|n;?}47^wT6 zvh}M* zCu{n3=9*=ydC`A{DQH1^02stp2Ihfp#CSNulmhq?P>CJ#rG7Pxfa*tgO+?uBc|??k z?Ap|v&vyRV)YSe&*#%jy;Nv~t{_(>y5DqAe*i~Ho`t|FsojcnZ7)KK2%BZ}GN(Y{5 zUll~)QbyH4!2%qjceh??)ytvNErCy&fQ8VI2P`Akmd7EW_%oJ}&<))tA_h_n)}f%H zVh*_&Qkel5O%9%Nh=2uC35)@;zd!!?n|)yWW~IZ{I6e@d`}<@3%o?eP#ldJcvnU-# z^3kJ5FOYHrmD-C3?>i!@=6SylLPber)aI~#tNnRyL81dlaELl4u=D}lCfWx*h5Ck+ z5%5wPylF85Fr%%AhzN3R9wa&`K?ZOlLTGKfV3~qT<#sz(1(AU3U(EC|GkdT;lUO@8 z6}3@S=GR{c0)KdP)O+I7tL4?%R&wMT0nerzA=mJpT!4ZOHonxe{U?-`e;v6tXc8ME zqG}l2A5mVjHgAh0WLRoQK#a1z|Lg5ofPlEoCv;w3`-{|!R!-G!AoLhv65yYujQpry zZy`w@*ox=eSbLJDUm8*;K`bVoPPyU{0qGY^`#6pVSqKTr1(XCNN9gM6DqMql2|dYQ zNkM^jUa9&^nO(~}VaEw856HD3r=ufe9ts~oHqXcZBq_OHOpKGS>D_sx<%#l1Kx+x` zIGgnNtHwjLhy_;8Q&o>jHd2TKUw53Oj3mHTgM!F&7In_xhVIwa*76C8kI8#O=?`J? zD4n3Q@sLj7UvC$#AnOG5TL9OFG}|(>*S8$Nk%O<>4xvMIh=oY?0YQzrx_03Iy21Gv zt-xym?;eVnGXs+Sfrq3aNTuod^Pe!)0|UR6N5EB|$qj8@eL#GVm>3bNc$En#-H^6P z?rd)E&%2JR^<^UGXeiQt-Z#i&U0_@8E3c%)gq&d81fE4y1ZWXRU1&NJRi}}h&-nkqE~M~+Jgs&(S5&0E>1f^pn+IdwPyjb$fK2G zKeaqnJp;E!fpz4Al)!*g`=`19s6vpqrJ31b1A|(NhII%M-gQ^Mhm@ZN)Ow$|_=Hss zc!Omm-Xc{_KE8ZdkOWw(>R?h3Gslv=3m-tL_gK-k)Tc*7Z+&s7unfUy;3GzU4;Fzt z^9(82HIV!9i)*!8vp zVLXd(oCAeqCe#|CR#o)!bawt{@xH}yEMfx8jtB?s|Y{<|5_s1{(2QX%O<9oMl_P7r!f|f{EjZR-URe0jJ GYySbLgZ7R9 literal 114151 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

AnvILt$-fAM=reYY>V~fxqc>F@I4IM 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 CI$Lc2KaGfVUFUXy^x`OLKDrex1t&qBT|L_ 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 bSZ{KhzOnu4Bha~Z#6;z~=I=#U{|NpsZFCX7 diff --git a/networks/CNO_He_burn/CNO_He_burn.py b/networks/CNO_He_burn/CNO_He_burn.py index 945d1d69d0..375c7cf450 100644 --- a/networks/CNO_He_burn/CNO_He_burn.py +++ b/networks/CNO_He_burn/CNO_He_burn.py @@ -3,7 +3,7 @@ import pynucastro as pyna from pynucastro.networks import AmrexAstroCxxNetwork -DO_DERIVED_RATES = False +DO_DERIVED_RATES = True def get_library(): diff --git a/networks/CNO_He_burn/actual_network.H b/networks/CNO_He_burn/actual_network.H index a4c922e623..7ef4070e9f 100644 --- a/networks/CNO_He_burn/actual_network.H +++ b/networks/CNO_He_burn/actual_network.H @@ -30,100 +30,100 @@ namespace network return 0.0_rt; } else if constexpr (spec == He4) { - return 28.29566_rt; + return 28.295662457999697_rt; } else if constexpr (spec == C12) { - return 92.16172800000001_rt; + return 92.16173498399803_rt; } else if constexpr (spec == C13) { - return 97.108037_rt; + return 97.10804378399916_rt; } else if constexpr (spec == N13) { - return 94.105219_rt; + return 94.10522604799917_rt; } else if constexpr (spec == N14) { - return 104.65859599999999_rt; + return 104.65860734799753_rt; } else if constexpr (spec == N15) { - return 115.4919_rt; + return 115.49190414799887_rt; } else if constexpr (spec == O14) { - return 98.731892_rt; + return 98.73189611199996_rt; } else if constexpr (spec == O15) { - return 111.95538_rt; + return 111.95539521199862_rt; } else if constexpr (spec == O16) { - return 127.619296_rt; + return 127.6193154119992_rt; } else if constexpr (spec == O17) { - return 131.76237600000002_rt; + return 131.76239561199873_rt; } else if constexpr (spec == O18) { - return 139.807746_rt; + return 139.8077658120019_rt; } else if constexpr (spec == F17) { - return 128.21957600000002_rt; + return 128.21958437599824_rt; } else if constexpr (spec == F18) { - return 137.369484_rt; + return 137.36950247599816_rt; } else if constexpr (spec == F19) { - return 147.801342_rt; + return 147.80136567599766_rt; } else if constexpr (spec == Ne18) { - return 132.142626_rt; + return 132.14265544000227_rt; } else if constexpr (spec == Ne19) { - return 143.779517_rt; + return 143.7795235400008_rt; } else if constexpr (spec == Ne20) { - return 160.6448_rt; + return 160.64482384000075_rt; } else if constexpr (spec == Ne21) { - return 167.405973_rt; + return 167.40598973999658_rt; } else if constexpr (spec == Na22) { - return 174.144674_rt; + return 174.14457080400098_rt; } else if constexpr (spec == Na23) { - return 186.56433900000002_rt; + return 186.56435240400242_rt; } else if constexpr (spec == Mg22) { - return 168.58074200000001_rt; + return 168.58082376800303_rt; } else if constexpr (spec == Mg24) { - return 198.25701600000002_rt; + return 198.2570479679962_rt; } else if constexpr (spec == Al27) { - return 224.951931_rt; + return 224.95193723199915_rt; } else if constexpr (spec == Si28) { - return 236.536832_rt; + return 236.53684539599638_rt; } else if constexpr (spec == P31) { - return 262.91617699999995_rt; + return 262.9161999600037_rt; } else if constexpr (spec == S32) { - return 271.78012800000005_rt; + return 271.78016372399725_rt; } else if constexpr (spec == Ar36) { - return 306.716724_rt; + return 306.7167469519991_rt; } else if constexpr (spec == Ca40) { - return 342.05212000000006_rt; + return 342.05218528000114_rt; } else if constexpr (spec == Ti44) { - return 375.47488000000004_rt; + return 375.47496160800074_rt; } else if constexpr (spec == Cr48) { - return 411.46891200000005_rt; + return 411.4679399359957_rt; } else if constexpr (spec == Fe52) { - return 447.697848_rt; + return 447.6996182639923_rt; } else if constexpr (spec == Ni56) { - return 483.995624_rt; + return 483.9956965919919_rt; } @@ -189,148 +189,148 @@ namespace Rates k_Ne18_to_F18_weak_wc12 = 6, k_Ne19_to_F19_weak_wc12 = 7, k_Mg22_to_Na22_weak_wc12 = 8, - k_N13_to_p_C12 = 9, - k_N14_to_p_C13 = 10, - k_O14_to_p_N13 = 11, - k_O15_to_p_N14 = 12, - k_O16_to_p_N15 = 13, - k_O16_to_He4_C12 = 14, - k_F17_to_p_O16 = 15, - k_F18_to_p_O17 = 16, - k_F18_to_He4_N14 = 17, - k_F19_to_p_O18 = 18, - k_F19_to_He4_N15 = 19, - k_Ne18_to_p_F17 = 20, - k_Ne18_to_He4_O14 = 21, - k_Ne19_to_p_F18 = 22, - k_Ne19_to_He4_O15 = 23, - k_Ne20_to_p_F19 = 24, - k_Ne20_to_He4_O16 = 25, - k_Ne21_to_He4_O17 = 26, - k_Na22_to_p_Ne21 = 27, - k_Na22_to_He4_F18 = 28, - k_Na23_to_He4_F19 = 29, - k_Mg22_to_He4_Ne18 = 30, - k_Mg24_to_p_Na23 = 31, - k_Mg24_to_He4_Ne20 = 32, - k_Si28_to_p_Al27 = 33, - k_Si28_to_He4_Mg24 = 34, - k_S32_to_p_P31 = 35, - k_S32_to_He4_Si28 = 36, - k_C12_to_He4_He4_He4 = 37, - k_p_C12_to_N13 = 38, - k_He4_C12_to_O16 = 39, - k_p_C13_to_N14 = 40, - k_p_N13_to_O14 = 41, - k_p_N14_to_O15 = 42, - k_He4_N14_to_F18 = 43, - k_p_N15_to_O16 = 44, - k_He4_N15_to_F19 = 45, - k_He4_O14_to_Ne18 = 46, - k_He4_O15_to_Ne19 = 47, - k_p_O16_to_F17 = 48, - k_He4_O16_to_Ne20 = 49, - k_p_O17_to_F18 = 50, - k_He4_O17_to_Ne21 = 51, - k_p_O18_to_F19 = 52, - k_p_F17_to_Ne18 = 53, - k_p_F18_to_Ne19 = 54, - k_He4_F18_to_Na22 = 55, - k_p_F19_to_Ne20 = 56, - k_He4_F19_to_Na23 = 57, - k_He4_Ne18_to_Mg22 = 58, - k_He4_Ne20_to_Mg24 = 59, - k_p_Ne21_to_Na22 = 60, - k_p_Na23_to_Mg24 = 61, - k_He4_Mg24_to_Si28 = 62, - k_p_Al27_to_Si28 = 63, - k_He4_Si28_to_S32 = 64, - k_p_P31_to_S32 = 65, - k_He4_C12_to_p_N15 = 66, - k_C12_C12_to_p_Na23 = 67, - k_C12_C12_to_He4_Ne20 = 68, - k_He4_N13_to_p_O16 = 69, - k_He4_N14_to_p_O17 = 70, - k_p_N15_to_He4_C12 = 71, - k_He4_N15_to_p_O18 = 72, - k_He4_O14_to_p_F17 = 73, - k_He4_O15_to_p_F18 = 74, - k_p_O16_to_He4_N13 = 75, - k_He4_O16_to_p_F19 = 76, - k_C12_O16_to_p_Al27 = 77, - k_C12_O16_to_He4_Mg24 = 78, - k_O16_O16_to_p_P31 = 79, - k_O16_O16_to_He4_Si28 = 80, - k_p_O17_to_He4_N14 = 81, - k_p_O18_to_He4_N15 = 82, - k_p_F17_to_He4_O14 = 83, - k_He4_F17_to_p_Ne20 = 84, - k_p_F18_to_He4_O15 = 85, - k_He4_F18_to_p_Ne21 = 86, - k_p_F19_to_He4_O16 = 87, - k_He4_Ne19_to_p_Na22 = 88, - k_p_Ne20_to_He4_F17 = 89, - k_He4_Ne20_to_p_Na23 = 90, - k_p_Ne21_to_He4_F18 = 91, - k_p_Na22_to_He4_Ne19 = 92, - k_p_Na23_to_He4_Ne20 = 93, - k_He4_Mg24_to_p_Al27 = 94, - k_p_Al27_to_He4_Mg24 = 95, - k_He4_Si28_to_p_P31 = 96, - k_p_P31_to_He4_Si28 = 97, - k_He4_He4_He4_to_C12 = 98, - k_C12_C12_to_Mg24_modified = 99, - k_O16_O16_to_S32_modified = 100, - k_C12_O16_to_Si28_modified = 101, - k_He4_S32_to_Ar36_removed = 102, - k_He4_S32_to_p_Cl35_removed = 103, - k_p_Cl35_to_Ar36_removed = 104, - k_Ar36_to_He4_S32_removed = 105, - k_Ar36_to_p_Cl35_removed = 106, - k_p_Cl35_to_He4_S32_removed = 107, - k_He4_Ar36_to_Ca40_removed = 108, - k_He4_Ar36_to_p_K39_removed = 109, - k_p_K39_to_Ca40_removed = 110, - k_Ca40_to_He4_Ar36_removed = 111, - k_Ca40_to_p_K39_removed = 112, - k_p_K39_to_He4_Ar36_removed = 113, - k_He4_Ca40_to_Ti44_removed = 114, - k_He4_Ca40_to_p_Sc43_removed = 115, - k_p_Sc43_to_Ti44_removed = 116, - k_Ti44_to_He4_Ca40_removed = 117, - k_Ti44_to_p_Sc43_removed = 118, - k_p_Sc43_to_He4_Ca40_removed = 119, - k_He4_Ti44_to_Cr48_removed = 120, - k_He4_Ti44_to_p_V47_removed = 121, - k_p_V47_to_Cr48_removed = 122, - k_Cr48_to_He4_Ti44_removed = 123, - k_Cr48_to_p_V47_removed = 124, - k_p_V47_to_He4_Ti44_removed = 125, - k_He4_Cr48_to_Fe52_removed = 126, - k_He4_Cr48_to_p_Mn51_removed = 127, - k_p_Mn51_to_Fe52_removed = 128, - k_Fe52_to_He4_Cr48_removed = 129, - k_Fe52_to_p_Mn51_removed = 130, - k_p_Mn51_to_He4_Cr48_removed = 131, - k_He4_Fe52_to_Ni56_removed = 132, - k_He4_Fe52_to_p_Co55_removed = 133, - k_p_Co55_to_Ni56_removed = 134, - k_Ni56_to_He4_Fe52_removed = 135, - k_Ni56_to_p_Co55_removed = 136, - k_p_Co55_to_He4_Fe52_removed = 137, - k_S32_He4_to_Ar36_approx = 138, - k_Ar36_to_S32_He4_approx = 139, - k_Ar36_He4_to_Ca40_approx = 140, - k_Ca40_to_Ar36_He4_approx = 141, - k_Ca40_He4_to_Ti44_approx = 142, - k_Ti44_to_Ca40_He4_approx = 143, - k_Ti44_He4_to_Cr48_approx = 144, - k_Cr48_to_Ti44_He4_approx = 145, - k_Cr48_He4_to_Fe52_approx = 146, - k_Fe52_to_Cr48_He4_approx = 147, - k_Fe52_He4_to_Ni56_approx = 148, - k_Ni56_to_Fe52_He4_approx = 149, - NumRates = k_Ni56_to_Fe52_He4_approx + k_p_C12_to_N13 = 9, + k_He4_C12_to_O16 = 10, + k_p_C13_to_N14 = 11, + k_p_N13_to_O14 = 12, + k_p_N14_to_O15 = 13, + k_He4_N14_to_F18 = 14, + k_p_N15_to_O16 = 15, + k_He4_N15_to_F19 = 16, + k_He4_O14_to_Ne18 = 17, + k_He4_O15_to_Ne19 = 18, + k_p_O16_to_F17 = 19, + k_He4_O16_to_Ne20 = 20, + k_p_O17_to_F18 = 21, + k_He4_O17_to_Ne21 = 22, + k_p_O18_to_F19 = 23, + k_p_F17_to_Ne18 = 24, + k_p_F18_to_Ne19 = 25, + k_He4_F18_to_Na22 = 26, + k_p_F19_to_Ne20 = 27, + k_He4_F19_to_Na23 = 28, + k_He4_Ne18_to_Mg22 = 29, + k_He4_Ne20_to_Mg24 = 30, + k_p_Ne21_to_Na22 = 31, + k_p_Na23_to_Mg24 = 32, + k_He4_Mg24_to_Si28 = 33, + k_p_Al27_to_Si28 = 34, + k_He4_Si28_to_S32 = 35, + k_p_P31_to_S32 = 36, + k_C12_C12_to_p_Na23 = 37, + k_C12_C12_to_He4_Ne20 = 38, + k_He4_N13_to_p_O16 = 39, + k_p_N15_to_He4_C12 = 40, + k_He4_O14_to_p_F17 = 41, + k_C12_O16_to_p_Al27 = 42, + k_C12_O16_to_He4_Mg24 = 43, + k_O16_O16_to_p_P31 = 44, + k_O16_O16_to_He4_Si28 = 45, + k_p_O17_to_He4_N14 = 46, + k_p_O18_to_He4_N15 = 47, + k_p_F18_to_He4_O15 = 48, + k_He4_F18_to_p_Ne21 = 49, + k_p_F19_to_He4_O16 = 50, + k_He4_Ne19_to_p_Na22 = 51, + k_p_Ne20_to_He4_F17 = 52, + k_p_Na23_to_He4_Ne20 = 53, + k_p_Al27_to_He4_Mg24 = 54, + k_p_P31_to_He4_Si28 = 55, + k_He4_He4_He4_to_C12 = 56, + k_C12_C12_to_Mg24_modified = 57, + k_O16_O16_to_S32_modified = 58, + k_C12_O16_to_Si28_modified = 59, + k_He4_S32_to_Ar36_removed = 60, + k_p_Cl35_to_Ar36_removed = 61, + k_p_Cl35_to_He4_S32_removed = 62, + k_He4_Ar36_to_Ca40_removed = 63, + k_p_K39_to_Ca40_removed = 64, + k_p_K39_to_He4_Ar36_removed = 65, + k_He4_Ca40_to_Ti44_removed = 66, + k_p_Sc43_to_Ti44_removed = 67, + k_p_Sc43_to_He4_Ca40_removed = 68, + k_He4_Ti44_to_Cr48_removed = 69, + k_He4_Ti44_to_p_V47_removed = 70, + k_p_V47_to_Cr48_removed = 71, + k_He4_Cr48_to_Fe52_removed = 72, + k_He4_Cr48_to_p_Mn51_removed = 73, + k_p_Mn51_to_Fe52_removed = 74, + k_He4_Fe52_to_Ni56_removed = 75, + k_He4_Fe52_to_p_Co55_removed = 76, + k_p_Co55_to_Ni56_removed = 77, + k_S32_He4_to_Ar36_approx = 78, + k_Ar36_to_S32_He4_approx = 79, + k_Ar36_He4_to_Ca40_approx = 80, + k_Ca40_to_Ar36_He4_approx = 81, + k_Ca40_He4_to_Ti44_approx = 82, + k_Ti44_to_Ca40_He4_approx = 83, + k_Ti44_He4_to_Cr48_approx = 84, + k_Cr48_to_Ti44_He4_approx = 85, + k_Cr48_He4_to_Fe52_approx = 86, + k_Fe52_to_Cr48_He4_approx = 87, + k_Fe52_He4_to_Ni56_approx = 88, + k_Ni56_to_Fe52_He4_approx = 89, + k_N13_to_p_C12_derived = 90, + k_N14_to_p_C13_derived = 91, + k_O14_to_p_N13_derived = 92, + k_O15_to_p_N14_derived = 93, + k_O16_to_p_N15_derived = 94, + k_O16_to_He4_C12_derived = 95, + k_F17_to_p_O16_derived = 96, + k_F18_to_p_O17_derived = 97, + k_F18_to_He4_N14_derived = 98, + k_F19_to_p_O18_derived = 99, + k_F19_to_He4_N15_derived = 100, + k_Ne18_to_p_F17_derived = 101, + k_Ne18_to_He4_O14_derived = 102, + k_Ne19_to_p_F18_derived = 103, + k_Ne19_to_He4_O15_derived = 104, + k_Ne20_to_p_F19_derived = 105, + k_Ne20_to_He4_O16_derived = 106, + k_Ne21_to_He4_O17_derived = 107, + k_Na22_to_p_Ne21_derived = 108, + k_Na22_to_He4_F18_derived = 109, + k_Na23_to_He4_F19_derived = 110, + k_Mg22_to_He4_Ne18_derived = 111, + k_Mg24_to_p_Na23_derived = 112, + k_Mg24_to_He4_Ne20_derived = 113, + k_Si28_to_p_Al27_derived = 114, + k_Si28_to_He4_Mg24_derived = 115, + k_S32_to_p_P31_derived = 116, + k_S32_to_He4_Si28_derived = 117, + k_C12_to_He4_He4_He4_derived = 118, + k_He4_C12_to_p_N15_derived = 119, + k_He4_N14_to_p_O17_derived = 120, + k_He4_N15_to_p_O18_derived = 121, + k_He4_O15_to_p_F18_derived = 122, + k_p_O16_to_He4_N13_derived = 123, + k_He4_O16_to_p_F19_derived = 124, + k_p_F17_to_He4_O14_derived = 125, + k_He4_F17_to_p_Ne20_derived = 126, + k_He4_Ne20_to_p_Na23_derived = 127, + k_p_Ne21_to_He4_F18_derived = 128, + k_p_Na22_to_He4_Ne19_derived = 129, + k_He4_Mg24_to_p_Al27_derived = 130, + k_He4_Si28_to_p_P31_derived = 131, + k_He4_S32_to_p_Cl35_derived_removed = 132, + k_Ar36_to_He4_S32_derived_removed = 133, + k_Ar36_to_p_Cl35_derived_removed = 134, + k_He4_Ar36_to_p_K39_derived_removed = 135, + k_Ca40_to_He4_Ar36_derived_removed = 136, + k_Ca40_to_p_K39_derived_removed = 137, + k_He4_Ca40_to_p_Sc43_derived_removed = 138, + k_Ti44_to_He4_Ca40_derived_removed = 139, + k_Ti44_to_p_Sc43_derived_removed = 140, + k_Cr48_to_He4_Ti44_derived_removed = 141, + k_Cr48_to_p_V47_derived_removed = 142, + k_p_V47_to_He4_Ti44_derived_removed = 143, + k_Fe52_to_He4_Cr48_derived_removed = 144, + k_Fe52_to_p_Mn51_derived_removed = 145, + k_p_Mn51_to_He4_Cr48_derived_removed = 146, + k_Ni56_to_He4_Fe52_derived_removed = 147, + k_Ni56_to_p_Co55_derived_removed = 148, + k_p_Co55_to_He4_Fe52_derived_removed = 149, + NumRates = k_p_Co55_to_He4_Fe52_derived_removed }; // number of reaclib rates @@ -355,147 +355,147 @@ namespace Rates "Ne18_to_F18_weak_wc12", // 6, "Ne19_to_F19_weak_wc12", // 7, "Mg22_to_Na22_weak_wc12", // 8, - "N13_to_p_C12", // 9, - "N14_to_p_C13", // 10, - "O14_to_p_N13", // 11, - "O15_to_p_N14", // 12, - "O16_to_p_N15", // 13, - "O16_to_He4_C12", // 14, - "F17_to_p_O16", // 15, - "F18_to_p_O17", // 16, - "F18_to_He4_N14", // 17, - "F19_to_p_O18", // 18, - "F19_to_He4_N15", // 19, - "Ne18_to_p_F17", // 20, - "Ne18_to_He4_O14", // 21, - "Ne19_to_p_F18", // 22, - "Ne19_to_He4_O15", // 23, - "Ne20_to_p_F19", // 24, - "Ne20_to_He4_O16", // 25, - "Ne21_to_He4_O17", // 26, - "Na22_to_p_Ne21", // 27, - "Na22_to_He4_F18", // 28, - "Na23_to_He4_F19", // 29, - "Mg22_to_He4_Ne18", // 30, - "Mg24_to_p_Na23", // 31, - "Mg24_to_He4_Ne20", // 32, - "Si28_to_p_Al27", // 33, - "Si28_to_He4_Mg24", // 34, - "S32_to_p_P31", // 35, - "S32_to_He4_Si28", // 36, - "C12_to_He4_He4_He4", // 37, - "p_C12_to_N13", // 38, - "He4_C12_to_O16", // 39, - "p_C13_to_N14", // 40, - "p_N13_to_O14", // 41, - "p_N14_to_O15", // 42, - "He4_N14_to_F18", // 43, - "p_N15_to_O16", // 44, - "He4_N15_to_F19", // 45, - "He4_O14_to_Ne18", // 46, - "He4_O15_to_Ne19", // 47, - "p_O16_to_F17", // 48, - "He4_O16_to_Ne20", // 49, - "p_O17_to_F18", // 50, - "He4_O17_to_Ne21", // 51, - "p_O18_to_F19", // 52, - "p_F17_to_Ne18", // 53, - "p_F18_to_Ne19", // 54, - "He4_F18_to_Na22", // 55, - "p_F19_to_Ne20", // 56, - "He4_F19_to_Na23", // 57, - "He4_Ne18_to_Mg22", // 58, - "He4_Ne20_to_Mg24", // 59, - "p_Ne21_to_Na22", // 60, - "p_Na23_to_Mg24", // 61, - "He4_Mg24_to_Si28", // 62, - "p_Al27_to_Si28", // 63, - "He4_Si28_to_S32", // 64, - "p_P31_to_S32", // 65, - "He4_C12_to_p_N15", // 66, - "C12_C12_to_p_Na23", // 67, - "C12_C12_to_He4_Ne20", // 68, - "He4_N13_to_p_O16", // 69, - "He4_N14_to_p_O17", // 70, - "p_N15_to_He4_C12", // 71, - "He4_N15_to_p_O18", // 72, - "He4_O14_to_p_F17", // 73, - "He4_O15_to_p_F18", // 74, - "p_O16_to_He4_N13", // 75, - "He4_O16_to_p_F19", // 76, - "C12_O16_to_p_Al27", // 77, - "C12_O16_to_He4_Mg24", // 78, - "O16_O16_to_p_P31", // 79, - "O16_O16_to_He4_Si28", // 80, - "p_O17_to_He4_N14", // 81, - "p_O18_to_He4_N15", // 82, - "p_F17_to_He4_O14", // 83, - "He4_F17_to_p_Ne20", // 84, - "p_F18_to_He4_O15", // 85, - "He4_F18_to_p_Ne21", // 86, - "p_F19_to_He4_O16", // 87, - "He4_Ne19_to_p_Na22", // 88, - "p_Ne20_to_He4_F17", // 89, - "He4_Ne20_to_p_Na23", // 90, - "p_Ne21_to_He4_F18", // 91, - "p_Na22_to_He4_Ne19", // 92, - "p_Na23_to_He4_Ne20", // 93, - "He4_Mg24_to_p_Al27", // 94, - "p_Al27_to_He4_Mg24", // 95, - "He4_Si28_to_p_P31", // 96, - "p_P31_to_He4_Si28", // 97, - "He4_He4_He4_to_C12", // 98, - "C12_C12_to_Mg24_modified", // 99, - "O16_O16_to_S32_modified", // 100, - "C12_O16_to_Si28_modified", // 101, - "He4_S32_to_Ar36_removed", // 102, - "He4_S32_to_p_Cl35_removed", // 103, - "p_Cl35_to_Ar36_removed", // 104, - "Ar36_to_He4_S32_removed", // 105, - "Ar36_to_p_Cl35_removed", // 106, - "p_Cl35_to_He4_S32_removed", // 107, - "He4_Ar36_to_Ca40_removed", // 108, - "He4_Ar36_to_p_K39_removed", // 109, - "p_K39_to_Ca40_removed", // 110, - "Ca40_to_He4_Ar36_removed", // 111, - "Ca40_to_p_K39_removed", // 112, - "p_K39_to_He4_Ar36_removed", // 113, - "He4_Ca40_to_Ti44_removed", // 114, - "He4_Ca40_to_p_Sc43_removed", // 115, - "p_Sc43_to_Ti44_removed", // 116, - "Ti44_to_He4_Ca40_removed", // 117, - "Ti44_to_p_Sc43_removed", // 118, - "p_Sc43_to_He4_Ca40_removed", // 119, - "He4_Ti44_to_Cr48_removed", // 120, - "He4_Ti44_to_p_V47_removed", // 121, - "p_V47_to_Cr48_removed", // 122, - "Cr48_to_He4_Ti44_removed", // 123, - "Cr48_to_p_V47_removed", // 124, - "p_V47_to_He4_Ti44_removed", // 125, - "He4_Cr48_to_Fe52_removed", // 126, - "He4_Cr48_to_p_Mn51_removed", // 127, - "p_Mn51_to_Fe52_removed", // 128, - "Fe52_to_He4_Cr48_removed", // 129, - "Fe52_to_p_Mn51_removed", // 130, - "p_Mn51_to_He4_Cr48_removed", // 131, - "He4_Fe52_to_Ni56_removed", // 132, - "He4_Fe52_to_p_Co55_removed", // 133, - "p_Co55_to_Ni56_removed", // 134, - "Ni56_to_He4_Fe52_removed", // 135, - "Ni56_to_p_Co55_removed", // 136, - "p_Co55_to_He4_Fe52_removed", // 137, - "S32_He4_to_Ar36_approx", // 138, - "Ar36_to_S32_He4_approx", // 139, - "Ar36_He4_to_Ca40_approx", // 140, - "Ca40_to_Ar36_He4_approx", // 141, - "Ca40_He4_to_Ti44_approx", // 142, - "Ti44_to_Ca40_He4_approx", // 143, - "Ti44_He4_to_Cr48_approx", // 144, - "Cr48_to_Ti44_He4_approx", // 145, - "Cr48_He4_to_Fe52_approx", // 146, - "Fe52_to_Cr48_He4_approx", // 147, - "Fe52_He4_to_Ni56_approx", // 148, - "Ni56_to_Fe52_He4_approx" // 149, + "p_C12_to_N13", // 9, + "He4_C12_to_O16", // 10, + "p_C13_to_N14", // 11, + "p_N13_to_O14", // 12, + "p_N14_to_O15", // 13, + "He4_N14_to_F18", // 14, + "p_N15_to_O16", // 15, + "He4_N15_to_F19", // 16, + "He4_O14_to_Ne18", // 17, + "He4_O15_to_Ne19", // 18, + "p_O16_to_F17", // 19, + "He4_O16_to_Ne20", // 20, + "p_O17_to_F18", // 21, + "He4_O17_to_Ne21", // 22, + "p_O18_to_F19", // 23, + "p_F17_to_Ne18", // 24, + "p_F18_to_Ne19", // 25, + "He4_F18_to_Na22", // 26, + "p_F19_to_Ne20", // 27, + "He4_F19_to_Na23", // 28, + "He4_Ne18_to_Mg22", // 29, + "He4_Ne20_to_Mg24", // 30, + "p_Ne21_to_Na22", // 31, + "p_Na23_to_Mg24", // 32, + "He4_Mg24_to_Si28", // 33, + "p_Al27_to_Si28", // 34, + "He4_Si28_to_S32", // 35, + "p_P31_to_S32", // 36, + "C12_C12_to_p_Na23", // 37, + "C12_C12_to_He4_Ne20", // 38, + "He4_N13_to_p_O16", // 39, + "p_N15_to_He4_C12", // 40, + "He4_O14_to_p_F17", // 41, + "C12_O16_to_p_Al27", // 42, + "C12_O16_to_He4_Mg24", // 43, + "O16_O16_to_p_P31", // 44, + "O16_O16_to_He4_Si28", // 45, + "p_O17_to_He4_N14", // 46, + "p_O18_to_He4_N15", // 47, + "p_F18_to_He4_O15", // 48, + "He4_F18_to_p_Ne21", // 49, + "p_F19_to_He4_O16", // 50, + "He4_Ne19_to_p_Na22", // 51, + "p_Ne20_to_He4_F17", // 52, + "p_Na23_to_He4_Ne20", // 53, + "p_Al27_to_He4_Mg24", // 54, + "p_P31_to_He4_Si28", // 55, + "He4_He4_He4_to_C12", // 56, + "C12_C12_to_Mg24_modified", // 57, + "O16_O16_to_S32_modified", // 58, + "C12_O16_to_Si28_modified", // 59, + "He4_S32_to_Ar36_removed", // 60, + "p_Cl35_to_Ar36_removed", // 61, + "p_Cl35_to_He4_S32_removed", // 62, + "He4_Ar36_to_Ca40_removed", // 63, + "p_K39_to_Ca40_removed", // 64, + "p_K39_to_He4_Ar36_removed", // 65, + "He4_Ca40_to_Ti44_removed", // 66, + "p_Sc43_to_Ti44_removed", // 67, + "p_Sc43_to_He4_Ca40_removed", // 68, + "He4_Ti44_to_Cr48_removed", // 69, + "He4_Ti44_to_p_V47_removed", // 70, + "p_V47_to_Cr48_removed", // 71, + "He4_Cr48_to_Fe52_removed", // 72, + "He4_Cr48_to_p_Mn51_removed", // 73, + "p_Mn51_to_Fe52_removed", // 74, + "He4_Fe52_to_Ni56_removed", // 75, + "He4_Fe52_to_p_Co55_removed", // 76, + "p_Co55_to_Ni56_removed", // 77, + "S32_He4_to_Ar36_approx", // 78, + "Ar36_to_S32_He4_approx", // 79, + "Ar36_He4_to_Ca40_approx", // 80, + "Ca40_to_Ar36_He4_approx", // 81, + "Ca40_He4_to_Ti44_approx", // 82, + "Ti44_to_Ca40_He4_approx", // 83, + "Ti44_He4_to_Cr48_approx", // 84, + "Cr48_to_Ti44_He4_approx", // 85, + "Cr48_He4_to_Fe52_approx", // 86, + "Fe52_to_Cr48_He4_approx", // 87, + "Fe52_He4_to_Ni56_approx", // 88, + "Ni56_to_Fe52_He4_approx", // 89, + "N13_to_p_C12_derived", // 90, + "N14_to_p_C13_derived", // 91, + "O14_to_p_N13_derived", // 92, + "O15_to_p_N14_derived", // 93, + "O16_to_p_N15_derived", // 94, + "O16_to_He4_C12_derived", // 95, + "F17_to_p_O16_derived", // 96, + "F18_to_p_O17_derived", // 97, + "F18_to_He4_N14_derived", // 98, + "F19_to_p_O18_derived", // 99, + "F19_to_He4_N15_derived", // 100, + "Ne18_to_p_F17_derived", // 101, + "Ne18_to_He4_O14_derived", // 102, + "Ne19_to_p_F18_derived", // 103, + "Ne19_to_He4_O15_derived", // 104, + "Ne20_to_p_F19_derived", // 105, + "Ne20_to_He4_O16_derived", // 106, + "Ne21_to_He4_O17_derived", // 107, + "Na22_to_p_Ne21_derived", // 108, + "Na22_to_He4_F18_derived", // 109, + "Na23_to_He4_F19_derived", // 110, + "Mg22_to_He4_Ne18_derived", // 111, + "Mg24_to_p_Na23_derived", // 112, + "Mg24_to_He4_Ne20_derived", // 113, + "Si28_to_p_Al27_derived", // 114, + "Si28_to_He4_Mg24_derived", // 115, + "S32_to_p_P31_derived", // 116, + "S32_to_He4_Si28_derived", // 117, + "C12_to_He4_He4_He4_derived", // 118, + "He4_C12_to_p_N15_derived", // 119, + "He4_N14_to_p_O17_derived", // 120, + "He4_N15_to_p_O18_derived", // 121, + "He4_O15_to_p_F18_derived", // 122, + "p_O16_to_He4_N13_derived", // 123, + "He4_O16_to_p_F19_derived", // 124, + "p_F17_to_He4_O14_derived", // 125, + "He4_F17_to_p_Ne20_derived", // 126, + "He4_Ne20_to_p_Na23_derived", // 127, + "p_Ne21_to_He4_F18_derived", // 128, + "p_Na22_to_He4_Ne19_derived", // 129, + "He4_Mg24_to_p_Al27_derived", // 130, + "He4_Si28_to_p_P31_derived", // 131, + "He4_S32_to_p_Cl35_derived_removed", // 132, + "Ar36_to_He4_S32_derived_removed", // 133, + "Ar36_to_p_Cl35_derived_removed", // 134, + "He4_Ar36_to_p_K39_derived_removed", // 135, + "Ca40_to_He4_Ar36_derived_removed", // 136, + "Ca40_to_p_K39_derived_removed", // 137, + "He4_Ca40_to_p_Sc43_derived_removed", // 138, + "Ti44_to_He4_Ca40_derived_removed", // 139, + "Ti44_to_p_Sc43_derived_removed", // 140, + "Cr48_to_He4_Ti44_derived_removed", // 141, + "Cr48_to_p_V47_derived_removed", // 142, + "p_V47_to_He4_Ti44_derived_removed", // 143, + "Fe52_to_He4_Cr48_derived_removed", // 144, + "Fe52_to_p_Mn51_derived_removed", // 145, + "p_Mn51_to_He4_Cr48_derived_removed", // 146, + "Ni56_to_He4_Fe52_derived_removed", // 147, + "Ni56_to_p_Co55_derived_removed", // 148, + "p_Co55_to_He4_Fe52_derived_removed" // 149, }; } diff --git a/networks/CNO_He_burn/actual_network_data.cpp b/networks/CNO_He_burn/actual_network_data.cpp index 7d0e4cf495..e7574c41ae 100644 --- a/networks/CNO_He_burn/actual_network_data.cpp +++ b/networks/CNO_He_burn/actual_network_data.cpp @@ -13,6 +13,87 @@ namespace NSE_INDEX -1, -1, 15, -1, -1, 13, -1, -1, -1, 16, -1, -1, 14, -1, -1, -1, 21, -1, -1, 19, -1, + -1, 0, 2, -1, -1, 4, 90, + -1, 1, 2, -1, -1, 9, 95, + -1, 0, 3, -1, -1, 5, 91, + -1, 0, 4, -1, -1, 7, 92, + -1, 0, 5, -1, -1, 8, 93, + -1, 1, 5, -1, -1, 13, 98, + -1, 0, 6, -1, -1, 9, 94, + -1, 1, 6, -1, -1, 14, 100, + -1, 1, 7, -1, -1, 15, 102, + -1, 1, 8, -1, -1, 16, 104, + -1, 0, 9, -1, -1, 12, 96, + -1, 1, 9, -1, -1, 17, 106, + -1, 0, 10, -1, -1, 13, 97, + -1, 1, 10, -1, -1, 18, 107, + -1, 0, 11, -1, -1, 14, 99, + -1, 0, 12, -1, -1, 15, 101, + -1, 0, 13, -1, -1, 16, 103, + -1, 1, 13, -1, -1, 19, 109, + -1, 0, 14, -1, -1, 17, 105, + -1, 1, 14, -1, -1, 20, 110, + -1, 1, 15, -1, -1, 21, 111, + -1, 1, 17, -1, -1, 22, 113, + -1, 0, 18, -1, -1, 19, 108, + -1, 0, 20, -1, -1, 22, 112, + -1, 1, 22, -1, -1, 24, 115, + -1, 0, 23, -1, -1, 24, 114, + -1, 1, 24, -1, -1, 26, 117, + -1, 0, 25, -1, -1, 26, 116, + -1, 2, 2, -1, 0, 20, -1, + -1, 2, 2, -1, 1, 17, -1, + -1, 1, 4, -1, 0, 9, 123, + -1, 0, 6, -1, 1, 2, 119, + -1, 1, 7, -1, 0, 12, 125, + -1, 2, 9, -1, 0, 23, -1, + -1, 2, 9, -1, 1, 22, -1, + -1, 9, 9, -1, 0, 25, -1, + -1, 9, 9, -1, 1, 24, -1, + -1, 0, 10, -1, 1, 5, 120, + -1, 0, 11, -1, 1, 6, 121, + -1, 0, 13, -1, 1, 8, 122, + -1, 1, 13, -1, 0, 18, 128, + -1, 0, 14, -1, 1, 9, 124, + -1, 1, 16, -1, 0, 19, 129, + -1, 0, 17, -1, 1, 12, -1, + -1, 0, 20, -1, 1, 17, 127, + -1, 0, 23, -1, 1, 22, 130, + -1, 0, 25, -1, 1, 24, 131, + 1, 1, 1, -1, -1, 2, 118, + -1, 2, 2, -1, -1, 22, -1, + -1, 9, 9, -1, -1, 26, -1, + -1, 2, 9, -1, -1, 24, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, + -1, 1, 26, -1, -1, 27, 79, + -1, -1, 27, -1, 1, 26, -1, + -1, 1, 27, -1, -1, 28, 81, + -1, -1, 28, -1, 1, 27, -1, + -1, 1, 28, -1, -1, 29, 83, + -1, -1, 29, -1, 1, 28, -1, + -1, 1, 29, -1, -1, 30, 85, + -1, -1, 30, -1, 1, 29, -1, + -1, 1, 30, -1, -1, 31, 87, + -1, -1, 31, -1, 1, 30, -1, + -1, 1, 31, -1, -1, 32, 89, + -1, -1, 32, -1, 1, 31, -1, -1, -1, 4, -1, 0, 2, -1, -1, -1, 5, -1, 0, 3, -1, -1, -1, 7, -1, 0, 4, -1, @@ -42,78 +123,19 @@ namespace NSE_INDEX -1, -1, 26, -1, 0, 25, -1, -1, -1, 26, -1, 1, 24, -1, -1, -1, 2, 1, 1, 1, -1, - -1, 0, 2, -1, -1, 4, 9, - -1, 1, 2, -1, -1, 9, 14, - -1, 0, 3, -1, -1, 5, 10, - -1, 0, 4, -1, -1, 7, 11, - -1, 0, 5, -1, -1, 8, 12, - -1, 1, 5, -1, -1, 13, 17, - -1, 0, 6, -1, -1, 9, 13, - -1, 1, 6, -1, -1, 14, 19, - -1, 1, 7, -1, -1, 15, 21, - -1, 1, 8, -1, -1, 16, 23, - -1, 0, 9, -1, -1, 12, 15, - -1, 1, 9, -1, -1, 17, 25, - -1, 0, 10, -1, -1, 13, 16, - -1, 1, 10, -1, -1, 18, 26, - -1, 0, 11, -1, -1, 14, 18, - -1, 0, 12, -1, -1, 15, 20, - -1, 0, 13, -1, -1, 16, 22, - -1, 1, 13, -1, -1, 19, 28, - -1, 0, 14, -1, -1, 17, 24, - -1, 1, 14, -1, -1, 20, 29, - -1, 1, 15, -1, -1, 21, 30, - -1, 1, 17, -1, -1, 22, 32, - -1, 0, 18, -1, -1, 19, 27, - -1, 0, 20, -1, -1, 22, 31, - -1, 1, 22, -1, -1, 24, 34, - -1, 0, 23, -1, -1, 24, 33, - -1, 1, 24, -1, -1, 26, 36, - -1, 0, 25, -1, -1, 26, 35, -1, 1, 2, -1, 0, 6, -1, - -1, 2, 2, -1, 0, 20, -1, - -1, 2, 2, -1, 1, 17, -1, - -1, 1, 4, -1, 0, 9, 75, -1, 1, 5, -1, 0, 10, -1, - -1, 0, 6, -1, 1, 2, 66, -1, 1, 6, -1, 0, 11, -1, - -1, 1, 7, -1, 0, 12, 83, -1, 1, 8, -1, 0, 13, -1, -1, 0, 9, -1, 1, 4, -1, -1, 1, 9, -1, 0, 14, -1, - -1, 2, 9, -1, 0, 23, -1, - -1, 2, 9, -1, 1, 22, -1, - -1, 9, 9, -1, 0, 25, -1, - -1, 9, 9, -1, 1, 24, -1, - -1, 0, 10, -1, 1, 5, 70, - -1, 0, 11, -1, 1, 6, 72, -1, 0, 12, -1, 1, 7, -1, - -1, 1, 12, -1, 0, 17, 89, - -1, 0, 13, -1, 1, 8, 74, - -1, 1, 13, -1, 0, 18, 91, - -1, 0, 14, -1, 1, 9, 76, - -1, 1, 16, -1, 0, 19, 92, - -1, 0, 17, -1, 1, 12, -1, + -1, 1, 12, -1, 0, 17, 52, -1, 1, 17, -1, 0, 20, -1, -1, 0, 18, -1, 1, 13, -1, -1, 0, 19, -1, 1, 16, -1, - -1, 0, 20, -1, 1, 17, 90, -1, 1, 22, -1, 0, 23, -1, - -1, 0, 23, -1, 1, 22, 94, -1, 1, 24, -1, 0, 25, -1, - -1, 0, 25, -1, 1, 24, 96, - 1, 1, 1, -1, -1, 2, 37, - -1, 2, 2, -1, -1, 22, -1, - -1, 9, 9, -1, -1, 26, -1, - -1, 2, 9, -1, -1, 24, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -131,29 +153,7 @@ namespace NSE_INDEX -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, 1, 26, -1, -1, 27, 139, - -1, -1, 27, -1, 1, 26, -1, - -1, 1, 27, -1, -1, 28, 141, - -1, -1, 28, -1, 1, 27, -1, - -1, 1, 28, -1, -1, 29, 143, - -1, -1, 29, -1, 1, 28, -1, - -1, 1, 29, -1, -1, 30, 145, - -1, -1, 30, -1, 1, 29, -1, - -1, 1, 30, -1, -1, 31, 147, - -1, -1, 31, -1, 1, 30, -1, - -1, 1, 31, -1, -1, 32, 149, - -1, -1, 32, -1, 1, 31, -1 + -1, -1, -1, -1, -1, -1, -1 }; } #endif diff --git a/networks/CNO_He_burn/actual_rhs.H b/networks/CNO_He_burn/actual_rhs.H index 7985edf788..602421d99c 100644 --- a/networks/CNO_He_burn/actual_rhs.H +++ b/networks/CNO_He_burn/actual_rhs.H @@ -76,9 +76,9 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_C12_to_N13) = 0.0; } - rate_eval.screened_rates(k_N13_to_p_C12) = 0.0; + rate_eval.screened_rates(k_N13_to_p_C12_derived) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12) = 0.0; + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = 0.0; } } @@ -87,9 +87,9 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = 0.0; } - rate_eval.screened_rates(k_p_O16_to_He4_N13) = 0.0; + rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = 0.0; + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = 0.0; } } @@ -113,13 +113,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_N13_to_p_C12); - rate_eval.screened_rates(k_N13_to_p_C12) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_N13_to_p_C12); - rate_eval.dscreened_rates_dT(k_N13_to_p_C12) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_C12_to_N13); rate_eval.screened_rates(k_p_C12_to_N13) *= scor; if constexpr (std::is_same_v) { @@ -127,61 +120,42 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_C12_to_N13) = ratraw * dscor_dt + dratraw_dT * scor; } - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 6.0_rt, 13.0_rt); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_N14_to_p_C13); - rate_eval.screened_rates(k_N14_to_p_C13) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_N14_to_p_C13); - rate_eval.dscreened_rates_dT(k_N14_to_p_C13) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_C13_to_N14); - rate_eval.screened_rates(k_p_C13_to_N14) *= scor; + ratraw = rate_eval.screened_rates(k_N13_to_p_C12_derived); + rate_eval.screened_rates(k_N13_to_p_C12_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_C13_to_N14); - rate_eval.dscreened_rates_dT(k_p_C13_to_N14) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived); + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.0_rt, 13.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 6.0_rt, 12.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_O14_to_p_N13); - rate_eval.screened_rates(k_O14_to_p_N13) *= scor; + ratraw = rate_eval.screened_rates(k_He4_C12_to_O16); + rate_eval.screened_rates(k_He4_C12_to_O16) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O14_to_p_N13); - rate_eval.dscreened_rates_dT(k_O14_to_p_N13) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_O16); + rate_eval.dscreened_rates_dT(k_He4_C12_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_N13_to_O14); - rate_eval.screened_rates(k_p_N13_to_O14) *= scor; + ratraw = rate_eval.screened_rates(k_O16_to_He4_C12_derived); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N13_to_O14); - rate_eval.dscreened_rates_dT(k_p_N13_to_O14) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived); + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.0_rt, 14.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 6.0_rt, 13.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -191,23 +165,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_O15_to_p_N14); - rate_eval.screened_rates(k_O15_to_p_N14) *= scor; + ratraw = rate_eval.screened_rates(k_p_C13_to_N14); + rate_eval.screened_rates(k_p_C13_to_N14) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O15_to_p_N14); - rate_eval.dscreened_rates_dT(k_O15_to_p_N14) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_C13_to_N14); + rate_eval.dscreened_rates_dT(k_p_C13_to_N14) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_N14_to_O15); - rate_eval.screened_rates(k_p_N14_to_O15) *= scor; + ratraw = rate_eval.screened_rates(k_N14_to_p_C13_derived); + rate_eval.screened_rates(k_N14_to_p_C13_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N14_to_O15); - rate_eval.dscreened_rates_dT(k_p_N14_to_O15) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_N14_to_p_C13_derived); + rate_eval.dscreened_rates_dT(k_N14_to_p_C13_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.0_rt, 15.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.0_rt, 13.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -217,89 +191,75 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_O16_to_p_N15); - rate_eval.screened_rates(k_O16_to_p_N15) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_to_p_N15); - rate_eval.dscreened_rates_dT(k_O16_to_p_N15) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_N15_to_O16); - rate_eval.screened_rates(k_p_N15_to_O16) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N15_to_O16); - rate_eval.dscreened_rates_dT(k_p_N15_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_C12_to_p_N15); - rate_eval.screened_rates(k_He4_C12_to_p_N15) *= scor; + ratraw = rate_eval.screened_rates(k_p_N13_to_O14); + rate_eval.screened_rates(k_p_N13_to_O14) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15); - rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N13_to_O14); + rate_eval.dscreened_rates_dT(k_p_N13_to_O14) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_N15_to_He4_C12); - rate_eval.screened_rates(k_p_N15_to_He4_C12) *= scor; + ratraw = rate_eval.screened_rates(k_O14_to_p_N13_derived); + rate_eval.screened_rates(k_O14_to_p_N13_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12); - rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_O14_to_p_N13_derived); + rate_eval.dscreened_rates_dT(k_O14_to_p_N13_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 6.0_rt, 12.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.0_rt, 14.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_O16_to_He4_C12); - rate_eval.screened_rates(k_O16_to_He4_C12) *= scor; + ratraw = rate_eval.screened_rates(k_p_N14_to_O15); + rate_eval.screened_rates(k_p_N14_to_O15) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_to_He4_C12); - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N14_to_O15); + rate_eval.dscreened_rates_dT(k_p_N14_to_O15) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_C12_to_O16); - rate_eval.screened_rates(k_He4_C12_to_O16) *= scor; + ratraw = rate_eval.screened_rates(k_O15_to_p_N14_derived); + rate_eval.screened_rates(k_O15_to_p_N14_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_O16); - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_O15_to_p_N14_derived); + rate_eval.dscreened_rates_dT(k_O15_to_p_N14_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 16.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 14.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_F17_to_p_O16); - rate_eval.screened_rates(k_F17_to_p_O16) *= scor; + ratraw = rate_eval.screened_rates(k_He4_N14_to_F18); + rate_eval.screened_rates(k_He4_N14_to_F18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F17_to_p_O16); - rate_eval.dscreened_rates_dT(k_F17_to_p_O16) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_F18); + rate_eval.dscreened_rates_dT(k_He4_N14_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O16_to_F17); - rate_eval.screened_rates(k_p_O16_to_F17) *= scor; + ratraw = rate_eval.screened_rates(k_F18_to_He4_N14_derived); + rate_eval.screened_rates(k_F18_to_He4_N14_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_F17); - rate_eval.dscreened_rates_dT(k_p_O16_to_F17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived); + rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 17.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.0_rt, 15.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -309,37 +269,37 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_F18_to_p_O17); - rate_eval.screened_rates(k_F18_to_p_O17) *= scor; + ratraw = rate_eval.screened_rates(k_p_N15_to_O16); + rate_eval.screened_rates(k_p_N15_to_O16) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F18_to_p_O17); - rate_eval.dscreened_rates_dT(k_F18_to_p_O17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N15_to_O16); + rate_eval.dscreened_rates_dT(k_p_N15_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O17_to_F18); - rate_eval.screened_rates(k_p_O17_to_F18) *= scor; + ratraw = rate_eval.screened_rates(k_p_N15_to_He4_C12); + rate_eval.screened_rates(k_p_N15_to_He4_C12) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_F18); - rate_eval.dscreened_rates_dT(k_p_O17_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12); + rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_N14_to_p_O17); - rate_eval.screened_rates(k_He4_N14_to_p_O17) *= scor; + ratraw = rate_eval.screened_rates(k_O16_to_p_N15_derived); + rate_eval.screened_rates(k_O16_to_p_N15_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17); - rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_to_p_N15_derived); + rate_eval.dscreened_rates_dT(k_O16_to_p_N15_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O17_to_He4_N14); - rate_eval.screened_rates(k_p_O17_to_He4_N14) *= scor; + ratraw = rate_eval.screened_rates(k_He4_C12_to_p_N15_derived); + rate_eval.screened_rates(k_He4_C12_to_p_N15_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14); - rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15_derived); + rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 14.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 15.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -349,63 +309,63 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_F18_to_He4_N14); - rate_eval.screened_rates(k_F18_to_He4_N14) *= scor; + ratraw = rate_eval.screened_rates(k_He4_N15_to_F19); + rate_eval.screened_rates(k_He4_N15_to_F19) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F18_to_He4_N14); - rate_eval.dscreened_rates_dT(k_F18_to_He4_N14) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_F19); + rate_eval.dscreened_rates_dT(k_He4_N15_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_N14_to_F18); - rate_eval.screened_rates(k_He4_N14_to_F18) *= scor; + ratraw = rate_eval.screened_rates(k_F19_to_He4_N15_derived); + rate_eval.screened_rates(k_F19_to_He4_N15_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_F18); - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_derived); + rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 18.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 14.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_F19_to_p_O18); - rate_eval.screened_rates(k_F19_to_p_O18) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O14_to_Ne18); + rate_eval.screened_rates(k_He4_O14_to_Ne18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F19_to_p_O18); - rate_eval.dscreened_rates_dT(k_F19_to_p_O18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18); + rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O18_to_F19); - rate_eval.screened_rates(k_p_O18_to_F19) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O14_to_p_F17); + rate_eval.screened_rates(k_He4_O14_to_p_F17) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_F19); - rate_eval.dscreened_rates_dT(k_p_O18_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17); + rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_N15_to_p_O18); - rate_eval.screened_rates(k_He4_N15_to_p_O18) *= scor; + ratraw = rate_eval.screened_rates(k_Ne18_to_He4_O14_derived); + rate_eval.screened_rates(k_Ne18_to_He4_O14_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18); - rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_derived); + rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O18_to_He4_N15); - rate_eval.screened_rates(k_p_O18_to_He4_N15) *= scor; + ratraw = rate_eval.screened_rates(k_p_F17_to_He4_O14_derived); + rate_eval.screened_rates(k_p_F17_to_He4_O14_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15); - rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14_derived); + rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 15.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 15.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -415,23 +375,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_F19_to_He4_N15); - rate_eval.screened_rates(k_F19_to_He4_N15) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O15_to_Ne19); + rate_eval.screened_rates(k_He4_O15_to_Ne19) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F19_to_He4_N15); - rate_eval.dscreened_rates_dT(k_F19_to_He4_N15) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19); + rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_N15_to_F19); - rate_eval.screened_rates(k_He4_N15_to_F19) *= scor; + ratraw = rate_eval.screened_rates(k_Ne19_to_He4_O15_derived); + rate_eval.screened_rates(k_Ne19_to_He4_O15_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_F19); - rate_eval.dscreened_rates_dT(k_He4_N15_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_derived); + rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 9.0_rt, 17.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 16.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -441,23 +401,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Ne18_to_p_F17); - rate_eval.screened_rates(k_Ne18_to_p_F17) *= scor; + ratraw = rate_eval.screened_rates(k_p_O16_to_F17); + rate_eval.screened_rates(k_p_O16_to_F17) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17); - rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_F17); + rate_eval.dscreened_rates_dT(k_p_O16_to_F17) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_F17_to_Ne18); - rate_eval.screened_rates(k_p_F17_to_Ne18) *= scor; + ratraw = rate_eval.screened_rates(k_F17_to_p_O16_derived); + rate_eval.screened_rates(k_F17_to_p_O16_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18); - rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_F17_to_p_O16_derived); + rate_eval.dscreened_rates_dT(k_F17_to_p_O16_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 14.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 16.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -467,37 +427,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Ne18_to_He4_O14); - rate_eval.screened_rates(k_Ne18_to_He4_O14) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14); - rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_O14_to_Ne18); - rate_eval.screened_rates(k_He4_O14_to_Ne18) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18); - rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_O14_to_p_F17); - rate_eval.screened_rates(k_He4_O14_to_p_F17) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O16_to_Ne20); + rate_eval.screened_rates(k_He4_O16_to_Ne20) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17); - rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20); + rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_F17_to_He4_O14); - rate_eval.screened_rates(k_p_F17_to_He4_O14) *= scor; + ratraw = rate_eval.screened_rates(k_Ne20_to_He4_O16_derived); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14); - rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived); + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 9.0_rt, 18.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 17.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -507,37 +453,37 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Ne19_to_p_F18); - rate_eval.screened_rates(k_Ne19_to_p_F18) *= scor; + ratraw = rate_eval.screened_rates(k_p_O17_to_F18); + rate_eval.screened_rates(k_p_O17_to_F18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18); - rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_F18); + rate_eval.dscreened_rates_dT(k_p_O17_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_F18_to_Ne19); - rate_eval.screened_rates(k_p_F18_to_Ne19) *= scor; + ratraw = rate_eval.screened_rates(k_p_O17_to_He4_N14); + rate_eval.screened_rates(k_p_O17_to_He4_N14) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19); - rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14); + rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O15_to_p_F18); - rate_eval.screened_rates(k_He4_O15_to_p_F18) *= scor; + ratraw = rate_eval.screened_rates(k_F18_to_p_O17_derived); + rate_eval.screened_rates(k_F18_to_p_O17_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18); - rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_F18_to_p_O17_derived); + rate_eval.dscreened_rates_dT(k_F18_to_p_O17_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_F18_to_He4_O15); - rate_eval.screened_rates(k_p_F18_to_He4_O15) *= scor; + ratraw = rate_eval.screened_rates(k_He4_N14_to_p_O17_derived); + rate_eval.screened_rates(k_He4_N14_to_p_O17_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15); - rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17_derived); + rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 15.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 17.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -547,23 +493,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Ne19_to_He4_O15); - rate_eval.screened_rates(k_Ne19_to_He4_O15) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O17_to_Ne21); + rate_eval.screened_rates(k_He4_O17_to_Ne21) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15); - rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21); + rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O15_to_Ne19); - rate_eval.screened_rates(k_He4_O15_to_Ne19) *= scor; + ratraw = rate_eval.screened_rates(k_Ne21_to_He4_O17_derived); + rate_eval.screened_rates(k_Ne21_to_He4_O17_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19); - rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17_derived); + rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 9.0_rt, 19.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 18.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -573,150 +519,178 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Ne20_to_p_F19); - rate_eval.screened_rates(k_Ne20_to_p_F19) *= scor; + ratraw = rate_eval.screened_rates(k_p_O18_to_F19); + rate_eval.screened_rates(k_p_O18_to_F19) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19); - rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_F19); + rate_eval.dscreened_rates_dT(k_p_O18_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_F19_to_Ne20); - rate_eval.screened_rates(k_p_F19_to_Ne20) *= scor; + ratraw = rate_eval.screened_rates(k_p_O18_to_He4_N15); + rate_eval.screened_rates(k_p_O18_to_He4_N15) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20); - rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15); + rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O16_to_p_F19); - rate_eval.screened_rates(k_He4_O16_to_p_F19) *= scor; + ratraw = rate_eval.screened_rates(k_F19_to_p_O18_derived); + rate_eval.screened_rates(k_F19_to_p_O18_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19); - rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_F19_to_p_O18_derived); + rate_eval.dscreened_rates_dT(k_F19_to_p_O18_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_F19_to_He4_O16); - rate_eval.screened_rates(k_p_F19_to_He4_O16) *= scor; + ratraw = rate_eval.screened_rates(k_He4_N15_to_p_O18_derived); + rate_eval.screened_rates(k_He4_N15_to_p_O18_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F19_to_He4_O16); - rate_eval.dscreened_rates_dT(k_p_F19_to_He4_O16) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18_derived); + rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 16.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 9.0_rt, 17.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Ne20_to_He4_O16); - rate_eval.screened_rates(k_Ne20_to_He4_O16) *= scor; + ratraw = rate_eval.screened_rates(k_p_F17_to_Ne18); + rate_eval.screened_rates(k_p_F17_to_Ne18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16); - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18); + rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O16_to_Ne20); - rate_eval.screened_rates(k_He4_O16_to_Ne20) *= scor; + ratraw = rate_eval.screened_rates(k_Ne18_to_p_F17_derived); + rate_eval.screened_rates(k_Ne18_to_p_F17_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20); - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_derived); + rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 17.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 9.0_rt, 18.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Ne21_to_He4_O17); - rate_eval.screened_rates(k_Ne21_to_He4_O17) *= scor; + ratraw = rate_eval.screened_rates(k_p_F18_to_Ne19); + rate_eval.screened_rates(k_p_F18_to_Ne19) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17); - rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19); + rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O17_to_Ne21); - rate_eval.screened_rates(k_He4_O17_to_Ne21) *= scor; + ratraw = rate_eval.screened_rates(k_p_F18_to_He4_O15); + rate_eval.screened_rates(k_p_F18_to_He4_O15) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21); - rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15); + rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_Ne19_to_p_F18_derived); + rate_eval.screened_rates(k_Ne19_to_p_F18_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_derived); + rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_O15_to_p_F18_derived); + rate_eval.screened_rates(k_He4_O15_to_p_F18_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18_derived); + rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 10.0_rt, 21.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 9.0_rt, 18.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Na22_to_p_Ne21); - rate_eval.screened_rates(k_Na22_to_p_Ne21) *= scor; + ratraw = rate_eval.screened_rates(k_He4_F18_to_Na22); + rate_eval.screened_rates(k_He4_F18_to_Na22) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21); - rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22); + rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Ne21_to_Na22); - rate_eval.screened_rates(k_p_Ne21_to_Na22) *= scor; + ratraw = rate_eval.screened_rates(k_He4_F18_to_p_Ne21); + rate_eval.screened_rates(k_He4_F18_to_p_Ne21) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22); - rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21); + rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_Na22_to_He4_F18_derived); + rate_eval.screened_rates(k_Na22_to_He4_F18_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_derived); + rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Ne21_to_He4_F18_derived); + rate_eval.screened_rates(k_p_Ne21_to_He4_F18_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18_derived); + rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 9.0_rt, 18.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 9.0_rt, 19.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Na22_to_He4_F18); - rate_eval.screened_rates(k_Na22_to_He4_F18) *= scor; + ratraw = rate_eval.screened_rates(k_p_F19_to_Ne20); + rate_eval.screened_rates(k_p_F19_to_Ne20) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18); - rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20); + rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_F18_to_Na22); - rate_eval.screened_rates(k_He4_F18_to_Na22) *= scor; + ratraw = rate_eval.screened_rates(k_p_F19_to_He4_O16); + rate_eval.screened_rates(k_p_F19_to_He4_O16) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22); - rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F19_to_He4_O16); + rate_eval.dscreened_rates_dT(k_p_F19_to_He4_O16) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_F18_to_p_Ne21); - rate_eval.screened_rates(k_He4_F18_to_p_Ne21) *= scor; + ratraw = rate_eval.screened_rates(k_Ne20_to_p_F19_derived); + rate_eval.screened_rates(k_Ne20_to_p_F19_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21); - rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_derived); + rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Ne21_to_He4_F18); - rate_eval.screened_rates(k_p_Ne21_to_He4_F18) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O16_to_p_F19_derived); + rate_eval.screened_rates(k_He4_O16_to_p_F19_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18); - rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19_derived); + rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19_derived) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -731,13 +705,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Na23_to_He4_F19); - rate_eval.screened_rates(k_Na23_to_He4_F19) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19); - rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_F19_to_Na23); rate_eval.screened_rates(k_He4_F19_to_Na23) *= scor; if constexpr (std::is_same_v) { @@ -745,6 +712,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_F19_to_Na23) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_Na23_to_He4_F19_derived); + rate_eval.screened_rates(k_Na23_to_He4_F19_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19_derived); + rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 18.0_rt); @@ -757,13 +731,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Mg22_to_He4_Ne18); - rate_eval.screened_rates(k_Mg22_to_He4_Ne18) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18); - rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_Ne18_to_Mg22); rate_eval.screened_rates(k_He4_Ne18_to_Mg22) *= scor; if constexpr (std::is_same_v) { @@ -771,75 +738,68 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ne18_to_Mg22) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_Mg22_to_He4_Ne18_derived); + rate_eval.screened_rates(k_Mg22_to_He4_Ne18_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18_derived); + rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 20.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Mg24_to_p_Na23); - rate_eval.screened_rates(k_Mg24_to_p_Na23) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23); - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Na23_to_Mg24); - rate_eval.screened_rates(k_p_Na23_to_Mg24) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24); - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Ne20_to_p_Na23); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ne20_to_Mg24); + rate_eval.screened_rates(k_He4_Ne20_to_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23); - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24); + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Na23_to_He4_Ne20); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20) *= scor; + ratraw = rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20); - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived); + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 20.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 10.0_rt, 21.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Mg24_to_He4_Ne20); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20) *= scor; + ratraw = rate_eval.screened_rates(k_p_Ne21_to_Na22); + rate_eval.screened_rates(k_p_Ne21_to_Na22) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20); - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22); + rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Ne20_to_Mg24); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24) *= scor; + ratraw = rate_eval.screened_rates(k_Na22_to_p_Ne21_derived); + rate_eval.screened_rates(k_Na22_to_p_Ne21_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24); - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_derived); + rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 13.0_rt, 27.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -849,32 +809,32 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Si28_to_p_Al27); - rate_eval.screened_rates(k_Si28_to_p_Al27) *= scor; + ratraw = rate_eval.screened_rates(k_p_Na23_to_Mg24); + rate_eval.screened_rates(k_p_Na23_to_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27); - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24); + rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Al27_to_Si28); - rate_eval.screened_rates(k_p_Al27_to_Si28) *= scor; + ratraw = rate_eval.screened_rates(k_p_Na23_to_He4_Ne20); + rate_eval.screened_rates(k_p_Na23_to_He4_Ne20) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28); - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20); + rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Mg24_to_p_Al27); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27) *= scor; + ratraw = rate_eval.screened_rates(k_Mg24_to_p_Na23_derived); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27); - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived); + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Al27_to_He4_Mg24); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived); + rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24); - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived); + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -889,13 +849,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Si28_to_He4_Mg24); - rate_eval.screened_rates(k_Si28_to_He4_Mg24) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24); - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_Mg24_to_Si28); rate_eval.screened_rates(k_He4_Mg24_to_Si28) *= scor; if constexpr (std::is_same_v) { @@ -903,9 +856,16 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived); + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 15.0_rt, 31.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 13.0_rt, 27.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -915,32 +875,32 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_S32_to_p_P31); - rate_eval.screened_rates(k_S32_to_p_P31) *= scor; + ratraw = rate_eval.screened_rates(k_p_Al27_to_Si28); + rate_eval.screened_rates(k_p_Al27_to_Si28) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_p_P31); - rate_eval.dscreened_rates_dT(k_S32_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28); + rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_P31_to_S32); - rate_eval.screened_rates(k_p_P31_to_S32) *= scor; + ratraw = rate_eval.screened_rates(k_p_Al27_to_He4_Mg24); + rate_eval.screened_rates(k_p_Al27_to_He4_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_S32); - rate_eval.dscreened_rates_dT(k_p_P31_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24); + rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Si28_to_p_P31); - rate_eval.screened_rates(k_He4_Si28_to_p_P31) *= scor; + ratraw = rate_eval.screened_rates(k_Si28_to_p_Al27_derived); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31); - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived); + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_P31_to_He4_Si28); - rate_eval.screened_rates(k_p_P31_to_He4_Si28) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived); + rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28); - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived); + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -955,13 +915,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_S32_to_He4_Si28); - rate_eval.screened_rates(k_S32_to_He4_Si28) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28); - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_Si28_to_S32); rate_eval.screened_rates(k_He4_Si28_to_S32) *= scor; if constexpr (std::is_same_v) { @@ -969,43 +922,51 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_S32_to_He4_Si28_derived); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived); + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 4.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 15.0_rt, 31.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - - { - constexpr auto scn_fac2 = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 4.0_rt, 8.0_rt); - - - static_assert(scn_fac2.z1 == 2.0_rt); - - - actual_screen(pstate, scn_fac2, scor2, dscor2_dt); - + ratraw = rate_eval.screened_rates(k_p_P31_to_S32); + rate_eval.screened_rates(k_p_P31_to_S32) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_S32); + rate_eval.dscreened_rates_dT(k_p_P31_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_p_P31_to_He4_Si28); + rate_eval.screened_rates(k_p_P31_to_He4_Si28) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28); + rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + } - ratraw = rate_eval.screened_rates(k_C12_to_He4_He4_He4); - rate_eval.screened_rates(k_C12_to_He4_He4_He4) *= scor * scor2; + ratraw = rate_eval.screened_rates(k_S32_to_p_P31_derived); + rate_eval.screened_rates(k_S32_to_p_P31_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4); - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; + dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived); + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_He4_He4_to_C12); - rate_eval.screened_rates(k_He4_He4_He4_to_C12) *= scor * scor2; + ratraw = rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived); + rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12); - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived); + rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1060,11 +1021,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O16_to_He4_N13); - rate_eval.screened_rates(k_p_O16_to_He4_N13) *= scor; + ratraw = rate_eval.screened_rates(k_p_O16_to_He4_N13_derived); + rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13); - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived); + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1135,7 +1096,7 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 9.0_rt, 17.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 19.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -1145,13 +1106,32 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_F17_to_p_Ne20); - rate_eval.screened_rates(k_He4_F17_to_p_Ne20) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ne19_to_p_Na22); + rate_eval.screened_rates(k_He4_Ne19_to_p_Na22) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20); - rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne19_to_p_Na22); + rate_eval.dscreened_rates_dT(k_He4_Ne19_to_p_Na22) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Na22_to_He4_Ne19_derived); + rate_eval.screened_rates(k_p_Na22_to_He4_Ne19_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na22_to_He4_Ne19_derived); + rate_eval.dscreened_rates_dT(k_p_Na22_to_He4_Ne19_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 9.0_rt, 17.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); } + ratraw = rate_eval.screened_rates(k_p_Ne20_to_He4_F17); rate_eval.screened_rates(k_p_Ne20_to_He4_F17) *= scor; if constexpr (std::is_same_v) { @@ -1159,9 +1139,16 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_He4_F17_to_p_Ne20_derived); + rate_eval.screened_rates(k_He4_F17_to_p_Ne20_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_derived); + rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 19.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 4.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -1171,18 +1158,31 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_Ne19_to_p_Na22); - rate_eval.screened_rates(k_He4_Ne19_to_p_Na22) *= scor; + + { + constexpr auto scn_fac2 = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 4.0_rt, 8.0_rt); + + + static_assert(scn_fac2.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac2, scor2, dscor2_dt); + + } + + + ratraw = rate_eval.screened_rates(k_He4_He4_He4_to_C12); + rate_eval.screened_rates(k_He4_He4_He4_to_C12) *= scor * scor2; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne19_to_p_Na22); - rate_eval.dscreened_rates_dT(k_He4_Ne19_to_p_Na22) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12); + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; } - ratraw = rate_eval.screened_rates(k_p_Na22_to_He4_Ne19); - rate_eval.screened_rates(k_p_Na22_to_He4_Ne19) *= scor; + ratraw = rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived); + rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) *= scor * scor2; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na22_to_He4_Ne19); - rate_eval.dscreened_rates_dT(k_p_Na22_to_He4_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived); + rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; } @@ -1204,11 +1204,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ar36_to_He4_S32_removed); - rate_eval.screened_rates(k_Ar36_to_He4_S32_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived_removed); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed); - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived_removed); + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1223,11 +1223,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed) *= scor; + ratraw = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived_removed); + rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed); - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived_removed); + rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); @@ -1237,11 +1237,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived_removed); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed); - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived_removed); + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); @@ -1270,11 +1270,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived_removed); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed); - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived_removed); + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1289,11 +1289,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived_removed); + rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed); - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived_removed); + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); @@ -1303,11 +1303,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ca40_to_p_K39_removed); - rate_eval.screened_rates(k_Ca40_to_p_K39_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ca40_to_p_K39_derived_removed); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed); - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived_removed); + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); @@ -1336,11 +1336,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived_removed); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed); - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived_removed); + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1355,11 +1355,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived_removed); + rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed); - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived_removed); + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); @@ -1369,11 +1369,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived_removed); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed); - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived_removed); + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); @@ -1402,11 +1402,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived_removed); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed); - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived_removed); + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1435,18 +1435,18 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Cr48_to_p_V47_removed); - rate_eval.screened_rates(k_Cr48_to_p_V47_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Cr48_to_p_V47_derived_removed); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed); - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived_removed); + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed) *= scor; + ratraw = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived_removed); + rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed); - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed); + rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1475,18 +1475,18 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived_removed); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed); - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived_removed); + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed) *= scor; + ratraw = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived_removed); + rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived_removed); + rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1508,11 +1508,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived_removed); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed); - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived_removed); + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1541,18 +1541,18 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived_removed); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed); - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived_removed); + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed) *= scor; + ratraw = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived_removed); + rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived_removed); + rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1574,11 +1574,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ni56_to_p_Co55_removed); - rate_eval.screened_rates(k_Ni56_to_p_Co55_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived_removed); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed); - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived_removed); + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1704,69 +1704,69 @@ void rhs_nuc(const burn_t& state, using namespace Rates; ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12)*Y(N13)) + - (-screened_rates(k_p_C13_to_N14)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13)*Y(N14)) + - (-screened_rates(k_p_N13_to_O14)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13)*Y(O14)) + - (-screened_rates(k_p_N14_to_O15)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14)*Y(O15)) + - (-screened_rates(k_p_N15_to_O16)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15)*Y(O16)) + - (-screened_rates(k_p_O16_to_F17)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16)*Y(F17)) + - (-screened_rates(k_p_O17_to_F18)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17)*Y(F18)) + - (-screened_rates(k_p_O18_to_F19)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18)*Y(F19)) + - (-screened_rates(k_p_F17_to_Ne18)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17)*Y(Ne18)) + - (-screened_rates(k_p_F18_to_Ne19)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18)*Y(Ne19)) + - (-screened_rates(k_p_F19_to_Ne20)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19)*Y(Ne20)) + - (-screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21)*Y(Na22)) + - (-screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27)*Y(Si28)) + - (-screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31)*Y(S32)) + + (-screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_p_C13_to_N14)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + + (-screened_rates(k_p_N13_to_O14)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_p_N14_to_O15)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_p_N15_to_O16)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_p_O16_to_F17)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_p_O17_to_F18)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_p_O18_to_F19)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_p_F17_to_Ne18)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (-screened_rates(k_p_F18_to_Ne19)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_p_F19_to_Ne20)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (-screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_p_Na23)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14)*Y(F17)*Y(H1)*state.rho) + + (screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_p_P31)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17)*Y(He4)*Y(N14)*state.rho) + - (-screened_rates(k_p_O18_to_He4_N15)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*Y(H1)*state.rho) + - (-screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18)*Y(He4)*Y(O15)*state.rho) + - (screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*Y(H1)*state.rho) + - (-screened_rates(k_p_F19_to_He4_O16)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19)*Y(He4)*Y(O16)*state.rho) + - (screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_p_Na22_to_He4_Ne19)*Y(Na22)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (-screened_rates(k_p_O18_to_He4_N15)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (-screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (-screened_rates(k_p_F19_to_He4_O16)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + + (-screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12)*Y(O16)) + - (-screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14)*Y(F18)) + - (-screened_rates(k_He4_N15_to_F19)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15)*Y(F19)) + - (-screened_rates(k_He4_O14_to_Ne18)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14)*Y(Ne18)) + - (-screened_rates(k_He4_O15_to_Ne19)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15)*Y(Ne19)) + - (-screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16)*Y(Ne20)) + - (-screened_rates(k_He4_O17_to_Ne21)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17)*Y(Ne21)) + - (-screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18)*Y(Na22)) + - (-screened_rates(k_He4_F19_to_Na23)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19)*Y(Na23)) + - (-screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18)*Y(Mg22)) + - (-screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28)*Y(S32)) + + (-screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (-screened_rates(k_He4_N15_to_F19)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (-screened_rates(k_He4_O14_to_Ne18)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (-screened_rates(k_He4_O15_to_Ne19)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (-screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_He4_O17_to_Ne21)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + + (-screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (-screened_rates(k_He4_F19_to_Na23)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + + (-screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + + (-screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (-screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (-screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15)*Y(C12)*Y(He4)*state.rho) + - (-screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14)*Y(F17)*Y(H1)*state.rho) + + (-screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (-screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_He4_Si28)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17)*Y(He4)*Y(N14)*state.rho) + - (screened_rates(k_p_O18_to_He4_N15)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18)*Y(He4)*Y(N15)*state.rho) + - (-screened_rates(k_He4_F17_to_p_Ne20)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*Y(H1)*state.rho) + - (screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*Y(H1)*state.rho) + - (screened_rates(k_p_F19_to_He4_O16)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19)*Y(He4)*Y(O16)*state.rho) + - (-screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19)*Y(Na22)*Y(H1)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*Y(Si28)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4)*Y(C12)) + + (screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (screened_rates(k_p_O18_to_He4_N15)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (screened_rates(k_p_F19_to_He4_O16)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (-screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + + (screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + + (-screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*Y(H1)*state.rho) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + @@ -1775,173 +1775,173 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_Fe52_He4_approx)*Y(Ni56)); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12)*Y(O16)) + + (-screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + -screened_rates(k_C12_C12_to_p_Na23)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_C12_to_He4_Ne20)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + -screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*Y(O16)*state.rho + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4)*Y(C12)) + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + -screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(C13) = screened_rates(k_N13_to_C13_weak_wc12)*Y(N13) + - (-screened_rates(k_p_C13_to_N14)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13)*Y(N14)); + (-screened_rates(k_p_C13_to_N14)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)); ydot_nuc(N13) = -screened_rates(k_N13_to_C13_weak_wc12)*Y(N13) + - (screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12)*Y(N13)) + - (-screened_rates(k_p_N13_to_O14)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13)*Y(O14)) + - (-screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13)*Y(O16)*Y(H1)*state.rho); + (screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_p_N13_to_O14)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(N14) = screened_rates(k_O14_to_N14_weak_wc12)*Y(O14) + - (screened_rates(k_p_C13_to_N14)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_N14_to_p_C13)*Y(N14)) + - (-screened_rates(k_p_N14_to_O15)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14)*Y(O15)) + - (-screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14)*Y(F18)) + - (screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17)*Y(He4)*Y(N14)*state.rho); + (screened_rates(k_p_C13_to_N14)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + + (-screened_rates(k_p_N14_to_O15)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho); ydot_nuc(N15) = screened_rates(k_O15_to_N15_weak_wc12)*Y(O15) + - (-screened_rates(k_p_N15_to_O16)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15)*Y(O16)) + - (-screened_rates(k_He4_N15_to_F19)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15)*Y(F19)) + - (-screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_p_O18_to_He4_N15)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18)*Y(He4)*Y(N15)*state.rho); + (-screened_rates(k_p_N15_to_O16)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_He4_N15_to_F19)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (-screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_p_O18_to_He4_N15)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho); ydot_nuc(O14) = -screened_rates(k_O14_to_N14_weak_wc12)*Y(O14) + - (screened_rates(k_p_N13_to_O14)*Y(N13)*Y(H1)*state.rho + -screened_rates(k_O14_to_p_N13)*Y(O14)) + - (-screened_rates(k_He4_O14_to_Ne18)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14)*Y(Ne18)) + - (-screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14)*Y(F17)*Y(H1)*state.rho); + (screened_rates(k_p_N13_to_O14)*Y(N13)*Y(H1)*state.rho + -screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_He4_O14_to_Ne18)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (-screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho); ydot_nuc(O15) = -screened_rates(k_O15_to_N15_weak_wc12)*Y(O15) + - (screened_rates(k_p_N14_to_O15)*Y(N14)*Y(H1)*state.rho + -screened_rates(k_O15_to_p_N14)*Y(O15)) + - (-screened_rates(k_He4_O15_to_Ne19)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15)*Y(Ne19)) + - (screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18)*Y(He4)*Y(O15)*state.rho); + (screened_rates(k_p_N14_to_O15)*Y(N14)*Y(H1)*state.rho + -screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_He4_O15_to_Ne19)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho); ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12)*Y(O16)) + - (screened_rates(k_p_N15_to_O16)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_O16_to_p_N15)*Y(O16)) + - (-screened_rates(k_p_O16_to_F17)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16)*Y(F17)) + - (-screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (screened_rates(k_p_N15_to_O16)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_p_O16_to_F17)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + -screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_O16_O16_to_p_P31)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_O16_O16_to_He4_Si28)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_F19_to_He4_O16)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_p_F19_to_He4_O16)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + -screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(O17) = screened_rates(k_F17_to_O17_weak_wc12)*Y(F17) + - (-screened_rates(k_p_O17_to_F18)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17)*Y(F18)) + - (-screened_rates(k_He4_O17_to_Ne21)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17)*Y(Ne21)) + - (-screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17)*Y(He4)*Y(N14)*state.rho); + (-screened_rates(k_p_O17_to_F18)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_He4_O17_to_Ne21)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + + (-screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho); ydot_nuc(O18) = screened_rates(k_F18_to_O18_weak_wc12)*Y(F18) + - (-screened_rates(k_p_O18_to_F19)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18)*Y(F19)) + - (-screened_rates(k_p_O18_to_He4_N15)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18)*Y(He4)*Y(N15)*state.rho); + (-screened_rates(k_p_O18_to_F19)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_p_O18_to_He4_N15)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho); ydot_nuc(F17) = -screened_rates(k_F17_to_O17_weak_wc12)*Y(F17) + - (screened_rates(k_p_O16_to_F17)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16)*Y(F17)) + - (-screened_rates(k_p_F17_to_Ne18)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17)*Y(Ne18)) + - (screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14)*Y(F17)*Y(H1)*state.rho) + - (-screened_rates(k_He4_F17_to_p_Ne20)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*Y(H1)*state.rho); + (screened_rates(k_p_O16_to_F17)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_p_F17_to_Ne18)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + + (-screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(F18) = -screened_rates(k_F18_to_O18_weak_wc12)*Y(F18) + screened_rates(k_Ne18_to_F18_weak_wc12)*Y(Ne18) + - (screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14)*Y(F18)) + - (screened_rates(k_p_O17_to_F18)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_F18_to_p_O17)*Y(F18)) + - (-screened_rates(k_p_F18_to_Ne19)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18)*Y(Ne19)) + - (-screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18)*Y(Na22)) + - (-screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*Y(H1)*state.rho); + (screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (screened_rates(k_p_O17_to_F18)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_p_F18_to_Ne19)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (-screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho); ydot_nuc(F19) = screened_rates(k_Ne19_to_F19_weak_wc12)*Y(Ne19) + - (screened_rates(k_He4_N15_to_F19)*Y(He4)*Y(N15)*state.rho + -screened_rates(k_F19_to_He4_N15)*Y(F19)) + - (screened_rates(k_p_O18_to_F19)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_F19_to_p_O18)*Y(F19)) + - (-screened_rates(k_p_F19_to_Ne20)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19)*Y(Ne20)) + - (-screened_rates(k_He4_F19_to_Na23)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19)*Y(Na23)) + - (-screened_rates(k_p_F19_to_He4_O16)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19)*Y(He4)*Y(O16)*state.rho); + (screened_rates(k_He4_N15_to_F19)*Y(He4)*Y(N15)*state.rho + -screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (screened_rates(k_p_O18_to_F19)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_p_F19_to_Ne20)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_He4_F19_to_Na23)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + + (-screened_rates(k_p_F19_to_He4_O16)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho); ydot_nuc(Ne18) = -screened_rates(k_Ne18_to_F18_weak_wc12)*Y(Ne18) + - (screened_rates(k_He4_O14_to_Ne18)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_Ne18_to_He4_O14)*Y(Ne18)) + - (screened_rates(k_p_F17_to_Ne18)*Y(F17)*Y(H1)*state.rho + -screened_rates(k_Ne18_to_p_F17)*Y(Ne18)) + - (-screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18)*Y(Mg22)); + (screened_rates(k_He4_O14_to_Ne18)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (screened_rates(k_p_F17_to_Ne18)*Y(F17)*Y(H1)*state.rho + -screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (-screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)); ydot_nuc(Ne19) = -screened_rates(k_Ne19_to_F19_weak_wc12)*Y(Ne19) + - (screened_rates(k_He4_O15_to_Ne19)*Y(He4)*Y(O15)*state.rho + -screened_rates(k_Ne19_to_He4_O15)*Y(Ne19)) + - (screened_rates(k_p_F18_to_Ne19)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_Ne19_to_p_F18)*Y(Ne19)) + - (-screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19)*Y(Na22)*Y(H1)*state.rho); + (screened_rates(k_He4_O15_to_Ne19)*Y(He4)*Y(O15)*state.rho + -screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (screened_rates(k_p_F18_to_Ne19)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho); ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16)*Y(Ne20)) + - (screened_rates(k_p_F19_to_Ne20)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_Ne20_to_p_F19)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20)*Y(Mg24)) + + (screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_p_F19_to_Ne20)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_He4_F17_to_p_Ne20)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*Y(H1)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*Y(Ne20)*state.rho); + (screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(Ne21) = - (screened_rates(k_He4_O17_to_Ne21)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_Ne21_to_He4_O17)*Y(Ne21)) + - (-screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21)*Y(Na22)) + - (screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*Y(H1)*state.rho); + (screened_rates(k_He4_O17_to_Ne21)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + + (-screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho); ydot_nuc(Na22) = screened_rates(k_Mg22_to_Na22_weak_wc12)*Y(Mg22) + - (screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Na22_to_He4_F18)*Y(Na22)) + - (screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + -screened_rates(k_Na22_to_p_Ne21)*Y(Na22)) + - (screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_p_Na22_to_He4_Ne19)*Y(Na22)*Y(H1)*state.rho); + (screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + -screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho); ydot_nuc(Na23) = - (screened_rates(k_He4_F19_to_Na23)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Na23_to_He4_F19)*Y(Na23)) + - (-screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23)*Y(Mg24)) + + (screened_rates(k_He4_F19_to_Na23)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + + (-screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_p_Na23)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*Y(Ne20)*state.rho); + (-screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Mg22) = -screened_rates(k_Mg22_to_Na22_weak_wc12)*Y(Mg22) + - (screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_Mg22_to_He4_Ne18)*Y(Mg22)); + (screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24)*Y(Si28)) + + (screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*Y(O16)*state.rho + - (screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + 0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(Al27) = - (-screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27)*Y(Si28)) + + (-screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*Y(O16)*state.rho + - (-screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*Y(Mg24)*state.rho); + (-screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28)*Y(S32)) + + (screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_He4_Si28)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(P31) = - (-screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31)*Y(S32)) + + (-screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_p_P31)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28)*Y(S32)) + - (screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31)*Y(S32)) + + (screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -2026,34 +2026,34 @@ void jac_nuc(const burn_t& state, amrex::Real scratch; - scratch = -screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho - screened_rates(k_p_C13_to_N14)*Y(C13)*state.rho - screened_rates(k_p_F17_to_He4_O14)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18)*Y(F17)*state.rho - screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19)*Y(F18)*state.rho - screened_rates(k_p_F19_to_He4_O16)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20)*Y(F19)*state.rho - screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16)*Y(N15)*state.rho - screened_rates(k_p_Na22_to_He4_Ne19)*Y(Na22)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*state.rho - screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho - screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho - screened_rates(k_p_O18_to_F19)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15)*Y(O18)*state.rho - screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32)*Y(P31)*state.rho; + scratch = -screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho - screened_rates(k_p_C13_to_N14)*Y(C13)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18)*Y(F17)*state.rho - screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19)*Y(F18)*state.rho - screened_rates(k_p_F19_to_He4_O16)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20)*Y(F19)*state.rho - screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16)*Y(N15)*state.rho - screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*state.rho - screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho - screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho - screened_rates(k_p_O18_to_F19)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15)*Y(O18)*state.rho - screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32)*Y(P31)*state.rho; jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15)*Y(C12)*state.rho + screened_rates(k_He4_F17_to_p_Ne20)*Y(F17)*state.rho + screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho + screened_rates(k_He4_N14_to_p_O17)*Y(N14)*state.rho + screened_rates(k_He4_N15_to_p_O18)*Y(N15)*state.rho + screened_rates(k_He4_Ne19_to_p_Na22)*Y(Ne19)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23)*Y(Ne20)*state.rho + screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho + screened_rates(k_He4_O15_to_p_F18)*Y(O15)*state.rho + screened_rates(k_He4_O16_to_p_F19)*Y(O16)*state.rho + screened_rates(k_He4_Si28_to_p_P31)*Y(Si28)*state.rho; + scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho + screened_rates(k_He4_Ne19_to_p_Na22)*Y(Ne19)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_p_N15)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; jac.set(H1, C12, scratch); scratch = -screened_rates(k_p_C13_to_N14)*Y(H1)*state.rho; jac.set(H1, C13, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12) - screened_rates(k_p_N13_to_O14)*Y(H1)*state.rho; + scratch = screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived) - screened_rates(k_p_N13_to_O14)*Y(H1)*state.rho; jac.set(H1, N13, scratch); - scratch = screened_rates(k_He4_N14_to_p_O17)*Y(He4)*state.rho + screened_rates(k_N14_to_p_C13) - screened_rates(k_p_N14_to_O15)*Y(H1)*state.rho; + scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho + screened_rates(k_N14_to_p_C13_derived) - screened_rates(k_p_N14_to_O15)*Y(H1)*state.rho; jac.set(H1, N14, scratch); - scratch = screened_rates(k_He4_N15_to_p_O18)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16)*Y(H1)*state.rho; + scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16)*Y(H1)*state.rho; jac.set(H1, N15, scratch); - scratch = screened_rates(k_He4_O14_to_p_F17)*Y(He4)*state.rho + screened_rates(k_O14_to_p_N13); + scratch = screened_rates(k_He4_O14_to_p_F17)*Y(He4)*state.rho + screened_rates(k_O14_to_p_N13_derived); jac.set(H1, O14, scratch); - scratch = screened_rates(k_He4_O15_to_p_F18)*Y(He4)*state.rho + screened_rates(k_O15_to_p_N14); + scratch = screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho + screened_rates(k_O15_to_p_N14_derived); jac.set(H1, O15, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho + screened_rates(k_He4_O16_to_p_F19)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31)*Y(O16)*state.rho + screened_rates(k_O16_to_p_N15) - screened_rates(k_p_O16_to_F17)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31)*Y(O16)*state.rho + screened_rates(k_O16_to_p_N15_derived) - screened_rates(k_p_O16_to_F17)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(H1, O16, scratch); scratch = -screened_rates(k_p_O17_to_F18)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(H1)*state.rho; @@ -2062,73 +2062,73 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_p_O18_to_F19)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15)*Y(H1)*state.rho; jac.set(H1, O18, scratch); - scratch = screened_rates(k_F17_to_p_O16) + screened_rates(k_He4_F17_to_p_Ne20)*Y(He4)*state.rho - screened_rates(k_p_F17_to_He4_O14)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_to_p_O16_derived) + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18)*Y(H1)*state.rho; jac.set(H1, F17, scratch); - scratch = screened_rates(k_F18_to_p_O17) + screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho - screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_to_p_O17_derived) + screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho - screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19)*Y(H1)*state.rho; jac.set(H1, F18, scratch); - scratch = screened_rates(k_F19_to_p_O18) - screened_rates(k_p_F19_to_He4_O16)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_to_p_O18_derived) - screened_rates(k_p_F19_to_He4_O16)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20)*Y(H1)*state.rho; jac.set(H1, F19, scratch); - scratch = screened_rates(k_Ne18_to_p_F17); + scratch = screened_rates(k_Ne18_to_p_F17_derived); jac.set(H1, Ne18, scratch); - scratch = screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*state.rho + screened_rates(k_Ne19_to_p_F18); + scratch = screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*state.rho + screened_rates(k_Ne19_to_p_F18_derived); jac.set(H1, Ne19, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*state.rho + screened_rates(k_Ne20_to_p_F19) - screened_rates(k_p_Ne20_to_He4_F17)*Y(H1)*state.rho; + scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_p_F19_derived) - screened_rates(k_p_Ne20_to_He4_F17)*Y(H1)*state.rho; jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Ne21_to_He4_F18)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(H1)*state.rho; + scratch = -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(H1)*state.rho; jac.set(H1, Ne21, scratch); - scratch = screened_rates(k_Na22_to_p_Ne21) - screened_rates(k_p_Na22_to_He4_Ne19)*Y(H1)*state.rho; + scratch = screened_rates(k_Na22_to_p_Ne21_derived) - screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; jac.set(H1, Na22, scratch); scratch = -screened_rates(k_p_Na23_to_He4_Ne20)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23); + scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); scratch = -screened_rates(k_p_Al27_to_He4_Mg24)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27); + scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); scratch = -screened_rates(k_p_P31_to_He4_Si28)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32)*Y(H1)*state.rho; jac.set(H1, P31, scratch); - scratch = screened_rates(k_S32_to_p_P31); + scratch = screened_rates(k_S32_to_p_P31_derived); jac.set(H1, S32, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho + screened_rates(k_p_F17_to_He4_O14)*Y(F17)*state.rho + screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho + screened_rates(k_p_F19_to_He4_O16)*Y(F19)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19)*Y(Na22)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho + screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*state.rho + screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*state.rho + screened_rates(k_p_O16_to_He4_N13)*Y(O16)*state.rho + screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho + screened_rates(k_p_O18_to_He4_N15)*Y(O18)*state.rho + screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho; + scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho + screened_rates(k_p_F19_to_He4_O16)*Y(F19)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho + screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho + screened_rates(k_p_O18_to_He4_N15)*Y(O18)*state.rho + screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15)*Y(C12)*state.rho - screened_rates(k_He4_F17_to_p_Ne20)*Y(F17)*state.rho - screened_rates(k_He4_F18_to_Na22)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho - screened_rates(k_He4_F19_to_Na23)*Y(F19)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27)*Y(Mg24)*state.rho - screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17)*Y(N14)*state.rho - screened_rates(k_He4_N15_to_F19)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18)*Y(N15)*state.rho - screened_rates(k_He4_Ne18_to_Mg22)*Y(Ne18)*state.rho - screened_rates(k_He4_Ne19_to_p_Na22)*Y(Ne19)*state.rho - screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23)*Y(Ne20)*state.rho - screened_rates(k_He4_O14_to_Ne18)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho - screened_rates(k_He4_O15_to_Ne19)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18)*Y(O15)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19)*Y(O16)*state.rho - screened_rates(k_He4_O17_to_Ne21)*Y(O17)*state.rho - screened_rates(k_He4_Si28_to_S32)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_He4_F18_to_Na22)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho - screened_rates(k_He4_F19_to_Na23)*Y(F19)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_He4_N15_to_F19)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho - screened_rates(k_He4_Ne18_to_Mg22)*Y(Ne18)*state.rho - screened_rates(k_He4_Ne19_to_p_Na22)*Y(Ne19)*state.rho - screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_O14_to_Ne18)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho - screened_rates(k_He4_O15_to_Ne19)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho - screened_rates(k_He4_O17_to_Ne21)*Y(O17)*state.rho - screened_rates(k_He4_Si28_to_S32)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4) - screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho; jac.set(He4, C12, scratch); scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = -screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17)*Y(He4)*state.rho; + scratch = -screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho; jac.set(He4, N14, scratch); - scratch = -screened_rates(k_He4_N15_to_F19)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18)*Y(He4)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho; + scratch = -screened_rates(k_He4_N15_to_F19)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho; jac.set(He4, N15, scratch); scratch = -screened_rates(k_He4_O14_to_Ne18)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17)*Y(He4)*state.rho; jac.set(He4, O14, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18)*Y(He4)*state.rho; + scratch = -screened_rates(k_He4_O15_to_Ne19)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho; jac.set(He4, O15, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12) + screened_rates(k_p_O16_to_He4_N13)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(He4, O16, scratch); scratch = -screened_rates(k_He4_O17_to_Ne21)*Y(He4)*state.rho + screened_rates(k_p_O17_to_He4_N14)*Y(H1)*state.rho; @@ -2137,49 +2137,49 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_O18_to_He4_N15)*Y(H1)*state.rho; jac.set(He4, O18, scratch); - scratch = -screened_rates(k_He4_F17_to_p_Ne20)*Y(He4)*state.rho + screened_rates(k_p_F17_to_He4_O14)*Y(H1)*state.rho; + scratch = -screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; jac.set(He4, F17, scratch); - scratch = screened_rates(k_F18_to_He4_N14) - screened_rates(k_He4_F18_to_Na22)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho + screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_He4_F18_to_Na22)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho + screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho; jac.set(He4, F18, scratch); - scratch = screened_rates(k_F19_to_He4_N15) - screened_rates(k_He4_F19_to_Na23)*Y(He4)*state.rho + screened_rates(k_p_F19_to_He4_O16)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_to_He4_N15_derived) - screened_rates(k_He4_F19_to_Na23)*Y(He4)*state.rho + screened_rates(k_p_F19_to_He4_O16)*Y(H1)*state.rho; jac.set(He4, F19, scratch); - scratch = -screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*state.rho + screened_rates(k_Ne18_to_He4_O14); + scratch = -screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived); jac.set(He4, Ne18, scratch); - scratch = -screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*state.rho + screened_rates(k_Ne19_to_He4_O15); + scratch = -screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived); jac.set(He4, Ne19, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16) + screened_rates(k_p_Ne20_to_He4_F17)*Y(H1)*state.rho; + scratch = -screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived) + screened_rates(k_p_Ne20_to_He4_F17)*Y(H1)*state.rho; jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_Ne21_to_He4_O17) + screened_rates(k_p_Ne21_to_He4_F18)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_to_He4_O17_derived) + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho; jac.set(He4, Ne21, scratch); - scratch = screened_rates(k_Na22_to_He4_F18) + screened_rates(k_p_Na22_to_He4_Ne19)*Y(H1)*state.rho; + scratch = screened_rates(k_Na22_to_He4_F18_derived) + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; jac.set(He4, Na22, scratch); - scratch = screened_rates(k_Na23_to_He4_F19) + screened_rates(k_p_Na23_to_He4_Ne20)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_to_He4_F19_derived) + screened_rates(k_p_Na23_to_He4_Ne20)*Y(H1)*state.rho; jac.set(He4, Na23, scratch); - scratch = screened_rates(k_Mg22_to_He4_Ne18); + scratch = screened_rates(k_Mg22_to_He4_Ne18_derived); jac.set(He4, Mg22, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20); + scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24); + scratch = -screened_rates(k_He4_Si28_to_S32)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); scratch = screened_rates(k_p_P31_to_He4_Si28)*Y(H1)*state.rho; jac.set(He4, P31, scratch); - scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28); + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); jac.set(He4, S32, scratch); scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(He4)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx); @@ -2203,19 +2203,19 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4) - screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; jac.set(C12, C12, scratch); - scratch = screened_rates(k_N13_to_p_C12); + scratch = screened_rates(k_N13_to_p_C12_derived); jac.set(C12, N13, scratch); scratch = screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho; jac.set(C12, N15, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12); + scratch = -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); scratch = -screened_rates(k_p_C13_to_N14)*Y(C13)*state.rho; @@ -2227,10 +2227,10 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_N13_to_C13_weak_wc12); jac.set(C13, N13, scratch); - scratch = screened_rates(k_N14_to_p_C13); + scratch = screened_rates(k_N14_to_p_C13_derived); jac.set(C13, N14, scratch); - scratch = screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho - screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13)*Y(O16)*state.rho; + scratch = screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho - screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho; @@ -2239,64 +2239,64 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho - screened_rates(k_N13_to_C13_weak_wc12) - screened_rates(k_N13_to_p_C12) - screened_rates(k_p_N13_to_O14)*Y(H1)*state.rho; + scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho - screened_rates(k_N13_to_C13_weak_wc12) - screened_rates(k_N13_to_p_C12_derived) - screened_rates(k_p_N13_to_O14)*Y(H1)*state.rho; jac.set(N13, N13, scratch); - scratch = screened_rates(k_O14_to_p_N13); + scratch = screened_rates(k_O14_to_p_N13_derived); jac.set(N13, O14, scratch); - scratch = screened_rates(k_p_O16_to_He4_N13)*Y(H1)*state.rho; + scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); scratch = screened_rates(k_p_C13_to_N14)*Y(C13)*state.rho - screened_rates(k_p_N14_to_O15)*Y(N14)*state.rho + screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho; jac.set(N14, H1, scratch); - scratch = -screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17)*Y(N14)*state.rho; + scratch = -screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho; jac.set(N14, He4, scratch); scratch = screened_rates(k_p_C13_to_N14)*Y(H1)*state.rho; jac.set(N14, C13, scratch); - scratch = -screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17)*Y(He4)*state.rho - screened_rates(k_N14_to_p_C13) - screened_rates(k_p_N14_to_O15)*Y(H1)*state.rho; + scratch = -screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho - screened_rates(k_N14_to_p_C13_derived) - screened_rates(k_p_N14_to_O15)*Y(H1)*state.rho; jac.set(N14, N14, scratch); scratch = screened_rates(k_O14_to_N14_weak_wc12); jac.set(N14, O14, scratch); - scratch = screened_rates(k_O15_to_p_N14); + scratch = screened_rates(k_O15_to_p_N14_derived); jac.set(N14, O15, scratch); scratch = screened_rates(k_p_O17_to_He4_N14)*Y(H1)*state.rho; jac.set(N14, O17, scratch); - scratch = screened_rates(k_F18_to_He4_N14); + scratch = screened_rates(k_F18_to_He4_N14_derived); jac.set(N14, F18, scratch); scratch = -screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16)*Y(N15)*state.rho + screened_rates(k_p_O18_to_He4_N15)*Y(O18)*state.rho; jac.set(N15, H1, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15)*Y(C12)*state.rho - screened_rates(k_He4_N15_to_F19)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18)*Y(N15)*state.rho; + scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_He4_N15_to_F19)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho; jac.set(N15, He4, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho; jac.set(N15, C12, scratch); - scratch = -screened_rates(k_He4_N15_to_F19)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16)*Y(H1)*state.rho; + scratch = -screened_rates(k_He4_N15_to_F19)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16)*Y(H1)*state.rho; jac.set(N15, N15, scratch); scratch = screened_rates(k_O15_to_N15_weak_wc12); jac.set(N15, O15, scratch); - scratch = screened_rates(k_O16_to_p_N15); + scratch = screened_rates(k_O16_to_p_N15_derived); jac.set(N15, O16, scratch); scratch = screened_rates(k_p_O18_to_He4_N15)*Y(H1)*state.rho; jac.set(N15, O18, scratch); - scratch = screened_rates(k_F19_to_He4_N15); + scratch = screened_rates(k_F19_to_He4_N15_derived); jac.set(N15, F19, scratch); - scratch = screened_rates(k_p_F17_to_He4_O14)*Y(F17)*state.rho + screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho; + scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho; jac.set(O14, H1, scratch); scratch = -screened_rates(k_He4_O14_to_Ne18)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho; @@ -2305,37 +2305,37 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_N13_to_O14)*Y(H1)*state.rho; jac.set(O14, N13, scratch); - scratch = -screened_rates(k_He4_O14_to_Ne18)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_weak_wc12) - screened_rates(k_O14_to_p_N13); + scratch = -screened_rates(k_He4_O14_to_Ne18)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_weak_wc12) - screened_rates(k_O14_to_p_N13_derived); jac.set(O14, O14, scratch); - scratch = screened_rates(k_p_F17_to_He4_O14)*Y(H1)*state.rho; + scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; jac.set(O14, F17, scratch); - scratch = screened_rates(k_Ne18_to_He4_O14); + scratch = screened_rates(k_Ne18_to_He4_O14_derived); jac.set(O14, Ne18, scratch); scratch = screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho + screened_rates(k_p_N14_to_O15)*Y(N14)*state.rho; jac.set(O15, H1, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18)*Y(O15)*state.rho; + scratch = -screened_rates(k_He4_O15_to_Ne19)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho; jac.set(O15, He4, scratch); scratch = screened_rates(k_p_N14_to_O15)*Y(H1)*state.rho; jac.set(O15, N14, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_weak_wc12) - screened_rates(k_O15_to_p_N14); + scratch = -screened_rates(k_He4_O15_to_Ne19)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_weak_wc12) - screened_rates(k_O15_to_p_N14_derived); jac.set(O15, O15, scratch); scratch = screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho; jac.set(O15, F18, scratch); - scratch = screened_rates(k_Ne19_to_He4_O15); + scratch = screened_rates(k_Ne19_to_He4_O15_derived); jac.set(O15, Ne19, scratch); - scratch = screened_rates(k_p_F19_to_He4_O16)*Y(F19)*state.rho + screened_rates(k_p_N15_to_O16)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13)*Y(O16)*state.rho; + scratch = screened_rates(k_p_F19_to_He4_O16)*Y(F19)*state.rho + screened_rates(k_p_N15_to_O16)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(O16, H1, scratch); - scratch = screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19)*Y(O16)*state.rho; + scratch = screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho; jac.set(O16, He4, scratch); scratch = -screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho; @@ -2347,25 +2347,25 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_N15_to_O16)*Y(H1)*state.rho; jac.set(O16, N15, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12) - screened_rates(k_O16_to_p_N15) - screened_rates(k_p_O16_to_F17)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13)*Y(H1)*state.rho; + scratch = -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_O16_to_p_N15_derived) - screened_rates(k_p_O16_to_F17)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(O16, O16, scratch); - scratch = screened_rates(k_F17_to_p_O16); + scratch = screened_rates(k_F17_to_p_O16_derived); jac.set(O16, F17, scratch); scratch = screened_rates(k_p_F19_to_He4_O16)*Y(H1)*state.rho; jac.set(O16, F19, scratch); - scratch = screened_rates(k_Ne20_to_He4_O16); + scratch = screened_rates(k_Ne20_to_He4_O16_derived); jac.set(O16, Ne20, scratch); scratch = -screened_rates(k_p_O17_to_F18)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho; jac.set(O17, H1, scratch); - scratch = screened_rates(k_He4_N14_to_p_O17)*Y(N14)*state.rho - screened_rates(k_He4_O17_to_Ne21)*Y(O17)*state.rho; + scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_He4_O17_to_Ne21)*Y(O17)*state.rho; jac.set(O17, He4, scratch); - scratch = screened_rates(k_He4_N14_to_p_O17)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho; jac.set(O17, N14, scratch); scratch = -screened_rates(k_He4_O17_to_Ne21)*Y(He4)*state.rho - screened_rates(k_p_O17_to_F18)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(H1)*state.rho; @@ -2374,19 +2374,19 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_F17_to_O17_weak_wc12); jac.set(O17, F17, scratch); - scratch = screened_rates(k_F18_to_p_O17); + scratch = screened_rates(k_F18_to_p_O17_derived); jac.set(O17, F18, scratch); - scratch = screened_rates(k_Ne21_to_He4_O17); + scratch = screened_rates(k_Ne21_to_He4_O17_derived); jac.set(O17, Ne21, scratch); scratch = -screened_rates(k_p_O18_to_F19)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15)*Y(O18)*state.rho; jac.set(O18, H1, scratch); - scratch = screened_rates(k_He4_N15_to_p_O18)*Y(N15)*state.rho; + scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho; jac.set(O18, He4, scratch); - scratch = screened_rates(k_He4_N15_to_p_O18)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho; jac.set(O18, N15, scratch); scratch = -screened_rates(k_p_O18_to_F19)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15)*Y(H1)*state.rho; @@ -2395,13 +2395,13 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_F18_to_O18_weak_wc12); jac.set(O18, F18, scratch); - scratch = screened_rates(k_F19_to_p_O18); + scratch = screened_rates(k_F19_to_p_O18_derived); jac.set(O18, F19, scratch); - scratch = -screened_rates(k_p_F17_to_He4_O14)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18)*Y(F17)*state.rho + screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*state.rho + screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho; + scratch = -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18)*Y(F17)*state.rho + screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*state.rho + screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho; jac.set(F17, H1, scratch); - scratch = -screened_rates(k_He4_F17_to_p_Ne20)*Y(F17)*state.rho + screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho; + scratch = -screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho; jac.set(F17, He4, scratch); scratch = screened_rates(k_He4_O14_to_p_F17)*Y(He4)*state.rho; @@ -2410,70 +2410,70 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_O16_to_F17)*Y(H1)*state.rho; jac.set(F17, O16, scratch); - scratch = -screened_rates(k_F17_to_O17_weak_wc12) - screened_rates(k_F17_to_p_O16) - screened_rates(k_He4_F17_to_p_Ne20)*Y(He4)*state.rho - screened_rates(k_p_F17_to_He4_O14)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18)*Y(H1)*state.rho; + scratch = -screened_rates(k_F17_to_O17_weak_wc12) - screened_rates(k_F17_to_p_O16_derived) - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18)*Y(H1)*state.rho; jac.set(F17, F17, scratch); - scratch = screened_rates(k_Ne18_to_p_F17); + scratch = screened_rates(k_Ne18_to_p_F17_derived); jac.set(F17, Ne18, scratch); scratch = screened_rates(k_p_Ne20_to_He4_F17)*Y(H1)*state.rho; jac.set(F17, Ne20, scratch); - scratch = -screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19)*Y(F18)*state.rho + screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*state.rho + screened_rates(k_p_O17_to_F18)*Y(O17)*state.rho; + scratch = -screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19)*Y(F18)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_p_O17_to_F18)*Y(O17)*state.rho; jac.set(F18, H1, scratch); - scratch = -screened_rates(k_He4_F18_to_Na22)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho + screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho + screened_rates(k_He4_O15_to_p_F18)*Y(O15)*state.rho; + scratch = -screened_rates(k_He4_F18_to_Na22)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho + screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho; jac.set(F18, He4, scratch); scratch = screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho; jac.set(F18, N14, scratch); - scratch = screened_rates(k_He4_O15_to_p_F18)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho; jac.set(F18, O15, scratch); scratch = screened_rates(k_p_O17_to_F18)*Y(H1)*state.rho; jac.set(F18, O17, scratch); - scratch = -screened_rates(k_F18_to_He4_N14) - screened_rates(k_F18_to_O18_weak_wc12) - screened_rates(k_F18_to_p_O17) - screened_rates(k_He4_F18_to_Na22)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho - screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_F18_to_O18_weak_wc12) - screened_rates(k_F18_to_p_O17_derived) - screened_rates(k_He4_F18_to_Na22)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho - screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19)*Y(H1)*state.rho; jac.set(F18, F18, scratch); scratch = screened_rates(k_Ne18_to_F18_weak_wc12); jac.set(F18, Ne18, scratch); - scratch = screened_rates(k_Ne19_to_p_F18); + scratch = screened_rates(k_Ne19_to_p_F18_derived); jac.set(F18, Ne19, scratch); - scratch = screened_rates(k_p_Ne21_to_He4_F18)*Y(H1)*state.rho; + scratch = screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho; jac.set(F18, Ne21, scratch); - scratch = screened_rates(k_Na22_to_He4_F18); + scratch = screened_rates(k_Na22_to_He4_F18_derived); jac.set(F18, Na22, scratch); scratch = -screened_rates(k_p_F19_to_He4_O16)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20)*Y(F19)*state.rho + screened_rates(k_p_O18_to_F19)*Y(O18)*state.rho; jac.set(F19, H1, scratch); - scratch = -screened_rates(k_He4_F19_to_Na23)*Y(F19)*state.rho + screened_rates(k_He4_N15_to_F19)*Y(N15)*state.rho + screened_rates(k_He4_O16_to_p_F19)*Y(O16)*state.rho; + scratch = -screened_rates(k_He4_F19_to_Na23)*Y(F19)*state.rho + screened_rates(k_He4_N15_to_F19)*Y(N15)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho; jac.set(F19, He4, scratch); scratch = screened_rates(k_He4_N15_to_F19)*Y(He4)*state.rho; jac.set(F19, N15, scratch); - scratch = screened_rates(k_He4_O16_to_p_F19)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho; jac.set(F19, O16, scratch); scratch = screened_rates(k_p_O18_to_F19)*Y(H1)*state.rho; jac.set(F19, O18, scratch); - scratch = -screened_rates(k_F19_to_He4_N15) - screened_rates(k_F19_to_p_O18) - screened_rates(k_He4_F19_to_Na23)*Y(He4)*state.rho - screened_rates(k_p_F19_to_He4_O16)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_to_He4_N15_derived) - screened_rates(k_F19_to_p_O18_derived) - screened_rates(k_He4_F19_to_Na23)*Y(He4)*state.rho - screened_rates(k_p_F19_to_He4_O16)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20)*Y(H1)*state.rho; jac.set(F19, F19, scratch); scratch = screened_rates(k_Ne19_to_F19_weak_wc12); jac.set(F19, Ne19, scratch); - scratch = screened_rates(k_Ne20_to_p_F19); + scratch = screened_rates(k_Ne20_to_p_F19_derived); jac.set(F19, Ne20, scratch); - scratch = screened_rates(k_Na23_to_He4_F19); + scratch = screened_rates(k_Na23_to_He4_F19_derived); jac.set(F19, Na23, scratch); scratch = screened_rates(k_p_F17_to_Ne18)*Y(F17)*state.rho; @@ -2488,13 +2488,13 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_F17_to_Ne18)*Y(H1)*state.rho; jac.set(Ne18, F17, scratch); - scratch = -screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*state.rho - screened_rates(k_Ne18_to_F18_weak_wc12) - screened_rates(k_Ne18_to_He4_O14) - screened_rates(k_Ne18_to_p_F17); + scratch = -screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*state.rho - screened_rates(k_Ne18_to_F18_weak_wc12) - screened_rates(k_Ne18_to_He4_O14_derived) - screened_rates(k_Ne18_to_p_F17_derived); jac.set(Ne18, Ne18, scratch); - scratch = screened_rates(k_Mg22_to_He4_Ne18); + scratch = screened_rates(k_Mg22_to_He4_Ne18_derived); jac.set(Ne18, Mg22, scratch); - scratch = screened_rates(k_p_F18_to_Ne19)*Y(F18)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19)*Y(Na22)*state.rho; + scratch = screened_rates(k_p_F18_to_Ne19)*Y(F18)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho; jac.set(Ne19, H1, scratch); scratch = -screened_rates(k_He4_Ne19_to_p_Na22)*Y(Ne19)*state.rho + screened_rates(k_He4_O15_to_Ne19)*Y(O15)*state.rho; @@ -2506,16 +2506,16 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_F18_to_Ne19)*Y(H1)*state.rho; jac.set(Ne19, F18, scratch); - scratch = -screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*state.rho - screened_rates(k_Ne19_to_F19_weak_wc12) - screened_rates(k_Ne19_to_He4_O15) - screened_rates(k_Ne19_to_p_F18); + scratch = -screened_rates(k_He4_Ne19_to_p_Na22)*Y(He4)*state.rho - screened_rates(k_Ne19_to_F19_weak_wc12) - screened_rates(k_Ne19_to_He4_O15_derived) - screened_rates(k_Ne19_to_p_F18_derived); jac.set(Ne19, Ne19, scratch); - scratch = screened_rates(k_p_Na22_to_He4_Ne19)*Y(H1)*state.rho; + scratch = screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; jac.set(Ne19, Na22, scratch); scratch = screened_rates(k_p_F19_to_Ne20)*Y(F19)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17)*Y(Ne20)*state.rho; jac.set(Ne20, H1, scratch); - scratch = screened_rates(k_He4_F17_to_p_Ne20)*Y(F17)*state.rho - screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho; + scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20)*Y(C12)*state.rho; @@ -2524,22 +2524,22 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_He4_O16_to_Ne20)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = screened_rates(k_He4_F17_to_p_Ne20)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho; jac.set(Ne20, F17, scratch); scratch = screened_rates(k_p_F19_to_Ne20)*Y(H1)*state.rho; jac.set(Ne20, F19, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16) - screened_rates(k_Ne20_to_p_F19) - screened_rates(k_p_Ne20_to_He4_F17)*Y(H1)*state.rho; + scratch = -screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived) - screened_rates(k_Ne20_to_p_F19_derived) - screened_rates(k_p_Ne20_to_He4_F17)*Y(H1)*state.rho; jac.set(Ne20, Ne20, scratch); scratch = screened_rates(k_p_Na23_to_He4_Ne20)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); - scratch = screened_rates(k_Mg24_to_He4_Ne20); + scratch = screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(Ne20, Mg24, scratch); - scratch = -screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho; + scratch = -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho; jac.set(Ne21, H1, scratch); scratch = screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho + screened_rates(k_He4_O17_to_Ne21)*Y(O17)*state.rho; @@ -2551,13 +2551,13 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho; jac.set(Ne21, F18, scratch); - scratch = -screened_rates(k_Ne21_to_He4_O17) - screened_rates(k_p_Ne21_to_He4_F18)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne21_to_He4_O17_derived) - screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(H1)*state.rho; jac.set(Ne21, Ne21, scratch); - scratch = screened_rates(k_Na22_to_p_Ne21); + scratch = screened_rates(k_Na22_to_p_Ne21_derived); jac.set(Ne21, Na22, scratch); - scratch = -screened_rates(k_p_Na22_to_He4_Ne19)*Y(Na22)*state.rho + screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho; + scratch = -screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho + screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho; jac.set(Na22, H1, scratch); scratch = screened_rates(k_He4_F18_to_Na22)*Y(F18)*state.rho + screened_rates(k_He4_Ne19_to_p_Na22)*Y(Ne19)*state.rho; @@ -2572,7 +2572,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_Ne21_to_Na22)*Y(H1)*state.rho; jac.set(Na22, Ne21, scratch); - scratch = -screened_rates(k_Na22_to_He4_F18) - screened_rates(k_Na22_to_p_Ne21) - screened_rates(k_p_Na22_to_He4_Ne19)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na22_to_He4_F18_derived) - screened_rates(k_Na22_to_p_Ne21_derived) - screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; jac.set(Na22, Na22, scratch); scratch = screened_rates(k_Mg22_to_Na22_weak_wc12); @@ -2581,7 +2581,7 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_F19_to_Na23)*Y(F19)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23)*Y(Ne20)*state.rho; + scratch = screened_rates(k_He4_F19_to_Na23)*Y(F19)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23)*Y(C12)*state.rho; @@ -2590,13 +2590,13 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_He4_F19_to_Na23)*Y(He4)*state.rho; jac.set(Na23, F19, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); - scratch = -screened_rates(k_Na23_to_He4_F19) - screened_rates(k_p_Na23_to_He4_Ne20)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_to_He4_F19_derived) - screened_rates(k_p_Na23_to_He4_Ne20)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(H1)*state.rho; jac.set(Na23, Na23, scratch); - scratch = screened_rates(k_Mg24_to_p_Na23); + scratch = screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Na23, Mg24, scratch); scratch = screened_rates(k_He4_Ne18_to_Mg22)*Y(Ne18)*state.rho; @@ -2605,13 +2605,13 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_He4_Ne18_to_Mg22)*Y(He4)*state.rho; jac.set(Mg22, Ne18, scratch); - scratch = -screened_rates(k_Mg22_to_He4_Ne18) - screened_rates(k_Mg22_to_Na22_weak_wc12); + scratch = -screened_rates(k_Mg22_to_He4_Ne18_derived) - screened_rates(k_Mg22_to_Na22_weak_wc12); jac.set(Mg22, Mg22, scratch); scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho; @@ -2626,19 +2626,19 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_Na23_to_Mg24)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20) - screened_rates(k_Mg24_to_p_Na23); + scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); - scratch = screened_rates(k_Si28_to_He4_Mg24); + scratch = screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(Mg24, Si28, scratch); scratch = -screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27)*Y(Mg24)*state.rho; + scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); scratch = screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho; @@ -2647,19 +2647,19 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); scratch = -screened_rates(k_p_Al27_to_He4_Mg24)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); - scratch = screened_rates(k_Si28_to_p_Al27); + scratch = screened_rates(k_Si28_to_p_Al27_derived); jac.set(Al27, Si28, scratch); scratch = screened_rates(k_p_Al27_to_Si28)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_S32)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31)*Y(Si28)*state.rho; + scratch = screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_S32)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; @@ -2674,31 +2674,31 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_Al27_to_Si28)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24) - screened_rates(k_Si28_to_p_Al27); + scratch = -screened_rates(k_He4_Si28_to_S32)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); scratch = screened_rates(k_p_P31_to_He4_Si28)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); - scratch = screened_rates(k_S32_to_He4_Si28); + scratch = screened_rates(k_S32_to_He4_Si28_derived); jac.set(Si28, S32, scratch); scratch = -screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31)*Y(Si28)*state.rho; + scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); scratch = 1.0*screened_rates(k_O16_O16_to_p_P31)*Y(O16)*state.rho; jac.set(P31, O16, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); scratch = -screened_rates(k_p_P31_to_He4_Si28)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32)*Y(H1)*state.rho; jac.set(P31, P31, scratch); - scratch = screened_rates(k_S32_to_p_P31); + scratch = screened_rates(k_S32_to_p_P31_derived); jac.set(P31, S32, scratch); scratch = screened_rates(k_p_P31_to_S32)*Y(P31)*state.rho; @@ -2716,7 +2716,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_P31_to_S32)*Y(H1)*state.rho; jac.set(S32, P31, scratch); - scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28) - screened_rates(k_S32_to_p_P31); + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_p_P31_derived); jac.set(S32, S32, scratch); scratch = screened_rates(k_Ar36_to_S32_He4_approx); diff --git a/networks/CNO_He_burn/partition_functions.H b/networks/CNO_He_burn/partition_functions.H index 38f06a550b..dfdf3cf1f9 100644 --- a/networks/CNO_He_burn/partition_functions.H +++ b/networks/CNO_He_burn/partition_functions.H @@ -13,6 +13,669 @@ using namespace Species; namespace part_fun { + constexpr int npts_1 = 72; + + // this is T9 + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real temp_array_1[npts_1] = { + 0.01, 0.15, 0.2, 0.3, 0.4, + 0.5, 0.6, 0.7, 0.8, 0.9, + 1.0, 1.5, 2.0, 2.5, 3.0, + 3.5, 4.0, 4.5, 5.0, 6.0, + 7.0, 8.0, 9.0, 10.0, 12.0, + 14.0, 16.0, 18.0, 20.0, 22.0, + 24.0, 26.0, 28.0, 30.0, 35.0, + 40.0, 45.0, 50.0, 55.0, 60.0, + 65.0, 70.0, 75.0, 80.0, 85.0, + 90.0, 95.0, 100.0, 105.0, 110.0, + 115.0, 120.0, 125.0, 130.0, 135.0, + 140.0, 145.0, 150.0, 155.0, 160.0, + 165.0, 170.0, 175.0, 180.0, 190.0, + 200.0, 210.0, 220.0, 230.0, 240.0, + 250.0, 275.0, + }; + + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real O14_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.021189299069938092, + 0.045322978786657475, 0.07918124604762482, 0.12057393120584989, 0.1673173347481761, 0.21748394421390627, + 0.2648178230095365, 0.3096301674258988, 0.35410843914740087, 0.3944516808262163, 0.481442628502305, + 0.5514499979728752, 0.6053050461411095, 0.6473829701146199, 0.6794278966121189, 0.7032913781186614, + 0.7201593034059569, 0.7315887651867387, 0.7371926427047373, 0.7395723444500919, 0.7371926427047373, + 0.7315887651867387, 0.7234556720351858, 0.7126497016272114, 0.6989700043360189, 0.6839471307515121, + 0.6665179805548809, 0.6464037262230695, 0.6263403673750424, 0.6031443726201823, 0.5797835966168101, + 0.5550944485783191, 0.5289167002776547, 0.5024271199844327, 0.4742162640762553, 0.44560420327359757, + 0.414973347970818, 0.38560627359831223, 0.35410843914740087, 0.3222192947339193, 0.25767857486918455, + 0.1903316981702915, 0.12385164096708581, 0.05307844348341968, -0.017728766960431606, -0.08884239126002343, + -0.16052195262580163, -0.3419886033428876, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real O15_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.021189299069938092, + 0.045322978786657475, 0.08278537031645007, 0.1367205671564068, 0.2041199826559248, 0.2787536009528289, + 0.36172783601759284, 0.4471580313422192, 0.5352941200427705, 0.6242820958356683, 0.850033257689769, + 1.0791812460476249, 1.3096301674258988, 1.545307116465824, 1.7846172926328754, 2.0293837776852097, + 2.2764618041732443, 2.525044807036845, 2.775974331129369, 3.0253058652647704, 3.278753600952829, + 3.5289167002776547, 3.7795964912578244, 4.02938377768521, 4.278753600952829, 4.528916700277655, + 4.7774268223893115, 5.02530586526477, 5.27415784926368, 5.519827993775719, 5.767155866082181, + 6.012837224705172, 6.260071387985075, 6.503790683057181, 6.749736315569061, 6.994317152669637, + 7.238046103128795, 7.482873583608754, 7.727541257028556, 7.971739590887778, 8.459392487759231, + 8.947433721887052, 9.4345689040342, 9.922206277439017, 10.409933123331294, 10.898176483497677, + 11.38738982633873, 12.611723308007342, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real O16_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.012837224705172217, + 0.037426497940623665, 0.07188200730612537, 0.12057393120584989, 0.1846914308175988, 0.2624510897304295, + 0.3463529744506387, 0.437750562820388, 0.534026106056135, 0.6344772701607315, 0.8981764834976765, + 1.1760912590556813, 1.4668676203541096, 1.7641761323903307, 2.0644579892269186, 2.367355921026019, + 2.667452952889954, 2.9656719712201065, 3.2624510897304293, 3.5550944485783194, 3.845098040014257, + 4.133538908370218, 4.419955748489758, 4.704150516839799, 4.986771734266245, 5.267171728403014, + 5.547774705387822, 5.8267225201689925, 6.103803720955957, 6.380211241711606, 6.6551384348113825, + 6.929929560084588, 7.204119982655925, 7.477121254719663, 7.748962861256161, 8.021189299069938, + 8.292256071356476, 8.562292864456476, 8.832508912706237, 9.100370545117563, 9.640481436970422, + 10.178976947293169, 10.714329759745233, 11.250420002308894, 11.785329835010767, 12.320146286111054, + 12.856124444242301, 14.195899652409233, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real O17_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.004321373782642578, 0.004321373782642578, + 0.00860017176191757, 0.012837224705172217, 0.01703333929878037, 0.01703333929878037, 0.02530586526477026, + 0.03342375548694973, 0.04139268515822508, 0.05307844348341968, 0.06069784035361165, 0.09342168516223508, + 0.13033376849500614, 0.17609125905568124, 0.23299611039215384, 0.2966651902615311, 0.367355921026019, + 0.44560420327359757, 0.5289167002776547, 0.615950051656401, 0.7084209001347128, 0.9542425094393249, + 1.2174839442139063, 1.4913616938342726, 1.7708520116421442, 2.05307844348342, 2.3324384599156054, + 2.6138418218760693, 2.8926510338773004, 3.1702617153949575, 3.4471580313422194, 3.7234556720351857, + 3.999130541287371, 4.27415784926368, 4.549003262025788, 4.824125833916549, 5.100370545117563, + 5.3747483460101035, 5.649334858712142, 5.924279286061882, 6.198657086954423, 6.474216264076255, + 6.749736315569061, 7.02530586526477, 7.301029995663981, 7.576341350205793, 7.852479993636856, + 8.127104798364808, 8.404833716619938, 8.680335513414564, 8.956648579205204, 9.509202522331103, + 10.064457989226918, 10.618048096712092, 11.173186268412275, 11.73158876518674, 12.290034611362518, + 12.848804701051804, 14.252853030979892, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real O18_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.004321373782642578, 0.00860017176191757, 0.012837224705172217, 0.021189299069938092, 0.04921802267018165, + 0.08635983067474823, 0.13353890837021754, 0.1846914308175988, 0.23804610312879543, 0.38381536598043126, + 0.5118833609788744, 0.6334684555795865, 0.7474118078864233, 0.8536982117761743, 0.9542425094393249, + 1.0530784434834197, 1.146128035678238, 1.2430380486862944, 1.3384564936046048, 1.5921767573958667, + 1.8686444383948257, 2.164352855784437, 2.4756711883244296, 2.791690649020118, 3.110589710299249, + 3.428134794028789, 3.7450747915820575, 4.060697840353612, 4.372912002970106, 4.68304703823885, + 4.992995098431342, 5.301029995663981, 5.608526033577194, 5.9148718175400505, 6.220108088040055, + 6.525044807036846, 6.82865989653532, 7.1303337684950066, 7.434568904034199, 7.7363965022766426, + 8.037426497940624, 8.338456493604605, 8.640481436970422, 8.940516484932568, 9.2405492482826, + 9.540329474790873, 9.840733234611807, 10.139879086401237, 10.439332693830263, 11.037426497940624, + 11.636487896353366, 12.23552844690755, 12.834420703681532, 13.432969290874405, 14.03342375548695, + 14.634477270160732, 16.139879086401237, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real F17_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.004321373782642578, 0.00860017176191757, 0.012837224705172217, 0.021189299069938092, + 0.02530586526477026, 0.03342375548694973, 0.037426497940623665, 0.04139268515822508, 0.05307844348341968, + 0.06069784035361165, 0.06818586174616162, 0.07554696139253074, 0.08635983067474823, 0.11394335230683679, + 0.14301480025409505, 0.18184358794477257, 0.22788670461367352, 0.28103336724772754, 0.3424226808222063, + 0.4082399653118496, 0.47856649559384334, 0.5550944485783191, 0.6374897295125107, 0.8603380065709937, + 1.1038037209559568, 1.3654879848908996, 1.6334684555795866, 1.9057958803678685, 2.1818435879447726, + 2.456366033129043, 2.7307822756663893, 3.0043213737826426, 3.278753600952829, 3.5538830266438746, + 3.828015064223977, 4.100370545117563, 4.376576957056512, 4.650307523131937, 4.924279286061882, + 5.198657086954423, 5.472756449317212, 5.747411807886423, 6.021189299069938, 6.296665190261531, + 6.571708831808688, 6.846955325019824, 7.12057393120585, 7.3979400086720375, 7.673020907128897, + 7.948412965778601, 8.225309281725863, 8.499687082618404, 8.775974331129369, 9.328379603438737, + 9.88252453795488, 10.437750562820389, 10.992553517832135, 11.549003262025789, 12.107209969647869, + 12.66651798055488, 14.068185861746162, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real F18_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.00860017176191757, 0.02530586526477026, 0.04921802267018165, + 0.08635983067474823, 0.12385164096708581, 0.1673173347481761, 0.20682587603184974, 0.28330122870354957, + 0.35024801833416286, 0.4065401804339551, 0.45331834004703764, 0.4941545940184428, 0.6646419755561255, + 0.756636108245848, 0.8419848045901139, 0.9232440186302766, 1.0043213737826426, 1.08278537031645, + 1.1643528557844371, 1.250420002308894, 1.3384564936046048, 1.429752280002408, 1.6748611407378116, + 1.9405164849325673, 2.220108088040055, 2.505149978319906, 2.7930916001765804, 3.0827853703164503, + 3.369215857410143, 3.6570558528571038, 3.9434945159061026, 4.230448921378274, 4.514547752660286, + 4.800029359244134, 5.086359830674748, 5.371067862271737, 5.657055852857104, 5.94299959336604, + 6.230448921378274, 6.515873843711679, 6.803457115648414, 7.089905111439398, 7.378397900948138, + 7.667452952889954, 7.956168430475364, 8.24551266781415, 8.534026106056135, 8.823474229170301, + 9.113943352306837, 9.403120521175818, 9.69460519893357, 9.984977126415494, 10.568201724066995, + 11.152288344383056, 11.73798732633343, 12.324282455297693, 12.913813852383717, 13.503790683057181, + 14.096910013008056, 15.584331224367531, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real F19_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.00860017176191757, 0.021189299069938092, + 0.045322978786657475, 0.07918124604762482, 0.11058971029924898, 0.14301480025409505, 0.17609125905568124, + 0.20682587603184974, 0.32633586092875144, 0.40312052117581787, 0.4548448600085102, 0.4941545940184428, + 0.5250448070368452, 0.5526682161121932, 0.5763413502057929, 0.5976951859255123, 0.6384892569546373, + 0.6739419986340878, 0.7075701760979364, 0.7371926427047373, 0.7656685547590141, 0.8530895298518656, + 0.9258275746247423, 1.0, 1.0791812460476249, 1.1583624920952498, 1.2430380486862944, + 1.3324384599156054, 1.4265112613645752, 1.5250448070368452, 1.6273658565927327, 1.9052560487484513, + 2.204119982655925, 2.514547752660286, 2.8312296938670634, 3.14921911265538, 3.4683473304121573, + 3.7867514221455614, 4.103803720955957, 4.419955748489758, 4.734799829588847, 5.049218022670182, + 5.363611979892144, 5.679427896612119, 5.993436230497612, 6.307496037913213, 6.623249290397901, + 6.937517892017347, 7.252853030979893, 7.567026366159061, 7.8819549713396, 8.195899652409233, + 8.511883360978874, 8.826074802700827, 9.139879086401237, 9.456366033129044, 9.771587480881255, + 10.086359830674748, 10.403120521175818, 10.717670503002262, 11.03342375548695, 11.665580991017952, + 12.298853076409706, 12.932473764677153, 13.56702636615906, 14.204119982655925, 14.840733234611807, + 15.48000694295715, 17.08278537031645, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ne18_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 8.685880952436748e-07, 3.821623291793711e-05, 0.00034078742672235857, 0.0014740966917327271, + 0.0042108511246098535, 0.009296188019926578, 0.01729216848118748, 0.028532619910828713, 0.06103645800577312, + 0.10579825637065968, 0.1601151291767779, 0.2207039183598475, 0.28451510286256426, 0.4132997640812518, + 0.534026106056135, 0.6454222693490919, 0.7474118078864233, 0.8419848045901139, 0.931457870689005, + 1.0170333392987805, 1.1038037209559568, 1.1931245983544616, 1.2833012287035497, 1.530199698203082, + 1.8027737252919758, 2.0969100130080562, 2.406540180433955, 2.720159303405957, 3.037426497940624, + 3.3502480183341627, 3.6646419755561257, 3.9768083373380665, 4.2878017299302265, 4.596597095626461, + 4.904174368284163, 5.212187604403958, 5.517195897949974, 5.8228216453031045, 6.127104798364807, + 6.431363764158988, 6.733999286538387, 7.037426497940624, 7.338456493604605, 7.6414741105041, + 7.94299959336604, 8.243038048686294, 8.545307116465825, 8.846337112129806, 9.146128035678238, + 9.44715803134222, 9.747411807886424, 10.049218022670182, 10.348304863048162, 10.947923619831727, + 11.547774705387823, 12.14921911265538, 12.749736315569061, 13.352182518111363, 13.953759691733229, + 14.556302500767288, 16.068185861746162, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ne19_pf_array[npts_1] = { + 0.0, 0.0, 1.3028814913777444e-06, 0.00013982031331027489, 0.0014412009067215222, + 0.0058550331034921905, 0.01484382918315971, 0.02864403564981097, 0.046524428475543715, 0.067325701327402, + 0.08987227329808917, 0.2024330050186144, 0.29142235685380635, 0.3573212585177977, 0.4076299980711713, + 0.4480025329155769, 0.4819996873375467, 0.5117837959085901, 0.5386747558422048, 0.5868019236204228, + 0.6302234949477327, 0.6708947682014244, 0.7099774032281327, 0.7482111370619575, 0.8241258339165489, + 0.8998205024270963, 0.9777236052888478, 1.0569048513364727, 1.1398790864012365, 1.2278867046136734, + 1.320146286111054, 1.416640507338281, 1.5171958979499742, 1.6222140229662954, 1.9041743682841634, + 2.204119982655925, 2.5171958979499744, 2.833147111912785, 3.14921911265538, 3.4683473304121573, + 3.783903579272735, 4.096910013008056, 4.413299764081252, 4.725911632295048, 5.037426497940624, + 5.352182518111363, 5.664641975556125, 5.977266212427293, 6.290034611362518, 6.603144372620182, + 6.915927211697116, 7.230448921378274, 7.54282542695918, 7.8561244442423, 8.170261715394957, + 8.484299839346786, 8.797267540830717, 9.11058971029925, 9.424881636631067, 9.739572344450092, + 10.05307844348342, 10.369215857410143, 10.683947130751513, 10.998695158311655, 11.629409599102718, + 12.260071387985075, 12.893206753059848, 13.52762990087134, 14.161368002234974, 14.798650645445269, + 15.436162647040756, 17.037426497940622, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ne20_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 6.9486561213582446e-06, 0.00016586881316040883, 0.0011034421778731533, 0.003892457497077877, + 0.009540974939696452, 0.018595240218299815, 0.03107544483336982, 0.04661767038571622, 0.0846241727916796, + 0.12822183093465686, 0.174311933665943, 0.22124805254602342, 0.2683385291343481, 0.36172783601759284, + 0.456366033129043, 0.5514499979728752, 0.6483600109809317, 0.7466341989375788, 0.8481891169913987, + 0.9532763366673044, 1.0644579892269186, 1.1789769472931695, 1.3031960574204888, 1.6434526764861874, + 2.0170333392987803, 2.4099331233312946, 2.8068580295188172, 3.2013971243204513, 3.5899496013257077, + 3.9731278535996988, 4.352182518111363, 4.725911632295048, 5.096910013008056, 5.465382851448418, + 5.830588668685144, 6.193124598354462, 6.556302500767288, 6.916980047320382, 7.276461804173244, + 7.6344772701607315, 7.991669007379949, 8.348304863048162, 8.703291378118662, 9.056904851336473, + 9.411619705963231, 9.763427993562937, 10.117271295655764, 10.46686762035411, 10.818225893613956, + 11.170261715394957, 11.519827993775719, 11.869231719730976, 12.217483944213907, 12.916453948549925, + 13.61384182187607, 14.3096301674259, 15.004321373782643, 15.702430536445526, 16.399673721481037, + 17.096910013008056, 18.838849090737256, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ne21_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 8.685880952436748e-07, 2.4754079983896385e-05, + 0.0001901793368385613, 0.0007372402163824667, 0.0019404293040471109, 0.0040039218205739505, 0.007021925578680666, + 0.010986057727319889, 0.04118891376750491, 0.07777221055393521, 0.11230632139519969, 0.14260436993417835, + 0.16888829052162924, 0.19197861038694297, 0.21269992944898236, 0.23172922294680387, 0.26667282493464145, + 0.2996105757244402, 0.3321030146619489, 0.3650139334448046, 0.3988146649899236, 0.46982201597816303, + 0.5465426634781311, 0.6283889300503115, 0.7176705030022621, 0.8142475957319202, 0.9180303367848801, + 1.0293837776852097, 1.14921911265538, 1.276461804173244, 1.4082399653118496, 1.760422483423212, + 2.1271047983648077, 2.499687082618404, 2.870403905279027, 3.2380461031287955, 3.603144372620182, + 3.965671971220107, 4.326335860928752, 4.683947130751513, 5.041392685158225, 5.396199347095736, + 5.752048447819439, 6.107209969647869, 6.4623979978989565, 6.817565369559781, 7.173186268412274, + 7.5276299008713385, 7.8819549713396, 8.23552844690755, 8.5910646070265, 8.944975908412047, + 9.298853076409706, 9.653212513775344, 10.008600171761918, 10.361727836017593, 10.716837723299525, + 11.071882007306126, 11.424881636631067, 11.780317312140152, 12.133538908370218, 12.844477175745682, + 13.55509444857832, 14.267171728403014, 14.979548374704095, 15.693726948923647, 16.40823996531185, + 17.123851640967086, 18.923244018630278, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Na22_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 4.342942647204277e-07, 2.605759074128604e-06, 1.3028639028478182e-05, 4.559852671908958e-05, 0.00011984873864003523, + 0.0002626687122755098, 0.002992810584370353, 0.010836979076306525, 0.02428653620880802, 0.04242704733870039, + 0.06402310268617777, 0.0879676561420024, 0.11338308526345185, 0.13961150376071624, 0.19275584832811388, + 0.2451455832343637, 0.2958922043442712, 0.3448263511644293, 0.39212883410565064, 0.48287358360875376, + 0.5717088318086876, 0.6627578316815741, 0.756636108245848, 0.8561244442423004, 0.9633155113861113, + 1.0791812460476249, 1.2013971243204515, 1.3283796034387378, 1.4638929889859074, 1.8215135284047732, + 2.1931245983544616, 2.5705429398818973, 2.9474337218870508, 3.322219294733919, 3.6954816764901977, + 4.068185861746161, 4.4361626470407565, 4.804820678721162, 5.173186268412274, 5.540329474790874, + 5.907411360774586, 6.27415784926368, 6.642464520242122, 7.008600171761918, 7.378397900948138, + 7.746634198937579, 8.113943352306837, 8.482873583608754, 8.851258348719075, 9.220108088040055, + 9.588831725594208, 9.957607287060096, 10.32633586092875, 10.695481676490198, 11.064457989226918, + 11.4345689040342, 11.80413943233535, 12.173186268412275, 12.544068044350276, 13.285557309007775, + 14.02938377768521, 14.773054693364262, 15.518513939877888, 16.264817823009537, 17.012837224705173, + 17.76492298464989, 19.64933485871214, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Na23_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 1.737174453219938e-06, + 2.3885539658322847e-05, 0.00013113713282427166, 0.0004423207528904243, 0.0010999766245234138, 0.002232173197636284, + 0.003929471989446119, 0.021128907257497758, 0.0479649055541949, 0.07726249885377773, 0.10525805048344758, + 0.13079227003361293, 0.15390201926318714, 0.17503899265296466, 0.1947232524871551, 0.23147162936712468, + 0.26668504599022796, 0.3016913566252569, 0.33713446730536967, 0.37335950050705796, 0.4487063199050799, + 0.5314789170422551, 0.6211762817750351, 0.7218106152125465, 0.8344207036815325, 0.9590413923210936, + 1.0934216851622351, 1.2405492482825997, 1.3926969532596658, 1.5514499979728753, 1.9628426812012425, + 2.383815365980431, 2.803457115648414, 3.220108088040055, 3.6344772701607315, 4.045322978786658, + 4.453318340047038, 4.857935264719429, 5.26245108973043, 5.664641975556125, 6.064457989226918, + 6.466867620354109, 6.867467487859051, 7.267171728403014, 7.666517980554881, 8.064457989226918, + 8.463892988985908, 8.861534410859038, 9.260071387985075, 9.656098202012831, 10.05307844348342, + 10.450249108319362, 10.846337112129806, 11.243038048686294, 11.638489256954637, 12.03342375548695, + 12.429752280002408, 12.826074802700827, 13.222716471147583, 13.6170003411209, 14.40823996531185, + 15.20139712432045, 15.993876914941211, 16.787460474518415, 17.582063362911708, 18.378397900948137, + 19.17609125905568, 21.173186268412273, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Mg22_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 4.342942647204277e-07, + 1.3028814913777444e-06, 0.0001411227754094858, 0.001568009102978072, 0.006621333592317272, 0.017164860499026567, + 0.03357733989361113, 0.05503565409031889, 0.08020425138057381, 0.10775825947457741, 0.16607827276194487, + 0.224935317299723, 0.2825131291235062, 0.33852302720374633, 0.39321990159455933, 0.49968708261840383, + 0.6063813651106049, 0.7134905430939426, 0.8247764624755457, 0.9420080530223133, 1.0681858617461617, + 1.2013971243204515, 1.3424226808222062, 1.4913616938342726, 1.6483600109809315, 2.0569048513364727, + 2.4785664955938436, 2.8987251815894934, 3.3138672203691533, 3.7234556720351857, 4.127104798364807, + 4.5276299008713385, 4.923244018630276, 5.315970345456917, 5.707570176097937, 6.096910013008056, + 6.48572142648158, 6.872156272748293, 7.2576785748691846, 7.643452676486188, 8.02938377768521, + 8.411619705963231, 8.79448804665917, 9.176091259055681, 9.558708570533165, 9.940516484932568, + 10.32221929473392, 10.702430536445526, 11.08278537031645, 11.463892988985908, 11.84323277809801, + 12.222716471147583, 12.603144372620182, 12.982723387668546, 13.361727836017593, 14.12057393120585, + 14.880241775895481, 15.639486489268586, 16.399673721481037, 17.161368002234976, 17.92272545799326, + 18.685741738602264, 20.59659709562646, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Mg24_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 4.342942647204277e-07, 5.471765757979972e-05, 0.0007714899373308072, 0.0037633124724497638, 0.010764115210255058, + 0.022625058328435314, 0.039160607597355665, 0.05951911533271758, 0.08262238957783377, 0.13324118689139802, + 0.185518640557017, 0.2370005304649223, 0.2870228837145503, 0.3357157930198095, 0.43136376415898736, + 0.5263392773898441, 0.6253124509616739, 0.7307822756663892, 0.8463371121298052, 0.974971994298069, + 1.1172712956557642, 1.2741578492636798, 1.4424797690644486, 1.6232492903979006, 2.103803720955957, + 2.598790506763115, 3.089905111439398, 3.5774917998372255, 4.05307844348342, 4.52244423350632, + 4.984527313343793, 5.440909082065218, 5.894869656745253, 6.344392273685111, 6.791690649020118, + 7.235528446907549, 7.678518379040114, 8.12057393120585, 8.558708570533165, 8.99563519459755, + 9.431363764158988, 9.866287339084195, 10.301029995663981, 10.732393759822969, 11.164352855784438, + 11.594392550375426, 12.02530586526477, 12.453318340047037, 12.881384656770573, 13.3096301674259, + 13.736396502276643, 14.161368002234974, 14.588831725594208, 15.012837224705173, 15.86569605991607, + 16.715167357848458, 17.56466606425209, 18.413299764081252, 19.26245108973043, 20.113943352306837, + 20.96284268120124, 23.0899051114394, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Al27_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 8.685880952436748e-07, 3.4743419578801875e-06, + 1.0422942490878872e-05, 0.00032429686817590634, 0.0018833542475028369, 0.005477808032249925, 0.011239204769804157, + 0.018904286378932662, 0.028126564553716336, 0.03862016194970278, 0.05018673657450416, 0.07608019569340023, + 0.10530099179798433, 0.13774106877747655, 0.1734986149135784, 0.2127888058397363, 0.30319605742048883, + 0.4099331233312945, 0.5352941200427705, 0.6794278966121189, 0.8394780473741984, 1.0128372247051722, + 1.1958996524092338, 1.3873898263387294, 1.5843312243675307, 1.783903579272735, 2.287801729930226, + 2.7944880466591697, 3.296665190261531, 3.7944880466591697, 4.2878017299302265, 4.779596491257824, + 5.269512944217916, 5.7558748556724915, 6.2405492482825995, 6.725094521081469, 7.209515014542631, + 7.691081492122969, 8.173186268412275, 8.653212513775344, 9.133538908370218, 9.611723308007342, + 10.089905111439398, 10.568201724066995, 11.045322978786658, 11.521138083704036, 11.997386384397313, + 12.472756449317213, 12.947923619831727, 13.423245873936809, 13.89707700320942, 14.371067862271737, + 14.845098040014257, 15.320146286111054, 15.79309160017658, 16.267171728403014, 17.2148438480477, + 18.161368002234976, 19.110589710299248, 20.060697840353612, 21.012837224705173, 21.96284268120124, + 22.915927211697117, 25.305351369446623, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Si28_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 2.1714669808675565e-06, 7.121845527843468e-05, 0.0005624812393818786, 0.002223099674110693, + 0.0059171580771474625, 0.01228240711882553, 0.021577095617092278, 0.03370716078346824, 0.06502557053071237, + 0.10275227725738852, 0.14387160800291654, 0.18660350439861528, 0.2302807913268337, 0.3222192947339193, + 0.42324587393680785, 0.541579243946581, 0.6839471307515121, 0.8518696007297664, 1.0413926851582251, + 1.250420002308894, 1.4727564493172123, 1.7024305364455252, 1.9375178920173466, 2.5314789170422554, + 3.12057393120585, 3.7024305364455254, 4.271841606536499, 4.834420703681532, 5.389166084364533, + 5.937517892017347, 6.481442628502305, 7.021189299069938, 7.557507201905658, 8.089905111439398, + 8.622214022966295, 9.14921911265538, 9.675778341674086, 10.198657086954423, 10.721810615212547, + 11.2405492482826, 11.75966784468963, 12.276461804173245, 12.791690649020119, 13.305351369446624, + 13.818225893613956, 14.330413773349191, 14.840733234611807, 15.350248018334163, 15.859138297294532, + 16.367355921026018, 16.8750612633917, 17.38201704257487, 17.88874096068289, 18.90036712865647, + 19.911157608739977, 20.92116605063774, 21.9304395947667, 22.93951925261862, 23.948901760970212, + 24.958563883221967, 27.48572142648158, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real P31_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 4.342942647204277e-07, 4.820401221806151e-05, 0.0005624812393818786, 0.002468018295084159, 0.006670091319158333, + 0.013688955408210907, 0.023674199668938998, 0.0365510506801258, 0.05215275629691827, 0.09085986215557587, + 0.13887811232360858, 0.19608052467040615, 0.2628929908553992, 0.33982852740425823, 0.5237464668115644, + 0.7419390777291989, 0.9827233876685454, 1.235528446907549, 1.4899584794248346, 1.7442929831226763, + 1.9960736544852753, 2.24551266781415, 2.4913616938342726, 2.733999286538387, 3.330413773349191, + 3.9132839017604186, 4.48572142648158, 5.049218022670182, 5.608526033577194, 6.164352855784437, + 6.714329759745233, 7.264817823009537, 7.812913356642856, 8.359835482339887, 8.90687353472207, + 9.453318340047037, 9.997823080745725, 10.54282542695918, 11.086359830674748, 11.629409599102718, + 12.170261715394957, 12.712649701627212, 13.255272505103306, 13.79448804665917, 14.334453751150932, + 14.874481817699467, 15.414973347970818, 15.953276336667304, 16.492760389026838, 17.02938377768521, + 17.570542939881896, 18.10720996964787, 18.64738297011462, 19.187520720836464, 20.264817823009537, + 21.342422680822207, 22.42160392686983, 23.503790683057183, 24.5854607295085, 25.66931688056611, + 26.75511226639507, 29.477121254719663, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real S32_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 5.211502513843472e-06, 6.948155872801058e-05, 0.0003893875360542875, + 0.001336870159627728, 0.003378232401258555, 0.00696337755678715, 0.012456734172197398, 0.030114157908450765, + 0.05748428585387722, 0.0950053699501746, 0.14295136988131382, 0.20165707691270435, 0.3521825181113625, + 0.5502283530550941, 0.787460474518415, 1.0569048513364727, 1.3404441148401183, 1.631443769013172, + 1.92272545799326, 2.2121876044039577, 2.4955443375464483, 2.7737864449811935, 3.44870631990508, + 4.096910013008056, 4.726727209026572, 5.3404441148401185, 5.944975908412048, 6.541579243946581, + 7.133538908370218, 7.720985744153739, 8.305351369446624, 8.888740960682894, 9.469822015978163, + 10.049218022670182, 10.628388930050312, 11.20682587603185, 11.78175537465247, 12.356025857193123, + 12.9304395947667, 13.502427119984432, 14.075546961392531, 14.645422269349092, 15.214843848047698, + 15.783903579272735, 16.352182518111363, 16.920123326290724, 17.487138375477187, 18.053078443483418, + 18.621176281775035, 19.187520720836464, 19.753583058892907, 20.318063334962762, 21.450249108319362, + 22.580924975675618, 23.71264970162721, 24.84385542262316, 25.976808337338067, 27.110589710299248, + 28.24551266781415, 31.08635983067475, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Cl35_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 1.8239985202970884e-05, 0.00020710907627919203, 0.0009431313908907785, 0.002698987769012708, + 0.005906875936599731, 0.010907713111778477, 0.017957319425972694, 0.02725376696259042, 0.0532486689285615, + 0.09021853774459236, 0.13964204799692437, 0.20296975189964023, 0.28111453407611076, 0.48000694295715063, + 0.7234556720351858, 0.9934362304976118, 1.2741578492636798, 1.5587085705331658, 1.841984804590114, + 2.123851640967086, 2.401400540781544, 2.678518379040114, 2.951823035315912, 3.6263403673750423, + 4.2878017299302265, 4.942008053022313, 5.588831725594208, 6.230448921378274, 6.870988813760575, + 7.509202522331103, 8.146128035678238, 8.781036938621131, 9.414973347970818, 10.049218022670182, + 10.681241237375588, 11.313867220369154, 11.943988875073773, 12.574031267727719, 13.204119982655925, + 13.831229693867064, 14.457881896733992, 15.086359830674748, 15.710963118995275, 16.33645973384853, + 16.96189547366785, 17.586587304671756, 18.212187604403958, 18.835056101720117, 19.45939248775923, + 20.08278537031645, 20.705863712283918, 21.330413773349193, 21.95375969173323, 23.20139712432045, + 24.450249108319362, 25.699837725867248, 26.950364854376122, 28.20139712432045, 29.456366033129044, + 30.71264970162721, 33.862131379313034, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ar36_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 4.342942647204277e-07, 2.3451268844214655e-05, 0.00023141729162330256, 0.0010622869460975197, + 0.0031540913067783544, 0.007135153007315867, 0.013474284663478431, 0.02245187936733961, 0.048771089883939175, + 0.08643600351808535, 0.13560900039779808, 0.1965840257248699, 0.2696980636423851, 0.45331834004703764, + 0.6848453616444125, 0.9585638832219674, 1.2624510897304295, 1.5809249756756194, 1.9057958803678685, + 2.230448921378274, 2.550228353055094, 2.8662873390841948, 3.1760912590556813, 3.929418925714293, + 4.657055852857104, 5.365487984890899, 6.060697840353612, 6.746634198937579, 7.426511261364575, + 8.100370545117563, 8.773054693364262, 9.442479769064448, 10.11058971029925, 10.77451696572855, + 11.437750562820389, 12.100370545117563, 12.758911892397974, 13.41664050733828, 14.071882007306126, + 14.727541257028557, 15.38201704257487, 16.03342375548695, 16.684845361644413, 17.33445375115093, + 17.983626287124533, 18.63144376901317, 19.27875360095283, 19.925827574624744, 20.57170883180869, + 21.217483944213907, 21.863322860120455, 22.50785587169583, 23.152288344383056, 24.440909082065218, + 25.72916478969277, 27.01703333929878, 28.305351369446623, 29.595496221825574, 30.885926339801433, + 32.17897694729317, 35.41329976408125, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real K39_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 3.908632748276029e-06, 3.4307908925770636e-05, + 0.000162829902014903, 0.0005394928156396339, 0.0014074368520356395, 0.0031075244141559894, 0.010846721573671135, + 0.028297088943748085, 0.060956829214686044, 0.11414775667614005, 0.1912997955319451, 0.4132997640812518, + 0.7015679850559274, 1.0170333392987805, 1.3384564936046048, 1.6599162000698502, 1.9772662124272926, + 2.292256071356476, 2.6020599913279625, 2.910090545594068, 3.214843848047698, 3.9684829485539352, + 4.710963118995275, 5.444044795918076, 6.173186268412274, 6.897627091290442, 7.619093330626743, + 8.338456493604605, 9.056904851336473, 9.771587480881255, 10.48572142648158, 11.198657086954423, + 11.907948521612273, 12.6170003411209, 13.324282455297693, 14.02938377768521, 14.733999286538387, + 15.437750562820389, 16.139879086401237, 16.8394780473742, 17.539076098792776, 18.238046103128795, + 18.936513742478894, 19.633468455579585, 20.330413773349193, 21.02530586526477, 21.723455672035186, + 22.418301291319747, 23.113943352306837, 23.809559714635267, 24.505149978319906, 25.89542254603941, + 27.285557309007775, 28.678518379040113, 30.071882007306126, 31.465382851448418, 32.860936620700095, + 34.25767857486918, 37.761927838420526, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ca40_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 3.4743419578801875e-06, + 2.605688721537332e-05, 0.00012419046343446514, 0.0004254001802063995, 0.0011532564515138494, 0.005324252203746658, + 0.016451245325404366, 0.03938040551055626, 0.0790998081972309, 0.13972800117379408, 0.33041377334919086, + 0.6063813651106049, 0.9385197251764918, 1.2988530764097066, 1.6693168805661123, 2.037426497940624, + 2.403120521175818, 2.761927838420529, 3.113943352306837, 3.459392487759231, 4.301029995663981, + 5.117271295655764, 5.9148718175400505, 6.701567985055927, 7.478566495593843, 8.250420002308894, + 9.01703333929878, 9.781036938621131, 10.540329474790873, 11.296665190261532, 12.049218022670182, + 12.801403710017356, 13.549003262025789, 14.294466226161592, 15.037426497940624, 15.779596491257825, + 16.518513939877888, 17.255272505103306, 17.99211148778695, 18.72591163229505, 19.45939248775923, + 20.19033169817029, 20.920645001406786, 21.650307523131936, 22.378397900948137, 23.10720996964787, + 23.832508912706235, 24.558708570533167, 25.285557309007775, 26.008600171761916, 27.45939248775923, + 28.907948521612273, 30.356025857193124, 31.804820678721164, 33.25285303097989, 34.704150516839796, + 36.15533603746506, 39.78816837114117, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Sc43_pf_array[npts_1] = { + 0.0, 1.737174453219938e-06, 3.213660262116793e-05, 0.0006088881229004689, 0.002639422351216832, + 0.006348788305828209, 0.011375876688411649, 0.017242084547645732, 0.02355944464942603, 0.03006796257543875, + 0.03661053325876141, 0.06810122175372876, 0.09804672309111767, 0.12848424511267922, 0.16058766813472455, + 0.1946644458530261, 0.23055748142930874, 0.2679262754358927, 0.3064134462100847, 0.3856843680943845, + 0.4672642331672854, 0.5514418243762168, 0.6393550853495756, 0.732465412501299, 0.9380190974762103, + 1.1760912590556813, 1.4456042032735976, 1.7371926427047373, 2.0453229787866576, 2.359835482339888, + 2.678518379040114, 3.0, 3.322219294733919, 3.6424645202421213, 4.439332693830263, + 5.230448921378274, 6.017033339298781, 6.8020892578817325, 7.585460729508501, 8.36735592102602, + 9.14921911265538, 9.929418925714293, 10.710117365111817, 11.489958479424836, 12.267171728403014, + 13.045322978786658, 13.822168079368018, 14.597695185925513, 15.371067862271737, 16.146128035678238, + 16.916453948549925, 17.687528961214635, 18.457881896733994, 19.227886704613674, 19.99694924849538, + 20.76492298464989, 21.532754378992497, 22.30102999566398, 23.068185861746162, 23.835690571492425, + 24.602059991327963, 25.369215857410143, 26.136720567156406, 26.903632516084237, 28.439332693830263, + 29.97497199429807, 31.511883360978874, 33.05307844348342, 34.59217675739587, 36.13672056715641, + 37.682145076373835, 41.55870857053316, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ti44_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 4.342942647204277e-07, 1.737174453219938e-06, + 7.382943437485088e-06, 0.0004987179011085028, 0.004043078170724821, 0.014135215027787822, 0.032426549056877405, + 0.058561151016688254, 0.09131586357749837, 0.1294359425571275, 0.17190802974603506, 0.2667731684215763, + 0.37035022176288673, 0.47788465213962983, 0.5860935485551829, 0.693748838923791, 0.9116901587538612, + 1.1522883443830565, 1.4409090820652177, 1.7788744720027396, 2.1522883443830567, 2.5415792439465807, + 2.9334872878487053, 3.322219294733919, 3.7041505168397992, 4.079181246047625, 4.996073654485276, + 5.885361220031512, 6.757396028793024, 7.619093330626743, 8.472756449317213, 9.32221929473392, + 10.167317334748176, 11.008600171761918, 11.85003325768977, 12.687528961214634, 13.52244423350632, + 14.354108439147401, 15.1846914308176, 16.012837224705173, 16.836956737059552, 17.65991620006985, + 18.481442628502304, 19.298853076409706, 20.117271295655765, 20.9329808219232, 21.746634198937578, + 22.559906625036113, 23.371067862271737, 24.181843587944773, 24.991226075692495, 25.799340549453582, + 26.60745502321467, 27.414973347970818, 28.220108088040057, 29.02530586526477, 30.63748972951251, + 32.247973266361804, 33.8561244442423, 35.46538285144842, 37.07554696139253, 38.68484536164441, + 40.29666519026153, 44.33041377334919, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real V47_pf_array[npts_1] = { + 2.518834949526704e-05, 0.0007584840322833456, 0.004226764680268442, 0.024475815916759104, 0.05998274311239668, + 0.1028026649155908, 0.14672973694476377, 0.18852098344730983, 0.22688178294786615, 0.2615226538586488, + 0.29260868165003595, 0.40714096450521564, 0.48021742410342627, 0.5329079468954852, 0.5750746363992424, + 0.6115960803783954, 0.6450760714077263, 0.6770396273057074, 0.708482088001612, 0.7725618227871047, + 0.8417322779915452, 0.9194240819892174, 1.0083997539725875, 1.110602503281611, 1.3560258571931227, + 1.651278013998144, 1.9813655090785445, 2.330413773349191, 2.6884198220027105, 3.0492180226701815, + 3.41161970596323, 3.7708520116421442, 4.127104798364807, 4.484299839346786, 5.365487984890899, + 6.238046103128795, 7.103803720955957, 7.967547976218862, 8.830588668685145, 9.69460519893357, + 10.557507201905658, 11.421603926869832, 12.285557309007775, 13.146128035678238, 14.008600171761918, + 14.869231719730976, 15.728353782021228, 16.586587304671756, 17.442479769064448, 18.298853076409706, + 19.152288344383056, 20.00432137378264, 20.85793526471943, 21.70926996097583, 22.559906625036113, + 23.409933123331296, 24.260071387985075, 25.10720996964787, 25.956648579205204, 26.804820678721164, + 27.652246341003323, 28.50105926221775, 29.34830486304816, 30.195899652409235, 31.891537457672566, + 33.588831725594204, 35.28555730900777, 36.985875357308394, 38.68752896121463, 40.39093510710338, + 42.096910013008056, 46.372912002970104, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Cr48_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 8.685880952436748e-07, 8.251516766996927e-06, 3.951899976600419e-05, 0.00013330794422173613, + 0.00035120219371925006, 0.006401856055765156, 0.02685304570895992, 0.0621531182513584, 0.10696594975266843, + 0.15598699109465683, 0.205815844445829, 0.25471214514215257, 0.30198352738731143, 0.39152612205819926, + 0.4764059620390526, 0.5602400543128645, 0.6474755901642433, 0.7433846322638775, 0.983175072037813, + 1.3096301674258988, 1.7067177823367587, 2.1398790864012365, 2.5774917998372255, 3.012837224705172, + 3.437750562820388, 3.854913022307856, 4.264817823009537, 4.666517980554881, 5.648360010980932, + 6.606381365110605, 7.550228353055094, 8.484299839346786, 9.414973347970818, 10.340444114840118, + 11.264817823009537, 12.1846914308176, 13.103803720955957, 14.021189299069938, 14.935003151453655, + 15.846337112129806, 16.75511226639507, 17.66181268553726, 18.565847818673518, 19.468347330412158, + 20.369215857410143, 21.267171728403014, 22.161368002234976, 23.056904851336473, 23.94939000664491, + 24.840733234611807, 25.73078227566639, 26.619093330626743, 27.50785587169583, 28.394451680826215, + 29.281033367247726, 30.164352855784436, 31.049218022670182, 31.934498451243567, 33.70156798505593, + 35.46834733041216, 37.23299611039216, 38.99913054128737, 40.764922984649886, 42.5327543789925, + 44.30102999566398, 48.727541257028555, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Mn51_pf_array[npts_1] = { + 0.0, 0.0, 4.342942647204277e-07, 6.0362737871404116e-05, 0.0005954436481690332, + 0.002352703452491265, 0.0058636025937444025, 0.011219737158250307, 0.018191443590229183, 0.02640577650122878, + 0.035473365577059296, 0.08393991903492294, 0.12694077261184436, 0.1626799839654217, 0.19356340377635362, + 0.22185561141496235, 0.24912127857304392, 0.27638918590325057, 0.30436276263857276, 0.36442247019537943, + 0.4326074417788097, 0.5117005179251304, 0.6041057952026397, 0.7115562776994953, 0.9717395908877783, + 1.287801729930226, 1.640481436970422, 2.0170333392987803, 2.403120521175818, 2.7944880466591697, + 3.1903316981702914, 3.5854607295085006, 3.9827233876685453, 4.380211241711606, 5.372912002970106, + 6.363611979892144, 7.354108439147401, 8.342422680822207, 9.328379603438737, 10.311753861055754, + 11.292256071356476, 12.269512944217917, 13.24551266781415, 14.214843848047698, 15.1846914308176, + 16.14921911265538, 17.110589710299248, 18.071882007306126, 19.02938377768521, 19.985426474083003, + 20.93851972517649, 21.88986172125819, 22.8394780473742, 23.787460474518415, 24.73399928653839, + 25.67942789661212, 26.6232492903979, 27.56702636615906, 28.509202522331105, 29.45178643552429, + 30.392696953259666, 31.33445375115093, 32.27415784926368, 33.2148438480477, 35.093421685162234, + 36.97451169273733, 38.8555191556678, 40.737192642704734, 42.620136054973756, 44.505149978319906, + 46.392696953259666, 51.12057393120585, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Fe52_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 1.737174453219938e-06, 9.554373504133797e-06, 3.778197643341552e-05, + 0.00011333607006293107, 0.0030242952161453874, 0.015422212189991185, 0.040215337130588114, 0.07478865660777632, + 0.11488541698288197, 0.15714990338033966, 0.19960737134331175, 0.24132628928072955, 0.3217032118192907, + 0.39933965344635436, 0.4778337814344742, 0.5623989859221217, 0.6594581913549248, 0.9153998352122699, + 1.2695129442179163, 1.6910814921229684, 2.143014800254095, 2.6009728956867484, 3.0569048513364727, + 3.503790683057181, 3.946452265013073, 4.383815365980431, 4.818225893613955, 5.888740960682893, + 6.944482672150169, 7.9898945637187735, 9.02938377768521, 10.060697840353612, 11.086359830674748, + 12.11058971029925, 13.127104798364808, 14.139879086401237, 15.14921911265538, 16.152288344383056, + 17.152288344383056, 18.14921911265538, 19.143014800254097, 20.133538908370216, 21.12057393120585, + 22.103803720955955, 23.08635983067475, 24.06445798922692, 25.041392685158225, 26.01703333929878, + 26.989449817666692, 27.960946195733833, 28.930949031167522, 29.899273187317604, 30.8668778143375, + 31.833784374656478, 32.79934054945358, 33.76417613239033, 34.72835378202123, 36.655138434811384, + 38.58092497567562, 40.505149978319906, 42.42975228000241, 44.3541084391474, 46.28103336724773, + 48.20682587603185, 53.02938377768521, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Co55_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 8.685880952436748e-07, 1.4331481434642371e-05, 9.336327741651444e-05, + 0.0003811432576949256, 0.0011510907323373071, 0.0028275866787247843, 0.0059861278100218065, 0.019727612600003868, + 0.049238961363648255, 0.10167663281566902, 0.18228879723157643, 0.29243817096179087, 0.5865873046717549, + 0.9449759084120479, 1.3324384599156054, 1.7363965022766426, 2.14921911265538, 2.56702636615906, + 2.991226075692495, 3.419955748489758, 3.851869600729766, 4.2878017299302265, 5.382017042574868, + 6.482873583608754, 7.5820633629117085, 8.677606952720494, 9.767155866082181, 10.85003325768977, + 11.927370363039024, 12.998695158311655, 14.064457989226918, 15.127104798364808, 16.181843587944773, + 17.232996110392154, 18.281033367247726, 19.32428245529769, 20.3654879848909, 21.401400540781545, + 22.436162647040756, 23.468347330412158, 24.4983105537896, 25.525044807036846, 26.550228353055093, + 27.57403126772772, 28.59659709562646, 29.6170003411209, 30.636487896353366, 31.65609820201283, + 32.673941998634085, 33.69108149212297, 34.70757017609794, 35.72427586960079, 37.755874855672495, + 39.786751422145564, 41.818225893613956, 43.850033257689766, 45.88309335857569, 47.91750550955255, + 49.954242509439325, 55.056904851336476, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ni56_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 4.342942647204277e-07, 7.817230319428648e-06, 6.42708273977769e-05, + 0.0002904458650804842, 0.0009123622824012838, 0.002249887625802649, 0.004694448751887299, 0.014735532704563183, + 0.03529042138996706, 0.07190703372466718, 0.13162956968664008, 0.22190042758492473, 0.5092025223311029, + 0.9132839017604184, 1.374748346010104, 1.8555191556678001, 2.3404441148401185, 2.8221680793680175, + 3.303196057420489, 3.783903579272735, 4.26245108973043, 4.7419390777291985, 5.9344984512435675, + 7.117271295655764, 8.292256071356476, 9.456366033129044, 10.608526033577194, 11.750508394851346, + 12.88309335857569, 14.008600171761918, 15.123851640967086, 16.232996110392154, 17.33645973384853, + 18.432969290874407, 19.525044807036846, 20.612783856719737, 21.695481676490196, 22.773786444981194, + 23.8481891169914, 24.919078092376076, 25.987219229908003, 27.05307844348342, 28.113943352306837, + 29.17609125905568, 30.232996110392154, 31.287801729930226, 32.3424226808222, 33.39619934709574, + 34.44715803134222, 35.49692964807321, 36.54530711646582, 37.594392550375424, 39.68752896121463, + 41.77959649125783, 43.86981820797933, 45.959518376973, 48.04921802267018, 50.13987908640124, + 52.230448921378276, 57.462397997898954, + }; + // interpolation routine @@ -86,6 +749,134 @@ void get_partition_function(const int inuc, [[maybe_unused]] const tf_t& tfactor switch (inuc) { + case O14: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::O14_pf_array, pf, dpf_dT); + break; + + case O15: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::O15_pf_array, pf, dpf_dT); + break; + + case O16: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::O16_pf_array, pf, dpf_dT); + break; + + case O17: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::O17_pf_array, pf, dpf_dT); + break; + + case O18: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::O18_pf_array, pf, dpf_dT); + break; + + case F17: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::F17_pf_array, pf, dpf_dT); + break; + + case F18: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::F18_pf_array, pf, dpf_dT); + break; + + case F19: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::F19_pf_array, pf, dpf_dT); + break; + + case Ne18: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ne18_pf_array, pf, dpf_dT); + break; + + case Ne19: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ne19_pf_array, pf, dpf_dT); + break; + + case Ne20: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ne20_pf_array, pf, dpf_dT); + break; + + case Ne21: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ne21_pf_array, pf, dpf_dT); + break; + + case Na22: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Na22_pf_array, pf, dpf_dT); + break; + + case Na23: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Na23_pf_array, pf, dpf_dT); + break; + + case Mg22: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Mg22_pf_array, pf, dpf_dT); + break; + + case Mg24: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Mg24_pf_array, pf, dpf_dT); + break; + + case Al27: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Al27_pf_array, pf, dpf_dT); + break; + + case Si28: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Si28_pf_array, pf, dpf_dT); + break; + + case P31: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::P31_pf_array, pf, dpf_dT); + break; + + case S32: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::S32_pf_array, pf, dpf_dT); + break; + + case Cl35: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Cl35_pf_array, pf, dpf_dT); + break; + + case Ar36: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ar36_pf_array, pf, dpf_dT); + break; + + case K39: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::K39_pf_array, pf, dpf_dT); + break; + + case Ca40: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ca40_pf_array, pf, dpf_dT); + break; + + case Sc43: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Sc43_pf_array, pf, dpf_dT); + break; + + case Ti44: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ti44_pf_array, pf, dpf_dT); + break; + + case V47: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::V47_pf_array, pf, dpf_dT); + break; + + case Cr48: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Cr48_pf_array, pf, dpf_dT); + break; + + case Mn51: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Mn51_pf_array, pf, dpf_dT); + break; + + case Fe52: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Fe52_pf_array, pf, dpf_dT); + break; + + case Co55: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Co55_pf_array, pf, dpf_dT); + break; + + case Ni56: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ni56_pf_array, pf, dpf_dT); + break; + default: diff --git a/networks/CNO_He_burn/reaclib_rates.H b/networks/CNO_He_burn/reaclib_rates.H index f4078948a9..28529b93cb 100644 --- a/networks/CNO_He_burn/reaclib_rates.H +++ b/networks/CNO_He_burn/reaclib_rates.H @@ -273,9 +273,9 @@ void rate_Mg22_to_Na22_weak_wc12(const tf_t& tfactors, amrex::Real& rate, amrex: template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_N13_to_p_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // N13 --> p + C12 + // C12 + p --> N13 rate = 0.0; drate_dT = 0.0; @@ -284,13 +284,13 @@ void rate_N13_to_p_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ls09r - ln_set_rate = 40.4354 + -26.326 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.326 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -301,13 +301,13 @@ void rate_N13_to_p_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // ls09n - ln_set_rate = 40.0408 + -22.5475 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.5475 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -322,9 +322,9 @@ void rate_N13_to_p_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_N14_to_p_C13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_C12_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // N14 --> p + C13 + // C12 + He4 --> O16 rate = 0.0; drate_dT = 0.0; @@ -333,13 +333,30 @@ void rate_N14_to_p_C13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nacrr - ln_set_rate = 37.1528 + -93.4071 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.4071 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923; + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -350,11 +367,28 @@ void rate_N14_to_p_C13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_C13_to_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // C13 + p --> N14 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + // nacrr - ln_set_rate = 38.3716 + -101.18 * tfactors.T9i; + ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.18 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -366,12 +400,29 @@ void rate_N14_to_p_C13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } // nacrn - ln_set_rate = 41.7046 + -87.6256 * tfactors.T9i + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 87.6256 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nacrr + ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -386,9 +437,9 @@ void rate_N14_to_p_C13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O14_to_p_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_N13_to_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O14 --> p + N13 + // N13 + p --> O14 rate = 0.0; drate_dT = 0.0; @@ -398,10 +449,12 @@ void rate_O14_to_p_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real set_rate{0.0}; // lg06r - ln_set_rate = 35.2849 + -59.8313 * tfactors.T9i + 1.57122 * tfactors.T913i; + ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.8313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i; + dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -413,12 +466,12 @@ void rate_O14_to_p_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } // lg06n - ln_set_rate = 42.4234 + -53.7053 * tfactors.T9i + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 53.7053 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -433,9 +486,9 @@ void rate_O14_to_p_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O15_to_p_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_N14_to_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O15 --> p + N14 + // N14 + p --> O15 rate = 0.0; drate_dT = 0.0; @@ -444,13 +497,13 @@ void rate_O15_to_p_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // im05r - ln_set_rate = 30.7435 + -89.5667 * tfactors.T9i - + 1.5682 * tfactors.lnT9; + // im05n + ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 89.5667 * tfactors.T9i * tfactors.T9i - + 1.5682 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -462,10 +515,12 @@ void rate_O15_to_p_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } // im05r - ln_set_rate = 31.6622 + -87.6737 * tfactors.T9i; + ln_set_rate = 6.73578 + -4.891 * tfactors.T9i + + 0.0682 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 87.6737 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i + + 0.0682 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -476,13 +531,13 @@ void rate_O15_to_p_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // im05n - ln_set_rate = 44.1246 + -84.6757 * tfactors.T9i + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 1.83333 * tfactors.lnT9; + // im05r + ln_set_rate = 7.65444 + -2.998 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.6757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 1.83333 * tfactors.T9i; + dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -494,12 +549,12 @@ void rate_O15_to_p_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } // im05n - ln_set_rate = 41.0177 + -84.6757 * tfactors.T9i + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.6757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -514,9 +569,9 @@ void rate_O15_to_p_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_to_p_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O16 --> p + N15 + // N14 + He4 --> F18 rate = 0.0; drate_dT = 0.0; @@ -525,13 +580,13 @@ void rate_O16_to_p_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // li10r - ln_set_rate = 38.8465 + -150.962 * tfactors.T9i - + 0.0459037 * tfactors.T9; + // il10n + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 150.962 * tfactors.T9i * tfactors.T9i - + 0.0459037; + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -542,11 +597,13 @@ void rate_O16_to_p_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // li10r - ln_set_rate = 30.8927 + -143.656 * tfactors.T9i; + // il10r + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 143.656 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -557,13 +614,13 @@ void rate_O16_to_p_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // li10n - ln_set_rate = 44.3197 + -140.732 * tfactors.T9i + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10r + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 140.732 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -578,9 +635,9 @@ void rate_O16_to_p_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_N15_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O16 --> He4 + C12 + // N15 + p --> O16 rate = 0.0; drate_dT = 0.0; @@ -589,13 +646,13 @@ void rate_O16_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nac2 - ln_set_rate = 279.295 + -84.9515 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + // li10n + ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.9515 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -606,13 +663,13 @@ void rate_O16_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nac2 - ln_set_rate = 94.3131 + -84.503 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + // li10r + ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i + + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.503 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i + + 0.0459037 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -623,28 +680,13 @@ void rate_O16_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_F17_to_p_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // F17 --> p + O16 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // ia08n - ln_set_rate = 40.9135 + -6.96583 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // li10r + ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.96583 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -659,9 +701,9 @@ void rate_F17_to_p_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_F18_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_N15_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F18 --> p + O17 + // N15 + He4 --> F19 rate = 0.0; drate_dT = 0.0; @@ -671,12 +713,29 @@ void rate_F18_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real set_rate{0.0}; // il10r - ln_set_rate = 33.7037 + -71.2889 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953; + ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 71.2889 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923; + dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10n + ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -688,10 +747,12 @@ void rate_F18_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } // il10r - ln_set_rate = 11.2362 + -65.8069 * tfactors.T9i; + ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.8069 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -702,13 +763,13 @@ void rate_F18_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 40.2061 + -65.0606 * tfactors.T9i + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10r + ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.0606 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -723,9 +784,9 @@ void rate_F18_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_F18_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_O14_to_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F18 --> He4 + N14 + // O14 + He4 --> Ne18 rate = 0.0; drate_dT = 0.0; @@ -734,13 +795,13 @@ void rate_F18_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 46.249 + -51.2292 * tfactors.T9i + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // wh87r + ln_set_rate = -4.69948 + -12.159 * tfactors.T9i + + 5.0 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 51.2292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i + + 5.0 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -751,11 +812,13 @@ void rate_F18_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 38.6146 + -62.1948 * tfactors.T9i + -5.6227 * tfactors.T913i; + // wh87r + ln_set_rate = 3.52636 + -22.61 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 62.1948 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; + dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -766,11 +829,30 @@ void rate_F18_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 24.9119 + -56.3896 * tfactors.T9i; + // wh87r + ln_set_rate = -2.15417 + -11.73 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 56.3896 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // wh87n + ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -785,9 +867,9 @@ void rate_F18_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_F19_to_p_O18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_O15_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F19 --> p + O18 + // O15 + He4 --> Ne19 rate = 0.0; drate_dT = 0.0; @@ -796,30 +878,13 @@ void rate_F19_to_p_O18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 42.8485 + -92.7757 * tfactors.T9i + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.7757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = 30.2003 + -99.501 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953; + // dc11r + ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.501 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923; + dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -830,11 +895,13 @@ void rate_F19_to_p_O18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 28.008 + -94.4325 * tfactors.T9i; + // dc11r + ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.4325 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -845,11 +912,13 @@ void rate_F19_to_p_O18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -12.0764 + -93.0204 * tfactors.T9i; + // dc11n + ln_set_rate = 26.2914 + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.0204 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -864,9 +933,9 @@ void rate_F19_to_p_O18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_F19_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_O16_to_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F19 --> He4 + N15 + // O16 + p --> F17 rate = 0.0; drate_dT = 0.0; @@ -875,11 +944,13 @@ void rate_F19_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 15.3186 + -50.7554 * tfactors.T9i; + // ia08n + ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 50.7554 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -890,13 +961,28 @@ void rate_F19_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 50.1291 + -46.5774 * tfactors.T9i + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_O16_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // O16 + He4 --> Ne20 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.5774 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -907,13 +993,13 @@ void rate_F19_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -4.06142 + -50.7773 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 50.7773 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923; + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -924,11 +1010,13 @@ void rate_F19_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 28.2717 + -53.5621 * tfactors.T9i; + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 53.5621 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -943,9 +1031,9 @@ void rate_F19_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ne18_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_O17_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne18 --> p + F17 + // O17 + p --> F18 rate = 0.0; drate_dT = 0.0; @@ -954,13 +1042,13 @@ void rate_Ne18_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cb09 - ln_set_rate = 52.9895 + -50.492 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -5.86014 * tfactors.lnT9; + // il10n + ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 50.492 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -5.86014 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -971,13 +1059,30 @@ void rate_Ne18_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // cb09 - ln_set_rate = 17.5646 + -45.5647 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -0.63376 * tfactors.lnT9; + // il10r + ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10r + ln_set_rate = -13.077 + -0.746296 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 45.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -0.63376 * tfactors.T9i; + dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -992,9 +1097,9 @@ void rate_Ne18_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ne18_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_O17_to_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne18 --> He4 + O14 + // O17 + He4 --> Ne21 rate = 0.0; drate_dT = 0.0; @@ -1003,28 +1108,13 @@ void rate_Ne18_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // wh87r - ln_set_rate = 20.0156 + -71.5044 * tfactors.T9i - + 6.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 71.5044 * tfactors.T9i * tfactors.T9i - + 6.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // wh87r - ln_set_rate = 28.2415 + -81.9554 * tfactors.T9i; + // be13r + ln_set_rate = -25.0898 + -5.50926 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 + + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 82.2218 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 81.9554 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 5.50926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i + + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 82.2218 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1035,11 +1125,13 @@ void rate_Ne18_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // wh87r - ln_set_rate = 22.5609 + -71.0754 * tfactors.T9i; + // be13r + ln_set_rate = -117.134 + -13.6759 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 + + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -42.7753 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 71.0754 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 13.6759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i + + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -42.7753 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1050,13 +1142,13 @@ void rate_Ne18_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // wh87n - ln_set_rate = 51.158 + -59.3454 * tfactors.T9i + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // be13r + ln_set_rate = 2.14 + -5.99952 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 + + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 4.75778 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.3454 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 5.99952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i + + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 4.75778 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1071,9 +1163,9 @@ void rate_Ne18_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ne19_to_p_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_O18_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne19 --> p + F18 + // O18 + p --> F19 rate = 0.0; drate_dT = 0.0; @@ -1083,12 +1175,12 @@ void rate_Ne19_to_p_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -5.41887 + -74.7977 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953; + ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.7977 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923; + dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1100,12 +1192,12 @@ void rate_Ne19_to_p_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr } // il10n - ln_set_rate = 81.4385 + -74.3988 * tfactors.T9i + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate = 19.917 + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.3988 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1117,12 +1209,29 @@ void rate_Ne19_to_p_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr } // il10r - ln_set_rate = 18.1729 + -77.2902 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953; + ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.2902 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923; + dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10r + ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1137,9 +1246,9 @@ void rate_Ne19_to_p_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ne19_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_F17_to_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne19 --> He4 + O15 + // F17 + p --> Ne18 rate = 0.0; drate_dT = 0.0; @@ -1148,30 +1257,13 @@ void rate_Ne19_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // dc11n - ln_set_rate = 51.0289 + -40.9534 * tfactors.T9i + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.9534 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // dc11r - ln_set_rate = -7.51212 + -45.1578 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953; + // cb09 + ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 45.1578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923; + dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1182,11 +1274,13 @@ void rate_Ne19_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // dc11r - ln_set_rate = 24.6922 + -46.8378 * tfactors.T9i; + // cb09 + ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.8378 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1201,9 +1295,9 @@ void rate_Ne19_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ne20_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_F18_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne20 --> p + F19 + // F18 + p --> Ne19 rate = 0.0; drate_dT = 0.0; @@ -1212,13 +1306,13 @@ void rate_Ne20_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nacrr - ln_set_rate = 18.691 + -156.781 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953; + // il10n + ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 156.781 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923; + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1229,13 +1323,13 @@ void rate_Ne20_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrr - ln_set_rate = 36.7036 + -150.75 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953; + // il10r + ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 150.75 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923; + dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1246,13 +1340,13 @@ void rate_Ne20_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrn - ln_set_rate = 42.6027 + -149.037 * tfactors.T9i + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10r + ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 149.037 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1267,9 +1361,9 @@ void rate_Ne20_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_F18_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne20 --> He4 + O16 + // F18 + He4 --> Na22 rate = 0.0; drate_dT = 0.0; @@ -1278,13 +1372,13 @@ void rate_Ne20_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // co10r - ln_set_rate = 34.2658 + -67.6518 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + // rpsmr + ln_set_rate = 35.3786 + -1.82957 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 + + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 37.8396 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 67.6518 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 = 1.82957 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i + + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 37.8396 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1295,11 +1389,28 @@ void rate_Ne20_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // co10r - ln_set_rate = 28.6431 + -65.246 * tfactors.T9i; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_F19_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // F19 + p --> Ne20 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // nacrr + ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.246 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1310,13 +1421,30 @@ void rate_Ne20_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // co10n - ln_set_rate = 48.6604 + -54.8875 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // nacrr + ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 54.8875 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nacrn + ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1331,9 +1459,9 @@ void rate_Ne20_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ne21_to_He4_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_F19_to_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne21 --> He4 + O17 + // F19 + He4 --> Na23 rate = 0.0; drate_dT = 0.0; @@ -1342,13 +1470,13 @@ void rate_Ne21_to_He4_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // be13r - ln_set_rate = 27.3205 + -91.2722 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 - + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 6.25778 * tfactors.lnT9; + // rpsmr + ln_set_rate = 52.7856 + -2.11408 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 + + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 54.4823 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 91.2722 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i - + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 6.25778 * tfactors.T9i; + dln_set_rate_dT9 = 2.11408 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i + + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 54.4823 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1359,30 +1487,28 @@ void rate_Ne21_to_He4_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // be13r - ln_set_rate = 0.0906657 + -90.782 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 - + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 83.7218 * tfactors.lnT9; +} - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.782 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i - + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 83.7218 * tfactors.T9i; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_Ne18_to_Mg22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + // Ne18 + He4 --> Mg22 - // be13r - ln_set_rate = -91.954 + -98.9487 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 - + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -41.2753 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ths8r + ln_set_rate = 32.8865 + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 + + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.9487 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i - + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -41.2753 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i + + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1397,9 +1523,9 @@ void rate_Ne21_to_He4_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Na22_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Na22 --> p + Ne21 + // Ne20 + He4 --> Mg24 rate = 0.0; drate_dT = 0.0; @@ -1409,12 +1535,12 @@ void rate_Na22_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -16.4098 + -82.4235 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 - + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953; + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 82.4235 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i - + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923; + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1425,11 +1551,13 @@ void rate_Na22_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 24.8334 + -79.6093 * tfactors.T9i; + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.6093 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1441,10 +1569,12 @@ void rate_Na22_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10r - ln_set_rate = -24.579 + -78.4059 * tfactors.T9i; + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.4059 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1455,13 +1585,13 @@ void rate_Na22_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 42.146 + -78.2097 * tfactors.T9i + -19.2096 * tfactors.T913i - + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.2097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.2096 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1476,9 +1606,9 @@ void rate_Na22_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Na22_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Na22 --> He4 + F18 + // Ne21 + p --> Na22 rate = 0.0; drate_dT = 0.0; @@ -1487,13 +1617,13 @@ void rate_Na22_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // rpsmr - ln_set_rate = 59.3224 + -100.236 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 - + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 39.3396 * tfactors.lnT9; + // il10r + ln_set_rate = -47.6554 + -0.19618 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.236 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i - + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 39.3396 * tfactors.T9i; + dln_set_rate_dT9 = 0.19618 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1504,28 +1634,13 @@ void rate_Na22_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Na23_to_He4_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Na23 --> He4 + F19 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // rpsmr - ln_set_rate = 76.8979 + -123.578 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 - + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 55.9823 * tfactors.lnT9; + // il10n + ln_set_rate = 19.0696 + -19.2096 * tfactors.T913i + + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 123.578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i - + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 55.9823 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -19.2096 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1536,28 +1651,30 @@ void rate_Na23_to_He4_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Mg22_to_He4_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Mg22 --> He4 + Ne18 + // il10r + ln_set_rate = -39.4862 + -4.21385 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 + + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953 + -1.5 * tfactors.lnT9; - rate = 0.0; - drate_dT = 0.0; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.21385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i + + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923 + -1.5 * tfactors.T9i; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - // ths8r - ln_set_rate = 57.6776 + -94.4496 * tfactors.T9i + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 - + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10r + ln_set_rate = 1.75704 + -1.39957 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.4496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i - + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 1.39957 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1572,9 +1689,9 @@ void rate_Mg22_to_He4_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Mg24 --> p + Na23 + // Na23 + p --> Mg24 rate = 0.0; drate_dT = 0.0; @@ -1583,13 +1700,13 @@ void rate_Mg24_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 34.0876 + -138.968 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 138.968 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1601,10 +1718,12 @@ void rate_Mg24_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10r - ln_set_rate = 20.0024 + -137.3 * tfactors.T9i; + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 137.3 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1615,13 +1734,13 @@ void rate_Mg24_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 43.9357 + -135.688 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 135.688 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1636,9 +1755,9 @@ void rate_Mg24_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Mg24 --> He4 + Ne20 + // Mg24 + He4 --> Si28 rate = 0.0; drate_dT = 0.0; @@ -1647,13 +1766,13 @@ void rate_Mg24_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 49.3244 + -108.114 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 108.114 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1664,13 +1783,13 @@ void rate_Mg24_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 16.0203 + -120.895 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 120.895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1681,43 +1800,13 @@ void rate_Mg24_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 26.8017 + -117.334 * tfactors.T9i; +} - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 117.334 * tfactors.T9i * tfactors.T9i; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = -13.8869 + -110.62 * tfactors.T9i; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 110.62 * tfactors.T9i * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Si28 --> p + Al27 + // Al27 + p --> Si28 rate = 0.0; drate_dT = 0.0; @@ -1727,12 +1816,12 @@ void rate_Si28_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real set_rate{0.0}; // il10r - ln_set_rate = 11.7765 + -136.349 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 136.349 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1743,13 +1832,13 @@ void rate_Si28_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 46.5494 + -134.445 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 134.445 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1760,13 +1849,13 @@ void rate_Si28_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 111.466 + -134.832 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 134.832 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1781,9 +1870,9 @@ void rate_Si28_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Si28_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Si28 --> He4 + Mg24 + // Si28 + He4 --> S32 rate = 0.0; drate_dT = 0.0; @@ -1792,28 +1881,13 @@ void rate_Si28_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // st08r - ln_set_rate = 32.9006 + -131.488 * tfactors.T9i; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 131.488 * tfactors.T9i * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // st08r - ln_set_rate = -25.6886 + -128.693 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 128.693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1828,9 +1902,9 @@ void rate_Si28_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_S32_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // S32 --> p + P31 + // P31 + p --> S32 rate = 0.0; drate_dT = 0.0; @@ -1840,12 +1914,12 @@ void rate_S32_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real set_rate{0.0}; // il10r - ln_set_rate = 25.1729 + -106.637 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.637 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1857,10 +1931,12 @@ void rate_S32_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } // il10r - ln_set_rate = 21.6829 + -105.119 * tfactors.T9i; + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 105.119 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1872,12 +1948,12 @@ void rate_S32_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } // il10n - ln_set_rate = 43.6109 + -102.86 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.86 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1892,9 +1968,9 @@ void rate_S32_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_C12_C12_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // S32 --> He4 + Si28 + // C12 + C12 --> p + Na23 rate = 0.0; drate_dT = 0.0; @@ -1903,13 +1979,13 @@ void rate_S32_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 72.813 + -80.626 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 80.626 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1924,9 +2000,9 @@ void rate_S32_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_C12_C12_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // C12 --> He4 + He4 + He4 + // C12 + C12 --> He4 + Ne20 rate = 0.0; drate_dT = 0.0; @@ -1935,13 +2011,13 @@ void rate_C12_to_He4_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // fy05n - ln_set_rate = 45.7734 + -84.4227 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.4227 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1952,30 +2028,28 @@ void rate_C12_to_He4_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // fy05r - ln_set_rate = 22.394 + -88.5493 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; +} - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 88.5493 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_N13_to_p_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + // N13 + He4 --> p + O16 - // fy05r - ln_set_rate = 34.9561 + -85.4472 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.83333 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.4472 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.83333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1990,9 +2064,9 @@ void rate_C12_to_He4_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Rea template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_N15_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // C12 + p --> N13 + // N15 + p --> He4 + C12 rate = 0.0; drate_dT = 0.0; @@ -2001,13 +2075,13 @@ void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // nacrn + ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2018,13 +2092,13 @@ void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + // nacrr + ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2035,28 +2109,13 @@ void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // C12 + He4 --> O16 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + // nacrr + ln_set_rate = 20.8972 + -7.406 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2067,13 +2126,13 @@ void rate_He4_C12_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + // nacrr + ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2088,9 +2147,9 @@ void rate_He4_C12_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_C13_to_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_O14_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // C13 + p --> N14 + // O14 + He4 --> p + F17 rate = 0.0; drate_dT = 0.0; @@ -2099,12 +2158,29 @@ void rate_p_C13_to_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nacrr - ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i + // Ha96n + ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // Ha96r + ln_set_rate = 16.3087 + -22.51 * tfactors.T9i + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; } @@ -2116,13 +2192,13 @@ void rate_p_C13_to_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrn - ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // Ha96r + ln_set_rate = 11.1184 + -13.6 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2133,13 +2209,13 @@ void rate_p_C13_to_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrr - ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; + // Ha96r + ln_set_rate = -106.091 + -0.453036 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2150,27 +2226,12 @@ void rate_p_C13_to_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_N13_to_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // N13 + p --> O14 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // lg06r - ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i - + -1.5 * tfactors.lnT9; + // Ha96r + ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i + dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; } @@ -2182,13 +2243,13 @@ void rate_p_N13_to_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // lg06n - ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // Ha96r + ln_set_rate = 18.6518 + -26.0 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2203,9 +2264,9 @@ void rate_p_N13_to_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_N14_to_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_C12_O16_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // N14 + p --> O15 + // O16 + C12 --> p + Al27 rate = 0.0; drate_dT = 0.0; @@ -2214,13 +2275,13 @@ void rate_p_N14_to_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // im05n - ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2231,47 +2292,28 @@ void rate_p_N14_to_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // im05r - ln_set_rate = 6.73578 + -4.891 * tfactors.T9i - + 0.0682 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i - + 0.0682 * tfactors.T9i; - } +} - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_C12_O16_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // im05r - ln_set_rate = 7.65444 + -2.998 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // O16 + C12 --> He4 + Mg24 - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } + rate = 0.0; + drate_dT = 0.0; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // im05n - ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2286,9 +2328,9 @@ void rate_p_N14_to_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_O16_O16_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // N14 + He4 --> F18 + // O16 + O16 --> p + P31 rate = 0.0; drate_dT = 0.0; @@ -2297,13 +2339,13 @@ void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2314,30 +2356,28 @@ void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; +} - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_O16_O16_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + // O16 + O16 --> He4 + Si28 - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2352,9 +2392,9 @@ void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_N15_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_O17_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // N15 + p --> O16 + // O17 + p --> He4 + N14 rate = 0.0; drate_dT = 0.0; @@ -2363,13 +2403,13 @@ void rate_p_N15_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // li10n - ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10r + ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2380,13 +2420,13 @@ void rate_p_N15_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // li10r - ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i - + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; + // il10r + ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i - + 0.0459037 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2397,13 +2437,30 @@ void rate_p_N15_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // li10r - ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10n + ln_set_rate = 19.579 + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10r + ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2418,9 +2475,9 @@ void rate_p_N15_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_N15_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_O18_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // N15 + He4 --> F19 + // O18 + p --> He4 + N15 rate = 0.0; drate_dT = 0.0; @@ -2430,11 +2487,11 @@ void rate_He4_N15_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i + ln_set_rate = 10.2725 + -1.663 * tfactors.T9i + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; } @@ -2446,13 +2503,13 @@ void rate_He4_N15_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10r + ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2463,13 +2520,13 @@ void rate_He4_N15_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10n + ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2481,12 +2538,12 @@ void rate_He4_N15_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10r - ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2501,9 +2558,9 @@ void rate_He4_N15_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_O14_to_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_F18_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O14 + He4 --> Ne18 + // F18 + p --> He4 + O15 rate = 0.0; drate_dT = 0.0; @@ -2512,13 +2569,13 @@ void rate_He4_O14_to_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // wh87r - ln_set_rate = -4.69948 + -12.159 * tfactors.T9i - + 5.0 * tfactors.lnT9; + // il10n + ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i - + 5.0 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2529,13 +2586,13 @@ void rate_He4_O14_to_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // wh87r - ln_set_rate = 3.52636 + -22.61 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10r + ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2546,13 +2603,13 @@ void rate_He4_O14_to_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // wh87r - ln_set_rate = -2.15417 + -11.73 * tfactors.T9i - + -1.5 * tfactors.lnT9; - + // il10r + ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2563,13 +2620,28 @@ void rate_He4_O14_to_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // wh87n - ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_F18_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // F18 + He4 --> p + Ne21 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // rpsmr + ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2584,9 +2656,9 @@ void rate_He4_O14_to_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_O15_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_F19_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O15 + He4 --> Ne19 + // F19 + p --> He4 + O16 rate = 0.0; drate_dT = 0.0; @@ -2595,13 +2667,13 @@ void rate_He4_O15_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // dc11r - ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; + // nacr + ln_set_rate = 8.239 + -2.46828 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2612,12 +2684,12 @@ void rate_He4_O15_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // dc11r - ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i + // nacr + ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; } @@ -2629,13 +2701,13 @@ void rate_He4_O15_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // dc11n - ln_set_rate = 26.2914 + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // nacr + ln_set_rate = 26.2916 + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2646,28 +2718,30 @@ void rate_He4_O15_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O16_to_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O16 + p --> F17 + // nacrr + ln_set_rate = 14.3586 + -3.286 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; - rate = 0.0; - drate_dT = 0.0; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // nacr + ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2682,9 +2756,9 @@ void rate_p_O16_to_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ne19_to_p_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O16 + He4 --> Ne20 + // Ne19 + He4 --> p + Na22 rate = 0.0; drate_dT = 0.0; @@ -2693,13 +2767,13 @@ void rate_He4_O16_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 43.1874 + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 + + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i + + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2710,30 +2784,28 @@ void rate_He4_O16_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; +} - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Ne20_to_He4_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + // Ne20 + p --> He4 + F17 - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // nacr + ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2748,9 +2820,9 @@ void rate_He4_O16_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O17_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O17 + p --> F18 + // Na23 + p --> He4 + Ne20 rate = 0.0; drate_dT = 0.0; @@ -2759,13 +2831,13 @@ void rate_p_O17_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2777,12 +2849,12 @@ void rate_p_O17_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } // il10r - ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2793,13 +2865,13 @@ void rate_p_O17_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -13.077 + -0.746296 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2814,9 +2886,9 @@ void rate_p_O17_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_O17_to_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O17 + He4 --> Ne21 + // Al27 + p --> He4 + Mg24 rate = 0.0; drate_dT = 0.0; @@ -2825,13 +2897,13 @@ void rate_He4_O17_to_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // be13r - ln_set_rate = -25.0898 + -5.50926 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 - + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 82.2218 * tfactors.lnT9; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.50926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i - + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 82.2218 * tfactors.T9i; + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2842,13 +2914,13 @@ void rate_He4_O17_to_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // be13r - ln_set_rate = -117.134 + -13.6759 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 - + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -42.7753 * tfactors.lnT9; + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i - + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -42.7753 * tfactors.T9i; + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2859,13 +2931,13 @@ void rate_He4_O17_to_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // be13r - ln_set_rate = 2.14 + -5.99952 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 - + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 4.75778 * tfactors.lnT9; + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.99952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i - + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 4.75778 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2880,9 +2952,9 @@ void rate_He4_O17_to_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O18_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O18 + p --> F19 + // P31 + p --> He4 + Si28 rate = 0.0; drate_dT = 0.0; @@ -2892,12 +2964,12 @@ void rate_p_O18_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2908,13 +2980,13 @@ void rate_p_O18_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 19.917 + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2925,13 +2997,13 @@ void rate_p_O18_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2942,79 +3014,13 @@ void rate_p_O18_to_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_F17_to_Ne18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // F17 + p --> Ne18 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // cb09 - ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // cb09 - ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} +} template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_F18_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F18 + p --> Ne19 + // He4 + He4 + He4 --> C12 rate = 0.0; drate_dT = 0.0; @@ -3023,13 +3029,13 @@ void rate_p_F18_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3040,13 +3046,13 @@ void rate_p_F18_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3057,13 +3063,13 @@ void rate_p_F18_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3078,9 +3084,9 @@ void rate_p_F18_to_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_F18_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F18 + He4 --> Na22 + // C12 + C12 --> Mg24 rate = 0.0; drate_dT = 0.0; @@ -3089,13 +3095,13 @@ void rate_He4_F18_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // rpsmr - ln_set_rate = 35.3786 + -1.82957 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 - + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 37.8396 * tfactors.lnT9; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.82957 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i - + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 37.8396 * tfactors.T9i; + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3110,9 +3116,9 @@ void rate_He4_F18_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_F19_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_O16_O16_to_S32_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F19 + p --> Ne20 + // O16 + O16 --> S32 rate = 0.0; drate_dT = 0.0; @@ -3121,47 +3127,13 @@ void rate_p_F19_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nacrr - ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // nacrr - ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // nacrn - ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // cf88r + ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3176,9 +3148,9 @@ void rate_p_F19_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dr template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_F19_to_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F19 + He4 --> Na23 + // O16 + C12 --> Si28 rate = 0.0; drate_dT = 0.0; @@ -3187,13 +3159,13 @@ void rate_He4_F19_to_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // rpsmr - ln_set_rate = 52.7856 + -2.11408 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 - + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 54.4823 * tfactors.lnT9; + // cf88r + ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11408 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i - + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 54.4823 * tfactors.T9i; + dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3208,9 +3180,9 @@ void rate_He4_F19_to_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ne18_to_Mg22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_S32_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne18 + He4 --> Mg22 + // S32 + He4 --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -3220,12 +3192,12 @@ void rate_He4_Ne18_to_Mg22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 32.8865 + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 - + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i - + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3240,9 +3212,9 @@ void rate_He4_Ne18_to_Mg22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne20 + He4 --> Mg24 + // Cl35 + p --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -3252,11 +3224,11 @@ void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; } @@ -3268,13 +3240,13 @@ void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3285,13 +3257,13 @@ void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3303,12 +3275,12 @@ void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& } // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3323,9 +3295,9 @@ void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne21 + p --> Na22 + // Cl35 + p --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -3335,12 +3307,12 @@ void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -47.6554 + -0.19618 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.19618 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3351,13 +3323,13 @@ void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 19.0696 + -19.2096 * tfactors.T913i - + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10r + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -19.2096 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3369,12 +3341,12 @@ void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10r - ln_set_rate = -39.4862 + -4.21385 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 - + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.21385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i - + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3385,14 +3357,14 @@ void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 1.75704 + -1.39957 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10n + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39957 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + } // avoid underflows by zeroing rates in [0.0, 1.e-100] ln_set_rate = std::max(ln_set_rate, -230.0); @@ -3406,9 +3378,9 @@ void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Na23 + p --> Mg24 + // Ar36 + He4 --> Ca40 rate = 0.0; drate_dT = 0.0; @@ -3417,13 +3389,13 @@ void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // ths8r + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3434,13 +3406,28 @@ void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // K39 + p --> Ca40 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3451,13 +3438,30 @@ void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3472,9 +3476,9 @@ void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Mg24 + He4 --> Si28 + // K39 + p --> He4 + Ar36 rate = 0.0; drate_dT = 0.0; @@ -3483,13 +3487,13 @@ void rate_He4_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3500,13 +3504,28 @@ void rate_He4_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_Ca40_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Ca40 + He4 --> Ti44 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3521,9 +3540,9 @@ void rate_He4_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Al27 + p --> Si28 + // Sc43 + p --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -3532,13 +3551,13 @@ void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3549,13 +3568,28 @@ void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Sc43_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Sc43 + p --> He4 + Ca40 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3566,13 +3600,28 @@ void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_Ti44_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Ti44 + He4 --> Cr48 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3587,9 +3636,124 @@ void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ti44_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Si28 + He4 --> S32 + // Ti44 + He4 --> p + V47 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // V47 + p --> Cr48 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Cr48 + He4 --> Fe52 rate = 0.0; drate_dT = 0.0; @@ -3599,12 +3763,12 @@ void rate_He4_Si28_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3619,9 +3783,9 @@ void rate_He4_Si28_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // P31 + p --> S32 + // Cr48 + He4 --> p + Mn51 rate = 0.0; drate_dT = 0.0; @@ -3630,13 +3794,13 @@ void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3647,13 +3811,156 @@ void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Mn51 + p --> Fe52 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Fe52 + He4 --> Ni56 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Fe52 + He4 --> p + Co55 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Co55 + p --> Ni56 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_N13_to_p_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // N13 --> p + C12 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ls09c + ln_set_rate = 40.04074558314484 + -22.547578710551672 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 22.547578710551672 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3664,13 +3971,13 @@ void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // ls09c + ln_set_rate = 40.43534558314484 + -26.326068710551674 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 26.326068710551674 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3681,13 +3988,40 @@ void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real C12_pf, dC12_pf_dT; + // setting C12 partition function to 1.0 by default, independent of T + C12_pf = 1.0_rt; + dC12_pf_dT = 0.0_rt; + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real N13_pf, dN13_pf_dT; + // setting N13 partition function to 1.0 by default, independent of T + N13_pf = 1.0_rt; + dN13_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * C12_pf; + amrex::Real z_p = N13_pf; + + amrex::Real dz_r_dT = C12_pf * dp_pf_dT + p_pf * dC12_pf_dT; + amrex::Real dz_p_dT = dN13_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_C12_to_p_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_N14_to_p_C13_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // C12 + He4 --> p + N15 + // N14 --> p + C13 rate = 0.0; drate_dT = 0.0; @@ -3696,13 +4030,11 @@ void rate_He4_C12_to_p_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nacrn - ln_set_rate = 27.118 + -57.6279 * tfactors.T9i + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // nacrc + ln_set_rate = 38.37162975887633 + -101.18001633730091 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 57.6279 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 101.18001633730091 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3713,13 +4045,13 @@ void rate_He4_C12_to_p_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrr - ln_set_rate = -6.93365 + -58.7917 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + // nacrc + ln_set_rate = 41.70462975887634 + -87.62571633730091 * tfactors.T9i + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 58.7917 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 87.62571633730091 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3730,13 +4062,13 @@ void rate_He4_C12_to_p_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrr - ln_set_rate = 20.5388 + -65.034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // nacrc + ln_set_rate = 37.15282975887634 + -93.40718633730091 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 93.40718633730091 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3747,30 +4079,40 @@ void rate_He4_C12_to_p_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrr - ln_set_rate = -5.2319 + -59.6491 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.6491 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - } + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real C13_pf, dC13_pf_dT; + // setting C13 partition function to 1.0 by default, independent of T + C13_pf = 1.0_rt; + dC13_pf_dT = 0.0_rt; + + amrex::Real N14_pf, dN14_pf_dT; + // setting N14 partition function to 1.0 by default, independent of T + N14_pf = 1.0_rt; + dN14_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * C13_pf; + amrex::Real z_p = N14_pf; + + amrex::Real dz_r_dT = C13_pf * dp_pf_dT + p_pf * dC13_pf_dT; + amrex::Real dz_p_dT = dN14_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_O14_to_p_N13_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // C12 + C12 --> p + Na23 + // O14 --> p + N13 rate = 0.0; drate_dT = 0.0; @@ -3779,13 +4121,11 @@ void rate_C12_C12_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // lg06c + ln_set_rate = 35.284842047544444 + -59.831381731894915 * tfactors.T9i + 1.57122 * tfactors.T913i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 59.831381731894915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3796,28 +4136,13 @@ void rate_C12_C12_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // C12 + C12 --> He4 + Ne20 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // lg06c + ln_set_rate = 42.42334204754444 + -53.70536173189492 * tfactors.T9i + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 53.70536173189492 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3828,45 +4153,39 @@ void rate_C12_C12_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Re drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + amrex::Real O14_pf, dO14_pf_dT; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors, pf_cache, O14_pf, dO14_pf_dT); - // N13 + He4 --> p + O16 + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; - rate = 0.0; - drate_dT = 0.0; + amrex::Real N13_pf, dN13_pf_dT; + // setting N13 partition function to 1.0 by default, independent of T + N13_pf = 1.0_rt; + dN13_pf_dT = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real z_r = p_pf * N13_pf; + amrex::Real z_p = O14_pf; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + amrex::Real dz_r_dT = N13_pf * dp_pf_dT + p_pf * dN13_pf_dT; + amrex::Real dz_p_dT = dO14_pf_dT; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - } + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_N14_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_O15_to_p_N14_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // N14 + He4 --> p + O17 + // O15 --> p + N14 rate = 0.0; drate_dT = 0.0; @@ -3875,13 +4194,13 @@ void rate_He4_N14_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -7.60954 + -14.5839 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // im05c + ln_set_rate = 41.01773262609282 + -84.67584783075318 * tfactors.T9i + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.5839 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 84.67584783075318 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3892,13 +4211,13 @@ void rate_He4_N14_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 19.1771 + -13.8305 * tfactors.T9i + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // im05c + ln_set_rate = 30.743512626092816 + -89.56684783075319 * tfactors.T9i + + 1.5682 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.8305 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 89.56684783075319 * tfactors.T9i * tfactors.T9i + + 1.5682 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3909,13 +4228,11 @@ void rate_He4_N14_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 9.77209 + -18.7891 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + // im05c + ln_set_rate = 31.66217262609282 + -87.67384783075319 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.7891 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 87.67384783075319 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3926,13 +4243,13 @@ void rate_He4_N14_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 5.13169 + -15.9452 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // im05c + ln_set_rate = 44.12463262609282 + -84.67584783075318 * tfactors.T9i + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 1.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.9452 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 84.67584783075318 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 1.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3943,13 +4260,39 @@ void rate_He4_N14_to_p_O17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real O15_pf, dO15_pf_dT; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors, pf_cache, O15_pf, dO15_pf_dT); + + amrex::Real N14_pf, dN14_pf_dT; + // setting N14 partition function to 1.0 by default, independent of T + N14_pf = 1.0_rt; + dN14_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * N14_pf; + amrex::Real z_p = O15_pf; + + amrex::Real dz_r_dT = N14_pf * dp_pf_dT + p_pf * dN14_pf_dT; + amrex::Real dz_p_dT = dO15_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_N15_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_O16_to_p_N15_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // N15 + p --> He4 + C12 + // O16 --> p + N15 rate = 0.0; drate_dT = 0.0; @@ -3958,13 +4301,13 @@ void rate_p_N15_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nacrn - ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // li10c + ln_set_rate = 44.31969622406868 + -140.7326330696574 * tfactors.T9i + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 140.7326330696574 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3975,13 +4318,13 @@ void rate_p_N15_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrr - ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + // li10c + ln_set_rate = 38.84649622406867 + -150.9621330696574 * tfactors.T9i + + 0.0459037 * tfactors.T9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 150.9621330696574 * tfactors.T9i * tfactors.T9i + + 0.0459037; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3992,13 +4335,11 @@ void rate_p_N15_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrr - ln_set_rate = 20.8972 + -7.406 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // li10c + ln_set_rate = 30.892656224068677 + -143.6557830696574 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 143.6557830696574 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4009,30 +4350,39 @@ void rate_p_N15_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrr - ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - } + amrex::Real N15_pf, dN15_pf_dT; + // setting N15 partition function to 1.0 by default, independent of T + N15_pf = 1.0_rt; + dN15_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real O16_pf, dO16_pf_dT; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors, pf_cache, O16_pf, dO16_pf_dT); + + amrex::Real z_r = p_pf * N15_pf; + amrex::Real z_p = O16_pf; + + amrex::Real dz_r_dT = N15_pf * dp_pf_dT + p_pf * dN15_pf_dT; + amrex::Real dz_p_dT = dO16_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_N15_to_p_O18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_O16_to_He4_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // N15 + He4 --> p + O18 + // O16 --> He4 + C12 rate = 0.0; drate_dT = 0.0; @@ -4041,13 +4391,13 @@ void rate_He4_N15_to_p_O18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -29.7104 + -46.4444 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // nac2 + ln_set_rate = 279.2945280776573 + -84.95160042649215 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.4444 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 84.95160042649215 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4058,13 +4408,13 @@ void rate_He4_N15_to_p_O18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 25.1611 + -46.1986 * tfactors.T9i + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // nac2 + ln_set_rate = 94.31312807765731 + -84.50317042649215 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.1986 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 84.50317042649215 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4075,30 +4425,54 @@ void rate_He4_N15_to_p_O18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 7.13756 + -51.5219 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 51.5219 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - } + amrex::Real C12_pf, dC12_pf_dT; + // setting C12 partition function to 1.0 by default, independent of T + C12_pf = 1.0_rt; + dC12_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; - // il10r - ln_set_rate = 8.46654 + -47.8616 * tfactors.T9i - + -1.5 * tfactors.lnT9; + amrex::Real O16_pf, dO16_pf_dT; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors, pf_cache, O16_pf, dO16_pf_dT); + + amrex::Real z_r = He4_pf * C12_pf; + amrex::Real z_p = O16_pf; + + amrex::Real dz_r_dT = C12_pf * dHe4_pf_dT + He4_pf * dC12_pf_dT; + amrex::Real dz_p_dT = dO16_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_F17_to_p_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // F17 --> p + O16 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ia08n + ln_set_rate = 40.91346042326238 + -6.965844092940222 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.8616 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 6.965844092940222 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4109,13 +4483,38 @@ void rate_He4_N15_to_p_O18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real F17_pf, dF17_pf_dT; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors, pf_cache, F17_pf, dF17_pf_dT); + + amrex::Real O16_pf, dO16_pf_dT; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors, pf_cache, O16_pf, dO16_pf_dT); + + amrex::Real z_r = p_pf * O16_pf; + amrex::Real z_p = F17_pf; + + amrex::Real dz_r_dT = O16_pf * dp_pf_dT + p_pf * dO16_pf_dT; + amrex::Real dz_p_dT = dF17_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_O14_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_F18_to_p_O17_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // O14 + He4 --> p + F17 + // F18 --> p + O17 rate = 0.0; drate_dT = 0.0; @@ -4124,13 +4523,13 @@ void rate_He4_O14_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // Ha96n - ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 40.2060663850151 + -65.06073084956662 * tfactors.T9i + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 65.06073084956662 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4141,13 +4540,13 @@ void rate_He4_O14_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // Ha96r - ln_set_rate = 16.3087 + -22.51 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 33.703646385015105 + -71.28901084956662 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 71.28901084956662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4158,13 +4557,11 @@ void rate_He4_O14_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // Ha96r - ln_set_rate = 11.1184 + -13.6 * tfactors.T9i - + -1.5 * tfactors.lnT9; - + // il10c + ln_set_rate = 11.236166385015101 + -65.80702684956663 * tfactors.T9i; + if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 65.80702684956663 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4175,13 +4572,53 @@ void rate_He4_O14_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // Ha96r - ln_set_rate = -106.091 + -0.453036 * tfactors.T9i - + -1.5 * tfactors.lnT9; + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real F18_pf, dF18_pf_dT; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors, pf_cache, F18_pf, dF18_pf_dT); + + amrex::Real O17_pf, dO17_pf_dT; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors, pf_cache, O17_pf, dO17_pf_dT); + + amrex::Real z_r = p_pf * O17_pf; + amrex::Real z_p = F18_pf; + + amrex::Real dz_r_dT = O17_pf * dp_pf_dT + p_pf * dO17_pf_dT; + amrex::Real dz_p_dT = dF18_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_F18_to_He4_N14_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // F18 --> He4 + N14 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // il10c + ln_set_rate = 46.248979543913606 + -51.22930570025806 * tfactors.T9i + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 51.22930570025806 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4192,13 +4629,11 @@ void rate_He4_O14_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // Ha96r - ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 38.61457954391361 + -62.19490570025806 * tfactors.T9i + -5.6227 * tfactors.T913i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 62.19490570025806 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4209,13 +4644,11 @@ void rate_He4_O14_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // Ha96r - ln_set_rate = 18.6518 + -26.0 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 24.91191754391361 + -56.38964570025806 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 56.38964570025806 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4226,13 +4659,39 @@ void rate_He4_O14_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real F18_pf, dF18_pf_dT; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors, pf_cache, F18_pf, dF18_pf_dT); + + amrex::Real N14_pf, dN14_pf_dT; + // setting N14 partition function to 1.0 by default, independent of T + N14_pf = 1.0_rt; + dN14_pf_dT = 0.0_rt; + + amrex::Real z_r = He4_pf * N14_pf; + amrex::Real z_p = F18_pf; + + amrex::Real dz_r_dT = N14_pf * dHe4_pf_dT + He4_pf * dN14_pf_dT; + amrex::Real dz_p_dT = dF18_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_O15_to_p_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_F19_to_p_O18_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // O15 + He4 --> p + F18 + // F19 --> p + O18 rate = 0.0; drate_dT = 0.0; @@ -4241,13 +4700,11 @@ void rate_He4_O15_to_p_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 1.04969 + -36.4627 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = -12.076391187250273 + -93.0205444797316 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 36.4627 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 93.0205444797316 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4258,13 +4715,13 @@ void rate_He4_O15_to_p_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -32.4461 + -33.8223 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 42.84850881274973 + -92.7758014797316 * tfactors.T9i + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.8223 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 92.7758014797316 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4275,13 +4732,13 @@ void rate_He4_O15_to_p_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 61.2985 + -33.4459 * tfactors.T9i + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 30.200268812749727 + -99.5011014797316 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.4459 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 99.5011014797316 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4292,28 +4749,11 @@ void rate_He4_O15_to_p_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O16 + p --> He4 + N13 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // cf88n - ln_set_rate = 42.2324 + -60.5523 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 28.007988812749726 + -94.43261147973159 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 60.5523 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 94.43261147973159 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4324,13 +4764,38 @@ void rate_p_O16_to_He4_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real O18_pf, dO18_pf_dT; + // interpolating O18 partition function + get_partition_function_cached(O18, tfactors, pf_cache, O18_pf, dO18_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real F19_pf, dF19_pf_dT; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors, pf_cache, F19_pf, dF19_pf_dT); + + amrex::Real z_r = p_pf * O18_pf; + amrex::Real z_p = F19_pf; + + amrex::Real dz_r_dT = O18_pf * dp_pf_dT + p_pf * dO18_pf_dT; + amrex::Real dz_p_dT = dF19_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_O16_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_F19_to_He4_N15_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // O16 + He4 --> p + F19 + // F19 --> He4 + N15 rate = 0.0; drate_dT = 0.0; @@ -4339,13 +4804,11 @@ void rate_He4_O16_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nacr - ln_set_rate = -53.1397 + -94.2866 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 15.318548019238627 + -50.755468565975136 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.2866 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 50.755468565975136 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4356,13 +4819,13 @@ void rate_He4_O16_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacr - ln_set_rate = 25.8562 + -94.1589 * tfactors.T9i + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 50.12906801923863 + -46.57751856597513 * tfactors.T9i + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.1589 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 46.57751856597513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4373,13 +4836,13 @@ void rate_He4_O16_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrr - ln_set_rate = 13.9232 + -97.4449 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + // il10c + ln_set_rate = -4.061431980761373 + -50.777378565975134 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 97.4449 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 = 50.777378565975134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4390,13 +4853,11 @@ void rate_He4_O16_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacr - ln_set_rate = 14.7601 + -97.9108 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 28.271668019238625 + -53.56213856597513 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 97.9108 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 53.56213856597513 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4407,30 +4868,39 @@ void rate_He4_O16_to_p_F19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacr - ln_set_rate = 7.80363 + -96.6272 * tfactors.T9i - + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 96.6272 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } + amrex::Real N15_pf, dN15_pf_dT; + // setting N15 partition function to 1.0 by default, independent of T + N15_pf = 1.0_rt; + dN15_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real F19_pf, dF19_pf_dT; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors, pf_cache, F19_pf, dF19_pf_dT); + + amrex::Real z_r = He4_pf * N15_pf; + amrex::Real z_p = F19_pf; + + amrex::Real dz_r_dT = N15_pf * dHe4_pf_dT + He4_pf * dN15_pf_dT; + amrex::Real dz_p_dT = dF19_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ne18_to_p_F17_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // O16 + C12 --> p + Al27 + // Ne18 --> p + F17 rate = 0.0; drate_dT = 0.0; @@ -4439,13 +4909,13 @@ void rate_C12_O16_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + // cb09 + ln_set_rate = 17.564698673683218 + -45.56279329585002 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -0.6337600000000001 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 = 45.56279329585002 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -0.6337600000000001 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4456,28 +4926,13 @@ void rate_C12_O16_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O16 + C12 --> He4 + Mg24 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + // cb09 + ln_set_rate = 52.98957867368321 + -50.490132895850024 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -5.86014 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 = 50.490132895850024 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -5.86014 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4488,13 +4943,38 @@ void rate_C12_O16_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Re drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real F17_pf, dF17_pf_dT; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors, pf_cache, F17_pf, dF17_pf_dT); + + amrex::Real Ne18_pf, dNe18_pf_dT; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors, pf_cache, Ne18_pf, dNe18_pf_dT); + + amrex::Real z_r = p_pf * F17_pf; + amrex::Real z_p = Ne18_pf; + + amrex::Real dz_r_dT = F17_pf * dp_pf_dT + p_pf * dF17_pf_dT; + amrex::Real dz_p_dT = dNe18_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ne18_to_He4_O14_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // O16 + O16 --> p + P31 + // Ne18 --> He4 + O14 rate = 0.0; drate_dT = 0.0; @@ -4503,13 +4983,13 @@ void rate_O16_O16_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + // wh87c + ln_set_rate = 20.015599543913616 + -71.50450567460692 * tfactors.T9i + + 6.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 = 71.50450567460692 * tfactors.T9i * tfactors.T9i + + 6.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4520,28 +5000,43 @@ void rate_O16_O16_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} + // wh87c + ln_set_rate = 28.241439543913618 + -81.95550567460691 * tfactors.T9i; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 81.95550567460691 * tfactors.T9i * tfactors.T9i; + } - // O16 + O16 --> He4 + Si28 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - rate = 0.0; - drate_dT = 0.0; + // wh87c + ln_set_rate = 22.560909543913617 + -71.07550567460692 * tfactors.T9i; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 71.07550567460692 * tfactors.T9i * tfactors.T9i; + } - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // wh87c + ln_set_rate = 51.15797954391362 + -59.34550567460692 * tfactors.T9i + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 = 59.34550567460692 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4552,13 +5047,38 @@ void rate_O16_O16_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Re drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real O14_pf, dO14_pf_dT; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors, pf_cache, O14_pf, dO14_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ne18_pf, dNe18_pf_dT; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors, pf_cache, Ne18_pf, dNe18_pf_dT); + + amrex::Real z_r = He4_pf * O14_pf; + amrex::Real z_p = Ne18_pf; + + amrex::Real dz_r_dT = O14_pf * dHe4_pf_dT + He4_pf * dO14_pf_dT; + amrex::Real dz_p_dT = dNe18_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O17_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ne19_to_p_F18_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // O17 + p --> He4 + N14 + // Ne19 --> p + F18 rate = 0.0; drate_dT = 0.0; @@ -4567,30 +5087,13 @@ void rate_p_O17_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 81.43852110141783 + -74.3988865821353 * tfactors.T9i + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 74.3988865821353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4601,13 +5104,13 @@ void rate_p_O17_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 19.579 + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 18.172851101417834 + -77.2903565821353 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 77.2903565821353 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4618,13 +5121,13 @@ void rate_p_O17_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = -5.418878898582168 + -74.7978365821353 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 74.7978365821353 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4635,13 +5138,38 @@ void rate_p_O17_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real F18_pf, dF18_pf_dT; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors, pf_cache, F18_pf, dF18_pf_dT); + + amrex::Real Ne19_pf, dNe19_pf_dT; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors, pf_cache, Ne19_pf, dNe19_pf_dT); + + amrex::Real z_r = p_pf * F18_pf; + amrex::Real z_p = Ne19_pf; + + amrex::Real dz_r_dT = F18_pf * dp_pf_dT + p_pf * dF18_pf_dT; + amrex::Real dz_p_dT = dNe19_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O18_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ne19_to_He4_O15_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // O18 + p --> He4 + N15 + // Ne19 --> He4 + O15 rate = 0.0; drate_dT = 0.0; @@ -4650,13 +5178,13 @@ void rate_p_O18_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 10.2725 + -1.663 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // dc11c + ln_set_rate = -7.5121319807613745 + -45.157894903452345 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 45.157894903452345 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4667,13 +5195,11 @@ void rate_p_O18_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // dc11c + ln_set_rate = 24.692221519238625 + -46.83789490345235 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 46.83789490345235 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4684,13 +5210,13 @@ void rate_p_O18_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // dc11c + ln_set_rate = 51.02886801923863 + -40.95350490345235 * tfactors.T9i + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 40.95350490345235 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4701,30 +5227,38 @@ void rate_p_O18_to_He4_N15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - } + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real O15_pf, dO15_pf_dT; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors, pf_cache, O15_pf, dO15_pf_dT); + + amrex::Real Ne19_pf, dNe19_pf_dT; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors, pf_cache, Ne19_pf, dNe19_pf_dT); + + amrex::Real z_r = He4_pf * O15_pf; + amrex::Real z_p = Ne19_pf; + + amrex::Real dz_r_dT = O15_pf * dHe4_pf_dT + He4_pf * dO15_pf_dT; + amrex::Real dz_p_dT = dNe19_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_F17_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ne20_to_p_F19_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // F17 + p --> He4 + O14 + // Ne20 --> p + F19 rate = 0.0; drate_dT = 0.0; @@ -4733,13 +5267,13 @@ void rate_p_F17_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // Ha96r - ln_set_rate = 15.612 + -36.3426 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // nacrc + ln_set_rate = 18.6910340641937 + -156.78096623757855 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 36.3426 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 156.78096623757855 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4750,13 +5284,13 @@ void rate_p_F17_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // Ha96r - ln_set_rate = 10.4217 + -27.4326 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // nacrc + ln_set_rate = 36.7035640641937 + -150.75065623757857 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.4326 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 150.75065623757857 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4767,13 +5301,13 @@ void rate_p_F17_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // Ha96r - ln_set_rate = -106.788 + -14.2856 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // nacrc + ln_set_rate = 42.6026640641937 + -149.03682623757857 * tfactors.T9i + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.2856 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 149.03682623757857 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4784,13 +5318,53 @@ void rate_p_F17_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // Ha96r - ln_set_rate = 11.4322 + -25.8549 * tfactors.T9i - + -1.5 * tfactors.lnT9; + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real F19_pf, dF19_pf_dT; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors, pf_cache, F19_pf, dF19_pf_dT); + + amrex::Real Ne20_pf, dNe20_pf_dT; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors, pf_cache, Ne20_pf, dNe20_pf_dT); + + amrex::Real z_r = p_pf * F19_pf; + amrex::Real z_p = Ne20_pf; + + amrex::Real dz_r_dT = F19_pf * dp_pf_dT + p_pf * dF19_pf_dT; + amrex::Real dz_p_dT = dNe20_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Ne20 --> He4 + O16 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // co10c + ln_set_rate = 34.26581585936365 + -67.65193003813836 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.8549 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 67.65193003813836 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4801,13 +5375,11 @@ void rate_p_F17_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // Ha96r - ln_set_rate = 17.9551 + -39.8326 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // co10c + ln_set_rate = 28.64304585936365 + -65.24613003813835 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.8326 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 65.24613003813835 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4818,13 +5390,13 @@ void rate_p_F17_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // Ha96n - ln_set_rate = 40.1391 + -13.8326 * tfactors.T9i + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // co10c + ln_set_rate = 48.66033585936365 + -54.887630038138354 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.8326 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 54.887630038138354 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4835,45 +5407,38 @@ void rate_p_F17_to_He4_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_F17_to_p_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; - // F17 + He4 --> p + Ne20 + amrex::Real O16_pf, dO16_pf_dT; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors, pf_cache, O16_pf, dO16_pf_dT); - rate = 0.0; - drate_dT = 0.0; + amrex::Real Ne20_pf, dNe20_pf_dT; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors, pf_cache, Ne20_pf, dNe20_pf_dT); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real z_r = He4_pf * O16_pf; + amrex::Real z_p = Ne20_pf; - // nacr - ln_set_rate = 38.6287 + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + amrex::Real dz_r_dT = O16_pf * dHe4_pf_dT + He4_pf * dO16_pf_dT; + amrex::Real dz_p_dT = dNe20_pf_dT; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - } + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_F18_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ne21_to_He4_O17_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // F18 + p --> He4 + O15 + // Ne21 --> He4 + O17 rate = 0.0; drate_dT = 0.0; @@ -4882,13 +5447,13 @@ void rate_p_F18_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // be13r + ln_set_rate = 0.09075265394232801 + -90.77844684231803 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 + + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 83.7218 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 90.77844684231803 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i + + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 83.7218 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4899,13 +5464,13 @@ void rate_p_F18_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + // be13r + ln_set_rate = -91.95344734605767 + -98.94508684231803 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 + + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -41.2753 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 98.94508684231803 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i + + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -41.2753 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4916,13 +5481,13 @@ void rate_p_F18_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + // be13r + ln_set_rate = 27.32055265394233 + -91.26870684231804 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 + + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 6.25778 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 91.26870684231804 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i + + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 6.25778 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4933,45 +5498,38 @@ void rate_p_F18_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_F18_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + amrex::Real Ne21_pf, dNe21_pf_dT; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors, pf_cache, Ne21_pf, dNe21_pf_dT); - // F18 + He4 --> p + Ne21 + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; - rate = 0.0; - drate_dT = 0.0; + amrex::Real O17_pf, dO17_pf_dT; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors, pf_cache, O17_pf, dO17_pf_dT); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real z_r = He4_pf * O17_pf; + amrex::Real z_p = Ne21_pf; - // rpsmr - ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + amrex::Real dz_r_dT = O17_pf * dHe4_pf_dT + He4_pf * dO17_pf_dT; + amrex::Real dz_p_dT = dNe21_pf_dT; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; - } + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_F19_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Na22_to_p_Ne21_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // F19 + p --> He4 + O16 + // Na22 --> p + Ne21 rate = 0.0; drate_dT = 0.0; @@ -4980,13 +5538,11 @@ void rate_p_F19_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nacr - ln_set_rate = 8.239 + -2.46828 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = -24.579038986172677 + -78.40599033331655 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 78.40599033331655 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -4997,13 +5553,13 @@ void rate_p_F19_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacr - ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 42.145961013827325 + -78.20981033331655 * tfactors.T9i + -19.2096 * tfactors.T913i + + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 78.20981033331655 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.2096 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5014,13 +5570,13 @@ void rate_p_F19_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacr - ln_set_rate = 26.2916 + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = -16.409838986172673 + -82.42366033331655 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 + + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 82.42366033331655 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i + + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5031,13 +5587,11 @@ void rate_p_F19_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacrr - ln_set_rate = 14.3586 + -3.286 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + // il10c + ln_set_rate = 24.833401013827324 + -79.60938033331655 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 = 79.60938033331655 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5048,13 +5602,53 @@ void rate_p_F19_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nacr - ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i - + -1.5 * tfactors.lnT9; + + amrex::Real Ne21_pf, dNe21_pf_dT; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors, pf_cache, Ne21_pf, dNe21_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Na22_pf, dNa22_pf_dT; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors, pf_cache, Na22_pf, dNa22_pf_dT); + + amrex::Real z_r = p_pf * Ne21_pf; + amrex::Real z_p = Na22_pf; + + amrex::Real dz_r_dT = Ne21_pf * dp_pf_dT + p_pf * dNe21_pf_dT; + amrex::Real dz_p_dT = dNa22_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Na22_to_He4_F18_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Na22 --> He4 + F18 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // rpsmr + ln_set_rate = 59.32234728275454 + -100.23588367240258 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 + + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 39.3396 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 100.23588367240258 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i + + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 39.3396 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5065,13 +5659,38 @@ void rate_p_F19_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real F18_pf, dF18_pf_dT; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors, pf_cache, F18_pf, dF18_pf_dT); + + amrex::Real Na22_pf, dNa22_pf_dT; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors, pf_cache, Na22_pf, dNa22_pf_dT); + + amrex::Real z_r = He4_pf * F18_pf; + amrex::Real z_p = Na22_pf; + + amrex::Real dz_r_dT = F18_pf * dHe4_pf_dT + He4_pf * dF18_pf_dT; + amrex::Real dz_p_dT = dNa22_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ne19_to_p_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Na23_to_He4_F19_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ne19 + He4 --> p + Na22 + // Na23 --> He4 + F19 rate = 0.0; drate_dT = 0.0; @@ -5080,13 +5699,13 @@ void rate_He4_Ne19_to_p_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 43.1874 + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 - + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // rpsmr + ln_set_rate = 76.89792115063096 + -123.57857118031104 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 + + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 55.9823 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i - + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 123.57857118031104 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i + + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 55.9823 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5097,13 +5716,38 @@ void rate_He4_Ne19_to_p_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Na23_pf, dNa23_pf_dT; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors, pf_cache, Na23_pf, dNa23_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real F19_pf, dF19_pf_dT; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors, pf_cache, F19_pf, dF19_pf_dT); + + amrex::Real z_r = He4_pf * F19_pf; + amrex::Real z_p = Na23_pf; + + amrex::Real dz_r_dT = F19_pf * dHe4_pf_dT + He4_pf * dF19_pf_dT; + amrex::Real dz_p_dT = dNa23_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Ne20_to_He4_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Mg22_to_He4_Ne18_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ne20 + p --> He4 + F17 + // Mg22 --> He4 + Ne18 rate = 0.0; drate_dT = 0.0; @@ -5112,13 +5756,13 @@ void rate_p_Ne20_to_He4_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nacr - ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // ths8r + ln_set_rate = 57.677545143141735 + -94.4497532187934 * tfactors.T9i + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 + + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 94.4497532187934 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i + + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5129,13 +5773,38 @@ void rate_p_Ne20_to_He4_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Mg22_pf, dMg22_pf_dT; + // interpolating Mg22 partition function + get_partition_function_cached(Mg22, tfactors, pf_cache, Mg22_pf, dMg22_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ne18_pf, dNe18_pf_dT; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors, pf_cache, Ne18_pf, dNe18_pf_dT); + + amrex::Real z_r = He4_pf * Ne18_pf; + amrex::Real z_p = Mg22_pf; + + amrex::Real dz_r_dT = Ne18_pf * dHe4_pf_dT + He4_pf * dNe18_pf_dT; + amrex::Real dz_p_dT = dMg22_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ne20 + He4 --> p + Na23 + // Mg24 --> p + Na23 rate = 0.0; drate_dT = 0.0; @@ -5144,13 +5813,13 @@ void rate_He4_Ne20_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 0.227472 + -29.4348 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 43.93571176470678 + -135.6881490421346 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.4348 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 135.6881490421346 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5161,13 +5830,13 @@ void rate_He4_Ne20_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 19.1852 + -27.5738 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 34.08761176470678 + -138.9684390421346 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.5738 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 138.9684390421346 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5178,13 +5847,11 @@ void rate_He4_Ne20_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -6.37772 + -29.8896 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 20.002361764706784 + -137.3003390421346 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.8896 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 137.3003390421346 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5195,13 +5862,38 @@ void rate_He4_Ne20_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Na23_pf, dNa23_pf_dT; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors, pf_cache, Na23_pf, dNa23_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Mg24_pf, dMg24_pf_dT; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors, pf_cache, Mg24_pf, dMg24_pf_dT); + + amrex::Real z_r = p_pf * Na23_pf; + amrex::Real z_p = Mg24_pf; + + amrex::Real dz_r_dT = Na23_pf * dp_pf_dT + p_pf * dNa23_pf_dT; + amrex::Real dz_p_dT = dMg24_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Ne21_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ne21 + p --> He4 + F18 + // Mg24 --> He4 + Ne20 rate = 0.0; drate_dT = 0.0; @@ -5210,13 +5902,11 @@ void rate_p_Ne21_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // rpsmr - ln_set_rate = 50.6536 + -22.049 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + // il10c + ln_set_rate = -13.886931148855957 + -110.62012330714883 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.049 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; + dln_set_rate_dT9 = 110.62012330714883 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5227,28 +5917,45 @@ void rate_p_Ne21_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} + // il10c + ln_set_rate = 49.324368851144044 + -108.11407330714883 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Na22_to_He4_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 108.11407330714883 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + } - // Na22 + p --> He4 + Ne19 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - rate = 0.0; - drate_dT = 0.0; + // il10c + ln_set_rate = 16.02029885114404 + -120.89497330714883 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 120.89497330714883 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + } - // ths8r - ln_set_rate = 43.101 + -24.0192 * tfactors.T9i + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 - + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10c + ln_set_rate = 26.801638851144045 + -117.33433330714882 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.0192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i - + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 117.33433330714882 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5259,13 +5966,38 @@ void rate_p_Na22_to_He4_Ne19(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Mg24_pf, dMg24_pf_dT; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors, pf_cache, Mg24_pf, dMg24_pf_dT); + + amrex::Real Ne20_pf, dNe20_pf_dT; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors, pf_cache, Ne20_pf, dNe20_pf_dT); + + amrex::Real z_r = He4_pf * Ne20_pf; + amrex::Real z_p = Mg24_pf; + + amrex::Real dz_r_dT = Ne20_pf * dHe4_pf_dT + He4_pf * dNe20_pf_dT; + amrex::Real dz_p_dT = dMg24_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Na23 + p --> He4 + Ne20 + // Si28 --> p + Al27 rate = 0.0; drate_dT = 0.0; @@ -5274,13 +6006,13 @@ void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 11.776564828186824 + -136.3434628922348 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 136.3434628922348 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5291,13 +6023,13 @@ void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 111.46636482818681 + -134.8268158922348 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 134.8268158922348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5308,13 +6040,13 @@ void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 46.54946482818683 + -134.4395028922348 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 134.4395028922348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5325,13 +6057,38 @@ void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Al27_pf, dAl27_pf_dT; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors, pf_cache, Al27_pf, dAl27_pf_dT); + + amrex::Real Si28_pf, dSi28_pf_dT; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors, pf_cache, Si28_pf, dSi28_pf_dT); + + amrex::Real z_r = p_pf * Al27_pf; + amrex::Real z_p = Si28_pf; + + amrex::Real dz_r_dT = Al27_pf * dp_pf_dT + p_pf * dAl27_pf_dT; + amrex::Real dz_p_dT = dSi28_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mg24 + He4 --> p + Al27 + // Si28 --> He4 + Mg24 rate = 0.0; drate_dT = 0.0; @@ -5340,13 +6097,13 @@ void rate_He4_Mg24_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 30.0397 + -18.5791 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // st08r + ln_set_rate = -25.688574833405916 + -128.69270892750794 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.5791 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 128.69270892750794 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5357,13 +6114,11 @@ void rate_He4_Mg24_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -26.2862 + -19.5422 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + // st08r + ln_set_rate = 32.90059516659409 + -131.48850892750792 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.5422 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 131.48850892750792 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5374,30 +6129,38 @@ void rate_He4_Mg24_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -6.44575 + -22.8216 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.8216 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - } + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real Mg24_pf, dMg24_pf_dT; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors, pf_cache, Mg24_pf, dMg24_pf_dT); + + amrex::Real Si28_pf, dSi28_pf_dT; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors, pf_cache, Si28_pf, dSi28_pf_dT); + + amrex::Real z_r = He4_pf * Mg24_pf; + amrex::Real z_p = Si28_pf; + + amrex::Real dz_r_dT = Mg24_pf * dHe4_pf_dT + He4_pf * dMg24_pf_dT; + amrex::Real dz_p_dT = dSi28_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_S32_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Al27 + p --> He4 + Mg24 + // S32 --> p + P31 rate = 0.0; drate_dT = 0.0; @@ -5406,13 +6169,13 @@ void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 25.172836958303158 + -106.63693563716609 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 106.63693563716609 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5423,13 +6186,11 @@ void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 21.682890958303158 + -105.11947563716609 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 105.11947563716609 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5440,13 +6201,13 @@ void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 43.610880958303156 + -102.85989563716609 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 102.85989563716609 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5457,13 +6218,38 @@ void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real S32_pf, dS32_pf_dT; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors, pf_cache, S32_pf, dS32_pf_dT); + + amrex::Real P31_pf, dP31_pf_dT; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors, pf_cache, P31_pf, dP31_pf_dT); + + amrex::Real z_r = p_pf * P31_pf; + amrex::Real z_p = S32_pf; + + amrex::Real dz_r_dT = P31_pf * dp_pf_dT + p_pf * dP31_pf_dT; + amrex::Real dz_p_dT = dS32_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Si28 + He4 --> p + P31 + // S32 --> He4 + Si28 rate = 0.0; drate_dT = 0.0; @@ -5472,13 +6258,13 @@ void rate_He4_Si28_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -11.4335 + -25.6606 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 72.81295409739818 + -80.62610309662641 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.6606 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 80.62610309662641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5489,47 +6275,38 @@ void rate_He4_Si28_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 60.3424 + -22.2348 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.2348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - } + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real S32_pf, dS32_pf_dT; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors, pf_cache, S32_pf, dS32_pf_dT); - // il10r - ln_set_rate = -13.4595 + -24.112 * tfactors.T9i - + -1.5 * tfactors.lnT9; + amrex::Real Si28_pf, dSi28_pf_dT; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors, pf_cache, Si28_pf, dSi28_pf_dT); - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.112 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } + amrex::Real z_r = He4_pf * Si28_pf; + amrex::Real z_p = S32_pf; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real dz_r_dT = Si28_pf * dHe4_pf_dT + He4_pf * dSi28_pf_dT; + amrex::Real dz_p_dT = dS32_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // P31 + p --> He4 + Si28 + // C12 --> He4 + He4 + He4 rate = 0.0; drate_dT = 0.0; @@ -5538,13 +6315,13 @@ void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + // fy05c + ln_set_rate = 22.39392447043974 + -88.54942933569913 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 88.54942933569913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5555,13 +6332,13 @@ void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // fy05c + ln_set_rate = 34.95602447043974 + -85.44732933569914 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 85.44732933569914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5572,13 +6349,13 @@ void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // fy05c + ln_set_rate = 45.77337247043974 + -84.42286933569913 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 84.42286933569913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5589,13 +6366,35 @@ void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real C12_pf, dC12_pf_dT; + // setting C12 partition function to 1.0 by default, independent of T + C12_pf = 1.0_rt; + dC12_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real z_r = He4_pf * He4_pf * He4_pf; + amrex::Real z_p = C12_pf; + + amrex::Real dz_r_dT = dHe4_pf_dT + dHe4_pf_dT + dHe4_pf_dT; + amrex::Real dz_p_dT = dC12_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_C12_to_p_N15_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // He4 + He4 + He4 --> C12 + // C12 + He4 --> p + N15 rate = 0.0; drate_dT = 0.0; @@ -5604,13 +6403,13 @@ void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + // nacrc + ln_set_rate = 27.11796814641137 + -57.62803699258858 * tfactors.T9i + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 = 57.62803699258858 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5621,13 +6420,13 @@ void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + // nacrc + ln_set_rate = -6.93365185358863 + -58.79183699258858 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 = 58.79183699258858 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5638,13 +6437,13 @@ void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + // nacrc + ln_set_rate = 20.53876814641137 + -65.03403699258858 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 = 65.03403699258858 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5655,28 +6454,13 @@ void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // C12 + C12 --> Mg24 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + // nacrc + ln_set_rate = -5.2319018535886315 + -59.649206992588574 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 = 59.649206992588574 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5687,13 +6471,45 @@ void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real N15_pf, dN15_pf_dT; + // setting N15 partition function to 1.0 by default, independent of T + N15_pf = 1.0_rt; + dN15_pf_dT = 0.0_rt; + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real C12_pf, dC12_pf_dT; + // setting C12 partition function to 1.0 by default, independent of T + C12_pf = 1.0_rt; + dC12_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * N15_pf; + amrex::Real z_p = He4_pf * C12_pf; + + amrex::Real dz_r_dT = N15_pf * dp_pf_dT + p_pf * dN15_pf_dT; + amrex::Real dz_p_dT = C12_pf * dHe4_pf_dT + He4_pf * dC12_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_O16_to_S32_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_N14_to_p_O17_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // O16 + O16 --> S32 + // N14 + He4 --> p + O17 rate = 0.0; drate_dT = 0.0; @@ -5702,13 +6518,13 @@ void rate_O16_O16_to_S32_modified(const tf_t& tfactors, amrex::Real& rate, amrex amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + // il10c + ln_set_rate = 5.131686841101491 + -15.945266787858825 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + dln_set_rate_dT9 = 15.945266787858825 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5719,28 +6535,13 @@ void rate_O16_O16_to_S32_modified(const tf_t& tfactors, amrex::Real& rate, amrex drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O16 + C12 --> Si28 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // cf88r - ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + // il10c + ln_set_rate = -7.609543158898509 + -14.583891787858825 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + dln_set_rate_dT9 = 14.583891787858825 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5751,28 +6552,30 @@ void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // S32 + He4 --> Ar36 + // il10c + ln_set_rate = 19.17708684110149 + -13.830496787858825 * tfactors.T9i + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - rate = 0.0; - drate_dT = 0.0; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.830496787858825 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 9.77208684110149 + -18.789146787858826 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 18.789146787858826 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5783,13 +6586,44 @@ void rate_He4_S32_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real O17_pf, dO17_pf_dT; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors, pf_cache, O17_pf, dO17_pf_dT); + + amrex::Real N14_pf, dN14_pf_dT; + // setting N14 partition function to 1.0 by default, independent of T + N14_pf = 1.0_rt; + dN14_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * O17_pf; + amrex::Real z_p = He4_pf * N14_pf; + + amrex::Real dz_r_dT = O17_pf * dp_pf_dT + p_pf * dO17_pf_dT; + amrex::Real dz_p_dT = N14_pf * dHe4_pf_dT + He4_pf * dN14_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_N15_to_p_O18_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // S32 + He4 --> p + Cl35 + // N15 + He4 --> p + O18 rate = 0.0; drate_dT = 0.0; @@ -5798,13 +6632,13 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 2.42563 + -27.6662 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 8.466540793511097 + -47.86163104930013 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.6662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 47.86163104930013 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5815,12 +6649,12 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -0.877602 + -25.5914 * tfactors.T9i + // il10c + ln_set_rate = -29.710359206488903 + -46.44451504930013 * tfactors.T9i + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.5914 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 46.44451504930013 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; } @@ -5832,13 +6666,13 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -57.395 + -22.1894 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 25.161140793511095 + -46.19863104930013 * tfactors.T9i + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.1894 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 46.19863104930013 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5849,13 +6683,13 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 32.2544 + -21.6564 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 7.137560793511096 + -51.52198104930013 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.6564 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 51.52198104930013 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5866,13 +6700,44 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real O18_pf, dO18_pf_dT; + // interpolating O18 partition function + get_partition_function_cached(O18, tfactors, pf_cache, O18_pf, dO18_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real N15_pf, dN15_pf_dT; + // setting N15 partition function to 1.0 by default, independent of T + N15_pf = 1.0_rt; + dN15_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * O18_pf; + amrex::Real z_p = He4_pf * N15_pf; + + amrex::Real dz_r_dT = O18_pf * dp_pf_dT + p_pf * dO18_pf_dT; + amrex::Real dz_p_dT = N15_pf * dHe4_pf_dT + He4_pf * dN15_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_O15_to_p_F18_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cl35 + p --> Ar36 + // O15 + He4 --> p + F18 rate = 0.0; drate_dT = 0.0; @@ -5881,13 +6746,13 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 61.29845308217921 + -33.44596190458904 * tfactors.T9i + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 33.44596190458904 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5898,13 +6763,13 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 1.0496930821792043 + -36.46271190458904 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 36.46271190458904 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5915,13 +6780,13 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = -32.4461469178208 + -33.82239390458904 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 33.82239390458904 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5932,30 +6797,43 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - } + amrex::Real O15_pf, dO15_pf_dT; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors, pf_cache, O15_pf, dO15_pf_dT); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real F18_pf, dF18_pf_dT; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors, pf_cache, F18_pf, dF18_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * F18_pf; + amrex::Real z_p = He4_pf * O15_pf; + + amrex::Real dz_r_dT = F18_pf * dp_pf_dT + p_pf * dF18_pf_dT; + amrex::Real dz_p_dT = O15_pf * dHe4_pf_dT + He4_pf * dO15_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ar36 --> He4 + S32 + // O16 + p --> He4 + N13 rate = 0.0; drate_dT = 0.0; @@ -5964,13 +6842,13 @@ void rate_Ar36_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 73.8164 + -77.0627 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // cf88n + ln_set_rate = 42.232382494512464 + -60.55237555926846 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.0627 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 60.55237555926846 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -5981,13 +6859,44 @@ void rate_Ar36_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real O16_pf, dO16_pf_dT; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors, pf_cache, O16_pf, dO16_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real N13_pf, dN13_pf_dT; + // setting N13 partition function to 1.0 by default, independent of T + N13_pf = 1.0_rt; + dN13_pf_dT = 0.0_rt; + + amrex::Real z_r = He4_pf * N13_pf; + amrex::Real z_p = p_pf * O16_pf; + + amrex::Real dz_r_dT = N13_pf * dHe4_pf_dT + He4_pf * dN13_pf_dT; + amrex::Real dz_p_dT = O16_pf * dp_pf_dT + p_pf * dO16_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_O16_to_p_F19_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ar36 --> p + Cl35 + // O16 + He4 --> p + F19 rate = 0.0; drate_dT = 0.0; @@ -5996,13 +6905,13 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 60.7366 + -98.7191 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // nacrc + ln_set_rate = 7.803628204830044 + -96.62734003984369 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.7191 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 96.62734003984369 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6013,13 +6922,13 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 17.2028 + -102.37 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + // nacrc + ln_set_rate = -53.13967179516996 + -94.2867100398437 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.37 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 = 94.2867100398437 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6030,11 +6939,13 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 16.0169 + -100.729 * tfactors.T9i; + // nacrc + ln_set_rate = 25.856228204830042 + -94.1590600398437 * tfactors.T9i + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.729 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 94.1590600398437 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6045,11 +6956,30 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -17.4751 + -99.2838 * tfactors.T9i; + // nacrc + ln_set_rate = 13.923228204830043 + -97.4450600398437 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.2838 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 97.4450600398437 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nacrc + ln_set_rate = 14.760128204830043 + -97.9109100398437 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 97.9109100398437 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6060,28 +6990,58 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real O16_pf, dO16_pf_dT; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors, pf_cache, O16_pf, dO16_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real F19_pf, dF19_pf_dT; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors, pf_cache, F19_pf, dF19_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * F19_pf; + amrex::Real z_p = He4_pf * O16_pf; + + amrex::Real dz_r_dT = F19_pf * dp_pf_dT + p_pf * dF19_pf_dT; + amrex::Real dz_p_dT = O16_pf * dHe4_pf_dT + He4_pf * dO16_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_F17_to_He4_O14_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cl35 + p --> He4 + S32 + // F17 + p --> He4 + O14 rate = 0.0; drate_dT = 0.0; amrex::Real ln_set_rate{0.0}; amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + amrex::Real set_rate{0.0}; + + // Ha96c + ln_set_rate = 40.13910087023039 + -13.832585601120737 * tfactors.T9i + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 13.832585601120737 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6092,12 +7052,12 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + // Ha96c + ln_set_rate = 15.6120008702304 + -36.34258560112074 * tfactors.T9i + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 36.34258560112074 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; } @@ -6109,13 +7069,13 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + // Ha96c + ln_set_rate = 10.421700870230397 + -27.432585601120735 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 27.432585601120735 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6126,13 +7086,13 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // Ha96c + ln_set_rate = -106.78769912976959 + -14.285621601120738 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 14.285621601120738 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6143,28 +7103,30 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Ar36 + He4 --> Ca40 + // Ha96c + ln_set_rate = 11.432200870230398 + -25.854885601120735 * tfactors.T9i + + -1.5 * tfactors.lnT9; - rate = 0.0; - drate_dT = 0.0; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.854885601120735 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // Ha96c + ln_set_rate = 17.9551008702304 + -39.83258560112074 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 39.83258560112074 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6175,13 +7137,43 @@ void rate_He4_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real O14_pf, dO14_pf_dT; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors, pf_cache, O14_pf, dO14_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real F17_pf, dF17_pf_dT; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors, pf_cache, F17_pf, dF17_pf_dT); + + amrex::Real z_r = He4_pf * O14_pf; + amrex::Real z_p = p_pf * F17_pf; + + amrex::Real dz_r_dT = O14_pf * dHe4_pf_dT + He4_pf * dO14_pf_dT; + amrex::Real dz_p_dT = F17_pf * dp_pf_dT + p_pf * dF17_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_F17_to_p_Ne20_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ar36 + He4 --> p + K39 + // F17 + He4 --> p + Ne20 rate = 0.0; drate_dT = 0.0; @@ -6190,13 +7182,13 @@ void rate_He4_Ar36_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 20.6367 + -14.9533 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // nacr + ln_set_rate = 38.62872456389872 + 5.984280926440988e-05 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.9533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = -5.984280926440988e-05 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6207,13 +7199,43 @@ void rate_He4_Ar36_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real F17_pf, dF17_pf_dT; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors, pf_cache, F17_pf, dF17_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ne20_pf, dNe20_pf_dT; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors, pf_cache, Ne20_pf, dNe20_pf_dT); + + amrex::Real z_r = p_pf * Ne20_pf; + amrex::Real z_p = He4_pf * F17_pf; + + amrex::Real dz_r_dT = Ne20_pf * dp_pf_dT + p_pf * dNe20_pf_dT; + amrex::Real dz_p_dT = F17_pf * dHe4_pf_dT + He4_pf * dF17_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // K39 + p --> Ca40 + // Ne20 + He4 --> p + Na23 rate = 0.0; drate_dT = 0.0; @@ -6222,13 +7244,13 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + // il10c + ln_set_rate = -6.377717086437262 + -29.88961364462334 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 = 29.88961364462334 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6239,13 +7261,13 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + // il10c + ln_set_rate = 0.227472413562738 + -29.434873644623337 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + dln_set_rate_dT9 = 29.434873644623337 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6256,13 +7278,13 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + // il10c + ln_set_rate = 19.18524291356274 + -27.573843644623338 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 = 27.573843644623338 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6273,45 +7295,43 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + amrex::Real Na23_pf, dNa23_pf_dT; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors, pf_cache, Na23_pf, dNa23_pf_dT); - // Ca40 --> He4 + Ar36 + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; - rate = 0.0; - drate_dT = 0.0; + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real Ne20_pf, dNe20_pf_dT; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors, pf_cache, Ne20_pf, dNe20_pf_dT); - // ths8r - ln_set_rate = 77.2826 + -81.6916 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real z_r = p_pf * Na23_pf; + amrex::Real z_p = He4_pf * Ne20_pf; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 81.6916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - } + amrex::Real dz_r_dT = Na23_pf * dp_pf_dT + p_pf * dNa23_pf_dT; + amrex::Real dz_p_dT = Ne20_pf * dHe4_pf_dT + He4_pf * dNe20_pf_dT; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Ne21_to_He4_F18_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ca40 --> p + K39 + // Ne21 + p --> He4 + F18 rate = 0.0; drate_dT = 0.0; @@ -6320,13 +7340,13 @@ void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // lo18r - ln_set_rate = 613.153 + -109.213 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + // rpsmr + ln_set_rate = 50.65368626892722 + -22.049056049959066 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 109.213 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 = 22.049056049959066 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6337,47 +7357,43 @@ void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // lo18r - ln_set_rate = 127.306 + -98.3134 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.3134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - } + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real Ne21_pf, dNe21_pf_dT; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors, pf_cache, Ne21_pf, dNe21_pf_dT); - // lo18r - ln_set_rate = 2786.44 + -101.871 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.871 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; - } + amrex::Real F18_pf, dF18_pf_dT; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors, pf_cache, F18_pf, dF18_pf_dT); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real z_r = He4_pf * F18_pf; + amrex::Real z_p = p_pf * Ne21_pf; + + amrex::Real dz_r_dT = F18_pf * dHe4_pf_dT + He4_pf * dF18_pf_dT; + amrex::Real dz_p_dT = Ne21_pf * dp_pf_dT + p_pf * dNe21_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Na22_to_He4_Ne19_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // K39 + p --> He4 + Ar36 + // Na22 + p --> He4 + Ne19 rate = 0.0; drate_dT = 0.0; @@ -6387,12 +7403,12 @@ void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amr amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 43.10102618133671 + -24.01926369875145 * tfactors.T9i + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 + + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 24.01926369875145 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i + + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6403,13 +7419,43 @@ void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Na22_pf, dNa22_pf_dT; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors, pf_cache, Na22_pf, dNa22_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ne19_pf, dNe19_pf_dT; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors, pf_cache, Ne19_pf, dNe19_pf_dT); + + amrex::Real z_r = He4_pf * Ne19_pf; + amrex::Real z_p = p_pf * Na22_pf; + + amrex::Real dz_r_dT = Ne19_pf * dHe4_pf_dT + He4_pf * dNe19_pf_dT; + amrex::Real dz_p_dT = Na22_pf * dp_pf_dT + p_pf * dNa22_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ca40 + He4 --> Ti44 + // Mg24 + He4 --> p + Al27 rate = 0.0; drate_dT = 0.0; @@ -6418,13 +7464,13 @@ void rate_He4_Ca40_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = -6.445750338407261 + -22.82086933218981 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 22.82086933218981 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6435,28 +7481,30 @@ void rate_He4_Ca40_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Ca40 + He4 --> p + Sc43 + // il10c + ln_set_rate = -26.286160338407264 + -19.54138133218981 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - rate = 0.0; - drate_dT = 0.0; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.54138133218981 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - // ths8r - ln_set_rate = 35.6575 + -40.8757 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 30.03973966159274 + -18.578369332189812 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.8757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 18.578369332189812 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6467,13 +7515,43 @@ void rate_He4_Ca40_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Al27_pf, dAl27_pf_dT; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors, pf_cache, Al27_pf, dAl27_pf_dT); + + amrex::Real Mg24_pf, dMg24_pf_dT; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors, pf_cache, Mg24_pf, dMg24_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * Al27_pf; + amrex::Real z_p = He4_pf * Mg24_pf; + + amrex::Real dz_r_dT = Al27_pf * dp_pf_dT + p_pf * dAl27_pf_dT; + amrex::Real dz_p_dT = Mg24_pf * dHe4_pf_dT + He4_pf * dMg24_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Sc43 + p --> Ti44 + // Si28 + He4 --> p + P31 rate = 0.0; drate_dT = 0.0; @@ -6482,13 +7560,13 @@ void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = -11.433473139095032 + -25.65965858572089 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 25.65965858572089 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6499,28 +7577,30 @@ void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Ti44 --> He4 + Ca40 + // il10c + ln_set_rate = -13.459473139095032 + -24.11106858572089 * tfactors.T9i + + -1.5 * tfactors.lnT9; - rate = 0.0; - drate_dT = 0.0; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 24.11106858572089 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - // chw0 - ln_set_rate = 78.6991 + -59.4974 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10c + ln_set_rate = 60.342426860904965 + -22.23390858572089 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.4974 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 22.23390858572089 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6531,13 +7611,43 @@ void rate_Ti44_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real P31_pf, dP31_pf_dT; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors, pf_cache, P31_pf, dP31_pf_dT); + + amrex::Real Si28_pf, dSi28_pf_dT; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors, pf_cache, Si28_pf, dSi28_pf_dT); + + amrex::Real z_r = p_pf * P31_pf; + amrex::Real z_p = He4_pf * Si28_pf; + + amrex::Real dz_r_dT = P31_pf * dp_pf_dT + p_pf * dP31_pf_dT; + amrex::Real dz_p_dT = Si28_pf * dHe4_pf_dT + He4_pf * dSi28_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_S32_to_p_Cl35_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ti44 --> p + Sc43 + // S32 + He4 --> p + Cl35 rate = 0.0; drate_dT = 0.0; @@ -6546,13 +7656,13 @@ void rate_Ti44_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 62.5939 + -100.373 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10c + ln_set_rate = 2.425628238034531 + -27.66622776398283 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.373 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 27.66622776398283 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6563,28 +7673,13 @@ void rate_Ti44_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Sc43 + p --> He4 + Ca40 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = -0.877601761965469 + -25.59141776398283 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 25.59141776398283 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6595,28 +7690,30 @@ void rate_p_Sc43_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Ti44 + He4 --> Cr48 + // il10c + ln_set_rate = -57.39498176196547 + -22.18939876398283 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - rate = 0.0; - drate_dT = 0.0; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.18939876398283 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 32.25441823803453 + -21.65646776398283 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 21.65646776398283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6627,13 +7724,43 @@ void rate_He4_Ti44_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Cl35_pf, dCl35_pf_dT; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors, pf_cache, Cl35_pf, dCl35_pf_dT); + + amrex::Real S32_pf, dS32_pf_dT; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors, pf_cache, S32_pf, dS32_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * Cl35_pf; + amrex::Real z_p = He4_pf * S32_pf; + + amrex::Real dz_r_dT = Cl35_pf * dp_pf_dT + p_pf * dCl35_pf_dT; + amrex::Real dz_p_dT = S32_pf * dHe4_pf_dT + He4_pf * dS32_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ar36_to_He4_S32_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ti44 + He4 --> p + V47 + // Ar36 --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -6642,13 +7769,13 @@ void rate_He4_Ti44_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 73.81637663285039 + -77.06281976216322 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 77.06281976216322 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6659,13 +7786,38 @@ void rate_He4_Ti44_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real S32_pf, dS32_pf_dT; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors, pf_cache, S32_pf, dS32_pf_dT); + + amrex::Real Ar36_pf, dAr36_pf_dT; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors, pf_cache, Ar36_pf, dAr36_pf_dT); + + amrex::Real z_r = He4_pf * S32_pf; + amrex::Real z_p = Ar36_pf; + + amrex::Real dz_r_dT = S32_pf * dHe4_pf_dT + He4_pf * dS32_pf_dT; + amrex::Real dz_p_dT = dAr36_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ar36_to_p_Cl35_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // V47 + p --> Cr48 + // Ar36 --> p + Cl35 rate = 0.0; drate_dT = 0.0; @@ -6674,13 +7826,11 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + // il10c + ln_set_rate = 16.01685487088493 + -100.72924752614605 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + dln_set_rate_dT9 = 100.72924752614605 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6691,13 +7841,11 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + // il10c + ln_set_rate = -17.47510512911507 + -99.28393852614604 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 = 99.28393852614604 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6708,13 +7856,13 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + // il10c + ln_set_rate = 60.73659487088493 + -98.71928752614605 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 = 98.71928752614605 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6725,13 +7873,13 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + // il10c + ln_set_rate = 17.202804870884933 + -102.37020752614605 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 = 102.37020752614605 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6742,13 +7890,38 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Cl35_pf, dCl35_pf_dT; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors, pf_cache, Cl35_pf, dCl35_pf_dT); + + amrex::Real Ar36_pf, dAr36_pf_dT; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors, pf_cache, Ar36_pf, dAr36_pf_dT); + + amrex::Real z_r = p_pf * Cl35_pf; + amrex::Real z_p = Ar36_pf; + + amrex::Real dz_r_dT = Cl35_pf * dp_pf_dT + p_pf * dCl35_pf_dT; + amrex::Real dz_p_dT = dAr36_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ar36_to_p_K39_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cr48 --> He4 + Ti44 + // Ar36 + He4 --> p + K39 rate = 0.0; drate_dT = 0.0; @@ -6758,12 +7931,12 @@ void rate_Cr48_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 89.7573 + -89.3041 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate = 20.636664061510302 + -14.953349961318928 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 89.3041 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 14.953349961318928 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6774,13 +7947,43 @@ void rate_Cr48_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real K39_pf, dK39_pf_dT; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors, pf_cache, K39_pf, dK39_pf_dT); + + amrex::Real Ar36_pf, dAr36_pf_dT; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors, pf_cache, Ar36_pf, dAr36_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * K39_pf; + amrex::Real z_p = He4_pf * Ar36_pf; + + amrex::Real dz_r_dT = K39_pf * dp_pf_dT + p_pf * dK39_pf_dT; + amrex::Real dz_p_dT = Ar36_pf * dHe4_pf_dT + He4_pf * dAr36_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ca40_to_He4_Ar36_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cr48 --> p + V47 + // Ca40 --> He4 + Ar36 rate = 0.0; drate_dT = 0.0; @@ -6789,13 +7992,13 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nfisn - ln_set_rate = 65.6231 + -94.5854 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + // ths8r + ln_set_rate = 77.28261041284823 + -81.69174599574632 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.5854 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + dln_set_rate_dT9 = 81.69174599574632 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6806,13 +8009,53 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 67.7403 + -100.13 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ca40_pf, dCa40_pf_dT; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors, pf_cache, Ca40_pf, dCa40_pf_dT); + + amrex::Real Ar36_pf, dAr36_pf_dT; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors, pf_cache, Ar36_pf, dAr36_pf_dT); + + amrex::Real z_r = He4_pf * Ar36_pf; + amrex::Real z_p = Ca40_pf; + + amrex::Real dz_r_dT = Ar36_pf * dHe4_pf_dT + He4_pf * dAr36_pf_dT; + amrex::Real dz_p_dT = dCa40_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Ca40_to_p_K39_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Ca40 --> p + K39 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // lo18r + ln_set_rate = 2786.4340744743586 + -101.86662364079672 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.13 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + dln_set_rate_dT9 = 101.86662364079672 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6823,13 +8066,13 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 536.523 + -99.3659 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; + // lo18r + ln_set_rate = 613.1530744743586 + -109.20898364079672 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.3659 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + dln_set_rate_dT9 = 109.20898364079672 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6840,13 +8083,13 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 48.892 + -93.8243 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.92325 * tfactors.lnT9; + // lo18r + ln_set_rate = 127.30607447435852 + -98.30936364079672 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.8243 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.92325 * tfactors.T9i; + dln_set_rate_dT9 = 98.30936364079672 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6857,13 +8100,38 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Ca40_pf, dCa40_pf_dT; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors, pf_cache, Ca40_pf, dCa40_pf_dT); + + amrex::Real K39_pf, dK39_pf_dT; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors, pf_cache, K39_pf, dK39_pf_dT); + + amrex::Real z_r = p_pf * K39_pf; + amrex::Real z_p = Ca40_pf; + + amrex::Real dz_r_dT = K39_pf * dp_pf_dT + p_pf * dK39_pf_dT; + amrex::Real dz_p_dT = dCa40_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ca40_to_p_Sc43_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // V47 + p --> He4 + Ti44 + // Ca40 + He4 --> p + Sc43 rate = 0.0; drate_dT = 0.0; @@ -6872,13 +8140,13 @@ void rate_p_V47_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // chw0r - ln_set_rate = -76.6143 + -6.02945 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 35.65752817292938 + -40.87575463203665 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.02945 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 40.87575463203665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6889,13 +8157,43 @@ void rate_p_V47_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Ca40_pf, dCa40_pf_dT; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors, pf_cache, Ca40_pf, dCa40_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Sc43_pf, dSc43_pf_dT; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors, pf_cache, Sc43_pf, dSc43_pf_dT); + + amrex::Real z_r = p_pf * Sc43_pf; + amrex::Real z_p = He4_pf * Ca40_pf; + + amrex::Real dz_r_dT = Sc43_pf * dp_pf_dT + p_pf * dSc43_pf_dT; + amrex::Real dz_p_dT = Ca40_pf * dHe4_pf_dT + He4_pf * dCa40_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ti44_to_He4_Ca40_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cr48 + He4 --> Fe52 + // Ti44 --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -6904,13 +8202,13 @@ void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // chw0 + ln_set_rate = 78.69908591662849 + -59.4975248620018 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 59.4975248620018 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6921,13 +8219,38 @@ void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ca40_pf, dCa40_pf_dT; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors, pf_cache, Ca40_pf, dCa40_pf_dT); + + amrex::Real Ti44_pf, dTi44_pf_dT; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors, pf_cache, Ti44_pf, dTi44_pf_dT); + + amrex::Real z_r = He4_pf * Ca40_pf; + amrex::Real z_p = Ti44_pf; + + amrex::Real dz_r_dT = Ca40_pf * dHe4_pf_dT + He4_pf * dCa40_pf_dT; + amrex::Real dz_p_dT = dTi44_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ti44_to_p_Sc43_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cr48 + He4 --> p + Mn51 + // Ti44 --> p + Sc43 rate = 0.0; drate_dT = 0.0; @@ -6937,12 +8260,12 @@ void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, am amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 62.59391408955788 + -100.37327949403844 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 100.37327949403844 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6953,13 +8276,38 @@ void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Ti44_pf, dTi44_pf_dT; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors, pf_cache, Ti44_pf, dTi44_pf_dT); + + amrex::Real Sc43_pf, dSc43_pf_dT; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors, pf_cache, Sc43_pf, dSc43_pf_dT); + + amrex::Real z_r = p_pf * Sc43_pf; + amrex::Real z_p = Ti44_pf; + + amrex::Real dz_r_dT = Sc43_pf * dp_pf_dT + p_pf * dSc43_pf_dT; + amrex::Real dz_p_dT = dTi44_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Cr48_to_He4_Ti44_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mn51 + p --> Fe52 + // Cr48 --> He4 + Ti44 rate = 0.0; drate_dT = 0.0; @@ -6969,12 +8317,12 @@ void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 89.75733412085052 + -89.3041938384302 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 89.3041938384302 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -6985,13 +8333,38 @@ void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Cr48_pf, dCr48_pf_dT; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors, pf_cache, Cr48_pf, dCr48_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ti44_pf, dTi44_pf_dT; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors, pf_cache, Ti44_pf, dTi44_pf_dT); + + amrex::Real z_r = He4_pf * Ti44_pf; + amrex::Real z_p = Cr48_pf; + + amrex::Real dz_r_dT = Ti44_pf * dHe4_pf_dT + He4_pf * dTi44_pf_dT; + amrex::Real dz_p_dT = dCr48_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Cr48_to_p_V47_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Fe52 --> He4 + Cr48 + // Cr48 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -7000,13 +8373,13 @@ void rate_Fe52_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 90.1474 + -92.109 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // nfisn + ln_set_rate = 67.74027107253823 + -100.12633621113824 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.109 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 100.12633621113824 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -7017,28 +8390,47 @@ void rate_Fe52_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} + // nfisn + ln_set_rate = 536.5234710725382 + -99.36194621113825 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.36194621113825 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + } - // Fe52 --> p + Mn51 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - rate = 0.0; - drate_dT = 0.0; + // nfisn + ln_set_rate = 48.891971072538226 + -93.82037121113825 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 93.82037121113825 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; + } - // ths8r - ln_set_rate = 61.728 + -85.6325 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nfisn + ln_set_rate = 65.62307107253824 + -94.58145021113825 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.6325 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 94.58145021113825 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -7049,13 +8441,38 @@ void rate_Fe52_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Cr48_pf, dCr48_pf_dT; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors, pf_cache, Cr48_pf, dCr48_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real V47_pf, dV47_pf_dT; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors, pf_cache, V47_pf, dV47_pf_dT); + + amrex::Real z_r = p_pf * V47_pf; + amrex::Real z_p = Cr48_pf; + + amrex::Real dz_r_dT = V47_pf * dp_pf_dT + p_pf * dV47_pf_dT; + amrex::Real dz_p_dT = dCr48_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_V47_to_He4_Ti44_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mn51 + p --> He4 + Cr48 + // V47 + p --> He4 + Ti44 rate = 0.0; drate_dT = 0.0; @@ -7064,13 +8481,13 @@ void rate_p_Mn51_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, am amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 58.7312 + -6.47654 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // chw0r + ln_set_rate = -76.61433695168769 + -6.029445311023438 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.47654 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 6.029445311023438 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -7081,13 +8498,43 @@ void rate_p_Mn51_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real V47_pf, dV47_pf_dT; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors, pf_cache, V47_pf, dV47_pf_dT); + + amrex::Real Ti44_pf, dTi44_pf_dT; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors, pf_cache, Ti44_pf, dTi44_pf_dT); + + amrex::Real z_r = He4_pf * Ti44_pf; + amrex::Real z_p = p_pf * V47_pf; + + amrex::Real dz_r_dT = Ti44_pf * dHe4_pf_dT + He4_pf * dTi44_pf_dT; + amrex::Real dz_p_dT = V47_pf * dp_pf_dT + p_pf * dV47_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Fe52_to_He4_Cr48_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Fe52 + He4 --> Ni56 + // Fe52 --> He4 + Cr48 rate = 0.0; drate_dT = 0.0; @@ -7097,12 +8544,12 @@ void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 90.14738712482466 + -92.10912191363732 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 92.10912191363732 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -7113,13 +8560,38 @@ void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Cr48_pf, dCr48_pf_dT; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors, pf_cache, Cr48_pf, dCr48_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Fe52_pf, dFe52_pf_dT; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors, pf_cache, Fe52_pf, dFe52_pf_dT); + + amrex::Real z_r = He4_pf * Cr48_pf; + amrex::Real z_p = Fe52_pf; + + amrex::Real dz_r_dT = Cr48_pf * dHe4_pf_dT + He4_pf * dCr48_pf_dT; + amrex::Real dz_p_dT = dFe52_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Fe52_to_p_Mn51_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Fe52 + He4 --> p + Co55 + // Fe52 --> p + Mn51 rate = 0.0; drate_dT = 0.0; @@ -7129,12 +8601,12 @@ void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, am amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 61.72798916565748 + -85.6326403498911 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 85.6326403498911 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -7145,13 +8617,38 @@ void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Mn51_pf, dMn51_pf_dT; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors, pf_cache, Mn51_pf, dMn51_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Fe52_pf, dFe52_pf_dT; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors, pf_cache, Fe52_pf, dFe52_pf_dT); + + amrex::Real z_r = p_pf * Mn51_pf; + amrex::Real z_p = Fe52_pf; + + amrex::Real dz_r_dT = Mn51_pf * dp_pf_dT + p_pf * dMn51_pf_dT; + amrex::Real dz_p_dT = dFe52_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Mn51_to_He4_Cr48_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Co55 + p --> Ni56 + // Mn51 + p --> He4 + Cr48 rate = 0.0; drate_dT = 0.0; @@ -7161,12 +8658,12 @@ void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 58.73119795916718 + -6.476551190854941 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 6.476551190854941 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -7177,11 +8674,41 @@ void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Cr48_pf, dCr48_pf_dT; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors, pf_cache, Cr48_pf, dCr48_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Mn51_pf, dMn51_pf_dT; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors, pf_cache, Mn51_pf, dMn51_pf_dT); + + amrex::Real z_r = He4_pf * Cr48_pf; + amrex::Real z_p = p_pf * Mn51_pf; + + amrex::Real dz_r_dT = Cr48_pf * dHe4_pf_dT + He4_pf * dCr48_pf_dT; + amrex::Real dz_p_dT = Mn51_pf * dp_pf_dT + p_pf * dMn51_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ni56_to_He4_Fe52_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ni56 --> He4 + Fe52 @@ -7193,11 +8720,11 @@ void rate_Ni56_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 91.6226 + -92.801 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + ln_set_rate = 91.62258922810439 + -92.801099329237 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.801 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + dln_set_rate_dT9 = 92.801099329237 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; } @@ -7209,11 +8736,36 @@ void rate_Ni56_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Ni56_pf, dNi56_pf_dT; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors, pf_cache, Ni56_pf, dNi56_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Fe52_pf, dFe52_pf_dT; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors, pf_cache, Fe52_pf, dFe52_pf_dT); + + amrex::Real z_r = He4_pf * Fe52_pf; + amrex::Real z_p = Ni56_pf; + + amrex::Real dz_r_dT = Fe52_pf * dHe4_pf_dT + He4_pf * dFe52_pf_dT; + amrex::Real dz_p_dT = dNi56_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ni56_to_p_Co55_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ni56 --> p + Co55 @@ -7225,11 +8777,11 @@ void rate_Ni56_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 63.1318 + -83.1473 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + ln_set_rate = 63.131770608640906 + -83.14741674893808 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 83.1473 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + dln_set_rate_dT9 = 83.14741674893808 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; } @@ -7241,11 +8793,36 @@ void rate_Ni56_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Ni56_pf, dNi56_pf_dT; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors, pf_cache, Ni56_pf, dNi56_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Co55_pf, dCo55_pf_dT; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors, pf_cache, Co55_pf, dCo55_pf_dT); + + amrex::Real z_r = p_pf * Co55_pf; + amrex::Real z_p = Ni56_pf; + + amrex::Real dz_r_dT = Co55_pf * dp_pf_dT + p_pf * dCo55_pf_dT; + amrex::Real dz_p_dT = dNi56_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Co55_to_He4_Fe52_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Co55 + p --> He4 + Fe52 @@ -7257,11 +8834,11 @@ void rate_p_Co55_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, am amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 61.4434 + -9.65363 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + ln_set_rate = 61.443418619463486 + -9.65364776674457 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.65363 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + dln_set_rate_dT9 = 9.65364776674457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; } @@ -7273,6 +8850,36 @@ void rate_p_Co55_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Co55_pf, dCo55_pf_dT; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors, pf_cache, Co55_pf, dCo55_pf_dT); + + amrex::Real Fe52_pf, dFe52_pf_dT; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors, pf_cache, Fe52_pf, dFe52_pf_dT); + + amrex::Real z_r = He4_pf * Fe52_pf; + amrex::Real z_p = p_pf * Co55_pf; + + amrex::Real dz_r_dT = Fe52_pf * dHe4_pf_dT + He4_pf * dFe52_pf_dT; + amrex::Real dz_p_dT = Co55_pf * dp_pf_dT + p_pf * dCo55_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } @@ -7281,14 +8888,14 @@ AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); @@ -7299,16 +8906,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -7319,14 +8926,14 @@ AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); @@ -7337,16 +8944,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -7357,14 +8964,14 @@ AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); @@ -7375,16 +8982,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -7397,14 +9004,14 @@ void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex:: amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_removed); amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed); amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); } } @@ -7413,16 +9020,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -7435,14 +9042,14 @@ void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex:: amrex::Real r_ag = rate_eval.screened_rates(k_He4_Cr48_to_Fe52_removed); amrex::Real r_ap = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_removed); amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); } } @@ -7451,16 +9058,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -7473,14 +9080,14 @@ void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex:: amrex::Real r_ag = rate_eval.screened_rates(k_He4_Fe52_to_Ni56_removed); amrex::Real r_ap = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_removed); amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); } } @@ -7489,16 +9096,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -7514,6 +9121,8 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) amrex::Real rate; amrex::Real drate_dT; + part_fun::pf_cache_t pf_cache{}; + rate_N13_to_C13_weak_wc12(tfactors, rate, drate_dT); rate_eval.screened_rates(k_N13_to_C13_weak_wc12) = rate; if constexpr (std::is_same_v) { @@ -7559,181 +9168,7 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) rate_Mg22_to_Na22_weak_wc12(tfactors, rate, drate_dT); rate_eval.screened_rates(k_Mg22_to_Na22_weak_wc12) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg22_to_Na22_weak_wc12) = drate_dT; - - } - rate_N13_to_p_C12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_p_C12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12) = drate_dT; - - } - rate_N14_to_p_C13(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_N14_to_p_C13) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N14_to_p_C13) = drate_dT; - - } - rate_O14_to_p_N13(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_p_N13) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_p_N13) = drate_dT; - - } - rate_O15_to_p_N14(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_p_N14) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_p_N14) = drate_dT; - - } - rate_O16_to_p_N15(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O16_to_p_N15) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_p_N15) = drate_dT; - - } - rate_O16_to_He4_C12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O16_to_He4_C12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12) = drate_dT; - - } - rate_F17_to_p_O16(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_F17_to_p_O16) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_p_O16) = drate_dT; - - } - rate_F18_to_p_O17(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_F18_to_p_O17) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_p_O17) = drate_dT; - - } - rate_F18_to_He4_N14(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_F18_to_He4_N14) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_He4_N14) = drate_dT; - - } - rate_F19_to_p_O18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_F19_to_p_O18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_p_O18) = drate_dT; - - } - rate_F19_to_He4_N15(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_F19_to_He4_N15) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_He4_N15) = drate_dT; - - } - rate_Ne18_to_p_F17(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ne18_to_p_F17) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17) = drate_dT; - - } - rate_Ne18_to_He4_O14(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ne18_to_He4_O14) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14) = drate_dT; - - } - rate_Ne19_to_p_F18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ne19_to_p_F18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18) = drate_dT; - - } - rate_Ne19_to_He4_O15(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ne19_to_He4_O15) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15) = drate_dT; - - } - rate_Ne20_to_p_F19(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ne20_to_p_F19) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19) = drate_dT; - - } - rate_Ne20_to_He4_O16(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ne20_to_He4_O16) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16) = drate_dT; - - } - rate_Ne21_to_He4_O17(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ne21_to_He4_O17) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17) = drate_dT; - - } - rate_Na22_to_p_Ne21(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Na22_to_p_Ne21) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21) = drate_dT; - - } - rate_Na22_to_He4_F18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Na22_to_He4_F18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18) = drate_dT; - - } - rate_Na23_to_He4_F19(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Na23_to_He4_F19) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19) = drate_dT; - - } - rate_Mg22_to_He4_Ne18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Mg22_to_He4_Ne18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18) = drate_dT; - - } - rate_Mg24_to_p_Na23(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Mg24_to_p_Na23) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23) = drate_dT; - - } - rate_Mg24_to_He4_Ne20(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20) = drate_dT; - - } - rate_Si28_to_p_Al27(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Si28_to_p_Al27) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27) = drate_dT; - - } - rate_Si28_to_He4_Mg24(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Si28_to_He4_Mg24) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24) = drate_dT; - - } - rate_S32_to_p_P31(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_S32_to_p_P31) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31) = drate_dT; - - } - rate_S32_to_He4_Si28(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_S32_to_He4_Si28) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28) = drate_dT; - - } - rate_C12_to_He4_He4_He4(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_C12_to_He4_He4_He4) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mg22_to_Na22_weak_wc12) = drate_dT; } rate_p_C12_to_N13(tfactors, rate, drate_dT); @@ -7903,12 +9338,6 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_P31_to_S32) = drate_dT; - } - rate_He4_C12_to_p_N15(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_p_N15) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15) = drate_dT; - } rate_C12_C12_to_p_Na23(tfactors, rate, drate_dT); rate_eval.screened_rates(k_C12_C12_to_p_Na23) = rate; @@ -7927,48 +9356,18 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = drate_dT; - } - rate_He4_N14_to_p_O17(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_p_O17) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17) = drate_dT; - } rate_p_N15_to_He4_C12(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_N15_to_He4_C12) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12) = drate_dT; - } - rate_He4_N15_to_p_O18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_N15_to_p_O18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18) = drate_dT; - } rate_He4_O14_to_p_F17(tfactors, rate, drate_dT); rate_eval.screened_rates(k_He4_O14_to_p_F17) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17) = drate_dT; - } - rate_He4_O15_to_p_F18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_O15_to_p_F18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18) = drate_dT; - - } - rate_p_O16_to_He4_N13(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_He4_N13) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = drate_dT; - - } - rate_He4_O16_to_p_F19(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_p_F19) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19) = drate_dT; - } rate_C12_O16_to_p_Al27(tfactors, rate, drate_dT); rate_eval.screened_rates(k_C12_O16_to_p_Al27) = rate; @@ -8005,18 +9404,6 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15) = drate_dT; - } - rate_p_F17_to_He4_O14(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_F17_to_He4_O14) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14) = drate_dT; - - } - rate_He4_F17_to_p_Ne20(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_F17_to_p_Ne20) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20) = drate_dT; - } rate_p_F18_to_He4_O15(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_F18_to_He4_O15) = rate; @@ -8047,48 +9434,18 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17) = drate_dT; - } - rate_He4_Ne20_to_p_Na23(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23) = drate_dT; - - } - rate_p_Ne21_to_He4_F18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne21_to_He4_F18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18) = drate_dT; - - } - rate_p_Na22_to_He4_Ne19(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Na22_to_He4_Ne19) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na22_to_He4_Ne19) = drate_dT; - } rate_p_Na23_to_He4_Ne20(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Na23_to_He4_Ne20) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = drate_dT; - } - rate_He4_Mg24_to_p_Al27(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27) = drate_dT; - } rate_p_Al27_to_He4_Mg24(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Al27_to_He4_Mg24) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = drate_dT; - } - rate_He4_Si28_to_p_P31(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_p_P31) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31) = drate_dT; - } rate_p_P31_to_He4_Si28(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_P31_to_He4_Si28) = rate; @@ -8125,30 +9482,12 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed) = drate_dT; - } - rate_He4_S32_to_p_Cl35_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed) = drate_dT; - } rate_p_Cl35_to_Ar36_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed) = drate_dT; - } - rate_Ar36_to_He4_S32_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_He4_S32_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed) = drate_dT; - - } - rate_Ar36_to_p_Cl35_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed) = drate_dT; - } rate_p_Cl35_to_He4_S32_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed) = rate; @@ -8161,30 +9500,12 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed) = drate_dT; - } - rate_He4_Ar36_to_p_K39_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed) = drate_dT; - } rate_p_K39_to_Ca40_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_K39_to_Ca40_removed) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed) = drate_dT; - } - rate_Ca40_to_He4_Ar36_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed) = drate_dT; - - } - rate_Ca40_to_p_K39_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_p_K39_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed) = drate_dT; - } rate_p_K39_to_He4_Ar36_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed) = rate; @@ -8197,30 +9518,12 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed) = drate_dT; - } - rate_He4_Ca40_to_p_Sc43_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed) = drate_dT; - } rate_p_Sc43_to_Ti44_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed) = drate_dT; - } - rate_Ti44_to_He4_Ca40_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed) = drate_dT; - - } - rate_Ti44_to_p_Sc43_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed) = drate_dT; - } rate_p_Sc43_to_He4_Ca40_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed) = rate; @@ -8245,24 +9548,6 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed) = drate_dT; - } - rate_Cr48_to_He4_Ti44_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed) = drate_dT; - - } - rate_Cr48_to_p_V47_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_p_V47_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed) = drate_dT; - - } - rate_p_V47_to_He4_Ti44_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed) = drate_dT; - } rate_He4_Cr48_to_Fe52_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_He4_Cr48_to_Fe52_removed) = rate; @@ -8281,24 +9566,6 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed) = drate_dT; - } - rate_Fe52_to_He4_Cr48_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed) = drate_dT; - - } - rate_Fe52_to_p_Mn51_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed) = drate_dT; - - } - rate_p_Mn51_to_He4_Cr48_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed) = drate_dT; - } rate_He4_Fe52_to_Ni56_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_He4_Fe52_to_Ni56_removed) = rate; @@ -8318,22 +9585,364 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed) = drate_dT; } - rate_Ni56_to_He4_Fe52_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed) = rate; + rate_N13_to_p_C12_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + + } + rate_N14_to_p_C13_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_N14_to_p_C13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_to_p_C13_derived) = drate_dT; + + } + rate_O14_to_p_N13_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_O14_to_p_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_p_N13_derived) = drate_dT; + + } + rate_O15_to_p_N14_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_O15_to_p_N14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_p_N14_derived) = drate_dT; + + } + rate_O16_to_p_N15_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_O16_to_p_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_p_N15_derived) = drate_dT; + + } + rate_O16_to_He4_C12_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + + } + rate_F17_to_p_O16_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_F17_to_p_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_p_O16_derived) = drate_dT; + + } + rate_F18_to_p_O17_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_F18_to_p_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_p_O17_derived) = drate_dT; + + } + rate_F18_to_He4_N14_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_F18_to_He4_N14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived) = drate_dT; + + } + rate_F19_to_p_O18_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_F19_to_p_O18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_p_O18_derived) = drate_dT; + + } + rate_F19_to_He4_N15_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_F19_to_He4_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_derived) = drate_dT; + + } + rate_Ne18_to_p_F17_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ne18_to_p_F17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_derived) = drate_dT; + + } + rate_Ne18_to_He4_O14_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ne18_to_He4_O14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_derived) = drate_dT; + + } + rate_Ne19_to_p_F18_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ne19_to_p_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_derived) = drate_dT; + + } + rate_Ne19_to_He4_O15_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ne19_to_He4_O15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_derived) = drate_dT; + + } + rate_Ne20_to_p_F19_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ne20_to_p_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_derived) = drate_dT; + + } + rate_Ne20_to_He4_O16_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + + } + rate_Ne21_to_He4_O17_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ne21_to_He4_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17_derived) = drate_dT; + + } + rate_Na22_to_p_Ne21_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Na22_to_p_Ne21_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_derived) = drate_dT; + + } + rate_Na22_to_He4_F18_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Na22_to_He4_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_derived) = drate_dT; + + } + rate_Na23_to_He4_F19_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Na23_to_He4_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19_derived) = drate_dT; + + } + rate_Mg22_to_He4_Ne18_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Mg22_to_He4_Ne18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18_derived) = drate_dT; + + } + rate_Mg24_to_p_Na23_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + + } + rate_Mg24_to_He4_Ne20_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + + } + rate_Si28_to_p_Al27_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + + } + rate_Si28_to_He4_Mg24_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + + } + rate_S32_to_p_P31_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + + } + rate_S32_to_He4_Si28_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + + } + rate_C12_to_He4_He4_He4_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + + } + rate_He4_C12_to_p_N15_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_C12_to_p_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15_derived) = drate_dT; + + } + rate_He4_N14_to_p_O17_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_N14_to_p_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17_derived) = drate_dT; + + } + rate_He4_N15_to_p_O18_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_N15_to_p_O18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18_derived) = drate_dT; + + } + rate_He4_O15_to_p_F18_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_O15_to_p_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18_derived) = drate_dT; + + } + rate_p_O16_to_He4_N13_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + + } + rate_He4_O16_to_p_F19_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_O16_to_p_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19_derived) = drate_dT; + + } + rate_p_F17_to_He4_O14_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_F17_to_He4_O14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14_derived) = drate_dT; + + } + rate_He4_F17_to_p_Ne20_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_F17_to_p_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_derived) = drate_dT; + + } + rate_He4_Ne20_to_p_Na23_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + + } + rate_p_Ne21_to_He4_F18_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Ne21_to_He4_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18_derived) = drate_dT; + + } + rate_p_Na22_to_He4_Ne19_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Na22_to_He4_Ne19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Na22_to_He4_Ne19_derived) = drate_dT; + + } + rate_He4_Mg24_to_p_Al27_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + + } + rate_He4_Si28_to_p_P31_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + + } + rate_He4_S32_to_p_Cl35_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived_removed) = drate_dT; + + } + rate_Ar36_to_He4_S32_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived_removed) = drate_dT; + + } + rate_Ar36_to_p_Cl35_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived_removed) = drate_dT; + + } + rate_He4_Ar36_to_p_K39_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived_removed) = drate_dT; + + } + rate_Ca40_to_He4_Ar36_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived_removed) = drate_dT; + + } + rate_Ca40_to_p_K39_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived_removed) = drate_dT; + + } + rate_He4_Ca40_to_p_Sc43_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived_removed) = drate_dT; + + } + rate_Ti44_to_He4_Ca40_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived_removed) = drate_dT; + + } + rate_Ti44_to_p_Sc43_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived_removed) = drate_dT; + + } + rate_Cr48_to_He4_Ti44_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived_removed) = drate_dT; + + } + rate_Cr48_to_p_V47_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived_removed) = drate_dT; + + } + rate_p_V47_to_He4_Ti44_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed) = drate_dT; + + } + rate_Fe52_to_He4_Cr48_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived_removed) = drate_dT; + + } + rate_Fe52_to_p_Mn51_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived_removed) = drate_dT; + + } + rate_p_Mn51_to_He4_Cr48_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived_removed) = drate_dT; + + } + rate_Ni56_to_He4_Fe52_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived_removed) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived_removed) = drate_dT; } - rate_Ni56_to_p_Co55_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_p_Co55_removed) = rate; + rate_Ni56_to_p_Co55_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived_removed) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived_removed) = drate_dT; } - rate_p_Co55_to_He4_Fe52_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed) = rate; + rate_p_Co55_to_He4_Fe52_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived_removed) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed) = drate_dT; + rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived_removed) = drate_dT; } diff --git a/networks/subch_simple/actual_network.H b/networks/subch_simple/actual_network.H index bffe785a28..12a2fe864f 100644 --- a/networks/subch_simple/actual_network.H +++ b/networks/subch_simple/actual_network.H @@ -30,67 +30,67 @@ namespace network return 0.0_rt; } else if constexpr (spec == He4) { - return 28.29566_rt; + return 28.295662457999697_rt; } else if constexpr (spec == C12) { - return 92.16172800000001_rt; + return 92.16173498399803_rt; } else if constexpr (spec == N13) { - return 94.105219_rt; + return 94.10522604799917_rt; } else if constexpr (spec == N14) { - return 104.65859599999999_rt; + return 104.65860734799753_rt; } else if constexpr (spec == O16) { - return 127.619296_rt; + return 127.6193154119992_rt; } else if constexpr (spec == F18) { - return 137.369484_rt; + return 137.36950247599816_rt; } else if constexpr (spec == Ne20) { - return 160.6448_rt; + return 160.64482384000075_rt; } else if constexpr (spec == Ne21) { - return 167.405973_rt; + return 167.40598973999658_rt; } else if constexpr (spec == Na22) { - return 174.144674_rt; + return 174.14457080400098_rt; } else if constexpr (spec == Na23) { - return 186.56433900000002_rt; + return 186.56435240400242_rt; } else if constexpr (spec == Mg24) { - return 198.25701600000002_rt; + return 198.2570479679962_rt; } else if constexpr (spec == Al27) { - return 224.951931_rt; + return 224.95193723199915_rt; } else if constexpr (spec == Si28) { - return 236.536832_rt; + return 236.53684539599638_rt; } else if constexpr (spec == P31) { - return 262.91617699999995_rt; + return 262.9161999600037_rt; } else if constexpr (spec == S32) { - return 271.78012800000005_rt; + return 271.78016372399725_rt; } else if constexpr (spec == Ar36) { - return 306.716724_rt; + return 306.7167469519991_rt; } else if constexpr (spec == Ca40) { - return 342.05212000000006_rt; + return 342.05218528000114_rt; } else if constexpr (spec == Ti44) { - return 375.47488000000004_rt; + return 375.47496160800074_rt; } else if constexpr (spec == Cr48) { - return 411.46891200000005_rt; + return 411.4679399359957_rt; } else if constexpr (spec == Fe52) { - return 447.697848_rt; + return 447.6996182639923_rt; } else if constexpr (spec == Ni56) { - return 483.995624_rt; + return 483.9956965919919_rt; } @@ -148,100 +148,100 @@ namespace Rates enum NetworkRates { - k_N13_to_p_C12 = 1, - k_O16_to_He4_C12 = 2, - k_F18_to_He4_N14 = 3, - k_Ne20_to_He4_O16 = 4, - k_Na22_to_p_Ne21 = 5, - k_Na22_to_He4_F18 = 6, - k_Mg24_to_p_Na23 = 7, - k_Mg24_to_He4_Ne20 = 8, - k_Si28_to_p_Al27 = 9, - k_Si28_to_He4_Mg24 = 10, - k_S32_to_p_P31 = 11, - k_S32_to_He4_Si28 = 12, - k_C12_to_He4_He4_He4 = 13, - k_p_C12_to_N13 = 14, - k_He4_C12_to_O16 = 15, - k_He4_N14_to_F18 = 16, - k_He4_O16_to_Ne20 = 17, - k_He4_F18_to_Na22 = 18, - k_He4_Ne20_to_Mg24 = 19, - k_p_Ne21_to_Na22 = 20, - k_p_Na23_to_Mg24 = 21, - k_He4_Mg24_to_Si28 = 22, - k_p_Al27_to_Si28 = 23, - k_He4_Si28_to_S32 = 24, - k_p_P31_to_S32 = 25, - k_C12_C12_to_p_Na23 = 26, - k_C12_C12_to_He4_Ne20 = 27, - k_He4_N13_to_p_O16 = 28, - k_p_O16_to_He4_N13 = 29, - k_C12_O16_to_p_Al27 = 30, - k_C12_O16_to_He4_Mg24 = 31, - k_O16_O16_to_p_P31 = 32, - k_O16_O16_to_He4_Si28 = 33, - k_He4_F18_to_p_Ne21 = 34, - k_He4_Ne20_to_p_Na23 = 35, - k_p_Ne21_to_He4_F18 = 36, - k_p_Na23_to_He4_Ne20 = 37, - k_He4_Mg24_to_p_Al27 = 38, - k_p_Al27_to_He4_Mg24 = 39, - k_He4_Si28_to_p_P31 = 40, - k_p_P31_to_He4_Si28 = 41, - k_He4_He4_He4_to_C12 = 42, - k_C12_C12_to_Mg24_modified = 43, - k_O16_O16_to_S32_modified = 44, - k_C12_O16_to_Si28_modified = 45, - k_He4_S32_to_Ar36_removed = 46, - k_He4_S32_to_p_Cl35_removed = 47, - k_p_Cl35_to_Ar36_removed = 48, - k_Ar36_to_He4_S32_removed = 49, - k_Ar36_to_p_Cl35_removed = 50, - k_p_Cl35_to_He4_S32_removed = 51, - k_He4_Ar36_to_Ca40_removed = 52, - k_He4_Ar36_to_p_K39_removed = 53, - k_p_K39_to_Ca40_removed = 54, - k_Ca40_to_He4_Ar36_removed = 55, - k_Ca40_to_p_K39_removed = 56, - k_p_K39_to_He4_Ar36_removed = 57, - k_He4_Ca40_to_Ti44_removed = 58, - k_He4_Ca40_to_p_Sc43_removed = 59, - k_p_Sc43_to_Ti44_removed = 60, - k_Ti44_to_He4_Ca40_removed = 61, - k_Ti44_to_p_Sc43_removed = 62, - k_p_Sc43_to_He4_Ca40_removed = 63, - k_He4_Ti44_to_Cr48_removed = 64, - k_He4_Ti44_to_p_V47_removed = 65, - k_p_V47_to_Cr48_removed = 66, - k_Cr48_to_He4_Ti44_removed = 67, - k_Cr48_to_p_V47_removed = 68, - k_p_V47_to_He4_Ti44_removed = 69, - k_He4_Cr48_to_Fe52_removed = 70, - k_He4_Cr48_to_p_Mn51_removed = 71, - k_p_Mn51_to_Fe52_removed = 72, - k_Fe52_to_He4_Cr48_removed = 73, - k_Fe52_to_p_Mn51_removed = 74, - k_p_Mn51_to_He4_Cr48_removed = 75, - k_He4_Fe52_to_Ni56_removed = 76, - k_He4_Fe52_to_p_Co55_removed = 77, - k_p_Co55_to_Ni56_removed = 78, - k_Ni56_to_He4_Fe52_removed = 79, - k_Ni56_to_p_Co55_removed = 80, - k_p_Co55_to_He4_Fe52_removed = 81, - k_S32_He4_to_Ar36_approx = 82, - k_Ar36_to_S32_He4_approx = 83, - k_Ar36_He4_to_Ca40_approx = 84, - k_Ca40_to_Ar36_He4_approx = 85, - k_Ca40_He4_to_Ti44_approx = 86, - k_Ti44_to_Ca40_He4_approx = 87, - k_Ti44_He4_to_Cr48_approx = 88, - k_Cr48_to_Ti44_He4_approx = 89, - k_Cr48_He4_to_Fe52_approx = 90, - k_Fe52_to_Cr48_He4_approx = 91, - k_Fe52_He4_to_Ni56_approx = 92, - k_Ni56_to_Fe52_He4_approx = 93, - NumRates = k_Ni56_to_Fe52_He4_approx + k_p_C12_to_N13 = 1, + k_He4_C12_to_O16 = 2, + k_He4_N14_to_F18 = 3, + k_He4_O16_to_Ne20 = 4, + k_He4_F18_to_Na22 = 5, + k_He4_Ne20_to_Mg24 = 6, + k_p_Ne21_to_Na22 = 7, + k_p_Na23_to_Mg24 = 8, + k_He4_Mg24_to_Si28 = 9, + k_p_Al27_to_Si28 = 10, + k_He4_Si28_to_S32 = 11, + k_p_P31_to_S32 = 12, + k_C12_C12_to_p_Na23 = 13, + k_C12_C12_to_He4_Ne20 = 14, + k_He4_N13_to_p_O16 = 15, + k_C12_O16_to_p_Al27 = 16, + k_C12_O16_to_He4_Mg24 = 17, + k_O16_O16_to_p_P31 = 18, + k_O16_O16_to_He4_Si28 = 19, + k_He4_F18_to_p_Ne21 = 20, + k_p_Na23_to_He4_Ne20 = 21, + k_p_Al27_to_He4_Mg24 = 22, + k_p_P31_to_He4_Si28 = 23, + k_He4_He4_He4_to_C12 = 24, + k_C12_C12_to_Mg24_modified = 25, + k_O16_O16_to_S32_modified = 26, + k_C12_O16_to_Si28_modified = 27, + k_He4_S32_to_Ar36_removed = 28, + k_p_Cl35_to_Ar36_removed = 29, + k_p_Cl35_to_He4_S32_removed = 30, + k_He4_Ar36_to_Ca40_removed = 31, + k_p_K39_to_Ca40_removed = 32, + k_p_K39_to_He4_Ar36_removed = 33, + k_He4_Ca40_to_Ti44_removed = 34, + k_p_Sc43_to_Ti44_removed = 35, + k_p_Sc43_to_He4_Ca40_removed = 36, + k_He4_Ti44_to_Cr48_removed = 37, + k_He4_Ti44_to_p_V47_removed = 38, + k_p_V47_to_Cr48_removed = 39, + k_He4_Cr48_to_Fe52_removed = 40, + k_He4_Cr48_to_p_Mn51_removed = 41, + k_p_Mn51_to_Fe52_removed = 42, + k_He4_Fe52_to_Ni56_removed = 43, + k_He4_Fe52_to_p_Co55_removed = 44, + k_p_Co55_to_Ni56_removed = 45, + k_S32_He4_to_Ar36_approx = 46, + k_Ar36_to_S32_He4_approx = 47, + k_Ar36_He4_to_Ca40_approx = 48, + k_Ca40_to_Ar36_He4_approx = 49, + k_Ca40_He4_to_Ti44_approx = 50, + k_Ti44_to_Ca40_He4_approx = 51, + k_Ti44_He4_to_Cr48_approx = 52, + k_Cr48_to_Ti44_He4_approx = 53, + k_Cr48_He4_to_Fe52_approx = 54, + k_Fe52_to_Cr48_He4_approx = 55, + k_Fe52_He4_to_Ni56_approx = 56, + k_Ni56_to_Fe52_He4_approx = 57, + k_N13_to_p_C12_derived = 58, + k_O16_to_He4_C12_derived = 59, + k_F18_to_He4_N14_derived = 60, + k_Ne20_to_He4_O16_derived = 61, + k_Na22_to_p_Ne21_derived = 62, + k_Na22_to_He4_F18_derived = 63, + k_Mg24_to_p_Na23_derived = 64, + k_Mg24_to_He4_Ne20_derived = 65, + k_Si28_to_p_Al27_derived = 66, + k_Si28_to_He4_Mg24_derived = 67, + k_S32_to_p_P31_derived = 68, + k_S32_to_He4_Si28_derived = 69, + k_C12_to_He4_He4_He4_derived = 70, + k_p_O16_to_He4_N13_derived = 71, + k_He4_Ne20_to_p_Na23_derived = 72, + k_p_Ne21_to_He4_F18_derived = 73, + k_He4_Mg24_to_p_Al27_derived = 74, + k_He4_Si28_to_p_P31_derived = 75, + k_He4_S32_to_p_Cl35_derived_removed = 76, + k_Ar36_to_He4_S32_derived_removed = 77, + k_Ar36_to_p_Cl35_derived_removed = 78, + k_He4_Ar36_to_p_K39_derived_removed = 79, + k_Ca40_to_He4_Ar36_derived_removed = 80, + k_Ca40_to_p_K39_derived_removed = 81, + k_He4_Ca40_to_p_Sc43_derived_removed = 82, + k_Ti44_to_He4_Ca40_derived_removed = 83, + k_Ti44_to_p_Sc43_derived_removed = 84, + k_Cr48_to_He4_Ti44_derived_removed = 85, + k_Cr48_to_p_V47_derived_removed = 86, + k_p_V47_to_He4_Ti44_derived_removed = 87, + k_Fe52_to_He4_Cr48_derived_removed = 88, + k_Fe52_to_p_Mn51_derived_removed = 89, + k_p_Mn51_to_He4_Cr48_derived_removed = 90, + k_Ni56_to_He4_Fe52_derived_removed = 91, + k_Ni56_to_p_Co55_derived_removed = 92, + k_p_Co55_to_He4_Fe52_derived_removed = 93, + NumRates = k_p_Co55_to_He4_Fe52_derived_removed }; // number of reaclib rates @@ -258,99 +258,99 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "N13_to_p_C12", // 1, - "O16_to_He4_C12", // 2, - "F18_to_He4_N14", // 3, - "Ne20_to_He4_O16", // 4, - "Na22_to_p_Ne21", // 5, - "Na22_to_He4_F18", // 6, - "Mg24_to_p_Na23", // 7, - "Mg24_to_He4_Ne20", // 8, - "Si28_to_p_Al27", // 9, - "Si28_to_He4_Mg24", // 10, - "S32_to_p_P31", // 11, - "S32_to_He4_Si28", // 12, - "C12_to_He4_He4_He4", // 13, - "p_C12_to_N13", // 14, - "He4_C12_to_O16", // 15, - "He4_N14_to_F18", // 16, - "He4_O16_to_Ne20", // 17, - "He4_F18_to_Na22", // 18, - "He4_Ne20_to_Mg24", // 19, - "p_Ne21_to_Na22", // 20, - "p_Na23_to_Mg24", // 21, - "He4_Mg24_to_Si28", // 22, - "p_Al27_to_Si28", // 23, - "He4_Si28_to_S32", // 24, - "p_P31_to_S32", // 25, - "C12_C12_to_p_Na23", // 26, - "C12_C12_to_He4_Ne20", // 27, - "He4_N13_to_p_O16", // 28, - "p_O16_to_He4_N13", // 29, - "C12_O16_to_p_Al27", // 30, - "C12_O16_to_He4_Mg24", // 31, - "O16_O16_to_p_P31", // 32, - "O16_O16_to_He4_Si28", // 33, - "He4_F18_to_p_Ne21", // 34, - "He4_Ne20_to_p_Na23", // 35, - "p_Ne21_to_He4_F18", // 36, - "p_Na23_to_He4_Ne20", // 37, - "He4_Mg24_to_p_Al27", // 38, - "p_Al27_to_He4_Mg24", // 39, - "He4_Si28_to_p_P31", // 40, - "p_P31_to_He4_Si28", // 41, - "He4_He4_He4_to_C12", // 42, - "C12_C12_to_Mg24_modified", // 43, - "O16_O16_to_S32_modified", // 44, - "C12_O16_to_Si28_modified", // 45, - "He4_S32_to_Ar36_removed", // 46, - "He4_S32_to_p_Cl35_removed", // 47, - "p_Cl35_to_Ar36_removed", // 48, - "Ar36_to_He4_S32_removed", // 49, - "Ar36_to_p_Cl35_removed", // 50, - "p_Cl35_to_He4_S32_removed", // 51, - "He4_Ar36_to_Ca40_removed", // 52, - "He4_Ar36_to_p_K39_removed", // 53, - "p_K39_to_Ca40_removed", // 54, - "Ca40_to_He4_Ar36_removed", // 55, - "Ca40_to_p_K39_removed", // 56, - "p_K39_to_He4_Ar36_removed", // 57, - "He4_Ca40_to_Ti44_removed", // 58, - "He4_Ca40_to_p_Sc43_removed", // 59, - "p_Sc43_to_Ti44_removed", // 60, - "Ti44_to_He4_Ca40_removed", // 61, - "Ti44_to_p_Sc43_removed", // 62, - "p_Sc43_to_He4_Ca40_removed", // 63, - "He4_Ti44_to_Cr48_removed", // 64, - "He4_Ti44_to_p_V47_removed", // 65, - "p_V47_to_Cr48_removed", // 66, - "Cr48_to_He4_Ti44_removed", // 67, - "Cr48_to_p_V47_removed", // 68, - "p_V47_to_He4_Ti44_removed", // 69, - "He4_Cr48_to_Fe52_removed", // 70, - "He4_Cr48_to_p_Mn51_removed", // 71, - "p_Mn51_to_Fe52_removed", // 72, - "Fe52_to_He4_Cr48_removed", // 73, - "Fe52_to_p_Mn51_removed", // 74, - "p_Mn51_to_He4_Cr48_removed", // 75, - "He4_Fe52_to_Ni56_removed", // 76, - "He4_Fe52_to_p_Co55_removed", // 77, - "p_Co55_to_Ni56_removed", // 78, - "Ni56_to_He4_Fe52_removed", // 79, - "Ni56_to_p_Co55_removed", // 80, - "p_Co55_to_He4_Fe52_removed", // 81, - "S32_He4_to_Ar36_approx", // 82, - "Ar36_to_S32_He4_approx", // 83, - "Ar36_He4_to_Ca40_approx", // 84, - "Ca40_to_Ar36_He4_approx", // 85, - "Ca40_He4_to_Ti44_approx", // 86, - "Ti44_to_Ca40_He4_approx", // 87, - "Ti44_He4_to_Cr48_approx", // 88, - "Cr48_to_Ti44_He4_approx", // 89, - "Cr48_He4_to_Fe52_approx", // 90, - "Fe52_to_Cr48_He4_approx", // 91, - "Fe52_He4_to_Ni56_approx", // 92, - "Ni56_to_Fe52_He4_approx" // 93, + "p_C12_to_N13", // 1, + "He4_C12_to_O16", // 2, + "He4_N14_to_F18", // 3, + "He4_O16_to_Ne20", // 4, + "He4_F18_to_Na22", // 5, + "He4_Ne20_to_Mg24", // 6, + "p_Ne21_to_Na22", // 7, + "p_Na23_to_Mg24", // 8, + "He4_Mg24_to_Si28", // 9, + "p_Al27_to_Si28", // 10, + "He4_Si28_to_S32", // 11, + "p_P31_to_S32", // 12, + "C12_C12_to_p_Na23", // 13, + "C12_C12_to_He4_Ne20", // 14, + "He4_N13_to_p_O16", // 15, + "C12_O16_to_p_Al27", // 16, + "C12_O16_to_He4_Mg24", // 17, + "O16_O16_to_p_P31", // 18, + "O16_O16_to_He4_Si28", // 19, + "He4_F18_to_p_Ne21", // 20, + "p_Na23_to_He4_Ne20", // 21, + "p_Al27_to_He4_Mg24", // 22, + "p_P31_to_He4_Si28", // 23, + "He4_He4_He4_to_C12", // 24, + "C12_C12_to_Mg24_modified", // 25, + "O16_O16_to_S32_modified", // 26, + "C12_O16_to_Si28_modified", // 27, + "He4_S32_to_Ar36_removed", // 28, + "p_Cl35_to_Ar36_removed", // 29, + "p_Cl35_to_He4_S32_removed", // 30, + "He4_Ar36_to_Ca40_removed", // 31, + "p_K39_to_Ca40_removed", // 32, + "p_K39_to_He4_Ar36_removed", // 33, + "He4_Ca40_to_Ti44_removed", // 34, + "p_Sc43_to_Ti44_removed", // 35, + "p_Sc43_to_He4_Ca40_removed", // 36, + "He4_Ti44_to_Cr48_removed", // 37, + "He4_Ti44_to_p_V47_removed", // 38, + "p_V47_to_Cr48_removed", // 39, + "He4_Cr48_to_Fe52_removed", // 40, + "He4_Cr48_to_p_Mn51_removed", // 41, + "p_Mn51_to_Fe52_removed", // 42, + "He4_Fe52_to_Ni56_removed", // 43, + "He4_Fe52_to_p_Co55_removed", // 44, + "p_Co55_to_Ni56_removed", // 45, + "S32_He4_to_Ar36_approx", // 46, + "Ar36_to_S32_He4_approx", // 47, + "Ar36_He4_to_Ca40_approx", // 48, + "Ca40_to_Ar36_He4_approx", // 49, + "Ca40_He4_to_Ti44_approx", // 50, + "Ti44_to_Ca40_He4_approx", // 51, + "Ti44_He4_to_Cr48_approx", // 52, + "Cr48_to_Ti44_He4_approx", // 53, + "Cr48_He4_to_Fe52_approx", // 54, + "Fe52_to_Cr48_He4_approx", // 55, + "Fe52_He4_to_Ni56_approx", // 56, + "Ni56_to_Fe52_He4_approx", // 57, + "N13_to_p_C12_derived", // 58, + "O16_to_He4_C12_derived", // 59, + "F18_to_He4_N14_derived", // 60, + "Ne20_to_He4_O16_derived", // 61, + "Na22_to_p_Ne21_derived", // 62, + "Na22_to_He4_F18_derived", // 63, + "Mg24_to_p_Na23_derived", // 64, + "Mg24_to_He4_Ne20_derived", // 65, + "Si28_to_p_Al27_derived", // 66, + "Si28_to_He4_Mg24_derived", // 67, + "S32_to_p_P31_derived", // 68, + "S32_to_He4_Si28_derived", // 69, + "C12_to_He4_He4_He4_derived", // 70, + "p_O16_to_He4_N13_derived", // 71, + "He4_Ne20_to_p_Na23_derived", // 72, + "p_Ne21_to_He4_F18_derived", // 73, + "He4_Mg24_to_p_Al27_derived", // 74, + "He4_Si28_to_p_P31_derived", // 75, + "He4_S32_to_p_Cl35_derived_removed", // 76, + "Ar36_to_He4_S32_derived_removed", // 77, + "Ar36_to_p_Cl35_derived_removed", // 78, + "He4_Ar36_to_p_K39_derived_removed", // 79, + "Ca40_to_He4_Ar36_derived_removed", // 80, + "Ca40_to_p_K39_derived_removed", // 81, + "He4_Ca40_to_p_Sc43_derived_removed", // 82, + "Ti44_to_He4_Ca40_derived_removed", // 83, + "Ti44_to_p_Sc43_derived_removed", // 84, + "Cr48_to_He4_Ti44_derived_removed", // 85, + "Cr48_to_p_V47_derived_removed", // 86, + "p_V47_to_He4_Ti44_derived_removed", // 87, + "Fe52_to_He4_Cr48_derived_removed", // 88, + "Fe52_to_p_Mn51_derived_removed", // 89, + "p_Mn51_to_He4_Cr48_derived_removed", // 90, + "Ni56_to_He4_Fe52_derived_removed", // 91, + "Ni56_to_p_Co55_derived_removed", // 92, + "p_Co55_to_He4_Fe52_derived_removed" // 93, }; } diff --git a/networks/subch_simple/actual_network_data.cpp b/networks/subch_simple/actual_network_data.cpp index f21d5b2b48..d34fb8d23f 100644 --- a/networks/subch_simple/actual_network_data.cpp +++ b/networks/subch_simple/actual_network_data.cpp @@ -5,48 +5,30 @@ namespace NSE_INDEX { AMREX_GPU_MANAGED amrex::Array2D rate_indices { - -1, -1, 3, -1, 0, 2, -1, - -1, -1, 5, -1, 1, 2, -1, - -1, -1, 6, -1, 1, 4, -1, - -1, -1, 7, -1, 1, 5, -1, - -1, -1, 9, -1, 0, 8, -1, - -1, -1, 9, -1, 1, 6, -1, - -1, -1, 11, -1, 0, 10, -1, - -1, -1, 11, -1, 1, 7, -1, - -1, -1, 13, -1, 0, 12, -1, - -1, -1, 13, -1, 1, 11, -1, - -1, -1, 15, -1, 0, 14, -1, - -1, -1, 15, -1, 1, 13, -1, - -1, -1, 2, 1, 1, 1, -1, - -1, 0, 2, -1, -1, 3, 1, - -1, 1, 2, -1, -1, 5, 2, - -1, 1, 4, -1, -1, 6, 3, - -1, 1, 5, -1, -1, 7, 4, - -1, 1, 6, -1, -1, 9, 6, - -1, 1, 7, -1, -1, 11, 8, - -1, 0, 8, -1, -1, 9, 5, - -1, 0, 10, -1, -1, 11, 7, - -1, 1, 11, -1, -1, 13, 10, - -1, 0, 12, -1, -1, 13, 9, - -1, 1, 13, -1, -1, 15, 12, - -1, 0, 14, -1, -1, 15, 11, + -1, 0, 2, -1, -1, 3, 58, + -1, 1, 2, -1, -1, 5, 59, + -1, 1, 4, -1, -1, 6, 60, + -1, 1, 5, -1, -1, 7, 61, + -1, 1, 6, -1, -1, 9, 63, + -1, 1, 7, -1, -1, 11, 65, + -1, 0, 8, -1, -1, 9, 62, + -1, 0, 10, -1, -1, 11, 64, + -1, 1, 11, -1, -1, 13, 67, + -1, 0, 12, -1, -1, 13, 66, + -1, 1, 13, -1, -1, 15, 69, + -1, 0, 14, -1, -1, 15, 68, -1, 2, 2, -1, 0, 10, -1, -1, 2, 2, -1, 1, 7, -1, - -1, 1, 3, -1, 0, 5, 29, - -1, 0, 5, -1, 1, 3, -1, + -1, 1, 3, -1, 0, 5, 71, -1, 2, 5, -1, 0, 12, -1, -1, 2, 5, -1, 1, 11, -1, -1, 5, 5, -1, 0, 14, -1, -1, 5, 5, -1, 1, 13, -1, - -1, 1, 6, -1, 0, 8, 36, - -1, 1, 7, -1, 0, 10, -1, - -1, 0, 8, -1, 1, 6, -1, - -1, 0, 10, -1, 1, 7, 35, - -1, 1, 11, -1, 0, 12, -1, - -1, 0, 12, -1, 1, 11, 38, - -1, 1, 13, -1, 0, 14, -1, - -1, 0, 14, -1, 1, 13, 40, - 1, 1, 1, -1, -1, 2, 13, + -1, 1, 6, -1, 0, 8, 73, + -1, 0, 10, -1, 1, 7, 72, + -1, 0, 12, -1, 1, 11, 74, + -1, 0, 14, -1, 1, 13, 75, + 1, 1, 1, -1, -1, 2, 70, -1, 2, 2, -1, -1, 11, -1, -1, 5, 5, -1, -1, 15, -1, -1, 2, 5, -1, -1, 13, -1, @@ -68,6 +50,36 @@ namespace NSE_INDEX -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1, 15, -1, -1, 16, 47, + -1, -1, 16, -1, 1, 15, -1, + -1, 1, 16, -1, -1, 17, 49, + -1, -1, 17, -1, 1, 16, -1, + -1, 1, 17, -1, -1, 18, 51, + -1, -1, 18, -1, 1, 17, -1, + -1, 1, 18, -1, -1, 19, 53, + -1, -1, 19, -1, 1, 18, -1, + -1, 1, 19, -1, -1, 20, 55, + -1, -1, 20, -1, 1, 19, -1, + -1, 1, 20, -1, -1, 21, 57, + -1, -1, 21, -1, 1, 20, -1, + -1, -1, 3, -1, 0, 2, -1, + -1, -1, 5, -1, 1, 2, -1, + -1, -1, 6, -1, 1, 4, -1, + -1, -1, 7, -1, 1, 5, -1, + -1, -1, 9, -1, 0, 8, -1, + -1, -1, 9, -1, 1, 6, -1, + -1, -1, 11, -1, 0, 10, -1, + -1, -1, 11, -1, 1, 7, -1, + -1, -1, 13, -1, 0, 12, -1, + -1, -1, 13, -1, 1, 11, -1, + -1, -1, 15, -1, 0, 14, -1, + -1, -1, 15, -1, 1, 13, -1, + -1, -1, 2, 1, 1, 1, -1, + -1, 0, 5, -1, 1, 3, -1, + -1, 1, 7, -1, 0, 10, -1, + -1, 0, 8, -1, 1, 6, -1, + -1, 1, 11, -1, 0, 12, -1, + -1, 1, 13, -1, 0, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -85,19 +97,7 @@ namespace NSE_INDEX -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, 1, 15, -1, -1, 16, 83, - -1, -1, 16, -1, 1, 15, -1, - -1, 1, 16, -1, -1, 17, 85, - -1, -1, 17, -1, 1, 16, -1, - -1, 1, 17, -1, -1, 18, 87, - -1, -1, 18, -1, 1, 17, -1, - -1, 1, 18, -1, -1, 19, 89, - -1, -1, 19, -1, 1, 18, -1, - -1, 1, 19, -1, -1, 20, 91, - -1, -1, 20, -1, 1, 19, -1, - -1, 1, 20, -1, -1, 21, 93, - -1, -1, 21, -1, 1, 20, -1 + -1, -1, -1, -1, -1, -1, -1 }; } #endif diff --git a/networks/subch_simple/actual_rhs.H b/networks/subch_simple/actual_rhs.H index 17481e41d7..e86231b182 100644 --- a/networks/subch_simple/actual_rhs.H +++ b/networks/subch_simple/actual_rhs.H @@ -76,9 +76,9 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_C12_to_N13) = 0.0; } - rate_eval.screened_rates(k_N13_to_p_C12) = 0.0; + rate_eval.screened_rates(k_N13_to_p_C12_derived) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12) = 0.0; + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = 0.0; } } @@ -87,9 +87,9 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = 0.0; } - rate_eval.screened_rates(k_p_O16_to_He4_N13) = 0.0; + rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = 0.0; + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = 0.0; } } @@ -113,13 +113,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_N13_to_p_C12); - rate_eval.screened_rates(k_N13_to_p_C12) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_N13_to_p_C12); - rate_eval.dscreened_rates_dT(k_N13_to_p_C12) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_C12_to_N13); rate_eval.screened_rates(k_p_C12_to_N13) *= scor; if constexpr (std::is_same_v) { @@ -127,6 +120,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_C12_to_N13) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_N13_to_p_C12_derived); + rate_eval.screened_rates(k_N13_to_p_C12_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived); + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 6.0_rt, 12.0_rt); @@ -139,13 +139,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_O16_to_He4_C12); - rate_eval.screened_rates(k_O16_to_He4_C12) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_to_He4_C12); - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_C12_to_O16); rate_eval.screened_rates(k_He4_C12_to_O16) *= scor; if constexpr (std::is_same_v) { @@ -153,6 +146,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_C12_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_O16_to_He4_C12_derived); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived); + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 14.0_rt); @@ -165,13 +165,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_F18_to_He4_N14); - rate_eval.screened_rates(k_F18_to_He4_N14) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F18_to_He4_N14); - rate_eval.dscreened_rates_dT(k_F18_to_He4_N14) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_N14_to_F18); rate_eval.screened_rates(k_He4_N14_to_F18) *= scor; if constexpr (std::is_same_v) { @@ -179,6 +172,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_N14_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_F18_to_He4_N14_derived); + rate_eval.screened_rates(k_F18_to_He4_N14_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived); + rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 16.0_rt); @@ -191,13 +191,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Ne20_to_He4_O16); - rate_eval.screened_rates(k_Ne20_to_He4_O16) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16); - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_O16_to_Ne20); rate_eval.screened_rates(k_He4_O16_to_Ne20) *= scor; if constexpr (std::is_same_v) { @@ -205,30 +198,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 10.0_rt, 21.0_rt); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_Na22_to_p_Ne21); - rate_eval.screened_rates(k_Na22_to_p_Ne21) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21); - rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Ne21_to_Na22); - rate_eval.screened_rates(k_p_Ne21_to_Na22) *= scor; + ratraw = rate_eval.screened_rates(k_Ne20_to_He4_O16_derived); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22); - rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived); + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -243,13 +217,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Na22_to_He4_F18); - rate_eval.screened_rates(k_Na22_to_He4_F18) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18); - rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_F18_to_Na22); rate_eval.screened_rates(k_He4_F18_to_Na22) *= scor; if constexpr (std::is_same_v) { @@ -264,82 +231,75 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Ne21_to_He4_F18); - rate_eval.screened_rates(k_p_Ne21_to_He4_F18) *= scor; + ratraw = rate_eval.screened_rates(k_Na22_to_He4_F18_derived); + rate_eval.screened_rates(k_Na22_to_He4_F18_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_derived); + rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Ne21_to_He4_F18_derived); + rate_eval.screened_rates(k_p_Ne21_to_He4_F18_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18); - rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18_derived); + rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 20.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Mg24_to_p_Na23); - rate_eval.screened_rates(k_Mg24_to_p_Na23) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23); - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Na23_to_Mg24); - rate_eval.screened_rates(k_p_Na23_to_Mg24) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24); - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Ne20_to_p_Na23); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ne20_to_Mg24); + rate_eval.screened_rates(k_He4_Ne20_to_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23); - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24); + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Na23_to_He4_Ne20); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20) *= scor; + ratraw = rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20); - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived); + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 20.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 10.0_rt, 21.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Mg24_to_He4_Ne20); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20) *= scor; + ratraw = rate_eval.screened_rates(k_p_Ne21_to_Na22); + rate_eval.screened_rates(k_p_Ne21_to_Na22) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20); - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22); + rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Ne20_to_Mg24); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24) *= scor; + ratraw = rate_eval.screened_rates(k_Na22_to_p_Ne21_derived); + rate_eval.screened_rates(k_Na22_to_p_Ne21_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24); - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_derived); + rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_derived) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 13.0_rt, 27.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -349,32 +309,32 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Si28_to_p_Al27); - rate_eval.screened_rates(k_Si28_to_p_Al27) *= scor; + ratraw = rate_eval.screened_rates(k_p_Na23_to_Mg24); + rate_eval.screened_rates(k_p_Na23_to_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27); - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24); + rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Al27_to_Si28); - rate_eval.screened_rates(k_p_Al27_to_Si28) *= scor; + ratraw = rate_eval.screened_rates(k_p_Na23_to_He4_Ne20); + rate_eval.screened_rates(k_p_Na23_to_He4_Ne20) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28); - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20); + rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Mg24_to_p_Al27); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27) *= scor; + ratraw = rate_eval.screened_rates(k_Mg24_to_p_Na23_derived); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27); - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived); + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Al27_to_He4_Mg24); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived); + rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24); - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived); + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -389,13 +349,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Si28_to_He4_Mg24); - rate_eval.screened_rates(k_Si28_to_He4_Mg24) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24); - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_Mg24_to_Si28); rate_eval.screened_rates(k_He4_Mg24_to_Si28) *= scor; if constexpr (std::is_same_v) { @@ -403,9 +356,16 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived); + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 15.0_rt, 31.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 13.0_rt, 27.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -415,32 +375,32 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_S32_to_p_P31); - rate_eval.screened_rates(k_S32_to_p_P31) *= scor; + ratraw = rate_eval.screened_rates(k_p_Al27_to_Si28); + rate_eval.screened_rates(k_p_Al27_to_Si28) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_p_P31); - rate_eval.dscreened_rates_dT(k_S32_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28); + rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_P31_to_S32); - rate_eval.screened_rates(k_p_P31_to_S32) *= scor; + ratraw = rate_eval.screened_rates(k_p_Al27_to_He4_Mg24); + rate_eval.screened_rates(k_p_Al27_to_He4_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_S32); - rate_eval.dscreened_rates_dT(k_p_P31_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24); + rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Si28_to_p_P31); - rate_eval.screened_rates(k_He4_Si28_to_p_P31) *= scor; + ratraw = rate_eval.screened_rates(k_Si28_to_p_Al27_derived); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31); - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived); + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_P31_to_He4_Si28); - rate_eval.screened_rates(k_p_P31_to_He4_Si28) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived); + rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28); - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived); + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -455,13 +415,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_S32_to_He4_Si28); - rate_eval.screened_rates(k_S32_to_He4_Si28) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28); - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_Si28_to_S32); rate_eval.screened_rates(k_He4_Si28_to_S32) *= scor; if constexpr (std::is_same_v) { @@ -469,43 +422,51 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_S32_to_He4_Si28_derived); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived); + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 4.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 15.0_rt, 31.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - - { - constexpr auto scn_fac2 = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 4.0_rt, 8.0_rt); - - - static_assert(scn_fac2.z1 == 2.0_rt); - - - actual_screen(pstate, scn_fac2, scor2, dscor2_dt); - + ratraw = rate_eval.screened_rates(k_p_P31_to_S32); + rate_eval.screened_rates(k_p_P31_to_S32) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_S32); + rate_eval.dscreened_rates_dT(k_p_P31_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_p_P31_to_He4_Si28); + rate_eval.screened_rates(k_p_P31_to_He4_Si28) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28); + rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + } - ratraw = rate_eval.screened_rates(k_C12_to_He4_He4_He4); - rate_eval.screened_rates(k_C12_to_He4_He4_He4) *= scor * scor2; + ratraw = rate_eval.screened_rates(k_S32_to_p_P31_derived); + rate_eval.screened_rates(k_S32_to_p_P31_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4); - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; + dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived); + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_He4_He4_to_C12); - rate_eval.screened_rates(k_He4_He4_He4_to_C12) *= scor * scor2; + ratraw = rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived); + rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12); - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived); + rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -560,11 +521,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O16_to_He4_N13); - rate_eval.screened_rates(k_p_O16_to_He4_N13) *= scor; + ratraw = rate_eval.screened_rates(k_p_O16_to_He4_N13_derived); + rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13); - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived); + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -634,6 +595,45 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 4.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + + { + constexpr auto scn_fac2 = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 4.0_rt, 8.0_rt); + + + static_assert(scn_fac2.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac2, scor2, dscor2_dt); + + } + + + ratraw = rate_eval.screened_rates(k_He4_He4_He4_to_C12); + rate_eval.screened_rates(k_He4_He4_He4_to_C12) *= scor * scor2; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12); + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; + } + + ratraw = rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived); + rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) *= scor * scor2; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived); + rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; + } + + { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 16.0_rt, 32.0_rt); @@ -652,11 +652,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ar36_to_He4_S32_removed); - rate_eval.screened_rates(k_Ar36_to_He4_S32_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived_removed); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed); - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived_removed); + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -671,11 +671,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed) *= scor; + ratraw = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived_removed); + rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed); - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived_removed); + rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); @@ -685,11 +685,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived_removed); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed); - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived_removed); + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); @@ -718,11 +718,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived_removed); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed); - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived_removed); + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -737,11 +737,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived_removed); + rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed); - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived_removed); + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); @@ -751,11 +751,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ca40_to_p_K39_removed); - rate_eval.screened_rates(k_Ca40_to_p_K39_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ca40_to_p_K39_derived_removed); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed); - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived_removed); + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); @@ -784,11 +784,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived_removed); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed); - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived_removed); + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -803,11 +803,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived_removed); + rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed); - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived_removed); + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); @@ -817,11 +817,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived_removed); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed); - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived_removed); + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); @@ -850,11 +850,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived_removed); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed); - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived_removed); + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -883,18 +883,18 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Cr48_to_p_V47_removed); - rate_eval.screened_rates(k_Cr48_to_p_V47_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Cr48_to_p_V47_derived_removed); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed); - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived_removed); + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed) *= scor; + ratraw = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived_removed); + rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed); - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed); + rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -923,18 +923,18 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived_removed); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed); - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived_removed); + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed) *= scor; + ratraw = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived_removed); + rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived_removed); + rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -956,11 +956,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived_removed); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed); - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived_removed); + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -989,18 +989,18 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived_removed); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed); - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived_removed); + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed) *= scor; + ratraw = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived_removed); + rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived_removed); + rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1022,11 +1022,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ni56_to_p_Co55_removed); - rate_eval.screened_rates(k_Ni56_to_p_Co55_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived_removed); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed); - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived_removed); + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1130,37 +1130,37 @@ void rhs_nuc(const burn_t& state, using namespace Rates; ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12)*Y(N13)) + - (-screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21)*Y(Na22)) + - (-screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27)*Y(Si28)) + - (-screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31)*Y(S32)) + + (-screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (-screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_p_Na23)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_p_P31)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*Y(Si28)*state.rho); + (screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (-screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12)*Y(O16)) + - (-screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14)*Y(F18)) + - (-screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16)*Y(Ne20)) + - (-screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18)*Y(Na22)) + - (-screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28)*Y(S32)) + + (-screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (-screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (-screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (-screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (-screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_He4_Si28)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*Y(H1)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*Y(Si28)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4)*Y(C12)) + + (-screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + @@ -1169,27 +1169,27 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_Fe52_He4_approx)*Y(Ni56)); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12)*Y(O16)) + + (-screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + -screened_rates(k_C12_C12_to_p_Na23)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_C12_to_He4_Ne20)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*Y(O16)*state.rho + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4)*Y(C12)) + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + -screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(N13) = - (screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12)*Y(N13)) + - (-screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13)*Y(O16)*Y(H1)*state.rho); + (screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(N14) = - (-screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14)*Y(F18)); + (-screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)); ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + -screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_O16_O16_to_p_P31)*amrex::Math::powi<2>(Y(O16))*state.rho + @@ -1198,58 +1198,58 @@ void rhs_nuc(const burn_t& state, -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(F18) = - (screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14)*Y(F18)) + - (-screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18)*Y(Na22)) + - (-screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*Y(H1)*state.rho); + (screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (-screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (-screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho); ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20)*Y(Mg24)) + + (screened_rates(k_He4_O16_to_Ne20)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*Y(Ne20)*state.rho); + (screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Ne21) = - (-screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21)*Y(Na22)) + - (screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*Y(H1)*state.rho); + (-screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho); ydot_nuc(Na22) = - (screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Na22_to_He4_F18)*Y(Na22)) + - (screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + -screened_rates(k_Na22_to_p_Ne21)*Y(Na22)); + (screened_rates(k_He4_F18_to_Na22)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*Y(H1)*state.rho + -screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)); ydot_nuc(Na23) = - (-screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23)*Y(Mg24)) + + (-screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_p_Na23)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*Y(Ne20)*state.rho); + (-screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24)*Y(Si28)) + + (screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*Y(O16)*state.rho + - (screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + 0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(Al27) = - (-screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27)*Y(Si28)) + + (-screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*Y(O16)*state.rho + - (-screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*Y(Mg24)*state.rho); + (-screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28)*Y(S32)) + + (screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_p_Al27_to_Si28)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_He4_Si28)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(P31) = - (-screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31)*Y(S32)) + + (-screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_p_P31)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28)*Y(S32)) + - (screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31)*Y(S32)) + + (screened_rates(k_He4_Si28_to_S32)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_p_P31_to_S32)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -1334,58 +1334,58 @@ void jac_nuc(const burn_t& state, amrex::Real scratch; - scratch = -screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*state.rho - screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho - screened_rates(k_p_O16_to_He4_N13)*Y(O16)*state.rho - screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32)*Y(P31)*state.rho; + scratch = -screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*state.rho - screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32)*Y(P31)*state.rho; jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23)*Y(Ne20)*state.rho + screened_rates(k_He4_Si28_to_p_P31)*Y(Si28)*state.rho; + scratch = screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho - screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; jac.set(H1, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12); + scratch = screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(H1, O16, scratch); scratch = screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho; jac.set(H1, F18, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Ne21_to_He4_F18)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(H1)*state.rho; + scratch = -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(H1)*state.rho; jac.set(H1, Ne21, scratch); - scratch = screened_rates(k_Na22_to_p_Ne21); + scratch = screened_rates(k_Na22_to_p_Ne21_derived); jac.set(H1, Na22, scratch); scratch = -screened_rates(k_p_Na23_to_He4_Ne20)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23); + scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); scratch = -screened_rates(k_p_Al27_to_He4_Mg24)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27); + scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); scratch = -screened_rates(k_p_P31_to_He4_Si28)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32)*Y(H1)*state.rho; jac.set(H1, P31, scratch); - scratch = screened_rates(k_S32_to_p_P31); + scratch = screened_rates(k_S32_to_p_P31_derived); jac.set(H1, S32, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho + screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*state.rho + screened_rates(k_p_O16_to_He4_N13)*Y(O16)*state.rho + screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho; + scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho - screened_rates(k_He4_F18_to_Na22)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27)*Y(Mg24)*state.rho - screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho - screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23)*Y(Ne20)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho - screened_rates(k_He4_Si28_to_S32)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho - screened_rates(k_He4_F18_to_Na22)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho - screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho - screened_rates(k_He4_Si28_to_S32)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4) - screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho; jac.set(He4, C12, scratch); scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho; @@ -1394,37 +1394,37 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho; jac.set(He4, N14, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12) + screened_rates(k_p_O16_to_He4_N13)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(He4, O16, scratch); - scratch = screened_rates(k_F18_to_He4_N14) - screened_rates(k_He4_F18_to_Na22)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho; + scratch = screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_He4_F18_to_Na22)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho; jac.set(He4, F18, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16); + scratch = -screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_p_Ne21_to_He4_F18)*Y(H1)*state.rho; + scratch = screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho; jac.set(He4, Ne21, scratch); - scratch = screened_rates(k_Na22_to_He4_F18); + scratch = screened_rates(k_Na22_to_He4_F18_derived); jac.set(He4, Na22, scratch); scratch = screened_rates(k_p_Na23_to_He4_Ne20)*Y(H1)*state.rho; jac.set(He4, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20); + scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24); + scratch = -screened_rates(k_He4_Si28_to_S32)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); scratch = screened_rates(k_p_P31_to_He4_Si28)*Y(H1)*state.rho; jac.set(He4, P31, scratch); - scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28); + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); jac.set(He4, S32, scratch); scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(He4)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx); @@ -1451,16 +1451,16 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4) - screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; jac.set(C12, C12, scratch); - scratch = screened_rates(k_N13_to_p_C12); + scratch = screened_rates(k_N13_to_p_C12_derived); jac.set(C12, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12); + scratch = -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); - scratch = screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho + screened_rates(k_p_O16_to_He4_N13)*Y(O16)*state.rho; + scratch = screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho; @@ -1469,10 +1469,10 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12); + scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); - scratch = screened_rates(k_p_O16_to_He4_N13)*Y(H1)*state.rho; + scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); scratch = -screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho; @@ -1481,10 +1481,10 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho; jac.set(N14, N14, scratch); - scratch = screened_rates(k_F18_to_He4_N14); + scratch = screened_rates(k_F18_to_He4_N14_derived); jac.set(N14, F18, scratch); - scratch = -screened_rates(k_p_O16_to_He4_N13)*Y(O16)*state.rho; + scratch = -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(O16, H1, scratch); scratch = screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho; @@ -1496,13 +1496,13 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho; jac.set(O16, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12) - screened_rates(k_p_O16_to_He4_N13)*Y(H1)*state.rho; + scratch = -screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(O16, O16, scratch); - scratch = screened_rates(k_Ne20_to_He4_O16); + scratch = screened_rates(k_Ne20_to_He4_O16_derived); jac.set(O16, Ne20, scratch); - scratch = screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*state.rho; + scratch = screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho; jac.set(F18, H1, scratch); scratch = -screened_rates(k_He4_F18_to_Na22)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho + screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho; @@ -1511,19 +1511,19 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho; jac.set(F18, N14, scratch); - scratch = -screened_rates(k_F18_to_He4_N14) - screened_rates(k_He4_F18_to_Na22)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho; + scratch = -screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_He4_F18_to_Na22)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho; jac.set(F18, F18, scratch); - scratch = screened_rates(k_p_Ne21_to_He4_F18)*Y(H1)*state.rho; + scratch = screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho; jac.set(F18, Ne21, scratch); - scratch = screened_rates(k_Na22_to_He4_F18); + scratch = screened_rates(k_Na22_to_He4_F18_derived); jac.set(F18, Na22, scratch); scratch = screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho; jac.set(Ne20, H1, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho; + scratch = -screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20)*Y(C12)*state.rho; @@ -1532,16 +1532,16 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_He4_O16_to_Ne20)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16); + scratch = -screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); jac.set(Ne20, Ne20, scratch); scratch = screened_rates(k_p_Na23_to_He4_Ne20)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); - scratch = screened_rates(k_Mg24_to_He4_Ne20); + scratch = screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(Ne20, Mg24, scratch); - scratch = -screened_rates(k_p_Ne21_to_He4_F18)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho; + scratch = -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho; jac.set(Ne21, H1, scratch); scratch = screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho; @@ -1550,10 +1550,10 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_He4_F18_to_p_Ne21)*Y(He4)*state.rho; jac.set(Ne21, F18, scratch); - scratch = -screened_rates(k_p_Ne21_to_He4_F18)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(H1)*state.rho; + scratch = -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22)*Y(H1)*state.rho; jac.set(Ne21, Ne21, scratch); - scratch = screened_rates(k_Na22_to_p_Ne21); + scratch = screened_rates(k_Na22_to_p_Ne21_derived); jac.set(Ne21, Na22, scratch); scratch = screened_rates(k_p_Ne21_to_Na22)*Y(Ne21)*state.rho; @@ -1568,31 +1568,31 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_Ne21_to_Na22)*Y(H1)*state.rho; jac.set(Na22, Ne21, scratch); - scratch = -screened_rates(k_Na22_to_He4_F18) - screened_rates(k_Na22_to_p_Ne21); + scratch = -screened_rates(k_Na22_to_He4_F18_derived) - screened_rates(k_Na22_to_p_Ne21_derived); jac.set(Na22, Na22, scratch); scratch = -screened_rates(k_p_Na23_to_He4_Ne20)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23)*Y(Ne20)*state.rho; + scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23)*Y(C12)*state.rho; jac.set(Na23, C12, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); scratch = -screened_rates(k_p_Na23_to_He4_Ne20)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24)*Y(H1)*state.rho; jac.set(Na23, Na23, scratch); - scratch = screened_rates(k_Mg24_to_p_Na23); + scratch = screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Na23, Mg24, scratch); scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_Mg24)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24)*Y(O16)*state.rho; @@ -1607,19 +1607,19 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_Na23_to_Mg24)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20) - screened_rates(k_Mg24_to_p_Na23); + scratch = -screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); - scratch = screened_rates(k_Si28_to_He4_Mg24); + scratch = screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(Mg24, Si28, scratch); scratch = -screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27)*Y(Mg24)*state.rho; + scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); scratch = screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho; @@ -1628,19 +1628,19 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_C12_O16_to_p_Al27)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); scratch = -screened_rates(k_p_Al27_to_He4_Mg24)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); - scratch = screened_rates(k_Si28_to_p_Al27); + scratch = screened_rates(k_Si28_to_p_Al27_derived); jac.set(Al27, Si28, scratch); scratch = screened_rates(k_p_Al27_to_Si28)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_S32)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31)*Y(Si28)*state.rho; + scratch = screened_rates(k_He4_Mg24_to_Si28)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_S32)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; @@ -1655,31 +1655,31 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_Al27_to_Si28)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24) - screened_rates(k_Si28_to_p_Al27); + scratch = -screened_rates(k_He4_Si28_to_S32)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); scratch = screened_rates(k_p_P31_to_He4_Si28)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); - scratch = screened_rates(k_S32_to_He4_Si28); + scratch = screened_rates(k_S32_to_He4_Si28_derived); jac.set(Si28, S32, scratch); scratch = -screened_rates(k_p_P31_to_He4_Si28)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31)*Y(Si28)*state.rho; + scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); scratch = 1.0*screened_rates(k_O16_O16_to_p_P31)*Y(O16)*state.rho; jac.set(P31, O16, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); scratch = -screened_rates(k_p_P31_to_He4_Si28)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32)*Y(H1)*state.rho; jac.set(P31, P31, scratch); - scratch = screened_rates(k_S32_to_p_P31); + scratch = screened_rates(k_S32_to_p_P31_derived); jac.set(P31, S32, scratch); scratch = screened_rates(k_p_P31_to_S32)*Y(P31)*state.rho; @@ -1697,7 +1697,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_P31_to_S32)*Y(H1)*state.rho; jac.set(S32, P31, scratch); - scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28) - screened_rates(k_S32_to_p_P31); + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_p_P31_derived); jac.set(S32, S32, scratch); scratch = screened_rates(k_Ar36_to_S32_He4_approx); diff --git a/networks/subch_simple/partition_functions.H b/networks/subch_simple/partition_functions.H index 950f83acae..b5646c765f 100644 --- a/networks/subch_simple/partition_functions.H +++ b/networks/subch_simple/partition_functions.H @@ -13,6 +13,489 @@ using namespace Species; namespace part_fun { + constexpr int npts_1 = 72; + + // this is T9 + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real temp_array_1[npts_1] = { + 0.01, 0.15, 0.2, 0.3, 0.4, + 0.5, 0.6, 0.7, 0.8, 0.9, + 1.0, 1.5, 2.0, 2.5, 3.0, + 3.5, 4.0, 4.5, 5.0, 6.0, + 7.0, 8.0, 9.0, 10.0, 12.0, + 14.0, 16.0, 18.0, 20.0, 22.0, + 24.0, 26.0, 28.0, 30.0, 35.0, + 40.0, 45.0, 50.0, 55.0, 60.0, + 65.0, 70.0, 75.0, 80.0, 85.0, + 90.0, 95.0, 100.0, 105.0, 110.0, + 115.0, 120.0, 125.0, 130.0, 135.0, + 140.0, 145.0, 150.0, 155.0, 160.0, + 165.0, 170.0, 175.0, 180.0, 190.0, + 200.0, 210.0, 220.0, 230.0, 240.0, + 250.0, 275.0, + }; + + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real O16_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.012837224705172217, + 0.037426497940623665, 0.07188200730612537, 0.12057393120584989, 0.1846914308175988, 0.2624510897304295, + 0.3463529744506387, 0.437750562820388, 0.534026106056135, 0.6344772701607315, 0.8981764834976765, + 1.1760912590556813, 1.4668676203541096, 1.7641761323903307, 2.0644579892269186, 2.367355921026019, + 2.667452952889954, 2.9656719712201065, 3.2624510897304293, 3.5550944485783194, 3.845098040014257, + 4.133538908370218, 4.419955748489758, 4.704150516839799, 4.986771734266245, 5.267171728403014, + 5.547774705387822, 5.8267225201689925, 6.103803720955957, 6.380211241711606, 6.6551384348113825, + 6.929929560084588, 7.204119982655925, 7.477121254719663, 7.748962861256161, 8.021189299069938, + 8.292256071356476, 8.562292864456476, 8.832508912706237, 9.100370545117563, 9.640481436970422, + 10.178976947293169, 10.714329759745233, 11.250420002308894, 11.785329835010767, 12.320146286111054, + 12.856124444242301, 14.195899652409233, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real F18_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.00860017176191757, 0.02530586526477026, 0.04921802267018165, + 0.08635983067474823, 0.12385164096708581, 0.1673173347481761, 0.20682587603184974, 0.28330122870354957, + 0.35024801833416286, 0.4065401804339551, 0.45331834004703764, 0.4941545940184428, 0.6646419755561255, + 0.756636108245848, 0.8419848045901139, 0.9232440186302766, 1.0043213737826426, 1.08278537031645, + 1.1643528557844371, 1.250420002308894, 1.3384564936046048, 1.429752280002408, 1.6748611407378116, + 1.9405164849325673, 2.220108088040055, 2.505149978319906, 2.7930916001765804, 3.0827853703164503, + 3.369215857410143, 3.6570558528571038, 3.9434945159061026, 4.230448921378274, 4.514547752660286, + 4.800029359244134, 5.086359830674748, 5.371067862271737, 5.657055852857104, 5.94299959336604, + 6.230448921378274, 6.515873843711679, 6.803457115648414, 7.089905111439398, 7.378397900948138, + 7.667452952889954, 7.956168430475364, 8.24551266781415, 8.534026106056135, 8.823474229170301, + 9.113943352306837, 9.403120521175818, 9.69460519893357, 9.984977126415494, 10.568201724066995, + 11.152288344383056, 11.73798732633343, 12.324282455297693, 12.913813852383717, 13.503790683057181, + 14.096910013008056, 15.584331224367531, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ne20_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 6.9486561213582446e-06, 0.00016586881316040883, 0.0011034421778731533, 0.003892457497077877, + 0.009540974939696452, 0.018595240218299815, 0.03107544483336982, 0.04661767038571622, 0.0846241727916796, + 0.12822183093465686, 0.174311933665943, 0.22124805254602342, 0.2683385291343481, 0.36172783601759284, + 0.456366033129043, 0.5514499979728752, 0.6483600109809317, 0.7466341989375788, 0.8481891169913987, + 0.9532763366673044, 1.0644579892269186, 1.1789769472931695, 1.3031960574204888, 1.6434526764861874, + 2.0170333392987803, 2.4099331233312946, 2.8068580295188172, 3.2013971243204513, 3.5899496013257077, + 3.9731278535996988, 4.352182518111363, 4.725911632295048, 5.096910013008056, 5.465382851448418, + 5.830588668685144, 6.193124598354462, 6.556302500767288, 6.916980047320382, 7.276461804173244, + 7.6344772701607315, 7.991669007379949, 8.348304863048162, 8.703291378118662, 9.056904851336473, + 9.411619705963231, 9.763427993562937, 10.117271295655764, 10.46686762035411, 10.818225893613956, + 11.170261715394957, 11.519827993775719, 11.869231719730976, 12.217483944213907, 12.916453948549925, + 13.61384182187607, 14.3096301674259, 15.004321373782643, 15.702430536445526, 16.399673721481037, + 17.096910013008056, 18.838849090737256, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ne21_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 8.685880952436748e-07, 2.4754079983896385e-05, + 0.0001901793368385613, 0.0007372402163824667, 0.0019404293040471109, 0.0040039218205739505, 0.007021925578680666, + 0.010986057727319889, 0.04118891376750491, 0.07777221055393521, 0.11230632139519969, 0.14260436993417835, + 0.16888829052162924, 0.19197861038694297, 0.21269992944898236, 0.23172922294680387, 0.26667282493464145, + 0.2996105757244402, 0.3321030146619489, 0.3650139334448046, 0.3988146649899236, 0.46982201597816303, + 0.5465426634781311, 0.6283889300503115, 0.7176705030022621, 0.8142475957319202, 0.9180303367848801, + 1.0293837776852097, 1.14921911265538, 1.276461804173244, 1.4082399653118496, 1.760422483423212, + 2.1271047983648077, 2.499687082618404, 2.870403905279027, 3.2380461031287955, 3.603144372620182, + 3.965671971220107, 4.326335860928752, 4.683947130751513, 5.041392685158225, 5.396199347095736, + 5.752048447819439, 6.107209969647869, 6.4623979978989565, 6.817565369559781, 7.173186268412274, + 7.5276299008713385, 7.8819549713396, 8.23552844690755, 8.5910646070265, 8.944975908412047, + 9.298853076409706, 9.653212513775344, 10.008600171761918, 10.361727836017593, 10.716837723299525, + 11.071882007306126, 11.424881636631067, 11.780317312140152, 12.133538908370218, 12.844477175745682, + 13.55509444857832, 14.267171728403014, 14.979548374704095, 15.693726948923647, 16.40823996531185, + 17.123851640967086, 18.923244018630278, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Na22_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 4.342942647204277e-07, 2.605759074128604e-06, 1.3028639028478182e-05, 4.559852671908958e-05, 0.00011984873864003523, + 0.0002626687122755098, 0.002992810584370353, 0.010836979076306525, 0.02428653620880802, 0.04242704733870039, + 0.06402310268617777, 0.0879676561420024, 0.11338308526345185, 0.13961150376071624, 0.19275584832811388, + 0.2451455832343637, 0.2958922043442712, 0.3448263511644293, 0.39212883410565064, 0.48287358360875376, + 0.5717088318086876, 0.6627578316815741, 0.756636108245848, 0.8561244442423004, 0.9633155113861113, + 1.0791812460476249, 1.2013971243204515, 1.3283796034387378, 1.4638929889859074, 1.8215135284047732, + 2.1931245983544616, 2.5705429398818973, 2.9474337218870508, 3.322219294733919, 3.6954816764901977, + 4.068185861746161, 4.4361626470407565, 4.804820678721162, 5.173186268412274, 5.540329474790874, + 5.907411360774586, 6.27415784926368, 6.642464520242122, 7.008600171761918, 7.378397900948138, + 7.746634198937579, 8.113943352306837, 8.482873583608754, 8.851258348719075, 9.220108088040055, + 9.588831725594208, 9.957607287060096, 10.32633586092875, 10.695481676490198, 11.064457989226918, + 11.4345689040342, 11.80413943233535, 12.173186268412275, 12.544068044350276, 13.285557309007775, + 14.02938377768521, 14.773054693364262, 15.518513939877888, 16.264817823009537, 17.012837224705173, + 17.76492298464989, 19.64933485871214, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Na23_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 1.737174453219938e-06, + 2.3885539658322847e-05, 0.00013113713282427166, 0.0004423207528904243, 0.0010999766245234138, 0.002232173197636284, + 0.003929471989446119, 0.021128907257497758, 0.0479649055541949, 0.07726249885377773, 0.10525805048344758, + 0.13079227003361293, 0.15390201926318714, 0.17503899265296466, 0.1947232524871551, 0.23147162936712468, + 0.26668504599022796, 0.3016913566252569, 0.33713446730536967, 0.37335950050705796, 0.4487063199050799, + 0.5314789170422551, 0.6211762817750351, 0.7218106152125465, 0.8344207036815325, 0.9590413923210936, + 1.0934216851622351, 1.2405492482825997, 1.3926969532596658, 1.5514499979728753, 1.9628426812012425, + 2.383815365980431, 2.803457115648414, 3.220108088040055, 3.6344772701607315, 4.045322978786658, + 4.453318340047038, 4.857935264719429, 5.26245108973043, 5.664641975556125, 6.064457989226918, + 6.466867620354109, 6.867467487859051, 7.267171728403014, 7.666517980554881, 8.064457989226918, + 8.463892988985908, 8.861534410859038, 9.260071387985075, 9.656098202012831, 10.05307844348342, + 10.450249108319362, 10.846337112129806, 11.243038048686294, 11.638489256954637, 12.03342375548695, + 12.429752280002408, 12.826074802700827, 13.222716471147583, 13.6170003411209, 14.40823996531185, + 15.20139712432045, 15.993876914941211, 16.787460474518415, 17.582063362911708, 18.378397900948137, + 19.17609125905568, 21.173186268412273, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Mg24_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 4.342942647204277e-07, 5.471765757979972e-05, 0.0007714899373308072, 0.0037633124724497638, 0.010764115210255058, + 0.022625058328435314, 0.039160607597355665, 0.05951911533271758, 0.08262238957783377, 0.13324118689139802, + 0.185518640557017, 0.2370005304649223, 0.2870228837145503, 0.3357157930198095, 0.43136376415898736, + 0.5263392773898441, 0.6253124509616739, 0.7307822756663892, 0.8463371121298052, 0.974971994298069, + 1.1172712956557642, 1.2741578492636798, 1.4424797690644486, 1.6232492903979006, 2.103803720955957, + 2.598790506763115, 3.089905111439398, 3.5774917998372255, 4.05307844348342, 4.52244423350632, + 4.984527313343793, 5.440909082065218, 5.894869656745253, 6.344392273685111, 6.791690649020118, + 7.235528446907549, 7.678518379040114, 8.12057393120585, 8.558708570533165, 8.99563519459755, + 9.431363764158988, 9.866287339084195, 10.301029995663981, 10.732393759822969, 11.164352855784438, + 11.594392550375426, 12.02530586526477, 12.453318340047037, 12.881384656770573, 13.3096301674259, + 13.736396502276643, 14.161368002234974, 14.588831725594208, 15.012837224705173, 15.86569605991607, + 16.715167357848458, 17.56466606425209, 18.413299764081252, 19.26245108973043, 20.113943352306837, + 20.96284268120124, 23.0899051114394, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Al27_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 8.685880952436748e-07, 3.4743419578801875e-06, + 1.0422942490878872e-05, 0.00032429686817590634, 0.0018833542475028369, 0.005477808032249925, 0.011239204769804157, + 0.018904286378932662, 0.028126564553716336, 0.03862016194970278, 0.05018673657450416, 0.07608019569340023, + 0.10530099179798433, 0.13774106877747655, 0.1734986149135784, 0.2127888058397363, 0.30319605742048883, + 0.4099331233312945, 0.5352941200427705, 0.6794278966121189, 0.8394780473741984, 1.0128372247051722, + 1.1958996524092338, 1.3873898263387294, 1.5843312243675307, 1.783903579272735, 2.287801729930226, + 2.7944880466591697, 3.296665190261531, 3.7944880466591697, 4.2878017299302265, 4.779596491257824, + 5.269512944217916, 5.7558748556724915, 6.2405492482825995, 6.725094521081469, 7.209515014542631, + 7.691081492122969, 8.173186268412275, 8.653212513775344, 9.133538908370218, 9.611723308007342, + 10.089905111439398, 10.568201724066995, 11.045322978786658, 11.521138083704036, 11.997386384397313, + 12.472756449317213, 12.947923619831727, 13.423245873936809, 13.89707700320942, 14.371067862271737, + 14.845098040014257, 15.320146286111054, 15.79309160017658, 16.267171728403014, 17.2148438480477, + 18.161368002234976, 19.110589710299248, 20.060697840353612, 21.012837224705173, 21.96284268120124, + 22.915927211697117, 25.305351369446623, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Si28_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 2.1714669808675565e-06, 7.121845527843468e-05, 0.0005624812393818786, 0.002223099674110693, + 0.0059171580771474625, 0.01228240711882553, 0.021577095617092278, 0.03370716078346824, 0.06502557053071237, + 0.10275227725738852, 0.14387160800291654, 0.18660350439861528, 0.2302807913268337, 0.3222192947339193, + 0.42324587393680785, 0.541579243946581, 0.6839471307515121, 0.8518696007297664, 1.0413926851582251, + 1.250420002308894, 1.4727564493172123, 1.7024305364455252, 1.9375178920173466, 2.5314789170422554, + 3.12057393120585, 3.7024305364455254, 4.271841606536499, 4.834420703681532, 5.389166084364533, + 5.937517892017347, 6.481442628502305, 7.021189299069938, 7.557507201905658, 8.089905111439398, + 8.622214022966295, 9.14921911265538, 9.675778341674086, 10.198657086954423, 10.721810615212547, + 11.2405492482826, 11.75966784468963, 12.276461804173245, 12.791690649020119, 13.305351369446624, + 13.818225893613956, 14.330413773349191, 14.840733234611807, 15.350248018334163, 15.859138297294532, + 16.367355921026018, 16.8750612633917, 17.38201704257487, 17.88874096068289, 18.90036712865647, + 19.911157608739977, 20.92116605063774, 21.9304395947667, 22.93951925261862, 23.948901760970212, + 24.958563883221967, 27.48572142648158, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real P31_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 4.342942647204277e-07, 4.820401221806151e-05, 0.0005624812393818786, 0.002468018295084159, 0.006670091319158333, + 0.013688955408210907, 0.023674199668938998, 0.0365510506801258, 0.05215275629691827, 0.09085986215557587, + 0.13887811232360858, 0.19608052467040615, 0.2628929908553992, 0.33982852740425823, 0.5237464668115644, + 0.7419390777291989, 0.9827233876685454, 1.235528446907549, 1.4899584794248346, 1.7442929831226763, + 1.9960736544852753, 2.24551266781415, 2.4913616938342726, 2.733999286538387, 3.330413773349191, + 3.9132839017604186, 4.48572142648158, 5.049218022670182, 5.608526033577194, 6.164352855784437, + 6.714329759745233, 7.264817823009537, 7.812913356642856, 8.359835482339887, 8.90687353472207, + 9.453318340047037, 9.997823080745725, 10.54282542695918, 11.086359830674748, 11.629409599102718, + 12.170261715394957, 12.712649701627212, 13.255272505103306, 13.79448804665917, 14.334453751150932, + 14.874481817699467, 15.414973347970818, 15.953276336667304, 16.492760389026838, 17.02938377768521, + 17.570542939881896, 18.10720996964787, 18.64738297011462, 19.187520720836464, 20.264817823009537, + 21.342422680822207, 22.42160392686983, 23.503790683057183, 24.5854607295085, 25.66931688056611, + 26.75511226639507, 29.477121254719663, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real S32_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 5.211502513843472e-06, 6.948155872801058e-05, 0.0003893875360542875, + 0.001336870159627728, 0.003378232401258555, 0.00696337755678715, 0.012456734172197398, 0.030114157908450765, + 0.05748428585387722, 0.0950053699501746, 0.14295136988131382, 0.20165707691270435, 0.3521825181113625, + 0.5502283530550941, 0.787460474518415, 1.0569048513364727, 1.3404441148401183, 1.631443769013172, + 1.92272545799326, 2.2121876044039577, 2.4955443375464483, 2.7737864449811935, 3.44870631990508, + 4.096910013008056, 4.726727209026572, 5.3404441148401185, 5.944975908412048, 6.541579243946581, + 7.133538908370218, 7.720985744153739, 8.305351369446624, 8.888740960682894, 9.469822015978163, + 10.049218022670182, 10.628388930050312, 11.20682587603185, 11.78175537465247, 12.356025857193123, + 12.9304395947667, 13.502427119984432, 14.075546961392531, 14.645422269349092, 15.214843848047698, + 15.783903579272735, 16.352182518111363, 16.920123326290724, 17.487138375477187, 18.053078443483418, + 18.621176281775035, 19.187520720836464, 19.753583058892907, 20.318063334962762, 21.450249108319362, + 22.580924975675618, 23.71264970162721, 24.84385542262316, 25.976808337338067, 27.110589710299248, + 28.24551266781415, 31.08635983067475, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Cl35_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 1.8239985202970884e-05, 0.00020710907627919203, 0.0009431313908907785, 0.002698987769012708, + 0.005906875936599731, 0.010907713111778477, 0.017957319425972694, 0.02725376696259042, 0.0532486689285615, + 0.09021853774459236, 0.13964204799692437, 0.20296975189964023, 0.28111453407611076, 0.48000694295715063, + 0.7234556720351858, 0.9934362304976118, 1.2741578492636798, 1.5587085705331658, 1.841984804590114, + 2.123851640967086, 2.401400540781544, 2.678518379040114, 2.951823035315912, 3.6263403673750423, + 4.2878017299302265, 4.942008053022313, 5.588831725594208, 6.230448921378274, 6.870988813760575, + 7.509202522331103, 8.146128035678238, 8.781036938621131, 9.414973347970818, 10.049218022670182, + 10.681241237375588, 11.313867220369154, 11.943988875073773, 12.574031267727719, 13.204119982655925, + 13.831229693867064, 14.457881896733992, 15.086359830674748, 15.710963118995275, 16.33645973384853, + 16.96189547366785, 17.586587304671756, 18.212187604403958, 18.835056101720117, 19.45939248775923, + 20.08278537031645, 20.705863712283918, 21.330413773349193, 21.95375969173323, 23.20139712432045, + 24.450249108319362, 25.699837725867248, 26.950364854376122, 28.20139712432045, 29.456366033129044, + 30.71264970162721, 33.862131379313034, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ar36_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 4.342942647204277e-07, 2.3451268844214655e-05, 0.00023141729162330256, 0.0010622869460975197, + 0.0031540913067783544, 0.007135153007315867, 0.013474284663478431, 0.02245187936733961, 0.048771089883939175, + 0.08643600351808535, 0.13560900039779808, 0.1965840257248699, 0.2696980636423851, 0.45331834004703764, + 0.6848453616444125, 0.9585638832219674, 1.2624510897304295, 1.5809249756756194, 1.9057958803678685, + 2.230448921378274, 2.550228353055094, 2.8662873390841948, 3.1760912590556813, 3.929418925714293, + 4.657055852857104, 5.365487984890899, 6.060697840353612, 6.746634198937579, 7.426511261364575, + 8.100370545117563, 8.773054693364262, 9.442479769064448, 10.11058971029925, 10.77451696572855, + 11.437750562820389, 12.100370545117563, 12.758911892397974, 13.41664050733828, 14.071882007306126, + 14.727541257028557, 15.38201704257487, 16.03342375548695, 16.684845361644413, 17.33445375115093, + 17.983626287124533, 18.63144376901317, 19.27875360095283, 19.925827574624744, 20.57170883180869, + 21.217483944213907, 21.863322860120455, 22.50785587169583, 23.152288344383056, 24.440909082065218, + 25.72916478969277, 27.01703333929878, 28.305351369446623, 29.595496221825574, 30.885926339801433, + 32.17897694729317, 35.41329976408125, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real K39_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 3.908632748276029e-06, 3.4307908925770636e-05, + 0.000162829902014903, 0.0005394928156396339, 0.0014074368520356395, 0.0031075244141559894, 0.010846721573671135, + 0.028297088943748085, 0.060956829214686044, 0.11414775667614005, 0.1912997955319451, 0.4132997640812518, + 0.7015679850559274, 1.0170333392987805, 1.3384564936046048, 1.6599162000698502, 1.9772662124272926, + 2.292256071356476, 2.6020599913279625, 2.910090545594068, 3.214843848047698, 3.9684829485539352, + 4.710963118995275, 5.444044795918076, 6.173186268412274, 6.897627091290442, 7.619093330626743, + 8.338456493604605, 9.056904851336473, 9.771587480881255, 10.48572142648158, 11.198657086954423, + 11.907948521612273, 12.6170003411209, 13.324282455297693, 14.02938377768521, 14.733999286538387, + 15.437750562820389, 16.139879086401237, 16.8394780473742, 17.539076098792776, 18.238046103128795, + 18.936513742478894, 19.633468455579585, 20.330413773349193, 21.02530586526477, 21.723455672035186, + 22.418301291319747, 23.113943352306837, 23.809559714635267, 24.505149978319906, 25.89542254603941, + 27.285557309007775, 28.678518379040113, 30.071882007306126, 31.465382851448418, 32.860936620700095, + 34.25767857486918, 37.761927838420526, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ca40_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 3.4743419578801875e-06, + 2.605688721537332e-05, 0.00012419046343446514, 0.0004254001802063995, 0.0011532564515138494, 0.005324252203746658, + 0.016451245325404366, 0.03938040551055626, 0.0790998081972309, 0.13972800117379408, 0.33041377334919086, + 0.6063813651106049, 0.9385197251764918, 1.2988530764097066, 1.6693168805661123, 2.037426497940624, + 2.403120521175818, 2.761927838420529, 3.113943352306837, 3.459392487759231, 4.301029995663981, + 5.117271295655764, 5.9148718175400505, 6.701567985055927, 7.478566495593843, 8.250420002308894, + 9.01703333929878, 9.781036938621131, 10.540329474790873, 11.296665190261532, 12.049218022670182, + 12.801403710017356, 13.549003262025789, 14.294466226161592, 15.037426497940624, 15.779596491257825, + 16.518513939877888, 17.255272505103306, 17.99211148778695, 18.72591163229505, 19.45939248775923, + 20.19033169817029, 20.920645001406786, 21.650307523131936, 22.378397900948137, 23.10720996964787, + 23.832508912706235, 24.558708570533167, 25.285557309007775, 26.008600171761916, 27.45939248775923, + 28.907948521612273, 30.356025857193124, 31.804820678721164, 33.25285303097989, 34.704150516839796, + 36.15533603746506, 39.78816837114117, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Sc43_pf_array[npts_1] = { + 0.0, 1.737174453219938e-06, 3.213660262116793e-05, 0.0006088881229004689, 0.002639422351216832, + 0.006348788305828209, 0.011375876688411649, 0.017242084547645732, 0.02355944464942603, 0.03006796257543875, + 0.03661053325876141, 0.06810122175372876, 0.09804672309111767, 0.12848424511267922, 0.16058766813472455, + 0.1946644458530261, 0.23055748142930874, 0.2679262754358927, 0.3064134462100847, 0.3856843680943845, + 0.4672642331672854, 0.5514418243762168, 0.6393550853495756, 0.732465412501299, 0.9380190974762103, + 1.1760912590556813, 1.4456042032735976, 1.7371926427047373, 2.0453229787866576, 2.359835482339888, + 2.678518379040114, 3.0, 3.322219294733919, 3.6424645202421213, 4.439332693830263, + 5.230448921378274, 6.017033339298781, 6.8020892578817325, 7.585460729508501, 8.36735592102602, + 9.14921911265538, 9.929418925714293, 10.710117365111817, 11.489958479424836, 12.267171728403014, + 13.045322978786658, 13.822168079368018, 14.597695185925513, 15.371067862271737, 16.146128035678238, + 16.916453948549925, 17.687528961214635, 18.457881896733994, 19.227886704613674, 19.99694924849538, + 20.76492298464989, 21.532754378992497, 22.30102999566398, 23.068185861746162, 23.835690571492425, + 24.602059991327963, 25.369215857410143, 26.136720567156406, 26.903632516084237, 28.439332693830263, + 29.97497199429807, 31.511883360978874, 33.05307844348342, 34.59217675739587, 36.13672056715641, + 37.682145076373835, 41.55870857053316, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ti44_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 4.342942647204277e-07, 1.737174453219938e-06, + 7.382943437485088e-06, 0.0004987179011085028, 0.004043078170724821, 0.014135215027787822, 0.032426549056877405, + 0.058561151016688254, 0.09131586357749837, 0.1294359425571275, 0.17190802974603506, 0.2667731684215763, + 0.37035022176288673, 0.47788465213962983, 0.5860935485551829, 0.693748838923791, 0.9116901587538612, + 1.1522883443830565, 1.4409090820652177, 1.7788744720027396, 2.1522883443830567, 2.5415792439465807, + 2.9334872878487053, 3.322219294733919, 3.7041505168397992, 4.079181246047625, 4.996073654485276, + 5.885361220031512, 6.757396028793024, 7.619093330626743, 8.472756449317213, 9.32221929473392, + 10.167317334748176, 11.008600171761918, 11.85003325768977, 12.687528961214634, 13.52244423350632, + 14.354108439147401, 15.1846914308176, 16.012837224705173, 16.836956737059552, 17.65991620006985, + 18.481442628502304, 19.298853076409706, 20.117271295655765, 20.9329808219232, 21.746634198937578, + 22.559906625036113, 23.371067862271737, 24.181843587944773, 24.991226075692495, 25.799340549453582, + 26.60745502321467, 27.414973347970818, 28.220108088040057, 29.02530586526477, 30.63748972951251, + 32.247973266361804, 33.8561244442423, 35.46538285144842, 37.07554696139253, 38.68484536164441, + 40.29666519026153, 44.33041377334919, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real V47_pf_array[npts_1] = { + 2.518834949526704e-05, 0.0007584840322833456, 0.004226764680268442, 0.024475815916759104, 0.05998274311239668, + 0.1028026649155908, 0.14672973694476377, 0.18852098344730983, 0.22688178294786615, 0.2615226538586488, + 0.29260868165003595, 0.40714096450521564, 0.48021742410342627, 0.5329079468954852, 0.5750746363992424, + 0.6115960803783954, 0.6450760714077263, 0.6770396273057074, 0.708482088001612, 0.7725618227871047, + 0.8417322779915452, 0.9194240819892174, 1.0083997539725875, 1.110602503281611, 1.3560258571931227, + 1.651278013998144, 1.9813655090785445, 2.330413773349191, 2.6884198220027105, 3.0492180226701815, + 3.41161970596323, 3.7708520116421442, 4.127104798364807, 4.484299839346786, 5.365487984890899, + 6.238046103128795, 7.103803720955957, 7.967547976218862, 8.830588668685145, 9.69460519893357, + 10.557507201905658, 11.421603926869832, 12.285557309007775, 13.146128035678238, 14.008600171761918, + 14.869231719730976, 15.728353782021228, 16.586587304671756, 17.442479769064448, 18.298853076409706, + 19.152288344383056, 20.00432137378264, 20.85793526471943, 21.70926996097583, 22.559906625036113, + 23.409933123331296, 24.260071387985075, 25.10720996964787, 25.956648579205204, 26.804820678721164, + 27.652246341003323, 28.50105926221775, 29.34830486304816, 30.195899652409235, 31.891537457672566, + 33.588831725594204, 35.28555730900777, 36.985875357308394, 38.68752896121463, 40.39093510710338, + 42.096910013008056, 46.372912002970104, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Cr48_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 8.685880952436748e-07, 8.251516766996927e-06, 3.951899976600419e-05, 0.00013330794422173613, + 0.00035120219371925006, 0.006401856055765156, 0.02685304570895992, 0.0621531182513584, 0.10696594975266843, + 0.15598699109465683, 0.205815844445829, 0.25471214514215257, 0.30198352738731143, 0.39152612205819926, + 0.4764059620390526, 0.5602400543128645, 0.6474755901642433, 0.7433846322638775, 0.983175072037813, + 1.3096301674258988, 1.7067177823367587, 2.1398790864012365, 2.5774917998372255, 3.012837224705172, + 3.437750562820388, 3.854913022307856, 4.264817823009537, 4.666517980554881, 5.648360010980932, + 6.606381365110605, 7.550228353055094, 8.484299839346786, 9.414973347970818, 10.340444114840118, + 11.264817823009537, 12.1846914308176, 13.103803720955957, 14.021189299069938, 14.935003151453655, + 15.846337112129806, 16.75511226639507, 17.66181268553726, 18.565847818673518, 19.468347330412158, + 20.369215857410143, 21.267171728403014, 22.161368002234976, 23.056904851336473, 23.94939000664491, + 24.840733234611807, 25.73078227566639, 26.619093330626743, 27.50785587169583, 28.394451680826215, + 29.281033367247726, 30.164352855784436, 31.049218022670182, 31.934498451243567, 33.70156798505593, + 35.46834733041216, 37.23299611039216, 38.99913054128737, 40.764922984649886, 42.5327543789925, + 44.30102999566398, 48.727541257028555, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Mn51_pf_array[npts_1] = { + 0.0, 0.0, 4.342942647204277e-07, 6.0362737871404116e-05, 0.0005954436481690332, + 0.002352703452491265, 0.0058636025937444025, 0.011219737158250307, 0.018191443590229183, 0.02640577650122878, + 0.035473365577059296, 0.08393991903492294, 0.12694077261184436, 0.1626799839654217, 0.19356340377635362, + 0.22185561141496235, 0.24912127857304392, 0.27638918590325057, 0.30436276263857276, 0.36442247019537943, + 0.4326074417788097, 0.5117005179251304, 0.6041057952026397, 0.7115562776994953, 0.9717395908877783, + 1.287801729930226, 1.640481436970422, 2.0170333392987803, 2.403120521175818, 2.7944880466591697, + 3.1903316981702914, 3.5854607295085006, 3.9827233876685453, 4.380211241711606, 5.372912002970106, + 6.363611979892144, 7.354108439147401, 8.342422680822207, 9.328379603438737, 10.311753861055754, + 11.292256071356476, 12.269512944217917, 13.24551266781415, 14.214843848047698, 15.1846914308176, + 16.14921911265538, 17.110589710299248, 18.071882007306126, 19.02938377768521, 19.985426474083003, + 20.93851972517649, 21.88986172125819, 22.8394780473742, 23.787460474518415, 24.73399928653839, + 25.67942789661212, 26.6232492903979, 27.56702636615906, 28.509202522331105, 29.45178643552429, + 30.392696953259666, 31.33445375115093, 32.27415784926368, 33.2148438480477, 35.093421685162234, + 36.97451169273733, 38.8555191556678, 40.737192642704734, 42.620136054973756, 44.505149978319906, + 46.392696953259666, 51.12057393120585, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Fe52_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 1.737174453219938e-06, 9.554373504133797e-06, 3.778197643341552e-05, + 0.00011333607006293107, 0.0030242952161453874, 0.015422212189991185, 0.040215337130588114, 0.07478865660777632, + 0.11488541698288197, 0.15714990338033966, 0.19960737134331175, 0.24132628928072955, 0.3217032118192907, + 0.39933965344635436, 0.4778337814344742, 0.5623989859221217, 0.6594581913549248, 0.9153998352122699, + 1.2695129442179163, 1.6910814921229684, 2.143014800254095, 2.6009728956867484, 3.0569048513364727, + 3.503790683057181, 3.946452265013073, 4.383815365980431, 4.818225893613955, 5.888740960682893, + 6.944482672150169, 7.9898945637187735, 9.02938377768521, 10.060697840353612, 11.086359830674748, + 12.11058971029925, 13.127104798364808, 14.139879086401237, 15.14921911265538, 16.152288344383056, + 17.152288344383056, 18.14921911265538, 19.143014800254097, 20.133538908370216, 21.12057393120585, + 22.103803720955955, 23.08635983067475, 24.06445798922692, 25.041392685158225, 26.01703333929878, + 26.989449817666692, 27.960946195733833, 28.930949031167522, 29.899273187317604, 30.8668778143375, + 31.833784374656478, 32.79934054945358, 33.76417613239033, 34.72835378202123, 36.655138434811384, + 38.58092497567562, 40.505149978319906, 42.42975228000241, 44.3541084391474, 46.28103336724773, + 48.20682587603185, 53.02938377768521, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Co55_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 8.685880952436748e-07, 1.4331481434642371e-05, 9.336327741651444e-05, + 0.0003811432576949256, 0.0011510907323373071, 0.0028275866787247843, 0.0059861278100218065, 0.019727612600003868, + 0.049238961363648255, 0.10167663281566902, 0.18228879723157643, 0.29243817096179087, 0.5865873046717549, + 0.9449759084120479, 1.3324384599156054, 1.7363965022766426, 2.14921911265538, 2.56702636615906, + 2.991226075692495, 3.419955748489758, 3.851869600729766, 4.2878017299302265, 5.382017042574868, + 6.482873583608754, 7.5820633629117085, 8.677606952720494, 9.767155866082181, 10.85003325768977, + 11.927370363039024, 12.998695158311655, 14.064457989226918, 15.127104798364808, 16.181843587944773, + 17.232996110392154, 18.281033367247726, 19.32428245529769, 20.3654879848909, 21.401400540781545, + 22.436162647040756, 23.468347330412158, 24.4983105537896, 25.525044807036846, 26.550228353055093, + 27.57403126772772, 28.59659709562646, 29.6170003411209, 30.636487896353366, 31.65609820201283, + 32.673941998634085, 33.69108149212297, 34.70757017609794, 35.72427586960079, 37.755874855672495, + 39.786751422145564, 41.818225893613956, 43.850033257689766, 45.88309335857569, 47.91750550955255, + 49.954242509439325, 55.056904851336476, + }; + + // this is log10(partition function) + + MICROPHYSICS_UNUSED HIP_CONSTEXPR static AMREX_GPU_MANAGED amrex::Real Ni56_pf_array[npts_1] = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 4.342942647204277e-07, 7.817230319428648e-06, 6.42708273977769e-05, + 0.0002904458650804842, 0.0009123622824012838, 0.002249887625802649, 0.004694448751887299, 0.014735532704563183, + 0.03529042138996706, 0.07190703372466718, 0.13162956968664008, 0.22190042758492473, 0.5092025223311029, + 0.9132839017604184, 1.374748346010104, 1.8555191556678001, 2.3404441148401185, 2.8221680793680175, + 3.303196057420489, 3.783903579272735, 4.26245108973043, 4.7419390777291985, 5.9344984512435675, + 7.117271295655764, 8.292256071356476, 9.456366033129044, 10.608526033577194, 11.750508394851346, + 12.88309335857569, 14.008600171761918, 15.123851640967086, 16.232996110392154, 17.33645973384853, + 18.432969290874407, 19.525044807036846, 20.612783856719737, 21.695481676490196, 22.773786444981194, + 23.8481891169914, 24.919078092376076, 25.987219229908003, 27.05307844348342, 28.113943352306837, + 29.17609125905568, 30.232996110392154, 31.287801729930226, 32.3424226808222, 33.39619934709574, + 34.44715803134222, 35.49692964807321, 36.54530711646582, 37.594392550375424, 39.68752896121463, + 41.77959649125783, 43.86981820797933, 45.959518376973, 48.04921802267018, 50.13987908640124, + 52.230448921378276, 57.462397997898954, + }; + // interpolation routine @@ -86,6 +569,98 @@ void get_partition_function(const int inuc, [[maybe_unused]] const tf_t& tfactor switch (inuc) { + case O16: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::O16_pf_array, pf, dpf_dT); + break; + + case F18: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::F18_pf_array, pf, dpf_dT); + break; + + case Ne20: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ne20_pf_array, pf, dpf_dT); + break; + + case Ne21: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ne21_pf_array, pf, dpf_dT); + break; + + case Na22: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Na22_pf_array, pf, dpf_dT); + break; + + case Na23: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Na23_pf_array, pf, dpf_dT); + break; + + case Mg24: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Mg24_pf_array, pf, dpf_dT); + break; + + case Al27: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Al27_pf_array, pf, dpf_dT); + break; + + case Si28: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Si28_pf_array, pf, dpf_dT); + break; + + case P31: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::P31_pf_array, pf, dpf_dT); + break; + + case S32: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::S32_pf_array, pf, dpf_dT); + break; + + case Cl35: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Cl35_pf_array, pf, dpf_dT); + break; + + case Ar36: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ar36_pf_array, pf, dpf_dT); + break; + + case K39: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::K39_pf_array, pf, dpf_dT); + break; + + case Ca40: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ca40_pf_array, pf, dpf_dT); + break; + + case Sc43: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Sc43_pf_array, pf, dpf_dT); + break; + + case Ti44: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ti44_pf_array, pf, dpf_dT); + break; + + case V47: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::V47_pf_array, pf, dpf_dT); + break; + + case Cr48: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Cr48_pf_array, pf, dpf_dT); + break; + + case Mn51: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Mn51_pf_array, pf, dpf_dT); + break; + + case Fe52: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Fe52_pf_array, pf, dpf_dT); + break; + + case Co55: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Co55_pf_array, pf, dpf_dT); + break; + + case Ni56: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ni56_pf_array, pf, dpf_dT); + break; + default: diff --git a/networks/subch_simple/reaclib_rates.H b/networks/subch_simple/reaclib_rates.H index 4b7b3ec389..ba47fa938f 100644 --- a/networks/subch_simple/reaclib_rates.H +++ b/networks/subch_simple/reaclib_rates.H @@ -25,9 +25,9 @@ struct rate_derivs_t { template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_N13_to_p_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // N13 --> p + C12 + // C12 + p --> N13 rate = 0.0; drate_dT = 0.0; @@ -36,13 +36,13 @@ void rate_N13_to_p_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ls09r - ln_set_rate = 40.4354 + -26.326 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.326 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -53,13 +53,13 @@ void rate_N13_to_p_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // ls09n - ln_set_rate = 40.0408 + -22.5475 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.5475 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -74,9 +74,9 @@ void rate_N13_to_p_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_C12_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O16 --> He4 + C12 + // C12 + He4 --> O16 rate = 0.0; drate_dT = 0.0; @@ -86,12 +86,12 @@ void rate_O16_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real set_rate{0.0}; // nac2 - ln_set_rate = 279.295 + -84.9515 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.9515 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -103,12 +103,12 @@ void rate_O16_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // nac2 - ln_set_rate = 94.3131 + -84.503 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.503 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -123,9 +123,9 @@ void rate_O16_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_F18_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F18 --> He4 + N14 + // N14 + He4 --> F18 rate = 0.0; drate_dT = 0.0; @@ -135,12 +135,12 @@ void rate_F18_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real set_rate{0.0}; // il10n - ln_set_rate = 46.249 + -51.2292 * tfactors.T9i + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 51.2292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -152,10 +152,12 @@ void rate_F18_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10r - ln_set_rate = 38.6146 + -62.1948 * tfactors.T9i + -5.6227 * tfactors.T913i; + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 62.1948 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -167,10 +169,12 @@ void rate_F18_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10r - ln_set_rate = 24.9119 + -56.3896 * tfactors.T9i; + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 56.3896 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -185,9 +189,9 @@ void rate_F18_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_O16_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne20 --> He4 + O16 + // O16 + He4 --> Ne20 rate = 0.0; drate_dT = 0.0; @@ -197,12 +201,12 @@ void rate_Ne20_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real set_rate{0.0}; // co10r - ln_set_rate = 34.2658 + -67.6518 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 67.6518 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -214,10 +218,12 @@ void rate_Ne20_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& } // co10r - ln_set_rate = 28.6431 + -65.246 * tfactors.T9i; + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.246 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -229,12 +235,12 @@ void rate_Ne20_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& } // co10n - ln_set_rate = 48.6604 + -54.8875 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 54.8875 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -249,9 +255,9 @@ void rate_Ne20_to_He4_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Na22_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_F18_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Na22 --> p + Ne21 + // F18 + He4 --> Na22 rate = 0.0; drate_dT = 0.0; @@ -260,60 +266,13 @@ void rate_Na22_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -16.4098 + -82.4235 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 - + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 82.4235 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i - + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = 24.8334 + -79.6093 * tfactors.T9i; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.6093 * tfactors.T9i * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = -24.579 + -78.4059 * tfactors.T9i; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.4059 * tfactors.T9i * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10n - ln_set_rate = 42.146 + -78.2097 * tfactors.T9i + -19.2096 * tfactors.T913i - + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // rpsmr + ln_set_rate = 35.3786 + -1.82957 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 + + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 37.8396 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.2097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.2096 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 1.82957 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i + + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 37.8396 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -328,9 +287,9 @@ void rate_Na22_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Na22_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Na22 --> He4 + F18 + // Ne20 + He4 --> Mg24 rate = 0.0; drate_dT = 0.0; @@ -339,13 +298,13 @@ void rate_Na22_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // rpsmr - ln_set_rate = 59.3224 + -100.236 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 - + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 39.3396 * tfactors.lnT9; + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.236 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i - + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 39.3396 * tfactors.T9i; + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -356,28 +315,13 @@ void rate_Na22_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Mg24 --> p + Na23 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // il10r - ln_set_rate = 34.0876 + -138.968 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 138.968 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -389,10 +333,12 @@ void rate_Mg24_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10r - ln_set_rate = 20.0024 + -137.3 * tfactors.T9i; + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 137.3 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -403,13 +349,13 @@ void rate_Mg24_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 43.9357 + -135.688 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 135.688 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -424,9 +370,9 @@ void rate_Mg24_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Mg24 --> He4 + Ne20 + // Ne21 + p --> Na22 rate = 0.0; drate_dT = 0.0; @@ -435,13 +381,13 @@ void rate_Mg24_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 49.3244 + -108.114 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10r + ln_set_rate = -47.6554 + -0.19618 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 108.114 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 0.19618 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -452,13 +398,13 @@ void rate_Mg24_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 16.0203 + -120.895 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + // il10n + ln_set_rate = 19.0696 + -19.2096 * tfactors.T913i + + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 120.895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 = + -(1.0/3.0) * -19.2096 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -470,10 +416,12 @@ void rate_Mg24_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& } // il10r - ln_set_rate = 26.8017 + -117.334 * tfactors.T9i; + ln_set_rate = -39.4862 + -4.21385 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 + + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 117.334 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 4.21385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i + + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -485,10 +433,12 @@ void rate_Mg24_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& } // il10r - ln_set_rate = -13.8869 + -110.62 * tfactors.T9i; + ln_set_rate = 1.75704 + -1.39957 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 110.62 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 1.39957 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -503,9 +453,9 @@ void rate_Mg24_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Si28 --> p + Al27 + // Na23 + p --> Mg24 rate = 0.0; drate_dT = 0.0; @@ -514,13 +464,13 @@ void rate_Si28_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 11.7765 + -136.349 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 136.349 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -531,13 +481,13 @@ void rate_Si28_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 46.5494 + -134.445 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 134.445 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -549,12 +499,12 @@ void rate_Si28_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10r - ln_set_rate = 111.466 + -134.832 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 134.832 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -569,9 +519,9 @@ void rate_Si28_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Si28 --> He4 + Mg24 + // Mg24 + He4 --> Si28 rate = 0.0; drate_dT = 0.0; @@ -581,10 +531,12 @@ void rate_Si28_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real set_rate{0.0}; // st08r - ln_set_rate = 32.9006 + -131.488 * tfactors.T9i; + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 131.488 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -596,12 +548,12 @@ void rate_Si28_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& } // st08r - ln_set_rate = -25.6886 + -128.693 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 128.693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -616,9 +568,9 @@ void rate_Si28_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_S32_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // S32 --> p + P31 + // Al27 + p --> Si28 rate = 0.0; drate_dT = 0.0; @@ -628,12 +580,12 @@ void rate_S32_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real set_rate{0.0}; // il10r - ln_set_rate = 25.1729 + -106.637 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.637 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -645,10 +597,12 @@ void rate_S32_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } // il10r - ln_set_rate = 21.6829 + -105.119 * tfactors.T9i; + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 105.119 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -660,12 +614,12 @@ void rate_S32_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } // il10n - ln_set_rate = 43.6109 + -102.86 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.86 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -680,9 +634,9 @@ void rate_S32_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Si28_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // S32 --> He4 + Si28 + // Si28 + He4 --> S32 rate = 0.0; drate_dT = 0.0; @@ -692,12 +646,12 @@ void rate_S32_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 72.813 + -80.626 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 80.626 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -712,9 +666,9 @@ void rate_S32_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // C12 --> He4 + He4 + He4 + // P31 + p --> S32 rate = 0.0; drate_dT = 0.0; @@ -723,13 +677,13 @@ void rate_C12_to_He4_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // fy05n - ln_set_rate = 45.7734 + -84.4227 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.4227 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -740,13 +694,13 @@ void rate_C12_to_He4_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // fy05r - ln_set_rate = 22.394 + -88.5493 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 88.5493 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -757,13 +711,13 @@ void rate_C12_to_He4_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // fy05r - ln_set_rate = 34.9561 + -85.4472 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.83333 * tfactors.lnT9; + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.4472 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.83333 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -778,9 +732,9 @@ void rate_C12_to_He4_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Rea template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_C12_C12_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // C12 + p --> N13 + // C12 + C12 --> p + Na23 rate = 0.0; drate_dT = 0.0; @@ -789,30 +743,13 @@ void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -827,9 +764,9 @@ void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_C12_C12_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // C12 + He4 --> O16 + // C12 + C12 --> He4 + Ne20 rate = 0.0; drate_dT = 0.0; @@ -838,13 +775,13 @@ void rate_He4_C12_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -855,13 +792,28 @@ void rate_He4_C12_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_N13_to_p_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // N13 + He4 --> p + O16 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -876,9 +828,9 @@ void rate_He4_C12_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_C12_O16_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // N14 + He4 --> F18 + // O16 + C12 --> p + Al27 rate = 0.0; drate_dT = 0.0; @@ -887,13 +839,13 @@ void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -904,30 +856,28 @@ void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; +} - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_C12_O16_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + // O16 + C12 --> He4 + Mg24 - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -942,9 +892,9 @@ void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_O16_O16_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O16 + He4 --> Ne20 + // O16 + O16 --> p + P31 rate = 0.0; drate_dT = 0.0; @@ -953,13 +903,13 @@ void rate_He4_O16_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -970,30 +920,28 @@ void rate_He4_O16_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; +} - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_O16_O16_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + // O16 + O16 --> He4 + Si28 - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1008,9 +956,9 @@ void rate_He4_O16_to_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_F18_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_F18_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F18 + He4 --> Na22 + // F18 + He4 --> p + Ne21 rate = 0.0; drate_dT = 0.0; @@ -1020,12 +968,12 @@ void rate_He4_F18_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real set_rate{0.0}; // rpsmr - ln_set_rate = 35.3786 + -1.82957 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 - + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 37.8396 * tfactors.lnT9; + ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.82957 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i - + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 37.8396 * tfactors.T9i; + dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1040,9 +988,9 @@ void rate_He4_F18_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne20 + He4 --> Mg24 + // Na23 + p --> He4 + Ne20 rate = 0.0; drate_dT = 0.0; @@ -1052,12 +1000,12 @@ void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1068,13 +1016,13 @@ void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1085,13 +1033,13 @@ void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1102,14 +1050,63 @@ void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; +} - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Al27 + p --> He4 + Mg24 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + } // avoid underflows by zeroing rates in [0.0, 1.e-100] ln_set_rate = std::max(ln_set_rate, -230.0); @@ -1123,9 +1120,9 @@ void rate_He4_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne21 + p --> Na22 + // P31 + p --> He4 + Si28 rate = 0.0; drate_dT = 0.0; @@ -1135,11 +1132,28 @@ void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -47.6554 + -0.19618 * tfactors.T9i + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.19618 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; } @@ -1152,12 +1166,12 @@ void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10n - ln_set_rate = 19.0696 + -19.2096 * tfactors.T913i - + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -19.2096 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1168,13 +1182,28 @@ void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -39.4862 + -4.21385 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 - + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953 + -1.5 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // He4 + He4 + He4 --> C12 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.21385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i - + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1185,13 +1214,30 @@ void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 1.75704 + -1.39957 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39957 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1206,9 +1252,9 @@ void rate_p_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Na23 + p --> Mg24 + // C12 + C12 --> Mg24 rate = 0.0; drate_dT = 0.0; @@ -1217,13 +1263,13 @@ void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1234,13 +1280,28 @@ void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_O16_O16_to_S32_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // O16 + O16 --> S32 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // cf88r + ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1251,13 +1312,28 @@ void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // O16 + C12 --> Si28 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // cf88r + ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1272,9 +1348,9 @@ void rate_p_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_S32_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Mg24 + He4 --> Si28 + // S32 + He4 --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -1283,13 +1359,13 @@ void rate_He4_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1300,12 +1376,44 @@ void rate_He4_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Cl35 + p --> Ar36 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // il10r + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; } @@ -1317,13 +1425,47 @@ void rate_He4_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10r + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Al27 + p --> Si28 + // Cl35 + p --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -1333,12 +1475,12 @@ void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1350,12 +1492,29 @@ void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // il10r + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1367,12 +1526,12 @@ void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d } // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1387,9 +1546,9 @@ void rate_p_Al27_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& d template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Si28 + He4 --> S32 + // Ar36 + He4 --> Ca40 rate = 0.0; drate_dT = 0.0; @@ -1399,12 +1558,12 @@ void rate_He4_Si28_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1419,9 +1578,9 @@ void rate_He4_Si28_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // P31 + p --> S32 + // K39 + p --> Ca40 rate = 0.0; drate_dT = 0.0; @@ -1430,13 +1589,13 @@ void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1447,13 +1606,13 @@ void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1464,13 +1623,13 @@ void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1485,9 +1644,9 @@ void rate_p_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // C12 + C12 --> p + Na23 + // K39 + p --> He4 + Ar36 rate = 0.0; drate_dT = 0.0; @@ -1496,13 +1655,13 @@ void rate_C12_C12_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1517,9 +1676,9 @@ void rate_C12_C12_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ca40_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // C12 + C12 --> He4 + Ne20 + // Ca40 + He4 --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -1528,13 +1687,13 @@ void rate_C12_C12_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Re amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1549,9 +1708,9 @@ void rate_C12_C12_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Re template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // N13 + He4 --> p + O16 + // Sc43 + p --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -1560,13 +1719,13 @@ void rate_He4_N13_to_p_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1581,9 +1740,9 @@ void rate_He4_N13_to_p_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Sc43_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O16 + p --> He4 + N13 + // Sc43 + p --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -1592,13 +1751,13 @@ void rate_p_O16_to_He4_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88n - ln_set_rate = 42.2324 + -60.5523 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 60.5523 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1613,9 +1772,9 @@ void rate_p_O16_to_He4_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ti44_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O16 + C12 --> p + Al27 + // Ti44 + He4 --> Cr48 rate = 0.0; drate_dT = 0.0; @@ -1624,13 +1783,13 @@ void rate_C12_O16_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1645,9 +1804,9 @@ void rate_C12_O16_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ti44_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O16 + C12 --> He4 + Mg24 + // Ti44 + He4 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -1656,13 +1815,13 @@ void rate_C12_O16_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Re amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1677,9 +1836,9 @@ void rate_C12_O16_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Re template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // O16 + O16 --> p + P31 + // V47 + p --> Cr48 rate = 0.0; drate_dT = 0.0; @@ -1688,13 +1847,13 @@ void rate_O16_O16_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1705,28 +1864,47 @@ void rate_O16_O16_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + } - // O16 + O16 --> He4 + Si28 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - rate = 0.0; - drate_dT = 0.0; + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + } - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1741,9 +1919,9 @@ void rate_O16_O16_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Re template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_F18_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // F18 + He4 --> p + Ne21 + // Cr48 + He4 --> Fe52 rate = 0.0; drate_dT = 0.0; @@ -1752,13 +1930,13 @@ void rate_He4_F18_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // rpsmr - ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + // ths8r + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1773,9 +1951,9 @@ void rate_He4_F18_to_p_Ne21(const tf_t& tfactors, amrex::Real& rate, amrex::Real template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne20 + He4 --> p + Na23 + // Cr48 + He4 --> p + Mn51 rate = 0.0; drate_dT = 0.0; @@ -1784,13 +1962,13 @@ void rate_He4_Ne20_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 0.227472 + -29.4348 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.4348 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1801,30 +1979,28 @@ void rate_He4_Ne20_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 19.1852 + -27.5738 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; +} - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.5738 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + // Mn51 + p --> Fe52 - // il10r - ln_set_rate = -6.37772 + -29.8896 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.8896 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1839,9 +2015,9 @@ void rate_He4_Ne20_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Rea template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Ne21_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Ne21 + p --> He4 + F18 + // Fe52 + He4 --> Ni56 rate = 0.0; drate_dT = 0.0; @@ -1850,13 +2026,13 @@ void rate_p_Ne21_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // rpsmr - ln_set_rate = 50.6536 + -22.049 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.049 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1871,9 +2047,9 @@ void rate_p_Ne21_to_He4_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // Na23 + p --> He4 + Ne20 + // Fe52 + He4 --> p + Co55 rate = 0.0; drate_dT = 0.0; @@ -1882,13 +2058,13 @@ void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1899,30 +2075,28 @@ void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; +} - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + // Co55 + p --> Ni56 - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1937,9 +2111,9 @@ void rate_p_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Rea template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_N13_to_p_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mg24 + He4 --> p + Al27 + // N13 --> p + C12 rate = 0.0; drate_dT = 0.0; @@ -1948,13 +2122,13 @@ void rate_He4_Mg24_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 30.0397 + -18.5791 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // ls09c + ln_set_rate = 40.04074558314484 + -22.547578710551672 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.5791 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 22.547578710551672 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1965,13 +2139,13 @@ void rate_He4_Mg24_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -26.2862 + -19.5422 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ls09c + ln_set_rate = 40.43534558314484 + -26.326068710551674 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.5422 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 26.326068710551674 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1982,30 +2156,40 @@ void rate_He4_Mg24_to_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -6.44575 + -22.8216 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.8216 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - } + amrex::Real C12_pf, dC12_pf_dT; + // setting C12 partition function to 1.0 by default, independent of T + C12_pf = 1.0_rt; + dC12_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real N13_pf, dN13_pf_dT; + // setting N13 partition function to 1.0 by default, independent of T + N13_pf = 1.0_rt; + dN13_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * C12_pf; + amrex::Real z_p = N13_pf; + + amrex::Real dz_r_dT = C12_pf * dp_pf_dT + p_pf * dC12_pf_dT; + amrex::Real dz_p_dT = dN13_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_O16_to_He4_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Al27 + p --> He4 + Mg24 + // O16 --> He4 + C12 rate = 0.0; drate_dT = 0.0; @@ -2014,13 +2198,13 @@ void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + // nac2 + ln_set_rate = 279.2945280776573 + -84.95160042649215 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 84.95160042649215 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2031,13 +2215,13 @@ void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + // nac2 + ln_set_rate = 94.31312807765731 + -84.50317042649215 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 84.50317042649215 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2048,30 +2232,39 @@ void rate_p_Al27_to_He4_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - } + amrex::Real C12_pf, dC12_pf_dT; + // setting C12 partition function to 1.0 by default, independent of T + C12_pf = 1.0_rt; + dC12_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real O16_pf, dO16_pf_dT; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors, pf_cache, O16_pf, dO16_pf_dT); + + amrex::Real z_r = He4_pf * C12_pf; + amrex::Real z_p = O16_pf; + + amrex::Real dz_r_dT = C12_pf * dHe4_pf_dT + He4_pf * dC12_pf_dT; + amrex::Real dz_p_dT = dO16_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_F18_to_He4_N14_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Si28 + He4 --> p + P31 + // F18 --> He4 + N14 rate = 0.0; drate_dT = 0.0; @@ -2080,13 +2273,13 @@ void rate_He4_Si28_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -11.4335 + -25.6606 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 46.248979543913606 + -51.22930570025806 * tfactors.T9i + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.6606 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 51.22930570025806 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2097,13 +2290,11 @@ void rate_He4_Si28_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 60.3424 + -22.2348 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 38.61457954391361 + -62.19490570025806 * tfactors.T9i + -5.6227 * tfactors.T913i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.2348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 62.19490570025806 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2114,13 +2305,11 @@ void rate_He4_Si28_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -13.4595 + -24.112 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 24.91191754391361 + -56.38964570025806 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.112 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 56.38964570025806 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2131,13 +2320,39 @@ void rate_He4_Si28_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real F18_pf, dF18_pf_dT; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors, pf_cache, F18_pf, dF18_pf_dT); + + amrex::Real N14_pf, dN14_pf_dT; + // setting N14 partition function to 1.0 by default, independent of T + N14_pf = 1.0_rt; + dN14_pf_dT = 0.0_rt; + + amrex::Real z_r = He4_pf * N14_pf; + amrex::Real z_p = F18_pf; + + amrex::Real dz_r_dT = N14_pf * dHe4_pf_dT + He4_pf * dN14_pf_dT; + amrex::Real dz_p_dT = dF18_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // P31 + p --> He4 + Si28 + // Ne20 --> He4 + O16 rate = 0.0; drate_dT = 0.0; @@ -2146,13 +2361,13 @@ void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + // co10c + ln_set_rate = 34.26581585936365 + -67.65193003813836 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 67.65193003813836 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2163,13 +2378,11 @@ void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // co10c + ln_set_rate = 28.64304585936365 + -65.24613003813835 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 65.24613003813835 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2180,13 +2393,13 @@ void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // co10c + ln_set_rate = 48.66033585936365 + -54.887630038138354 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 54.887630038138354 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2197,13 +2410,38 @@ void rate_p_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real O16_pf, dO16_pf_dT; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors, pf_cache, O16_pf, dO16_pf_dT); + + amrex::Real Ne20_pf, dNe20_pf_dT; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors, pf_cache, Ne20_pf, dNe20_pf_dT); + + amrex::Real z_r = He4_pf * O16_pf; + amrex::Real z_p = Ne20_pf; + + amrex::Real dz_r_dT = O16_pf * dHe4_pf_dT + He4_pf * dO16_pf_dT; + amrex::Real dz_p_dT = dNe20_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Na22_to_p_Ne21_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // He4 + He4 + He4 --> C12 + // Na22 --> p + Ne21 rate = 0.0; drate_dT = 0.0; @@ -2212,13 +2450,11 @@ void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Rea amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + // il10c + ln_set_rate = -24.579038986172677 + -78.40599033331655 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 = 78.40599033331655 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2229,13 +2465,13 @@ void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + // il10c + ln_set_rate = 42.145961013827325 + -78.20981033331655 * tfactors.T9i + -19.2096 * tfactors.T913i + + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 = 78.20981033331655 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.2096 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2246,13 +2482,13 @@ void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + // il10c + ln_set_rate = -16.409838986172673 + -82.42366033331655 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 + + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 = 82.42366033331655 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i + + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2263,28 +2499,11 @@ void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Rea drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // C12 + C12 --> Mg24 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + // il10c + ln_set_rate = 24.833401013827324 + -79.60938033331655 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 = 79.60938033331655 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2295,13 +2514,38 @@ void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Ne21_pf, dNe21_pf_dT; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors, pf_cache, Ne21_pf, dNe21_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Na22_pf, dNa22_pf_dT; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors, pf_cache, Na22_pf, dNa22_pf_dT); + + amrex::Real z_r = p_pf * Ne21_pf; + amrex::Real z_p = Na22_pf; + + amrex::Real dz_r_dT = Ne21_pf * dp_pf_dT + p_pf * dNe21_pf_dT; + amrex::Real dz_p_dT = dNa22_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_O16_to_S32_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Na22_to_He4_F18_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // O16 + O16 --> S32 + // Na22 --> He4 + F18 rate = 0.0; drate_dT = 0.0; @@ -2310,13 +2554,13 @@ void rate_O16_O16_to_S32_modified(const tf_t& tfactors, amrex::Real& rate, amrex amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + // rpsmr + ln_set_rate = 59.32234728275454 + -100.23588367240258 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 + + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 39.3396 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + dln_set_rate_dT9 = 100.23588367240258 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i + + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 39.3396 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2327,13 +2571,38 @@ void rate_O16_O16_to_S32_modified(const tf_t& tfactors, amrex::Real& rate, amrex drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real F18_pf, dF18_pf_dT; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors, pf_cache, F18_pf, dF18_pf_dT); + + amrex::Real Na22_pf, dNa22_pf_dT; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors, pf_cache, Na22_pf, dNa22_pf_dT); + + amrex::Real z_r = He4_pf * F18_pf; + amrex::Real z_p = Na22_pf; + + amrex::Real dz_r_dT = F18_pf * dHe4_pf_dT + He4_pf * dF18_pf_dT; + amrex::Real dz_p_dT = dNa22_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // O16 + C12 --> Si28 + // Mg24 --> p + Na23 rate = 0.0; drate_dT = 0.0; @@ -2342,13 +2611,13 @@ void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // cf88r - ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + // il10c + ln_set_rate = 43.93571176470678 + -135.6881490421346 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + dln_set_rate_dT9 = 135.6881490421346 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2359,28 +2628,28 @@ void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // S32 + He4 --> Ar36 + // il10c + ln_set_rate = 34.08761176470678 + -138.9684390421346 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - rate = 0.0; - drate_dT = 0.0; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 138.9684390421346 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 20.002361764706784 + -137.3003390421346 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 137.3003390421346 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2391,13 +2660,38 @@ void rate_He4_S32_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Na23_pf, dNa23_pf_dT; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors, pf_cache, Na23_pf, dNa23_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Mg24_pf, dMg24_pf_dT; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors, pf_cache, Mg24_pf, dMg24_pf_dT); + + amrex::Real z_r = p_pf * Na23_pf; + amrex::Real z_p = Mg24_pf; + + amrex::Real dz_r_dT = Na23_pf * dp_pf_dT + p_pf * dNa23_pf_dT; + amrex::Real dz_p_dT = dMg24_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // S32 + He4 --> p + Cl35 + // Mg24 --> He4 + Ne20 rate = 0.0; drate_dT = 0.0; @@ -2406,13 +2700,11 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 2.42563 + -27.6662 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = -13.886931148855957 + -110.62012330714883 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.6662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 110.62012330714883 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2423,13 +2715,13 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -0.877602 + -25.5914 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 49.324368851144044 + -108.11407330714883 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.5914 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 108.11407330714883 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2440,13 +2732,13 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -57.395 + -22.1894 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 16.02029885114404 + -120.89497330714883 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.1894 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 120.89497330714883 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2457,13 +2749,11 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 32.2544 + -21.6564 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 26.801638851144045 + -117.33433330714882 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.6564 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 117.33433330714882 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2474,13 +2764,38 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Mg24_pf, dMg24_pf_dT; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors, pf_cache, Mg24_pf, dMg24_pf_dT); + + amrex::Real Ne20_pf, dNe20_pf_dT; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors, pf_cache, Ne20_pf, dNe20_pf_dT); + + amrex::Real z_r = He4_pf * Ne20_pf; + amrex::Real z_p = Mg24_pf; + + amrex::Real dz_r_dT = Ne20_pf * dHe4_pf_dT + He4_pf * dNe20_pf_dT; + amrex::Real dz_p_dT = dMg24_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cl35 + p --> Ar36 + // Si28 --> p + Al27 rate = 0.0; drate_dT = 0.0; @@ -2489,13 +2804,13 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 11.776564828186824 + -136.3434628922348 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 136.3434628922348 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2506,13 +2821,13 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + // il10c + ln_set_rate = 111.46636482818681 + -134.8268158922348 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 134.8268158922348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2523,13 +2838,13 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 46.54946482818683 + -134.4395028922348 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 134.4395028922348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2540,30 +2855,38 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - } + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real Al27_pf, dAl27_pf_dT; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors, pf_cache, Al27_pf, dAl27_pf_dT); + + amrex::Real Si28_pf, dSi28_pf_dT; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors, pf_cache, Si28_pf, dSi28_pf_dT); + + amrex::Real z_r = p_pf * Al27_pf; + amrex::Real z_p = Si28_pf; + + amrex::Real dz_r_dT = Al27_pf * dp_pf_dT + p_pf * dAl27_pf_dT; + amrex::Real dz_p_dT = dSi28_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ar36 --> He4 + S32 + // Si28 --> He4 + Mg24 rate = 0.0; drate_dT = 0.0; @@ -2572,13 +2895,28 @@ void rate_Ar36_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 73.8164 + -77.0627 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // st08r + ln_set_rate = -25.688574833405916 + -128.69270892750794 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.0627 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 128.69270892750794 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // st08r + ln_set_rate = 32.90059516659409 + -131.48850892750792 * tfactors.T9i; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 131.48850892750792 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2589,13 +2927,38 @@ void rate_Ar36_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Mg24_pf, dMg24_pf_dT; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors, pf_cache, Mg24_pf, dMg24_pf_dT); + + amrex::Real Si28_pf, dSi28_pf_dT; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors, pf_cache, Si28_pf, dSi28_pf_dT); + + amrex::Real z_r = He4_pf * Mg24_pf; + amrex::Real z_p = Si28_pf; + + amrex::Real dz_r_dT = Mg24_pf * dHe4_pf_dT + He4_pf * dMg24_pf_dT; + amrex::Real dz_p_dT = dSi28_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_S32_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ar36 --> p + Cl35 + // S32 --> p + P31 rate = 0.0; drate_dT = 0.0; @@ -2604,13 +2967,13 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10n - ln_set_rate = 60.7366 + -98.7191 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10c + ln_set_rate = 25.172836958303158 + -106.63693563716609 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.7191 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 106.63693563716609 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2621,13 +2984,11 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 17.2028 + -102.37 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + // il10c + ln_set_rate = 21.682890958303158 + -105.11947563716609 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.37 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 = 105.11947563716609 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2638,11 +2999,13 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = 16.0169 + -100.729 * tfactors.T9i; + // il10c + ln_set_rate = 43.610880958303156 + -102.85989563716609 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.729 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 = 102.85989563716609 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2653,28 +3016,38 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -17.4751 + -99.2838 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.2838 * tfactors.T9i * tfactors.T9i; - } + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real S32_pf, dS32_pf_dT; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors, pf_cache, S32_pf, dS32_pf_dT); + + amrex::Real P31_pf, dP31_pf_dT; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors, pf_cache, P31_pf, dP31_pf_dT); + + amrex::Real z_r = p_pf * P31_pf; + amrex::Real z_p = S32_pf; + + amrex::Real dz_r_dT = P31_pf * dp_pf_dT + p_pf * dP31_pf_dT; + amrex::Real dz_p_dT = dS32_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cl35 + p --> He4 + S32 + // S32 --> He4 + Si28 rate = 0.0; drate_dT = 0.0; @@ -2683,13 +3056,13 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 72.81295409739818 + -80.62610309662641 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 80.62610309662641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2700,13 +3073,53 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i - + -1.5 * tfactors.lnT9; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real S32_pf, dS32_pf_dT; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors, pf_cache, S32_pf, dS32_pf_dT); + + amrex::Real Si28_pf, dSi28_pf_dT; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors, pf_cache, Si28_pf, dSi28_pf_dT); + + amrex::Real z_r = He4_pf * Si28_pf; + amrex::Real z_p = S32_pf; + + amrex::Real dz_r_dT = Si28_pf * dHe4_pf_dT + He4_pf * dSi28_pf_dT; + amrex::Real dz_p_dT = dS32_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // C12 --> He4 + He4 + He4 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // fy05c + ln_set_rate = 22.39392447043974 + -88.54942933569913 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 88.54942933569913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2717,13 +3130,13 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + // fy05c + ln_set_rate = 34.95602447043974 + -85.44732933569914 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 85.44732933569914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2734,13 +3147,13 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // fy05c + ln_set_rate = 45.77337247043974 + -84.42286933569913 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 84.42286933569913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2751,13 +3164,35 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real C12_pf, dC12_pf_dT; + // setting C12 partition function to 1.0 by default, independent of T + C12_pf = 1.0_rt; + dC12_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real z_r = He4_pf * He4_pf * He4_pf; + amrex::Real z_p = C12_pf; + + amrex::Real dz_r_dT = dHe4_pf_dT + dHe4_pf_dT + dHe4_pf_dT; + amrex::Real dz_p_dT = dC12_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ar36 + He4 --> Ca40 + // O16 + p --> He4 + N13 rate = 0.0; drate_dT = 0.0; @@ -2766,13 +3201,13 @@ void rate_He4_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // cf88n + ln_set_rate = 42.232382494512464 + -60.55237555926846 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 60.55237555926846 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2783,45 +3218,44 @@ void rate_He4_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; - // Ar36 + He4 --> p + K39 + amrex::Real O16_pf, dO16_pf_dT; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors, pf_cache, O16_pf, dO16_pf_dT); - rate = 0.0; - drate_dT = 0.0; + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real N13_pf, dN13_pf_dT; + // setting N13 partition function to 1.0 by default, independent of T + N13_pf = 1.0_rt; + dN13_pf_dT = 0.0_rt; - // ths8r - ln_set_rate = 20.6367 + -14.9533 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + amrex::Real z_r = He4_pf * N13_pf; + amrex::Real z_p = p_pf * O16_pf; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.9533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - } + amrex::Real dz_r_dT = N13_pf * dHe4_pf_dT + He4_pf * dN13_pf_dT; + amrex::Real dz_p_dT = O16_pf * dp_pf_dT + p_pf * dO16_pf_dT; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // K39 + p --> Ca40 + // Ne20 + He4 --> p + Na23 rate = 0.0; drate_dT = 0.0; @@ -2830,13 +3264,13 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + // il10c + ln_set_rate = -6.377717086437262 + -29.88961364462334 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 = 29.88961364462334 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2847,13 +3281,13 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + // il10c + ln_set_rate = 0.227472413562738 + -29.434873644623337 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + dln_set_rate_dT9 = 29.434873644623337 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2864,13 +3298,13 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + // il10c + ln_set_rate = 19.18524291356274 + -27.573843644623338 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 = 27.573843644623338 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2881,13 +3315,43 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Na23_pf, dNa23_pf_dT; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors, pf_cache, Na23_pf, dNa23_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ne20_pf, dNe20_pf_dT; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors, pf_cache, Ne20_pf, dNe20_pf_dT); + + amrex::Real z_r = p_pf * Na23_pf; + amrex::Real z_p = He4_pf * Ne20_pf; + + amrex::Real dz_r_dT = Na23_pf * dp_pf_dT + p_pf * dNa23_pf_dT; + amrex::Real dz_p_dT = Ne20_pf * dHe4_pf_dT + He4_pf * dNe20_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Ne21_to_He4_F18_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ca40 --> He4 + Ar36 + // Ne21 + p --> He4 + F18 rate = 0.0; drate_dT = 0.0; @@ -2896,13 +3360,13 @@ void rate_Ca40_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 77.2826 + -81.6916 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // rpsmr + ln_set_rate = 50.65368626892722 + -22.049056049959066 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 81.6916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 22.049056049959066 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2913,13 +3377,43 @@ void rate_Ca40_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Ne21_pf, dNe21_pf_dT; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors, pf_cache, Ne21_pf, dNe21_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real F18_pf, dF18_pf_dT; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors, pf_cache, F18_pf, dF18_pf_dT); + + amrex::Real z_r = He4_pf * F18_pf; + amrex::Real z_p = p_pf * Ne21_pf; + + amrex::Real dz_r_dT = F18_pf * dHe4_pf_dT + He4_pf * dF18_pf_dT; + amrex::Real dz_p_dT = Ne21_pf * dp_pf_dT + p_pf * dNe21_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ca40 --> p + K39 + // Mg24 + He4 --> p + Al27 rate = 0.0; drate_dT = 0.0; @@ -2928,13 +3422,13 @@ void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // lo18r - ln_set_rate = 613.153 + -109.213 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + // il10c + ln_set_rate = -6.445750338407261 + -22.82086933218981 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 109.213 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 = 22.82086933218981 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2945,13 +3439,13 @@ void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // lo18r - ln_set_rate = 127.306 + -98.3134 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; + // il10c + ln_set_rate = -26.286160338407264 + -19.54138133218981 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.3134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; + dln_set_rate_dT9 = 19.54138133218981 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2962,13 +3456,13 @@ void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // lo18r - ln_set_rate = 2786.44 + -101.871 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + // il10c + ln_set_rate = 30.03973966159274 + -18.578369332189812 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.871 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; + dln_set_rate_dT9 = 18.578369332189812 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2979,13 +3473,43 @@ void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Al27_pf, dAl27_pf_dT; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors, pf_cache, Al27_pf, dAl27_pf_dT); + + amrex::Real Mg24_pf, dMg24_pf_dT; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors, pf_cache, Mg24_pf, dMg24_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * Al27_pf; + amrex::Real z_p = He4_pf * Mg24_pf; + + amrex::Real dz_r_dT = Al27_pf * dp_pf_dT + p_pf * dAl27_pf_dT; + amrex::Real dz_p_dT = Mg24_pf * dHe4_pf_dT + He4_pf * dMg24_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // K39 + p --> He4 + Ar36 + // Si28 + He4 --> p + P31 rate = 0.0; drate_dT = 0.0; @@ -2994,13 +3518,13 @@ void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = -11.433473139095032 + -25.65965858572089 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 25.65965858572089 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3011,28 +3535,13 @@ void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Ca40 + He4 --> Ti44 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = -13.459473139095032 + -24.11106858572089 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 24.11106858572089 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3043,28 +3552,13 @@ void rate_He4_Ca40_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Ca40 + He4 --> p + Sc43 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // ths8r - ln_set_rate = 35.6575 + -40.8757 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 60.342426860904965 + -22.23390858572089 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.8757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 22.23390858572089 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3075,13 +3569,43 @@ void rate_He4_Ca40_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real P31_pf, dP31_pf_dT; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors, pf_cache, P31_pf, dP31_pf_dT); + + amrex::Real Si28_pf, dSi28_pf_dT; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors, pf_cache, Si28_pf, dSi28_pf_dT); + + amrex::Real z_r = p_pf * P31_pf; + amrex::Real z_p = He4_pf * Si28_pf; + + amrex::Real dz_r_dT = P31_pf * dp_pf_dT + p_pf * dP31_pf_dT; + amrex::Real dz_p_dT = Si28_pf * dHe4_pf_dT + He4_pf * dSi28_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_S32_to_p_Cl35_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Sc43 + p --> Ti44 + // S32 + He4 --> p + Cl35 rate = 0.0; drate_dT = 0.0; @@ -3090,13 +3614,13 @@ void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 2.425628238034531 + -27.66622776398283 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 27.66622776398283 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3107,28 +3631,13 @@ void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Ti44 --> He4 + Ca40 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // chw0 - ln_set_rate = 78.6991 + -59.4974 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10c + ln_set_rate = -0.877601761965469 + -25.59141776398283 * tfactors.T9i + + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.4974 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 25.59141776398283 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3139,28 +3648,13 @@ void rate_Ti44_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Ti44 --> p + Sc43 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // ths8r - ln_set_rate = 62.5939 + -100.373 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // il10c + ln_set_rate = -57.39498176196547 + -22.18939876398283 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.373 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 22.18939876398283 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3171,28 +3665,13 @@ void rate_Ti44_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Sc43 + p --> He4 + Ca40 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // il10c + ln_set_rate = 32.25441823803453 + -21.65646776398283 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 21.65646776398283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3203,13 +3682,43 @@ void rate_p_Sc43_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Cl35_pf, dCl35_pf_dT; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors, pf_cache, Cl35_pf, dCl35_pf_dT); + + amrex::Real S32_pf, dS32_pf_dT; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors, pf_cache, S32_pf, dS32_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * Cl35_pf; + amrex::Real z_p = He4_pf * S32_pf; + + amrex::Real dz_r_dT = Cl35_pf * dp_pf_dT + p_pf * dCl35_pf_dT; + amrex::Real dz_p_dT = S32_pf * dHe4_pf_dT + He4_pf * dS32_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ar36_to_He4_S32_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ti44 + He4 --> Cr48 + // Ar36 --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -3219,12 +3728,12 @@ void rate_He4_Ti44_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 73.81637663285039 + -77.06281976216322 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 77.06281976216322 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3235,45 +3744,38 @@ void rate_He4_Ti44_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; - // Ti44 + He4 --> p + V47 + amrex::Real S32_pf, dS32_pf_dT; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors, pf_cache, S32_pf, dS32_pf_dT); - rate = 0.0; - drate_dT = 0.0; + amrex::Real Ar36_pf, dAr36_pf_dT; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors, pf_cache, Ar36_pf, dAr36_pf_dT); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real z_r = He4_pf * S32_pf; + amrex::Real z_p = Ar36_pf; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + amrex::Real dz_r_dT = S32_pf * dHe4_pf_dT + He4_pf * dS32_pf_dT; + amrex::Real dz_p_dT = dAr36_pf_dT; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - } + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ar36_to_p_Cl35_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // V47 + p --> Cr48 + // Ar36 --> p + Cl35 rate = 0.0; drate_dT = 0.0; @@ -3282,13 +3784,11 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + // il10c + ln_set_rate = 16.01685487088493 + -100.72924752614605 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 100.72924752614605 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3299,13 +3799,11 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + // il10c + ln_set_rate = -17.47510512911507 + -99.28393852614604 * tfactors.T9i; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 = 99.28393852614604 * tfactors.T9i * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3316,13 +3814,13 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + // il10c + ln_set_rate = 60.73659487088493 + -98.71928752614605 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 = 98.71928752614605 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3333,13 +3831,13 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + // il10c + ln_set_rate = 17.202804870884933 + -102.37020752614605 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 = 102.37020752614605 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3350,13 +3848,38 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Cl35_pf, dCl35_pf_dT; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors, pf_cache, Cl35_pf, dCl35_pf_dT); + + amrex::Real Ar36_pf, dAr36_pf_dT; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors, pf_cache, Ar36_pf, dAr36_pf_dT); + + amrex::Real z_r = p_pf * Cl35_pf; + amrex::Real z_p = Ar36_pf; + + amrex::Real dz_r_dT = Cl35_pf * dp_pf_dT + p_pf * dCl35_pf_dT; + amrex::Real dz_p_dT = dAr36_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ar36_to_p_K39_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cr48 --> He4 + Ti44 + // Ar36 + He4 --> p + K39 rate = 0.0; drate_dT = 0.0; @@ -3366,12 +3889,12 @@ void rate_Cr48_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 89.7573 + -89.3041 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate = 20.636664061510302 + -14.953349961318928 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 89.3041 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 14.953349961318928 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3382,13 +3905,43 @@ void rate_Cr48_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real K39_pf, dK39_pf_dT; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors, pf_cache, K39_pf, dK39_pf_dT); + + amrex::Real Ar36_pf, dAr36_pf_dT; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors, pf_cache, Ar36_pf, dAr36_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real z_r = p_pf * K39_pf; + amrex::Real z_p = He4_pf * Ar36_pf; + + amrex::Real dz_r_dT = K39_pf * dp_pf_dT + p_pf * dK39_pf_dT; + amrex::Real dz_p_dT = Ar36_pf * dHe4_pf_dT + He4_pf * dAr36_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ca40_to_He4_Ar36_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cr48 --> p + V47 + // Ca40 --> He4 + Ar36 rate = 0.0; drate_dT = 0.0; @@ -3397,13 +3950,13 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // nfisn - ln_set_rate = 65.6231 + -94.5854 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + // ths8r + ln_set_rate = 77.28261041284823 + -81.69174599574632 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.5854 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + dln_set_rate_dT9 = 81.69174599574632 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3414,13 +3967,53 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 67.7403 + -100.13 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ca40_pf, dCa40_pf_dT; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors, pf_cache, Ca40_pf, dCa40_pf_dT); + + amrex::Real Ar36_pf, dAr36_pf_dT; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors, pf_cache, Ar36_pf, dAr36_pf_dT); + + amrex::Real z_r = He4_pf * Ar36_pf; + amrex::Real z_p = Ca40_pf; + + amrex::Real dz_r_dT = Ar36_pf * dHe4_pf_dT + He4_pf * dAr36_pf_dT; + amrex::Real dz_p_dT = dCa40_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Ca40_to_p_K39_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Ca40 --> p + K39 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // lo18r + ln_set_rate = 2786.4340744743586 + -101.86662364079672 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.13 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + dln_set_rate_dT9 = 101.86662364079672 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3431,13 +4024,13 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 536.523 + -99.3659 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; + // lo18r + ln_set_rate = 613.1530744743586 + -109.20898364079672 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.3659 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + dln_set_rate_dT9 = 109.20898364079672 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3448,13 +4041,13 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } - // nfisn - ln_set_rate = 48.892 + -93.8243 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.92325 * tfactors.lnT9; + // lo18r + ln_set_rate = 127.30607447435852 + -98.30936364079672 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.8243 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.92325 * tfactors.T9i; + dln_set_rate_dT9 = 98.30936364079672 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3465,13 +4058,38 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Ca40_pf, dCa40_pf_dT; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors, pf_cache, Ca40_pf, dCa40_pf_dT); + + amrex::Real K39_pf, dK39_pf_dT; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors, pf_cache, K39_pf, dK39_pf_dT); + + amrex::Real z_r = p_pf * K39_pf; + amrex::Real z_p = Ca40_pf; + + amrex::Real dz_r_dT = K39_pf * dp_pf_dT + p_pf * dK39_pf_dT; + amrex::Real dz_p_dT = dCa40_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_He4_Ca40_to_p_Sc43_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // V47 + p --> He4 + Ti44 + // Ca40 + He4 --> p + Sc43 rate = 0.0; drate_dT = 0.0; @@ -3480,13 +4098,13 @@ void rate_p_V47_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amr amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // chw0r - ln_set_rate = -76.6143 + -6.02945 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + // ths8r + ln_set_rate = 35.65752817292938 + -40.87575463203665 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.02945 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 = 40.87575463203665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3497,13 +4115,43 @@ void rate_p_V47_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amr drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Ca40_pf, dCa40_pf_dT; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors, pf_cache, Ca40_pf, dCa40_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Sc43_pf, dSc43_pf_dT; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors, pf_cache, Sc43_pf, dSc43_pf_dT); + + amrex::Real z_r = p_pf * Sc43_pf; + amrex::Real z_p = He4_pf * Ca40_pf; + + amrex::Real dz_r_dT = Sc43_pf * dp_pf_dT + p_pf * dSc43_pf_dT; + amrex::Real dz_p_dT = Ca40_pf * dHe4_pf_dT + He4_pf * dCa40_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ti44_to_He4_Ca40_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cr48 + He4 --> Fe52 + // Ti44 --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -3512,13 +4160,13 @@ void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // chw0 + ln_set_rate = 78.69908591662849 + -59.4975248620018 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 59.4975248620018 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3529,13 +4177,38 @@ void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ca40_pf, dCa40_pf_dT; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors, pf_cache, Ca40_pf, dCa40_pf_dT); + + amrex::Real Ti44_pf, dTi44_pf_dT; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors, pf_cache, Ti44_pf, dTi44_pf_dT); + + amrex::Real z_r = He4_pf * Ca40_pf; + amrex::Real z_p = Ti44_pf; + + amrex::Real dz_r_dT = Ca40_pf * dHe4_pf_dT + He4_pf * dCa40_pf_dT; + amrex::Real dz_p_dT = dTi44_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ti44_to_p_Sc43_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cr48 + He4 --> p + Mn51 + // Ti44 --> p + Sc43 rate = 0.0; drate_dT = 0.0; @@ -3545,12 +4218,12 @@ void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, am amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 62.59391408955788 + -100.37327949403844 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 100.37327949403844 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3561,13 +4234,38 @@ void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Ti44_pf, dTi44_pf_dT; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors, pf_cache, Ti44_pf, dTi44_pf_dT); + + amrex::Real Sc43_pf, dSc43_pf_dT; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors, pf_cache, Sc43_pf, dSc43_pf_dT); + + amrex::Real z_r = p_pf * Sc43_pf; + amrex::Real z_p = Ti44_pf; + + amrex::Real dz_r_dT = Sc43_pf * dp_pf_dT + p_pf * dSc43_pf_dT; + amrex::Real dz_p_dT = dTi44_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Cr48_to_He4_Ti44_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mn51 + p --> Fe52 + // Cr48 --> He4 + Ti44 rate = 0.0; drate_dT = 0.0; @@ -3577,12 +4275,12 @@ void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 89.75733412085052 + -89.3041938384302 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 89.3041938384302 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3593,13 +4291,38 @@ void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Cr48_pf, dCr48_pf_dT; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors, pf_cache, Cr48_pf, dCr48_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Ti44_pf, dTi44_pf_dT; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors, pf_cache, Ti44_pf, dTi44_pf_dT); + + amrex::Real z_r = He4_pf * Ti44_pf; + amrex::Real z_p = Cr48_pf; + + amrex::Real dz_r_dT = Ti44_pf * dHe4_pf_dT + He4_pf * dTi44_pf_dT; + amrex::Real dz_p_dT = dCr48_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Cr48_to_p_V47_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Fe52 --> He4 + Cr48 + // Cr48 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -3608,13 +4331,13 @@ void rate_Fe52_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 90.1474 + -92.109 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // nfisn + ln_set_rate = 67.74027107253823 + -100.12633621113824 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.109 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 100.12633621113824 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3625,28 +4348,47 @@ void rate_Fe52_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } -} + // nfisn + ln_set_rate = 536.5234710725382 + -99.36194621113825 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.36194621113825 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + } - // Fe52 --> p + Mn51 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } - rate = 0.0; - drate_dT = 0.0; + // nfisn + ln_set_rate = 48.891971072538226 + -93.82037121113825 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 93.82037121113825 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; + } - // ths8r - ln_set_rate = 61.728 + -85.6325 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nfisn + ln_set_rate = 65.62307107253824 + -94.58145021113825 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.6325 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 = 94.58145021113825 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3657,13 +4399,38 @@ void rate_Fe52_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Cr48_pf, dCr48_pf_dT; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors, pf_cache, Cr48_pf, dCr48_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real V47_pf, dV47_pf_dT; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors, pf_cache, V47_pf, dV47_pf_dT); + + amrex::Real z_r = p_pf * V47_pf; + amrex::Real z_p = Cr48_pf; + + amrex::Real dz_r_dT = V47_pf * dp_pf_dT + p_pf * dV47_pf_dT; + amrex::Real dz_p_dT = dCr48_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_V47_to_He4_Ti44_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mn51 + p --> He4 + Cr48 + // V47 + p --> He4 + Ti44 rate = 0.0; drate_dT = 0.0; @@ -3672,13 +4439,13 @@ void rate_p_Mn51_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, am amrex::Real dln_set_rate_dT9{0.0}; amrex::Real set_rate{0.0}; - // ths8r - ln_set_rate = 58.7312 + -6.47654 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + // chw0r + ln_set_rate = -76.61433695168769 + -6.029445311023438 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.47654 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 6.029445311023438 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3689,13 +4456,43 @@ void rate_p_Mn51_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real V47_pf, dV47_pf_dT; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors, pf_cache, V47_pf, dV47_pf_dT); + + amrex::Real Ti44_pf, dTi44_pf_dT; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors, pf_cache, Ti44_pf, dTi44_pf_dT); + + amrex::Real z_r = He4_pf * Ti44_pf; + amrex::Real z_p = p_pf * V47_pf; + + amrex::Real dz_r_dT = Ti44_pf * dHe4_pf_dT + He4_pf * dTi44_pf_dT; + amrex::Real dz_p_dT = V47_pf * dp_pf_dT + p_pf * dV47_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Fe52_to_He4_Cr48_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Fe52 + He4 --> Ni56 + // Fe52 --> He4 + Cr48 rate = 0.0; drate_dT = 0.0; @@ -3705,12 +4502,12 @@ void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 90.14738712482466 + -92.10912191363732 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 92.10912191363732 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3721,13 +4518,38 @@ void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Cr48_pf, dCr48_pf_dT; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors, pf_cache, Cr48_pf, dCr48_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Fe52_pf, dFe52_pf_dT; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors, pf_cache, Fe52_pf, dFe52_pf_dT); + + amrex::Real z_r = He4_pf * Cr48_pf; + amrex::Real z_p = Fe52_pf; + + amrex::Real dz_r_dT = Cr48_pf * dHe4_pf_dT + He4_pf * dCr48_pf_dT; + amrex::Real dz_p_dT = dFe52_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Fe52_to_p_Mn51_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Fe52 + He4 --> p + Co55 + // Fe52 --> p + Mn51 rate = 0.0; drate_dT = 0.0; @@ -3737,12 +4559,12 @@ void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, am amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 61.72798916565748 + -85.6326403498911 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 85.6326403498911 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3753,13 +4575,38 @@ void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Mn51_pf, dMn51_pf_dT; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors, pf_cache, Mn51_pf, dMn51_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Fe52_pf, dFe52_pf_dT; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors, pf_cache, Fe52_pf, dFe52_pf_dT); + + amrex::Real z_r = p_pf * Mn51_pf; + amrex::Real z_p = Fe52_pf; + + amrex::Real dz_r_dT = Mn51_pf * dp_pf_dT + p_pf * dMn51_pf_dT; + amrex::Real dz_p_dT = dFe52_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Mn51_to_He4_Cr48_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Co55 + p --> Ni56 + // Mn51 + p --> He4 + Cr48 rate = 0.0; drate_dT = 0.0; @@ -3769,12 +4616,12 @@ void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate = 58.73119795916718 + -6.476551190854941 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 = 6.476551190854941 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3785,11 +4632,41 @@ void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Cr48_pf, dCr48_pf_dT; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors, pf_cache, Cr48_pf, dCr48_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Mn51_pf, dMn51_pf_dT; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors, pf_cache, Mn51_pf, dMn51_pf_dT); + + amrex::Real z_r = He4_pf * Cr48_pf; + amrex::Real z_p = p_pf * Mn51_pf; + + amrex::Real dz_r_dT = Cr48_pf * dHe4_pf_dT + He4_pf * dCr48_pf_dT; + amrex::Real dz_p_dT = Mn51_pf * dp_pf_dT + p_pf * dMn51_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ni56_to_He4_Fe52_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ni56 --> He4 + Fe52 @@ -3801,11 +4678,11 @@ void rate_Ni56_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 91.6226 + -92.801 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + ln_set_rate = 91.62258922810439 + -92.801099329237 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.801 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + dln_set_rate_dT9 = 92.801099329237 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; } @@ -3817,11 +4694,36 @@ void rate_Ni56_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Ni56_pf, dNi56_pf_dT; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors, pf_cache, Ni56_pf, dNi56_pf_dT); + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Fe52_pf, dFe52_pf_dT; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors, pf_cache, Fe52_pf, dFe52_pf_dT); + + amrex::Real z_r = He4_pf * Fe52_pf; + amrex::Real z_p = Ni56_pf; + + amrex::Real dz_r_dT = Fe52_pf * dHe4_pf_dT + He4_pf * dFe52_pf_dT; + amrex::Real dz_p_dT = dNi56_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_Ni56_to_p_Co55_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ni56 --> p + Co55 @@ -3833,11 +4735,11 @@ void rate_Ni56_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex: amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 63.1318 + -83.1473 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + ln_set_rate = 63.131770608640906 + -83.14741674893808 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 83.1473 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + dln_set_rate_dT9 = 83.14741674893808 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; } @@ -3849,11 +4751,36 @@ void rate_Ni56_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex: drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real Ni56_pf, dNi56_pf_dT; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors, pf_cache, Ni56_pf, dNi56_pf_dT); + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real Co55_pf, dCo55_pf_dT; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors, pf_cache, Co55_pf, dCo55_pf_dT); + + amrex::Real z_r = p_pf * Co55_pf; + amrex::Real z_p = Ni56_pf; + + amrex::Real dz_r_dT = Co55_pf * dp_pf_dT + p_pf * dCo55_pf_dT; + amrex::Real dz_p_dT = dNi56_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_Co55_to_He4_Fe52_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Co55 + p --> He4 + Fe52 @@ -3865,11 +4792,11 @@ void rate_p_Co55_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, am amrex::Real set_rate{0.0}; // ths8r - ln_set_rate = 61.4434 + -9.65363 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + ln_set_rate = 61.443418619463486 + -9.65364776674457 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.65363 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + dln_set_rate_dT9 = 9.65364776674457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; } @@ -3881,6 +4808,36 @@ void rate_p_Co55_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, am drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; } + + amrex::Real p_pf, dp_pf_dT; + // setting p partition function to 1.0 by default, independent of T + p_pf = 1.0_rt; + dp_pf_dT = 0.0_rt; + + amrex::Real He4_pf, dHe4_pf_dT; + // setting He4 partition function to 1.0 by default, independent of T + He4_pf = 1.0_rt; + dHe4_pf_dT = 0.0_rt; + + amrex::Real Co55_pf, dCo55_pf_dT; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors, pf_cache, Co55_pf, dCo55_pf_dT); + + amrex::Real Fe52_pf, dFe52_pf_dT; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors, pf_cache, Fe52_pf, dFe52_pf_dT); + + amrex::Real z_r = He4_pf * Fe52_pf; + amrex::Real z_p = p_pf * Co55_pf; + + amrex::Real dz_r_dT = Fe52_pf * dHe4_pf_dT + He4_pf * dFe52_pf_dT; + amrex::Real dz_p_dT = Co55_pf * dp_pf_dT + p_pf * dCo55_pf_dT; + + amrex::Real dzterm_dT = (z_p * dz_r_dT - z_r * dz_p_dT) / (z_p * z_p); + + drate_dT = dzterm_dT * rate + drate_dT * (z_r / z_p); + rate *= z_r/z_p; + } @@ -3889,14 +4846,14 @@ AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); @@ -3907,16 +4864,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -3927,14 +4884,14 @@ AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); @@ -3945,16 +4902,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -3965,14 +4922,14 @@ AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); @@ -3983,16 +4940,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived_removed); amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived_removed); amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -4005,14 +4962,14 @@ void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex:: amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_removed); amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed); amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); } } @@ -4021,16 +4978,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -4043,14 +5000,14 @@ void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex:: amrex::Real r_ag = rate_eval.screened_rates(k_He4_Cr48_to_Fe52_removed); amrex::Real r_ap = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_removed); amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); } } @@ -4059,16 +5016,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -4081,14 +5038,14 @@ void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex:: amrex::Real r_ag = rate_eval.screened_rates(k_He4_Fe52_to_Ni56_removed); amrex::Real r_ap = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ag + r_ap * r_pg * dd; if constexpr (std::is_same_v) { amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_removed); amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived_removed); drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); } } @@ -4097,16 +5054,16 @@ template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_removed); + amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived_removed); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived_removed); + amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived_removed); amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_removed); amrex::Real dd = 1.0_rt / (r_pg + r_pa); rate = r_ga + r_gp * r_pa * dd; if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed); + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived_removed); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived_removed); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived_removed); amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed); drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); } @@ -4122,84 +5079,8 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) amrex::Real rate; amrex::Real drate_dT; - rate_N13_to_p_C12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_p_C12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12) = drate_dT; - - } - rate_O16_to_He4_C12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O16_to_He4_C12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12) = drate_dT; - - } - rate_F18_to_He4_N14(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_F18_to_He4_N14) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_He4_N14) = drate_dT; - - } - rate_Ne20_to_He4_O16(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ne20_to_He4_O16) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16) = drate_dT; - - } - rate_Na22_to_p_Ne21(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Na22_to_p_Ne21) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21) = drate_dT; - - } - rate_Na22_to_He4_F18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Na22_to_He4_F18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18) = drate_dT; - - } - rate_Mg24_to_p_Na23(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Mg24_to_p_Na23) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23) = drate_dT; - - } - rate_Mg24_to_He4_Ne20(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20) = drate_dT; - - } - rate_Si28_to_p_Al27(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Si28_to_p_Al27) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27) = drate_dT; - - } - rate_Si28_to_He4_Mg24(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Si28_to_He4_Mg24) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24) = drate_dT; - - } - rate_S32_to_p_P31(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_S32_to_p_P31) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31) = drate_dT; - - } - rate_S32_to_He4_Si28(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_S32_to_He4_Si28) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28) = drate_dT; - - } - rate_C12_to_He4_He4_He4(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_C12_to_He4_He4_He4) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4) = drate_dT; + part_fun::pf_cache_t pf_cache{}; - } rate_p_C12_to_N13(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_C12_to_N13) = rate; if constexpr (std::is_same_v) { @@ -4289,12 +5170,6 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = drate_dT; - } - rate_p_O16_to_He4_N13(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_He4_N13) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = drate_dT; - } rate_C12_O16_to_p_Al27(tfactors, rate, drate_dT); rate_eval.screened_rates(k_C12_O16_to_p_Al27) = rate; @@ -4325,42 +5200,18 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21) = drate_dT; - } - rate_He4_Ne20_to_p_Na23(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23) = drate_dT; - - } - rate_p_Ne21_to_He4_F18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne21_to_He4_F18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18) = drate_dT; - } rate_p_Na23_to_He4_Ne20(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Na23_to_He4_Ne20) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = drate_dT; - } - rate_He4_Mg24_to_p_Al27(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27) = drate_dT; - } rate_p_Al27_to_He4_Mg24(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Al27_to_He4_Mg24) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = drate_dT; - } - rate_He4_Si28_to_p_P31(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_p_P31) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31) = drate_dT; - } rate_p_P31_to_He4_Si28(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_P31_to_He4_Si28) = rate; @@ -4397,30 +5248,12 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed) = drate_dT; - } - rate_He4_S32_to_p_Cl35_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed) = drate_dT; - } rate_p_Cl35_to_Ar36_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed) = drate_dT; - } - rate_Ar36_to_He4_S32_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_He4_S32_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed) = drate_dT; - - } - rate_Ar36_to_p_Cl35_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed) = drate_dT; - } rate_p_Cl35_to_He4_S32_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed) = rate; @@ -4433,30 +5266,12 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed) = drate_dT; - } - rate_He4_Ar36_to_p_K39_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed) = drate_dT; - } rate_p_K39_to_Ca40_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_K39_to_Ca40_removed) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed) = drate_dT; - } - rate_Ca40_to_He4_Ar36_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed) = drate_dT; - - } - rate_Ca40_to_p_K39_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_p_K39_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed) = drate_dT; - } rate_p_K39_to_He4_Ar36_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed) = rate; @@ -4469,30 +5284,12 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed) = drate_dT; - } - rate_He4_Ca40_to_p_Sc43_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed) = drate_dT; - } rate_p_Sc43_to_Ti44_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed) = rate; if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed) = drate_dT; - } - rate_Ti44_to_He4_Ca40_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed) = drate_dT; - - } - rate_Ti44_to_p_Sc43_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed) = drate_dT; - } rate_p_Sc43_to_He4_Ca40_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed) = rate; @@ -4517,24 +5314,6 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed) = drate_dT; - } - rate_Cr48_to_He4_Ti44_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed) = drate_dT; - - } - rate_Cr48_to_p_V47_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_p_V47_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed) = drate_dT; - - } - rate_p_V47_to_He4_Ti44_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed) = drate_dT; - } rate_He4_Cr48_to_Fe52_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_He4_Cr48_to_Fe52_removed) = rate; @@ -4553,24 +5332,6 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed) = drate_dT; - } - rate_Fe52_to_He4_Cr48_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed) = drate_dT; - - } - rate_Fe52_to_p_Mn51_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed) = drate_dT; - - } - rate_p_Mn51_to_He4_Cr48_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed) = drate_dT; - } rate_He4_Fe52_to_Ni56_removed(tfactors, rate, drate_dT); rate_eval.screened_rates(k_He4_Fe52_to_Ni56_removed) = rate; @@ -4590,22 +5351,220 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed) = drate_dT; } - rate_Ni56_to_He4_Fe52_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed) = rate; + rate_N13_to_p_C12_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + + } + rate_O16_to_He4_C12_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + + } + rate_F18_to_He4_N14_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_F18_to_He4_N14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived) = drate_dT; + + } + rate_Ne20_to_He4_O16_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + + } + rate_Na22_to_p_Ne21_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Na22_to_p_Ne21_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_derived) = drate_dT; + + } + rate_Na22_to_He4_F18_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Na22_to_He4_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_derived) = drate_dT; + + } + rate_Mg24_to_p_Na23_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + + } + rate_Mg24_to_He4_Ne20_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + + } + rate_Si28_to_p_Al27_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + + } + rate_Si28_to_He4_Mg24_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + + } + rate_S32_to_p_P31_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + + } + rate_S32_to_He4_Si28_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + + } + rate_C12_to_He4_He4_He4_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + + } + rate_p_O16_to_He4_N13_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + + } + rate_He4_Ne20_to_p_Na23_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + + } + rate_p_Ne21_to_He4_F18_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Ne21_to_He4_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18_derived) = drate_dT; + + } + rate_He4_Mg24_to_p_Al27_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + + } + rate_He4_Si28_to_p_P31_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + + } + rate_He4_S32_to_p_Cl35_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived_removed) = drate_dT; + + } + rate_Ar36_to_He4_S32_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived_removed) = drate_dT; + + } + rate_Ar36_to_p_Cl35_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived_removed) = drate_dT; + + } + rate_He4_Ar36_to_p_K39_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived_removed) = drate_dT; + + } + rate_Ca40_to_He4_Ar36_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived_removed) = drate_dT; + + } + rate_Ca40_to_p_K39_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived_removed) = drate_dT; + + } + rate_He4_Ca40_to_p_Sc43_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived_removed) = drate_dT; + + } + rate_Ti44_to_He4_Ca40_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived_removed) = drate_dT; + + } + rate_Ti44_to_p_Sc43_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived_removed) = drate_dT; + + } + rate_Cr48_to_He4_Ti44_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived_removed) = drate_dT; + + } + rate_Cr48_to_p_V47_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived_removed) = drate_dT; + + } + rate_p_V47_to_He4_Ti44_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed) = drate_dT; + + } + rate_Fe52_to_He4_Cr48_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived_removed) = drate_dT; + + } + rate_Fe52_to_p_Mn51_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived_removed) = drate_dT; + + } + rate_p_Mn51_to_He4_Cr48_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived_removed) = drate_dT; + + } + rate_Ni56_to_He4_Fe52_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived_removed) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived_removed) = drate_dT; } - rate_Ni56_to_p_Co55_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_p_Co55_removed) = rate; + rate_Ni56_to_p_Co55_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived_removed) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived_removed) = drate_dT; } - rate_p_Co55_to_He4_Fe52_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed) = rate; + rate_p_Co55_to_He4_Fe52_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived_removed) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed) = drate_dT; + rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived_removed) = drate_dT; } diff --git a/networks/subch_simple/subch_simple.png b/networks/subch_simple/subch_simple.png index 8ecc229a3061c74662e3c98eb5362b8445c2d17e..34a263ae846aede1072ff81925f2de0ea6649398 100644 GIT binary patch literal 111353 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

cwq0MS$G~hs1upI~}U@ZD6t-o7+a@T%< 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

a=>#p%K2&IB4Pf&%2a2kwTd(LV?~N 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 Jmvv4FO#o+Z(^voi literal 110344 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