diff --git a/networks/He-C-Fe-group-simple/56co-56fe_electroncapture.dat b/networks/He-C-Fe-group-simple/56co-56fe_electroncapture.dat new file mode 100644 index 000000000..f6baf63fd --- /dev/null +++ b/networks/He-C-Fe-group-simple/56co-56fe_electroncapture.dat @@ -0,0 +1,148 @@ +!56co -> 56fe, e- capture +!Q=-4.055 MeV +! +!Log(rhoY) Log(temp) mu dQ Vs Log(e-cap-rate) Log(nu-energy-loss) Log(gamma-energy) +!Log(g/cm^3) Log(K) erg erg erg Log(1/s) Log(erg/s) Log(erg/s) +1.000000 7.000000 -4.806530e-09 0.00 0.00 -7.705836 -1.359829e+01 -100.00 +1.000000 8.000000 -9.292624e-08 0.00 0.00 -7.707962 -1.360129e+01 -100.00 +1.000000 8.301030 -2.146917e-07 0.00 0.00 -7.692263 -1.357029e+01 -100.00 +1.000000 8.602060 -4.902661e-07 0.00 0.00 -7.032866 -1.269229e+01 -100.00 +1.000000 8.845098 -8.058948e-07 0.00 0.00 -6.284874 -1.190729e+01 -100.00 +1.000000 9.000000 -8.187123e-07 0.00 0.00 -5.970341 -1.158929e+01 -100.00 +1.000000 9.176091 -8.187123e-07 0.00 0.00 -5.642062 -1.124329e+01 -100.00 +1.000000 9.301030 -8.187123e-07 0.00 0.00 -5.178082 -1.068229e+01 -100.00 +1.000000 9.477121 -8.187123e-07 0.00 0.00 -4.093715 -9.477290e+00 -100.00 +1.000000 9.698970 -8.187123e-07 0.00 0.00 -2.791284 -8.079290e+00 -100.00 +1.000000 10.000000 -8.187123e-07 0.00 0.00 -1.100233 -6.190290e+00 -100.00 +1.000000 10.477121 -8.187123e-07 0.00 0.00 1.756545 -2.941290e+00 -100.00 +1.000000 11.000000 -8.187123e-07 0.00 0.00 4.567038 3.947104e-01 -100.00 +2.000000 7.000000 -1.602177e-09 0.00 0.00 -7.679753 -1.357129e+01 -100.00 +2.000000 8.000000 -6.088271e-08 0.00 0.00 -7.698752 -1.359129e+01 -100.00 +2.000000 8.301030 -1.522068e-07 0.00 0.00 -7.685687 -1.356429e+01 -100.00 +2.000000 8.602060 -3.636941e-07 0.00 0.00 -7.031660 -1.269129e+01 -100.00 +2.000000 8.845098 -7.145708e-07 0.00 0.00 -6.284674 -1.190729e+01 -100.00 +2.000000 9.000000 -8.107014e-07 0.00 0.00 -5.970255 -1.158929e+01 -100.00 +2.000000 9.176091 -8.187123e-07 0.00 0.00 -5.642021 -1.124329e+01 -100.00 +2.000000 9.301030 -8.187123e-07 0.00 0.00 -5.178082 -1.068229e+01 -100.00 +2.000000 9.477121 -8.187123e-07 0.00 0.00 -4.093715 -9.477290e+00 -100.00 +2.000000 9.698970 -8.187123e-07 0.00 0.00 -2.791284 -8.079290e+00 -100.00 +2.000000 10.000000 -8.187123e-07 0.00 0.00 -1.100233 -6.190290e+00 -100.00 +2.000000 10.477121 -8.187123e-07 0.00 0.00 1.756545 -2.941290e+00 -100.00 +2.000000 11.000000 -8.187123e-07 0.00 0.00 4.567038 3.947104e-01 -100.00 +3.000000 7.000000 3.204353e-09 0.00 0.00 -7.527841 -1.341529e+01 -100.00 +3.000000 8.000000 -2.883918e-08 0.00 0.00 -7.617156 -1.350629e+01 -100.00 +3.000000 8.301030 -8.811971e-08 0.00 0.00 -7.625169 -1.350229e+01 -100.00 +3.000000 8.602060 -2.355200e-07 0.00 0.00 -7.019812 -1.268329e+01 -100.00 +3.000000 8.845098 -5.030835e-07 0.00 0.00 -6.282127 -1.190529e+01 -100.00 +3.000000 9.000000 -7.450121e-07 0.00 0.00 -5.969199 -1.158829e+01 -100.00 +3.000000 9.176091 -8.107014e-07 0.00 0.00 -5.641444 -1.124229e+01 -100.00 +3.000000 9.301030 -8.171101e-07 0.00 0.00 -5.177793 -1.068229e+01 -100.00 +3.000000 9.477121 -8.187123e-07 0.00 0.00 -4.093715 -9.477290e+00 -100.00 +3.000000 9.698970 -8.187123e-07 0.00 0.00 -2.791284 -8.079290e+00 -100.00 +3.000000 10.000000 -8.187123e-07 0.00 0.00 -1.100233 -6.190290e+00 -100.00 +3.000000 10.477121 -8.187123e-07 0.00 0.00 1.756545 -2.941290e+00 -100.00 +3.000000 11.000000 -8.187123e-07 0.00 0.00 4.567038 3.947104e-01 -100.00 +4.000000 7.000000 1.922612e-08 0.00 0.00 -7.143978 -1.302429e+01 -100.00 +4.000000 8.000000 8.010883e-09 0.00 0.00 -7.218464 -1.309829e+01 -100.00 +4.000000 8.301030 -2.082830e-08 0.00 0.00 -7.274399 -1.314829e+01 -100.00 +4.000000 8.602060 -1.073458e-07 0.00 0.00 -6.917460 -1.261229e+01 -100.00 +4.000000 8.845098 -2.787787e-07 0.00 0.00 -6.257215 -1.188529e+01 -100.00 +4.000000 9.000000 -4.838573e-07 0.00 0.00 -5.953899 -1.157529e+01 -100.00 +4.000000 9.176091 -7.434100e-07 0.00 0.00 -5.634532 -1.123529e+01 -100.00 +4.000000 9.301030 -7.962818e-07 0.00 0.00 -5.174694 -1.067929e+01 -100.00 +4.000000 9.477121 -8.123036e-07 0.00 0.00 -4.093030 -9.476290e+00 -100.00 +4.000000 9.698970 -8.171101e-07 0.00 0.00 -2.791062 -8.079290e+00 -100.00 +4.000000 10.000000 -8.187123e-07 0.00 0.00 -1.100233 -6.190290e+00 -100.00 +4.000000 10.477121 -8.187123e-07 0.00 0.00 1.756545 -2.941290e+00 -100.00 +4.000000 11.000000 -8.187123e-07 0.00 0.00 4.567038 3.947104e-01 -100.00 +5.000000 7.000000 8.491536e-08 0.00 0.00 -6.531161 -1.240329e+01 -100.00 +5.000000 8.000000 8.331318e-08 0.00 0.00 -6.535828 -1.240729e+01 -100.00 +5.000000 8.301030 7.530230e-08 0.00 0.00 -6.547748 -1.241729e+01 -100.00 +5.000000 8.602060 4.165659e-08 0.00 0.00 -6.451858 -1.223429e+01 -100.00 +5.000000 8.845098 -4.165659e-08 0.00 0.00 -6.068661 -1.173129e+01 -100.00 +5.000000 9.000000 -1.570133e-07 0.00 0.00 -5.819785 -1.145429e+01 -100.00 +5.000000 9.176091 -3.941355e-07 0.00 0.00 -5.540428 -1.114429e+01 -100.00 +5.000000 9.301030 -6.136337e-07 0.00 0.00 -5.135174 -1.064329e+01 -100.00 +5.000000 9.477121 -7.626361e-07 0.00 0.00 -4.086733 -9.469290e+00 -100.00 +5.000000 9.698970 -8.042927e-07 0.00 0.00 -2.789275 -8.077290e+00 -100.00 +5.000000 10.000000 -8.155079e-07 0.00 0.00 -1.099233 -6.190290e+00 -100.00 +5.000000 10.477121 -8.187123e-07 0.00 0.00 1.756545 -2.941290e+00 -100.00 +5.000000 11.000000 -8.187123e-07 0.00 0.00 4.567038 3.947104e-01 -100.00 +6.000000 7.000000 3.444680e-07 0.00 0.00 -5.665057 -1.151229e+01 -100.00 +6.000000 8.000000 3.428658e-07 0.00 0.00 -5.665057 -1.151029e+01 -100.00 +6.000000 8.301030 3.412636e-07 0.00 0.00 -5.661938 -1.150729e+01 -100.00 +6.000000 8.602060 3.316506e-07 0.00 0.00 -5.615084 -1.142629e+01 -100.00 +6.000000 8.845098 3.028114e-07 0.00 0.00 -5.425421 -1.113829e+01 -100.00 +6.000000 9.000000 2.579504e-07 0.00 0.00 -5.254582 -1.091629e+01 -100.00 +6.000000 9.176091 1.490024e-07 0.00 0.00 -5.034578 -1.064429e+01 -100.00 +6.000000 9.301030 1.602177e-09 0.00 0.00 -4.780142 -1.031029e+01 -100.00 +6.000000 9.477121 -3.396614e-07 0.00 0.00 -4.003284 -9.385290e+00 -100.00 +6.000000 9.698970 -6.729142e-07 0.00 0.00 -2.769201 -8.050290e+00 -100.00 +6.000000 10.000000 -7.866687e-07 0.00 0.00 -1.092706 -6.183290e+00 -100.00 +6.000000 10.477121 -8.155079e-07 0.00 0.00 1.756545 -2.940290e+00 -100.00 +6.000000 11.000000 -8.187123e-07 0.00 0.00 4.567038 3.947104e-01 -100.00 +7.000000 7.000000 1.140750e-06 0.00 0.00 -4.358806 -1.014129e+01 -100.00 +7.000000 8.000000 1.139148e-06 0.00 0.00 -4.357806 -1.014029e+01 -100.00 +7.000000 8.301030 1.139148e-06 0.00 0.00 -4.355800 -1.013829e+01 -100.00 +7.000000 8.602060 1.134341e-06 0.00 0.00 -4.333132 -1.010029e+01 -100.00 +7.000000 8.845098 1.123126e-06 0.00 0.00 -4.232138 -9.941290e+00 -100.00 +7.000000 9.000000 1.103900e-06 0.00 0.00 -4.122810 -9.784290e+00 -100.00 +7.000000 9.176091 1.060641e-06 0.00 0.00 -3.965142 -9.572290e+00 -100.00 +7.000000 9.301030 9.965539e-07 0.00 0.00 -3.811776 -9.359290e+00 -100.00 +7.000000 9.477121 8.171101e-07 0.00 0.00 -3.421915 -8.813290e+00 -100.00 +7.000000 9.698970 2.996070e-07 0.00 0.00 -2.535933 -7.770290e+00 -100.00 +7.000000 10.000000 -5.046856e-07 0.00 0.00 -1.027814 -6.111290e+00 -100.00 +7.000000 10.477121 -7.850666e-07 0.00 0.00 1.759514 -2.937290e+00 -100.00 +7.000000 11.000000 -8.155079e-07 0.00 0.00 4.567038 3.947104e-01 -100.00 +8.000000 7.000000 3.101814e-06 0.00 0.00 -2.446998 -8.087290e+00 -100.00 +8.000000 8.000000 3.101814e-06 0.00 0.00 -2.445998 -8.086290e+00 -100.00 +8.000000 8.301030 3.100212e-06 0.00 0.00 -2.444998 -8.085290e+00 -100.00 +8.000000 8.602060 3.098610e-06 0.00 0.00 -2.437989 -8.073290e+00 -100.00 +8.000000 8.845098 3.093803e-06 0.00 0.00 -2.402943 -8.018290e+00 -100.00 +8.000000 9.000000 3.085792e-06 0.00 0.00 -2.360894 -7.952290e+00 -100.00 +8.000000 9.176091 3.064964e-06 0.00 0.00 -2.288815 -7.849290e+00 -100.00 +8.000000 9.301030 3.036125e-06 0.00 0.00 -2.213574 -7.743290e+00 -100.00 +8.000000 9.477121 2.954414e-06 0.00 0.00 -2.025688 -7.469290e+00 -100.00 +8.000000 9.698970 2.693259e-06 0.00 0.00 -1.520319 -6.764290e+00 -100.00 +8.000000 10.000000 1.573337e-06 0.00 0.00 -0.491245 -5.552290e+00 -100.00 +8.000000 10.477121 -4.838573e-07 0.00 0.00 1.790233 -2.906290e+00 -100.00 +8.000000 11.000000 -7.882709e-07 0.00 0.00 4.568038 3.957104e-01 -100.00 +9.000000 7.000000 7.480563e-06 0.00 0.00 0.248000 -5.230290e+00 -100.00 +9.000000 8.000000 7.480563e-06 0.00 0.00 0.248000 -5.230290e+00 -100.00 +9.000000 8.301030 7.480563e-06 0.00 0.00 0.249000 -5.229290e+00 -100.00 +9.000000 8.602060 7.480563e-06 0.00 0.00 0.250000 -5.228290e+00 -100.00 +9.000000 8.845098 7.477358e-06 0.00 0.00 0.252000 -5.222290e+00 -100.00 +9.000000 9.000000 7.474154e-06 0.00 0.00 0.256000 -5.213290e+00 -100.00 +9.000000 9.176091 7.464541e-06 0.00 0.00 0.266001 -5.195290e+00 -100.00 +9.000000 9.301030 7.450121e-06 0.00 0.00 0.281001 -5.170290e+00 -100.00 +9.000000 9.477121 7.413271e-06 0.00 0.00 0.324015 -5.099290e+00 -100.00 +9.000000 9.698970 7.291506e-06 0.00 0.00 0.456193 -4.874290e+00 -100.00 +9.000000 10.000000 6.724335e-06 0.00 0.00 0.881313 -4.206290e+00 -100.00 +9.000000 10.477121 2.340780e-06 0.00 0.00 2.077294 -2.616290e+00 -100.00 +9.000000 11.000000 -5.191052e-07 0.00 0.00 4.576037 4.037104e-01 -100.00 +10.000000 7.000000 1.699429e-05 0.00 0.00 2.669000 -2.340290e+00 -100.00 +10.000000 8.000000 1.699429e-05 0.00 0.00 2.669000 -2.340290e+00 -100.00 +10.000000 8.301030 1.699429e-05 0.00 0.00 2.669000 -2.340290e+00 -100.00 +10.000000 8.602060 1.699429e-05 0.00 0.00 2.669000 -2.340290e+00 -100.00 +10.000000 8.845098 1.699269e-05 0.00 0.00 2.669000 -2.340290e+00 -100.00 +10.000000 9.000000 1.699108e-05 0.00 0.00 2.668000 -2.340290e+00 -100.00 +10.000000 9.176091 1.698628e-05 0.00 0.00 2.668000 -2.339290e+00 -100.00 +10.000000 9.301030 1.697987e-05 0.00 0.00 2.669000 -2.337290e+00 -100.00 +10.000000 9.477121 1.696224e-05 0.00 0.00 2.673000 -2.330290e+00 -100.00 +10.000000 9.698970 1.690617e-05 0.00 0.00 2.688001 -2.302290e+00 -100.00 +10.000000 10.000000 1.664181e-05 0.00 0.00 2.759017 -2.169290e+00 -100.00 +10.000000 10.477121 1.386203e-05 0.00 0.00 3.178192 -1.483290e+00 -100.00 +10.000000 11.000000 2.164541e-06 0.00 0.00 4.659032 4.867104e-01 -100.00 +11.000000 7.000000 3.752778e-05 0.00 0.00 4.604000 2.371039e-02 -100.00 +11.000000 8.000000 3.752778e-05 0.00 0.00 4.604000 2.371039e-02 -100.00 +11.000000 8.301030 3.752778e-05 0.00 0.00 4.604000 2.371039e-02 -100.00 +11.000000 8.602060 3.752778e-05 0.00 0.00 4.604000 2.371039e-02 -100.00 +11.000000 8.845098 3.752618e-05 0.00 0.00 4.603000 2.371039e-02 -100.00 +11.000000 9.000000 3.752618e-05 0.00 0.00 4.603000 2.271039e-02 -100.00 +11.000000 9.176091 3.752298e-05 0.00 0.00 4.603000 2.271039e-02 -100.00 +11.000000 9.301030 3.752137e-05 0.00 0.00 4.603000 2.271039e-02 -100.00 +11.000000 9.477121 3.751176e-05 0.00 0.00 4.603000 2.371039e-02 -100.00 +11.000000 9.698970 3.748613e-05 0.00 0.00 4.605000 2.771039e-02 -100.00 +11.000000 10.000000 3.736436e-05 0.00 0.00 4.619000 5.271039e-02 -100.00 +11.000000 10.477121 3.605538e-05 0.00 0.00 4.727005 2.397104e-01 -100.00 +11.000000 11.000000 2.244810e-05 0.00 0.00 5.265010 1.107710e+00 -100.00 diff --git a/networks/He-C-Fe-group-simple/56co-56ni_betadecay.dat b/networks/He-C-Fe-group-simple/56co-56ni_betadecay.dat new file mode 100644 index 000000000..79018561c --- /dev/null +++ b/networks/He-C-Fe-group-simple/56co-56ni_betadecay.dat @@ -0,0 +1,148 @@ +!56co -> 56ni, beta-decay +!Q=1.624 MeV +! +!Log(rhoY) Log(temp) mu dQ VS Log(beta-decay-rate) Log(nu-energy-loss) Log(gamma-energy) +!Log(g/cm^3) Log(K) erg erg erg Log(1/s) Log(erg/s) Log(erg/s) +1.000000 7.000000 -4.806530e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +1.000000 8.000000 -9.292624e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +1.000000 8.301030 -2.146917e-07 0.00 0.00 -69.758981 -7.612229e+01 -100.00 +1.000000 8.602060 -4.902661e-07 0.00 0.00 -37.768387 -4.395729e+01 -100.00 +1.000000 8.845098 -8.058948e-07 0.00 0.00 -23.052703 -2.897729e+01 -100.00 +1.000000 9.000000 -8.187123e-07 0.00 0.00 -17.768950 -2.366129e+01 -100.00 +1.000000 9.176091 -8.187123e-07 0.00 0.00 -13.483500 -1.931729e+01 -100.00 +1.000000 9.301030 -8.187123e-07 0.00 0.00 -11.090722 -1.689029e+01 -100.00 +1.000000 9.477121 -8.187123e-07 0.00 0.00 -8.426201 -1.416229e+01 -100.00 +1.000000 9.698970 -8.187123e-07 0.00 0.00 -6.028675 -1.151229e+01 -100.00 +1.000000 10.000000 -8.187123e-07 0.00 0.00 -3.404715 -8.551290e+00 -100.00 +1.000000 10.477121 -8.187123e-07 0.00 0.00 0.008204 -4.678290e+00 -100.00 +1.000000 11.000000 -8.187123e-07 0.00 0.00 2.897241 -1.273290e+00 -100.00 +2.000000 7.000000 -1.602177e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +2.000000 8.000000 -6.088271e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +2.000000 8.301030 -1.522068e-07 0.00 0.00 -69.758998 -7.612329e+01 -100.00 +2.000000 8.602060 -3.636941e-07 0.00 0.00 -37.910850 -4.424529e+01 -100.00 +2.000000 8.845098 -7.145708e-07 0.00 0.00 -23.428328 -2.937629e+01 -100.00 +2.000000 9.000000 -8.107014e-07 0.00 0.00 -17.788058 -2.368129e+01 -100.00 +2.000000 9.176091 -8.187123e-07 0.00 0.00 -13.485050 -1.931829e+01 -100.00 +2.000000 9.301030 -8.187123e-07 0.00 0.00 -11.090722 -1.689129e+01 -100.00 +2.000000 9.477121 -8.187123e-07 0.00 0.00 -8.426201 -1.416229e+01 -100.00 +2.000000 9.698970 -8.187123e-07 0.00 0.00 -6.028675 -1.151229e+01 -100.00 +2.000000 10.000000 -8.187123e-07 0.00 0.00 -3.404715 -8.551290e+00 -100.00 +2.000000 10.477121 -8.187123e-07 0.00 0.00 0.008204 -4.678290e+00 -100.00 +2.000000 11.000000 -8.187123e-07 0.00 0.00 2.897241 -1.273290e+00 -100.00 +3.000000 7.000000 3.204353e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +3.000000 8.000000 -2.883918e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +3.000000 8.301030 -8.811971e-08 0.00 0.00 -69.760000 -7.612429e+01 -100.00 +3.000000 8.602060 -2.355200e-07 0.00 0.00 -37.929051 -4.428929e+01 -100.00 +3.000000 8.845098 -5.030835e-07 0.00 0.00 -24.062933 -3.017529e+01 -100.00 +3.000000 9.000000 -7.450121e-07 0.00 0.00 -17.970447 -2.387829e+01 -100.00 +3.000000 9.176091 -8.107014e-07 0.00 0.00 -13.496085 -1.933129e+01 -100.00 +3.000000 9.301030 -8.171101e-07 0.00 0.00 -11.092307 -1.689329e+01 -100.00 +3.000000 9.477121 -8.187123e-07 0.00 0.00 -8.426201 -1.416329e+01 -100.00 +3.000000 9.698970 -8.187123e-07 0.00 0.00 -6.028675 -1.151229e+01 -100.00 +3.000000 10.000000 -8.187123e-07 0.00 0.00 -3.404715 -8.551290e+00 -100.00 +3.000000 10.477121 -8.187123e-07 0.00 0.00 0.008204 -4.678290e+00 -100.00 +3.000000 11.000000 -8.187123e-07 0.00 0.00 2.897241 -1.273290e+00 -100.00 +4.000000 7.000000 1.922612e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +4.000000 8.000000 8.010883e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +4.000000 8.301030 -2.082830e-08 0.00 0.00 -69.773000 -7.614229e+01 -100.00 +4.000000 8.602060 -1.073458e-07 0.00 0.00 -37.938809 -4.430529e+01 -100.00 +4.000000 8.845098 -2.787787e-07 0.00 0.00 -24.275558 -3.058529e+01 -100.00 +4.000000 9.000000 -4.838573e-07 0.00 0.00 -18.541193 -2.458029e+01 -100.00 +4.000000 9.176091 -7.434100e-07 0.00 0.00 -13.600964 -1.944629e+01 -100.00 +4.000000 9.301030 -7.962818e-07 0.00 0.00 -11.108896 -1.691229e+01 -100.00 +4.000000 9.477121 -8.123036e-07 0.00 0.00 -8.428553 -1.416629e+01 -100.00 +4.000000 9.698970 -8.171101e-07 0.00 0.00 -6.028675 -1.151329e+01 -100.00 +4.000000 10.000000 -8.187123e-07 0.00 0.00 -3.404715 -8.551290e+00 -100.00 +4.000000 10.477121 -8.187123e-07 0.00 0.00 0.008204 -4.678290e+00 -100.00 +4.000000 11.000000 -8.187123e-07 0.00 0.00 2.897241 -1.273290e+00 -100.00 +5.000000 7.000000 8.491536e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +5.000000 8.000000 8.331318e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +5.000000 8.301030 7.530230e-08 0.00 0.00 -69.870000 -7.627929e+01 -100.00 +5.000000 8.602060 4.165659e-08 0.00 0.00 -38.016985 -4.441029e+01 -100.00 +5.000000 8.845098 -4.165659e-08 0.00 0.00 -24.356950 -3.072629e+01 -100.00 +5.000000 9.000000 -1.570133e-07 0.00 0.00 -18.824908 -2.506929e+01 -100.00 +5.000000 9.176091 -3.941355e-07 0.00 0.00 -13.980828 -1.990129e+01 -100.00 +5.000000 9.301030 -6.136337e-07 0.00 0.00 -11.234267 -1.706829e+01 -100.00 +5.000000 9.477121 -7.626361e-07 0.00 0.00 -8.446387 -1.419329e+01 -100.00 +5.000000 9.698970 -8.042927e-07 0.00 0.00 -6.033804 -1.151929e+01 -100.00 +5.000000 10.000000 -8.155079e-07 0.00 0.00 -3.405601 -8.552290e+00 -100.00 +5.000000 10.477121 -8.187123e-07 0.00 0.00 0.008204 -4.678290e+00 -100.00 +5.000000 11.000000 -8.187123e-07 0.00 0.00 2.897241 -1.273290e+00 -100.00 +6.000000 7.000000 3.444680e-07 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +6.000000 8.000000 3.428658e-07 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +6.000000 8.301030 3.412636e-07 0.00 0.00 -70.529000 -7.717829e+01 -100.00 +6.000000 8.602060 3.316506e-07 0.00 0.00 -38.608000 -4.518429e+01 -100.00 +6.000000 8.845098 3.028114e-07 0.00 0.00 -24.815753 -3.129129e+01 -100.00 +6.000000 9.000000 2.579504e-07 0.00 0.00 -19.175805 -2.548729e+01 -100.00 +6.000000 9.176091 1.490024e-07 0.00 0.00 -14.229062 -2.020929e+01 -100.00 +6.000000 9.301030 1.602177e-09 0.00 0.00 -11.447153 -1.735229e+01 -100.00 +6.000000 9.477121 -3.396614e-07 0.00 0.00 -8.563413 -1.437729e+01 -100.00 +6.000000 9.698970 -6.729142e-07 0.00 0.00 -6.077307 -1.158329e+01 -100.00 +6.000000 10.000000 -7.866687e-07 0.00 0.00 -3.412800 -8.560290e+00 -100.00 +6.000000 10.477121 -8.155079e-07 0.00 0.00 0.008204 -4.679290e+00 -100.00 +6.000000 11.000000 -8.187123e-07 0.00 0.00 2.897241 -1.273290e+00 -100.00 +7.000000 7.000000 1.140750e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +7.000000 8.000000 1.139148e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +7.000000 8.301030 1.139148e-06 0.00 0.00 -80.670000 -8.774329e+01 -100.00 +7.000000 8.602060 1.134341e-06 0.00 0.00 -43.872000 -5.066029e+01 -100.00 +7.000000 8.845098 1.123126e-06 0.00 0.00 -27.608968 -3.396729e+01 -100.00 +7.000000 9.000000 1.103900e-06 0.00 0.00 -20.520799 -2.667329e+01 -100.00 +7.000000 9.176091 1.060641e-06 0.00 0.00 -14.782228 -2.084629e+01 -100.00 +7.000000 9.301030 9.965539e-07 0.00 0.00 -11.862087 -1.787129e+01 -100.00 +7.000000 9.477121 8.171101e-07 0.00 0.00 -8.885633 -1.480829e+01 -100.00 +7.000000 9.698970 2.996070e-07 0.00 0.00 -6.353840 -1.200229e+01 -100.00 +7.000000 10.000000 -5.046856e-07 0.00 0.00 -3.490730 -8.644290e+00 -100.00 +7.000000 10.477121 -7.850666e-07 0.00 0.00 0.005223 -4.682290e+00 -100.00 +7.000000 11.000000 -8.155079e-07 0.00 0.00 2.897241 -1.273290e+00 -100.00 +8.000000 7.000000 3.101814e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +8.000000 8.000000 3.101814e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +8.000000 8.301030 3.100212e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +8.000000 8.602060 3.098610e-06 0.00 0.00 -57.166000 -6.396229e+01 -100.00 +8.000000 8.845098 3.093803e-06 0.00 0.00 -34.496000 -4.105829e+01 -100.00 +8.000000 9.000000 3.085792e-06 0.00 0.00 -25.279993 -3.169429e+01 -100.00 +8.000000 9.176091 3.064964e-06 0.00 0.00 -17.977924 -2.423329e+01 -100.00 +8.000000 9.301030 3.036125e-06 0.00 0.00 -14.248711 -2.039929e+01 -100.00 +8.000000 9.477121 2.954414e-06 0.00 0.00 -10.427337 -1.643629e+01 -100.00 +8.000000 9.698970 2.693259e-06 0.00 0.00 -7.230557 -1.301329e+01 -100.00 +8.000000 10.000000 1.573337e-06 0.00 0.00 -4.034886 -9.249290e+00 -100.00 +8.000000 10.477121 -4.838573e-07 0.00 0.00 -0.025538 -4.713290e+00 -100.00 +8.000000 11.000000 -7.882709e-07 0.00 0.00 2.896241 -1.274290e+00 -100.00 +9.000000 7.000000 7.480563e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +9.000000 8.000000 7.480563e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +9.000000 8.301030 7.480563e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +9.000000 8.602060 7.480563e-06 0.00 0.00 -91.260000 -9.805129e+01 -100.00 +9.000000 8.845098 7.477358e-06 0.00 0.00 -53.829000 -6.038529e+01 -100.00 +9.000000 9.000000 7.474154e-06 0.00 0.00 -38.713997 -4.512229e+01 -100.00 +9.000000 9.176091 7.464541e-06 0.00 0.00 -26.825968 -3.306929e+01 -100.00 +9.000000 9.301030 7.450121e-06 0.00 0.00 -20.800883 -2.693229e+01 -100.00 +9.000000 9.477121 7.413271e-06 0.00 0.00 -14.679373 -2.066129e+01 -100.00 +9.000000 9.698970 7.291506e-06 0.00 0.00 -9.649275 -1.543829e+01 -100.00 +9.000000 10.000000 6.724335e-06 0.00 0.00 -5.349182 -1.070929e+01 -100.00 +9.000000 10.477121 2.340780e-06 0.00 0.00 -0.314835 -5.005290e+00 -100.00 +9.000000 11.000000 -5.191052e-07 0.00 0.00 2.888245 -1.283290e+00 -100.00 +10.000000 7.000000 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.000000 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.301030 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.602060 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.845098 1.699269e-05 0.00 0.00 -96.456875 -1.030123e+02 -100.00 +10.000000 9.000000 1.699108e-05 0.00 0.00 -68.515998 -7.492229e+01 -100.00 +10.000000 9.176091 1.698628e-05 0.00 0.00 -46.652977 -5.289529e+01 -100.00 +10.000000 9.301030 1.697987e-05 0.00 0.00 -35.641916 -4.177129e+01 -100.00 +10.000000 9.477121 1.696224e-05 0.00 0.00 -24.534564 -3.051129e+01 -100.00 +10.000000 9.698970 1.690617e-05 0.00 0.00 -15.515939 -2.129929e+01 -100.00 +10.000000 10.000000 1.664181e-05 0.00 0.00 -8.277386 -1.369229e+01 -100.00 +10.000000 10.477121 1.386203e-05 0.00 0.00 -1.500293 -6.204290e+00 -100.00 +10.000000 11.000000 2.164541e-06 0.00 0.00 2.805283 -1.366290e+00 -100.00 +11.000000 7.000000 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.000000 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.301030 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.602060 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.845098 3.752618e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 9.000000 3.752618e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 9.176091 3.752298e-05 0.00 0.00 -89.673979 -9.591429e+01 -100.00 +11.000000 9.301030 3.752137e-05 0.00 0.00 -67.899925 -7.402629e+01 -100.00 +11.000000 9.477121 3.751176e-05 0.00 0.00 -46.030612 -5.200129e+01 -100.00 +11.000000 9.698970 3.748613e-05 0.00 0.00 -28.401609 -3.417629e+01 -100.00 +11.000000 10.000000 3.736436e-05 0.00 0.00 -14.685801 -2.010129e+01 -100.00 +11.000000 10.477121 3.605538e-05 0.00 0.00 -3.782003 -8.507290e+00 -100.00 +11.000000 11.000000 2.244810e-05 0.00 0.00 2.173693 -2.000290e+00 -100.00 diff --git a/networks/He-C-Fe-group-simple/56fe-56co_betadecay.dat b/networks/He-C-Fe-group-simple/56fe-56co_betadecay.dat new file mode 100644 index 000000000..3acdfa17a --- /dev/null +++ b/networks/He-C-Fe-group-simple/56fe-56co_betadecay.dat @@ -0,0 +1,148 @@ +!56fe -> 56co, beta-decay +!Q=4.055 MeV +! +!Log(rhoY) Log(temp) mu dQ VS Log(beta-decay-rate) Log(nu-energy-loss) Log(gamma-energy) +!Log(g/cm^3) Log(K) erg erg erg Log(1/s) Log(erg/s) Log(erg/s) +1.000000 7.000000 -4.806530e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +1.000000 8.000000 -9.292624e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +1.000000 8.301030 -2.146917e-07 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +1.000000 8.602060 -4.902661e-07 0.00 0.00 -62.854802 -6.958329e+01 -100.00 +1.000000 8.845098 -8.058948e-07 0.00 0.00 -37.268611 -4.373429e+01 -100.00 +1.000000 9.000000 -8.187123e-07 0.00 0.00 -27.644755 -3.392829e+01 -100.00 +1.000000 9.176091 -8.187123e-07 0.00 0.00 -19.855923 -2.592829e+01 -100.00 +1.000000 9.301030 -8.187123e-07 0.00 0.00 -15.693996 -2.162029e+01 -100.00 +1.000000 9.477121 -8.187123e-07 0.00 0.00 -11.062186 -1.678829e+01 -100.00 +1.000000 9.698970 -8.187123e-07 0.00 0.00 -6.686280 -1.221529e+01 -100.00 +1.000000 10.000000 -8.187123e-07 0.00 0.00 -2.996418 -8.200290e+00 -100.00 +1.000000 10.477121 -8.187123e-07 0.00 0.00 0.330264 -4.328290e+00 -100.00 +1.000000 11.000000 -8.187123e-07 0.00 0.00 3.050101 -1.107290e+00 -100.00 +2.000000 7.000000 -1.602177e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +2.000000 8.000000 -6.088271e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +2.000000 8.301030 -1.522068e-07 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +2.000000 8.602060 -3.636941e-07 0.00 0.00 -63.853019 -7.058129e+01 -100.00 +2.000000 8.845098 -7.145708e-07 0.00 0.00 -37.680995 -4.414629e+01 -100.00 +2.000000 9.000000 -8.107014e-07 0.00 0.00 -27.666587 -3.394929e+01 -100.00 +2.000000 9.176091 -8.187123e-07 0.00 0.00 -19.856877 -2.592929e+01 -100.00 +2.000000 9.301030 -8.187123e-07 0.00 0.00 -15.693996 -2.162029e+01 -100.00 +2.000000 9.477121 -8.187123e-07 0.00 0.00 -11.062186 -1.678829e+01 -100.00 +2.000000 9.698970 -8.187123e-07 0.00 0.00 -6.686280 -1.221529e+01 -100.00 +2.000000 10.000000 -8.187123e-07 0.00 0.00 -2.996418 -8.200290e+00 -100.00 +2.000000 10.477121 -8.187123e-07 0.00 0.00 0.330264 -4.328290e+00 -100.00 +2.000000 11.000000 -8.187123e-07 0.00 0.00 3.050101 -1.107290e+00 -100.00 +3.000000 7.000000 3.204353e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +3.000000 8.000000 -2.883918e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +3.000000 8.301030 -8.811971e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +3.000000 8.602060 -2.355200e-07 0.00 0.00 -64.836633 -7.156029e+01 -100.00 +3.000000 8.845098 -5.030835e-07 0.00 0.00 -38.621182 -4.508829e+01 -100.00 +3.000000 9.000000 -7.450121e-07 0.00 0.00 -27.870529 -3.415429e+01 -100.00 +3.000000 9.176091 -8.107014e-07 0.00 0.00 -19.871187 -2.594329e+01 -100.00 +3.000000 9.301030 -8.171101e-07 0.00 0.00 -15.697494 -2.162329e+01 -100.00 +3.000000 9.477121 -8.187123e-07 0.00 0.00 -11.062186 -1.678929e+01 -100.00 +3.000000 9.698970 -8.187123e-07 0.00 0.00 -6.686280 -1.221629e+01 -100.00 +3.000000 10.000000 -8.187123e-07 0.00 0.00 -2.996418 -8.200290e+00 -100.00 +3.000000 10.477121 -8.187123e-07 0.00 0.00 0.330264 -4.328290e+00 -100.00 +3.000000 11.000000 -8.187123e-07 0.00 0.00 3.050101 -1.107290e+00 -100.00 +4.000000 7.000000 1.922612e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +4.000000 8.000000 8.010883e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +4.000000 8.301030 -2.082830e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +4.000000 8.602060 -1.073458e-07 0.00 0.00 -65.710200 -7.239829e+01 -100.00 +4.000000 8.845098 -2.787787e-07 0.00 0.00 -39.555480 -4.603329e+01 -100.00 +4.000000 9.000000 -4.838573e-07 0.00 0.00 -28.663301 -3.495229e+01 -100.00 +4.000000 9.176091 -7.434100e-07 0.00 0.00 -20.004525 -2.607829e+01 -100.00 +4.000000 9.301030 -7.962818e-07 0.00 0.00 -15.724463 -2.165129e+01 -100.00 +4.000000 9.477121 -8.123036e-07 0.00 0.00 -11.065920 -1.679229e+01 -100.00 +4.000000 9.698970 -8.171101e-07 0.00 0.00 -6.686696 -1.221629e+01 -100.00 +4.000000 10.000000 -8.187123e-07 0.00 0.00 -2.997055 -8.200290e+00 -100.00 +4.000000 10.477121 -8.187123e-07 0.00 0.00 0.330264 -4.328290e+00 -100.00 +4.000000 11.000000 -8.187123e-07 0.00 0.00 3.050101 -1.107290e+00 -100.00 +5.000000 7.000000 8.491536e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +5.000000 8.000000 8.331318e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +5.000000 8.301030 7.530230e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +5.000000 8.602060 4.165659e-08 0.00 0.00 -66.280944 -7.293929e+01 -100.00 +5.000000 8.845098 -4.165659e-08 0.00 0.00 -40.233201 -4.675229e+01 -100.00 +5.000000 9.000000 -1.570133e-07 0.00 0.00 -29.472432 -3.579129e+01 -100.00 +5.000000 9.176091 -3.941355e-07 0.00 0.00 -20.635643 -2.672229e+01 -100.00 +5.000000 9.301030 -6.136337e-07 0.00 0.00 -15.962004 -2.189129e+01 -100.00 +5.000000 9.477121 -7.626361e-07 0.00 0.00 -11.098460 -1.682529e+01 -100.00 +5.000000 9.698970 -8.042927e-07 0.00 0.00 -6.690003 -1.222029e+01 -100.00 +5.000000 10.000000 -8.155079e-07 0.00 0.00 -2.997418 -8.201290e+00 -100.00 +5.000000 10.477121 -8.187123e-07 0.00 0.00 0.330264 -4.328290e+00 -100.00 +5.000000 11.000000 -8.187123e-07 0.00 0.00 3.050101 -1.107290e+00 -100.00 +6.000000 7.000000 3.444680e-07 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +6.000000 8.000000 3.428658e-07 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +6.000000 8.301030 3.412636e-07 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +6.000000 8.602060 3.316506e-07 0.00 0.00 -67.639813 -7.445329e+01 -100.00 +6.000000 8.845098 3.028114e-07 0.00 0.00 -41.062948 -4.760029e+01 -100.00 +6.000000 9.000000 2.579504e-07 0.00 0.00 -30.122111 -3.646829e+01 -100.00 +6.000000 9.176091 1.490024e-07 0.00 0.00 -21.260917 -2.738129e+01 -100.00 +6.000000 9.301030 1.602177e-09 0.00 0.00 -16.518405 -2.245629e+01 -100.00 +6.000000 9.477121 -3.396614e-07 0.00 0.00 -11.315505 -1.704429e+01 -100.00 +6.000000 9.698970 -6.729142e-07 0.00 0.00 -6.724397 -1.226129e+01 -100.00 +6.000000 10.000000 -7.866687e-07 0.00 0.00 -3.003133 -8.208290e+00 -100.00 +6.000000 10.477121 -8.155079e-07 0.00 0.00 0.330264 -4.328290e+00 -100.00 +6.000000 11.000000 -8.187123e-07 0.00 0.00 3.050101 -1.107290e+00 -100.00 +7.000000 7.000000 1.140750e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +7.000000 8.000000 1.139148e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +7.000000 8.301030 1.139148e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +7.000000 8.602060 1.134341e-06 0.00 0.00 -73.044885 -7.985329e+01 -100.00 +7.000000 8.845098 1.123126e-06 0.00 0.00 -43.824626 -5.039029e+01 -100.00 +7.000000 9.000000 1.103900e-06 0.00 0.00 -31.873401 -3.821729e+01 -100.00 +7.000000 9.176091 1.060641e-06 0.00 0.00 -22.193492 -2.828029e+01 -100.00 +7.000000 9.301030 9.965539e-07 0.00 0.00 -17.093479 -2.302529e+01 -100.00 +7.000000 9.477121 8.171101e-07 0.00 0.00 -11.651187 -1.739629e+01 -100.00 +7.000000 9.698970 2.996070e-07 0.00 0.00 -6.909866 -1.248929e+01 -100.00 +7.000000 10.000000 -5.046856e-07 0.00 0.00 -3.060643 -8.280290e+00 -100.00 +7.000000 10.477121 -7.850666e-07 0.00 0.00 0.327313 -4.331290e+00 -100.00 +7.000000 11.000000 -8.155079e-07 0.00 0.00 3.050101 -1.107290e+00 -100.00 +8.000000 7.000000 3.101814e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +8.000000 8.000000 3.101814e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +8.000000 8.301030 3.100212e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +8.000000 8.602060 3.098610e-06 0.00 0.00 -87.073958 -9.383229e+01 -100.00 +8.000000 8.845098 3.093803e-06 0.00 0.00 -51.036924 -5.748829e+01 -100.00 +8.000000 9.000000 3.085792e-06 0.00 0.00 -36.357882 -4.265529e+01 -100.00 +8.000000 9.176091 3.064964e-06 0.00 0.00 -24.714784 -3.083529e+01 -100.00 +8.000000 9.301030 3.036125e-06 0.00 0.00 -18.729642 -2.472029e+01 -100.00 +8.000000 9.477121 2.954414e-06 0.00 0.00 -12.542089 -1.837029e+01 -100.00 +8.000000 9.698970 2.693259e-06 0.00 0.00 -7.403073 -1.306929e+01 -100.00 +8.000000 10.000000 1.573337e-06 0.00 0.00 -3.424626 -8.764290e+00 -100.00 +8.000000 10.477121 -4.838573e-07 0.00 0.00 0.296708 -4.362290e+00 -100.00 +8.000000 11.000000 -7.882709e-07 0.00 0.00 3.049101 -1.108290e+00 -100.00 +9.000000 7.000000 7.480563e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +9.000000 8.000000 7.480563e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +9.000000 8.301030 7.480563e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +9.000000 8.602060 7.480563e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +9.000000 8.845098 7.477358e-06 0.00 0.00 -69.154998 -7.570329e+01 -100.00 +9.000000 9.000000 7.474154e-06 0.00 0.00 -48.719996 -5.511629e+01 -100.00 +9.000000 9.176091 7.464541e-06 0.00 0.00 -32.644989 -3.887129e+01 -100.00 +9.000000 9.301030 7.450121e-06 0.00 0.00 -24.496976 -3.060529e+01 -100.00 +9.000000 9.477121 7.413271e-06 0.00 0.00 -16.231906 -2.218229e+01 -100.00 +9.000000 9.698970 7.291506e-06 0.00 0.00 -9.513029 -1.528229e+01 -100.00 +9.000000 10.000000 6.724335e-06 0.00 0.00 -4.483336 -9.984290e+00 -100.00 +9.000000 10.477121 2.340780e-06 0.00 0.00 0.010989 -4.653290e+00 -100.00 +9.000000 11.000000 -5.191052e-07 0.00 0.00 3.041103 -1.116290e+00 -100.00 +10.000000 7.000000 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.000000 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.301030 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.602060 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.845098 1.699269e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 9.000000 1.699108e-05 0.00 0.00 -78.494997 -8.489429e+01 -100.00 +10.000000 9.176091 1.698628e-05 0.00 0.00 -52.453992 -5.868529e+01 -100.00 +10.000000 9.301030 1.697987e-05 0.00 0.00 -39.326983 -4.544229e+01 -100.00 +10.000000 9.477121 1.696224e-05 0.00 0.00 -26.089934 -3.204829e+01 -100.00 +10.000000 9.698970 1.690617e-05 0.00 0.00 -15.400331 -2.117629e+01 -100.00 +10.000000 10.000000 1.664181e-05 0.00 0.00 -7.403972 -1.292829e+01 -100.00 +10.000000 10.477121 1.386203e-05 0.00 0.00 -1.170819 -5.852290e+00 -100.00 +10.000000 11.000000 2.164541e-06 0.00 0.00 2.959117 -1.199290e+00 -100.00 +11.000000 7.000000 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.000000 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.301030 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.602060 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.845098 3.752618e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 9.000000 3.752618e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 9.176091 3.752298e-05 0.00 0.00 -95.484987 -1.017163e+02 -100.00 +11.000000 9.301030 3.752137e-05 0.00 0.00 -71.596985 -7.771229e+01 -100.00 +11.000000 9.477121 3.751176e-05 0.00 0.00 -47.599940 -5.355729e+01 -100.00 +11.000000 9.698970 3.748613e-05 0.00 0.00 -28.306391 -3.407929e+01 -100.00 +11.000000 10.000000 3.736436e-05 0.00 0.00 -13.865952 -1.938129e+01 -100.00 +11.000000 10.477121 3.605538e-05 0.00 0.00 -3.478059 -8.171290e+00 -100.00 +11.000000 11.000000 2.244810e-05 0.00 0.00 2.328257 -1.833290e+00 -100.00 diff --git a/networks/He-C-Fe-group-simple/56ni-56co_electroncapture.dat b/networks/He-C-Fe-group-simple/56ni-56co_electroncapture.dat new file mode 100644 index 000000000..cd5be5dc8 --- /dev/null +++ b/networks/He-C-Fe-group-simple/56ni-56co_electroncapture.dat @@ -0,0 +1,148 @@ +!56ni -> 56co, e- capture +!Q=-1.624 MeV +! +!Log(rhoY) Log(temp) mu dQ Vs Log(e-cap-rate) Log(nu-energy-loss) Log(gamma-energy) +!Log(g/cm^3) Log(K) erg erg erg Log(1/s) Log(erg/s) Log(erg/s) +1.000000 7.000000 -4.806530e-09 0.00 0.00 -8.684000 -1.486129e+01 -100.00 +1.000000 8.000000 -9.292624e-08 0.00 0.00 -9.164000 -1.533229e+01 -100.00 +1.000000 8.301030 -2.146917e-07 0.00 0.00 -9.291000 -1.544729e+01 -100.00 +1.000000 8.602060 -4.902661e-07 0.00 0.00 -9.387000 -1.551729e+01 -100.00 +1.000000 8.845098 -8.058948e-07 0.00 0.00 -8.777000 -1.485829e+01 -100.00 +1.000000 9.000000 -8.187123e-07 0.00 0.00 -7.439000 -1.346429e+01 -100.00 +1.000000 9.176091 -8.187123e-07 0.00 0.00 -6.183988 -1.211329e+01 -100.00 +1.000000 9.301030 -8.187123e-07 0.00 0.00 -5.405627 -1.124729e+01 -100.00 +1.000000 9.477121 -8.187123e-07 0.00 0.00 -4.316341 -1.001729e+01 -100.00 +1.000000 9.698970 -8.187123e-07 0.00 0.00 -2.714602 -8.181290e+00 -100.00 +1.000000 10.000000 -8.187123e-07 0.00 0.00 -0.608944 -5.723290e+00 -100.00 +1.000000 10.477121 -8.187123e-07 0.00 0.00 2.014581 -2.678290e+00 -100.00 +1.000000 11.000000 -8.187123e-07 0.00 0.00 4.728024 5.607104e-01 -100.00 +2.000000 7.000000 -1.602177e-09 0.00 0.00 -7.705000 -1.388129e+01 -100.00 +2.000000 8.000000 -6.088271e-08 0.00 0.00 -8.165000 -1.433229e+01 -100.00 +2.000000 8.301030 -1.522068e-07 0.00 0.00 -8.291000 -1.444829e+01 -100.00 +2.000000 8.602060 -3.636941e-07 0.00 0.00 -8.387000 -1.451729e+01 -100.00 +2.000000 8.845098 -7.145708e-07 0.00 0.00 -8.364000 -1.444529e+01 -100.00 +2.000000 9.000000 -8.107014e-07 0.00 0.00 -7.418000 -1.344329e+01 -100.00 +2.000000 9.176091 -8.187123e-07 0.00 0.00 -6.181989 -1.211229e+01 -100.00 +2.000000 9.301030 -8.187123e-07 0.00 0.00 -5.405627 -1.124729e+01 -100.00 +2.000000 9.477121 -8.187123e-07 0.00 0.00 -4.316341 -1.001729e+01 -100.00 +2.000000 9.698970 -8.187123e-07 0.00 0.00 -2.714602 -8.181290e+00 -100.00 +2.000000 10.000000 -8.187123e-07 0.00 0.00 -0.608944 -5.723290e+00 -100.00 +2.000000 10.477121 -8.187123e-07 0.00 0.00 2.014581 -2.678290e+00 -100.00 +2.000000 11.000000 -8.187123e-07 0.00 0.00 4.728024 5.607104e-01 -100.00 +3.000000 7.000000 3.204353e-09 0.00 0.00 -6.834000 -1.300929e+01 -100.00 +3.000000 8.000000 -2.883918e-08 0.00 0.00 -7.171000 -1.333829e+01 -100.00 +3.000000 8.301030 -8.811971e-08 0.00 0.00 -7.293000 -1.344929e+01 -100.00 +3.000000 8.602060 -2.355200e-07 0.00 0.00 -7.388000 -1.351729e+01 -100.00 +3.000000 8.845098 -5.030835e-07 0.00 0.00 -7.417000 -1.349729e+01 -100.00 +3.000000 9.000000 -7.450121e-07 0.00 0.00 -7.212000 -1.323729e+01 -100.00 +3.000000 9.176091 -8.107014e-07 0.00 0.00 -6.167989 -1.209729e+01 -100.00 +3.000000 9.301030 -8.171101e-07 0.00 0.00 -5.402630 -1.124429e+01 -100.00 +3.000000 9.477121 -8.187123e-07 0.00 0.00 -4.315361 -1.001729e+01 -100.00 +3.000000 9.698970 -8.187123e-07 0.00 0.00 -2.714602 -8.181290e+00 -100.00 +3.000000 10.000000 -8.187123e-07 0.00 0.00 -0.608944 -5.723290e+00 -100.00 +3.000000 10.477121 -8.187123e-07 0.00 0.00 2.014581 -2.678290e+00 -100.00 +3.000000 11.000000 -8.187123e-07 0.00 0.00 4.728024 5.607104e-01 -100.00 +4.000000 7.000000 1.922612e-08 0.00 0.00 -6.118000 -1.228929e+01 -100.00 +4.000000 8.000000 8.010883e-09 0.00 0.00 -6.220000 -1.238529e+01 -100.00 +4.000000 8.301030 -2.082830e-08 0.00 0.00 -6.310000 -1.246529e+01 -100.00 +4.000000 8.602060 -1.073458e-07 0.00 0.00 -6.392000 -1.252029e+01 -100.00 +4.000000 8.845098 -2.787787e-07 0.00 0.00 -6.418000 -1.249829e+01 -100.00 +4.000000 9.000000 -4.838573e-07 0.00 0.00 -6.393000 -1.241829e+01 -100.00 +4.000000 9.176091 -7.434100e-07 0.00 0.00 -6.026992 -1.195629e+01 -100.00 +4.000000 9.301030 -7.962818e-07 0.00 0.00 -5.371655 -1.121229e+01 -100.00 +4.000000 9.477121 -8.123036e-07 0.00 0.00 -4.310459 -1.001129e+01 -100.00 +4.000000 9.698970 -8.171101e-07 0.00 0.00 -2.713745 -8.180290e+00 -100.00 +4.000000 10.000000 -8.187123e-07 0.00 0.00 -0.608944 -5.723290e+00 -100.00 +4.000000 10.477121 -8.187123e-07 0.00 0.00 2.014581 -2.678290e+00 -100.00 +4.000000 11.000000 -8.187123e-07 0.00 0.00 4.728024 5.607104e-01 -100.00 +5.000000 7.000000 8.491536e-08 0.00 0.00 -5.384000 -1.153229e+01 -100.00 +5.000000 8.000000 8.331318e-08 0.00 0.00 -5.388000 -1.153329e+01 -100.00 +5.000000 8.301030 7.530230e-08 0.00 0.00 -5.399000 -1.153829e+01 -100.00 +5.000000 8.602060 4.165659e-08 0.00 0.00 -5.421000 -1.153729e+01 -100.00 +5.000000 8.845098 -4.165659e-08 0.00 0.00 -5.423000 -1.149429e+01 -100.00 +5.000000 9.000000 -1.570133e-07 0.00 0.00 -5.395000 -1.141429e+01 -100.00 +5.000000 9.176091 -3.941355e-07 0.00 0.00 -5.304998 -1.123129e+01 -100.00 +5.000000 9.301030 -6.136337e-07 0.00 0.00 -5.086821 -1.092729e+01 -100.00 +5.000000 9.477121 -7.626361e-07 0.00 0.00 -4.258432 -9.960290e+00 -100.00 +5.000000 9.698970 -8.042927e-07 0.00 0.00 -2.706884 -8.174290e+00 -100.00 +5.000000 10.000000 -8.155079e-07 0.00 0.00 -0.608116 -5.722290e+00 -100.00 +5.000000 10.477121 -8.187123e-07 0.00 0.00 2.014581 -2.678290e+00 -100.00 +5.000000 11.000000 -8.187123e-07 0.00 0.00 4.728024 5.607104e-01 -100.00 +6.000000 7.000000 3.444680e-07 0.00 0.00 -4.448000 -1.050329e+01 -100.00 +6.000000 8.000000 3.428658e-07 0.00 0.00 -4.447000 -1.050129e+01 -100.00 +6.000000 8.301030 3.412636e-07 0.00 0.00 -4.444000 -1.049429e+01 -100.00 +6.000000 8.602060 3.316506e-07 0.00 0.00 -4.432000 -1.047129e+01 -100.00 +6.000000 8.845098 3.028114e-07 0.00 0.00 -4.403000 -1.041229e+01 -100.00 +6.000000 9.000000 2.579504e-07 0.00 0.00 -4.363000 -1.033429e+01 -100.00 +6.000000 9.176091 1.490024e-07 0.00 0.00 -4.278000 -1.017529e+01 -100.00 +6.000000 9.301030 1.602177e-09 0.00 0.00 -4.169978 -9.994290e+00 -100.00 +6.000000 9.477121 -3.396614e-07 0.00 0.00 -3.831179 -9.531290e+00 -100.00 +6.000000 9.698970 -6.729142e-07 0.00 0.00 -2.635446 -8.105290e+00 -100.00 +6.000000 10.000000 -7.866687e-07 0.00 0.00 -0.601480 -5.714290e+00 -100.00 +6.000000 10.477121 -8.155079e-07 0.00 0.00 2.015573 -2.677290e+00 -100.00 +6.000000 11.000000 -8.187123e-07 0.00 0.00 4.728024 5.607104e-01 -100.00 +7.000000 7.000000 1.140750e-06 0.00 0.00 -3.134000 -8.963290e+00 -100.00 +7.000000 8.000000 1.139148e-06 0.00 0.00 -3.134000 -8.962290e+00 -100.00 +7.000000 8.301030 1.139148e-06 0.00 0.00 -3.132000 -8.960290e+00 -100.00 +7.000000 8.602060 1.134341e-06 0.00 0.00 -3.127000 -8.951290e+00 -100.00 +7.000000 8.845098 1.123126e-06 0.00 0.00 -3.113000 -8.927290e+00 -100.00 +7.000000 9.000000 1.103900e-06 0.00 0.00 -3.091000 -8.892290e+00 -100.00 +7.000000 9.176091 1.060641e-06 0.00 0.00 -3.039000 -8.809290e+00 -100.00 +7.000000 9.301030 9.965539e-07 0.00 0.00 -2.963999 -8.700290e+00 -100.00 +7.000000 9.477121 8.171101e-07 0.00 0.00 -2.726778 -8.397290e+00 -100.00 +7.000000 9.698970 2.996070e-07 0.00 0.00 -2.078197 -7.561290e+00 -100.00 +7.000000 10.000000 -5.046856e-07 0.00 0.00 -0.527602 -5.637290e+00 -100.00 +7.000000 10.477121 -7.850666e-07 0.00 0.00 2.018548 -2.674290e+00 -100.00 +7.000000 11.000000 -8.155079e-07 0.00 0.00 4.728024 5.607104e-01 -100.00 +8.000000 7.000000 3.101814e-06 0.00 0.00 -1.311000 -6.966290e+00 -100.00 +8.000000 8.000000 3.101814e-06 0.00 0.00 -1.311000 -6.966290e+00 -100.00 +8.000000 8.301030 3.100212e-06 0.00 0.00 -1.310000 -6.965290e+00 -100.00 +8.000000 8.602060 3.098610e-06 0.00 0.00 -1.305000 -6.960290e+00 -100.00 +8.000000 8.845098 3.093803e-06 0.00 0.00 -1.293000 -6.948290e+00 -100.00 +8.000000 9.000000 3.085792e-06 0.00 0.00 -1.275000 -6.929290e+00 -100.00 +8.000000 9.176091 3.064964e-06 0.00 0.00 -1.232000 -6.883290e+00 -100.00 +8.000000 9.301030 3.036125e-06 0.00 0.00 -1.177000 -6.819290e+00 -100.00 +8.000000 9.477121 2.954414e-06 0.00 0.00 -1.038995 -6.646290e+00 -100.00 +8.000000 9.698970 2.693259e-06 0.00 0.00 -0.718361 -6.191290e+00 -100.00 +8.000000 10.000000 1.573337e-06 0.00 0.00 0.045499 -5.049290e+00 -100.00 +8.000000 10.477121 -4.838573e-07 0.00 0.00 2.049328 -2.643290e+00 -100.00 +8.000000 11.000000 -7.882709e-07 0.00 0.00 4.729024 5.607104e-01 -100.00 +9.000000 7.000000 7.480563e-06 0.00 0.00 1.069000 -4.277290e+00 -100.00 +9.000000 8.000000 7.480563e-06 0.00 0.00 1.069000 -4.277290e+00 -100.00 +9.000000 8.301030 7.480563e-06 0.00 0.00 1.069000 -4.277290e+00 -100.00 +9.000000 8.602060 7.480563e-06 0.00 0.00 1.070000 -4.276290e+00 -100.00 +9.000000 8.845098 7.477358e-06 0.00 0.00 1.071000 -4.274290e+00 -100.00 +9.000000 9.000000 7.474154e-06 0.00 0.00 1.073000 -4.270290e+00 -100.00 +9.000000 9.176091 7.464541e-06 0.00 0.00 1.078000 -4.262290e+00 -100.00 +9.000000 9.301030 7.450121e-06 0.00 0.00 1.085000 -4.250290e+00 -100.00 +9.000000 9.477121 7.413271e-06 0.00 0.00 1.104000 -4.217290e+00 -100.00 +9.000000 9.698970 7.291506e-06 0.00 0.00 1.159008 -4.117290e+00 -100.00 +9.000000 10.000000 6.724335e-06 0.00 0.00 1.386790 -3.681290e+00 -100.00 +9.000000 10.477121 2.340780e-06 0.00 0.00 2.334798 -2.353290e+00 -100.00 +9.000000 11.000000 -5.191052e-07 0.00 0.00 4.737024 5.697104e-01 -100.00 +10.000000 7.000000 1.699429e-05 0.00 0.00 3.035000 -1.889290e+00 -100.00 +10.000000 8.000000 1.699429e-05 0.00 0.00 3.034000 -1.889290e+00 -100.00 +10.000000 8.301030 1.699429e-05 0.00 0.00 3.034000 -1.889290e+00 -100.00 +10.000000 8.602060 1.699429e-05 0.00 0.00 3.034000 -1.889290e+00 -100.00 +10.000000 8.845098 1.699269e-05 0.00 0.00 3.035000 -1.888290e+00 -100.00 +10.000000 9.000000 1.699108e-05 0.00 0.00 3.035000 -1.888290e+00 -100.00 +10.000000 9.176091 1.698628e-05 0.00 0.00 3.036000 -1.887290e+00 -100.00 +10.000000 9.301030 1.697987e-05 0.00 0.00 3.037000 -1.885290e+00 -100.00 +10.000000 9.477121 1.696224e-05 0.00 0.00 3.040000 -1.879290e+00 -100.00 +10.000000 9.698970 1.690617e-05 0.00 0.00 3.048000 -1.864290e+00 -100.00 +10.000000 10.000000 1.664181e-05 0.00 0.00 3.084016 -1.782290e+00 -100.00 +10.000000 10.477121 1.386203e-05 0.00 0.00 3.420155 -1.226290e+00 -100.00 +10.000000 11.000000 2.164541e-06 0.00 0.00 4.819021 6.527104e-01 -100.00 +11.000000 7.000000 3.752778e-05 0.00 0.00 4.825000 2.827104e-01 -100.00 +11.000000 8.000000 3.752778e-05 0.00 0.00 4.825000 2.827104e-01 -100.00 +11.000000 8.301030 3.752778e-05 0.00 0.00 4.825000 2.827104e-01 -100.00 +11.000000 8.602060 3.752778e-05 0.00 0.00 4.825000 2.827104e-01 -100.00 +11.000000 8.845098 3.752618e-05 0.00 0.00 4.825000 2.827104e-01 -100.00 +11.000000 9.000000 3.752618e-05 0.00 0.00 4.825000 2.827104e-01 -100.00 +11.000000 9.176091 3.752298e-05 0.00 0.00 4.826000 2.827104e-01 -100.00 +11.000000 9.301030 3.752137e-05 0.00 0.00 4.826000 2.837104e-01 -100.00 +11.000000 9.477121 3.751176e-05 0.00 0.00 4.826000 2.847104e-01 -100.00 +11.000000 9.698970 3.748613e-05 0.00 0.00 4.827000 2.867104e-01 -100.00 +11.000000 10.000000 3.736436e-05 0.00 0.00 4.831000 2.977104e-01 -100.00 +11.000000 10.477121 3.605538e-05 0.00 0.00 4.926005 4.587104e-01 -100.00 +11.000000 11.000000 2.244810e-05 0.00 0.00 5.424006 1.272710e+00 -100.00 diff --git a/networks/He-C-Fe-group-simple/Make.package b/networks/He-C-Fe-group-simple/Make.package new file mode 100644 index 000000000..3c406e47f --- /dev/null +++ b/networks/He-C-Fe-group-simple/Make.package @@ -0,0 +1,15 @@ +CEXE_headers += network_properties.H + +ifeq ($(USE_REACT),TRUE) + CEXE_sources += actual_network_data.cpp + CEXE_headers += actual_network.H + CEXE_headers += tfactors.H + CEXE_headers += partition_functions.H + CEXE_sources += partition_functions_data.cpp + CEXE_headers += actual_rhs.H + CEXE_headers += reaclib_rates.H + CEXE_headers += table_rates.H + CEXE_sources += table_rates_data.cpp + USE_SCREENING = TRUE + USE_NEUTRINOS = TRUE +endif diff --git a/networks/He-C-Fe-group-simple/_parameters b/networks/He-C-Fe-group-simple/_parameters new file mode 100644 index 000000000..e7a017d5a --- /dev/null +++ b/networks/He-C-Fe-group-simple/_parameters @@ -0,0 +1,2 @@ +@namespace: network + diff --git a/networks/He-C-Fe-group-simple/actual_network.H b/networks/He-C-Fe-group-simple/actual_network.H new file mode 100644 index 000000000..a19a20f73 --- /dev/null +++ b/networks/He-C-Fe-group-simple/actual_network.H @@ -0,0 +1,485 @@ +#ifndef actual_network_H +#define actual_network_H + +#include +#include +#include + +#include +#include + +using namespace amrex; + +void actual_network_init(); + +const std::string network_name = "pynucastro-cxx"; + +namespace network +{ + + template + AMREX_GPU_HOST_DEVICE AMREX_INLINE + constexpr amrex::Real bion () { + using namespace Species; + + static_assert(spec >= 1 && spec <= NumSpec); + + // Set the binding energy of the element + + if constexpr (spec == N) { + return 0.0_rt; + } + else if constexpr (spec == H1) { + return 0.0_rt; + } + else if constexpr (spec == He4) { + return 28.295662457999697_rt; + } + else if constexpr (spec == C12) { + return 92.16173498399803_rt; + } + else if constexpr (spec == N13) { + return 94.10522604799917_rt; + } + else if constexpr (spec == N14) { + return 104.65860734799753_rt; + } + else if constexpr (spec == O16) { + return 127.6193154119992_rt; + } + else if constexpr (spec == F18) { + return 137.36950247599816_rt; + } + else if constexpr (spec == Ne20) { + return 160.64482384000075_rt; + } + else if constexpr (spec == Ne21) { + return 167.40598973999658_rt; + } + else if constexpr (spec == Na22) { + return 174.14457080400098_rt; + } + else if constexpr (spec == Na23) { + return 186.56435240400242_rt; + } + else if constexpr (spec == Mg24) { + return 198.2570479679962_rt; + } + else if constexpr (spec == Al27) { + return 224.95193723199915_rt; + } + else if constexpr (spec == Si28) { + return 236.53684539599638_rt; + } + else if constexpr (spec == P31) { + return 262.9161999600037_rt; + } + else if constexpr (spec == S32) { + return 271.78016372399725_rt; + } + else if constexpr (spec == Ar36) { + return 306.7167469519991_rt; + } + else if constexpr (spec == Ca40) { + return 342.05218528000114_rt; + } + else if constexpr (spec == Ti44) { + return 375.47496160800074_rt; + } + else if constexpr (spec == Cr48) { + return 411.4679399359957_rt; + } + else if constexpr (spec == Mn51) { + return 440.321747199996_rt; + } + else if constexpr (spec == Fe52) { + return 447.6996182639923_rt; + } + else if constexpr (spec == Fe54) { + return 471.76475446399854_rt; + } + else if constexpr (spec == Fe56) { + return 492.2599506639962_rt; + } + else if constexpr (spec == Co55) { + return 476.82912552799826_rt; + } + else if constexpr (spec == Co56) { + return 486.91094362799777_rt; + } + else if constexpr (spec == Co57) { + return 498.28746172798856_rt; + } + else if constexpr (spec == Ni56) { + return 483.9956965919919_rt; + } + else if constexpr (spec == Ni58) { + return 506.4596327920008_rt; + } + + + // Return zero if we don't recognize the species. + return 0.0_rt; + } + + template + AMREX_GPU_HOST_DEVICE AMREX_INLINE + constexpr amrex::Real mion () { + static_assert(spec >= 1 && spec <= NumSpec); + + constexpr amrex::Real A = NetworkProperties::aion(spec); + constexpr amrex::Real Z = NetworkProperties::zion(spec); + + return (A - Z) * C::Legacy::m_n + Z * (C::Legacy::m_p + C::Legacy::m_e) - bion() * C::Legacy::MeV2gr; + } + + // Legacy (non-templated) interfaces + + AMREX_GPU_HOST_DEVICE AMREX_INLINE + amrex::Real bion (int spec) { + using namespace Species; + + amrex::Real b = 0.0_rt; + + // Set the binding energy of the element + constexpr_for<1, NumSpec+1>([&] (auto n) { + if (n == spec) { + b = bion(); + } + }); + + return b; + } + + AMREX_GPU_HOST_DEVICE AMREX_INLINE + amrex::Real mion (int spec) { + using namespace Species; + + amrex::Real m = 0.0_rt; + + constexpr_for<1, NumSpec+1>([&] (auto n) { + if (n == spec) { + m = mion(); + } + }); + + return m; + } +} + +namespace Rates +{ + + enum NetworkRates + { + 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_He4_Cr48_to_Fe52 = 13, + k_p_Mn51_to_Fe52 = 14, + k_He4_Mn51_to_Co55 = 15, + k_He4_Fe52_to_Ni56 = 16, + k_p_Co55_to_Ni56 = 17, + k_C12_C12_to_p_Na23 = 18, + k_C12_C12_to_He4_Ne20 = 19, + k_He4_N13_to_p_O16 = 20, + k_C12_O16_to_p_Al27 = 21, + k_C12_O16_to_He4_Mg24 = 22, + k_O16_O16_to_p_P31 = 23, + k_O16_O16_to_He4_Si28 = 24, + k_He4_F18_to_p_Ne21 = 25, + k_p_Na23_to_He4_Ne20 = 26, + k_p_Al27_to_He4_Mg24 = 27, + k_p_P31_to_He4_Si28 = 28, + k_He4_Cr48_to_p_Mn51 = 29, + k_He4_Fe52_to_p_Co55 = 30, + k_He4_He4_He4_to_C12 = 31, + k_C12_C12_to_Mg24_modified = 32, + k_O16_O16_to_S32_modified = 33, + k_C12_O16_to_Si28_modified = 34, + k_p_Fe54_to_Co55 = 35, + k_He4_Fe54_to_Ni58 = 36, + k_p_Fe56_to_Co57 = 37, + k_n_Co55_to_Co56 = 38, + k_n_Co56_to_Co57 = 39, + k_p_Co57_to_Ni58 = 40, + k_He4_Mn51_to_p_Fe54 = 41, + k_He4_Co55_to_p_Ni58 = 42, + k_n_Co56_to_p_Fe56 = 43, + k_p_Co57_to_He4_Fe54 = 44, + k_n_Ni56_to_p_Co56 = 45, + k_He4_S32_to_Ar36_removed = 46, + k_p_Cl35_to_Ar36_removed = 47, + k_p_Cl35_to_He4_S32_removed = 48, + k_He4_Ar36_to_Ca40_removed = 49, + k_p_K39_to_Ca40_removed = 50, + k_p_K39_to_He4_Ar36_removed = 51, + k_He4_Ca40_to_Ti44_removed = 52, + k_p_Sc43_to_Ti44_removed = 53, + k_p_Sc43_to_He4_Ca40_removed = 54, + k_He4_Ti44_to_Cr48_removed = 55, + k_He4_Ti44_to_p_V47_removed = 56, + k_p_V47_to_Cr48_removed = 57, + k_n_Fe52_to_Fe53_removed = 58, + k_n_Fe53_to_Fe54_removed = 59, + k_n_Fe54_to_Fe55_removed = 60, + k_n_Fe55_to_Fe56_removed = 61, + k_n_Ni56_to_Ni57_removed = 62, + k_n_Ni57_to_Ni58_removed = 63, + k_Co56_to_Fe56 = 64, + k_Co56_to_Ni56 = 65, + k_Fe56_to_Co56 = 66, + k_n_to_p = 67, + k_Ni56_to_Co56 = 68, + k_p_to_n = 69, + k_S32_He4_to_Ar36_approx = 70, + k_Ar36_to_S32_He4_approx = 71, + k_Ar36_He4_to_Ca40_approx = 72, + k_Ca40_to_Ar36_He4_approx = 73, + k_Ca40_He4_to_Ti44_approx = 74, + k_Ti44_to_Ca40_He4_approx = 75, + k_Ti44_He4_to_Cr48_approx = 76, + k_Cr48_to_Ti44_He4_approx = 77, + k_Fe52_n_n_to_Fe54_approx = 78, + k_Fe54_to_Fe52_n_n_approx = 79, + k_Fe54_n_n_to_Fe56_approx = 80, + k_Fe56_to_Fe54_n_n_approx = 81, + k_Ni56_n_n_to_Ni58_approx = 82, + k_Ni58_to_Ni56_n_n_approx = 83, + k_N13_to_p_C12_derived = 84, + k_O16_to_He4_C12_derived = 85, + k_F18_to_He4_N14_derived = 86, + k_Ne20_to_He4_O16_derived = 87, + k_Na22_to_p_Ne21_derived = 88, + k_Na22_to_He4_F18_derived = 89, + k_Mg24_to_p_Na23_derived = 90, + k_Mg24_to_He4_Ne20_derived = 91, + k_Si28_to_p_Al27_derived = 92, + k_Si28_to_He4_Mg24_derived = 93, + k_S32_to_p_P31_derived = 94, + k_S32_to_He4_Si28_derived = 95, + k_Fe52_to_p_Mn51_derived = 96, + k_Fe52_to_He4_Cr48_derived = 97, + k_Co55_to_He4_Mn51_derived = 98, + k_Ni56_to_p_Co55_derived = 99, + k_Ni56_to_He4_Fe52_derived = 100, + k_C12_to_He4_He4_He4_derived = 101, + k_p_O16_to_He4_N13_derived = 102, + k_He4_Ne20_to_p_Na23_derived = 103, + k_p_Ne21_to_He4_F18_derived = 104, + k_He4_Mg24_to_p_Al27_derived = 105, + k_He4_Si28_to_p_P31_derived = 106, + k_p_Mn51_to_He4_Cr48_derived = 107, + k_p_Co55_to_He4_Fe52_derived = 108, + k_Co55_to_p_Fe54_derived = 109, + k_Co56_to_n_Co55_derived = 110, + k_Co57_to_n_Co56_derived = 111, + k_Co57_to_p_Fe56_derived = 112, + k_Ni58_to_p_Co57_derived = 113, + k_Ni58_to_He4_Fe54_derived = 114, + k_p_Fe54_to_He4_Mn51_derived = 115, + k_He4_Fe54_to_p_Co57_derived = 116, + k_p_Fe56_to_n_Co56_derived = 117, + k_p_Co56_to_n_Ni56_derived = 118, + k_p_Ni58_to_He4_Co55_derived = 119, + k_He4_S32_to_p_Cl35_derived_removed = 120, + k_Ar36_to_He4_S32_derived_removed = 121, + k_Ar36_to_p_Cl35_derived_removed = 122, + k_He4_Ar36_to_p_K39_derived_removed = 123, + k_Ca40_to_He4_Ar36_derived_removed = 124, + k_Ca40_to_p_K39_derived_removed = 125, + k_He4_Ca40_to_p_Sc43_derived_removed = 126, + k_Ti44_to_He4_Ca40_derived_removed = 127, + k_Ti44_to_p_Sc43_derived_removed = 128, + k_Cr48_to_He4_Ti44_derived_removed = 129, + k_Cr48_to_p_V47_derived_removed = 130, + k_p_V47_to_He4_Ti44_derived_removed = 131, + k_Fe54_to_n_Fe53_derived_removed = 132, + k_Fe53_to_n_Fe52_derived_removed = 133, + k_Fe56_to_n_Fe55_derived_removed = 134, + k_Fe55_to_n_Fe54_derived_removed = 135, + k_Ni58_to_n_Ni57_derived_removed = 136, + k_Ni57_to_n_Ni56_derived_removed = 137, + NumRates = k_Ni57_to_n_Ni56_derived_removed + }; + + // number of reaclib rates + + const int NrateReaclib = 117; + + // number of tabular rates + + const int NrateTabular = 6; + + // rate names -- note: the rates are 1-based, not zero-based, so we pad + // this vector with rate_names[0] = "" so the indices line up with the + // NetworkRates enum + + static const std::vector rate_names = { + "", // 0 + "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, + "He4_Cr48_to_Fe52", // 13, + "p_Mn51_to_Fe52", // 14, + "He4_Mn51_to_Co55", // 15, + "He4_Fe52_to_Ni56", // 16, + "p_Co55_to_Ni56", // 17, + "C12_C12_to_p_Na23", // 18, + "C12_C12_to_He4_Ne20", // 19, + "He4_N13_to_p_O16", // 20, + "C12_O16_to_p_Al27", // 21, + "C12_O16_to_He4_Mg24", // 22, + "O16_O16_to_p_P31", // 23, + "O16_O16_to_He4_Si28", // 24, + "He4_F18_to_p_Ne21", // 25, + "p_Na23_to_He4_Ne20", // 26, + "p_Al27_to_He4_Mg24", // 27, + "p_P31_to_He4_Si28", // 28, + "He4_Cr48_to_p_Mn51", // 29, + "He4_Fe52_to_p_Co55", // 30, + "He4_He4_He4_to_C12", // 31, + "C12_C12_to_Mg24_modified", // 32, + "O16_O16_to_S32_modified", // 33, + "C12_O16_to_Si28_modified", // 34, + "p_Fe54_to_Co55", // 35, + "He4_Fe54_to_Ni58", // 36, + "p_Fe56_to_Co57", // 37, + "n_Co55_to_Co56", // 38, + "n_Co56_to_Co57", // 39, + "p_Co57_to_Ni58", // 40, + "He4_Mn51_to_p_Fe54", // 41, + "He4_Co55_to_p_Ni58", // 42, + "n_Co56_to_p_Fe56", // 43, + "p_Co57_to_He4_Fe54", // 44, + "n_Ni56_to_p_Co56", // 45, + "He4_S32_to_Ar36_removed", // 46, + "p_Cl35_to_Ar36_removed", // 47, + "p_Cl35_to_He4_S32_removed", // 48, + "He4_Ar36_to_Ca40_removed", // 49, + "p_K39_to_Ca40_removed", // 50, + "p_K39_to_He4_Ar36_removed", // 51, + "He4_Ca40_to_Ti44_removed", // 52, + "p_Sc43_to_Ti44_removed", // 53, + "p_Sc43_to_He4_Ca40_removed", // 54, + "He4_Ti44_to_Cr48_removed", // 55, + "He4_Ti44_to_p_V47_removed", // 56, + "p_V47_to_Cr48_removed", // 57, + "n_Fe52_to_Fe53_removed", // 58, + "n_Fe53_to_Fe54_removed", // 59, + "n_Fe54_to_Fe55_removed", // 60, + "n_Fe55_to_Fe56_removed", // 61, + "n_Ni56_to_Ni57_removed", // 62, + "n_Ni57_to_Ni58_removed", // 63, + "Co56_to_Fe56", // 64, + "Co56_to_Ni56", // 65, + "Fe56_to_Co56", // 66, + "n_to_p", // 67, + "Ni56_to_Co56", // 68, + "p_to_n", // 69, + "S32_He4_to_Ar36_approx", // 70, + "Ar36_to_S32_He4_approx", // 71, + "Ar36_He4_to_Ca40_approx", // 72, + "Ca40_to_Ar36_He4_approx", // 73, + "Ca40_He4_to_Ti44_approx", // 74, + "Ti44_to_Ca40_He4_approx", // 75, + "Ti44_He4_to_Cr48_approx", // 76, + "Cr48_to_Ti44_He4_approx", // 77, + "Fe52_n_n_to_Fe54_approx", // 78, + "Fe54_to_Fe52_n_n_approx", // 79, + "Fe54_n_n_to_Fe56_approx", // 80, + "Fe56_to_Fe54_n_n_approx", // 81, + "Ni56_n_n_to_Ni58_approx", // 82, + "Ni58_to_Ni56_n_n_approx", // 83, + "N13_to_p_C12_derived", // 84, + "O16_to_He4_C12_derived", // 85, + "F18_to_He4_N14_derived", // 86, + "Ne20_to_He4_O16_derived", // 87, + "Na22_to_p_Ne21_derived", // 88, + "Na22_to_He4_F18_derived", // 89, + "Mg24_to_p_Na23_derived", // 90, + "Mg24_to_He4_Ne20_derived", // 91, + "Si28_to_p_Al27_derived", // 92, + "Si28_to_He4_Mg24_derived", // 93, + "S32_to_p_P31_derived", // 94, + "S32_to_He4_Si28_derived", // 95, + "Fe52_to_p_Mn51_derived", // 96, + "Fe52_to_He4_Cr48_derived", // 97, + "Co55_to_He4_Mn51_derived", // 98, + "Ni56_to_p_Co55_derived", // 99, + "Ni56_to_He4_Fe52_derived", // 100, + "C12_to_He4_He4_He4_derived", // 101, + "p_O16_to_He4_N13_derived", // 102, + "He4_Ne20_to_p_Na23_derived", // 103, + "p_Ne21_to_He4_F18_derived", // 104, + "He4_Mg24_to_p_Al27_derived", // 105, + "He4_Si28_to_p_P31_derived", // 106, + "p_Mn51_to_He4_Cr48_derived", // 107, + "p_Co55_to_He4_Fe52_derived", // 108, + "Co55_to_p_Fe54_derived", // 109, + "Co56_to_n_Co55_derived", // 110, + "Co57_to_n_Co56_derived", // 111, + "Co57_to_p_Fe56_derived", // 112, + "Ni58_to_p_Co57_derived", // 113, + "Ni58_to_He4_Fe54_derived", // 114, + "p_Fe54_to_He4_Mn51_derived", // 115, + "He4_Fe54_to_p_Co57_derived", // 116, + "p_Fe56_to_n_Co56_derived", // 117, + "p_Co56_to_n_Ni56_derived", // 118, + "p_Ni58_to_He4_Co55_derived", // 119, + "He4_S32_to_p_Cl35_derived_removed", // 120, + "Ar36_to_He4_S32_derived_removed", // 121, + "Ar36_to_p_Cl35_derived_removed", // 122, + "He4_Ar36_to_p_K39_derived_removed", // 123, + "Ca40_to_He4_Ar36_derived_removed", // 124, + "Ca40_to_p_K39_derived_removed", // 125, + "He4_Ca40_to_p_Sc43_derived_removed", // 126, + "Ti44_to_He4_Ca40_derived_removed", // 127, + "Ti44_to_p_Sc43_derived_removed", // 128, + "Cr48_to_He4_Ti44_derived_removed", // 129, + "Cr48_to_p_V47_derived_removed", // 130, + "p_V47_to_He4_Ti44_derived_removed", // 131, + "Fe54_to_n_Fe53_derived_removed", // 132, + "Fe53_to_n_Fe52_derived_removed", // 133, + "Fe56_to_n_Fe55_derived_removed", // 134, + "Fe55_to_n_Fe54_derived_removed", // 135, + "Ni58_to_n_Ni57_derived_removed", // 136, + "Ni57_to_n_Ni56_derived_removed" // 137, + }; + +} + +#ifdef NSE_NET +namespace NSE_INDEX +{ + constexpr int H1_index = 1; + constexpr int N_index = 0; + constexpr int He4_index = 2; + + // Each row corresponds to the rate in NetworkRates enum + // First 3 row indices for reactants, followed by 3 product indices + // last index is the corresponding reverse rate index. + + extern AMREX_GPU_MANAGED amrex::Array2D rate_indices; +} +#endif + +#endif diff --git a/networks/He-C-Fe-group-simple/actual_network_data.cpp b/networks/He-C-Fe-group-simple/actual_network_data.cpp new file mode 100644 index 000000000..cd7f18600 --- /dev/null +++ b/networks/He-C-Fe-group-simple/actual_network_data.cpp @@ -0,0 +1,152 @@ +#include + + +#ifdef NSE_NET +namespace NSE_INDEX +{ + AMREX_GPU_MANAGED amrex::Array2D rate_indices { + -1, 1, 3, -1, -1, 4, 84, + -1, 2, 3, -1, -1, 6, 85, + -1, 2, 5, -1, -1, 7, 86, + -1, 2, 6, -1, -1, 8, 87, + -1, 2, 7, -1, -1, 10, 89, + -1, 2, 8, -1, -1, 12, 91, + -1, 1, 9, -1, -1, 10, 88, + -1, 1, 11, -1, -1, 12, 90, + -1, 2, 12, -1, -1, 14, 93, + -1, 1, 13, -1, -1, 14, 92, + -1, 2, 14, -1, -1, 16, 95, + -1, 1, 15, -1, -1, 16, 94, + -1, 2, 20, -1, -1, 22, 97, + -1, 1, 21, -1, -1, 22, 96, + -1, 2, 21, -1, -1, 25, 98, + -1, 2, 22, -1, -1, 28, 100, + -1, 1, 25, -1, -1, 28, 99, + -1, 3, 3, -1, 1, 11, -1, + -1, 3, 3, -1, 2, 8, -1, + -1, 2, 4, -1, 1, 6, 102, + -1, 3, 6, -1, 1, 13, -1, + -1, 3, 6, -1, 2, 12, -1, + -1, 6, 6, -1, 1, 15, -1, + -1, 6, 6, -1, 2, 14, -1, + -1, 2, 7, -1, 1, 9, 104, + -1, 1, 11, -1, 2, 8, 103, + -1, 1, 13, -1, 2, 12, 105, + -1, 1, 15, -1, 2, 14, 106, + -1, 2, 20, -1, 1, 21, 107, + -1, 2, 22, -1, 1, 25, 108, + 2, 2, 2, -1, -1, 3, 101, + -1, 3, 3, -1, -1, 12, -1, + -1, 6, 6, -1, -1, 16, -1, + -1, 3, 6, -1, -1, 14, -1, + -1, 1, 23, -1, -1, 25, 109, + -1, 2, 23, -1, -1, 29, 114, + -1, 1, 24, -1, -1, 27, 112, + -1, 0, 25, -1, -1, 26, 110, + -1, 0, 26, -1, -1, 27, 111, + -1, 1, 27, -1, -1, 29, 113, + -1, 2, 21, -1, 1, 23, 115, + -1, 2, 25, -1, 1, 29, 119, + -1, 0, 26, -1, 1, 24, 117, + -1, 1, 27, -1, 2, 23, 116, + -1, 0, 28, -1, 1, 26, 118, + -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, 24, 66, + -1, -1, 26, -1, -1, 28, -1, + -1, -1, 24, -1, -1, 26, -1, + -1, -1, 0, -1, -1, 1, 69, + -1, -1, 28, -1, -1, 26, 65, + -1, -1, 1, -1, -1, 0, -1, + -1, 2, 16, -1, -1, 17, 71, + -1, -1, 17, -1, 2, 16, -1, + -1, 2, 17, -1, -1, 18, 73, + -1, -1, 18, -1, 2, 17, -1, + -1, 2, 18, -1, -1, 19, 75, + -1, -1, 19, -1, 2, 18, -1, + -1, 2, 19, -1, -1, 20, 77, + -1, -1, 20, -1, 2, 19, -1, + 0, 0, 22, -1, -1, 23, 79, + -1, -1, 23, 0, 0, 22, -1, + 0, 0, 23, -1, -1, 24, 81, + -1, -1, 24, 0, 0, 23, -1, + 0, 0, 28, -1, -1, 29, 83, + -1, -1, 29, 0, 0, 28, -1, + -1, -1, 4, -1, 1, 3, -1, + -1, -1, 6, -1, 2, 3, -1, + -1, -1, 7, -1, 2, 5, -1, + -1, -1, 8, -1, 2, 6, -1, + -1, -1, 10, -1, 1, 9, -1, + -1, -1, 10, -1, 2, 7, -1, + -1, -1, 12, -1, 1, 11, -1, + -1, -1, 12, -1, 2, 8, -1, + -1, -1, 14, -1, 1, 13, -1, + -1, -1, 14, -1, 2, 12, -1, + -1, -1, 16, -1, 1, 15, -1, + -1, -1, 16, -1, 2, 14, -1, + -1, -1, 22, -1, 1, 21, -1, + -1, -1, 22, -1, 2, 20, -1, + -1, -1, 25, -1, 2, 21, -1, + -1, -1, 28, -1, 1, 25, -1, + -1, -1, 28, -1, 2, 22, -1, + -1, -1, 3, 2, 2, 2, -1, + -1, 1, 6, -1, 2, 4, -1, + -1, 2, 8, -1, 1, 11, -1, + -1, 1, 9, -1, 2, 7, -1, + -1, 2, 12, -1, 1, 13, -1, + -1, 2, 14, -1, 1, 15, -1, + -1, 1, 21, -1, 2, 20, -1, + -1, 1, 25, -1, 2, 22, -1, + -1, -1, 25, -1, 1, 23, -1, + -1, -1, 26, -1, 0, 25, -1, + -1, -1, 27, -1, 0, 26, -1, + -1, -1, 27, -1, 1, 24, -1, + -1, -1, 29, -1, 1, 27, -1, + -1, -1, 29, -1, 2, 23, -1, + -1, 1, 23, -1, 2, 21, -1, + -1, 2, 23, -1, 1, 27, -1, + -1, 1, 24, -1, 0, 26, -1, + -1, 1, 26, -1, 0, 28, -1, + -1, 1, 29, -1, 2, 25, -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 + }; +} +#endif + +void actual_network_init() +{ + +} diff --git a/networks/He-C-Fe-group-simple/actual_rhs.H b/networks/He-C-Fe-group-simple/actual_rhs.H new file mode 100644 index 000000000..ef9196956 --- /dev/null +++ b/networks/He-C-Fe-group-simple/actual_rhs.H @@ -0,0 +1,2325 @@ +#ifndef actual_rhs_H +#define actual_rhs_H + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace amrex; +using namespace ArrayUtil; + +using namespace Species; +using namespace Rates; + +using namespace rate_tables; + + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void ener_gener_rate(T const& dydt, amrex::Real& enuc) +{ + + // Computes the instantaneous energy generation rate (from the nuclei) + + // This is basically e = m c**2 + + enuc = 0.0_rt; + + for (int n = 1; n <= NumSpec; ++n) { + enuc += dydt(n) * network::mion(n); + } + + enuc *= C::Legacy::enuc_conv2; +} + + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void evaluate_rates(const burn_t& state, T& rate_eval) { + + + // create molar fractions + + amrex::Array1D Y; + for (int n = 1; n <= NumSpec; ++n) { + Y(n) = state.xn[n-1] * aion_inv[n-1]; + } + + [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + + // Calculate Reaclib rates + + using number_t = std::conditional_t; + number_t temp = state.T; + if constexpr (do_T_derivatives) { + // seed the dual number for temperature before calculating anything with it + autodiff::seed(temp); + } + plasma_state_t pstate{}; + fill_plasma_state(pstate, temp, state.rho, Y); + + tf_t tfactors = evaluate_tfactors(state.T); + + fill_reaclib_rates(tfactors, rate_eval); + + + + // Evaluate screening factors + + amrex::Real ratraw, dratraw_dT; + amrex::Real scor, dscor_dt; + [[maybe_unused]] amrex::Real scor2, dscor2_dt; + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 6.0_rt, 12.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_C12_to_N13); + rate_eval.dscreened_rates_dT(k_p_C12_to_N13) = 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); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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_He4_C12_to_O16); + rate_eval.dscreened_rates_dT(k_He4_C12_to_O16) = 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); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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_He4_N14_to_F18); + rate_eval.dscreened_rates_dT(k_He4_N14_to_F18) = 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); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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_O16_to_Ne20); + rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20) = 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); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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_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_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_He4_F18_to_p_Ne21); + rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21) = 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); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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_Mg24); + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24) = ratraw * dscor_dt + dratraw_dT * 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_He4_Ne20_to_p_Na23_derived); + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_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); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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_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_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(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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_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_Na23_to_He4_Ne20); + rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 12.0_rt, 24.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28); + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28) = ratraw * dscor_dt + dratraw_dT * 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_He4_Mg24_to_p_Al27_derived); + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_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); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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_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_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_Al27_to_He4_Mg24); + rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 14.0_rt, 28.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32); + rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; + } + + 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_Si28_to_p_P31_derived); + rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_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); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_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; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 24.0_rt, 48.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He4_Cr48_to_Fe52); + rate_eval.screened_rates(k_He4_Cr48_to_Fe52) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52); + rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51); + rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51); + rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 25.0_rt, 51.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_Mn51_to_Fe52); + rate_eval.screened_rates(k_p_Mn51_to_Fe52) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52); + rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); + rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); + rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 25.0_rt, 51.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He4_Mn51_to_Co55); + rate_eval.screened_rates(k_He4_Mn51_to_Co55) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mn51_to_Co55); + rate_eval.dscreened_rates_dT(k_He4_Mn51_to_Co55) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_Mn51_to_p_Fe54); + rate_eval.screened_rates(k_He4_Mn51_to_p_Fe54) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mn51_to_p_Fe54); + rate_eval.dscreened_rates_dT(k_He4_Mn51_to_p_Fe54) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 26.0_rt, 52.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He4_Fe52_to_Ni56); + rate_eval.screened_rates(k_He4_Fe52_to_Ni56) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56); + rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55); + rate_eval.screened_rates(k_He4_Fe52_to_p_Co55) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55); + rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 27.0_rt, 55.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_Co55_to_Ni56); + rate_eval.screened_rates(k_p_Co55_to_Ni56) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56); + rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); + rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); + rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(6.0_rt, 12.0_rt, 6.0_rt, 12.0_rt); + + + static_assert(scn_fac.z1 == 6.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_C12_C12_to_p_Na23); + rate_eval.screened_rates(k_C12_C12_to_p_Na23) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23); + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_C12_C12_to_He4_Ne20); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20); + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_C12_C12_to_Mg24_modified); + rate_eval.screened_rates(k_C12_C12_to_Mg24_modified) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_C12_to_Mg24_modified); + rate_eval.dscreened_rates_dT(k_C12_C12_to_Mg24_modified) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 13.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He4_N13_to_p_O16); + rate_eval.screened_rates(k_He4_N13_to_p_O16) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16); + rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(6.0_rt, 12.0_rt, 8.0_rt, 16.0_rt); + + + static_assert(scn_fac.z1 == 6.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_C12_O16_to_p_Al27); + rate_eval.screened_rates(k_C12_O16_to_p_Al27) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27); + rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_C12_O16_to_He4_Mg24); + rate_eval.screened_rates(k_C12_O16_to_He4_Mg24) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24); + rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_C12_O16_to_Si28_modified); + rate_eval.screened_rates(k_C12_O16_to_Si28_modified) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified); + rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(8.0_rt, 16.0_rt, 8.0_rt, 16.0_rt); + + + static_assert(scn_fac.z1 == 8.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_O16_O16_to_p_P31); + rate_eval.screened_rates(k_O16_O16_to_p_P31) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31); + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_O16_O16_to_He4_Si28); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28); + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_O16_O16_to_S32_modified); + rate_eval.screened_rates(k_O16_O16_to_S32_modified) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_O16_to_S32_modified); + rate_eval.dscreened_rates_dT(k_O16_O16_to_S32_modified) = 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); + + + 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; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 26.0_rt, 54.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_Fe54_to_Co55); + rate_eval.screened_rates(k_p_Fe54_to_Co55) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Fe54_to_Co55); + rate_eval.dscreened_rates_dT(k_p_Fe54_to_Co55) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Fe54_to_He4_Mn51_derived); + rate_eval.screened_rates(k_p_Fe54_to_He4_Mn51_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Fe54_to_He4_Mn51_derived); + rate_eval.dscreened_rates_dT(k_p_Fe54_to_He4_Mn51_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 26.0_rt, 54.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He4_Fe54_to_Ni58); + rate_eval.screened_rates(k_He4_Fe54_to_Ni58) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Fe54_to_Ni58); + rate_eval.dscreened_rates_dT(k_He4_Fe54_to_Ni58) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_Fe54_to_p_Co57_derived); + rate_eval.screened_rates(k_He4_Fe54_to_p_Co57_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Fe54_to_p_Co57_derived); + rate_eval.dscreened_rates_dT(k_He4_Fe54_to_p_Co57_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 26.0_rt, 56.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_Fe56_to_Co57); + rate_eval.screened_rates(k_p_Fe56_to_Co57) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Fe56_to_Co57); + rate_eval.dscreened_rates_dT(k_p_Fe56_to_Co57) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Fe56_to_n_Co56_derived); + rate_eval.screened_rates(k_p_Fe56_to_n_Co56_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Fe56_to_n_Co56_derived); + rate_eval.dscreened_rates_dT(k_p_Fe56_to_n_Co56_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 27.0_rt, 57.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_Co57_to_Ni58); + rate_eval.screened_rates(k_p_Co57_to_Ni58) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co57_to_Ni58); + rate_eval.dscreened_rates_dT(k_p_Co57_to_Ni58) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Co57_to_He4_Fe54); + rate_eval.screened_rates(k_p_Co57_to_He4_Fe54) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co57_to_He4_Fe54); + rate_eval.dscreened_rates_dT(k_p_Co57_to_He4_Fe54) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 27.0_rt, 55.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He4_Co55_to_p_Ni58); + rate_eval.screened_rates(k_He4_Co55_to_p_Ni58) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Co55_to_p_Ni58); + rate_eval.dscreened_rates_dT(k_He4_Co55_to_p_Ni58) = 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); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + 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_derived); + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 27.0_rt, 56.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_Co56_to_n_Ni56_derived); + rate_eval.screened_rates(k_p_Co56_to_n_Ni56_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co56_to_n_Ni56_derived); + rate_eval.dscreened_rates_dT(k_p_Co56_to_n_Ni56_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 28.0_rt, 58.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_Ni58_to_He4_Co55_derived); + rate_eval.screened_rates(k_p_Ni58_to_He4_Co55_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ni58_to_He4_Co55_derived); + rate_eval.dscreened_rates_dT(k_p_Ni58_to_He4_Co55_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 16.0_rt, 32.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He4_S32_to_Ar36_removed); + rate_eval.screened_rates(k_He4_S32_to_Ar36_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed); + rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * 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_derived_removed); + rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 17.0_rt, 35.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); + rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed); + rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); + rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed); + rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 18.0_rt, 36.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_removed); + rate_eval.screened_rates(k_He4_Ar36_to_Ca40_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed); + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * 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_derived_removed); + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 19.0_rt, 39.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); + rate_eval.screened_rates(k_p_K39_to_Ca40_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed); + rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); + rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed); + rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 20.0_rt, 40.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_removed); + rate_eval.screened_rates(k_He4_Ca40_to_Ti44_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed); + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * 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_derived_removed); + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 21.0_rt, 43.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); + rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed); + rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); + rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed); + rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 22.0_rt, 44.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_removed); + rate_eval.screened_rates(k_He4_Ti44_to_Cr48_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed); + rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed); + rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed); + rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 23.0_rt, 47.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_V47_to_Cr48_removed); + rate_eval.screened_rates(k_p_V47_to_Cr48_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed); + rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * 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_derived_removed); + rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + // Fill approximate rates + + fill_approx_rates(tfactors, state.rho, Y, rate_eval); + + // Calculate tabular rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Fe56) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Fe56) = drate_dt; + } + rate_eval.enuc_weak += C::Legacy::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Ni56) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Ni56) = drate_dt; + } + rate_eval.enuc_weak += C::Legacy::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe56_to_Co56) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_Co56) = drate_dt; + } + rate_eval.enuc_weak += C::Legacy::n_A * Y(Fe56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_n_to_p) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_to_p) = drate_dt; + } + rate_eval.enuc_weak += C::Legacy::n_A * Y(N) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni56_to_Co56) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Co56) = drate_dt; + } + rate_eval.enuc_weak += C::Legacy::n_A * Y(Ni56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_p_to_n) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_to_n) = drate_dt; + } + rate_eval.enuc_weak += C::Legacy::n_A * Y(H1) * (edot_nu + edot_gamma); + + +} + +#ifdef NSE_NET +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void get_ydot_weak(const burn_t& state, + amrex::Array1D& ydot_nuc, + amrex::Real& enuc_weak, + [[maybe_unused]] const amrex::Array1D& Y) { + /// + /// Calculate Ydots contribute only from weak reactions. + /// This is used to calculate dyedt and energy generation from + /// weak reactions for self-consistent NSE + /// + + + // initialize ydot_nuc to 0 + + for (int i = 1; i <= neqs; ++i) { + ydot_nuc(i) = 0.0_rt; + } + + rate_t rate_eval; + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + + rate_eval.enuc_weak = 0.0_rt; + + // Calculate tabular rates and get ydot_weak + + tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Fe56) = rate; + rate_eval.enuc_weak += C::Legacy::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Ni56) = rate; + rate_eval.enuc_weak += C::Legacy::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe56_to_Co56) = rate; + rate_eval.enuc_weak += C::Legacy::n_A * Y(Fe56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_n_to_p) = rate; + rate_eval.enuc_weak += C::Legacy::n_A * Y(N) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni56_to_Co56) = rate; + rate_eval.enuc_weak += C::Legacy::n_A * Y(Ni56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, + rhoy, state.T, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_p_to_n) = rate; + rate_eval.enuc_weak += C::Legacy::n_A * Y(H1) * (edot_nu + edot_gamma); + + auto screened_rates = rate_eval.screened_rates; + + ydot_nuc(N) = + (-screened_rates(k_n_to_p)*Y(N) + screened_rates(k_p_to_n)*Y(H1)); + + ydot_nuc(H1) = + (screened_rates(k_n_to_p)*Y(N) + -screened_rates(k_p_to_n)*Y(H1)); + + ydot_nuc(He4) = 0.0_rt; + + ydot_nuc(C12) = 0.0_rt; + + ydot_nuc(N13) = 0.0_rt; + + ydot_nuc(N14) = 0.0_rt; + + ydot_nuc(O16) = 0.0_rt; + + ydot_nuc(F18) = 0.0_rt; + + ydot_nuc(Ne20) = 0.0_rt; + + ydot_nuc(Ne21) = 0.0_rt; + + ydot_nuc(Na22) = 0.0_rt; + + ydot_nuc(Na23) = 0.0_rt; + + ydot_nuc(Mg24) = 0.0_rt; + + ydot_nuc(Al27) = 0.0_rt; + + ydot_nuc(Si28) = 0.0_rt; + + ydot_nuc(P31) = 0.0_rt; + + ydot_nuc(S32) = 0.0_rt; + + ydot_nuc(Ar36) = 0.0_rt; + + ydot_nuc(Ca40) = 0.0_rt; + + ydot_nuc(Ti44) = 0.0_rt; + + ydot_nuc(Cr48) = 0.0_rt; + + ydot_nuc(Mn51) = 0.0_rt; + + ydot_nuc(Fe52) = 0.0_rt; + + ydot_nuc(Fe54) = 0.0_rt; + + ydot_nuc(Fe56) = + (screened_rates(k_Co56_to_Fe56)*Y(Co56) + -screened_rates(k_Fe56_to_Co56)*Y(Fe56)); + + ydot_nuc(Co55) = 0.0_rt; + + ydot_nuc(Co56) = + (-screened_rates(k_Co56_to_Fe56)*Y(Co56) + screened_rates(k_Fe56_to_Co56)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56)*Y(Co56)); + + ydot_nuc(Co57) = 0.0_rt; + + ydot_nuc(Ni56) = + (-screened_rates(k_Ni56_to_Co56)*Y(Ni56) + screened_rates(k_Co56_to_Ni56)*Y(Co56)); + + ydot_nuc(Ni58) = 0.0_rt; + + enuc_weak = rate_eval.enuc_weak; +} +#endif + + +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rhs_nuc(const burn_t& state, + amrex::Array1D& ydot_nuc, + const amrex::Array1D& Y, + const amrex::Array1D& screened_rates) { + + using namespace Rates; + + ydot_nuc(N) = + (-screened_rates(k_n_Co55_to_Co56)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_n_Co56_to_Co57)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_n_Co56_to_p_Fe56)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_n_Ni56_to_p_Co56)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (-2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + + (-2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + + (-2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + + (-screened_rates(k_n_to_p)*Y(N) + screened_rates(k_p_to_n)*Y(H1)); + + ydot_nuc(H1) = + (-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)) + + (-screened_rates(k_p_Mn51_to_Fe52)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_p_Co55_to_Ni56)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + 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_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_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) + + (screened_rates(k_He4_Cr48_to_p_Mn51)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (screened_rates(k_He4_Fe52_to_p_Co55)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_p_Fe54_to_Co55)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_p_Fe56_to_Co57)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (-screened_rates(k_p_Co57_to_Ni58)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (screened_rates(k_He4_Mn51_to_p_Fe54)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_He4_Co55_to_p_Ni58)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_n_Co56_to_p_Fe56)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_p_Co57_to_He4_Fe54)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_n_Ni56_to_p_Co56)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_n_to_p)*Y(N) + -screened_rates(k_p_to_n)*Y(H1)); + + ydot_nuc(He4) = + (-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)) + + (-screened_rates(k_He4_Cr48_to_Fe52)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (-screened_rates(k_He4_Mn51_to_Co55)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (-screened_rates(k_He4_Fe52_to_Ni56)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + 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_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_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) + + (-screened_rates(k_He4_Cr48_to_p_Mn51)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_He4_Fe52_to_p_Co55)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*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_Fe54_to_Ni58)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (-screened_rates(k_He4_Mn51_to_p_Fe54)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (-screened_rates(k_He4_Co55_to_p_Ni58)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_p_Co57_to_He4_Fe54)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*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)) + + (-screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); + + ydot_nuc(C12) = + (-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_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_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_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_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 + + -screened_rates(k_O16_O16_to_He4_Si28)*amrex::Math::powi<2>(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(F18) = + (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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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)); + + ydot_nuc(Ar36) = + (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)); + + ydot_nuc(Ca40) = + (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)); + + ydot_nuc(Ti44) = + (screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + -screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + + (-screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); + + ydot_nuc(Cr48) = + (-screened_rates(k_He4_Cr48_to_Fe52)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (-screened_rates(k_He4_Cr48_to_p_Mn51)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + -screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); + + ydot_nuc(Mn51) = + (-screened_rates(k_p_Mn51_to_Fe52)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_He4_Mn51_to_Co55)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (screened_rates(k_He4_Cr48_to_p_Mn51)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_He4_Mn51_to_p_Fe54)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho); + + ydot_nuc(Fe52) = + (screened_rates(k_He4_Cr48_to_Fe52)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (screened_rates(k_p_Mn51_to_Fe52)*Y(Mn51)*Y(H1)*state.rho + -screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_He4_Fe52_to_Ni56)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-screened_rates(k_He4_Fe52_to_p_Co55)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)); + + ydot_nuc(Fe54) = + (-screened_rates(k_p_Fe54_to_Co55)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_He4_Fe54_to_Ni58)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_He4_Mn51_to_p_Fe54)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_p_Co57_to_He4_Fe54)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + + (-screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)); + + ydot_nuc(Fe56) = + (-screened_rates(k_p_Fe56_to_Co57)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (screened_rates(k_n_Co56_to_p_Fe56)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + + (screened_rates(k_Co56_to_Fe56)*Y(Co56) + -screened_rates(k_Fe56_to_Co56)*Y(Fe56)); + + ydot_nuc(Co55) = + (screened_rates(k_He4_Mn51_to_Co55)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (-screened_rates(k_p_Co55_to_Ni56)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (screened_rates(k_He4_Fe52_to_p_Co55)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (screened_rates(k_p_Fe54_to_Co55)*Y(Fe54)*Y(H1)*state.rho + -screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_n_Co55_to_Co56)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_He4_Co55_to_p_Ni58)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho); + + ydot_nuc(Co56) = + (screened_rates(k_n_Co55_to_Co56)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_n_Co56_to_Co57)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_n_Co56_to_p_Fe56)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (screened_rates(k_n_Ni56_to_p_Co56)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Co56_to_Fe56)*Y(Co56) + screened_rates(k_Fe56_to_Co56)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56)*Y(Co56)); + + ydot_nuc(Co57) = + (screened_rates(k_p_Fe56_to_Co57)*Y(Fe56)*Y(H1)*state.rho + -screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (screened_rates(k_n_Co56_to_Co57)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_p_Co57_to_Ni58)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (-screened_rates(k_p_Co57_to_He4_Fe54)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho); + + ydot_nuc(Ni56) = + (screened_rates(k_He4_Fe52_to_Ni56)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (screened_rates(k_p_Co55_to_Ni56)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_n_Ni56_to_p_Co56)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + + (-screened_rates(k_Ni56_to_Co56)*Y(Ni56) + screened_rates(k_Co56_to_Ni56)*Y(Co56)); + + ydot_nuc(Ni58) = + (screened_rates(k_He4_Fe54_to_Ni58)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_p_Co57_to_Ni58)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (screened_rates(k_He4_Co55_to_p_Ni58)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)); + +} + + +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void actual_rhs (burn_t& state, amrex::Array1D& ydot) +{ + for (int i = 1; i <= neqs; ++i) { + ydot(i) = 0.0_rt; + } + + + // Set molar abundances + amrex::Array1D Y; + for (int i = 1; i <= NumSpec; ++i) { + Y(i) = state.xn[i-1] * aion_inv[i-1]; + } + + // build the rates + + rate_t rate_eval; + + constexpr int do_T_derivatives = 0; + + evaluate_rates(state, rate_eval); + + rhs_nuc(state, ydot, Y, rate_eval.screened_rates); + + // ion binding energy contributions + + amrex::Real enuc; + ener_gener_rate(ydot, enuc); + + // include any weak rate neutrino losses + enuc += rate_eval.enuc_weak; + + // Get the thermal neutrino losses + + amrex::Real sneut, dsneutdt, dsneutdd, dsnuda, dsnudz; + constexpr int do_derivatives{0}; + sneut5(state.T, state.rho, state.abar, state.zbar, sneut, dsneutdt, dsneutdd, dsnuda, dsnudz); + + // Append the energy equation (this is erg/g/s) + + ydot(net_ienuc) = enuc - sneut; + +} + + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void jac_nuc(const burn_t& state, + MatrixType& jac, + const amrex::Array1D& Y, + const amrex::Array1D& screened_rates) +{ + + amrex::Real scratch; + + scratch = -4.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 4.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) - 4.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Co55_to_Co56)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_Fe56)*Y(Co56)*state.rho - screened_rates(k_n_Ni56_to_p_Co56)*Y(Ni56)*state.rho - screened_rates(k_n_to_p); + jac.set(N, N, scratch); + + scratch = screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho + screened_rates(k_p_to_n); + jac.set(N, H1, scratch); + + scratch = -2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + jac.set(N, Fe52, scratch); + + scratch = -2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx); + jac.set(N, Fe54, scratch); + + scratch = 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx) + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + jac.set(N, Fe56, scratch); + + scratch = -screened_rates(k_n_Co55_to_Co56)*Y(N)*state.rho; + jac.set(N, Co55, scratch); + + scratch = screened_rates(k_Co56_to_n_Co55_derived) - screened_rates(k_n_Co56_to_Co57)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_Fe56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + jac.set(N, Co56, scratch); + + scratch = screened_rates(k_Co57_to_n_Co56_derived); + jac.set(N, Co57, scratch); + + scratch = -2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Ni56_to_p_Co56)*Y(N)*state.rho; + jac.set(N, Ni56, scratch); + + scratch = 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx); + jac.set(N, Ni58, scratch); + + scratch = screened_rates(k_n_Co56_to_p_Fe56)*Y(Co56)*state.rho + screened_rates(k_n_Ni56_to_p_Co56)*Y(Ni56)*state.rho + screened_rates(k_n_to_p); + jac.set(H1, N, 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_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56)*Y(Co55)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho - screened_rates(k_p_Co57_to_He4_Fe54)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_Ni58)*Y(Co57)*state.rho - screened_rates(k_p_Fe54_to_Co55)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_p_Fe56_to_Co57)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho - screened_rates(k_p_Mn51_to_Fe52)*Y(Mn51)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*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_Ni58_to_He4_Co55_derived)*Y(Ni58)*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 - screened_rates(k_p_to_n); + jac.set(H1, H1, scratch); + + scratch = screened_rates(k_He4_Co55_to_p_Ni58)*Y(Co55)*state.rho + screened_rates(k_He4_Cr48_to_p_Mn51)*Y(Cr48)*state.rho + screened_rates(k_He4_F18_to_p_Ne21)*Y(F18)*state.rho + screened_rates(k_He4_Fe52_to_p_Co55)*Y(Fe52)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Mn51_to_p_Fe54)*Y(Mn51)*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_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_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_derived)*Y(He4)*state.rho; + jac.set(H1, Ne20, scratch); + + 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_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_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_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_derived); + jac.set(H1, S32, scratch); + + scratch = screened_rates(k_He4_Cr48_to_p_Mn51)*Y(He4)*state.rho; + jac.set(H1, Cr48, scratch); + + scratch = screened_rates(k_He4_Mn51_to_p_Fe54)*Y(He4)*state.rho - screened_rates(k_p_Mn51_to_Fe52)*Y(H1)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + jac.set(H1, Mn51, scratch); + + scratch = screened_rates(k_Fe52_to_p_Mn51_derived) + screened_rates(k_He4_Fe52_to_p_Co55)*Y(He4)*state.rho; + jac.set(H1, Fe52, scratch); + + scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_p_Fe54_to_Co55)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + jac.set(H1, Fe54, scratch); + + scratch = -screened_rates(k_p_Fe56_to_Co57)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + jac.set(H1, Fe56, scratch); + + scratch = screened_rates(k_Co55_to_p_Fe54_derived) + screened_rates(k_He4_Co55_to_p_Ni58)*Y(He4)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56)*Y(H1)*state.rho; + jac.set(H1, Co55, scratch); + + scratch = screened_rates(k_n_Co56_to_p_Fe56)*Y(N)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + jac.set(H1, Co56, scratch); + + scratch = screened_rates(k_Co57_to_p_Fe56_derived) - screened_rates(k_p_Co57_to_He4_Fe54)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_Ni58)*Y(H1)*state.rho; + jac.set(H1, Co57, scratch); + + scratch = screened_rates(k_Ni56_to_p_Co55_derived) + screened_rates(k_n_Ni56_to_p_Co56)*Y(N)*state.rho; + jac.set(H1, Ni56, scratch); + + scratch = screened_rates(k_Ni58_to_p_Co57_derived) - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + jac.set(H1, Ni58, scratch); + + scratch = screened_rates(k_p_Al27_to_He4_Mg24)*Y(Al27)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_p_Co57_to_He4_Fe54)*Y(Co57)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*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_Ni58_to_He4_Co55_derived)*Y(Ni58)*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_He4_C12_to_O16)*Y(C12)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58)*Y(Co55)*state.rho - screened_rates(k_He4_Cr48_to_Fe52)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51)*Y(Cr48)*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_Fe52_to_Ni56)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe54_to_Ni58)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*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_Mn51_to_Co55)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54)*Y(Mn51)*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_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; + jac.set(He4, N13, scratch); + + 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_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_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_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_derived)*Y(H1)*state.rho; + jac.set(He4, Ne21, scratch); + + 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_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_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_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); + jac.set(He4, Ar36, scratch); + + scratch = -screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx); + jac.set(He4, Ca40, scratch); + + scratch = -screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx); + jac.set(He4, Ti44, scratch); + + scratch = screened_rates(k_Cr48_to_Ti44_He4_approx) - screened_rates(k_He4_Cr48_to_Fe52)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51)*Y(He4)*state.rho; + jac.set(He4, Cr48, scratch); + + scratch = -screened_rates(k_He4_Mn51_to_Co55)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + jac.set(He4, Mn51, scratch); + + scratch = screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_He4_Fe52_to_Ni56)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55)*Y(He4)*state.rho; + jac.set(He4, Fe52, scratch); + + scratch = -screened_rates(k_He4_Fe54_to_Ni58)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + jac.set(He4, Fe54, scratch); + + scratch = screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_He4_Co55_to_p_Ni58)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho; + jac.set(He4, Co55, scratch); + + scratch = screened_rates(k_p_Co57_to_He4_Fe54)*Y(H1)*state.rho; + jac.set(He4, Co57, scratch); + + scratch = screened_rates(k_Ni56_to_He4_Fe52_derived); + jac.set(He4, Ni56, scratch); + + scratch = screened_rates(k_Ni58_to_He4_Fe54_derived) + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + jac.set(He4, Ni58, scratch); + + scratch = -screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho; + jac.set(C12, H1, scratch); + + 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_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_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_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_derived)*Y(O16)*state.rho; + jac.set(N13, H1, scratch); + + scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho; + jac.set(N13, He4, scratch); + + 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_derived); + jac.set(N13, N13, scratch); + + 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; + jac.set(N14, He4, scratch); + + 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_derived); + jac.set(N14, F18, scratch); + + 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; + 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; + jac.set(O16, C12, scratch); + + 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_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_derived); + jac.set(O16, Ne20, scratch); + + 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; + 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_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_derived)*Y(H1)*state.rho; + jac.set(F18, Ne21, scratch); + + 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_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; + jac.set(Ne20, C12, scratch); + + 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_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_derived); + jac.set(Ne20, Mg24, scratch); + + 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; + jac.set(Ne21, He4, scratch); + + 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_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_derived); + jac.set(Ne21, Na22, scratch); + + scratch = 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; + jac.set(Na22, He4, scratch); + + scratch = screened_rates(k_He4_F18_to_Na22)*Y(He4)*state.rho; + jac.set(Na22, F18, scratch); + + 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_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_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_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_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_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; + jac.set(Mg24, C12, scratch); + + scratch = screened_rates(k_C12_O16_to_He4_Mg24)*Y(C12)*state.rho; + jac.set(Mg24, O16, scratch); + + scratch = screened_rates(k_He4_Ne20_to_Mg24)*Y(He4)*state.rho; + jac.set(Mg24, Ne20, scratch); + + 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_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_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_derived)*Y(Mg24)*state.rho; + jac.set(Al27, He4, scratch); + + scratch = screened_rates(k_C12_O16_to_p_Al27)*Y(O16)*state.rho; + jac.set(Al27, C12, scratch); + + 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_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_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_derived)*Y(Si28)*state.rho; + jac.set(Si28, He4, scratch); + + scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; + jac.set(Si28, C12, scratch); + + scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28)*Y(O16)*state.rho; + jac.set(Si28, O16, scratch); + + scratch = screened_rates(k_He4_Mg24_to_Si28)*Y(He4)*state.rho; + jac.set(Si28, Mg24, scratch); + + 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_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_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_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_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_derived); + jac.set(P31, S32, scratch); + + scratch = screened_rates(k_p_P31_to_S32)*Y(P31)*state.rho; + jac.set(S32, H1, scratch); + + scratch = screened_rates(k_He4_Si28_to_S32)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + jac.set(S32, He4, scratch); + + scratch = 1.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho; + jac.set(S32, O16, scratch); + + scratch = screened_rates(k_He4_Si28_to_S32)*Y(He4)*state.rho; + jac.set(S32, Si28, scratch); + + 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_derived) - screened_rates(k_S32_to_p_P31_derived); + jac.set(S32, S32, scratch); + + scratch = screened_rates(k_Ar36_to_S32_He4_approx); + jac.set(S32, Ar36, scratch); + + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho + screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + jac.set(Ar36, He4, scratch); + + scratch = screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho; + jac.set(Ar36, S32, scratch); + + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(He4)*state.rho - screened_rates(k_Ar36_to_S32_He4_approx); + jac.set(Ar36, Ar36, scratch); + + scratch = screened_rates(k_Ca40_to_Ar36_He4_approx); + jac.set(Ar36, Ca40, 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; + jac.set(Ca40, He4, scratch); + + scratch = screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(He4)*state.rho; + jac.set(Ca40, Ar36, scratch); + + scratch = -screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(He4)*state.rho - screened_rates(k_Ca40_to_Ar36_He4_approx); + jac.set(Ca40, Ca40, scratch); + + scratch = screened_rates(k_Ti44_to_Ca40_He4_approx); + jac.set(Ca40, Ti44, scratch); + + scratch = screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + jac.set(Ti44, He4, scratch); + + scratch = screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(He4)*state.rho; + jac.set(Ti44, Ca40, scratch); + + scratch = -screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho - screened_rates(k_Ti44_to_Ca40_He4_approx); + jac.set(Ti44, Ti44, scratch); + + scratch = screened_rates(k_Cr48_to_Ti44_He4_approx); + jac.set(Ti44, Cr48, scratch); + + scratch = screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho; + jac.set(Cr48, H1, scratch); + + scratch = -screened_rates(k_He4_Cr48_to_Fe52)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51)*Y(Cr48)*state.rho + screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + jac.set(Cr48, He4, scratch); + + scratch = screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho; + jac.set(Cr48, Ti44, scratch); + + scratch = -screened_rates(k_Cr48_to_Ti44_He4_approx) - screened_rates(k_He4_Cr48_to_Fe52)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51)*Y(He4)*state.rho; + jac.set(Cr48, Cr48, scratch); + + scratch = screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + jac.set(Cr48, Mn51, scratch); + + scratch = screened_rates(k_Fe52_to_He4_Cr48_derived); + jac.set(Cr48, Fe52, scratch); + + scratch = screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_p_Mn51_to_Fe52)*Y(Mn51)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho; + jac.set(Mn51, H1, scratch); + + scratch = screened_rates(k_He4_Cr48_to_p_Mn51)*Y(Cr48)*state.rho - screened_rates(k_He4_Mn51_to_Co55)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54)*Y(Mn51)*state.rho; + jac.set(Mn51, He4, scratch); + + scratch = screened_rates(k_He4_Cr48_to_p_Mn51)*Y(He4)*state.rho; + jac.set(Mn51, Cr48, scratch); + + scratch = -screened_rates(k_He4_Mn51_to_Co55)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54)*Y(He4)*state.rho - screened_rates(k_p_Mn51_to_Fe52)*Y(H1)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + jac.set(Mn51, Mn51, scratch); + + scratch = screened_rates(k_Fe52_to_p_Mn51_derived); + jac.set(Mn51, Fe52, scratch); + + scratch = screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + jac.set(Mn51, Fe54, scratch); + + scratch = screened_rates(k_Co55_to_He4_Mn51_derived); + jac.set(Mn51, Co55, scratch); + + scratch = -2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho); + jac.set(Fe52, N, scratch); + + scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_p_Mn51_to_Fe52)*Y(Mn51)*state.rho; + jac.set(Fe52, H1, scratch); + + scratch = screened_rates(k_He4_Cr48_to_Fe52)*Y(Cr48)*state.rho - screened_rates(k_He4_Fe52_to_Ni56)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55)*Y(Fe52)*state.rho; + jac.set(Fe52, He4, scratch); + + scratch = screened_rates(k_He4_Cr48_to_Fe52)*Y(He4)*state.rho; + jac.set(Fe52, Cr48, scratch); + + scratch = screened_rates(k_p_Mn51_to_Fe52)*Y(H1)*state.rho; + jac.set(Fe52, Mn51, scratch); + + scratch = -screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_Fe52_to_p_Mn51_derived) - screened_rates(k_He4_Fe52_to_Ni56)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55)*Y(He4)*state.rho; + jac.set(Fe52, Fe52, scratch); + + scratch = screened_rates(k_Fe54_to_Fe52_n_n_approx); + jac.set(Fe52, Fe54, scratch); + + scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho; + jac.set(Fe52, Co55, scratch); + + scratch = screened_rates(k_Ni56_to_He4_Fe52_derived); + jac.set(Fe52, Ni56, scratch); + + scratch = 2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho); + jac.set(Fe54, N, scratch); + + scratch = screened_rates(k_p_Co57_to_He4_Fe54)*Y(Co57)*state.rho - screened_rates(k_p_Fe54_to_Co55)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho; + jac.set(Fe54, H1, scratch); + + scratch = -screened_rates(k_He4_Fe54_to_Ni58)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Mn51_to_p_Fe54)*Y(Mn51)*state.rho; + jac.set(Fe54, He4, scratch); + + scratch = screened_rates(k_He4_Mn51_to_p_Fe54)*Y(He4)*state.rho; + jac.set(Fe54, Mn51, scratch); + + scratch = screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + jac.set(Fe54, Fe52, scratch); + + scratch = -screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe54_to_Fe52_n_n_approx) - screened_rates(k_He4_Fe54_to_Ni58)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_p_Fe54_to_Co55)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + jac.set(Fe54, Fe54, scratch); + + scratch = screened_rates(k_Fe56_to_Fe54_n_n_approx); + jac.set(Fe54, Fe56, scratch); + + scratch = screened_rates(k_Co55_to_p_Fe54_derived); + jac.set(Fe54, Co55, scratch); + + scratch = screened_rates(k_p_Co57_to_He4_Fe54)*Y(H1)*state.rho; + jac.set(Fe54, Co57, scratch); + + scratch = screened_rates(k_Ni58_to_He4_Fe54_derived); + jac.set(Fe54, Ni58, scratch); + + scratch = 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) + screened_rates(k_n_Co56_to_p_Fe56)*Y(Co56)*state.rho; + jac.set(Fe56, N, scratch); + + scratch = -screened_rates(k_p_Fe56_to_Co57)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho; + jac.set(Fe56, H1, scratch); + + scratch = screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + jac.set(Fe56, Fe54, scratch); + + scratch = -screened_rates(k_Fe56_to_Co56) - screened_rates(k_Fe56_to_Fe54_n_n_approx) - screened_rates(k_p_Fe56_to_Co57)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + jac.set(Fe56, Fe56, scratch); + + scratch = screened_rates(k_Co56_to_Fe56) + screened_rates(k_n_Co56_to_p_Fe56)*Y(N)*state.rho; + jac.set(Fe56, Co56, scratch); + + scratch = screened_rates(k_Co57_to_p_Fe56_derived); + jac.set(Fe56, Co57, scratch); + + scratch = -screened_rates(k_n_Co55_to_Co56)*Y(Co55)*state.rho; + jac.set(Co55, N, scratch); + + scratch = -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56)*Y(Co55)*state.rho + screened_rates(k_p_Fe54_to_Co55)*Y(Fe54)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + jac.set(Co55, H1, scratch); + + scratch = -screened_rates(k_He4_Co55_to_p_Ni58)*Y(Co55)*state.rho + screened_rates(k_He4_Fe52_to_p_Co55)*Y(Fe52)*state.rho + screened_rates(k_He4_Mn51_to_Co55)*Y(Mn51)*state.rho; + jac.set(Co55, He4, scratch); + + scratch = screened_rates(k_He4_Mn51_to_Co55)*Y(He4)*state.rho; + jac.set(Co55, Mn51, scratch); + + scratch = screened_rates(k_He4_Fe52_to_p_Co55)*Y(He4)*state.rho; + jac.set(Co55, Fe52, scratch); + + scratch = screened_rates(k_p_Fe54_to_Co55)*Y(H1)*state.rho; + jac.set(Co55, Fe54, scratch); + + scratch = -screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_Co55_to_p_Fe54_derived) - screened_rates(k_He4_Co55_to_p_Ni58)*Y(He4)*state.rho - screened_rates(k_n_Co55_to_Co56)*Y(N)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56)*Y(H1)*state.rho; + jac.set(Co55, Co55, scratch); + + scratch = screened_rates(k_Co56_to_n_Co55_derived); + jac.set(Co55, Co56, scratch); + + scratch = screened_rates(k_Ni56_to_p_Co55_derived); + jac.set(Co55, Ni56, scratch); + + scratch = screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + jac.set(Co55, Ni58, scratch); + + scratch = screened_rates(k_n_Co55_to_Co56)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_Fe56)*Y(Co56)*state.rho + screened_rates(k_n_Ni56_to_p_Co56)*Y(Ni56)*state.rho; + jac.set(Co56, N, scratch); + + scratch = -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho; + jac.set(Co56, H1, scratch); + + scratch = screened_rates(k_Fe56_to_Co56) + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + jac.set(Co56, Fe56, scratch); + + scratch = screened_rates(k_n_Co55_to_Co56)*Y(N)*state.rho; + jac.set(Co56, Co55, scratch); + + scratch = -screened_rates(k_Co56_to_Fe56) - screened_rates(k_Co56_to_Ni56) - screened_rates(k_Co56_to_n_Co55_derived) - screened_rates(k_n_Co56_to_Co57)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_Fe56)*Y(N)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + jac.set(Co56, Co56, scratch); + + scratch = screened_rates(k_Co57_to_n_Co56_derived); + jac.set(Co56, Co57, scratch); + + scratch = screened_rates(k_Ni56_to_Co56) + screened_rates(k_n_Ni56_to_p_Co56)*Y(N)*state.rho; + jac.set(Co56, Ni56, scratch); + + scratch = screened_rates(k_n_Co56_to_Co57)*Y(Co56)*state.rho; + jac.set(Co57, N, scratch); + + scratch = -screened_rates(k_p_Co57_to_He4_Fe54)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_Ni58)*Y(Co57)*state.rho + screened_rates(k_p_Fe56_to_Co57)*Y(Fe56)*state.rho; + jac.set(Co57, H1, scratch); + + scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho; + jac.set(Co57, He4, scratch); + + scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho; + jac.set(Co57, Fe54, scratch); + + scratch = screened_rates(k_p_Fe56_to_Co57)*Y(H1)*state.rho; + jac.set(Co57, Fe56, scratch); + + scratch = screened_rates(k_n_Co56_to_Co57)*Y(N)*state.rho; + jac.set(Co57, Co56, scratch); + + scratch = -screened_rates(k_Co57_to_n_Co56_derived) - screened_rates(k_Co57_to_p_Fe56_derived) - screened_rates(k_p_Co57_to_He4_Fe54)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_Ni58)*Y(H1)*state.rho; + jac.set(Co57, Co57, scratch); + + scratch = screened_rates(k_Ni58_to_p_Co57_derived); + jac.set(Co57, Ni58, scratch); + + scratch = -2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Ni56_to_p_Co56)*Y(Ni56)*state.rho; + jac.set(Ni56, N, scratch); + + scratch = screened_rates(k_p_Co55_to_Ni56)*Y(Co55)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho; + jac.set(Ni56, H1, scratch); + + scratch = screened_rates(k_He4_Fe52_to_Ni56)*Y(Fe52)*state.rho; + jac.set(Ni56, He4, scratch); + + scratch = screened_rates(k_He4_Fe52_to_Ni56)*Y(He4)*state.rho; + jac.set(Ni56, Fe52, scratch); + + scratch = screened_rates(k_p_Co55_to_Ni56)*Y(H1)*state.rho; + jac.set(Ni56, Co55, scratch); + + scratch = screened_rates(k_Co56_to_Ni56) + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + jac.set(Ni56, Co56, scratch); + + scratch = -screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_to_Co56) - screened_rates(k_Ni56_to_He4_Fe52_derived) - screened_rates(k_Ni56_to_p_Co55_derived) - screened_rates(k_n_Ni56_to_p_Co56)*Y(N)*state.rho; + jac.set(Ni56, Ni56, scratch); + + scratch = screened_rates(k_Ni58_to_Ni56_n_n_approx); + jac.set(Ni56, Ni58, scratch); + + scratch = 2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho); + jac.set(Ni58, N, scratch); + + scratch = screened_rates(k_p_Co57_to_Ni58)*Y(Co57)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + jac.set(Ni58, H1, scratch); + + scratch = screened_rates(k_He4_Co55_to_p_Ni58)*Y(Co55)*state.rho + screened_rates(k_He4_Fe54_to_Ni58)*Y(Fe54)*state.rho; + jac.set(Ni58, He4, scratch); + + scratch = screened_rates(k_He4_Fe54_to_Ni58)*Y(He4)*state.rho; + jac.set(Ni58, Fe54, scratch); + + scratch = screened_rates(k_He4_Co55_to_p_Ni58)*Y(He4)*state.rho; + jac.set(Ni58, Co55, scratch); + + scratch = screened_rates(k_p_Co57_to_Ni58)*Y(H1)*state.rho; + jac.set(Ni58, Co57, scratch); + + scratch = screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + jac.set(Ni58, Ni56, scratch); + + scratch = -screened_rates(k_Ni58_to_He4_Fe54_derived) - screened_rates(k_Ni58_to_Ni56_n_n_approx) - screened_rates(k_Ni58_to_p_Co57_derived) - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + jac.set(Ni58, Ni58, scratch); + + +} + + + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void actual_jac(const burn_t& state, MatrixType& jac) +{ + + // Set molar abundances + amrex::Array1D Y; + for (int i = 1; i <= NumSpec; ++i) { + Y(i) = state.xn[i-1] * aion_inv[i-1]; + } + + + jac.zero(); + + rate_derivs_t rate_eval; + + constexpr int do_T_derivatives = 1; + + evaluate_rates(state, rate_eval); + + // Species Jacobian elements with respect to other species + + jac_nuc(state, jac, Y, rate_eval.screened_rates); + + // Energy generation rate Jacobian elements with respect to species + + for (int j = 1; j <= NumSpec; ++j) { + auto jac_slice_2 = [&](int i) -> amrex::Real { return jac.get(i, j); }; + ener_gener_rate(jac_slice_2, jac(net_ienuc,j)); + } + + // Account for the thermal neutrino losses + + amrex::Real sneut, dsneutdt, dsneutdd, dsnuda, dsnudz; + constexpr int do_derivatives{1}; + sneut5(state.T, state.rho, state.abar, state.zbar, sneut, dsneutdt, dsneutdd, dsnuda, dsnudz); + + for (int j = 1; j <= NumSpec; ++j) { + amrex::Real b1 = (-state.abar * state.abar * dsnuda + (zion[j-1] - state.zbar) * state.abar * dsnudz); + jac.add(net_ienuc, j, -b1); + } + + + // Evaluate the Jacobian elements with respect to energy by + // calling the RHS using d(rate) / dT and then transform them + // to our energy integration variable. + + amrex::Array1D yderivs; + + rhs_nuc(state, yderivs, Y, rate_eval.dscreened_rates_dT); + + for (int k = 1; k <= NumSpec; k++) { + jac.set(k, net_ienuc, temperature_to_energy_jacobian(state, yderivs(k))); + } + + + // finally, d(de/dt)/de + + amrex::Real jac_e_T; + ener_gener_rate(yderivs, jac_e_T); + jac_e_T -= dsneutdt; + jac.set(net_ienuc, net_ienuc, temperature_to_energy_jacobian(state, jac_e_T)); + +} + + +AMREX_INLINE +void actual_rhs_init () { + + init_tabular(); + +} + + +#endif diff --git a/networks/He-C-Fe-group-simple/he-simple.py b/networks/He-C-Fe-group-simple/he-simple.py new file mode 100644 index 000000000..3d02bd09f --- /dev/null +++ b/networks/He-C-Fe-group-simple/he-simple.py @@ -0,0 +1,123 @@ +import pynucastro as pyna +from pynucastro.rates import ReacLibRate, TabularRate + +DO_DERIVED_RATES = True + +reaclib_lib = pyna.ReacLibLibrary() +weak_lib = pyna.TabularLibrary() + +# these are the nuclei we have in subch_simple +all_reactants = ["p", + "he4", "c12", "o16", "ne20", "mg24", "si28", "s32", + "ar36", "ca40", "ti44", "cr48", "fe52", "ni56", + "al27", "p31", "cl35", "k39", "sc43", "v47", "mn51", "co55", + "n13", "n14", "f18", "ne21", "na22", "na23"] + +# create a library of ReacLib rates +core_lib = reaclib_lib.linking_nuclei(all_reactants) + +# in this list, we have the reactants, the actual reactants, +# and modified products that we will use instead + +other_rates = [("c12(c12,n)mg23", "mg24"), + ("o16(o16,n)s31", "s32"), + ("o16(c12,n)si27", "si28")] + +for r, mp in other_rates: + _r = reaclib_lib.get_rate_by_name(r) + _r.modify_products(mp) + core_lib.add_rate(_r) + +# finally, the aprox nets don't include the reverse rates for +# C12+C12, C12+O16, and O16+O16, so remove those + +for r in core_lib.get_rates(): + if sorted(r.products) in [[pyna.Nucleus("c12"), pyna.Nucleus("c12")], + [pyna.Nucleus("c12"), pyna.Nucleus("o16")], + [pyna.Nucleus("o16"), pyna.Nucleus("o16")]]: + core_lib.remove_rate(r) + +# C12+Ne20 and reverse +# (a,g) links between Na23 and Al27 +# (a,g) links between Al27 and P31 + +rates_to_remove = ["p31(p,c12)ne20", + "si28(a,c12)ne20", + "ne20(c12,p)p31", + "ne20(c12,a)si28", + "na23(a,g)al27", + "al27(g,a)na23", + "al27(a,g)p31", + "p31(g,a)al27"] + +for r in rates_to_remove: + print("removing: ", r) + _r = core_lib.get_rate_by_name(r) + core_lib.remove_rate(_r) + +# now create a list of iron group nuclei and find both the +# ReacLib and weak / tabular rates linking these. + +iron_peak = ["n", "p", "he4", + "mn51", + "fe52", "fe53", "fe54", "fe55", "fe56", + "co55", "co56", "co57", + "ni56", "ni57", "ni58"] + +iron_reaclib = reaclib_lib.linking_nuclei(iron_peak) +iron_weak_lib = weak_lib.linking_nuclei(iron_peak) + +# add the libraries + +all_lib = core_lib + iron_reaclib + iron_weak_lib + +if DO_DERIVED_RATES: + rates_to_derive = [] + for r in all_lib.get_rates(): + if r.reverse: + # this rate was computed using detailed balance, regardless + # of whether Q < 0 or not. We want to remove it and then + # recompute it + rates_to_derive.append(r) + + # now for each of those derived rates, look to see if the pair exists + + for r in rates_to_derive: + fr = all_lib.get_rate_by_nuclei(r.products, r.reactants) + if fr: + print(f"modifying {r} from {fr}") + all_lib.remove_rate(r) + d = pyna.DerivedRate(rate=fr, compute_Q=False, use_pf=True) + all_lib.add_rate(d) + +# we will have duplicate rates -- we want to remove any ReacLib rates +# that we have tabular rates for + +dupes = all_lib.find_duplicate_links() + +rates_to_remove = [] +for d in dupes: + for r in d: + if isinstance(r, ReacLibRate): + rates_to_remove.append(r) + +for r in rates_to_remove: + all_lib.remove_rate(r) + +# combine all three libraries into a single network + +net = pyna.AmrexAstroCxxNetwork(libraries=[all_lib], + symmetric_screening=False) + +# now we approximate some (alpha, p)(p, gamma) links + +net.make_ap_pg_approx(intermediate_nuclei=["cl35", "k39", "sc43", "v47"]) +net.remove_nuclei(["cl35", "k39", "sc43", "v47"]) + +net.make_nn_g_approx(intermediate_nuclei=["fe53", "fe55", "ni57"]) +net.remove_nuclei(["fe53", "fe55", "ni57"]) + +fig = net.plot(rotated=True, curved_edges=True, size=(1500, 800), hide_xalpha=True, node_size=400, node_font_size=9) +fig.savefig("newnet.png") + +net.write_network() diff --git a/networks/He-C-Fe-group-simple/inputs.burn_cell.VODE b/networks/He-C-Fe-group-simple/inputs.burn_cell.VODE new file mode 100644 index 000000000..98dc0cc86 --- /dev/null +++ b/networks/He-C-Fe-group-simple/inputs.burn_cell.VODE @@ -0,0 +1,56 @@ +unit_test.run_prefix = "react_pynucastro_" + +unit_test.small_temp = 1e5 +unit_test.small_dens = 1e5 + +integrator.burner_verbose = 0 + +# Set which jacobian to use +# 1 = analytic jacobian +# 2 = numerical jacobian +integrator.jacobian = 1 + +integrator.renormalize_abundances = 0 + +integrator.rtol_spec = 1.0e-6 +integrator.rtol_enuc = 1.0e-6 +integrator.atol_spec = 1.0e-6 +integrator.atol_enuc = 1.0e-6 + + +unit_test.tmax = 1.0 +unit_test.nsteps = 1000 + +unit_test.density = 1.0e7 +unit_test.temperature = 1.0e8 + +unit_test.X1 = 1.0 +unit_test.X2 = 0.0 +unit_test.X3 = 0.0 +unit_test.X4 = 0.0 +unit_test.X5 = 0.0 +unit_test.X6 = 0.0 +unit_test.X7 = 0.0 +unit_test.X8 = 0.0 +unit_test.X9 = 0.0 +unit_test.X10 = 0.0 +unit_test.X11 = 0.0 +unit_test.X12 = 0.0 +unit_test.X13 = 0.0 +unit_test.X14 = 0.0 +unit_test.X15 = 0.0 +unit_test.X16 = 0.0 +unit_test.X17 = 0.0 +unit_test.X18 = 0.0 +unit_test.X19 = 0.0 +unit_test.X20 = 0.0 +unit_test.X21 = 0.0 +unit_test.X22 = 0.0 +unit_test.X23 = 0.0 +unit_test.X24 = 0.0 +unit_test.X25 = 0.0 +unit_test.X26 = 0.0 +unit_test.X27 = 0.0 +unit_test.X28 = 0.0 +unit_test.X29 = 0.0 +unit_test.X30 = 0.0 diff --git a/networks/He-C-Fe-group-simple/n-p_betadecay.dat b/networks/He-C-Fe-group-simple/n-p_betadecay.dat new file mode 100644 index 000000000..31ddea3b8 --- /dev/null +++ b/networks/He-C-Fe-group-simple/n-p_betadecay.dat @@ -0,0 +1,148 @@ +!n -> p, beta-decay +!Q=-1.2933 MeV +! +!Log(rhoY) Log(temp) mu dQ VS Log(beta-decay-rate) Log(nu-energy-loss) Log(gamma-energy) +!Log(g/cm^3) Log(K) erg erg erg Log(1/s) Log(erg/s) Log(erg/s) +1.000000 7.000000 -4.806530e-09 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +1.000000 8.000000 -9.292624e-08 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +1.000000 8.301030 -2.146917e-07 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +1.000000 8.602060 -4.902661e-07 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +1.000000 8.845098 -8.058948e-07 0.00 0.00 -2.958959 -9.072290e+00 -100.00 +1.000000 9.000000 -8.187123e-07 0.00 0.00 -2.957841 -9.067290e+00 -100.00 +1.000000 9.176091 -8.187123e-07 0.00 0.00 -2.941107 -8.997290e+00 -100.00 +1.000000 9.301030 -8.187123e-07 0.00 0.00 -2.874417 -8.765290e+00 -100.00 +1.000000 9.477121 -8.187123e-07 0.00 0.00 -2.540055 -8.086290e+00 -100.00 +1.000000 9.698970 -8.187123e-07 0.00 0.00 -1.720786 -7.027290e+00 -100.00 +1.000000 10.000000 -8.187123e-07 0.00 0.00 -0.414110 -5.490290e+00 -100.00 +1.000000 10.477121 -8.187123e-07 0.00 0.00 1.802004 -2.852290e+00 -100.00 +1.000000 11.000000 -8.187123e-07 0.00 0.00 4.347000 1.987104e-01 -100.00 +2.000000 7.000000 -1.602177e-09 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +2.000000 8.000000 -6.088271e-08 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +2.000000 8.301030 -1.522068e-07 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +2.000000 8.602060 -3.636941e-07 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +2.000000 8.845098 -7.145708e-07 0.00 0.00 -2.958984 -9.072290e+00 -100.00 +2.000000 9.000000 -8.107014e-07 0.00 0.00 -2.957898 -9.067290e+00 -100.00 +2.000000 9.176091 -8.187123e-07 0.00 0.00 -2.941192 -8.997290e+00 -100.00 +2.000000 9.301030 -8.187123e-07 0.00 0.00 -2.874417 -8.765290e+00 -100.00 +2.000000 9.477121 -8.187123e-07 0.00 0.00 -2.540055 -8.086290e+00 -100.00 +2.000000 9.698970 -8.187123e-07 0.00 0.00 -1.720786 -7.027290e+00 -100.00 +2.000000 10.000000 -8.187123e-07 0.00 0.00 -0.414110 -5.490290e+00 -100.00 +2.000000 10.477121 -8.187123e-07 0.00 0.00 1.802004 -2.852290e+00 -100.00 +2.000000 11.000000 -8.187123e-07 0.00 0.00 4.347000 1.987104e-01 -100.00 +3.000000 7.000000 3.204353e-09 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +3.000000 8.000000 -2.883918e-08 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +3.000000 8.301030 -8.811971e-08 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +3.000000 8.602060 -2.355200e-07 0.00 0.00 -2.959000 -9.072290e+00 -100.00 +3.000000 8.845098 -5.030835e-07 0.00 0.00 -2.958998 -9.072290e+00 -100.00 +3.000000 9.000000 -7.450121e-07 0.00 0.00 -2.958314 -9.069290e+00 -100.00 +3.000000 9.176091 -8.107014e-07 0.00 0.00 -2.941776 -9.000290e+00 -100.00 +3.000000 9.301030 -8.171101e-07 0.00 0.00 -2.874975 -8.767290e+00 -100.00 +3.000000 9.477121 -8.187123e-07 0.00 0.00 -2.540055 -8.087290e+00 -100.00 +3.000000 9.698970 -8.187123e-07 0.00 0.00 -1.721736 -7.027290e+00 -100.00 +3.000000 10.000000 -8.187123e-07 0.00 0.00 -0.414110 -5.490290e+00 -100.00 +3.000000 10.477121 -8.187123e-07 0.00 0.00 1.802004 -2.852290e+00 -100.00 +3.000000 11.000000 -8.187123e-07 0.00 0.00 4.347000 1.987104e-01 -100.00 +4.000000 7.000000 1.922612e-08 0.00 0.00 -2.961000 -9.076290e+00 -100.00 +4.000000 8.000000 8.010883e-09 0.00 0.00 -2.961000 -9.075290e+00 -100.00 +4.000000 8.301030 -2.082830e-08 0.00 0.00 -2.961000 -9.075290e+00 -100.00 +4.000000 8.602060 -1.073458e-07 0.00 0.00 -2.961000 -9.075290e+00 -100.00 +4.000000 8.845098 -2.787787e-07 0.00 0.00 -2.960000 -9.074290e+00 -100.00 +4.000000 9.000000 -4.838573e-07 0.00 0.00 -2.959896 -9.073290e+00 -100.00 +4.000000 9.176091 -7.434100e-07 0.00 0.00 -2.947722 -9.020290e+00 -100.00 +4.000000 9.301030 -7.962818e-07 0.00 0.00 -2.881381 -8.783290e+00 -100.00 +4.000000 9.477121 -8.123036e-07 0.00 0.00 -2.544233 -8.091290e+00 -100.00 +4.000000 9.698970 -8.171101e-07 0.00 0.00 -1.721736 -7.028290e+00 -100.00 +4.000000 10.000000 -8.187123e-07 0.00 0.00 -0.414110 -5.491290e+00 -100.00 +4.000000 10.477121 -8.187123e-07 0.00 0.00 1.802004 -2.852290e+00 -100.00 +4.000000 11.000000 -8.187123e-07 0.00 0.00 4.347000 1.987104e-01 -100.00 +5.000000 7.000000 8.491536e-08 0.00 0.00 -2.980000 -9.105290e+00 -100.00 +5.000000 8.000000 8.331318e-08 0.00 0.00 -2.979000 -9.104290e+00 -100.00 +5.000000 8.301030 7.530230e-08 0.00 0.00 -2.979000 -9.103290e+00 -100.00 +5.000000 8.602060 4.165659e-08 0.00 0.00 -2.978000 -9.100290e+00 -100.00 +5.000000 8.845098 -4.165659e-08 0.00 0.00 -2.975000 -9.096290e+00 -100.00 +5.000000 9.000000 -1.570133e-07 0.00 0.00 -2.972990 -9.092290e+00 -100.00 +5.000000 9.176091 -3.941355e-07 0.00 0.00 -2.967462 -9.076290e+00 -100.00 +5.000000 9.301030 -6.136337e-07 0.00 0.00 -2.925218 -8.906290e+00 -100.00 +5.000000 9.477121 -7.626361e-07 0.00 0.00 -2.577269 -8.139290e+00 -100.00 +5.000000 9.698970 -8.042927e-07 0.00 0.00 -1.729383 -7.036290e+00 -100.00 +5.000000 10.000000 -8.155079e-07 0.00 0.00 -0.415108 -5.491290e+00 -100.00 +5.000000 10.477121 -8.187123e-07 0.00 0.00 1.802004 -2.852290e+00 -100.00 +5.000000 11.000000 -8.187123e-07 0.00 0.00 4.347000 1.987104e-01 -100.00 +6.000000 7.000000 3.444680e-07 0.00 0.00 -3.140000 -9.345290e+00 -100.00 +6.000000 8.000000 3.428658e-07 0.00 0.00 -3.140000 -9.343290e+00 -100.00 +6.000000 8.301030 3.412636e-07 0.00 0.00 -3.138000 -9.340290e+00 -100.00 +6.000000 8.602060 3.316506e-07 0.00 0.00 -3.131000 -9.325290e+00 -100.00 +6.000000 8.845098 3.028114e-07 0.00 0.00 -3.116000 -9.295290e+00 -100.00 +6.000000 9.000000 2.579504e-07 0.00 0.00 -3.097999 -9.262290e+00 -100.00 +6.000000 9.176091 1.490024e-07 0.00 0.00 -3.069766 -9.215290e+00 -100.00 +6.000000 9.301030 1.602177e-09 0.00 0.00 -3.041782 -9.153290e+00 -100.00 +6.000000 9.477121 -3.396614e-07 0.00 0.00 -2.813017 -8.512290e+00 -100.00 +6.000000 9.698970 -6.729142e-07 0.00 0.00 -1.806664 -7.116290e+00 -100.00 +6.000000 10.000000 -7.866687e-07 0.00 0.00 -0.423096 -5.500290e+00 -100.00 +6.000000 10.477121 -8.155079e-07 0.00 0.00 1.801004 -2.852290e+00 -100.00 +6.000000 11.000000 -8.187123e-07 0.00 0.00 4.347000 1.987104e-01 -100.00 +7.000000 7.000000 1.140750e-06 0.00 0.00 -5.499000 -1.257129e+01 -100.00 +7.000000 8.000000 1.139148e-06 0.00 0.00 -5.442000 -1.246129e+01 -100.00 +7.000000 8.301030 1.139148e-06 0.00 0.00 -5.306000 -1.221829e+01 -100.00 +7.000000 8.602060 1.134341e-06 0.00 0.00 -4.989000 -1.170729e+01 -100.00 +7.000000 8.845098 1.123126e-06 0.00 0.00 -4.592000 -1.112229e+01 -100.00 +7.000000 9.000000 1.103900e-06 0.00 0.00 -4.297000 -1.071129e+01 -100.00 +7.000000 9.176091 1.060641e-06 0.00 0.00 -3.954978 -1.025629e+01 -100.00 +7.000000 9.301030 9.965539e-07 0.00 0.00 -3.726186 -9.962290e+00 -100.00 +7.000000 9.477121 8.171101e-07 0.00 0.00 -3.408689 -9.420290e+00 -100.00 +7.000000 9.698970 2.996070e-07 0.00 0.00 -2.366458 -7.714290e+00 -100.00 +7.000000 10.000000 -5.046856e-07 0.00 0.00 -0.508967 -5.587290e+00 -100.00 +7.000000 10.477121 -7.850666e-07 0.00 0.00 1.798004 -2.855290e+00 -100.00 +7.000000 11.000000 -8.155079e-07 0.00 0.00 4.347000 1.987104e-01 -100.00 +8.000000 7.000000 3.101814e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +8.000000 8.000000 3.101814e-06 0.00 0.00 -65.570000 -7.295929e+01 -100.00 +8.000000 8.301030 3.100212e-06 0.00 0.00 -35.616000 -4.271029e+01 -100.00 +8.000000 8.602060 3.098610e-06 0.00 0.00 -20.209000 -2.701829e+01 -100.00 +8.000000 8.845098 3.093803e-06 0.00 0.00 -13.299000 -1.988929e+01 -100.00 +8.000000 9.000000 3.085792e-06 0.00 0.00 -10.394000 -1.685929e+01 -100.00 +8.000000 9.176091 3.064964e-06 0.00 0.00 -8.019984 -1.436829e+01 -100.00 +8.000000 9.301030 3.036125e-06 0.00 0.00 -6.772438 -1.305429e+01 -100.00 +8.000000 9.477121 2.954414e-06 0.00 0.00 -5.436532 -1.153729e+01 -100.00 +8.000000 9.698970 2.693259e-06 0.00 0.00 -3.791028 -9.205290e+00 -100.00 +8.000000 10.000000 1.573337e-06 0.00 0.00 -1.150873 -6.234290e+00 -100.00 +8.000000 10.477121 -4.838573e-07 0.00 0.00 1.768005 -2.886290e+00 -100.00 +8.000000 11.000000 -7.882709e-07 0.00 0.00 4.346000 1.977104e-01 -100.00 +9.000000 7.000000 7.480563e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +9.000000 8.000000 7.480563e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +9.000000 8.301030 7.480563e-06 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +9.000000 8.602060 7.480563e-06 0.00 0.00 -54.663000 -6.147129e+01 -100.00 +9.000000 8.845098 7.477358e-06 0.00 0.00 -33.000000 -3.959029e+01 -100.00 +9.000000 9.000000 7.474154e-06 0.00 0.00 -24.198000 -3.066429e+01 -100.00 +9.000000 9.176091 7.464541e-06 0.00 0.00 -17.245984 -2.359429e+01 -100.00 +9.000000 9.301030 7.450121e-06 0.00 0.00 -13.715440 -1.999829e+01 -100.00 +9.000000 9.477121 7.413271e-06 0.00 0.00 -10.109646 -1.621129e+01 -100.00 +9.000000 9.698970 7.291506e-06 0.00 0.00 -6.677964 -1.209729e+01 -100.00 +9.000000 10.000000 6.724335e-06 0.00 0.00 -2.765936 -7.852290e+00 -100.00 +9.000000 10.477121 2.340780e-06 0.00 0.00 1.478006 -3.179290e+00 -100.00 +9.000000 11.000000 -5.191052e-07 0.00 0.00 4.338000 1.897104e-01 -100.00 +10.000000 7.000000 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.000000 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.301030 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.602060 1.699429e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +10.000000 8.845098 1.699269e-05 0.00 0.00 -75.759000 -8.234929e+01 -100.00 +10.000000 9.000000 1.699108e-05 0.00 0.00 -54.136000 -6.060229e+01 -100.00 +10.000000 9.176091 1.698628e-05 0.00 0.00 -37.214984 -4.356329e+01 -100.00 +10.000000 9.301030 1.697987e-05 0.00 0.00 -28.703440 -3.498629e+01 -100.00 +10.000000 9.477121 1.696224e-05 0.00 0.00 -20.122703 -2.622429e+01 -100.00 +10.000000 9.698970 1.690617e-05 0.00 0.00 -12.726964 -1.814629e+01 -100.00 +10.000000 10.000000 1.664181e-05 0.00 0.00 -5.885901 -1.097129e+01 -100.00 +10.000000 10.477121 1.386203e-05 0.00 0.00 0.277010 -4.383290e+00 -100.00 +10.000000 11.000000 2.164541e-06 0.00 0.00 4.255000 1.057104e-01 -100.00 +11.000000 7.000000 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.000000 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.301030 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.602060 3.752778e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 8.845098 3.752618e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 9.000000 3.752618e-05 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +11.000000 9.176091 3.752298e-05 0.00 0.00 -80.281984 -8.663029e+01 -100.00 +11.000000 9.301030 3.752137e-05 0.00 0.00 -61.008440 -6.729129e+01 -100.00 +11.000000 9.477121 3.751176e-05 0.00 0.00 -41.669646 -4.777129e+01 -100.00 +11.000000 9.698970 3.748613e-05 0.00 0.00 -25.673964 -3.109329e+01 -100.00 +11.000000 10.000000 3.736436e-05 0.00 0.00 -12.403901 -1.748929e+01 -100.00 +11.000000 10.477121 3.605538e-05 0.00 0.00 -2.049990 -6.710290e+00 -100.00 +11.000000 11.000000 2.244810e-05 0.00 0.00 3.625000 -5.272896e-01 -100.00 diff --git a/networks/He-C-Fe-group-simple/neutron_approximation.ipynb b/networks/He-C-Fe-group-simple/neutron_approximation.ipynb new file mode 100644 index 000000000..f2028a284 --- /dev/null +++ b/networks/He-C-Fe-group-simple/neutron_approximation.ipynb @@ -0,0 +1,581 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "da1e5c34-0fcf-44da-9ae0-ec48f148c88a", + "metadata": {}, + "outputs": [], + "source": [ + "import pynucastro as pyna\n", + "from pynucastro.rates import ReacLibRate, TabularRate" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "847816d9-f880-43e5-966a-4e20bcf803e2", + "metadata": {}, + "outputs": [], + "source": [ + "DO_DERIVED_RATES = True" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ee9f4d6a-b817-475c-ba36-ca6a09f75582", + "metadata": {}, + "outputs": [], + "source": [ + "reaclib_lib = pyna.ReacLibLibrary()\n", + "weak_lib = pyna.TabularLibrary()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "32a423ae-1c45-48f9-8890-886e7947eff2", + "metadata": {}, + "outputs": [], + "source": [ + "# these are the nuclei we have in subch_simple\n", + "all_reactants = [\"p\",\n", + " \"he4\", \"c12\", \"o16\", \"ne20\", \"mg24\", \"si28\", \"s32\",\n", + " \"ar36\", \"ca40\", \"ti44\", \"cr48\", \"fe52\", \"ni56\",\n", + " \"al27\", \"p31\", \"cl35\", \"k39\", \"sc43\", \"v47\", \"mn51\", \"co55\",\n", + " \"n13\", \"n14\", \"f18\", \"ne21\", \"na22\", \"na23\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d338da52-327c-4ab1-ab6b-40da8430ac6d", + "metadata": {}, + "outputs": [], + "source": [ + "# create a library of ReacLib rates\n", + "core_lib = reaclib_lib.linking_nuclei(all_reactants)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "097e87ee-561b-4737-8a71-36989ba312b4", + "metadata": {}, + "outputs": [], + "source": [ + "# in this list, we have the reactants, the actual reactants,\n", + "# and modified products that we will use instead\n", + "\n", + "other_rates = [(\"c12(c12,n)mg23\", \"mg24\"),\n", + " (\"o16(o16,n)s31\", \"s32\"),\n", + " (\"o16(c12,n)si27\", \"si28\")]\n", + "\n", + "for r, mp in other_rates:\n", + " _r = reaclib_lib.get_rate_by_name(r)\n", + " _r.modify_products(mp)\n", + " core_lib.add_rate(_r)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f062fc6c-1e9f-486f-a4f1-535ada0f2a57", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "removing: p31(p,c12)ne20\n", + "removing: si28(a,c12)ne20\n", + "removing: ne20(c12,p)p31\n", + "removing: ne20(c12,a)si28\n", + "removing: na23(a,g)al27\n", + "removing: al27(g,a)na23\n", + "removing: al27(a,g)p31\n", + "removing: p31(g,a)al27\n" + ] + } + ], + "source": [ + "# finally, the aprox nets don't include the reverse rates for\n", + "# C12+C12, C12+O16, and O16+O16, so remove those\n", + "\n", + "for r in core_lib.get_rates():\n", + " if sorted(r.products) in [[pyna.Nucleus(\"c12\"), pyna.Nucleus(\"c12\")],\n", + " [pyna.Nucleus(\"c12\"), pyna.Nucleus(\"o16\")],\n", + " [pyna.Nucleus(\"o16\"), pyna.Nucleus(\"o16\")]]:\n", + " core_lib.remove_rate(r)\n", + "\n", + "# C12+Ne20 and reverse\n", + "# (a,g) links between Na23 and Al27\n", + "# (a,g) links between Al27 and P31\n", + "\n", + "rates_to_remove = [\"p31(p,c12)ne20\",\n", + " \"si28(a,c12)ne20\",\n", + " \"ne20(c12,p)p31\",\n", + " \"ne20(c12,a)si28\",\n", + " \"na23(a,g)al27\",\n", + " \"al27(g,a)na23\",\n", + " \"al27(a,g)p31\",\n", + " \"p31(g,a)al27\"]\n", + "\n", + "for r in rates_to_remove:\n", + " print(\"removing: \", r)\n", + " _r = core_lib.get_rate_by_name(r)\n", + " core_lib.remove_rate(_r)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "bd6eb4e1-e7a4-45c5-bde6-0a03f3111493", + "metadata": {}, + "outputs": [], + "source": [ + "# now create a list of iron group nuclei and find both the\n", + "# ReacLib and weak / tabular rates linking these.\n", + "\n", + "iron_peak = [\"n\", \"p\", \"he4\",\n", + " \"mn51\",\n", + " \"fe52\", \"fe53\", \"fe54\", \"fe55\", \"fe56\",\n", + " \"co55\", \"co56\", \"co57\",\n", + " \"ni56\", \"ni57\", \"ni58\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "034305b2-b488-4cde-8209-c9baca639b49", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "warning: He4 was not able to be linked\n", + "warning: Fe53 was not able to be linked\n", + "warning: Mn51 was not able to be linked\n", + "warning: Ni58 was not able to be linked\n", + "warning: Fe52 was not able to be linked\n", + "warning: Fe54 was not able to be linked\n" + ] + } + ], + "source": [ + "iron_reaclib = reaclib_lib.linking_nuclei(iron_peak)\n", + "iron_weak_lib = weak_lib.linking_nuclei(iron_peak)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "b58b6146-5422-4e4f-8634-07329ff0915f", + "metadata": {}, + "outputs": [], + "source": [ + "# add the libraries\n", + "\n", + "all_lib = core_lib + iron_reaclib + iron_weak_lib" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "803d0390-5c03-43b4-80ca-8c5bedd9629a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "modifying N13 ⟶ p + C12 from C12 + p ⟶ N13 + 𝛾\n", + "modifying O16 ⟶ He4 + C12 from C12 + He4 ⟶ O16 + 𝛾\n", + "modifying F18 ⟶ He4 + N14 from N14 + He4 ⟶ F18 + 𝛾\n", + "modifying Ne20 ⟶ He4 + O16 from O16 + He4 ⟶ Ne20 + 𝛾\n", + "modifying Na22 ⟶ p + Ne21 from Ne21 + p ⟶ Na22 + 𝛾\n", + "modifying Na22 ⟶ He4 + F18 from F18 + He4 ⟶ Na22 + 𝛾\n", + "modifying Mg24 ⟶ p + Na23 from Na23 + p ⟶ Mg24 + 𝛾\n", + "modifying Mg24 ⟶ He4 + Ne20 from Ne20 + He4 ⟶ Mg24 + 𝛾\n", + "modifying Si28 ⟶ p + Al27 from Al27 + p ⟶ Si28 + 𝛾\n", + "modifying Si28 ⟶ He4 + Mg24 from Mg24 + He4 ⟶ Si28 + 𝛾\n", + "modifying S32 ⟶ p + P31 from P31 + p ⟶ S32 + 𝛾\n", + "modifying S32 ⟶ He4 + Si28 from Si28 + He4 ⟶ S32 + 𝛾\n", + "modifying Cl35 ⟶ He4 + P31 from P31 + He4 ⟶ Cl35 + 𝛾\n", + "modifying Ar36 ⟶ p + Cl35 from Cl35 + p ⟶ Ar36 + 𝛾\n", + "modifying Ar36 ⟶ He4 + S32 from S32 + He4 ⟶ Ar36 + 𝛾\n", + "modifying K39 ⟶ He4 + Cl35 from Cl35 + He4 ⟶ K39 + 𝛾\n", + "modifying Ca40 ⟶ p + K39 from K39 + p ⟶ Ca40 + 𝛾\n", + "modifying Ca40 ⟶ He4 + Ar36 from Ar36 + He4 ⟶ Ca40 + 𝛾\n", + "modifying Sc43 ⟶ He4 + K39 from K39 + He4 ⟶ Sc43 + 𝛾\n", + "modifying Ti44 ⟶ p + Sc43 from Sc43 + p ⟶ Ti44 + 𝛾\n", + "modifying Ti44 ⟶ He4 + Ca40 from Ca40 + He4 ⟶ Ti44 + 𝛾\n", + "modifying V47 ⟶ He4 + Sc43 from Sc43 + He4 ⟶ V47 + 𝛾\n", + "modifying Cr48 ⟶ p + V47 from V47 + p ⟶ Cr48 + 𝛾\n", + "modifying Cr48 ⟶ He4 + Ti44 from Ti44 + He4 ⟶ Cr48 + 𝛾\n", + "modifying Mn51 ⟶ He4 + V47 from V47 + He4 ⟶ Mn51 + 𝛾\n", + "modifying Fe52 ⟶ p + Mn51 from Mn51 + p ⟶ Fe52 + 𝛾\n", + "modifying Fe52 ⟶ He4 + Cr48 from Cr48 + He4 ⟶ Fe52 + 𝛾\n", + "modifying Co55 ⟶ He4 + Mn51 from Mn51 + He4 ⟶ Co55 + 𝛾\n", + "modifying Ni56 ⟶ p + Co55 from Co55 + p ⟶ Ni56 + 𝛾\n", + "modifying Ni56 ⟶ He4 + Fe52 from Fe52 + He4 ⟶ Ni56 + 𝛾\n", + "modifying C12 ⟶ He4 + He4 + He4 from He4 + He4 + He4 ⟶ C12 + 𝛾\n", + "modifying O16 + p ⟶ He4 + N13 from N13 + He4 ⟶ p + O16\n", + "modifying Ne20 + He4 ⟶ p + Na23 from Na23 + p ⟶ He4 + Ne20\n", + "modifying Ne21 + p ⟶ He4 + F18 from F18 + He4 ⟶ p + Ne21\n", + "modifying Mg24 + He4 ⟶ p + Al27 from Al27 + p ⟶ He4 + Mg24\n", + "modifying Si28 + He4 ⟶ p + P31 from P31 + p ⟶ He4 + Si28\n", + "modifying S32 + He4 ⟶ p + Cl35 from Cl35 + p ⟶ He4 + S32\n", + "modifying Ar36 + He4 ⟶ p + K39 from K39 + p ⟶ He4 + Ar36\n", + "modifying Ca40 + He4 ⟶ p + Sc43 from Sc43 + p ⟶ He4 + Ca40\n", + "modifying V47 + p ⟶ He4 + Ti44 from Ti44 + He4 ⟶ p + V47\n", + "modifying Mn51 + p ⟶ He4 + Cr48 from Cr48 + He4 ⟶ p + Mn51\n", + "modifying Co55 + p ⟶ He4 + Fe52 from Fe52 + He4 ⟶ p + Co55\n", + "modifying Fe53 ⟶ n + Fe52 from Fe52 + n ⟶ Fe53 + 𝛾\n", + "modifying Fe54 ⟶ n + Fe53 from Fe53 + n ⟶ Fe54 + 𝛾\n", + "modifying Fe55 ⟶ n + Fe54 from Fe54 + n ⟶ Fe55 + 𝛾\n", + "modifying Fe56 ⟶ n + Fe55 from Fe55 + n ⟶ Fe56 + 𝛾\n", + "modifying Co55 ⟶ p + Fe54 from Fe54 + p ⟶ Co55 + 𝛾\n", + "modifying Co56 ⟶ n + Co55 from Co55 + n ⟶ Co56 + 𝛾\n", + "modifying Co56 ⟶ p + Fe55 from Fe55 + p ⟶ Co56 + 𝛾\n", + "modifying Co57 ⟶ n + Co56 from Co56 + n ⟶ Co57 + 𝛾\n", + "modifying Co57 ⟶ p + Fe56 from Fe56 + p ⟶ Co57 + 𝛾\n", + "modifying Ni57 ⟶ n + Ni56 from Ni56 + n ⟶ Ni57 + 𝛾\n", + "modifying Ni57 ⟶ p + Co56 from Co56 + p ⟶ Ni57 + 𝛾\n", + "modifying Ni57 ⟶ He4 + Fe53 from Fe53 + He4 ⟶ Ni57 + 𝛾\n", + "modifying Ni58 ⟶ n + Ni57 from Ni57 + n ⟶ Ni58 + 𝛾\n", + "modifying Ni58 ⟶ p + Co57 from Co57 + p ⟶ Ni58 + 𝛾\n", + "modifying Ni58 ⟶ He4 + Fe54 from Fe54 + He4 ⟶ Ni58 + 𝛾\n", + "modifying Fe53 + He4 ⟶ n + Ni56 from Ni56 + n ⟶ He4 + Fe53\n", + "modifying Fe54 + p ⟶ He4 + Mn51 from Mn51 + He4 ⟶ p + Fe54\n", + "modifying Fe54 + He4 ⟶ n + Ni57 from Ni57 + n ⟶ He4 + Fe54\n", + "modifying Fe54 + He4 ⟶ p + Co57 from Co57 + p ⟶ He4 + Fe54\n", + "modifying Fe55 + p ⟶ n + Co55 from Co55 + n ⟶ p + Fe55\n", + "modifying Fe55 + He4 ⟶ n + Ni58 from Ni58 + n ⟶ He4 + Fe55\n", + "modifying Fe56 + p ⟶ n + Co56 from Co56 + n ⟶ p + Fe56\n", + "modifying Co56 + p ⟶ n + Ni56 from Ni56 + n ⟶ p + Co56\n", + "modifying Co56 + p ⟶ He4 + Fe53 from Fe53 + He4 ⟶ p + Co56\n", + "modifying Co57 + p ⟶ n + Ni57 from Ni57 + n ⟶ p + Co57\n", + "modifying Ni58 + p ⟶ He4 + Co55 from Co55 + He4 ⟶ p + Ni58\n" + ] + } + ], + "source": [ + "if DO_DERIVED_RATES:\n", + " rates_to_derive = []\n", + " for r in all_lib.get_rates():\n", + " if r.reverse:\n", + " # this rate was computed using detailed balance, regardless\n", + " # of whether Q < 0 or not. We want to remove it and then\n", + " # recompute it\n", + " rates_to_derive.append(r)\n", + "\n", + " # now for each of those derived rates, look to see if the pair exists\n", + "\n", + " for r in rates_to_derive:\n", + " fr = all_lib.get_rate_by_nuclei(r.products, r.reactants)\n", + " if fr:\n", + " print(f\"modifying {r} from {fr}\")\n", + " all_lib.remove_rate(r)\n", + " d = pyna.DerivedRate(rate=fr, compute_Q=False, use_pf=True)\n", + " all_lib.add_rate(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "c32122ac-a41b-45bc-9312-6ff8c4f0ef0a", + "metadata": {}, + "outputs": [], + "source": [ + "# we will have duplicate rates -- we want to remove any ReacLib rates\n", + "# that we have tabular rates for\n", + "\n", + "dupes = all_lib.find_duplicate_links()\n", + "\n", + "rates_to_remove = []\n", + "for d in dupes:\n", + " for r in d:\n", + " if isinstance(r, ReacLibRate):\n", + " rates_to_remove.append(r)\n", + "\n", + "for r in rates_to_remove:\n", + " all_lib.remove_rate(r)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "17f573de-170b-422f-854e-d4337126f855", + "metadata": {}, + "outputs": [], + "source": [ + "# combine all three libraries into a single network\n", + "\n", + "net = pyna.AmrexAstroCxxNetwork(libraries=[all_lib],\n", + " symmetric_screening=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "0aad0120-6588-4fd2-9786-864e8db9e5cc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "using approximate rate S32 + He4 ⟶ Ar36 + 𝛾\n", + "using approximate rate Ar36 ⟶ S32 + He4\n", + "using approximate rate Ar36 + He4 ⟶ Ca40 + 𝛾\n", + "using approximate rate Ca40 ⟶ Ar36 + He4\n", + "using approximate rate Ca40 + He4 ⟶ Ti44 + 𝛾\n", + "using approximate rate Ti44 ⟶ Ca40 + He4\n", + "using approximate rate Ti44 + He4 ⟶ Cr48 + 𝛾\n", + "using approximate rate Cr48 ⟶ Ti44 + He4\n", + "removing rate S32 + He4 ⟶ Ar36 + 𝛾\n", + "removing rate S32 + He4 ⟶ p + Cl35\n", + "removing rate Cl35 + p ⟶ Ar36 + 𝛾\n", + "removing rate Ar36 ⟶ He4 + S32\n", + "removing rate Ar36 ⟶ p + Cl35\n", + "removing rate Cl35 + p ⟶ He4 + S32\n", + "removing rate Ar36 + He4 ⟶ Ca40 + 𝛾\n", + "removing rate Ar36 + He4 ⟶ p + K39\n", + "removing rate K39 + p ⟶ Ca40 + 𝛾\n", + "removing rate Ca40 ⟶ He4 + Ar36\n", + "removing rate Ca40 ⟶ p + K39\n", + "removing rate K39 + p ⟶ He4 + Ar36\n", + "removing rate Ca40 + He4 ⟶ Ti44 + 𝛾\n", + "removing rate Ca40 + He4 ⟶ p + Sc43\n", + "removing rate Sc43 + p ⟶ Ti44 + 𝛾\n", + "removing rate Ti44 ⟶ He4 + Ca40\n", + "removing rate Ti44 ⟶ p + Sc43\n", + "removing rate Sc43 + p ⟶ He4 + Ca40\n", + "removing rate Ti44 + He4 ⟶ Cr48 + 𝛾\n", + "removing rate Ti44 + He4 ⟶ p + V47\n", + "removing rate V47 + p ⟶ Cr48 + 𝛾\n", + "removing rate Cr48 ⟶ He4 + Ti44\n", + "removing rate Cr48 ⟶ p + V47\n", + "removing rate V47 + p ⟶ He4 + Ti44\n", + "looking to remove P31 + He4 ⟶ Cl35 + 𝛾\n", + "looking to remove Cl35 + He4 ⟶ K39 + 𝛾\n", + "looking to remove Cl35 ⟶ He4 + P31\n", + "looking to remove K39 ⟶ He4 + Cl35\n", + "looking to remove Cl35 + He4 ⟶ K39 + 𝛾\n", + "looking to remove K39 + He4 ⟶ Sc43 + 𝛾\n", + "looking to remove K39 ⟶ He4 + Cl35\n", + "looking to remove Sc43 ⟶ He4 + K39\n", + "looking to remove K39 + He4 ⟶ Sc43 + 𝛾\n", + "looking to remove Sc43 + He4 ⟶ V47 + 𝛾\n", + "looking to remove Sc43 ⟶ He4 + K39\n", + "looking to remove V47 ⟶ He4 + Sc43\n", + "looking to remove Sc43 + He4 ⟶ V47 + 𝛾\n", + "looking to remove V47 + He4 ⟶ Mn51 + 𝛾\n", + "looking to remove V47 ⟶ He4 + Sc43\n", + "looking to remove Mn51 ⟶ He4 + V47\n" + ] + } + ], + "source": [ + "# now we approximate some (alpha, p)(p, gamma) links\n", + "\n", + "net.make_ap_pg_approx(intermediate_nuclei=[\"cl35\", \"k39\", \"sc43\", \"v47\"])\n", + "net.remove_nuclei([\"cl35\", \"k39\", \"sc43\", \"v47\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "147e433a-a0d4-49ff-bde4-cfea39ea6233", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABNQAAAKrCAYAAAA57NCnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzddZiU5f7H8ffEdics7C7dLSACii1itz+7O496VDz2MY96jt2FgR1YCLYC0t0N29059ftjZp6dYWeXXRrm87ouruvJ+7ln9a/P9b3vr8nlcrkQERERERERERGRNjHv7QmIiIiIiIiIiIjsTxSoiYiIiIiIiIiItIMCNRERERERERERkXZQoCYiIiIiIiIiItIOCtRERERERERERETaQYGaiIiIiIiIiIhIOyhQExERERERERERaQcFaiIiIiIiIiIiIu0Q1IGay+WisrISl8u1t6ciIiIiIiIiIiL7iaAO1KqqqoiLi6OqqmpvT0VERERERERERPYTQR2oiYiIiIiIiIiItJcCNRERERERERERkXZQoCYiIiIiIiIiItIOCtRERERERERERETaQYGaiIiIiIiIiIhIOyhQExERERERERERaQcFaiIiIiIiIiIiIu2gQE1ERERERERERKQdFKiJiIiIiIiIiIi0gwI1ERERERERERGRdlCgJiIiIiIiIiIi0g4K1ERERERERERERNpBgZqIiIiIiIiIiEg7KFATERERERERERFpBwVqIiIiIiIiIiIi7aBATUREREREREREpB0UqImIiIiIiIiIiLSDAjUREREREREREZF2UKAmIiIiIiIiIiLSDgrURERERERERERE2kGBmoiIiIiIiIiISDsoUBMREREREREREWkHBWoiIiIiIiIiIiLtoEBNRERERERERESkHRSoiYiIiIiIiIiItIMCNRERERERERERkXZQoCYiIiIiIiIiItIOCtRERERERERERETaQYGaiIiIiIiIiIhIOyhQExERERERERERaQcFaiIiIiIiIiIiIu2gQE1ERERERERERKQdFKiJiIiIiIiIiIi0gwI1ERERERERERGRdlCgJiIiIiIiIiIi0g4K1ERERERERERERNrBurcnICIiIiIiIiKyL3G5XNgcLhwuFyYgxGLGYjbt7WnJPkSBmoiIiIiIiIgEvYp6GxtLaimuaaSktpEGu9O4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Wnos2PCSs4urVCbB+beeHdDyiYiIiIiIaOoxoUZEE2bZBYsREhUMANj18X601psCWv6Ki/u7Uu76yLdunxPd3XPLWzvR3twBuGb2DI4ICmj5RERERERENPWYUCOiCSORSnDejWcArkTWxle2BLT8U89fBIlUAgD49qN9EARh1PdMZHdPQRDw4d82uP/mZARERERERESzExNqRDSh1t/c3+Xx4+e+gNViDVjZumAt5p8+FwBQV9qAsuMVo75nIrt75u0tQuGBEgBA2uIkzDktPaDlExERERER0fTAhBoRTaio5AicdtESAEBjVTM2vbo1oOUPnEHz2w9H7vYpCAJ2uWbfnIjunu8//an78cV3rodIJApo+URERERERDQ9MKFGRBPuuoeucD9+8/cf+DUj52hWXLzU/XjnR3tHXLaqoAYtta0AgPlnZAW0u2fp8QpsfdvZ+s0QpsOZ16wIWNlEREREREQ0vTChRkQTLvPUNCxZuwBwdc385o0dASs7PN6IlIWJAIDCg6Vob+kYdtkjW3LcjxecnhWwOgDAa7992z2G23fuvwwKlSKg5RMREREREdH0wYQaEU2K7/1qQCu1J96H3R64VmoDk2M5OwuGXe7I1hP97zljbsA+v+hQKXa875w5NCQyCBfdvjZgZRMREREREdH0w4QaEU2KeavmuCcQqMyvwfZ3dwew7Ez34+M7cr0uIwgCjm5xJtRUWiXSFicH7PNfffgt9+Pv/vJyKNVsnUZERERERDSbMaFGRJPmul9d6X783/97Dw6HIyDlZq3McD8+sTPf6zJVBTVoqTMBAOatngOJVBKQz87ZXYDdnx4AABjjQnH+recEpFwiIiIiIiKavphQI6JJs+iseZhzWhoAoOx4JXZ9vD8g5YZEBiM6JQIAkL+vGJZe65Bljm6dmPHTBrZOu+6hKyBXyAJWNhEREREREU1PTKgR0aQRiUSerdQee9c9kP94Za10dvu09lpReKBkyOsTMX7ase25OLjpKAAgMikc5/3gzICUS0RERERERNMbE2pENKlOXb8IaYuTANesnFve2hmQcrNWDOj2+W2ex2uCILhn+AzU+GmCIOCV3/zP/ff3fn0lpDLpuMslIiIiIiKi6Y8JNSKaVCKRCDf87hr33y/+4jV0d/WMu9yBExMMHketurAWLbWt7uUCMX7a/o2H3d1IY9OjcM73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REREREQzFxNqRDQjyCViLE8ImeDPEGF5QghEnN2TiIiIiIiIRsCEGhHNGDEGJZbEGiakbLEIOCMlDOpJaAVHREREREREM5t0qitAROSPeZF6CAJwsLotYGVKxSKckRKGKL0yYGUSERERERHR7MWEGhHNONlRehiUUuwqb0WPzTGusoJVMqxKCkGIWh6w+hEREREREdHsxoQaEc1I8cFqhGsV2FdpQkmL2e/3S8UiZEXqkB2ph0TMMdOIiIiIiIjIdyJBEISprsRUaW9vh8FgQFtbG/R6/VRXh4jGqLPXhoLGThQ1d6HbOnKLNYNSigyjFimhGsilHEaSiIiIiIiI/MeEGhNqRLOGIAjostjRbLbA1G2FzeH8epNLxAhRyxCqlkMp46QDREREREREND7s8klEs4ZIJIJWIYVWIUVC8FTXhoiIiIiIiGYr9nciIiIiIiIiIiLyAxNqREREREREREREfmBCjYiIiIiIiIiIyA9MqBEREREREREREfmBCTUiIiIiIiIiIiI/MKFGRERERERERETkBybUiIiIiIiIiIiI/MCEGhERERERERERkR+YUCMiIiIiIiIiIvIDE2pERERERERERER+YEKNiIiIiIiIiIjID0yoERERERERERER+YEJNSIiIiIiIiIiIj8woUZEREREREREROQHJtSIiIiIiIiIiIj8wIQaERERERERERGRH5hQIyIiIiIiIiIi8gMTakRERERERERERH5gQo2IiIiIiIiIiMgPTKgRERERERERERH5gQk1IiIiIiIiIiIiPzChRkRERERERERE5Acm1IiIiIiIiIiIiPzAhBoREREREREREZEfmFAjIiIiIiIiIiLyAxNqREREREREREREfmBCjYiIiIiIiIiIyA9MqBEREREREREREfmBCTUiIiIiIiIiIiI/MKFGRERERERERETkBybUiIiIiIiIiIiI/MCEGhERERERERERkR+YUCMiIiIiIiIiIvIDE2pERERERERERER+YEKNiIiIiIiIiIjID0yoERERERERERER+UE61RWYSoIgAADa29unuipERERERERERDQN6HQ6iESiEZc5qRNqHR0dAIC4uLiprgoREREREREREU0DbW1t0Ov1Iy4jEvqaaZ2EHA4HampqfMo80sja29sRFxeHysrKUTc6mvm4vk8+XOcnF67vkw/X+cmH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l81mw1/+8hevr7W3t+PnP/85ent7cemll0563YiIiIhmApEgCMJUV4KIiIiIpl5vby/WrVuHLVu24Pnnn8ftt98+1VUiIiIimpbY5ZOIiIiIYLfbce2112LLli347W9/y2QaERER0QjYQo2IiIiI8MMf/hD//Oc/ceedd+Jvf/vbVFeHiIiIaFpjCzUiIiKik9xDDz2Ef/7zn7j66qvxzDPPTHV1iIiIiKY9tlAjIiIiOok988wzuPvuu3HOOefgs88+g1wun+oqEREREU17TKgRERERnaTefPNNXHfddViyZAk2b94MrVY71VUiIiIimhGYUCMiIiI6CW3cuBEXXXQRkpKSsGPHDhiNxqmuEhEREdGMwYQaERER0Ulmz549OPvssxEUFIRvv/0WCQkJU10lIiIiohmFCTUiIiKik0hubi5Wr14Nh8OB7du3Iysra6qrRERERDTjMKFGREREdJIwmUyYP38+Kisrcccdd2D58uVelwsPD8fatWsnvX5EREREMwUTakREREQniS+//BLnnXfeqMt9//vfx6uvvjopdSIiIiKaiZhQIyIiIiIiIiIi8oN4qitAREREREREREQ0kzChRkRERERERERE5Acm1IiIiIiIiIiIiPzAhBoREREREREREZEfmFAjIiIiIiIiIiLyAxNqREREREREREREfmBCjYiIiIiIiIiIyA9MqBEREREREREREfmBCTUiIiIiIiIiIiI/MKFGRERERERERETkBybUiIiIiIiIiIiI/MCEGhERERERERERkR+YUCMiIiIiIiIiIvLD/wPAtYosKDWgkgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = net.plot(rotated=True, curved_edges=True, size=(1500, 800), hide_xalpha=True, node_size=400, node_font_size=9)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "1bb5fe10-6a76-4ec5-ba8a-5472c80669fd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "using approximate rate Fe52 + n + n ⟶ Fe54 + 𝛾\n", + "using approximate rate Fe54 ⟶ Fe52 + n + n\n", + "using approximate rate Fe54 + n + n ⟶ Fe56 + 𝛾\n", + "using approximate rate Fe56 ⟶ Fe54 + n + n\n", + "using approximate rate Ni56 + n + n ⟶ Ni58 + 𝛾\n", + "using approximate rate Ni58 ⟶ Ni56 + n + n\n", + "removing rate Fe52 + n ⟶ Fe53 + 𝛾\n", + "removing rate Fe53 + n ⟶ Fe54 + 𝛾\n", + "removing rate Fe54 ⟶ n + Fe53\n", + "removing rate Fe53 ⟶ n + Fe52\n", + "removing rate Fe54 + n ⟶ Fe55 + 𝛾\n", + "removing rate Fe55 + n ⟶ Fe56 + 𝛾\n", + "removing rate Fe56 ⟶ n + Fe55\n", + "removing rate Fe55 ⟶ n + Fe54\n", + "removing rate Ni56 + n ⟶ Ni57 + 𝛾\n", + "removing rate Ni57 + n ⟶ Ni58 + 𝛾\n", + "removing rate Ni58 ⟶ n + Ni57\n", + "removing rate Ni57 ⟶ n + Ni56\n", + "looking to remove Fe53 + He4 ⟶ Ni57 + 𝛾\n", + "looking to remove Fe53 + He4 ⟶ p + Co56\n", + "looking to remove Ni56 + n ⟶ He4 + Fe53\n", + "looking to remove Ni57 ⟶ He4 + Fe53\n", + "looking to remove Fe53 + He4 ⟶ n + Ni56\n", + "looking to remove Co56 + p ⟶ He4 + Fe53\n", + "looking to remove Fe55 + p ⟶ Co56 + 𝛾\n", + "looking to remove Co55 + n ⟶ p + Fe55\n", + "looking to remove Ni58 + n ⟶ He4 + Fe55\n", + "looking to remove Co56 ⟶ p + Fe55\n", + "looking to remove Fe55 + p ⟶ n + Co55\n", + "looking to remove Fe55 + He4 ⟶ n + Ni58\n", + "looking to remove Co55 + e⁻ ⟶ Fe55 + 𝜈\n", + "looking to remove Fe55 ⟶ Co55 + e⁻ + 𝜈\n", + "looking to remove Fe53 + He4 ⟶ Ni57 + 𝛾\n", + "looking to remove Co56 + p ⟶ Ni57 + 𝛾\n", + "looking to remove Ni57 + n ⟶ p + Co57\n", + "looking to remove Ni57 + n ⟶ He4 + Fe54\n", + "looking to remove Ni57 ⟶ p + Co56\n", + "looking to remove Ni57 ⟶ He4 + Fe53\n", + "looking to remove Fe54 + He4 ⟶ n + Ni57\n", + "looking to remove Co57 + p ⟶ n + Ni57\n", + "looking to remove Co57 ⟶ Ni57 + e⁻ + 𝜈\n", + "looking to remove Ni57 + e⁻ ⟶ Co57 + 𝜈\n" + ] + } + ], + "source": [ + "net.make_nn_g_approx(intermediate_nuclei=[\"fe53\", \"fe55\", \"ni57\"])\n", + "net.remove_nuclei([\"fe53\", \"fe55\", \"ni57\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "51a9d176-d848-4ba8-9ba4-619a23e4edb3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABNQAAAKrCAYAAAA57NCnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdZZhd1d3+8e/RcZ9JMhrPxD2EBBIkQYI7Le5FC3/aPhSe+lMK1EuLQ3ErBIprkJAQd88kmcm4ux/7vzgz+5yTsTPJxCb357q4WHvvtddeZ+DVff3WWiaPx+NBREREREREREREgmI+3BMQERERERERERE5mihQExERERERERER6QUFaiIiIiIiIiIiIr2gQE1ERERERERERKQXFKiJiIiIiIiIiIj0ggI1ERERERERERGRXlCgJiIiIiIiIiIi0gsK1ERERERERERERHrhmA7UPB4PtbW1eDyewz0VERERERERERE5ShzTgVpdXR0xMTHU1dUd7qmIiIiIiIiIiMhR4pgO1ERERERERERERHpLgZqIiIiIiIiIiEgvKFATERERERERERHpBQVqIiIiIiIiIiIivaBATUREREREREREpBcUqImIiIiIiIiIiPSCAjUREREREREREZFeUKAmIiIiIiIiIiLSCwrUREREREREREREekGBmoiIiIiIiIiISC8oUBMREREREREREekFBWoiIiIiIiIiIiK9oEBNRERERERERESkFxSoiYiIiIiIiIiI9IICNRERERERERERkV5QoCYiIiIiIiIiItILCtRERERERERERER6QYGaiIiIiIiIiIhILyhQExERERERERER6QUFaiIiIiIiIiIiIr2gQE1ERERERERERKQXFKiJiIiIiIiIiIj0ggI1ERERERERERGRXlCgJiIiIiIiIiIi0gsK1ERERERERERERHpBgZqIiIiIiIiIiEgvKFATERERERERERHpBQVqIiIiIiIiIiIivaBATUREREREREREpBcUqImIiIiIiIiIiPSCAjUREREREREREZFeUKAmIiIiIiIiIiLSCwrUREREREREREREekGBmoiIiIiIiIiISC8oUBMREREREREREekFBWoiIiIiIiIiIiK9YD3cExAREREREREROZJ4PB4cLg8ujwcTYLOYsZhNh3tacgRRoCYiIiIiIiIix7yaZgd7Khopb2ilorGVFqfbeGY2QWyYjYRwOynRoWTEhmFWwHZMU6AmIiIiIiIiIses/JomthbXUVTX0mUftwcqGx1UNjrIKm8gzGZmVGIkYwdGYbdqN61jkQI1ERERERERETnmNDtcrMirJqeysdfvNjncbCiqJau8gVlD4kiLCTsoc5Qjl2JUERERERERETmmlNW38N6W4v0K0/w1OlwsyipnZW4VHo+nz+YnRz4FaiIiIiIiIiJyzCipa+HznWU0++2RdqC2ldazNKdSodoxRIGaiIiIiIiIiBwTqpscLNpVhtPd98HX7opGVufX9Pm4cmRSoCYiIiIiIiIi/Z7b42FJdiUO18GrIttaUkdRbfNBG1+OHDqUQERERERERET6vS3FdVQ0tnLFlFQqGlsB2FRUR2FtM4kRdqakxGAyQUFNM1tK6vb7O9/nVHLeuEHYLKph6s8UqImIiIiIiIhIv9bqcrOxqBaA+lYXn+0oM56ZTTApOZqvdpfj6oOloPWtLnaW1TNuUPQBjyVHLsWlIiIiIiIiItKv7aloMPZNi7BZODMziTlD4wmxmEmKCMHp9nDy8AROG5lEXJjtgL+3o6xBBxT0c6pQExEREREREZF+bWdZg9F+Z3MRLU43IxIimJIaQ0l9C7FhNj7aVkKE3cKswfF8uqMUgDMyk0iKCMHtF46tya9hR1l9t9+ra3FSVNdCSnToQfxVcjj1mwq1hx9+GJPJxD333HO4pyIiIiIiIiIiR4hmh4uqJodx3eJ0A5Bd1Uh8uI0Wp5vS+hacbg81zU7sFlPA+2vyq3ltXYHxT09hWrtiHU7Qr/WLCrVVq1bx1FNPMXHixMM9FRERERERERE5grQfQABgNZtwuT14gEGRIdS2OClvaGFichQAoVYzwR4CajWbmJYWQ1pMGBazicKaZlbkVRmniFY0OnocQ45eR32FWn19PVdeeSXPPPMMcXFxh3s6IiIiIiIiInIEqfQLtqJDrZw9diBnZCYxdmAU6wpqaHV52FXeyJmZAzh1RCKr86qDGveEIfHYLWbe31rMO5uKMJtgZoYvl6j0C/Kk/znqK9TuuOMOzj77bObPn8/vf//7bvu2tLTQ0tJiXNfW1h6CGYqIiIiIiIjI4dLqchvtykYHH24t6dBnV0UDuyoaOtwHmJoWw+SUGOP6rY2FWMwmMuLCeHN9gVGRtq6wlvPHDWJpdiUeoMXvu9L/HNWB2htvvMHatWtZtWpVUP0feughfvvb3x70eYmIiIiIiIjIkcF9gIdtrs2vYVtp4L5pMaE2zCYTF09I6dA/zGah0eHC4wGPx4PJZOrQR45+R22glpeXx913380XX3xBaGhwp2bcf//93HvvvcZ1bW0t6enpB3GWIiIiIiIiInI42cx9H2g1tDpxezz8Z2Mhri4SO6vZpDCtHztqA7U1a9ZQWlrK1KlTjXsul4vFixfzr3/9i5aWFiwWS8A7ISEhhISEHIbZioiIiIiIiMjhEB3a99FHs9NNXnUTMzNiWZNfQ4vTTajVzIDIEHKrmwCIOQjflSPHUftfd968eWzatCng3vXXX8/o0aO57777OoRpIiIiIiIiInLsSYiwH5Rxl2RXMjklhrPHDCTEaqbZ4SKnstEI1A7Wd+XIcNQGalFRUYwfPz7gXkREBAkJCR3ui4iIiIiIiMixKTrESojFvF+HBHy2o6zLZ063h9X51azO7/xU0EQFav2a+XBPQERERERERETkYDGZTAxLCD+k37SaTQyOO7TflEPrqK1Q68w333xzuKcgIiIiIiIiIkeYzAGRHU7qPJiGJYRjt6iGqT/Tf10RERERERER6ddiQm2kx4Ydkm+ZTTB2QNQh+ZYcPgrURERERERERKTfOz4jDrvFdNC/Myk5hpgw20H/jhxeCtREREREREREpN8Lt1s4Lj3uoH4jIdzG+EGqTjsWKFATERERERERkWPC8MSIgxZ4RdotnDIiEbP54FfByeGnQE1EREREREREjhlTU2OY0MehWlSIFffSTSx9/Ts8Hk+fji1HJpPnGP4vXVtbS0xMDDU1NURHRx/u6YiIiIiIiIjIIZJT2cjy3CpanO4DGmdYQjh7Xv2aV371JgADMhK5+leXcuqVc7CHaC+1/kqBmgI1ERERERERkWNSk8PF6rxqdpfVY7L0bhFfdIiVhhXbePm2p7CF2GhpbAl4Hj8olvPuOJNzbz2d6ATtq9bfaMmniIiIiIiIiByTwmwWJseF8N6FD1K6bhXNldXd9reaTYS21hGVm82pqZG8esfTuF3uDmEaQGVxNS/88g2uHHwbnzy36CD+CjkcVKGmCjURERERERGRY9bnL37Dn65/jLAEOydfdCKL3lxOfGYqiaNSiUyMoqqoGndzC394/W5CTW4e/sPDYIY9HxVTua2OlsbWHr8xaEgSL+95/JD8Hjk0rId7AiIiIiIiIiIih8t3C5eTMDqaqPRwUocn01rbSPGqLKiowTpkADu+2gyArdVBQXkxJosJj8fDsLMGUba1JqhvnHvbGQf5V8ihpiWfIiIiIiIiInJMaqhtZM3nG0g+Lp6Y1AgczQ7jWcKgOBJT443rsvxKLBYLzmYXJpMJgPjMSMIS7N1+46aHr+Syn51/EH+FHA4K1ERERERERETkmLTiwzU4Wp00lbeQGpdOwa5i49mgoQNITE0wrssLKgk1h+Fxe3fOMplNjDw3lWl3jiIyJazLb3z/3ipcTtdB/iVyqClQExEREREREZFj0uKFy8EEBcsqmHf+KRRnlxrPUkelkJTmC9RKckp56523sIV7d8/yeDw0lDTjaHQSNyIycGATRMV5721dtpM3//jeofpJcogoUBMRERERERGRY05TfROrPlnHoGnxTLpxOONOyKSiqMp4PmziYNJGJRvXudvzqaqppLGsGbfLQ1NFKzvfzWfFn7aTt7gsYOyk9AR+/+HPMZu9S0Nf+s1/yFq75xD+OjnYFKiJiIiIiIiIyDFn5cfraG12EJUaRpgtDIvFQm1lnfF81LRhZIxJNa7ztheSYB7Exuez+f73WyjbWE1rndN4bg+1Ge2y3Ar2bivgBz+/EACX08XDVz9KS1PLIft9cnApUBMRERERERGRY87ihcsBKPi+nBOPnwtAc31b4GWCpLQEElLiCY/y7o+Wu62ABFsSziYXJouJ9JMGkDguGoCfvnA7HzW+xtxLZxnjP3HP81zxi4sZOXWo8f5z9792qH+mHCQK1ERERERERETkmNLc2MLKj9ZisZvJmD2QWafPwOl0GocH2EO81WYmk8moUivZW8bp153M5f9zPlf/4lLCCMca5t1PrTy3EoD7XrwTW4j3XlN9M8/8zyvc99JdRvXau49+zNpFmw7Lb5a+pUBNRERERERERI4pmxZvpbmxhbiRkSROjsbhdJCzOc94Hh4dbrTT/ZZ9VhZVc9PDV3H1ry/l2huuIX+Jd++0xQuXAWAPtXPlLy8x+n/45OckDxvITQ9fZdz78/WP0VjXdNB/oxxcCtRERERERERE5Jiy9ktvlZjZYiY6LJaIiAh2rcs2nsckRhntjNFpRjt3W77RNoeZmPU/47CEmtmzYS8Fu4oAuPKBi4mK957w6XK6eOzu5zn/zjOZOn8CAGX5Fbz24MJD8CvlYFKgJiIiIiIiIiLHlHVfeQO1ss013HDD9d52fqXxPDrBP1DzVajlbi8w2jabDUuYieg0bzXb0ndXGs+u+93lRvvzF77G6XRxz5M/wta2lHTh3z4kP6voIP06ORQUqImIiIiIiIjIMaO6rIbd63MwmeH4n42hvMa7bLOuotboExkbYbT9T/r0D9Ti4uKYOHYSjeXegwz890Y77/YziYj1Bm1Oh4unfvISycMGctlPzzPuPXnvCwf1d8rBpUBNRERERERERI4ZG77eAkBIrB1LqBmz2RuN1FbUG30i43yBWvKwgdjs3oMG8rb5AjWTycSpp59CYkY8AJu/24aj1WE8v+oXvr3UPnn2S5xOJ5f//AKS0hIAWPHRWlZ8tOYg/lI5mBSoiYiIiIiIiMgxY+2XGwFoqXEwPGUk6enpANRV+QK1aL891CxWC6kjkwHI31mI0+H0jbV2LcPOGegdr6mVbcuzjGcX3XM24VFhADhanPz7/tcIiwjllj9dbfR54t4XaW3xhXBy9FCgJiIiIiIiIiLHjPalmeFxIcw6+XisVm/1WUN1o9EnNjE64J2hEzOgbanm7g17ff1iYzHbTcb1+q82G22z2cxl951vXL/32Ke43W5Oumw2E+aOAaAgq4h3//HxQfiVcrApUBMRERERERGRY0LRnhKKs0sBGH/RcL797hvjWWNdk9GOGRAT8N642aON9pal2432xIkTueg839LO9V9vDnjvhz+/kNCIEABamx288Ks3MJlM3PGPGzCbvUHcq79/m/LCSuTookBNRERERERERI4J6/wODohJiSYhIcG4bmpoNtrxg2ID3ht3QqbR3uwXqJnNZrL27mDwFO/BBduW7wwYx2w2c8m95xrX7/z9I9xuN8MnDeHsH53u/W59M8/d/2of/ko5FBSoiYiIiIiIiMgxYe2ijUZ73knzOP30043r1sZWo52QEhfw3tAJGcZ+aFuW7sDj8RjPNm/ezMiTBkPbktDNS7YHvHv1ry8lJMwOQEtjK68++A4A1/3ucqLiIwH48uXFZK3d06e/VQ4uBWoiIiIiIiIi0u+53W5jj7OI+HCyirbjdPoOGGhp9gVqiWkJAe9aLBbGzBoFQGVRFcU53mWjJpOJzMxMhozJMPr676NGW5Xa+XctMK7f+tN7uN1uohOiuOY3lxn3X31wYR/+WjnYFKiJiIiIiIiISL+3Z+NeasrrAJh0xmi279hOQ0OD8dzZ4gvXotsqx/yNm+237NOvCu3iiy9m3jknG9frvtrU4d3rf/8DbCE2aFvi+daf3wfgrJvmGdVwS99dSfbm3AP+nXJoKFATERERERERkX5v3Ze+oGvMjFGkpaWRmJho3HM6XN6GyVtVtq/xJ/ofTLDDaK9cuZJ3PljIsIneZZ+71mZTV1Uf8K7VauWcH803rl9/6F0A7KF2Lvup7yTQ1/7wzoH+TDlEFKiJiIiIiIiISL/nXzk287QZXHPNNVitVuOe2+UGwGLpPCoZPXMk5rZn/id9Wq1WiouLmXTKOAA8Hg8bv93a4f2b/ng1Vrv3ew01jbzzj48AOOuW+cQmRQPw7Zvfk7ejoE9+rxxcCtREREREREREpF9ztDrYtHgbtB04kFeRw6uv+k7WdLvdxkEDFpu10zHCIkIZPnkIADlb8owqtNGjRzN//nymzpto9PU/TbSd3W7jzOtPMa5f/t1bAISGh3Bx20mgHo+H1x9+t09+sxxcCtREREREREREpF/btjyL5sYWAKbOn0hlZSVut9t4Xl/t20vNZu88UAMYf4Jv2efW773LPsPDw4mKimL8nNFGBdv6rzd3+v5tf7sOi9Xi/WZVAx8+9QUA591+BlFxEQAseuU7ivaUHNDvlYNPgZqIiIiIiIiI9Gtrv9xotKecOoGpU6cyd+5c4155foXRtofZuxxnwtyxRnvFx+sAqKio4J133qGmvppR04cDsHdrPpXFVR3et4famX+177sv/PJ1AMKjwrjw7rOhbenpm4/8d79/qxwaCtREREREREREpF/zX4I5Zd543G43CQkJxr3ywkqjHRLedaA27bSJRgXbsvdX4fF4CAsLw2Qy4XK5mHLqeKPv+q86r1K78583YLF645ia8jo+f/FrAC788VmER4cB8NkLX1OaV34Av1gONgVqIiIiIiIiItJvNdQ2sn3lLgDSR6eSmJrA+++/z7p164w+lUXVRjs0PKTLscKjwpg8bwIA5QWV7Fyzh4iICG677TbS09OZfOoEo++6LgK10PBQTrpstnH97P2vARAZG8EFdy6AthNH3/n7Rwfwq+VgU6AmIiIiIiIiIv3Wxm+3Gid4Tm0Lw1wuF9HR0Uaf6pIao91eJdaVE86fYbSXvbcKgNWrV5Ofn8+42aOwhdigm33UAH78+M3GfmtVxdV8/eZSAC6652zj/S9e+pbWFsd+/GI5FBSoiYiIiIiIiEi/5b9/2tT53pM4r7/+eqZMmWLcr62oM9oRMRHdjnf8udON9vfvewO1rVu3smfPHkLCQhg3exQAxdmlFGV3frhARHQ4J1x4nHH99E9fAiAmMZq5lxxvzGnpuyt7+WvlUFGgJiIiIiIiIiL9VvteZmaziYknjcXhcPDpp5/S1NRk9KnxC9TaT9vsSkJyHGOOHwlA9qZcivaUMGzYMGJjYwGYfIpv2WdX+6gB3Pv0jzCZTdC2fHTPxhwAFtw0z+jz8bNf9vr3yqGhQE1ERERERERE+qX66gZytuQBMHLaMCJjI6ipqWHHjh1UVPhO9qyrrDfaUfFRPY47+zzfss/v31vFeeedx4QJ3iBtsv/BBN0s+4yMjTSCOfz2Ups4dyxpo5K973+1mYJdRUH/Xjl0FKiJiIiIiIiISL+UvSnXaI+aNhyAyMhIBg4cSFxcnPGsobrRaEcnRPY47uwLfMs1l763knfffZfPP/8cgMwZwwmLDIW2QMzj8XQ5znW/+4HRXvflRtxuNyaTiQU3+qrUPnl2UVC/VQ4tBWoiIiIiIiIi0i/5B2pDJw4GIDQ0lBtuuCHgUILGWt/yz9gBMT2OmzE61agi27JkO9VVNTQ2ekM5q83K+DljAKgsrqY4u7TLcaacOoGI2HBoO9nzg8c/A+C0a0/GarMA8PmL3+B0OHv5y+VgU6AmIiIiIiIiIv3Sno17jfbQCRkA1NbW8sgjj1BZWWk88w+sQiNCgxp79vneKjW320N4SxRTp041no2YPMRoty857cqpPzjRaC/8x0cAxA2IYVbbaaJVJTUs+2BNUHOSQ0eBmoiIiIiIiIj0S9mb/AK18ekANDU14Xa7jYoy2qrK2jlaWoMau/00ToDVH24MqHgbMj7DaOds7j5Qu+73vmWfRbtLKM0tA+Csm+Yb9z/R4QRHHAVqIiIiIiIiItLvuN1uY8nnoCFJRMR4T+9MTEzkpJNOYtCgQUZfi91itFsagwvURk0fblS9kdzKpx9+ZjwbMi7daO/d2n2gFh0fFdD/uQe8hxNMnT+BQUOSAFj92QYjaJMjgwI1EREREREREel3SvaW0VTfDH77pwGYzWYSExOxWHwhms2vQq21KbhAzWQyGVVkbpeHvG2FxrO0zBTMFm/kkr05t8sx2l3xwEVG+/v3VhnzPOP6UwHweDwsfnt5UPOSQ0OBmoiIiIiIiIj0O9kb/Q4k8FuCWVJSwsKFCykt9R0WYLX7BWrNwQVqAPOumoM91EbW+wWsfmmL8a49xEbqSO+hBXnbC3E5Xd2Oc8oPTyQkzA5Ac0MLi99eBsDcS2cZfb5/f1XQ85KDT4GaiIiIiIiIiPQ7/gcSDPOrULNarQH/BrCG+NotzY6gvxEVF8mcS44ncUw05mj4buEK49mQtj3bHC0OCncX9zjW8edON9qvPrgQ2k4TTc9MgbbTRGvKa4OemxxcCtREREREREREpN/Z438ggV+glpiYyK233kpCQoJxz+ZXoeboRYUabYcHJE2IIX5kFB/7HR4wZKxvX7SeDiYAuPmRK31z37iXhlrvoQmzzvOe9ul2e1j+oU77PFIoUBMRERERERGRfien7UACe6iN1BG+AwjcbjdLly6lttZX7WULsRnt1l5UqAFMmDMGU6uFxrIWNn67lfyd3r3U2ivUAHK29ByoDRw8wDiEAA+8+Ks3ADjhghlGn/b91eTwU6AmIiIiIiIiIv1Kc2MLBVlFAAwel47F6juAoLW1lU2bNpGX5wu57AcQqJlMJmaMm0nhigoAPnl2kfHddsEEagAX/Pgso/3lK98BMHrmSOIGxgCw5vMNNDe29Gp+cnAoUBMRERERERGRfmXv1nzcbg8AQydkBDwLCQkhJSWFyMhI45697UAA9iNQ83g85JqySBwdDcDnL35Da4uD1BGDjKWke4MM1C788VlG+FdXWc/GxVswm80cf453f7WWplbWfrGxV/OTg0OBmoiIiIiIiIj0K9n+BxJMGBzwzGQyceONN5Ke7qsg81/y6WjpXaDW3NxMQ0MDY08YBUB1WS1fvPgNVpuV9NGpAOTvLMLR2vO4ZrOZSSePM66f/4WWfR6pFKiJiIiIiIiISL/if8Kn/4EE7V5++WWWLVtmXNtD/QK1VmevvhUaGsqJJ57I+dedY9x74+F3cTqcDB6XBoDL6SJ/Z1FQ4934sO9wgq3LdtLa6mDKvAmERoQAsPzD1bhcrl7NUfqeAjURERERERER6VeyN+ca7WETMzo8b21tpaKiwrgO8Vvy6WzpXaDm8XhIT09n4gnjmH7GJACKc8r46rUlDBnn+3YwJ30CjJo6jNgB3j3T3C43b/3xPeyhdmacORmAmvI6ti3b2as5St9ToCYiIiIiIiIi/YbH42HPBm+FWvygWGKTYjr0OfHEE5k4caJxbQuoUOvdks9du3bx+uuv09zczJX/e7Fx//WH3iGjbcknvdhHDeCM608x2h889TkAM8+eZtzb8M3WXs1R+p4CNRERERERERHpNyqLq6mtqANgyISO1WkAycnJ2O2+qrSACjVH7yrUWltbsVgs2O12xp84xtgDLX9nEaV55Ua/nC253YwS6KpfXozJbAKgoqCKvdvymTBnjPF8y/fbezVH6XsK1ERERERERESk39jTzYEE7VasWMH7779vXIeEhRhtZ2vv9ifLzMzk5ptvxmz2RixX+FWpffLcImN/tpwt+UGPGRoeyqjpw43r537+KsnDBhI30Fttt+X7HdpH7TBToCYiIiIiIiIi/UbOJv/90zoP1OLi4mhoaDCu7QdQoZaVlUVuru+bU04dz9hZ3hM/czbnkZAaD0DhrmJamlqCHve6315utFd/vh6TycS4E0YD0FjbxN5eBHTS9xSoiYiIiIiIiEi/sWeT/wmfnS/5nDZtGtdcc41xHRruC9Rcjt5Vfq1bt45du3YZ1yaTKaBKrb7KG9x5PB5ytxUEPe70MyYTHhUGgKPFyeovNjC+LVAD2LJUyz4PJwVqIiIiIiIiItJvtC/5NFvMZIxJ67SPyWTi22+/paamBoCQcL8ln87eBWoREREMHz484N5xC6YwcupQAOoq6437Ob04mABg/BxfgPbB458x7oRM43qzArXDSoGaiIiIiIiIiPQLHo+H/B2FAKSOTMYeYuu0n9vtZuvWrezevRuAUL9ArbcVaueccw7HHXdcwL19q9Ta5WzuXaB21s2nGe1N321jxJShxgEKW5bu6NVY0rcUqImIiIiIiIhIv9BY20hrswOApLT4LvtZrVZGjRpFWJh3SWVIhF+g1osKtaqqKh5++GGqq6s7PDvhguOMvdTa9eakT4BZ507DbPFGN3WV9dRW1DF65kgASvaWUZZf0avxpO8oUBMRERERERGRfqGy2BdsxQ2K7bbvZZddxogRIwAIiww17ruc7qC/V1xcjMvlwmbrWAlnMpm449EbMJlMxr2iPaVBjw1gNptJz0wxrv/76CeMm+1b9ql91A4fBWoiIiIiIiIi0i8EBGoDug/Uli5dyssvvwxA2H5WqKWmpnL66acTHh7e6fNR04az4MZTjeuSvWVBj91uzsXH++b835WMP9H/YAIt+zxcFKiJiIiIiIiISL9QXVJjtON7qFCz2WwUFxfj8XiIHRBj3G9fMhqM+vp6hg8fHlCFtq/rH/whZrP3eWtTK9tWZAU9PsD5dy0w2vlZRWQeN8K43rU+u1djSd9RoCYiIiIiIiIi/UJvlnyOHz+e+fPnYzKZsIfaMbWHXs2tQX/v448/ZsWKFd32iU2KIWVksnH9zzuexe0OfllpbGI0MYlRALhdbtZ/tZmElDgAcrcVBD2O9C0FaiIiIiIiIiLSLwQEagNjuu0bGRlJREQEdXV1AMbpmR63h8b6pqC+19jYSGJiYo/9RkwZYrSz1u7hi5e+DWr8dhNPHme0P352ERlj0gCoraijuqymmzflYFGgJiIiIiIiIiL9QnWJL1DracknwFdffcWyZcsAiIjx7YOWvWFvUN+79tprOe6443rst+9+bs/d/yoNNQ1BfQPg/NvPNNrblu8kY3Sqca0qtcNDgZqIiIiIiIiI9AuVJcEv+QTIyMigtrYWgJjEaOP+7o09B2o5OTl8+eWXWCyWHvvGJEUHXFeV1PDc/a/1+F67SSePw2q3AtBY20R0UpTxLG+7ArXDQYGaiIiIiIiIiPQLVW1LPs0WM9EJUT32P+usszjvvPMASEiNN+7n7+g5pNq0aROlpaVBzSvWL1Cz2rzB2AdPfs6qT9cF9T7A0PEZRnv3el/gpwq1w0OBmoiIiIiIiIj0C+17qMUOiMFsDi7yeP7556msrCR56ADjXnF2WY/vJSQkMG3atKC+4V+hNv3MyUb7zzc+QW1FXVBjnHz5bKOdtWa30c7dnh/U+9K3FKiJiIiIiIiIyFHP7XZTXepdvhnM/mkAJpOJsrIysrKySMtMMe6X5Vf0+O6oUaOC2j+NfSrUkocOYPoZkwCoLKri77c9jcfj6XGMc2473Te/vApjzzdVqB0eCtRERERERERE5KhXV1mPy+mCIPdPA7BarcyePZvExESGTRhMZGoY1nAL1WW13b6XnZ3NY489RlNTcKeB+leo1VbW8ZPnbicqPhKA795ezqJXv+txjPDIMOKT44zr9iWtpbnlNAV5Kqn0HQVqIiIiIiIiInLUa1/uCRA3MCbo96Kiovj888/ZUbyFidcOJWlcDA3V3Z/AWVhYSHh4OKGhoUF9wz9QqymrJTElnrufuMW49887n6U017vMNH9nIS1NLZ2OM+20iUa7qb7ZaOfvLApqHtJ3rId7AiIiIiIiIiIiB6rKL1CLH9h9hVpjYyMvv/wygwcPZt26dbS2tlJaWorZZqaxvIWWptZu358wYQKDBw/GZDIFNbfI2AjMFjNul5uatuq3ky6dxbIP5rDole9orG3ioaseJW5QLN+9vZyMMak8tf7PxgEG7S748Vl88dK3ANRV1Rv387YXMHLqsKDmIn1DFWoiIiIiIiIictSrKqkx2j0t+bTb7dTV1bFy5UpaW33hWeGyCmqyG3C73LS2Ojp91+PxsHLlSqKjozt93hmz2UxMoneJpv9y0jsfvZGk9AQANi/ZzndvL4e2fdGy1mZ3GGfU1GHYw+wAuBwu435pXs97vknfUqAmIiIiIiIiIkc9/yWfPR1KYLVaufXWWznllFOIiooy7ofGhBjtnM15nb5bWFjI0qVLqa6u7vR5V9qXfdaU1RqHEETGRnDxPed02n/bsp2d3h85ZWiHe+VBHKIgfUuBmoiIiIiIiIgc9aqKq4x2XA9LPgEiIyOZM2cOQ4YMMZZuRiT59kTbsyGn0/daWlpISkoiNTW1V/OLSfQGaq3NDpobvPufLXr1O56575VO+29dvqPT+/OvPqnDvfLCyl7NRQ6cAjUREREREREROepVlQa/5NPfnDlzsNlsAJhavHuWmUJhw7qNrF+/nk2bNrF3716cTicAaWlp3HbbbVgsll7Nz/9ggvZln8/c97JxMum+tnZRoXb69SeDCcxWC3EjUxg0YyStUeEU1zXT5Oh8LOl7OpRARERERERERI56vVny6S8pKYlbb72Vxx57jLKmAmLOBnOYiTXF37PmD98b/Ww2G+np6TQ2NnLdddcxderUXs2vvUKNtmWfyUMHctKls3nnHx912r8sr4LyggoSUxOMe3UtTnaWNXDeaz8jIj0Ji90X63y2w3tKaLjNQmKEnWEJ4aTHhmEO8uAE6R0FaiIiIiIiIiJy1Gs/5dNmtxIREx7UO06nkw8//JCPP/7Y2BPNHNZ5AOVwONizZw8AjzzyCNOmTeOKK64gLS0tqG/FJgUGagC3/e06Tv7BCbz91w9YsnA5brcn4J2v31jKpT85j8rGVtYW1FBQ410qGj08ucvvNDpc5FY3kVvdRLjNwpiBkYwdGKVgrY8pUBMRERERERGRo157oBY3KNbYE607OTk5PPbYY+zdu7fX3/J4PKxevZoNGzZw6aWXcu655/a4BLSzJZ8AY2aO5Jdv3ktRdgnv/P0jPnzqC5yt3uWlNeV1bCisYWNRLftkbUFpdLhYk19DTmUjJwyNJ67thFA5cNpDTURERERERESOenVVDQBEJ0T12Hfx4sXcf//9+xWm+XM4HLz22mv84Q9/oKmpqdu+/hVqteV1HZ4nDx3IHf+4gTcLn+b0a0/ilGtPJuWaeawv3L8wzV9Fo4MPt5aQU9l4YAOJQYGaiIiIiIiIiBz13C43ABZr91HHN998w7/+9S9crr7bwH/Tpk08+OCDNDc3d9mnqwq1fUXHR3H3M7cz8WcXU9bg6LM5uj3w7Z4K9lQ09NmYxzIFaiIiIiIiIiJy1PN4vGVc3S333Lx5M0888cRB+f7OnTt59NFHjXnsyxZiM9ouh7PLcTweD9/uqaCise/CNH9LcioprW85KGMfSxSoiYiIiIiIiMhRzT/EMpk7D9Sampp44oknugy8+sLq1atZvHhxEHPsOo7ZWdZAYW3XlW4HyuOBpdmVONsq+mT/6FACERERERERETmqBYRVXVSovfrqq5SVlfHSSy+xe/duAP773/+yYcOGTu/trxdeeIGJEycSFxcXOEe3/xw7f7e+xcnq/GqumJJKRWMrAJuK6mhodXL8YO94VrMZE/DhtpL9nmNti5N1hbXMSI/d7zGOdQrUREREREREROSoFhBWdVKhVlVVxaJFiwAoLS3lt7/9bcDzzu7tr4aGBj755BOuuOKKwDkGUaG2taQOp9tDfauLz3aUBTxrv85MisRu7fkU055sL61jQnIUodbuTyeVzmnJp4iIiIiIiIgc1fzDKnMnYdWiRYuMQwgSExP5zW9+w1133UVkZGSX9w7E119/jcMRuAdaTxVqDpebXW0HBkTYLJyZmcScofGEWAJ/z9D4cLIrDvy0TrcHdpXrgIL9pQo1ERERERERETmquf3CKvYJqzweD1999ZVxfdddd1FXV8cpp5zCD3/4Q5555plO7wH8+te/ZtSoUQEngr7yyit8/vnn3c6npqaGNWvWcPzxxwfMw5hiJ6FfbnUTDpe3zzubi2hxuhmREMGU1BiW51YBEGG3YDJBfatvPgMi7UxIjiYpIgQTUN/qZE9lI9tK6nD3sF1cVlkD4wdFd99JOnXUBmpPPPEETzzxBDk5OQCMGzeOX/3qVyxYsOBwT01EREREREREDqVuKtQqKiooLy83ruvq6gBYunQp8+fP7/Jeu1dffZWPP/6411Pavn17QKDm7qFCrbTOd/Jmi9N7YEB2VSOjkiKM+0Pjw8mp9FWnpcWEMndYAusKaliSXUmL0010qJUJg6IJs1lo8AveOlPb4qTZ4SLUpmWfvXXUBmppaWk8/PDDjBw5Eo/Hw4svvsj555/PunXrGDdu3OGenoiIiIiIiIgcIt2FVXv27DHaISEhtLa24vF4GDt2LMXFxZ3eC0ZISAhXXnkl06dPx2azsX79ev7973/T1NQEQHZ2duALPSxLbT+EwGo24XJ78ACDIkOobXEafYbEh/PlTt/easdlxLG5uI5tpfXGvdpmJ0tzKo3rUKuZmRlxDIoKwen2sKeykfUFNXj8vpsaExbUbxafozZQO/fccwOuH3zwQZ544gmWL1+uQE1ERERERETkGNLdcsrc3FyjnZKSwq233kpTUxMOh4Mnn3yy03vBuP3223G5XPz0pz/F5XJx6623cuONN/Kvf/0LgL179wb072lZalWTd8+16FArs4fE43C5cbvh+73ecCw21EqL001zW/VadIiVqBAr2ZXd74M2d1gCTQ4XCzcVEWI1M39kEk6Xm03F3qq8qiaHArX9cNQGav5cLhdvvfUWDQ0NzJo1q8t+LS0ttLT4Sihra2sP0QxFRERERERE5GDpbsP/9oox2qrG7rvvvoDnFRUVHe75u+KKK7j00kuN61tvvRW73c7MmTO58cYbaWz0LsF88803+etf/8pjjz2Gx+OhqakJj8eDqW1C3R2c4PZg7HdW2ejgw60lHeZR3ezkC7/qtBCbd4zulnWG2ywkR4fy5voCnG4PzlYXG4tqmZQSbQRqTlcPG61Jp47qQG3Tpk3MmjWL5uZmIiMjeffddxk7dmyX/R966KE+OwZXRERERERERI4M3VWomTrbsKwXXnvttQ57qKWlpWE2m41qtHZut5vY2FiqqqowmUwB3w4M/QLntD8zbHF4K9Ui7BbqWjoP1cLtFpxuX1UbQF2LkwjtmXbAjupALTMzk/Xr11NTU8Pbb7/Ntddey7fffttlqHb//fdz7733Gte1tbWkp6cfwhmLiIiIiIiISF/rrkItNDS0z79XXl6O2+3mRz/6Ea2trZ32CQsLXEYZGPrtE6iZwGyix1M5/dW2OKlrcTIkPpxNRXWd9mlsdWE1mwm1mo1QLdJuocHhC+BslgMLHI9VHXfBO4rY7XZGjBjBtGnTeOihh5g0aRL/+Mc/uuwfEhJCdHR0wD8iIiIiIiIicnTrrkItIyOjz79XU1PDqlWruPHGG4mKigIgJiaGGTNmdPndbivUTCbiwmy9nsfK3ComDIpm9IBIQize3x0dYmX24Dgi7BYaHS6KapuZnh6L1Wwiwm5hYnI0uyt8+67Fhtl7/V05yivU9uV2uwP2SBMRERERERGR/q+7CrVhw4YdlG8+9thjXHbZZTz00ENERkZSU1PD999/z6pVqwAYOnRo4By7qVADSAi3U9Ho6NUc8mua+TKrjInJ0UxJiQGgvtXJnopGmtqq0BbvqWBmRhwXT0jG5fGwp6KRzcW+iraEiN4HeXIUB2r3338/CxYsICMjg7q6Ol577TW++eYbPvvss8M9NRERERERERE5hLrb8D8hIYGkpCTKyso6ebN73e3D3tzczEsvvcRLL73U6fPRo0cHzrGbCjWAAVEh7Czv/sTOzpTWt/JlVnnX83S6+XZPRafPokOthFq1n9r+OGqXfJaWlnLNNdeQmZnJvHnzWLVqFZ999hmnnXba4Z6aiIiIiIiIiBxCbv/Nx/bJqkwmE6eccsohnU9MTAzTp08PuNdThdrg2DDsh3g/s1GJEYf0e/3JUVuh9txzzx3uKYiIiIiIiIjIkaCbCjWAefPmsXDhQlyuzk/D7GunnnoqVmtg5OLuoULNajEzIjGCrSX1h2SOFpOJ4QrU9ttRW6EmIiIiIiIiIkKHsKrj87i4OObPn39I5hIREcGCBQs63Pe43Ubb3EmFGsDYgVFYu3jW10YPiNRyzwOgQE1EREREREREjmrdnfLZ7sorryQpKemgz+X6668nNja2w32/KXae+gERdivT0zu+29eiQ6xMTo0+6N/pzxSoiYiIiIiIiMhRrbtTPtuFhoZy++23d7oktK8cd9xxzJkzp9NnwVSo0bavWWp06EGZH4DZBCcMjcd6EP8OxwL99URERERERETkqGa1+/Yrc7Q4u+w3btw4br/99k73MDtQmZmZ3HXXXV2O7V+h1t33TSYTM5Mjqc8u7vM5moA5QxMYEBnS52MfaxSoiYiIiIiIiMhRLTo+0mhXl9V223fu3LncddddWCx9t3/YxIkT+d///V9CQroOqlxO34EInZ3y2c7j8fDEXc/x0Q2PUrJ2d5/N0WyChJJy/nnRI3zzn+8DlslK7ylQExEREREREZGjmsVqIaotVKvpIVADOPHEE3n44YcZOnToAX3XZrNx9dVX88ADDxAa2v0yzdqKOqMdnRDVZb8PnvicL176FkdDM0t+9m+GWL1h2IFIjLBz7thB/OviP7Jx8VYe/MHfuHXqz/j6jaUBQZ8ET4GaiIiIiIiIiBz1YpO8m+wHE6gBDB48mAcffJCrrrqK+Pj4Xn3LbDZz3HHH8ac//Ylzzz03qH3ZqoqrjXbcwJhO+2xdtoMn/t/zxvVPnrmVkyanc87YgaTFhOJxuTt9rysRdgsz0mNZMHoAsWE2bH5LY/ds2Msfrvg714y4k4V/+5DGuqZejX2sU6AmIiIiIiIiIke9mLZArbGuidYWR1DvWK1WzjvvPB577DEmTpzIiBEjSEhI6LSvx+nB3GBj9OjR3HLLLfzkJz8hJSUl6PlVlvgFaoM6nuRZX93Agz/8O06Ht2LsknvP5aTLZnv7h9kZ4Wzh3Qt+z6bnPqcprwxLF/uw1RdV4swtIbGwlLlxdsYOjMLc1nfGgikd+pfmlvPkT17k2pF3kZ9VFPTvOdZZg+gjIiIiIiIiInJEi0n0LaOsLa8lMbXzYKwzZrOZn//851gsFkwmEzU1NRQVFdHa2kpLYyu/OPMR3HVgj3BjO97Gd999h8vl4rTTTgv6G1UlNUY7vpNA7Z93PktpbjkAE+aM4aaHrwx4vvrT9TSWVLPhqU+ZNWogF54/hZVLtvPNOyvYsmwnzmYHdXlltFQ3EDcwhqqSGixWM0+u/xNDxmYAMOXUCSx+a1mn86surWHL0u2kjUwO+jcdyxSoiYiIiIiIiMhRLyYx2mhXl/UuUFuxYgU5OTn84Ac/8I4VE0NMjG9ZZlRINDW1tUSmhuF2e5ddLlu2jLlz53Z7EIG/9iWf/vu9tVv06nd89doSACJiwvn5y3dhsQYemrD68/VGe/oZkyjcXcSvTvl1p4cL1LTt1+ZyuvnZqb/jsVUPMyA9kbGzRnU5v7GzM42KOOmZlnyKiIiIiIiIyFGvfcknvdhHrd3mzZux2WxdPp98yngAmitbcbd673k8HhYtWsTOnTuD+kZlW6AWOyA6YM+14pxSHr3jGeP6x4/fzICMpIB3W5tb2fjtVgCS0hPIGJPG3299usuTOt1O315r1aU1/Pz0/6O6rIbB49IIjwrr0D8hJY5HvvgloeHBhYOiQE1ERERERERE+oHYJF9FWW8DtfHjxzNr1qwun59/55kAuJ0ePPjCqlWrVvH666+zffv2bsd3u91Ul3qXfPov93S5XPzx2n/RWOs9EGDeVXM49Ycndng/a202rc3efeEmnzqeZe+vZsPXW4L+fXk7CnlgwYM01zczeuaIDs8rCqv45JlFQY8nCtREREREREREpB/wr1Cr7kWg1tLSQkJCQrcHDEw4cQy2ECtjrxiMxe6LUjIzMxk2bBgNDQ3dfqO2og532wmd/gcSvPnIe2z6bhsAAwcncdc/b+z0/S1LfYHdqGnD+NePnwv697XLWpvNL897hHlXzYW2PedufuQq4/mzP3+Fvdvyez3usUqBmoiIiIiIiIgc9fZ3yeeKFSt47733euw3dMJgQmNtVO2qw+y0Mn78eM4991yuvvpqpk2b1u277funAcQN8AZqO1bt4qXf/AcAs9nEz1++i4iYiE7f37psh9HOWpNNWV5F0L/P36bvtpEybCAv7foXr+Q8wWU/O58L7loAQGuzg0eufhRHa3AnpB7rFKiJiIiIiIiIyFEvdj8DtaqqKlJTU3vsd+oVJ7Ll1b1sfT2XHa8U4Ha7cTiCC58q/QO1QbE01Tfx0FWP4nK6APjh/Rcx/sQxnb7r8XjY8r13n7bw6DC+ePnbIH9ZRyOmDGXI+AyShw009ku76eErSR/t/f1Za7N59f8W7vf4xxIFaiIiIiIiIiJy1AtY8lkefKB22mmncf755/fY7+xb5lOT04DH7aE0v4ydO3eybdu2oL5RVVJjtOMHxfLUT16iIKsIgNHHjeCqX13S5buFu4uN/dfSM1PxuDs/iKA7SekJPLbqYR5b9TCRsYFVcCFhIQGnir7+0DsBFXHSOQVqIiIiIiIiInLU258ln3V1dbz99ttYLJYe+4aGh5KYGg+AxwVxtgRCQ0OD+o7/ks+GmgY+euZL75gRIdz38o+x2qxdvrv1e98posefO41b/3ItJ154HGZLW6Rj6vy96WdOZuDgRACqS2sZOiEj4HRRf6OmDefqX18KgNvt4ZFr/klTfVNQv+1YpUBNRERERERERI569hAb4VFh0ItAbdeuXWRnZwf9jWmnTzLaO9/PZ+TIkUG957/k8/MXfUs2b3jwCtJGJnf7rv+BBONPGM3F/+8c7nj0BuOQgxlnTOaV7Mc6vBcWGWosI3W0ONizMbfb7/zgvgsYc7z39xTuLuG5+18L6rcdqxSoiYiIiIiIiEi/EJ0YBb045TMyMpKpU6cSEhISVP+L7j7LaBcWFfH3v/+durq6Ht+rKvUFakV7SqBtP7Pzbj+jx3e3tC2/NFvMZM4YDkD25jzj+eCx6QwcPICYtt/eriyvnNHH+QK/bct30h2L1cJ9L91l7K32wROfkb1pb4/zO1YpUBMRERERERGRfqH9YIL6qgZjw//uJCYmctZZZ/XYr92wiUMICbd7v1HWiMvlorCwsMf3/Jd8trvrsZuMfcu6Ul/dwN4t+QAMnzSYsEhvBd7eLb5Abcj4dAAyxqQFvFtdUmNUnAFsX5HV4zxTRyTzwwcugraln4/d/TweT+/3bDsWKFATERERERERkX6hfR81j8dDbWV9t30dDgePP/44WVk9B03+Rk3zVok56p3YSiJJT0/v8Z3KfQK1s26ax9jjR/X4XvamXCPQ8q82CwjUxrUFaqMDTyqtq2pg2KTB2EJsAGwLIlADuOTec0geNhCADd9sYfHby4N671ijQE1ERERERERE+oXeHExQU1OD0+kkIiKi2377Ou3ak432jiV7gtqDrSyvwmhHJ0Rx40NXBvWt3G35RnvwOF9wl7PVdz9jjDdIS98nUGtubMFmtzFy6lAACncVUxPE6af2UDu3/vVa4/qpn75Ic2NLUPM9lihQExEREREREZF+ITYx+EAtPj6eiy66iLS0tG777eu0a+ZiMnmP1rQmwWeffdZt/8b6JhpqGo3rmx6+kuiEqG7faZe3vcBotwdmHo/HqFAbNCTJWAbaHqy1czlcuN1uRk0fbtzL3tT9wQTtZp07nelneA9gKMur4M1H/hvUe8cSBWoiIiIiIiIi0i/4V6j1dDBBUVERgBGOBctqtTJwaBIADUVNNNY1drvP2GsPLjTaUXERnHH9KUF/K3eHb3+2jNEpAJTmltNU3wz7VK2NmDK0w/utza2kjUoxrgt3lwT1XZPJxG1/u97Y4+3NP75HUXZw7x4rFKiJiIiIiIiISL8QEKiV1nTbd+XKlaxevXq/vjPrnGkAVGyvo/Cj2i5DudK8ct75+8fG9aRTxmM2Bx/FtFeohUeFkZASD0DOZl+V2RC/QC1uYCwpIwYFvN9U3xxwr3BXUdDfzhidyoU/9h7Y4Ghx8PTPXg763WOBAjURERERERER6RcGZCQa7YKs7sMjp9NJampqt326cuHdZxvtiKkWCgoKOu336v+9jaPFYVz7B2A9aWlqoSSnDID00SlGaLd5yXajz75VaeNOyAy4bqxrImX4QOO6cE/vqsyu+tUlxA2MAWDJOytY++XGXr3fnylQExEREREREZF+Ycj4DKO9d2tet30vueQS5s+fv1/fSR46kPBo795lofE2ln7Z8STMwt3FfPr81wH34gfFBv2N/J1FxlJS/wMHNny7xWhPPGlswDvjZ48OuG5paGHg4CTMFm/8U7irOOjvA0REhwccoPDsz1/pdnnrsUSBmoiIiIiIiIj0C3EDYohJ9G74n7O560CtqamJf/7zn1RVVe33t8bOGgVA4fIKtn29q8PzV/7vbdwud8C9fU/i7E7AgQSZ3vea6pvYuXqPMVb8oLiAd8adGBioNTe0YLVZGTTEu+db0e6SXgdip11zklEJl7U2m5WfrOvV+/2VAjURERERERER6Tfaq9Qqi6uprajrtE9JSQlVVVUHVG214MZ5ABQsK2fr4qyAZ7nbC1j0ymIAY2N/gKETMghW3na/AwnaTvDc8v1OXE4XAJP2qU4DSM9MwWT27efW1OA9vCB5uHcftca6ph4Pa9iX2Wzmiv+92Lh+9fdvq0pNgZqIiIiIiIiI9CeDx6YZ7ZwtnVepxcXFMW3aNOLj4/f7OydeNBOL1cKgqXEMO28gm5ZsM569/Lu3cLu9oZPV7g3U4pPjiEmM7nK8fRXs9u0B135S54ZvfMs9J508rsM7ZrOZkDC7b4y2feRShvsOJija3btlnwAnXDDD2P9t2/Is1n21uddj9DcK1ERERERERESk3/DfR62rZZ92u51Zs2b16sTNfZnNZiaeNJbWBhchMTae/9/XAcjetJdv3lgKQHRCFC2NrQAMmxh8dRpAdamvkiwhxbu0c2M3+6e1C40IMdq71+8FINXvpM+CXu6jRttv/eEDFxnXrz24sNdj9DcK1ERERERERESk3xg63neSZlcVakuWLOGdd9454G/d9NAVlG+pYctre9ny/Q5aWx28+Jv/GM9PvPA4oz1swuBejV1dWgNtS0YjYyNoamhmx6rd0La0c9/909qFR4UZ7faDGfxPP60o3L994066bBapI5OhrVJus19F3rFIgZqIiIiIiIiI9BuDx/kHarmd9mlsbCQkJKTTZ70xavoIYpOiiBkSASYPT9zzPEvfXQltSzwHDE4y+g7pxf5p+AVqsQOiMZlMbP1+h7F/2sSTOi73bBceE26083d492GLjIsw7jVUN/RqHu0sFgs/vP9C4/rVY7xKTYGaiIiIiIiIiPQbUXGRxhLJvVvyO91Af86cOSxYsKBPvnfytSeQfmISEclhfPb8N8b9H95/YcBJncMmBl+h5vF4jCWfsQNiIIj909rZQ21Gu6a8jtztBUTG+gK1+v0M1ADmXTnHODF09Wcb2L4yq8d3+isFaiIiIiIiIiLSr7RXqdVW1FFVUt3heXZ2Ni0tLX3yrSv/52JcLS7cDjeOFgcASekJnHXzfLI3eSvkLFYL6aNTgx6zvrrBqEZrD9TWfLHReN7V/mkANpst4Pr7/64MDNRqGoOex76sNiuX3+erUnvtDwe+bPZopUBNRERERERERPqVoQHLPvM7PF+8eDE7d+7sk2/FxMVQ+VUrDcXNxr2L7j4bkwlyt3m/nT46BXuIrZtRArUv96RtyWdxTik7V3v3TxsxZSgJyZ3vnwZgDbEGXH///ioiYn3LQPd3yWe70687mcRU7+moy95fTd6Ogh7f6Y8UqImIiIiIiIhIvxKwj9rmjvuo2e12BgwY0GffG3lJKvGZUcb1adeeRP6OQpwOb5VZb5Z7ss8Jn7FJMSx+a5lxPfeSWd2+a7MHBmrblmfR3OirxjuQJZ8A9hAbF919tnH9ybOLDmi8o5UCNRERERERERHpV4aM9x0AsLeTkz5vv/12xo3reh+y3mpoqicy2Xe65tJ3V7Jnoy/IGzp+/w4koG3J5+K3/QK1S4/v9l1bJ5Vwqz5eR3i0d3711fu/5LPdadeehNVmAeCLl77F0eo44DGPNgrURERERERERKRfGTw2zWjn7BOoNTU18Y9//IPq6o57q+0Pj8dD2YYaanN9lV9v/fkD9mzca1wP7WWFWk15XcD1jlW+5Z6pI5K7fde2z5JP2pZ9tu+jdqBLPmmrmjvhwuMAqC6r5fv3Vh/wmEcbBWoiIiIiIiIi0q+ER4UxcLD3NMqcLXkBJ302NDRQU1NDXV1dNyMEb8M3W9j5xd6APdTydxayY/Uu47q3Sz6drU6jvWdDjtHuabkn+1SohYTZAVj35SbCo9or1A48UAM466b5RvvjZ7/skzGPJgrURERERERERKTfGTzOW6XWWNtEWX6FcT8mJoZJkyaRlJTUJ995//FPGXFOKoPnDQw4LGD78iwAouIijE38g+V2uX3jrMwy2j0t96Rtj7N28W3zcbQ6aW07gbS12REQMO6vyaeOZ9BQ7z50a7/YSFF2yQGPeTRRoCYiIiIiIiIi/c6Qcb59y3I2+5Z92mw2jjvuOEJDQw/4G6V55Sz97yrMVhOhESFc/ZtLjWctTa3eeUzIwGQy9Wpcl1+gVrSnFIDhk4f0uNwTwBZqN9oxSdFGu66yHgCz2dTr+XTGbDYHVKl9+txXBzzm0USBmoiIiIiIiIj0O0P8Tvr0P5igsrKSZ555htLS0gP+xkdPfYHb5Sb782LGj5rAghvndTgUYNiE3i33ZJ8KtXYnXTo7qHdDQn3fD4sKNQ4jaN87zWzpuyjo9OtONsb77IWvcTldfTb2kU6BmoiIiIiIiIj0O0PG+wK17C2+EzddLm/o43Z3DK16w+Vy8enzXwMQlhDCjHMnYzabmXHm5IB+vd0/jS4CtWCWewLYwnwVam6HmxMvmultu73LPPsyUEtIjmPWudMAqCisYsXHa/ts7COdAjURERERERER6XcyxqQaSxv3bsk37icmJnLZZZcxaNCgAxp/y9IdVBZVAZC5IIPs/D0A3PTwlQH9kkcM7PXY+wZqwZzu2c6/Qs3hcLDgxnkBz/syUANY4Lfs85PnFvXp2EcyBWoiIiIiIiIi0u+EhIWQPNwbZuVuzTcq0lwuF4WFhUal2v5a/NYyo50wMIGIiAgA0jNTsdqtxrPv31vV67H3DdTO+dFpQb8b4leh5mhxMm52JhljUo17fbF/mr/pZ0wyDl1Y89kGGuua+nT8I5UCNRERERERERHpl4a2Lftsbmwhb0chAGVlZSxZsoSysrL9HtflcvHdOysAsIXYuPbGazj11FONZ/6naH79+tJej99Y7wulQsJDOPXKOUG/21TfbLRtIVZMJlPA4QHOPt7nzGKxMPv8GdB2muiqT9f36fhHKgVqIiIiIiIiItIvjZ2VabQ3fL0FgLCwMCwWC+Hh4fs9rv9yz+lnTGLJsu9YvXo1tJ3K6XL4Qquaslq2rdjZq/F3rc022jPOnExYRPAnklaX1xrtiBhv1dz8q+ca95wtTlpbHL2aT0/aAzWAZe/3viLvaKRATURERERERET6pcmnjjfa67/eBEBsbCw///nPiYmJ2e9x/Zd7zr1kFgUFBZSUlACQtWZPh/7/fuD1oMd2uVzsWucL1KbMm9CrudWW1xntqDhvoBaTGE1IuHcpqMfj4fv/ruzVmD2ZeNJYImK8AeWKj9bidDj7dPwjkQI1EREREREREemXhk8eQmSsN1Ra//UW3G43TqeTp59+er+XfO673HPWedPJzMxk+PDh3u98tanDOxsXbw1YxtmdlR+vo766wbgODQ/p1fz8342KjzLaVqvFaH/8bN8eHmCz2zjurCnG9zcu3tan4x+JFKiJiIiIiIiISL9ksViYdMo4AOoq69mzYS9ut5uysjKjoqy39l3uGREdzoQJE8jM9C4vXbvIG6jZ7FZikqKh7ZCBf97xXFDjv/fYpwHX/gFZMBqqG412+/ddThcNtb5Ab92iTRTuLu7VuD2ZfZ7fss/9OIjhaKNATURERERERET6rcmn+JZ9rvtqMzabjSlTpjBgwID9Gm/f5Z5ut5snnniC7du3U7SnhOLsUgDGnZDJDQ/+0Oj79etLaG1u7XbsvB0FrPl8Q8A9/4AsGI1+wVlMordCrbairkO/j5/5slfj9mTGgilYbd4quKXvrQw4mKE/UqAmIiIiIiIiIv3WlH32UTOZTMydO3e/9lBzu90dlnu2trbicDiwWCysW+Rb7jn51AmcddN8ouIjoa1K7LG7n+92/Pcf/6zDvd5WqDX5LS2NHxQLQHWZ76ACk9kEwAdPft7rsbsTER1u7FlXllfB7vU5fTb2kUiBmoiIiIiIiIj0Wxlj0oxgadPibTgdTt566y2WLFnS67FyNucZyz2nnTaRiOhwQkNDufjiixkxYgRrF200+k6dPxGAa39zmXHv8xe+prW18xM2q0qq+fS5r6BtuWi7+prehV7NjS1GOyElDoDq0hrj3tDxGdBWyfbff37Sq7F7Mvv844z20j4++OBIo0BNRERERERERPotk8lkVE411TezY9VuLBYLjY29W0oJsOGbLUa7/fTNlpYWqqurMZlMrP9qMwARMeGMmjYMgPPvXGCcgOl0uHjqJy91OvYbD//XCMPmXTnHuN/Qyyqy1mZfYJeYmgBAdamvQm3m2VMxW7xx0Dv/+IjGuuAOSwjGrPOmG+3lH67ps3GPRArURERERERERKRf899Hbf1Xm1mwYAGzZs3q9TgbvvUFahNPGgvAnj17WLRoEdvXZFFT7t2rbNLJ47D4nap55S8uNtqfPPslTqczYNzyggo+ePJzAELC7AH963u5h5qjxReoxQ3yLmv1r1DLGJNmBHZ1lfWdLjPdX4kp8QyfPASA3etzaOhldd3RRIGaiIiIiIiIiPRrk/fZR83lcvX6lE+3283Gb7cCEBUXwbCJgwEwm82Eh4ez5dsdRt/26rV2F/+/cwiLCgXA0eLk2Z+/GvD8tT+8awRh591+BgOHDDCWfXZ2oEB3nK2+sM5q9Y7hH6jFDojhh/dfiMnk3Utt4V8/CFgmeqDGzfaedurxeNi6PKvPxj3SKFATERERERERkX4teehABg31nuq55fudbNywka+//rpXY+RszqOush6ACXPHYjZ7I5VRo0Zx9913s/7rzUbf9v3T2pnNZi7/2fnG9QePf2ZUqZXsLeOTZ70nboZGhHDZ/5yPyWQiKd27XLMkp6xXJ2a6XG7vNy2+yCcwUIsmPTOVky6f7X1WVsvHT/fdiZ/jTxxjtLcs3d5n4x5pFKiJiIiIiIiISL/XvuzT0eLAWQsul6tX77dXpwFMOmmc0V6xYgWLvlzEpsXboO0ggPTMlA7v//CBiwiNCIG2fc5e+tV/AHj19wtxOrxzufDHZxGb5F2mmTJiEACNdU0Bp3T2xOP2hm/+S07LCiqNdtxA7wENV9x/oXHvP39+j9bm1qC/0Z1xJ2QabQVqIiIiIiIiIiJHsSl+yz7LNldxxx139Or9gP3TTh5rtHfs2EF+ToGxbHLq/InGckp/ZrOZi+45x7h+59GPyNtZwGcveCvlwqPDuOQn5xrPk4cNMtpFu4uDmmNjve+AAf+TQvO2F3i/ERVmnHg6dMJgTrjQeypnRWEVnz3fu4q9rgxIT2RARiIA21fswulw9vjO0UiBmoiIiIiIiIj0e4H7qG3hqaeeCnofta72TwMYOnQojmLfkswpp07odAyAa397GfYwOwAtja38/vK/4W5bonnJ/zuX6Pgoo2/qCF+gVrAruECtwq8SzRZq836nqYWSnDIA0kenBIR9VzxwkdF+45H/0tLUN3uptVepNTe2sHt9Tp+MeaRRoCYiIiIiIiIi/V78oDgGj00DYOeqXVRWVrJ3796g3t27Jc84HMB//zSAzMxMdizyhUZT5o3vdAzaqtTOv+NM43rPBu/3o+IjueieswL6pvgFaoVBBmrlfoFaSLg3uCvIKjb2YEsfnRrQf9S04Rx31hQASnPLefsvHwb1nZ6MP8F/H7Ud3fY9WilQExEREREREZFjQvs+am6XhyEDhjFo0KAe3wHY0MX+aSUlJTz55JPkZOUCkDEmlcTUhG7HuuEPP8QWYgu4d9lPzyMiJiLgXsrwgUa7aE9wlXSVxdVGOyzCe6po7rZ84156ZmqHd25+5GrjAIPXH3qH0rzyoL7VHf991DZ/3z/3UVOgJiIiIiIiIiLHhCnzfMsxa3c0ExkZGdR77ZVkAKOPH2m0Kyu9FWEtdd4N/btb7tnOarUGzMNkgvPvWtChX/KwgcbyzGCXfFb5BWqhkd5ALW97oXFv3wo1gCHj0o2quZamVp75n5eD+lZ3hoxPJzw6DIAtS7b36pTSo4UCNRERERERERE5Jkw8aawRUmUX7uaNN94I6r29W/OMdvuyUYBhw4YRXZuEq8W7D9rU+RN7HKupvond67ONa48HPnl2UYd+9lA7iWnx0Isln/6ngUZEhwOQu6PAuJcxpmOgBnDNby4jJtG7f9s3b34fcADD/rBYLIydNQraquaKs0sPaLwjkQI1ERERERERETkmRMVFMmLqUABKdpdTVVXVY/WUx+MhZ4s3UBuQkWgEVQC7d+9m9wbv/mlms4lJfqd/duWV371NRWFVwL2Xf/dWp33bDyaoraijuqymx7HrKuuNdmScdwlp+wmfZos5YBmpv8jYCG74w5XG9eN3P4/L6erxe90ZfZyvki97U+4BjXUkUqAmIiIiIiIiIseMKW37qJVuqGZcysSAUy87U15QSWNtEwCDx6UHPPv6q69xhnlPxhw1Y0SHfdD2lbMlj4V//wgAi82CxeqNZeqrGvjwqS869B8+eajR3rFyV4+/zT9Qi46PxO12k7/Du+QzZfhAbHZbl++ecf3JjJw2DIA9G/fy8TNf9vi97mSM8VXy+e/j1l8oUBMRERERERGRY8bktv3L3E4P2zfvpLi4++WU7dVpAEP8lnsCNNU1U5vXCMDUed3vn+bxeHj0jmeMyq8r7r+IeVfNNZ6/8MvXO7wz5vhRRnvbiqwefpk3mGsXnRhN0Z4SWpq8+7t1tn+aP4vFwh3/uMG4fv6Xbxgnm+6P9NEpRjt3e0G3fY9GCtRERERERERE5Jgx/sTRximbta4q1qxZ023/nM1++6ftU6HmzgqhbKP3IICe9k/78pXFbFq8DdqqxS6/73zu+teNxgmbNeV1fP7i1wHvjJk5wmgHE6g11DYa7dgB0WxdttO4HjVteI/vj5udyfyrvSFfXWU9L/zqzR7f6Up6ZopR/acKNRERERERERGRo1hYRCjTTveGX6Wbq6n0OxmzM3v9K9TGZxjtzZs3UxXprW4LCbMzZtaoTt8HqKuq5+mf+U7PvOPRGwkJCyE0PJSTL59t3H/mvlcD3ktKTyQ+OQ6A7SuycLvd3c61rsq35DMxNZ6t3+8wrsfOzuz23XY3PnQlYW0nhH745Ods+m5bUO/tKyQshIFDkqDtpNH+dtKnAjUREREREREROabMvXgWAHu/KqFuc2uH5w21jaz6bD2bl2wja+1u477/KZnrV6/H0eQAYPycMdhDut6f7Pn/fZ3qUu+hAnMunslxC6YYz378+M1GlVp1aQ1v//UD45nJZDKq1Bprm8hr2w+tK/57qGVOH25UqJnNpoBqt+4kpsRz9a8vg7Zlqn+87l801jUF9e6+2v9ejXVNVBRW7tcYRyoFaiIiIiIiIiJyTDn+3GlYbRYsdjMlkXt55+kP+PutT7P68w0A/Or8R3hgwYP8v7m/Ys/GthMqTXDLxJ/wlxsfx+lwUp/bSu7iMgCOO3NKl99a/fkGPnjycwBCI0K49a/XBTyPiA7ntGtOMq6f/8XrtLY6jOvRM32Vb6/87m1+dcEjPPfAa7hcHU/hbKpv9o0bE26crjls0hDCIsOC/vtcdM9ZjD9xNADF2aU88f9eCPpdf+mZvgAyd1v/2kdNgZqIiIiIiIiIHFNCwuwMHpeOy+HG43bz/osf8dHTX/DI1Y8CUFlU1fEljzdc+vT5r9n43Va2rdhJVZZ30/4TL57Z6Xdqymv503X/Mq5vePAKBqQnduh3z1O3EBJmB6C12cHfb3kKj8fDp/9exNblvmWb37y5lGXvr+aNh98ld2vgvmROpxOXwxuy2UJsbFuxy1hmObab5aidsVgs/M+LdxpLPz/991d8/96qXo1Bh5M+FaiJiIiIiIiIiByVPnjiMy4ddBO71+eAB3Z9WEjVbu9SyeiR4VRUVHDSpbO7fD8qLoKqhgrijwvDGmZhzPEjOw3JPB4Pf735SWOPtulnTOKCuxZ0OqbVauXGh680rr946VvOi76av9z0JMveW93pO+HR4QHXedsL/Z6FBeyfNu6E0d38RTqXPHQgt/ud+vm3W56kqqT7/eb25b9Etr+d9KlATURERERERESOGc//8g0aa317gkUPjmDyzcOZdOMw0ucnsGfPHs644ZQu37/pkavZviGLpsoWnE0u5rTtx7avT55dZFR1xSRG8dN/32GcetmZC+86i/jkWOO6uaGly77h0WEMyAgM8bLW+PZ6i02KZsv3243rcUEeSLCvM647mRMumAFAdVktf73lSTweD3u35vHdOytwOpzdvp8x2heo5W3vXyd9KlATERERERERkWPG6dechC3Cyom/Hs+Ea4cwcFIsZquZqLRwTJhITU0leehAps6f0OHdcSdkcuYNp7Dlg11sfD4b2g4Z2Ff+zsKAfcfufeY2EtpO6+zKW395n5qy2qB+w5DxGR3CuZzNvtNIE1Lj2bY8C9pO+9w3fAuWyWTinqd+ROyAGACWf7CGB6/4O7dM+im/u+TPvP2XD7p9PzohitikaADydxbt1xyOVArUREREREREROSYccufr+G0K06iOrue6IwIzFZfNBLTmkRKSgoAC26cF/Ce2WLm7iduoXB3MbaRbqyhFkZNH86gIQMC+jkdTh666lGaG70VZmffPJ/Z58/odk7LPlzD0z97GZfTHdRvGDYho8O9/CxfYBUZE24cUDB2dma3lXE9iU2K4d5nbjWuv33ze9wu7zyXfdD5clR/AwYnQdu+dC5nx4MUjlYK1ERERERERETkmGE2m7nnyR8xLCqTzS/nUFfkW/7pifKdrjn7guOw2q3G9dm3zGfo+Ay+WPgV8SOjMFtMzLmoY3XaS7/5DztXe5dfpo1K5kd/vbbHOTn9TvXszL6B2JBOArWy3Aqj7XD4gqsJJ47p8fs9GTV9OLEDojvcz1qzh9aW7ueelBYPgNvtMfaT6w8UqImIiIiIiIjIMcVkMnHnozdy2kWn0lDUjMftwePxYLL4git7iI2ZZ08FICQ8hJv/eDUAG77aSummahpKmjnx4uMDxt24eCtvPPxfACxWC/e/ejdhEaE9zmfORcdz2f+cj8nceSVZ8vDAKrgB6Qkd+lSV+sKqsrxyoz39jEk9fr87lcVV3DHjPqpLOy5HdbQ62bUuu9v3E1LiffPKr+i279FEgZqIiIiIiIiIHHNMJhO3/OlqkiPSaK5uxWQyMWZcJs0OFwU1TWwrrePif/2I+5b8gT9t/yfNZgvFOaVkb8wl670Chk0aTNrIZGO8mvJaHrnmn3g8HgCu/e3ljJo2POj53PzwVbyY9U/SRiV3eFZbXsfl950PQFhkKFNOm0hVYyu7yxvYUlzH5uJaBp4yieSZo7DHhJO9cS8Ag4YOIHVkx/F6Y8VHa6korOryuf9povtqdrpImDiUUZeeyNirTmF3bQu7yxuoamzF3fZ3OlqZPJ6j/BccgNraWmJiYqipqSE6umPpooiIiIiIiIj0f6sWb2FnUy32gek0OruJSVwuGsry2fzCt8yePJqrfnFx220XDyx4kLVfbgJgwtwx/GnRr7FYLPs1n7f+8j7P3PcKHrd3LvZQGx80vEp2aS17qlsoaWjF5e56nnX55WR/soYhUXbu+vM1+zWHdjXltfz6wj+yZWnnwdnUeRN45ItfGdcNrU6yyhrYXdlAfUvXe6ZZzCYGRYaQOSCS1JhQzAewz9vhoEBNgZqIiIiIiIjIManJ4WJVXjU5lY30NhwJM8HxwxLJiAvjuQde442H3wUgdkAMT6x5hMTUjssye6O2so6bx99LdVktN750N+ZxQ2ho7eWm/h4PwxIjmJEWS6ht/8I97zAeNi7eytt/+YDlH64JeGYLsfJx0+s0O1yszq9mT0Xv/5YRdgvT02IZEh++33M81BSoKVATEREREREROebsqWhgZW41La7gTtbsSmRDI/++4A+01jRitpj545e/YtJJ4/pkjk0OFytyq9hb1RRE766FWs0cPziOwXEHHljt3ZbPW395n8+f/waPx0NYVCj/zHmK5XuraA7ylNKuDI4LY2ZGHGEHEP4dKgrUFKiJiIiIiIiIHDM8Hg9rC2rYXFzXZ2PW5ZXz5Z1PcPVPz+Pi/3dOn4xZ2+zg851lva9K68ak5GgmpUR3ODV0f5TklvPhk58z4vI55HR/0GevRNgtnD4qiehQW98NehAoUFOgJiIiIiIiInJM8Hg8rMmvYUtJ34Vp7Zy1DVx+wnAiQzoPgtxuN6/87m0+/fdXXH7fBZx/x5ldjlXX4uST7aU0OfouTGs3MTmaKakxfTLW+oIaNhR1PP3zQIXZLCwYPYCoEGufj91XFKgpUBMRERERERE5Juwqb2BpTuVBGz8+3MbZowdiNgdWgDlaHfzlxidY9Op3AIRGhPBOxfPY7IHhm8vlojS/gsUljTSbD96yxxkDwhmbcWB7vGVXNrJ4T0WfzWlfsaFWzhk7CIv5yDys4MiN+kRERERERERE+khDq5OVeVUH9RuVjQ42FdcyKcVXAdZY18RvL/6TcQIoQHNDCy/95i3soTZKcsoo2VtKcU4ZZXkVTLjlTMZfN++gzvO7naX8ft5vSBoQTeqoZNJGppA2KpnUkcmkjBhEWERot++37+12MFU3O9lQWMPUtNiD+p39pQo1VaiJiIiIiIiI9Htf7Sojr7qZK6akUtHYCsCmojoKa5sBGBBpZ8HogbyxvoCWA9hc32yCc8cOIjbMRmVxFQ8seJDdG/YG9W7cyBQWvHQvV01P7zDHxAg7U1JiMJmgoKb5gJet5ny+jiW/eLnTZ0lpCaSOSmb0jBFMmDuWcbNHERETYTz/dnc5OW0HJXT295yZEUt8uB0TsKaghpK6lv2aowk4Z+xA4sPt+/X+waQKNRERERERERHp16qbHORVe4Oz+lYXn+0o69Bn7MAoyhtaD/hbbg9sK6kjpbGRO2bcR0tTcGNGxUVw3J3nYLaYO8zRbPIeKPDV7nJc7r6pixo8fzLrHvuQhqKOlWZl+RWU5Vew/qvNvPHIfzGbTQyfPIQJc8Yy+pTx5KYMNPruO9eoECsxoTY+2V5KuM3C3GHxfNrJ3zsYHmBLSR1zhh7Y8tSDQYGaiIiIiIiIiPRrO8vqjXaEzcKZmUk0tLpYmVtNi8tNWkwopfUtpMea++R7eyob+ebR97oP00zwPy/eyfCJQxg4OBFLeChvbSzE7ek4x9gwG063h5OHJ2DGxOr8aqqaDuxoTZPZxP1L/kBibT35O4soyCoiP6uQgp1F5O8sorbCVwHndnvIWptN1tpsJjth/LW+QG3fuTY7XDjdHkyA3WqmuZfVfuePG8Sa/Grya7wBaE5lIzPSYgm1Hbw95faHAjURERERERER6bc8Hg+7KxqN63c2F9HidDMiIYIpqTEsz60ic0AkX+8qJz02LODdMzKTSIoIwe23W9aa/Bp2+AV0nXG6Pcy+9QyWvPU9rV2Fah6ITYxm2MTBAGwvraO9+GzfOZbUtxAbZuOjbSVE2C3MGhzPpztKjaEGRNqZkBxNUkQIJqC+1cmeyka2lfjG7Mze2haOmziY4ZOGdHhWUVTF5iXb2bR4K5u+20b2plw8Hg/Dzpoe0K+zv2dDq5MLxydjMZv4end5wN9zQGQIH24tMQJBm8XEFVPSeHtjIQ2tLt7bUhwwvtsDOVWNjB4Q1e3f/FA7agO1hx56iHfeeYft27cTFhbG7NmzeeSRR8jMzDzcUxMRERERERGRI0Rti5NWl69Kqn1/tOyqRkYlRTAsPpy86qYug6c1+dVsK+0+QOuMPTmejxpepbywkqw1e8has4eda3aTtWYPlcXVRMVHkj461ehf5rfcdN855lY3UVrfgtPtoabZid3iO/kyLSaUucMSWFdQw5LsSlqcbqJDrUwYFE2YzUJDq6vLOTY53DQ6XETYO8ZDCclxnHTpLE66dBYAtZV1rF+WRXZSTEC/feeaEh1CiNXCO5uLCLOZmTciiQ+3lRj9W51upqbGsGhXOcHqi6W4fe2oDdS+/fZb7rjjDmbMmIHT6eSBBx7g9NNPZ+vWrURERAQxgoiIiIiIiIj0dxV+YYzVbMLl9uABBkWGUNviJDbMRkKEnYzYMOLCbMwdmsAXWT3v+WU1m5iWFkNaTBgWs4nCmmZW5FXhcHkCvpuYEk9iSjyzzvVVdlWV1hAeFUpIWEiHeXY2x/KGFiYmeyu0Qq1mXH7h33EZcWwurgsI/WqbnSzNqTSuQ61mZmbEMSgqBKfbw57KRtYX1OBp+25ngdq+ouOjGDx7NNm7K7r9e4LJCNkcLg9WsylgnB1l9YwZEMXAyBBK6jseVnDxhGRW5lWTV91k3FOg1oc+/fTTgOsXXniBAQMGsGbNGubOnXvY5iUiIiIiIiIiR46aZqfRjg61MntIPA6XG7cbvt9bGVDBdUZmEouzK7oYKdAJQ+Jxezy8v7UYjwdmD45jZkYcS7IrO3x3X3EDAqu8PB4PtW39O5tjq8vDrvJGzswcgNkEq/OqvX1DrESFWMmubOh2rnOHJdDkcLFwUxEhVjPzRybhdLnZVFzX7Tz3VbtP387m2tjqYlhCOGdmDsBiNrGhqDbgnRanm03FtUxNi+GT7aUEo7bZicfjwWQyBdH70DhqA7V91dTUABAfH99ln5aWFlpafOlnbW1tl31FRERERERE5Ojn9FvLWdno4MOtJV327ez0z6lpMUxO8QVgb20sxGI2kREXxpvrC4yKtHWFtZw/bhBLsyvxtH032BDI7fGeaNndHHdVNLCrIjA4C7F5D1HobllnuM1CcnQob64vwOn24Gx1sbGolkkp0Wwqrgv4+/Rk375dzbU9VOzKtpJ6xgyIJD02jOK65h6/62n7G1mOnDytfwRqbrebe+65hxNOOIHx48d32e+hhx7it7/97SGdm4iIiIiIiIgcPuYDDGHW5td02EMtJtSG2WTi4gkpHfqH2Sw0OlyYTARdUbW/hVctDu/Sygi7hbqWzkO1cLsFp9sdcNpmXYuTiLZTM3vz7b7Ks1weD+sLa5maGsOn2zsu++z020dQmEZ/CdTuuOMONm/ezJIlS7rtd//993Pvvfca17W1taSnpx+CGYqIiIiIiIjI4WC3mPt8zIZWJ26Ph/9sLMTVRYVXSC++azaZsJpNvaoWo+3AhboWJ0Piw9lUVNdpn8ZWF1azmVCr2QjVIu0WGhyuXs8zxNp3f8td5Q2MGxjF8MTwHvtazSbMR1ii1vf/Vx1id955Jx9++CFff/01aWlp3fYNCQkhOjo64B8RERERERER6b/iw219Pmaz001edRMzM2KNkCnUaiYjNszvu/ZDMs+VuVVMGBTN6AGRRjgWHWJl9uA4Iuzearmi2mamp8diNZuIsFuYmBzN7rblo/7zLM4p5Y2H3+WzF74me9NeXM7Aqre4PvxbeoC1BTVMGNRzNtPbv+WhcNRWqHk8Hu666y7effddvvnmG4YOHXq4pyQiIiIiIiIiR5iEgxTGLMmuZHJKDGePGUiI1Uyzw0VOZSO5badTrnpzCburapgwdywT5owhOiGqx3mW1vf+NMv8mma+zCpjYnI0U9r2eqtvdbKnopGmtiq0xXsqmJkRx8UTknF5POypaGRzsbeizT/I+/MNj7Phmy3GdUiYnWGTBpOWmUJCcjzn3nlmr+fXndzqJsYPiiK0bflpVxIj+j4UPVAmj8fTu3rCI8Ttt9/Oa6+9xnvvvUdmZqZxPyYmhrCwsG7fbVdbW0tMTAw1NTWqVhMRERERERHpp97fUkxVk+OQfvPLO56geFWWcT1kXDoT5owh87gRpGemkDYqJSBky6tu4qtd5Yd0jokRds4eM9C4/umpvwkI1PYVERPOzd//kfKG3gd/B+LUEYmkxwaX9RwqR22g1tXGfs8//zzXXXddUGMoUBMRERERERHp/7aX1rMit+qQfa+puIqF5/8eeohcouIiSB2VQtqoZFJHpcC8qbish24xYXpzE45dBZTklFG8t5SN326lJKfjSaft7KF2/pH7NEtzuj/Fsy9F2C1cNCH5iNtD7agN1PqCAjURERERERGR/s/hcvPWhkIcvdz0f39NT4sl3Q6bl2xn0+JtbPpuK1lrs3G73N2+N/76+Uy+7axDMseWmgbeOed3uFqCq9wLiwzld+/dx/iTxvL2hiJaevgtfWVKSgwTU468zOao3UNNRERERERERCQYNouZicnRrCmoOejfigyxMCopApvFzOzzZjD7vBkANNY1sW35TvZuySd/ZyH5WUUUZBVRmutb5rnjP0sYedEsIgbGHfR5bnzms07DNJPJxL61V+mZKTz06S8YODgJgEkp0azMqz7ocwy3WRg9IPKgf2d/qEJNFWoiIiIiIiIi/Z7b4+GT7aUHff+vMzKTGBQVGnT/5sYWinYXk7+ziPydRZQ2O4g9d9ZBnWPtzgIq31nCwMFJDBoygIFDkhg0JIkBg5P42y1P8u1/lhl9x84axf+9//OA/d48Hg+f7SijpL7loM5z/shEUmOOrL3T2ilQU6AmIiIiIiIickyoaXLw0fYSHK6DE4WMGxjF9PTYAx5n+d4qdpTV98mc9hViMXPWmIFEh3a+aPGr177joaseBWDWedN54LV7CA0P6dCvrsXJh1tLaD1ISz9HD4hkZsbBr9TbX1ryKSIiIiIiIiLHhJgwG45vN+KYMhJbRPBVZMEYnhDOtLSYPhnruIxYWlxuciob+2S8djaLiXkjE7sM0wBO+eGJ1FU1YLaYOeumeVislk77RYVY8SzbTOvYodgj+7aKbEh8ODP6IJg8mFShpgo1ERERERERkWPC8g/X8MvzHiZhbAYn//kGwhL7JgsYEm7h+YseJiTUzo+fuJlxszIPeEy3x8PK3Cp2lDX0yRzDbRZOHZlIQri9T8Zb88UGHljwIDEjUjj5Lzf02b5vmUkRHJcRd8Sd6rkv8+GegIiIiIiIiIjIwVawq4iHr/YuZazYmkvs1myGxYcf0JgRdgvzRyax4o/vULCziD0b93LPCb/gp6f+hhUfrcHt3v/lkGaTieMHx3PqiETCbAcW3wyNDWV6mKfPwrSSvWX84Yp/4HZ7qNpZQOT6XYxIiDigMcNsZuaNSOT4wfFHfJiGlnyKiIiIiIiISH/X3NjCby/+Mw013iWUcy6eyeX/72xMJhPDEsJ5653VxE0YEvR4YTYzmUmRjBkYhd1iZtT04Xzx0rfG8w3fbGHDN1tIH53KJfeey/yr52IPse3X3NNjwxgQmcyW4hpWbS0iND4qiLe8UmNCyQi1cMfgHwEQkxTNk+v+RGJK/H7NBaC1xcFvL/kztRV1AMw8eypX3X8BZrOZYQnhvLlwFbHjB2MKMhQLs5oZmRTJ2IFRhFiPnrqvo2emIiIiIiIiIiL74emfvUz2plwA0ken8tN/32EEPs6Ccj668VE2Pfs8Jd+tJi0mlNB9gh23w0lCuI1RSRHUbfqetY89xe6FS7BbvP1OvGhmp9/N217A32550qiM218hVjPhheW8c87vWHz/i+R+toaKbXm4HM6AfmE2M2kxoYyJC6Xqta+I3LGXvCVbjOc1ZbVcmXErL/76zf2ey/P/+zpZa/YAkDJ8IPe9dBdmc9vfq6KGj258lI1P/puib1aQFhPaobrObIL4cBsjEyNo2LaCdU8+w843vjmqwjRUoSYiIiIiIiIi/dnyD9fwwROfARASZufXC39KeJRvE/3vFq7AZDax5aWtzP7DNOaNTKIsr4y//OhpCvaUUlFYicfh4sP6l6mtreXz3O2EpVr4ZtlXhITaOfvm00hMiWdARiKlueWdziF/R+EB/45Vn67H7XSRu2gDjTvyKc+vwGQxc+cTt3D6tSdjMZuwtQV8dx5/PztW7uKjv3/IHf+8PmAct9vDK//3Np+98DUPfvQAQ8dnBD2HtV9u5O2/fgCAzW7lV2//lKi4SOP5koUrwATb3tjOjF9MYt7IJKpLq3n4hicYddwIrnrgYqxmE2azibq6Or7Ys4XQZBPLNnyH7R8WLrr7nAP+Ox0qCtREREREREREpF+qKqnmLzc+blz/6C/XMnhMWkCf7xYuZ/CpA4hKC+fEi47D4/Hws/m/oyCrOKBfdWktJVVFxnXM4Age/fGzmEze0zDHzhrVaaAWPyiWnzx3+wH/ltWfbzDazlYHAB6Xm1GTBhNqCzyJs2i3b+5P/eTlTscry6vglkk/4da/XMvF9/QcZNVW1PHH6/5lXN/40JUMnxS4THbxwuVkzB1A3Kgo5lzsrdr72fz/I2dzLms+Xsv0U8Yxcc5Y7xyLfH/LqLRwnv3fVzBbLFxw54Ie53IkOLrq6UREREREREREguDxePjzjY9TXVYLwPHnTuOcH50W0Cd/ZyF7Nu4ldlgkIeZQBmQksfS/KzuEaQDl+RUMGjiI5ppWAKyhFsZensFbL77Nf//1CWOOH9XpPK78xSVkTh9+QL+lobaR7ct3ApAxJpWmumbj2bBJgwP6Olod1Fc3GtfO1sBloQE88Mrv3u7x+x6Ph7/f+hQVhVUATJ0/gQvvPiugT2luGdtXZBE7PBKL00raqBRWfbqOnM25Rp9Pn/vKaA8aNIjmqra/ZYiFzEvTeX/hB/znz+/3OJ8jgQI1EREREREREel3Pnjic1Z+vA6A2AEx3PvMbR02yv9u4QoA9n5VwoRRE2msa+KxH/+70/HK8ivI2rIbe4RvsV/s0EiGzB/EOy//l+Kc0k7fe/4Xr1NeUHFAv2X7iizcbg8Ak04eT2uzt0LNbDFjtwcedpC/oxC3K/jTRWedN73HPp+98I3xt4qKj+RnL9zp2zetzZJ3VgKQ+00JowePpbmxhUfveDagz7L3V9PS1AJA9o4crBG+yrrYIZEMPnkgH7/7Ma/94Z2g53+4KFATERERERERkX5l79Y8nvrpi8b1z56/g7gBMR36fbdwGSExNsKTQjjl0jm89Os3KS+o7HTMot0lfLP0K8xWMx6PB4/HQ9GqCrK/KKa5qpV3//ExY44fRXh0GLf+5VpOunw2APXVDfzphsdxu4MPufa19fudRnvYhHQ8Hm+4FhoR0qHvno25He515Wcv3M7/vHBnt30KdhXx2I+fM67vfebWTk8JXbxwGfYoKxHJYZx66Vxee3AhxdmBIWN9dYMRvH359RdY7Rbjb1m8rpI9nxXRVNHK8794nVWfrQ/6dxwO2kNNRERERERERPqN1hYHD131qFHFdf4dZ3Lcgikd+hXtKSFrbTaDTx1AyoxEGqobeffRj7scd++2PFoHt5K/rBxrqJmG4maK11ThcXmMPj/4+QXMPHsqFouF2so6tizZTnlBJWu/2Mj7j33GBXft3/5gm7/fbrRtYXaj7X8gQLvsTXuDHnfr9zs5/ZpTunzudDh5+Op/0tzgrSo784ZTOfHCjiealhdUsGXpDtLnJJF2YhIet5u3uli6+clzi5h35RyaW5opXFmO2WamoaSFkjWVuJ2+v2VDdUPQv+NwUIWaiIiIiIiIiPQbL/7yDXavzwFg8Ng0bv7jVZ32+27hcgAsIRbiwxN44VdvGMsqO7NnQy6DWoeQ83kxuz8sJHlGAuFJ3gqxCXPGcP8rP2bWudOxWLzLGKPjo/jpv32HETxz38vkbi/o9e9xuVxsX54FQHxyHJVF1caz+OTYDv33bs3vcqzohEgu/em5xvXHzy6iqrS6y/6v/n4h21d4v50yYhC3//26TvsteddbdWYJNRNti+Wl376F0+HqtO+Gb7aQn1VEunkEez4pZtf7hQyaGkfEoFAAxs4axc+ev4OTLpvd5byOBArURERERERERKRf2PTdNt76ywcA2OxWfv7KjwkJ67gsEr9Abc8nRVx02cU4Whzdjp23o4BRk7yHC3jcYI+0Ej8qCoAf3n8hp14xp8MebdNOm2RUpbU2O3j46kdxOro5JKATe7fk01jXBMC4EzLJ8wvlBg5O6tA/MbXjcsyBQ5J4r+YlFpY9zy1/vIa4gTFtv8PD/136106/u31lFq89uBDa9mq7/5UfExYZ1mnf9r9lzhclXHjRBT3+Lbd+v4PMySOMa3uElfhR0QBc+tPzOP3akzv8LY80CtRERERERERE5KjndDh59PZnjP3Frn/wCkZMHtpp37L8Crav3EVovJ1ZPx9LYnocD7x2D3f84wbGnzDa6DcgIxGr3btbVnNDCxPnjuXpjX/hxax/MmboOOoKvEFX+4b9nbnp4StJH50KQNaaPbzyfz2fqulvy1Lfcs9xszID9iVLz0zp0P+2v13Hr976Cf9a8RBDxqd7f29uOSazL6Dy3zdt03fb2L5qV8AYLpeLR29/xqjYu+bXlzH6uJGdzq+6rIZNi7cREmNj1n1jSRqSwM+ev4M7/3kjE08aZ/RLSk8gbmAMmTOGM/2MScw8exrPbv4rz+94lMnjplCX7z2ZdMk7Xf8tjyRBB2q33XYbn3/++cGdjYiIiIiIiIjIfnj3Hx+TsyUPgMwZw7nonrO67Lvmi40AxA6LxGI3Y7fbiUmM5oK7FpCYnmD0+8PHD3DOj04zrnO3FTB0fAYpwwdx3g/OwWrxhm1L/7sSl7PzJY4hYSH8/OW7sFi9S0Ff/8M77NkY/D5nW5btMNpjZ2dSUVRlXA+dOLhDf3uonTkXH0/mjBGMPX4UAG63h6w1e4w+08+YzIgpvrDxrzc9ETDGh09+QdbabACGTRzMD35+QZfzW7doMx6Ph5ihEVhCzISEhBAdH8X5d5xJ8tABRr/fvPMz/lP0LP9a8TDxg+IAGDw2nbSRyZxz2VnY7d694ZZ9sJrWHircjgRBB2pPPfUUZ599Nk8//fTBnZGIiIiIiIiISC+U5pXz0m//A4DJZOLHj99s7GXWmfVfbQKgLr+RSZmTsVp9ZzbmbPaekmm1WUgdmUxGW3UZELAHWlVNJaN/mEZovJ3aijo2Lt7a5fdGTRvOlb+4GNrCrcfved6opOvJlqXeQM0eamPElCHUV9Ubz/xDsc6MaQvUALa17cPW7oHX7jba2Zty2bXeG6BVFlfx/C9eN57d9dhNRhjYmXWLvH/L+sImxgwZR0iIb4ltzhbv39JkMpExJq3LMaprqhlxcTLhA0JorG1i3Zcbu/1dR4JeLfm02+3cdttt/P73v++23xdffMH1119/oHMTEREREREREenRk/e+YJxEec6tpzNq2vAu+3o8HiMEikwMZ/4584xnToeT/B2FAKSNSsFqswYEQbnbfBv+JyUlYcJEeKI3QFr+wZpu53j5fReQMnwgtG3Mv/jt5T3+rsriKmOJZ+aMEdjsNuP0UtqWUXZn9EzfMs1tK3YGPEvPTCVzhu/v9JcbvVVqT//PyzTUeJdfnnHdKQFLYDuzbpE3/AqLC+X08+Yb991ut3FAwqChAwgN73wvO4CEhATMJrNxyMOyHv6WR4JeBWp//vOfmTt3Lr/+9a+5++67u+xXWlrKSy+91BfzExERERERERHp0qpP1xl7mMUOiOH63/+g2/57t+ZTWVyNJcTMyItTyM3LNZ4V7Co2Tqds338sY0znFWqhoaFcdcXV1GQ3ALD+683dftceYuPWv/pOyXzqpy/S3NjS7TvZm3xzGzXdG375n57pX1nXmYwxqYRHew8S2LY8q0NV3E+e851CumtdNp+98DWLXvkOgKi4CG565Mpuxy/aU0JxThkmi4nRl6eTm++bb2luuRFyDh7XdXUagM1m49prrqM22xvk9fS3PBL0KlCLiYnhs88+44ILLuCf//wnV1xxBU5n706nEBERERERERHpC63NrfzrrueM61v+dDVRcZHdvrO2bTmhLdwbRiUk+Kq89rbtwUbb/l60hXRRcREA5G0rCBjLhZMJF3lPq9yzcS/VZTXdfvv4c6Yx48zJAJTlVfDmI//ttn/e9kKj3V4p175Xm9nSc6RjNpvJnOGdX2VRFWX5FQHPh47PYPjkIcb1o3c8a7RvfOhKYpNiuh3f97e0YDJ1/bcc0va37I7T7WDiJd4lqgVZRZTmlff4zuHU61M+7XY7b731FjfddBNvvPEG55xzDo2NjQdndiIiIiIiIiIiXXjzkfco3F0CwIS5Y5h/1dwe32lf7tlc1cp5889n4MCBxrO9W3xLOgeP84ZAJpOJ9LYwqyy/gjq/PcwKCwuJzgwzrjd8vaXbb5tMJm7723XGnmRv/vE9irJLuuzvXxHXXinnaTt502INLtIZOXWY7/dtze/w/N5nbzParU2tAIw+bgQLbprXoe++1rb9LVvrnJx54lmkpvqq+XI6+Vt2p6ioiLChvoq79V8d2VVqvQ7UaEs4n376ae6//34+//xzTj31VCoqKoJ4U0RERERERETkwBXuLub1h98FwGK1cNe/bsJkMnX7jtPhZOO33sMD0mcOosZRHfA8e4tvyeIQv2WKo6b5Qin/zf2HDh1KdFS0cb0uiBAoPTOVi+72nkDqaHHw9M9e7rJv3g6/QG10Ks2Nzca11d79cs92qSOTjXbR7o7h3aipw0jz60PbQQRmc/eRkdvtNkKv5EkJ1LoD/5Y5/n/L8T0HakOGDCEmylcRd6Qv+9yvQK3dgw8+yN///ndWrVrFnDlzyM/vmHSKiIiIiIiIiPS1J+59AUeLd4P+i+85m6HjM3p8Z8eq3TTWNQEw5IRB5ObmBjzP3rgXAFuIjZThg4z7408cY7Q3L9lmtDMyMrjuhuuw2rwVZ8GGQFf+8hLiBnrDoyXvrDCWTu4rt22JaUxiFNEJUVQUVBnP7KH2oL7VfhACQOGuok777Hu4QUxiVI/j7tmwl9qKOgCGzU3r8Lfc0/a3NJtNASeldiU1NZWbbrmRkDDv71r/1eagT0I9HA4oUAP48Y9/zCuvvMLu3bs54YQT2L59e9/MTERERERERESkE1uX7zRO1UxMjeeqX10S1Hv+wdWglEGMGjXKuK4qqSZ/pzdwGjFliLEsE2DcCZlGe8v3O4y2x+Ph8ScfY8JZvdv7KyI6nJsevsq4fuzuf+N0BO5R31DTQGWRN0BLbwukygsqjeftwVNPUkb4gsGC3cUdnu9an92hsu5P1z/e47gBf8vUQWRm+v5G9dUNZG/0BmxDxmcEFf55PB4ef+JxJp7vPVW0LL+CgqzOA8AjQdCBWmJiYpfPfvjDH/L+++9TWVnJiSeeyPLlPR/9KiIiIiIiIiKyP1789ZtG+6pfXkJYZFi3/dut+2qT0T7znNOZOXOmcd2+FBRg0snjA95LTIln0JAkALavyMLR6q2MM5lMWK1W0ib5Qqtg9/6af/VcRs8cCW2VaF+9tiTged4OvwMJ2gK19oANIDQiJKjvJKbGYwuxQRdLPl/6zX863Nvw7ZYOBxjsy/9vOe/MUznhhBOM603fbTOqyyadPC6oebb/LVPGJfl948hd9hl0oFZaWsrll1/e5fMzzjiDL7/8EpPJxOOP95xkioiIiIiIiIj01qbvtrH2C291VPKwgZxx/SlBvddU38S2ZTsBSJ+Qwkv/eZHS0lLj+YZvfAcKdBYCjTvRWznV2uxg17oc4/6CBQuYctwU4zrYZZ9ms5kf/elq4/r1h97B5XIZ17l+J4q2V6hVlvj2KQuLCi5ENJvNJA8bAEDh7hLcbrfxbMeqXSx7fzW0BW/Jw9qWh3rgLzc90eWYrS0ONi32Ln0dMCyB/3zwOgUFvvn29LfsyhlnnMG046ca10fyPmq9WvJpsVi6fT5z5kwWL14ccKqDiIiIiIiIiEhf8Hg8PP/L143rq355CVZbcJvzb/puO06HN7Aae/IIXC4XdrtvKeKGb70hkMVqYdzsUR3eHzd7tNHestS33VVaWhoDhycYSzDXLdoU9N5f408cYwRO+TuLWPyWb8Vf3vaOgVpNea1xLzzIQA2/ZZ+OFgcVhb4qN/9Kvyv+92J+/MTNxvXaLzZSWVxFZ7Yt20lL24mg4+dn4nQ6CQnxVcxtbPtbmkwmJswd0+kYnUlNTSUhPZbI2Ahoq/bzDwCPJAe8h9q+xowZw6ZNm/j000/7emgREREREREROYatW7TJqIxKG5XMvCvn9OrddlNmT+Kss84iNjYW2vZPa68IGzV9WKdLSMf77aO22S9Q27x5M++9/x7j53iDo/KCyl7t/XXlLy422q/9YaERIBXvLTPut5/UWVteZ9yLjIsI+hspw3xLUgt3FRu/YdWn6wEYNCSJM284hemnTWLgYO+SS4/Hw19vfrLT8QL+lrMmcuaZZxpbhdVXNxgVfEMnZBAd3/MBB+22b9/OwoULmXSy929ZW1FH9qbcHt87HPo8UAOIiYnhtNNOOxhDi4iIiIiIiMgxyOPx8MKv3jCur/71ZQEHB/Rk7SLvMlGTycSI6UOIi4vDZDLBvvunndT5EsXB49KJiAkHYMvSHUYVWmJiIq2trQFLG3uz99fkU8Yzdpa3Ii5ncx7fv7cKgOrSGqNP/CBv8FdbWW/ci46PDPob/gcTFLYdTPCi39/yyl9cgs3u3WftjkevN+6v/GQdtZV17Kv9bwkwauawgL+l//5pE08aG/QcARISEnC5XEz028Mu2D3pDrVeBWpbt27lmmuuYcaMGSxYsIAXX3yx0zLGV199tcfloSIiIiIiIiIiwVr5yTq2Lc8CYMi4dE6+fHbQ71aX1bBnw15oO8Fzy47NLFq0yHjuv+fXxC72/DKbzYyd7a1Sqy6toaCt0iszM5M77riDqfMnGn39N+zviclk4spf+E4pfe3BhXg8HiNQs4faCIsMBaC+qsHoF50YfOVXUlqC0a4qqWH915tZ/7X3N6eMGMRp15xkPJ917gwS2/p73B7+dvNTAWM11DSwY9VuADLGpLI7bxdffPGF8Xx/908DGD58uPdvOW///paHUtCBWlZWFjNnzuStt97C4/GwefNmrr/+eubOnUtxccdjV0VERERERERE+oLH4wnY7+ua31yG2Rx8jZB/ldOUeRPxeDzExMQY99r3TzNbzAFLO/c1brbvWXtVW0tLCx999BGpowcaFWwbvt7Sq72/Zpw5mZHThgGQtTablZ+so7rUu19a7IAYo/qrsbbReCc2KaaL0TqKiA032vVV9YGVfr+6tEOl321/vdZoL31vJfXVvsq4Dd9uxe3y/rap8ybidruJjo42nrfvnwYwcW7vKtQcDgcff/wxCRmxxA2MaRtvK06Hs1fjHApB/9/3i1/8gsjISDZt2sTq1avJy8vjpZdeYtOmTcyaNYsdO3Yc3JmKiIiIiIiIyDFp2QeryVqzB4ARU4ZywoXH9er9tV/6qpymzp/A/PnzOf/88wGoKq0x9k/LnDG80/3T2k2ZN8FvTt6lmQ0NDezatYuKigqjIqu3e3+ZTCau/F/fXmqv/N9b1Jb7ArV2TXXNRjuubRloMNo3+QfI2ZLHlqXeDCdjTCqn/PCEDv3nXjKL+GTv+B63h3/c9ozxbJ3f33LK/AmccsopXHKJt8KuvrqB3eu9+6cNmziY6ITgq+gAmpqa2LVrFyUlJUw+1bvss6m+mZ1t/+2PJEEHasuXL+euu+5ixIgRxr2rrrqK5cuXYzabOfHEE1m5cuXBmqeIiIiIiIiIHKPe/cdHRru31Wn4LRu02a2MO2E033zzDTk53uBn1SfrjH49VVSNPm6EsZ/Z2i820tTQTHR0NKmpqURGRjLlVF/g5r9xfzBmnTedIePTAdi+Yhdut3eLrdgBvuqv5sYWo52QvH+BWnvgBXDNry/rcsuumx+5ymgvfns5jfVN4Pe3NJtNTDppLN999x27d3uXgK75fIMx795WpwFERkaSnp5OdHQ0k0/Z/7/loRD0/4EVFRUMGjSow/3Ro0fz/fffk5aWxrx58/jss8/6eo4iIiIiIiIicozauzXP2O8rbVQyM8+e2qv3i/aUUJxdCsC4EzIJDQ9h8+bNlJSUALD47WVG31nnzeh2LLPZzKxzpwPQ2uxg7RcbsdlsXH311cTFxRlVVQDrv+7dZvpmszmgSq2df4VaS1Or0U5Ijg967Ei/JZ+VxdUADMhI5MSLZ3b5zvyrTjLCPLfLzT/veI7ywkr2bs3//+yddXgUVxfG3/Xsxt0VkpDg7u7FKVagOMUKFWih/dpSqNJCoWgNKVAKpXhxp7gHTSDE3XWT1fn+2N3JbtYlIaT39zw87MzcuffOye7O7LnnvAcAENmuIeyd7fH48WNaCuyihi3bmDw/FSwWCxMnToSHhwdaWmHL2sBkh1pISAgePHig85i3tzcuXryIli1bYujQodi7d68t50ggEAgEAoFAIBAIBALhP8qhDVWBO0PnDjA7Ou3umSpfRkul2H1gYCCCgoJQVlSOO6diAAAe/m6I6hButL9Ow6vSTa8cUmTq/fLLL4iJiUFwdIBV2l9dR3WAZ6C7xj51rTRxpZpDzd/V5H75jnxah03FkDn9jRaUnPb1BPr1+T//xc3jd+ltVeGAgIAABAcHo6K8EjePKo47eziaXZBAxebNm3H79m34hnnDJ8QTUFZVVb/2uoDJ78IePXpg7969kEp1vxmcnJxw+vRpDBgwAIcPH7blHAkEAoFAIBAIBAKBQCD8BykvLsfp7RcAAHb2PPSb3N3oOdVRrxKp0kAbPHgwwsLCcPXQLUglMkCpG2aKs65FryZ01c0b/9yFTCqDTCZDYWEhGAyGpvbX7RdmzZXFYmHA1F4a+9Qj1KTiKp+MncDO5H6ZTCbsnau04Tg8DgZO72XwHAAYOK0XHN0cAAAyqRx/r/qHPqay5YABA9CwYUPcPHqXjqDrMqK9VqEDU5HL5SgsLAQAtOipsKVEJMHjq3VLu99kh9qUKVPQqVMn3L59W28bHo+HAwcOYMGCBejWrZut5kggEAgEAoFAIBAIBALhP8jp7ZdQWa7QDeszsRvsne2NnqMORVF0hU97ZwEiWoehrKwMq1atQnZ2tka6Z7fRHU3qk8vjoO3AloCy+MCjK7Ho168fGjdWRGRpaH+dMz9VccC0nhrbjm5V1yyTKqprMpgMrfOMwVRzcPUY1wnOHk4G26t446MR9Ou0uAwAAI/PRVTHCFRUVOCHH35ARkaGRrqnqbbURe/evdGsmSL6rYWaJt19C2xZk5jsUGvTpg327t2LDh06GO6QycSaNWtw/vx5W8yPQCAQCAQCgUAgEAgEwn8QiqJweOMJenvovAFm95GTkofivFJAqZ/GYrNQWVmpiILKKzI73VNFJzWttWuHbsHZ2ZlOqbRW+8sryBNBUQH0dmpsBv1aLlM41MyN/qIoinZMAsCwuabb8vX3BoPFYdH9AEBUh3BweRyIxWLIZDKUFJXYJN0TgIYtrdGkq2nMSzwmEAgEAoFAIBAIBAKBQKgF7p19iFRlRFTzHo0R2iTI7D4SHiTTr8OahQAA3N3d0bdvXyTdSjc73VNFu9da0k6tq4dv48yZM7hy5QoA2ET7q1H7hvTrmIuKggzqElxsDtus/h5fjYNYraBBZNuGBturw2Qy6dRLFSpbOjk5oV+/fsh8mGeTdE8AuHDhAi5dugQAcPd1RVCUPwAg9mY8hKUVFvdra4hDjUAgEAgEAoFAIBAIBEKd49CGqui0YRZEp0HLoRZMv+bz+bi87zq9bW6KoqOrA5p1jwaUVUQllVJwOBz6eJOuUYBS+0tVFdMcAiP96dfPbyegMLsIhVnF9D4OzzyHmrotqxcnMIVpX4/X2A6Krpofn8/Hv/tv0NvdxnQyu3912Gw2uFwuvd20i8KWcplc4+/5siEONQKBQCAQCAQCgUAgEAh1iuzkXFw/otBw9/B3Q6dhbY2eo4vEh+oONUWEW15eHg4fPozYh8/o/s1J91ShnvYpT+agd+/e9LZ6NF3S41SL5k73LZfj1O8XNfaZ4xPLzyzEv39XOQ9ZbPNdQRGtwsC1q3IYPr+bCAAoKirCoUOH8DQmFlCleyodjZYyaNAg9OvXj94OaVply2QrbWlLiEONQCAQCAQCgUAgEAgEQp3izI5LkMsVel2D3uprcQph4sMUAACHy0ZAhB+gjIACALFQkUJpbrqniu5jOtLzunf3HuLiqqpQhqg71B6Z7wRSaaWpOL75LOzsq6K2ZNWOG+LcrsuQSWX0tqW2VC8Ice3ILUDNlpWlCn02a9M9AeDhw4catgy10pY1hU0cas+ePUNpaaktuiIQCAQCgUAgEAgEAoHwH+fi3qv0636Tu1vUh7hSTFelDG4cSDt6XFxckHeuAhV5CidQj3GdLerf1dsFHYe2AQAI/Dm4eek2fSykcVVRgeQn1jvU0p9nIv5ukt7jhrikZksAYLLMdwXJpDKUFZXT2wUZRUh6nApHR0eUXpOhPKsSANDzjS5m912duLg4vHjxgt4OVrNlkgW2rCmsdqiJRCJERUXhwIEDtpkRgUAgEAgEAoFAIBAIhP8sqXHpdGRZVIdweAV5WtRP8pM0OsotVC1t8MGVJ2AGSMDiMRHeKhSN2pku0F+d12Yo0jxLMyqQej+T3u8Z6AGBIx+wUYQaAFz/547accqkfrKTcxF7Mx5Q012zxKGW9jwTEpFEY9/mj/5A3N14SNzKwRawEBTlT+vKWYOfnx98fHzobRdPZ7h4OQP1MUJNVTaVQCAQCAQCgUAgEAgEAsEaLu1VKxYwyrxiAeqoC9iHNq0qSHDs91Nwi3CCnSsXQ+cOsEikX0Wrvs3gFeSBpNPZuLnjIXJS8wCl8L8qsio7Odfs6pTqDjVVOurVw7fofZTctAi1S2raaXb2dor+LHCoJeooBnD7VAwO/3ocbpFO4LvzrLalip49e6JTJ83CBiFNAgEARTnFKMot1nNm7UI01AgEAoFAIBAIBAKBQCDUGdTTPbuN6mBxP4kPtAsSFOYU49q+OyjLqgCHyUXPNyxL91TBYrEwYFovRI0JREA3T5zccp4+FtJYTUzfzEqf6oFLYc0V/WQl5tD7VJF3xlBP9+QJuMo5m+8KUndOcvmKfqRiKS7uuoayzAowJUz0nWRZam519u/fj9OnT2vsC4kOpF8nPza/ampNQBxqBAKBQCAQCAQCgUAgEOoEtkr3BIDERyn067Bmigi147+dRUWRCA+2JKLf+B7g8XlWz3nAtF7gOnLAsWfj+JazkMkUBQBCGqs7gcxLVRQ4CejXDVuFaR2nTHCoqad7hjUPpqPHLIpQU7NlxyFt6NeiUgkebE1Ej9e70Cmu1lJWVgahUKixTxWhBhtUTbUVxKFGIBAIBAKBQCAQCAQCoU5gq3RPAEh4oHACuXg6wdXbBTKpDP/8fApMDgPtP2iEtqOaWz1fAPAMcIddhQNy7hUiNzUft0/GANWdQGoOKVNwcKlyqAVG+mkdNyXlUz3ds9uojqgoVRQOsLM334mYqLSlwJGPuT9OofczmAy0WxiJNqOamt2nPjp06IBWrVpp7AtubLktawriUCMQCAQCgUAgEAgEAoFQJ7BVumdhdhGKchRaW6HK6LRrR24jNzUfoAAWhwmmnQ0mrKRt31YQKquGHv/tDFDdCWRmyqeDiz39mslUFE9QxxQpe/V0z07D29JVOl28XcyaS3lxObKTcwEAIU2D4ObtCs9Ad8U85BRYXCa4jmyz+jQEl8uFp6dmZKJGtJ+ZtqwpiEONQCAQCAQCgUAgEAgEwkvHlume6ppfYcoKn4c2nAAAyKUUokOaIjQ0VO/55iCTyXA/8TYC2ykqU147cgc5Kblw83GBo5sDYEFUlb2aQ62sqBwdh7bVOG6sOGT1dE9HVwf6mIunk1lzUf1NoGZLR9eq+SWdykZYmHZaqiVQFIU///wTsbGxGvsdXOzh4e+mGO9RSp0ojkkcagQCgUAgEAgEAoFAIBBeOv/uu0G/tjbdU90JFNosGEmPU3H/3CMAgH+4L9p0a0lrnVmLVCoFALTq3gxQVuj86/vDYDAYdGRVfkYhSgvLTO5TPeWzvEiIzsPbmTWny/s1bamK1oO1DrVmwch4kUWn0wJASboQd87cN6tPfchkMlAUBXt7e61jqhTa0sJy5GcW2mQ8ayAONQKBQCAQCAQCgUAgEAgvnXtnH9CvO48wz4FUnYSH6hU+g/HHl3/T20Pn9MfJkydx/fp1PWebB4/Hw6xZs/DG/FG0Ptmx384iP7PQ4sIE6imfZcXlCG0aBJ8Q0yP27qrZssuIdijKKaG3XbycTe4H1aL9QpsF44+v9mkcD+3rg1NHz5jVpz7YbDZmzZqFiIgIrWPB0ZYXeagJiEONQCAQCAQCgUAgEAgEwktFXCnGk2vPAAA+IZ7wDfW2qj+ViD6TyYBcJseFPQo9MRdPJwyc0QsODg6QmyDsbwolJSW4fPkyHN0cMGR2PwCARCTB36uOaOioJT4y3QlUPeWTwWBopX2KxRKd58qkMjz6V5Ey6ertjKCoAM0INXMdamoRalw7Ds5svwgAEDgoqnpKyqQoLSyDsKzCrH51UV5ejosXL+qMHgxpEkS/TjLDljWF1Q41LpeL8+fPo3///raZEYFAIBAIBAKBQCAQCIT/FLE34yGuVDiImvVobFVfMqmMFq73j/DDn98eoI+NXTwcfAc+hg8fjp49e1o5awWpqal49OgRJBIJRi0cAq4dBwDwz0+n4BnoRrczJ6rK3lkz5RMA2vRvodFGLBTpPDf+XiKEpQrnVvMejcFgMCx2qFEUhSSlQ8072BP7Vv8DuVyhXzZm8TB4BXkg/p90JJ7OwvbP/zK5X32kpaXhyZMnqKjQds6FqldNrQ8RagwGA927d4e3t3XeYwKBQCAQCAQCgUAgEAj/TR5cfEK/bt7dOoda2vNMSEQK55xnoDuuHLgJAHDzdcWQOYoIstTUVNy+fduqcVQ4ODggICAAPB4Pbj6ueG1GHwBApVCEmAtV12WOE4jL44DH5wIAinIV6ZrRHTXTICvKdDvU1G3ZrFu0og8Nh5rpGmrZybm0c84n1Avn/7wCAHByd8SIBa9h6Nz+cPDnw6+dOx25Zg0ODg7w9fXVqaEWFOVPv64XDjUCgUAgEAgEAoFAIBAIBGuIufiYft2se7RVfSWqaX7lJOfSr9/4aAR4fIXGWVpaGu7evWvVOCoCAgIwdepUMBgMAMDoD4aCzWEBAE5sPgdnZREAc3W/vJWaaVmJOZDL5XBwsQeTVeXGUXeSqaNhS2W0n6Uaaur6aQVZRXR1zbEfDoPAkY/X3x8MpwB7+LRxRXFeKZ7eeGbWNVbH19cXM2bMAJOp7a7iO/DhE+oFKG35sit9EocagUAgEAgEAoFAIBAIhJeGWCTBk6txgFI/zSfEy6r+1J1Aac8yAWWk2msz+9D7GzRoADc3N53nm8vZs2fx999VRQ+8Aj3Qf4oinVRYWgG+gx2gjDQr1OME04VfQx9AqceWn6GoasnhcejjsTeea50jk8rw8N+ngNJxFtRIEdWVnVLlWHT3dTV5Dolq1TxTY9MBpS7b0HkDAGURAXcnT1TkiwEAvy+1Lu3zwoUL2L17t97jqiIPFWWVyEnJs2osayEONQKBQCAQCAQCgUAgEAgvjTg1/bSmVkanAUCimoi+iomfjAJXzRkVFhaGMWPGWD0WAKSnp4PNZmvsG7t4OB1NpnKGwcwoNf8GPvTrjPgsAACPr+ZQuxmvdU78/SQIS1T6adF01JzKGebs4Qgnd0eT56BeLVXFGx+NhJ2AR29PeG8UnuxStHt6zboINV22VEe9aurLTvskDjUCgUAgEAgEAoFAIBAIL42YC1Upitbqp6FahBoA+IZ5o9+UHhr7JBIJVq5cieRkbYeRubRt2xbt27fXGrP3xK6KsURV1TjNqU7p19CXfp2udKjZKaPdAODFgyStcx6o2bJZN4Uty4vLaadeYCN/rXMMkVjNlp4B7hj0Vh+NfU26RKHdwkZwaeAAYWkF0p9nmjWGOm3atEHHjh31HlevmvqyK33WmEPtxYsXNdU1gUAgEAgEAoFAIBAIhHqCuuZXc2srfMpkyEvL19j35mejweZoRj2x2WwwGAxkZlru/IGyCqZcLoevr6/WsfEfjdTQPIOZUVW+DaqKP2a+UEao2XHpfSlP0iCTyjTO0bSlItovNS6D3hcYabpDjaIoZKtp0AHA+P+9Dq7aHACAyWSCAQYcfBTOvv1rj5k8RvXxpFIp/Pz89LYJUav0mfzkFXeoZWZm4tSpU/jhhx8wbdo0tG3bFg4ODoiIiDDhbAKBQCAQCAQCgUAgEAj/VWQyGZ0m6BXkYbV+WnFuCeTyKrH6wEg/9JrQRasdg8HAkCFDEB4ebtV4aWlpOHDgAAoKCrSOBUT4YZhSa0xFytM0k/v2b1iV8pmudKixlMUOAEAikmqkt1IUhUeXYwEALp5OCIoKAACkxqo51MyIUBOWCOlUXCj17fpP7aGzbZBTGPLjSgEAN49ZVuwhOzsb+/fvR05Ojt42QY38wWQq0liTn5huy5pAf2JqNYqKivDo0SP638OHD/H48WMUFlblAvP5fISFhaFv375o0KBBTc2ZQCAQCAQCgUAgEAgEQj0g80U2RBUKQfvIdg2t7i/jRbbG9szv3gSLxdLZ1s/PD8XFxXB3d7d4PKFQCDabDWdn3ZUzJ30+Bud2/YviPIWzKTMhW2c7XXgHe4LFZkEmldEaatUj7R5diUXDlqEAgNy0fJQXCwEAEW0b0PppKUr9NAAIijLdoZaZqOnYmv7NBHC4HJ1tB0zogxO/nUdFngjZSbkQiyXg6mmrD6FQCBaLBVdX/UUTuHZcuHg5oyCrCIVZRWb1b2tMjlBzd3dH9+7dMXfuXPzxxx+QSCQYNmwYVqxYgY0bN4KiKGzfvh0PHjzAgQMHsHLlypqdOYFAIBAIBAKBQCAQCIRXmkQ1HayQ6ECDbU3h71VH6Nf+Eb7oOKSN3rYPHjzA4cOHrRqvYcOGmDdvHjgc3c4jBxd7TPt6Ar1dkFmklaapDxabBe9gD0DpeKQoCmyupnPwybU4+nWSHlumxlZFcgWZEaG2d2WVLb2CPdB9TCe9bRMSX6DR64oxKYrCme0XTR6HnnNICN5++23Y2dkZbOfs6QQoq6ZSFGWwbU1iskONwWAgJCQEFy5cQGFhIa5evYrNmzdj0aJF6NOnjwk9EAgEAoFAIBAIBAKBQCBUoV71Ul0fyxJexCTh6qGb9Hbv8V0Ntvf09ERlZaVVTplr164hISHBYJv+U3vAzl5RFVMul+PIppMm9+8frtBmE5ZWIDc1D65eLhrH1Z1omrYMol+nKFM+OTwOvJQOOmOkxKbjwp7L9HaPMZ3piDddeHp6gs1jAcomp38336F28+ZNPHtmvEqoyqEmEUlQUVZp9ji2wmSH2qNHj9C0aVP07dsXs2fPtlq4j0AgEAgEAoFAIBAIBMJ/G3VhefUKjuYil8uxdt5vUPeNBUcHGDyncePGmDt3rkFHkTFiYmKQnW04jZPFYqFBixB6e9vSPSjJLzWp/4jWVXJaT2/EwzdMU2Mu7VkmZDJFxFuShi0V1y6VSOl00cBIP73pr+pQFIV1b/8GuazKmMacnZGRkRg+4HVAecrzu4adjLqIiYlBVlaW0XYuSocalJp5LwuTHWqNGjXCwYMHcf78eTx58gQNGzbEhx9+qFN4j0AgEAgEAoFAIBAIBALBGKqql2wOS0OE31xObbuAJ1fjNPa5+bjobQ9lJt7p06cRHx9v8bg+Pj4mFWUMjKiqXFleJMTWT/40qf+oDlVFE2JvPEdgI00noUQkQZZS60wVocZgMNQKEqTTKaaBjfRXz1Tn/O4ruH/ukcY+U2yZlPMC3k0V+meiCjHi7yeaNJ4Kb29vREZGGm3n5O5Ivy56FRxqKjp16oRLly7hzz//xPHjxxEWFobvv//eKo8ugUAgEAgEAoFAIBAIhP8WUokUaXGKdMSASD8twX1TKckvxa+Ld2rtdzXiBAKA/Px8PHr0yGg7XcjlcpOLMjqrRVUBwNFfziD+nnGHk3qhhqc3niGsWZBWm9TYDMjlciQ/Vmil+YR6wU6gSDF9fLUqhTKyrfGKpuXF5fh54e9a+4051ACgoKAAwZ186e0Da48ZPUcFRVHo2bOnSQ41F8+qAhCvRIRadYYOHYqYmBj88MMPOHbsmEJ07swZlJS8vIshEAgEAoFAIBAIBAKB8GqQ/jwTUokiekpd88tcNn/0B51C6eJV5Wxx9TbuBGrdujW8vLyMttPFrVu3sHXrVpPaOntqVgGlKArfT9sAsUhi8DwXT2f4NfAGADy/k4CgaO2iAilP05CdnItKoQiolp75+Gos/bpxZ+POqm2f7UGBsnqmi3fVnF1MsGWrVq0QGlGV2nrnVIzRc1TcvXsXv/76q0lt1Z2TxXmvoEMNAJhMJqZNm4bnz5/jm2++we7duxEUFIQlS5aYlPdKIBAIBAKBQCAQCAQC4b8DRVE4s/MS9nx3CIc3nqL3ewV60Fpg5vD4ahyObz4HABA48mHvLAAA2Al44DsYrhYJpUOtYcOGFhUmSEtLg4uLcUcTqul+ufkqzkmIScaOz/8yem5UB0VKqbhSgoz4bDCYmhmCF/66ioNrj9PbXkGedJqnKg2Ww+OgYctQg+M8u/MChzecAADw+Fx6zkwWE07uDkbn2bx5cwwc04/OYMzPKISwrMLoeTDTls6vmoaaIXg8HhYvXoyEhATMnDkTa9euRVhYmC26JhAIBAKBQCAQCAQCgVBPuPjXVayYtA6/LdmJwxtP0Pv/+v4QhrtMxslt503uq7xEiG/fXEs7wyYvH0tHqrn6uJgkTVVRUYFNmzYhMdE8vS8A6NChAwYMGGBSWyePKt2vDoPbgM1RFAfY890hPLr81OC5jdpVpWqum7dZy/n3/E4C9v94lN4+tP44hjlPwp7vDiLjhaJgQmTbBuDyOHrHqBSK8O3EtZDLFX1P/HQUygrLAWXUnynFDCQSCX777TeEdqmKojv682mj5wFAu3btMGjQIJPavnJFCUzBxcUF33//PeLi4jBu3Dhbdk0gEAgEAoFAIBAIBALhFYfF1u+YqSwX4ewf/5rc14Z3ttCC/NGdIjFwRm+UFpQBJuqnAYCdnR0EAgEyMzNNHhcARCIRYmNj4enpaVJ7dScQi8XE5GVjAWXE3opJ61BeItQeo0KEA2uP4czOi/S+2JvP6UqaBudXIcbJrVXOyeiOhtM9f174O1KVenbhrcMw4t3XUJhdDJionwYAHA4HTk5OaNC+Kn33/O4rRs8Ti8V48uSJyam36hFqRa9qyqc+AgMDsWXLlpromkAgEAgEAoFAIBAIBMIrSvtBreDoaq/3eK/xXU3q5+Leazj9u8LRJHDkY8mO+bQzDQBcvZ0NnF0Fg8HA+PHjERQUhMrKSpw+fRqpqalGz4uLi8Ply5chFotNGqe6E2j0B0NpTbOspFz89N42rXNWTtuIje9uRdytFyaNUR2PAHf6deNO+h1q147cxj/KSDI7AQ8f7VyAyjIRnTZqqi0BYOzYsegzsidYdkwE9fRCfnGe0XPi4+Nx+fJlVFSYlh5ar1I+CQQCgUAgEAgEAoFAIBCMwbXjovfEbjqPNe0ahf5TehjtIyc1D2tm/Uxvv71+OnxDvemIKgBwM0FEv7y8HBRF4ejRo9iyZQt++uknXL16FTk5OUbPFYlECAwMhJ2dcZ026HACsVgsLP59Pq3zdmLreVw9dAs5qXnY9ulu3DkdA5lMblLfuohs24AuUgAA0Z0idLYryCrEDzM20duzf5iMwEh/DVuaEu1XXq5IDz1x4gSOnDyE1nPCEdjFEzw3Nh5cemzwXJFIBB8fHzg4GNdpAwAndwc6nfdlOtQsq0lLIBAIBAKBQCAQCAQCgWABA6f3xsF1xzX2sTksvLNpplHdM7lcju+nrEdZkcKB02NsJ/RROugKldUpYYITqKSkBKtXr4aDgwPKyhSRbcXFxeDz+QgNNSzeDwBt2rRB69atjbZTwbe3A4/PhahCTDuBfMO8MXfNVKxSOrS+n7IeDBYTpQVl4P3Axfqb3yD+biIyE7JNHgcAmEwG5v04DQt7LAUA+If7wsVTO8qMoiisnLYRRcr5dBrWFq/N7AMAdKVPmOCcFAqFWLlyJezt7WnHGteJA4lQiuLEchzacBLNujXWe36LFi3QvHlzk6+PxWLB0c0BJfml9NxfBiRCjUAgEAgEAoFAIBAIBEKtEdYsGGHNgzX2jV40FMHRgUbP/XvVEdw/r4h48gx0x4KNVU44dSeQqxEnkKOjI9q3bw+hUFO7bMCAAXBzczN4rkgkwurVq5GRkWF0vuqootTUo6r6T+2JjkPbAADKioV02qqoQoysxFysOPUp3HxdzRpnxILXIJPKIBFLAYBOLa3OoQ0ncOvEfUCpk/beL7NoWxaaYUuBQIAuXbpo2TLpTBaEuSLEXNAfoSaRSPDjjz8iJSXFjCvUbcvahjjUCAQCgUAgEAgEAoFAINQqnYa1pV8LnPgY/7/XjZ7z/G4Ctn7yJ6DUPlv8+3w4ulalCao7gYwJ6TMYDPTv3x8LFy5EWFgYvf/GjRtG55GcnIzS0lIIBAKjbdVROYFK8kshlyvSOaUSKexddGvKPbkWB98wb6w49Skc3UxLh7Sz52HSsrG4fSqG3te0a7RWu6THqfjlgx309qItczWi2ArMiPYDgN69e2PRokWIiKhKLfXr4AEonV76igekpaWhuLjYfFsqq6ZWlFVCXGmajp2tIQ41AoFAIBAIBAKBQCAQCLXKqIVDIHDig6FMT7QT8Ay2rxSK8M3EtZBKFEL5Yz4YiuY9NNMIC7PNcwIxGAwIBAL4+PjQ++zt9RdMUOHp6YnevXsbjWSrjqrSp1xO0ZFoK6dtxJntF3W2f3r9GQAgpHEgvjn+P7DY+l04LA4LDAYDM797EwJHPm6fvE8fa9NfM51SLJLgmwk/QiKSAACGzx+ItgNaarQpyjbdOalCIBDA19eX3mZSVRVdD68/rvMcNzc39OzZ0+RqqSo0ijy8pCg1oqFGIBAIhFcSiqJQLpYhXyhGvlACoVgKOQWwGAzY81jwEHDhbs8Fn6O/NHttIJNTKBCKkS8Uo6hCAomMAhgAh8mEm4ADdwEXLnwOWEzDeiEEhS0LK8TIK5cobSmnbenK58DdngNXPpfY0gRkcgpFFRLkCcUoFEogkcsBCuCwGHDhK96XbgJiS1OQSqVISUlBQkICUlJSIBQKQVEU7OzsEBgYiLCwMISEhIDL5b7sqdZ5pFIp0tLSkJCQgKSkJNqWPB5Pw5Y8nuEf3QRAJpNp2FIlvM7j8RAQEEDb0lQx9f8ycrlcw5ZlZWWQy+Wws7ODn58fwsLCEBYWRmxpAnKKQkmlFPnlYhRUiCGSyrHw7mqwGIALn4Os0kq4C7jgsLSdRhRFYcP8zUiNTQcAhLcKxeTlY7XaFVjgBAKAXr16IS8vD8+ePUNAQAAePnyIhIQEZGZmQiwWg8ViwcnJCaGhoQgNDUVBQYFZ+mkqNAoT5JXC2cMJDy891dv+6Y14yKQysNgsRLZtiA+2zsPqWb/AO9gDxZVSuEUGwDXSHzxnARzdHNFpSGs48zmITy1A4lNFOmpYs2B4+Gk6/n5e+DsSHiQDSmfdjG8naI1dYKZzUkW3bt2Qm5uLJ0+ewMPFA2zPOLBcgZNXjqNobbZC/8zRESEhIQgLC0NRURFat25tVDuvOi4eVbYsySuFV6CHWefbAuJQIxAIBMIrhUQmR0KBEHE5ZSiskBht7+XARaSnA4JdBbXqHCgQihGbU4bEAiGkcspgWw6LgYbu9oj0dIAzn1Nrc3xVKBSKEZdbhhf5JtiSyUCYuz0ivRzgSmypRVGFRGnLcoVz1wBsJgNh7gJEejrATUCcQdXJyMjAqVOncPHiRVqAWR88Hg+dO3dGv379NNKKCAqysrJw+vRpnD9/nhYG1weHw6Ft2bBhw1qb46tCTk4Ozpw5g3PnzqGkxHDEBpvNRseOHdG/f3+Eh4eb/WO2vpOXl4czZ87g7NmzKC4uNtiWxWKhffv26N+/Pxo1akRsWQ2hWIZneWV4lluOCmV0mT4YDCDIhY9ITwf4OPJoWx779QxObD0PAODxuViy8x1wuNr3eU3dL20Rfv3jMhAZGYmHDx9iw4YNoCgjzxscDnr37o1Ro0bBycnJYFt1nD00K32ikT8+2DYP6+b9htQ4bT02kVCE+PuJiGyj+L7rNKYzPHo2x/O8cpSLtW0Zn1+lYTbq1HKkXX4CXwYFiqJoW57ecRGHN55UXAeXjY/+eAc8vvZCRYGFtgSAyMhIxMTE4HbCdTh2V4wrgRCXL1/WasvhcNC9e3eMGTMGLi6mO+7qQoQagzL2TqnHlJSUwNnZGcXFxWZ9CAgEAoFQ+1AUhfi8ctxOK4LYiCNAF3wOCx2CXRHkwq+R+akoF0txPbkQacWVFp0f6iZAuyAX2LFfbmRdXaBCIsP15EKkFFVYdH6wKx/tg1xfepRiXaBSIsONlEIkFVpmy0AXPjoEuULAJbYsKyvDtm3bcOnSJYvOb9myJWbOnAkPj9pfSa9rlJeXY/v27bhw4YLRH6+6aNq0KWbNmgUvL68amd+rREVFBXbu3IkzZ85YZMuoqCjMnj1bI1Xrv0plZSV2796N48ePW2TLiIgIzJ49GwEBATUyv1cJqVyO++kleJJTCku8Du4CDjqHuCHrYTIWdv+MFthfsmMBek/oqvOcKZELkP48E/bOAhws/N2kceLj47Fp0yakpqaaPUcOh4Phw4djxIgRYLONxyvt/vYANn+8CwDw2d+L0HVke0AZCXnz2D3sXXUYDy4+0ThnxDuvYdaqKYjJKMbj7FIYWVvUiRufg04hbih8lo53Ov8P4krFovT7v87GwOm9dZ4zq8UiJDxIBofLxtGKXSY5ihMSEvDTTz8hKSnJ7DmyWCwMHToUo0aNAodjfFF0/49Hsem9bYCR90RNQiLUCAQCgVDnEYpluJJUgIwSy5xUUDpnzsfnIcxNgPZBruAa0KCwlBf55biRUmg08scQiQVCZJZUomOIW407/+oyiQVC3EguhEgmt7iP5MIKZJWK0CHIFSFu5gnd1ieSC4W4nlyISqnltkwtqkB2aSXaB7kizN24tkx95e7du/jpp59QVFRkQmvd3Lt3DwsXLsSUKVPQs2dPm87vVeLBgwfYuHEjCgoKLO7j4cOHWLhwISZNmoQ+ffr8Z6OCHj9+jI0bNyI3N9fiPp4+fYoPPvgA48ePx8CBA/+ztoyLi8P69euRnZ1tcR/Pnj3D4sWLMXbsWAwZMuQ/a8u8chH+TSxASaXU4j7yhRIceZKNuN3XIFFGtg2fP9Cg40QVoWZKuqdUKsVff/2FQ4cOWeQ8hbJC5d69e3Hr1i28/fbbCAoKMtheI+VTLaqKyWSiw+DW6DC4NeJuv8CW/+3C3dMPAAANuzfBP0+zUWRCZoY+CiokOPo0Gy/2Xqdt+dqM3nqdaVCLUHP1cTH6PpbJZNi3bx/2799PF1swF5lMhgMHDuD27duYP38+QkJCDLZ30WPL2oQ41AgEAoFQpymplODUs1ydYe2WkFAgRFGFBH0iPG0WuURRFGIyShCTaZubeaVUjvPxeWgf5IJGXo426fNV4mFmCe6mG06vMRWRVI6LCfkoF0vR2Oe/F43+JLsUt1Itd/6oI5ZR+DexAGUiGZr5/fdseebMGfz6668W/+hSp6KiAps2bUJ2djbGjh37n/vBffHiRWzcuNEmthSJRPj111+RmZmJN9988z9ny6tXr2LdunWQyay/R4rFYmzbtg0ZGRmYNm0amMz/Vv26mzdvYs2aNZBKLXcAqZBIJNi5cyfS09Mxa9as/5wt04orcCE+HzIbfMYpABETeoLj7oSSs/cwa+Ukg+0ryhSR2HYOhjXtxGIxfvjhB9y9e9fqOQJAUlISPv30UyxZsgRRUVF62+lzqKkT2aYBVpz8FJmJ2citlOJhBQWpFc40FRSAsNFdwHZ3Qu6hq5i3brrB9pXlioVsvhFbSqVS/PjjjyZVRzWF1NRUfPrpp/jwww/RtGlTve00Uz5t89xoLv+tTzaBQCAQXinKxVKbOtNUFFRIcPpZLsRWROyo8zCz1GbONHVupBThWa5hPaH6xuOsUps509S5nVaMp9mlNu+3LhObU2YzZ5o69zKK8agG3u91mQsXLuCXX36xiQNInf379+Pvv/+2aZ91nStXrtjMmabOP//8g127dtm0z7rOzZs38eOPP9rEmabOqVOn8Pvvv9v8b1SXuXfvHlavXm0TZ5o658+ft5kj/lUhs6QS5+PzbOJMUyd0QGu8tmE2WAYkMa4evkWnlkol+v+WMpkMq1evtpkzTUVFRQW++eYbxMfH623j5OZAvy4tNPyMx/RwwYMKyqh+rLkE9WqGQT/NBZtrJL5KOSzDgAaxXC7H2rVrbeZMUyESibBixQrExsbqbeOoZsuyQsNapjUFcagRCAQCoU4ipyhcfJFvc2eaisIKCa4lW55qpCKjuBL3MmpuVex6ciHyy8U11n9dIrtUhNtptncAqbiZWoScMlGN9V+XyC0T4WZKYY31fye9GJlWpGC/SiQlJeHnn3+usf737t2Le/fu1Vj/dYn09PQacaapOHTokM1/1NVVsrOzsW7duhqz5fHjx3HlypUa6buukZeXhzVr1tjcMani7NmzOHfuXI30XdeokMhw8UW+RRpfppAulCI2R7cT6ugvp7Fs5Pf0dkm+ZjuZTIaclFw8uPQE3y/9AXfu3KmROVZWVuLrL77Gk9txEFVoP3MwTIxWrJTKcOFFHmQ1ZMwskRxPsgwvNKpSNw1FWB45cgTXr1+3+fygjCJctWoVSkt1z7MuRH6SlE8CgUAg1EmeZpcit4YdSUmFFQgpFCLY1TJ9LbFMjqs2cMoZggJwJakAg6K8a7VKaW0jkclxJalmbQkAVxILMKSxN9h14CGsppDJKVxJKkBNx0NcTSrA0MY+4LDqry2lUik2btxYYz+0Vfz8889YtWoV7O3rrz6dXC7Hxo0bIZFYn7ZkiN9++w1RUVH1uuCYXC7Hpk2bIBLV7ALBli1b0KRJE7Oq7r1qUBSFn3/+GRUVlhVsMZXt27ejefPm9boYCUVRuGal9qkp3E0vhr8zH052bHrc7Z//hZ1faEb7FueWYOW0jchOzkFWUi5yU/Mhk8rAcgYcexuOurKWsooyfDTnE1TcZcAryAP+4T7wD/dDQIQvZGqRc4ZS1G+mFFmlfWoK9zKKEeDCh4uequiUkQi1tLQ0/PXXXzU5RRQXF2Pr1q1YsGCB1jENrbaXlO5PHGoEAoFAqHNUSKTwcuChf6QnpDIKlxLzIZVTGBDpBRc7Dq4mFyDZwmqF1bmeXAh/JzuwLXAKxOeVoVuYO+QURc+TxWCgZ0MPyCkKDDBwPbkQRZXW/YAsrJDgSXYpmvrW3x+IDzNLUCpSPGR62nPRJtBFw64CZZVWAGAzmWAA+Oep+aLRJSIpHmWWooW/eeXfXyUeZZWguJoItB2bqfW+LBZJrPpMlYlliMkoQZvA+vtj+/jx43SlMmdnZyxatAgymQxMJhO//vorUlNTsX37drx48QIAcPDgQcTExJg9TkFBAfbs2YNp06bZ/BrqCqdPn8bz58/pbV32TEtLw+zZs+Ht7Q2hUIgNGzagvNy8NJ7i4mLs2rULs2fProGrqBtcvHgRT54oqgBGRkbiiy++wPTp08FkMnW+Ry2lrKwM27dv1/lDtr5w9epVnZ9Zdbs6OTlhxowZAAA7OzswGAwsWbLErHEqKiqwbds2LFq0yGZzr2ukFleia6gb8oWKxdCHmaXILK20+bObVE7hZkoh+kR4QiaV4fupG3D2j3+124mlOLntvNZ+QWuFg6j6d3dSUpJNPz+8UAbEyRSyk3ORnZyLu2cearU5vf0CRBViNOsWhabdouHuq3jOySiuRGKBEONb+mvYM6OkUuc+S5FTiufgAY10V0qmlA4rfY6/X3/9lV4kqW7PvLw8qz83Ki5fvozu3bujefPmmvNTWzlkvqRFZ+JQIxAIBEKdIz5PiJjMEsjkFCI87dHIywEPM0tx4UUeIjwdTOjBdCqlciQWChHuYV6/EpkccTlluCvRnOejzFIcj80BAHg78tDE1xGXE62PvIrNKUNjH0cw66HgtlQux7Pcqh/NZUrtvOp//5Nxigp2kZ4O4LItt0Ncbhma+jrVy4g/mZxCnA7dPZFUrvN9ae1n6lleGZr7OdXLKDW5XI7jx4/T2yUlJfjss89AURSio6MxfPhwrFu3Djk5OVi2bJnV450/fx7jxo2DQFD/KtLK5XIcO3ZMY58ue964cQPl5eX4/PPP0bp1awwbNswiXbRLly5h/Pjx9TJKjaIoDVsOHjyY1mvS9x61hqtXr2LixIlwc3Ozeu51kervSxXqdk1PT6c/4/3797f4M3rr1i3k5OTAy0u38+JV52l2KRx5bPperaImnt3SSypRVCHB4o4fIeFBstH29s4CeId4wilUgGS2QpOr+nc3g8Gw+efHo50Dyq5SKCvSvTBQnFeKI5tO4simkwAAv4Y+aNY1Cv4TewGO9igTy7TsqWufNWSXiZAvFMNdwNU6ZihCLSEhAU+fPqW3dd0LbfG5UXHs2DFth5pahNrLKkhT/55+CAQCgfBKI5NTeJJdSmtGyOVVN/QKSc2EvsfmlJmtQ/MiX4gSkUxrnuq9cFlMFAptk94klMiQWlSzKSkvi6SCCo0UkQqJXOffX0WomwCJ+UKzxni9qS8CXfiA0omaXGje+a8KKUUVOj8n+t6X1n6mJDIKiQX105Z3795FXl4evU1RFP09YW9vT0eueXh44PPPP8f8+fPh4GDej8b169ejbdu2gFKA+eLFiza9hrrCo0ePkJmZqbFPlz19fX2RkJAAAEhMTER0dLRF40mlUpw/rx2ZUh+Ii4tDcrLCgdCqVSvExsbSqZ/63qPWIJfLcfbsWav7qYskJCRoRE2qqG5XdTp37myxthxFUTh9+rRF59Z1iiokyCoVwZ7DwoBIT3QNdQNPudBSU89ucTllSHyYYrBNl5HtcaBgGw4W/o6f761EYI+qlNvq39018fmROFTgt+er8HfOZqy5/CUWbZmLXuO70Mer+4Ay4rNw+WQMKu0Vzyu67Klrn7XE6dGlMxShdurUKY1tQ/dCSz43q1atQqtWrejt+/fvIztbMzNB/fmwJlN4DfFKO9QuXbqEIUOGwM/PDwwGAwcPHnzZUyIQCASClWSXimjNCB6LiUgvBzzPM5zy0z/SE2+2DoCrmgYEh8XA5DaBsOfqrwalokAoodMNTSVJzYlQfZ7OdmwMbOSF9kEuyFYTwbd2nkn11HGh77p0/f3tuSwwGIoV2up0CnHF5DaBcLYzHoBfX51Aht4j+t6Xuugf6YmJrQIwvqU/xrXwQ/9IT7gJdGus1Nf35dWrV7X2+fv744svvsDUqVPplLv58+fj888/x6NHj/DGG29otI+MjMRHH32ELVu2YOvWrfjuu+8wdOhQsFi6P++6xqwP6Luu6vZMSUmhIxCaNWumoSm3dOlSvPbaa/S2t7c31q1bh8mTJ5s15quO6roYDAb69eun9aNW13sUAHx9fbF48WL89ttv2LZtG1avXo1hw4aZNWZ9Q9d16bMrAHh6eoLJZCInRxHtu2TJEp1p2nw+Hzt27EDjxo1NGrM+oLoP7H+UiRNxucgsEaGlEWmF/pGemNwmEL6OPI39jb0dMblNINoakRNIKhRi+ILXIHDi65XPKsgqgoOL4ntEKpXi5s2b9DFd3936Pj9Lly7FH3/8ge3bt9P/+vXrZ8wskMvluHHjBpw9nNC4UyT6T+mJAdN60cdHvjsYXx//H974aASadGkEDpeNoD4t6MIFuuxpyMZeDlz0DvfAuBb+eKOFP4ZEeyuzGwzPM6lQqHNhWbWrejqlXC7XKkSg715Y/XOzdOlS7N69G0FBQXQbgUCAv/76C56envS+hQsXalRhpSgK165d05wfiVCzjvLycjRv3hwbNmx42VMhEAgEgo1Q6UKwmAx0b+COmymFEJkgyiqWytHKCl2sPDMKIFAUZXCexZVSHI/NwdnneWhX7YHQmnnmCetftU+KonRel76/f6ibQKcDh81kIMRVgEqpDOEexoXd8+uhLWHkugy9L3VxJ60Iu+6l46+YDBQIJejVULeYdr5QXGOVBl8mKi0YddLT0/Hpp59ixYoV9A9pVfWxK1euICQkhG7bqlUrfPzxx4iJicE777yDqVOnYs2aNQgICICrq6vOMRMTE2u8AMLLQJctocOe9+7dQ35+PpYuXQofHx8UFOhOlw8KCsLy5ctx8eJF/P777zrbpKSkQCyuf59zlS27dOmCO3fuaBV50PUeBYCPPvoISUlJmDt3LqZOnYpVq1ZpRXvoIyMjo8ZF+18Gut6X+uwKAJ06ddKIsjl//jy6dOkCNltzEadz584oLCzE48ePtfrIzc1FSUmJza6hrqC6j6vu14mFQr2LMOoUV0jQsNo9u6GHPYoqjEf3V0rlmLxiIg4Vbcfh0p348cqXmLVqEn2czWGh/+Qe9HZaWprGd4Ku7259nx8A+OOPPzBp0iT6ny6nqy5UUbcq1G+XPD4Xbfu3wLSvxmP1pS9woHAbes7uTx/XZU99Ng5wtkOfcE9kFFfiwKNM/Hk/HRcT8uFixwGfY3jRViKjUKJjYZm+t1dzVmVlZUEo1HwW03cvrP65gVKfcfz48QbnpAtDtiQRahYwcOBAfPnllxgxYsTLngqBQCAQbES+UAwGgO5h7ojNKTO50mdcbhm8HHjwduDpPM5mMtA+yAWvN/XFmOZ+6BLiBg6r6uabb0ZqZkmlFFI5pXOe6vdzsUwOabVy58bmGe3tgBFNfDC+pT9GNvFFIzXdkTKRzCTn4qtEuVj7mgz9/UPcBDqjy0LdBJDKKdxNK0aYu73RYk8VEjmEOqLcXmUqJTKU67kmY+9LQ8gp4HluOey5bJ3pJWIZhVJR/bKlUCjUSlFU/9FcXl4OkUgEHo9Hr4pHR0cjKyuLbjN16lQcOnQIx44do39oZGRkYOPGjRqppOqIxWKkp6fX0FW9HMRiMdLS0rT267InAOzevRvLli1DWloabt26pXVeZGQkli5digMHDuDvv//WOq5CJpMhJcVwOtirhkwmo9M9g4KC0L59e3z88ccIDg7GggUL9NrU0dERPj4+OHPmDMRihQM8LS1NI8KEz+dj2rRp2LBhA7Zt24avv/4a7u7ugPJHdWJiYq1fb02i75p02VVFp06dNCLMbt++DZlMRqdtq+jRo4fBlOPqToFXHYqikF8uBpvJgOpW4+PA0+mgqU5ioRD+znb085iHvULHq/oi5+tNfdHYxxGvNfLC+Jb+6B/pCQGHhXxlOzsBD9EdIzF4VlXUWJOuUXhtZh96W93uur679X1+jMHj8TBt2jRs3LgRv/76K+bNmwc+n69zXBiJquLxeZAJ7ADlc2t1exqycbsgVzzKKsXTnDL6uaqkUoorSQX0s4Edm4nuYe4Y29wPrzf1RUt/Z7q//Go2V18oqx6hVv2aDN0Lq39uoEwXjYyMRFRUlE6bopokgr5x60KEGilKQCAQCIQ6RalIilA3AbwdeOCwGIjydkBaUSUeZ5eie5g73O25kMjk8LDn4k5aMX2eSCrHw6wStApwpsXX1ekc4gY5ReHwkyxQFNAp2BXtg1zpggFlZqR8looVbXXNM6dMhFYBzqAoxYLerdQijXONzbNMpBCbFUpk8HHkoXe4B/IrxMgtE9Pz5LG1hWNfVXTZXd/f38WODZFUrrOMfEMPeyTkC5FYIETbQBcEOvORYkRzrkwkhcCEVNtXBUNpy+4Crs73paHPlAoWk4FwT3uUiaQaWnfqlImlcDIh1fZVITdXW/A5NDQUEyZMgFwuB4OhqBDn5+eH2bNno6KiAhKJBD/99BOgTK/z9va2SGspJydHIxXmVSc/P19n1J0uezo6OuL999+HTCZDeno6tm/frnFOkyZNMGbMGGzevBn//qtd1a86OTk5aNiwoU2v52VSVFRER9j88ccf9P6lS5di7dq1Om0KZeRIeno65syZg7Nnz+L58+daTt25c+eCx+Phk08+QVFREYKDgzWieXJycizWtKuLlJWVaUXYQI9dASAgIAClpaUoLq76jpTJZLh06RJ69uxJp6L5+/ujQYMGWLVqld6xValv9QUZRaFSKoebgINOIW6QyOSQy4GryYrnK0P3GbFUjvTiSoS6CfAstxwNPewRn1cOF752dFuYmwDn4/MglMjQs6EHWvo7ay3mGHKwqEdk6vru1vf5McbcuXMhk8noCqGzZ8/G9OnTsX79eq1xYSSqiqIoWtLCyY6tZU9d+wDAiceGI4+NxALDEindwtxRIZFh38NM8NhM9An3hFQmx8OsUpRVs6VczZbVVymrX5O+e6Guzw2Un79Dhw5h/Pjx+PTTTw3OWZ2cnBzI5XIwlSmxpMpnLSMSiTQ8zfUx3JZAIBBedWRyCgkFQiToiEK6mJBv8Nyn2WWI8nJAoAsfWaVVZcR5bCaCXPnYcz8dEpni7nsvowTDGvvgSmIBKOW4piJXttU3T2PVl/TNE0pReRVZpSJkFFfCx5FHO9Rk9Sy1Ttf16LNrUaUUp59p29bZjg0vBx6uJxdCKqeQUlSBcA97ow61/4ItVeSWi3W+Lw19ploFOKOFnzNkFIUCoRjn4nVHVcHMz8+rgK50r+fPn+Pzzz/X2r948WKtfarqkvpSFg1R39IUddkSBuxpqGJqdHQ0iouLce/ePZPG/q/YUmWz0tJSnTYFgM8//xxDhw7FqFGj4O/vj4yMDGzduhUPHz6Es7Mz2rdvjzlz5qCwsBAAtATZ/yu2VEf9vZiWloYvv/xSq825c+ewatUquLu7Iz8/H7169UJMTAxtR13UN1uq/C4FQgn+eaKdRmzs2S0+vxwt/ZzxIk+IYBc+Dj3OQusAbVmCuNwy2tmUkC9EUx9HpBZrPkMZclap/80TExO1vrvz8/P1fn4AYPz48Rg9ejS9PXv2bHC5XLRv3x7Tp0+nHbR79uzBDz/8gA0bNoCiKEgkElAURTv4DDn91G+luuxZLpbptDGPw6SP60PAYcHXyQ577qdDKqcgFcvwILMEzf2c8DCrVPsZwoCzqvrnR5c9YeBzAwBHjx7FgAED0LZtW53p0fqQSqXgchULy4acfrXFf8qh9s0339ikrDmBQCAQag6mFTdEGUXhfkYJWvk740Rs1QKKA5cNJoOB15v6aZ3D57AglMjMWtmyZo6G5glldFZjb0c48FhggAEWk6EhwG/t2HUNW1xPuIcDCoRiFCo1V17klaNPhCIdRCjR/3BJbGmYu2nFeKqn8ldNj/2yqa6JZC6qRVs3NzeTdapsNXZdw5bXc+DAATRq1AifffYZvvjiCzqVtjbGrgtYcz3FxcXYsWMHduzYAXt7e4wcORIffPAB5syZAw8PD4jFYuTn63d8EFvqJj09HfHx8ejevTsOHjyIrl274rfffquVsesK1n79Z5aI0CmYhWZ+TsgtF+uMQke1aqFSOQUOi6kltm/IWWWt3Xft2oVjx45p7AsICACTyaSj0VTI5XK4uLigsLAQbDZbYy6GnH6W2lKktI09l6VXgkHAZUEq14zyLxVJYa/UV6tuS3kN2hJKp9zevXvxxhtv4LPPPjP5PI2xSYRa7fLRRx/h/fffp7dLSkoQGBj4UudEIBAIBE34HBbtGLGE+LxyNPZ2RAMPAb2vXCyFnKLw14MMvZE0fLbpsqJ2HOslSHXN057LQpdQN5x5lousUhEoAD0buGvO0wZj1yWstSWDAYS5C8BhMjCmeZXDlMlgoIGHAA8z9f/gtsXfsS5hTHS4ZseuX7Z0dra8wAkAZGZmIicnB506dcKBAwfMOtfFxXjBiFcJVbSeLZBIJFi5ciXef/99LF26FMuWLTPoVKtvtnR0dASDwbC6CEh5eTn27t2LIUOGwMvLC3l5eeByuXSUlS7qmy0FAgHYbDakUvMqfOvi3LlzGD58OFJTU8FgMHDnzh2D7eubLdlMBthMhlnanNV5kV+OZr5OuPDCcDRbdarf9wylAFr7va6LvLw8yOVyzJo1S2/kYfVxDTn9mAwGeGym2Xq5JSIpSkVShLjpf+4RimVgM5mwYzNpp5oDl4Vy5cKjIVtWd/zZypbnzp3D4MGD0b17d5PaOzo60umeqCMRavXr6ccIPB4PTk5OGv8IBAKBULcwpSqUISgAd9OL0dSn6ju+UipHalEF2ge5gKd0nNmxmQhyqRKNdbc3XZfMlc+1+r6ta55s5QNLpVQOCoC/sx38nOzo4zw2E4KX6DSpCZztOGBZsaoY6MwHl8XEkafZOPw4i/4Xk1GMcHcHvedxmAw48erXuqIDlwUuq/YfKJkMxd+xPuHq6mr1j94tW7Zg+PDhGDBgABwcFO9FX19fzJ49Gx4euiumMhgMBAcHWzVuXcPBwQHe3t42608mk+GHH35AVlYWli5davB5Xr3SXH2Ax+MhICDA7PPs7e0xduxY+Pn5gcFggMvlYvDgwSgtLUVGRgaKi4tx69YtzJw5Ey4uLmAwGAgJCaHft1Bq3tUn2Gy2zT5rV69ehYuLCyZPnoxLly4ZrdRb32zJYDDgJrBO2/VJdhlOP8tFarF51WSrj2vIwRIWFmbVHHWh+uxMnz4djo6OgNLZpC6mrz6uVCLFia1VBSuyk3NQXqype+ZuoS1vphSiqY8TGnk50AWEnHhsdAp2hT1XEbGfWVKJNoEuYDMZsOey0MzXCS/yFeNXt6Uhx5+tbElRFHbv3m1ykcnq4xINNSspKytDfHw8vZ2YmIj79+/Dzc2tXom5EggEwn8JSx8k1EkpqkATH0fYqTmfLicWoIWfMwZFeYPHZqJSIkNSgZDW2TJnXBaTAVc7DgqsiKTTNc/iSikeZpagX4QnGAwGUosqNPRB3AXcl1bFqKZgMhhw43NMruZanXBPeyQWCFFSqRll8DSnDI19HOHjyENWqXalLrd6aEvVjxpd11uTuPK5VjlF6yphYWG4e/euxeffvXsXX3/9NV5//XWMHTsWUEYzXLp0Sa++UkBAAHg83RWAX2VCQ0PNTn01hEwmw+rVq/HOO+/g888/x7Jly7REr729vTUcQvWF0NBQpKammnWOVCqFm5sbPvroIzg7O0MsFiMxMRFff/01rS+9fv16TJw4Ed9++y3s7OyQnp5OC+u7urrC1dW1Rq7nZRIaGooXL15Y3U9lZSWuXbuGnj174ty5cwbb2tvbw8vLy+ox6xruAg5yyiy/94hlcmSaee+iKArvtVyEpl0aoVm3aDTtFgW+Q9UiZHUHS2hoqE0iPKuzYcMGjBkzBt988w0cHBxQXFyMq1ev0lWK1Z1AN4/dw+X9N+jtE1vO48SW8/AK8oCLlzMatQ9Hpw9HIsMCqfe04kqceZ6LZr5OaOmniCArE0uRkC9EhTIK7VJCPtoHueL1pr6QURQS8oV4lFUKJgNwrVYIwlCEWlBQEFgsllHnsSncuHEDQ4YMMSnYScuhVgeqfDIoW7+japELFy6gZ8+eWvsnT56Mbdu2GT2/pKQEzs7OKC4uJtFqBAKBUEcQSWXYG5NZq4LxfA4Lo5r5mqUDdTetCA+zDOv32Jp2gS6I8nas1TFrg5iMYty35OnRClr5O6Opb/279z/OKsFtHZU6a5Lmvk5o4W/7VJqXzalTp4xqIdmaoUOHYuLEibU6Zm1w4cIFbNy4sVbHHDBgAKZNm1arY9YGV69exZo1a2p1zF69emH27Nm1OmZtcPv2bXz33Xe1OmaXLl2wYMGCWh2zNsgorsTp54YLMtmalPMPcGmx5m9+dz9X5GcoFizCW4Vh0Za58GvoAzuBYqHi888/x5MnT2p1nt9++y3tCHp8NQ7vdvnEYPtx300Cu0eLWpqdAn8nO/SJ8NTYV1FWgaFOkwAALXs3xXenNXXOvv76a9y/f79W57l8+XI0atSI3r518j4+HvgVAGDip6MwednYWp0PXvUItR49etjcw0wgEAiElwuPzUKIGx8v8rWrPNYUEZ72ZouqR3g64FFWKWrrLsRmMtDA3b6WRqtdIjwd8CCzBLVVKJLJAMI96qctG3rY4156Sa05pBnKKMH6SNeuXbFz505UVlaa0Np6GAwG+vXrVytj1TadOnXC77//jvLychNa24b6ast27drRAQG1RX21ZatWreDh4YG8PP0VjG1N//79a22s2sTXiQcnHhslIus16UxFHJsKDpcNibhqTJUzDQCe303ArBaLAACege4IiPADL7B2ZTM8XbxxZccd7Es+jpzkXGQm5hg9x9uZDzmfY5WesLlEemlH8xqKUIPye6E2HWrBwcGIjIzU3Kk2yZcVofaf0lAjEAgEwqtBI6/ai8JiMoAID/PTghx4bASoabDVNGFuAnDNKJzwKsHnsBDsKjChpW0IcRNopAPXJ3hsFkLda8+WQa582HNf6fVZvfD5fJOFkm1By5Yt62UqGABwuVz06tWr1sZr3LixRVpjrwJsNht9+vSptfHCw8NrRHuqLsBkMtG3b99aGy8kJAQRERG1Nl5twmAwdDplagonOzaW/zYLBwq3YeX5zzF52Vi06tMUPL5u+Y7c1HzcO/sQ139/AHlF7QXkJJ3KwvZlf+HUtgu4f/4xspP0R/ExmAxM/2Y8Bs/sg0a1aEsHLgv+znZa+42lU7Zq1Qqenp5a+2uKfv36ac1DrrYSq8vpVxvUzydzAoFAILzSeNhz0aCWnAJNfZwg4FrmXGkd4AxWLayI8VjMeplSp04rf2e6KENNwmEy0Kqe27KFnxM4tVCcgM1koJV//apWV51Ro0bRQtM1CYfDqZepnuqMGDGiVnS4WCwWJk+eXOPjvEyGDBmit7CFLWEwGJg6dWqNj/Myee2112xaNMMQU6ZMqXfanepEejrA2a52FljaBbqCwWCAx+eheffGmPjpKKw49Rm2PK1Khw6KCkDfSd0R1SEcjm5KBxUFCGNqZYqQ5lMQp2juc3S1r5qLGnb2PHz1z0cYt1ghzt/Q3R5u/Nop9tM2yFVnloYxwX8mk1lr3w+hoaE6pb5IhBqBQCAQCHpoG+gKPqdmb1OufI5VOlrOdhy0rAXnTLsgF61y5vUNBx4brQNq3jnTJtCl3kZUqbDnstEusOYdF638neFUSz+eXhbOzs6YPn16jY8zZsyYehtRpcLBwQEzZ86s8XFGjhxZ76p7VkcgENSKptnQoUPRsGHDGh/nZcLj8TB37twa/zE+cOBAREdH1+gYLxsWk4HOIW6oabdGuIe9zogqAGCyqp4bg6L88eG2t7H26tfYn7cV+3K34MerX+HdL+bB28GvRufIoBjoHN0dc9dMxbKDH+Ln+ytxsHAb9udvw6SlYzTaung6YeW5z9F2QMuq62Ay0DnUzeqK8sYIcxNoVLxXx1DFVBVt2rRBly5damp6gHKRZO7cuWCztZ83SIQagUAgEAh64LGZ6BrqDkYNqZRxWQx0DXOzujphlLeD3gc7W9DAXYBQt9pL4atNyovLcevkfWx6fxveCJyF73r8D372NbciG+LKr7faacLSCtw5HYNfPtyB8cGz8WWnJQgQ1JwtA134tZqS8jLp2LEjevfuXWP9t2jRAkOGDKmx/usSbdq0wcCBA2us/8aNG2PEiBE11n9dolmzZhg2bFiN9R8ZGYnRo0fXWP91iaioKIwaNarG+m/QoAHeeOONGuu/LuHpwKvRKHBXPgdtAvUvvmnoflV7vHNyd0R0hwj0m9wDX61ZXqORiW/NfgsL172NEQteQ6ehbRHWLBj2zornDxevqoVcRzcHrLnyJSLbajuu3QRctK3BhUZnOzbaBRno34At1Zk2bRr8/f1tOzk1Jk+ejODgYJ3HqDoQoVa/lxUJBAKB8EpjL5Xg/vf70eTdYWBxbHfL4rAY6B3uCVc9WhumQlEUbvxzGxc2n4NDvzbwbWdbbZRgVz46hbjVqxSRWyfu4eqhW3h8NQ5Jj1K1igv9OWYFGk4fAP8utl3JD3SxQ5dQ93ply7tnHuDygZt4fDUWSQ9TNFZqAeD8x7+D17kJgno2s+m4fk526B5Wv2xpCAaDgZkzZyIzM9Pm1eEaN26MhQsXgsn876xxT548GRkZGYiJsW3eVWRkJD788EOdUQz1lfHjxyMjIwO3bt2yab8NGjTAkiVLwOVad498lRg1ahQyMjJw5coVm/YbHByMjz76CHZ2NbfwVtfgpOfi8e//ovFk2y5EONux0TfCE1yW/u9LgWOVncuL9Re3cnJywqeffoply5YhN9e21UnffPNNg4sw6vfqMR8Mg39DX71t7XIL8ei3U2gyw7bFLBx5Clvy2PqzH+wcTLOlg4MDPvnkEyxbtgxZWVk2nee4ceMwYMAAvccpNVvqSkutDf47d28CgUAgvFLI5XJ8++Y6PNx7Beff/RWSEttU/XTksSE6cw+T3CZjcsR8xFx4bFbFaIqi8CImCb8t2YmxfjPx2bDvcOPwbZx//ze8+OemTeYIAOFufGzq8TEGCyZg7du/oSS/1GZ9vyxunbiHj1/7Gv/8fBqJD1N02j31cRoufrgVzw9cs9m44e4CbO63FEPsx+OHt35CUW7tVcerKWIuPsbifl/gyKaTSIhJ1nKmAcC9UzH49+PtiP3rX5uN28BNgB1DvsBgwXh8N2U9CrIKTTjr1YfJZGLQoEFo1aqVzfrs0qULAgICsGbNGpw9e1YzvaYeo7Jl69atbeaU7dChAxo0aIAff/wRp06dgkwms0m/dR0Gg4EBAwagbdu2NnPKtmnTBlFRUVi7di1OnDgBqbT2qja+TFRVdtu1awcWyzYSC82bN0fLli2xfv16HD16FBJJ7VVtfFmU5Jfii9GrcG/DUdxadQCUzDbfaz6OPNz4eDtG2E/AB32WITUuXWc7gZMAbKVERlFuicE+vby88MUXXyA8PNwmc+TxeJgzZ47RiGNxZdX7wN5Jf3GrsqJyfD7ye9z/5SRufLsXlNQ232teDlzEfLUbrztMxPvdP0Pyk1Sd7bg8DgSOivkVG7Glu7s7li9fjqioKJvMkcPhYObMmRg5cqTBduq2ZL8kOQ/iUCMQCARCnWTHsr24dfweAKAiMQsDwlytTn2M8nLAkGhvnFhzBDKpDBnxWVjU63PMa7cE53dfgczAw0pJQSl2fvE3ZjR5D7NbfoA93x1CYXaVY0YulsKvtAw9G3pYpf3mwGWhf4QnGI+TUJBeCIlIgiMbT+KNoNlY9/ZvyHhh29W/2oRrZ1q0g1wqg1dhMfqEe0BghXacPZeFPuGecEjLRk5SLiQiKY7/dhbjg+dgzexf9D6QvwoYsyWPz4W4UgJKJodbXiH6hnvA3sLiG1BWYu3d0AO+ZaXIfJ4JqViK09svYkLIXKyasUnvA3l9oLS0FPv27UN0dDSWLFmCzz//3KpUIWdnZyxatAhTpkxBWloaKisrce3aNdy9exePHz9Gdna2TedflxAKhdi/fz/CwsKwePFifPHFF/Dzs1zLyNHREe+++y5mz56N5ORkiEQi3Lx5E7du3cLTp0+RmZlp0/nXJSorK7F//34EBgbigw8+wFdffYXAwECL+7O3t8fbb7+Nd999F4mJiRCLxbh16xauX7+OuLg4pKe/ut+XxhCJRDhw4AC8vLywaNEifPPNN1bp8PH5fMyePRtLlizB8+fPIZFIcPfuXVy5cgXPnj1Damr9/L6UyWT4avwaZCcrIr6YyVkYFOUJd4HlkY5sJgPtg1zRL8ITd47egUwqw/1zjzAt6l18NnwFHv77VCvtz8lDkVJZkmd8IdLNzQ3Lly/HxIkTweFYLpMQHR2NlStX6hbOr0ZRdhH92sVLd3qsXC7HisnrkBGvfOZLysKgRp7wtLfcliwmA20DXTAg0gvX912HTCrDw3+fYkaT9/G/wV/j/vlHWgudzp4KWxpzqAGAi4sLli5diilTplgV3RoZGYnvv//epAq8hSbYsqZhUOYsy9czSkpK4OzsjOLiYjg5WS5KTSAQCATbcvP4Pfxv0NeAMoT721OfomWvpgCArNJKxOWUIbmoAqbcwVhMBsLcBGjk5QA35UPdp0O/xfV/7mi19QrywOvvDsaw+QO0Vqjnd/wYsTee6x0nrFkwNt5eARabBbFUjud55YjLLUOpyLTVfVc+BxGeDmjgLgCHxURZUTlGuE3RasdgMNB5RDtMWjoaoU11a0rUVSiKwndT1uPMjksG2wVE+OKXB6vA4XIgkckRn1eO2NwylFSaZktnOzYivRzQ0N0eHBYTlUIRhjhORHU5PgaDgQ5DWmPS0jFo2DLUmkt7KayZ8wuO/nzaYJvwVqFY/e8X4PF5kMjkeJFfjricMhSZaEsnXpUtuWwmpBIpBvHH64yIa/daS7z52Wg0ameb1f66ws6dO5GdnY158+bRaVsikQiXLl3CqVOnkJycbFI/3t7e6Nu3L3r16gUHBwdQFIVvv/0WYrGYbsNisSCTyTBo0CC0adOmxq7pZbFnzx6kpKRg3rx5EAgUCyRisRiXL1/GyZMnkZiYaFI/np6e6Nu3L3r37g1HR0dQFIWVK1dCKKyKZFbZsl+/fujYsWONXdPLYt++fYiPj8e8efPg4KDQM5RKpbh8+TJOnTqF+Ph4k/pxd3dH37590adPH/r30OrVq1FSUvUDWmXLXr16oWvXrjV0RS+PQ4cO4cmTJ5g7dy6cnRU/yqVSKa5evYrTp08jLi7OpH5cXV3Rp08f9O3bFy4uCm2qdevWoaCggG6jsmXXrl3Rq1evGrqil8O2T3fjj6/2AUrnxqY7K+Dh7w45RSG5sAJxOWXILhOZ1Jcdm4kITwdEeNrThYTG+M1EYVaRVtvItg0w/n+vo9PQtgCAWS0WIeFBMjhcNo5W7DI5EjYnJwenTp3C8ePHTY4mbNq0Kfr37482bdqYHCW68d2tOLD2GABg9b9foEnnRlpt/vzmALb8bxeg1FnbeHsFfEK8IKcopBRWIC63DFmlptuyoYc9Ij0d4MBT2HJCyBzkpORptW3YMhTjPx6Jrq93AKo9+x4X/Qm2ifIreXl5OHXqFI4dO6ZxjzNE48aN0b9/f7Rr185kW27+6A/sXnEQALDi1Kdo1ce2Ehem8N8RGSAQCATCK0FhTjG+n7qB3p7+zQTamQYAPo528HG0g1AsQ3pJBfLLJSgQilFSLkJRXilkYil4oNC8ZTDcBVz4O/PBY2vemHu+0UWnQy0nJQ+b3t+GSqEI4z/WDDOXSfQ7IBhMBr4+9jFYSi0KLpuJxj6OiPZ2QHaZCDllYuSXi1FUIUFBXilEQhEk5ZVo1MgP/l6O8HbgwcOeq/HQ5+Bij4BIP6TFZWiMRVEULu+/gTunYrA7/Rc6HP9V4NntF7h39qHhRgzgq2P/A4erWCnmsJiI8nZEIy8H5JSJkVMmQr5QjMIKCQrzSlFZLoJUKELDht4I9HGGtwMPng6atrQT8NCgWQhexCRpDEVRFK4dvo17Zx5iZ9JGOHu8Ootr8fcT6QhOfTi6OeCzvxeBx+cBSls28nJEpKcDcsvFyClVs2V+GSrLRZAIKxEa4okQf1d4OnDh7cDTsCWbw0Zku3A8vf5Ma7ybx+7h3tlH2P5iPTz83Grgql8OAQEB6NWrl4YGEo/Ho50Q8fHxePr0KRISEpCcnIyKigqUlZWBz+cjMjISYWFhiIiIQHR0tMaPBAaDgTfffBNbtmyhowL4fD7atm2L0NBXz8FrCn5+fujcuTPtTAMALpeLXr16oWfPnkhISMCTJ09oWwqFQpSVlcHOzg4RERG0LZs0aaJly4kTJ2Lz5s10uqednR3atWtXb6tU+vr6ok2bNrQzDQDYbDZ69OiBHj16ICkpCY8ePdKyJZfL1bJl9QWkCRMmYMuWLRCJFD/YORwOunbtiogI2+qE1hW8vb3RrFkz2pkGpS27deuGbt26ISUlhbZlUlISysvLUVZWBg6HQ9syPDwcTZs21dLwGzduHLZt20Y7ezkcDrp06YJGjbSdKK8yDy49wa6v9wPKSpuf7HkPHv7uim0GA6FuigJLRRUSZJZUIl8oRoFQgqIiIYSlFZBWiuHuxEejSF942HPh52SnVTSqy4h2OLLplNbYcbdeYOnw77Dy3Odo3qMxHVUlEUshLK2AvZNp2Q1eXl6YOHEiPD09IZPJUFRUhMTERGRmZkIsFoPFYsHJyQmhoaEIDQ3F7du34e3trfXdbozCnKrsBjcf7aIAsTefY9tnuwHld9vHu96FT4gXbcsQNwFC3AQorlTaUvkcXFQsRFmxEDKRBCUpuSiITUOHLpEYMa6Tli27juqAfT/8ozV2/L1ELB+9Cl8d/RjtBraEi2fVc1FpQRlcvU0rkuDh4YHx48fD29sblZWVKC0tRUJCAm1LJpOJnBf5kBZSkBcz0GlqS7i5uaFx48bm2VItU8RVhy1rA+JQIxAIBEKdgaIorJq+EUXKh40Og1tj9KKhOtsKuCyEezgg3APY+cXfOLD+GEpyFeH9rfs1x4wTn+gdJ7qj4R8FulYzF+9YgPe6forSgjKtY+0GtIS7DgcCg8GgHYBlRWV4t8tXKMgqovvodXE5mjTTXxmpaZcoLYeaChabBeoV0VyiKArHfzuL9Qu2QCIyvOrbomcT+IVpp9MxGAx4O/Lg7ciDsKwC73b5FHlp+bQtvznxCZq21J/u1LRrlJZDje77JQnZWsrp7Rfx45xfIKpQrPoyWUzIdejUfLjtbfohXB0GgwEvBx68HHiorBDhva6fIjspl7bl5/s/QNM2+qMfm3aN0ulQw0sUBa4J0tLScO3aNYwaNUpvhAODwUB4eDjCw8Mhk8lw+PBhFBYWok2bNvD29jaaGmpnZwc+n0//2BYIBOjWrVuNXM/LJDMzE5cuXcLo0aP1/lhiMBho0KABGjRoALlcjn/++Qe5ublo164d3N3djaaGqmxZVlZGb9dHW+bk5ODcuXMYNWqUwQIMISEhCAkJAUVROHbsGDIyMtChQwe4uroiICDA4Bh2dnbgcrm0Q43H46F79+42v5aXTX5+Pk6fPo2RI0caTFELCgpCUFAQKIrCyZMnkZKSgo4dO8LZ2RlBQUEGxxAIBBqphCqnZ32irKgcKyatoxcGpiwfh+bdG+ts68LnwIXPAUVR+Hzk93j471P63jN52Vi07KXf0di4UyOdDjUVqnu5s5oTqDi3xGSHGpRp6c2aNYOvr/5CAQCQnZ2N69evIz09HTt27MCsWbNMdgSpR9m5emumKVaUVeCbiWvpe/r4/41Em37NdfbjbMeBs53ivfXl2NW4e/aB1jOqOOYFRo3vrHVu406NdDrUVDCVhR/UFxqLcktMdqgBQEVFBRo1aqS3AuhghwkQCcWwc+NALBYjKysL27Ztw9y5c03WMSzI1m/L2oJoqBEIBAKhznBk0yncOHoXUKYLvP/bHKOh+hkvsvD753toZxoA5KXlGzzHO9hT56ogAAye1RejFg7W2p+dlIvKskqd5wyZa7z60pdj1yD5SZrGw06ukXnqc/w5ezrhy38+okuw12UqyiqwYtI6rJ71M+1MC2kSCI4e8dihc4zbcsWb65D4IFnDlsb+5lF6bOno5oAvjix5JaLTKoUirJq+Ed9NWU870xq1a4jvznwGQTVh4yFz+qPD4NZG+1w98yfE3020yfvS3lmAZQc/rBfRaRRFYd++fSgrKzM5XejatWt48OABUlNT8eLFC9qxY4ji4mIIhUL4+/sjMDAQjRvr/hH6qrN//36UlJSYbMtbt27h3r17SEtLQ1xcHMrLy42eU1JSgrKyMvj6+iIwMBDR0batFFxXOHDgAAoLC03+wXnv3j3cvn0bGRkZePz4sUm2LCsrQ2lpKby9veu1LQ8dOoS8vDyTbfnw4UPcuHEDmZmZePDggUm2FAqFKC4uhqenZ7215bq3f6PTB5t2i8KYD3UvhKpz7NfTuHrolln3cX33HiaLiXc2vYVm3RS2danmBDKH06dP4/jx40bb5edXzbWkpMSk94KKAqVDzc6eB76D5r1747vbaN20Ru3D8eZno432d+7Pf3Fx71WdC74v7ulOo9drSyYDc9dMpZ141Z2T5nD+/HkcPXpU73GVo5PvXuXMLi8vR2mp6UW4VM5JJosJJ3dHs+ZnK4hDjUAgEAh1guSnafh50e/09qItc+FqRGCUoiisnfurljZWXnqBvlMAZSSELgcLg8HAgOm96XRDFRf3XsPS4SsgEWunffId7NCyd1Ot/erE3nyOO6djtPZb6gQKbRpkNMquLpD4KAXz2n2Es39UVZlsN7Al0p9n6bQlh8dGmwEtDPb5IiYJ147c1tpvqRMosJE/mna1TVWqmiQ1Lh3zO3yEE1vP0/sGTOuFVReWoXn3xug6sgO9P7CRP976/k2jfabEpuPCnqta+/ONfH702dK3gTda9GpidNxXAYqiEBUVhREjRph8Tk5ODv06ISEB//yjf/VfRUBAADw9PTFs2DBMmzYNrVq1wrlz5+pVZUWKohAREYHXX3/dZIeaemGGpKQkHD582Og5fn5+8Pb2xpAhQzBt2jR06NABZ8+erXeVFRs2bIjRo0dbZMuUlBQcOHDA6Dne3t7w8fHBa6+9hmnTpqFbt244e/YsHbFWXwgNDcWYMWNMdqipf8ZTU1Oxb98+o1XCPTw84OfnhwEDBmDatGno3bs3zp49i4qKCqvnXxc4+8e/OLfrMqBcVFmyfb5Re5aXCLHlf7u19uemG76P+4R66RSed3S1R/cxVTqJ1jiBsrKyTCru0aBBA1pzsLKyElu2bMHevXtNqjCsKkpQfWH33/03cGLLOUDpbFuyYz4tJaKPivJK/Lxwu9Z+VbS4uFKC2Fvaeoruvq7wDvbU2s93EqDnG1URbS5W2DIzM9NgNKyTh8IBVpxUDh6rSp/0999/x+7du0367lYVJXD1drZZpWNzIQ41AoFAILx0xCIJvpnwI13+eti8AWj/Wiuj51386yrunH6gtb+8WKHJYQh1EVieQKExRVEUVkxah0ph1Y+GE1vO4es3VkMq0XxIUv2YGfRWX3B5+itDyaQyrJn9i85juamGHx4DI/00Vtw4ynHun3uE47+dNXjuy+bktvOY3/4jpMYqKsMJHPkY/vZA3D4Vo5X2qfpdOGBab/Dt7XR1ByirXv045xdQOgTxjdnSO9gTHv5VkVNcvmJF9MnVOBxaf8K8i6tlzu36F3PbLEbSI0VlODsBDx/+/jYW/jYHXDsuYi48xqnfLwAA2BwWPv7jHdgp39P6oCgKP875RWeqqDHnpKu3C/wa+tDbPGWxj/i7idi78ohF11iXeP78OY4fP45+/frRwuKGoCgKd+7cQUpKCr3Pzc3NJKcYj8fD3Llz4emp+GGjEkK/cOGClVdRN0hISMCRI0fQt29fuLmZFrl47949JCVVpWerbGnMccHhcDB79mw6VUsmk+H69es4c+aMlVdRN0hOTsbBgwfRu3dveHh4mHTOgwcPNAo9uLm5QSaTQW5ELoDFYmHWrFl0OqNcLsfNmzdx6pT+dLtXibS0NOzbtw89e/aEl5d2WrwuHj16pFHowd1doQ9m7HPOYDAwc+ZMhIWFAcrvi9u3b+PEibp93zGFrKQcrJ33K739zqa34BWk7aSpzrZPdqMkXzsKydh9nMFgoHHnSHqb76h4XijOK8X6+Zvp/dY41F5//XWT0ptjYmI0CncUFRXhyZMnuHTJcNElsUiC0kJFNJu65ldeej5Wv/UTvT1v7XT4NzScdgoAO5f/TUe8qcNSywI4tE53xF2TLlXPwXwHhS3Li8qxZtbP9Petui3NjfYbMWIEevfurfe4SirFo7EzRNKqDJCioiLExcXh/Pnzes+F8ntJpaGmL+ukNiAONQKBQCC8dH7/dDde3Ff8gAqODsDM7yYaPae8uByb3tum93j680yD5w+c0RvtXmuJzsPb4uf73yOiTQMAQGpsOjYv+QMAsP/Ho1g1YxNd0ZCj5jibv2EGNt5egRnfTjA4zqH1J+hr05pjvOE5MplMzFs7DZFtG2Dej9Pw6V/v08c2vb/N6Pkvg0qhCN9P24CV0zbSaYlhzYMxatFQHNpwgnbgcO2qbDn7h8nYeHsF5v041WDfx349i6fXdVdaNWYLBkORxhDZtgHe+n4Slh/8kD7225KdSH6SatZ11gbiSjHWzPoZ30xci8pyhZM3ODoA629+g75vKh74SwvLNLRrpn75hkkVS8/suIQHF5/oPGbsswMAc36Ygsi2DTD96/H4+tjHtIP59892I/6+aZUa6yKVlZXYv3+/WZE4T58+xT///IPi4ipx5NTUVJOdHuq4uLhg0KBBJkU51HXEYjH27duHykrdqfK6ePbsGa1DpyI1NRXu7u4mR2SpcHR0xJAhQ4w6j14FpFIp9u3bZ1ZaWUJCAg4cOIDc3Fx6X3p6Otzd3c2O5BAIBBg2bJhRp+argFwux99//21SSraKlJQU7Nu3TyPaLyMjAy4uLgZ17HTB4/EwfPhws9/PdQ2ZTIYVk9ZBWKJYvOw9sSt6jtPW6qpO3O0XOLxRtzMxIz7L6Of1zc9GI7pjBIbNG4CNt7+Dg4tC+uLcrss4v/sKUC2qyhwnUEZGBq5cuWJQT0+FatFD9Xfs3bs3pk2bZjRtv0hD80vhBJLL5fh+6gY6ZbPr6+3Rf4pxnb3Eh8nYt1p3JLRULQvg7hnthWcAeOPjkWjcORKD3uqLTXe/g7MyYuzKwVv0Ip2lzsns7GxcuHABPJ7+xT2fEIXzNbiHN8CosmX37t0xffp0NGtmuGJnSX4p/UzpYoa2m60hRQkIBAKB8FK5f/4R9q5SRLWwOSws2bmArkpoiC3/+1PnqpyKlKfpCG8Vpve4vZMAX/3zMb29ePt8zGn1AcSVEhxcfxxlxUKc2XGRPu4V6IGcVIVGSOcR7TB4Vl+jD8S5afl0pSZdJD027sTp9UYX9HqjC709aGYfHP31DCrLRfhu8nr8cHG50ZSA2iL5aRq+HPODxnUNmtkHXsEe2PpJlR28gjxovZW2A1tixIJBRm1ZmF2EzR/9oX/sx2lG59f19Q50KXgAGLHgNRxYewziSglWTFqHH69+pZXu+7JIj8/EF2N+0HDG9p3cHfPXz6Cj+FQpz6qIshY9G2PUwiFG+y7JL9VIr65O8pM0UBRl8G/SYXBrDY22sR8Ow+4VByGVyLDizXXYcOtbcO2M/yipizRv3twsAfb09HQEBQWhpKQERUVF4PF4EAgESEpKQnJyMoKD9Rd40EXLli0hFotx/vx5dOzYUaO66KtG06ZN0bVrV5PbZ2RkICAgABUVFcjPzweHw4GTkxPS09Px/PlzhIeHmzV+s2bNEB0djfPnz6N9+/Ya1UVfNaKjo9G5s3GHhYqMjAz4+vpCJpMhJycHbDYbbm5uyM7OxuPHj83W64uOjkZkZCQuXLigVV30VUKVzt2hQwcTWivIzMyEt7c3mEwmMjMzwWKx4OnpiaysLNy7dw+tWhmPqFcnMjIS4eHhuHDhAlq1akWnDr5K7P72IB5djgWUEeDz1003eo5MJlNERuuIMgcAUYUYOSl5OovpqGjQPAQ/XvmK3p6/YQa+mfAjAGDt3F/RtGsji51ADx480IiO1QdFUeBwOBgwYAAqKyvh5uaGBg0amOQk1ahKqXQC7V9zFHfPKCqgu/u54t2fZhntSy6XY82cXyGT6l58oeSKezhFUSjIKkJ5iVCrOENwVADW/Pslvf3uz7Ow7PWVAICN72xFs+7RFjsnHz58iMTERIPPEgERikIzcqkcxffFeOPj4XBxcUHDhg3NtqXbS3SokQg1AoFAILw0SgpKNaJrpn09AQ1bGI+uKSsqN1jpCQBSnhp3sKgT1MgfM7+r0p1Sd6a17tecdqa5+7ni/V9mm3SzP7T+OCr0FDKAMr1BPb3UFGatmgS/BorKgU+uPcPuFQfNOr+mOLPzEt5ut4R2pqn0P5w9nTScaa37NqedaS6eTli02XjhCQD456fTKCvSH51RnFeCkgLThWwBYPo34xEUpag+9fxuInYu/9us82uKi3uvYW7rxbQzjWvHwcLNc/Hh1rc1UmLP7LxEa6A5utrjg21vmxR5cnzzORTn6bdVRVkl8jML9R7XxaRlYxDWXOE4Snqcii3/+9Os8+sCMTExuHHjBgYMGAA+n2/CGQr69OmDqVOnYtKkSXB3d8e4ceMwZ84csFgspKWZ9z2kQi6X48aNG69sWtijR4/w77//YsCAAbC3N714Svfu3TFt2jTalmPGjMHs2bPB4XCQnp5u0VwoisKtW7cMimPXZZ4+fYpz585hwIABcHQ0XXS7c+fOmDlzJiZNmgQPDw+MGjUKs2bNgp2dHTIydFePNoXbt2/jyJFXM7X72bNnOHXqFPr37w9nZ9MrArZv3x6zZs3Cm2++CU9PT4wYMQJvvfUWBAIBsrKyLJoLg8HAvXv3cPBg3biHm0PszefYsWwvoNTqWrJjvklFku6efoDndxIMtlHJRJhKrze6oIcyMq6sqBzfT9sIR7cqZ29xnulOIEdHR7Rs2dJoOwaDgXfffRfNmjVDq1atsHv3bo3UakOoLwS7+bjgRUwStny8i9734e/zTRLXf/jvUzy5GmewjYtXlTPsyMaTRvvsMqI9+k/pCQAQllbg+ykb4OBa9Xc1x5YODg5o2bKlwee7kKaKlPI7658j+14B2rRpg7179+LZM91VxKujUS2VpHwSCAQC4b/Ipve20QUEWvZuitffG2TSeWwuG26+hm+epkR/VWfQrD4aOlsAMObD4Xhw4TG9/cHWeSZXEtIl+FqdtDjzftjwHfhYvH0+LTi7Y9lePLvzwqw+bImoQoTVb/2k0J5TpiWGNAnEuhvfIPZGPHZ9vZ9uO2rhEDy6/JTeXrh5Ltx8XE0axyvYePpcaqx5tuTxeViyYwEd4bf72wN4bOQBtSYRiyRYP38zvhz7A60BGBjph/U3vsGAqT012uZlFGD921WaMe/8NAtegaalGHqbYMuUp+b9qOFwOViyYwFdvXXf6n9w//wjs/p4mRQUFODw4cMWFQNQ/WBwdHTEjBkzEBISAg6Hg9atW9M6S+ZiZ2eHYcOGvZLpisXFxTh06JBFxQAYDAYYDAbs7e0xY8YMNGzYEGw2G23btrUohRZKbbXhw4e/kumKZWVlOHjwIMRisdnnqmzJ5/Mxbdo0REZGgslkom3btibrhlWHxWJh5MiRFp37sqmoqDA7nVsdBoMBHo+HKVOmoHHjxmAwGGjfvj28vb0t7m/kyJFgMpmv1HtTLJLgu8nr6cioNz4aiSZdTCvs4+7nBibLsPvB3HsPAMxfPx3ufopnibunH+C6WuEic5xATZs2Rbdu3Uxqq/reZ7FY4PP5SE5ONuk8dSeQi6cTvpu8ni7SNOr9IWhlpMiVCndfV7A5hrMTfMOqtE4v/nXNpH7nrJlCp2I+/Pcpzv95hT5mTrRfdHQ0evbsabCNujxFWVE5GAwGHBwcTLZldefky4I41AgEAoHwUoi5+BhndijEWx1c7PHB1nkm67rYCXjY/GQNvji8BF5BVT+yOg9vRz/kmKIDpY5UIsV3kzdoVQi9eewO/bAz8p1BaN23ucl9DpnTHz/d+x5jFw+n94U2DUJApB+9bW4kHQBEd4zEuCWK6oMyqULHRFRR+9XX0p5lYEGn/+GYWoGE/lN6Ys3lL7F35WEcXF8lhDvvx2lIf55J66oNequvRsqgMfpP6YlfHqzCxM9G0fuCogIQHF1VQcoSW4a3CsObSxVl6eVyCt9NXoeKstqvvpaZkI33un6KQxuqIpJ6je+C9Te/RWhT7ZTBnxdtp51ufSd1R/fRHbXa6KPH2M747dEPmPrlG/S+gAg/hCpXi2GhLUObBGHa1+Pp7e+mrDcYVViXYLFYaNeunVmpntW5ePEi9uzZQ2/37dsX/v7+FvcXFRWF4cOH499//4VQKLS4n9qGyWSidevWBsWojXHlyhXs3LmT3u7VqxctkG8JERERGDNmDC5fvmyWdtbLhsFgoEWLFujbt6/FfVy/fh2//16V4t29e3eEhhqPBNdHWFgY3njjDVy9elVDlP1VoHnz5ujfv7/F59+5cwebN1ctZHTp0gUNGza0uL/g4GBMnDgRN27cQFGRfgmLusTfq44gVbkQGNm2gcY92RhhzYKxI2EDPvrjHXqfi5cTmnWrcshZcu9xcnPEB1vn0ds7lu+lnwVNdQKlp6dj9erVZn8/MBgMDB06FFFRpjkV1Z1AsbfjkfBA4TwKaxaMqV+9YeBMTQIi/LAjYQM++es9MJQLrI5uDhqVtl28qyLUkh6n6OynOvZOAnyw7W3afju/2AsOT7FQZqots7OzsXr1ag1dUV24eDgBygA2kTJbY9CgQWjSxLRq4RoRat6mR5zaGuJQIxAIBEKtIxFLsG7eb/T2jG8nwDPAvEgOeycB2r3Wkr7BB0T44vP9HyC4scLBkv48U6+2RHUqhSIse30lLigFbVUPJwDoyopeQR6Y8uU4s+YIpd6Hs1pE2+iFQzFzRVXRBUtWYwFg4mejEN4qlO5jz4pDFvVjKRf2XMHcNouREKN4GOTxufhg6zws2DgDq6ZvxKltCkFbJpOBD7bOg3eIJ64dVqwau/m6mlR4ojqhTYLg4ln10DRiwWuYs3oKvW2pLcctHo7ojhEAgIwX2dj5xT6L+rGUywduYE7rD/HstiLSkMPj4N2f3sKSHQsgcNROPbx75gH9XnX2cMTsVZPNHjM4OlBjRXfI7H5YsGEGvW2pLUe+Owgteiq0mXJT8/H7Z3uMnvOyefHiBWJjY9G/f3+zBcbVyczM1EgVjYmJwa+//mp19Mm1a9demeqKSUlJePjwIQYMGAAOx3I9wuq2fPToEX766SerbXnz5k0cP6674l1dIzU1FXfv3sXAgQMNCnsbo7ot4+LisGHDBqsLX9y+ffuVSaNNT0/HjRs3MHDgQLPSuatT3ZYvXrzA+vXrLYogVOfevXs4fPiwVX3UBpmJ2fjjS4U0ApPJwHu/zAabY953plegB/zDq6pXtn+tNZYfWkxvp5iZ8qmidd/mGP72QACARCQFk61wc5jqBEpNTQWHw7FIZzEwMBDJyckmfT8VqhUloJ85GQy8+/MsgxXjdeHh747gqEC68nnrfs3x1T8f0RkMuan5sHdWXI9UIsPds7qLE1SnWbdojF40FAAgk8qhuixTNdTS0tLAYrFM0llUXbNMKodUKkVgYCBSUlJMis5WtyVJ+SQQCATCf4r9a44h+YliFbJRu4YYOMOySIasxBw64im4cSCgjFqC8uEh44VxbZPC7CIs6rkU1/+5AyidGcsPLkan4e002s37cZqGfpU5JKlVkAxuHICgRlVRKymxlmkscbgcLN4+n05X3PPdQWQl5VjUlzmIK8VYO/dXfPXGGlofLijKH+tvfov2g1rhw77L8e++G4CyyMQne95Ht9EdsfGdLXQfs1ZO0hLHNZVktVTekMYB9N8bVtiSxWbhw9/fpqu47l/zD9KeWa4xZCoSsQSb3tuGZa+vRHmxIgLJr6EP1l77CoPe0l30QiySYN3b6s7oiSanIFdHPS06uJotUy20JZPJxAdb58FOoHAAHN50EokPTUvfeBmIRCLs37/fYh0kdTp16qSRLiQQCFBaWmpWlcvqMJlMDBw48JWIqpJIJNi/fz8yM62vPty+fXuNdCF7e3tUVFRYbYeBAweaVSnzZSGVSrF//36rtM5UtG3bViNaUCAQQCwWG40eMcarYku5XI4DBw5YrGeoTuvWrdGvXz96WyAQQCqValSltYT+/fujoqL2I6PNZeO7WyGuVKRyD5//Gho0D7Gon2SNe08g7J3t4earSNm0dDEHAKZ/O4HWmJVJFA5jU51AjRo1wtixY82ugAsAeXl5OHHihEYVWH2oO4FEQsXz62szeiOqvXkFV1RoPBNFB4Jrx4VPqCKlOzU2HVEdIujjRzaavjAzeflYOgNAVTG0JL/UJEdXeHg4xo4da9ICFV9t0TA1NgMFBQU4efKkSZqZBdkk5ZNAIBAI/0FyUvOwc3mVmO38DTMseoCBWvQYlA8SUBYXUGFMUyv5aRoWdPwYcbcUkUECRz6+PvYxOgxuTZcPV+ETZpnmjPo8GQwGgqIC4BvmTWtNmav7pU5wdCBGLHgNACCulOCXD7Zb3JcpJD5KwfyOH+PIT1UPZX3e7Ib1N74Bm8vGgk7/w+MrCg0yOwEPyw8tRtfXO+DPr/cjKykXANCiVxP0HGd6pbrqJFV7EPfwdwPfQeHotMaW/g19MUa5IiuVyLDp/W0W92UKKbHpeLfLp9j/Y1WER7fRHbHx9gqDhTn+XnUEac8UDovoTpHoN6WHxXOobksnd0e6oleKFbb0CvLEGx8rdJbkMjk2vru1zmoEicVi+Pn5oVevXlb1I5fLkZOTo6HzFRERgeHDh1tdpbNp06YYN24cYmNj67SmmkQigbe3N/r06WNVPxRFITs7G56eVRqUYWFhGDZsmNWVJaOiovDmm2/WeVvKZDJ4eHhYleoJpS2zsrI0bBkcHIxhw4bBxcW6H6Dh4eGYNm0aYmNjrY52q0lkMhlcXV2tSvWE0paZmZkatvTz88Pw4cMt1vdTERYWhrfeegtxcXEW6TjWBlcP38L1I4qFRzdfV0xaNsbivpIeVaUfhiizClQFgkryS83SPVPHTsDDnNVTNfZVlouMSmJQFIXHjx9b/Hf09vaGnZ0dSkuNF0aqXp3e2cNRQyrBXBLVbBlM21Lxf2W5CF1GVi0OP7j0WEcPuuHyOJi7RtOWcpkcZYXGnehPnjwx2ZbqGRwv7ifC09MTAoHApMUTzZRP4lAjEAgEwn+ETe9toytbDp7dDxGtG1jcV3WHAAAEqkd/GdDiuH/+Ed7t/Ant6PEMcMfqf79Ai55NkPAgGSe3nteatyVOAblcjhRlNJ5PqBfsBDyw2Cw65SHtWYbJqam6mPjZKFo74t99N3D37EOL+9KHTCbD3pWHMU8txZNrx8F7v8zGh9vexouYZLzT6X/IiFdE+bj5uGDVxWVoO6AlUuPSsXelIpWFzWFh/voZJlX11AVFUfTf3M3XFY6uDmAwGPTfXBGxaLmW3Nglw+nU45vH7uHG0TsW96UPuVyOA2uPYU6rD6pSPLlszF8/A5/sfs9g5F71dJsFVjijobay7eBiD3dldIDKlgWZhSgvtjz6ZNT7g+EbpogUuH/+Mf7dd93ivmqKwsJCJCQkYMKECWZVT9RFWloaTp48qRGpwmKxQFEUcnNzrZ5reXk59uzZg7t371rdV01QXFyMZ8+eYcKECWZVT9RFZmYmTpw4oWE3JpMJFotlUgSIMSorK/HXX3/h5s2bVvdVE5SWluLx48eYMGEC3NzcTDhDP3l5eTh+/LiG3RgMBjgcjk0iCcViMfbu3YurV69a3VdNUFZWhpiYGEyYMEHDEWYJRUVFOHr0qEbUoKpQgS0iCWUyGfbu3YtLly5Z3ZetqRSKsPGdrfT27FWTLY4yB4CkJ1XPZnR2gcazm+VRau0HtULbgZqVOo2lfQqFQpw5c8bivyOHw8F7771nkp5edYeaNVHmAOhsDwAIUT0Hq+n0egZ60IUgSvLLUJhjulZfqz7N0GVke419xiL+RCIRTp48idRU0wqDqSITASDlSTpYLBbeeecdNGrUyOi5hdmKKFsOj0Ontr4MiEONQCAQCLXGzeP3cHm/Ih3QxctZQxTdEpLVUilDmqhSPtXTKXU/lJ3ecREfDfiSFkxv0CIEa69/jbBmwZDL5Vg771fIZYroBQcXRcnw++ce0XM3h+zkXNqBqJojAAQ2UjzwSCUyZCZY/iPR3kmA6d9MoLc3vbsVUontVrgzE7PxQa9l+OXDHXRxhpDGgVh3/Ru8NqM3Lu29hg/7LEdJfqnasa8R0boBKIrC+vmbqypYLRyq8dBsLoXZRSgtUKxaqttS9TenKIqO3rIEvr0d3vr+TXp743vbIBaZX6lQHzmpeVjS/0uNtJnASD+sufIlhs7tb9TRaKt0GygraqkKcIQ0CaTHVv/7JFvxo4Zrx8XsH6q03X5etJ3+HNQFKIrCvn37cOeObZymlZWVsLOzg6urZtXaa9eu4fbt23rPMxVnZ2e0atUKcXEvrwqtPiiKwoEDB3Djhvnfj7oQiUTgcrlaFVJv3LhhkzHs7e3Rrl07xMbGWt1XTXD48GGbOagqKyvBZrO1okVu3bqF69etd3Lb2dmhU6dOdfJ9CQBHjx7F5cuXbdKXSCQCi8XSqpB6584dm/y92Gw2unbtWidtueurfchOVji4W/Zuih5jO1nVn2oxR+DEpxexTF0MNQaDwcCcHyZraOHG308yeI5UKgWbzYaPj4/BdoZ49OgRDh48aLRdbmo+/draKHOo2ZLD48BXme6qLt+QFpeBgIgqzboDa4+Z1f+slZM0KrOqFgL1IZVKwWKx4OfnZ7CdCvUK7ulKmZbY2Fj8/fffRs9VRai5+bhYvFBrC4hDjUAgEAi1gqhChPXzq6pjzVo5iXZWWYoqWonFZtEPDIGRfrQg64tqD1EURWHH8r34bvJ6SJX6Gu1ea4kfLi6Hh58iEuD09ot02qJ/uC/e+2UWff5PC3832ymQ/FhtJTZa3QlU9cBTfZ7m0ndSdzRqp1gZTXqciiObrBcwpygKxzefxazmi/Dw36eA8kF19MIh2HDrW4Q2DcKe7w7hy3GrIVE6nVr1aYo1l7+AV5AiEuDiX1dx94wiYs472BMTPnndqjklqdkyRM2WwTa0ZfcxndBUWXEsIz4L+9dYL7pNURRO77iIt5otxD21CMLh8wdi453vMvh0eAABAABJREFUTIrStGW6Daqtamu8L6NtZ8uOQ9qgTX9FVdyclDz89V3tFs4whFgsRnl5udXpiSrCw8PxzjvvaGnG+Pv7QyKxjVN28ODBGDNmjNV6TbZGJpOhuLhYQ1vKGkJCQvDee+9pCfH7+/vbLB2uf//+mDBhQp2zJUVRyM/Ptzo9UUVAQADef/99LaF1W74ve/XqhcmTJ6OgoMCE1rVLfn4+BgwYYJO+vL29sXDhQq1oVn9/f6uLEqjo3r07ZsyYUadsqR1lPt0q50V5iRA5KXmAcgFO1VewDe89gZH+iGpXpUm25zvDji5nZ2csWbJEa0HEHIRCIeLi4gxmMiQ+SqH1yADgnY0zrYoyF1eKka7MDAiK8geLpdDU1biPxyShy8gO9PaVA+ZF5vqEeKFZt2h6++8fDhu8Rnt7e3z00Ucmp3z6NaxyYualK5yNQqEQz549MziOVCJFcZ5iIfdlFiQAcagRCAQCobbYs+IQHYnVrHs0ek/oalV/MqkMqcoIGv9wH3C4CkF5Hp+H0GbBgFKnQ5W2JhFL8P20Ddj++V90H4Nn9cXyg4vpSoolBaX49cMd9PG3101H19c7oHW/KqfA3u/Nq8SlqRVS5bhQF6B9fNW6FWkmk4l5a6fR278v3YOiXMsFpwuzi/DZ8BX4YeZPdOEBnxBPrDz/Od76fhJYbBZ+nPMrfluykz6n/5Se+Orox7B3VjhJy0uE2PT+7/TxuWum0kL1lpKkoRVSZctGarZ8YqUtGQwG5v04jXbK/vHl38jLsPzHTXFeCZaPXoXvJq+nCw94BrhjxenPMO/HaSbZxNbpNjDwvtSw5TXrbTln9dRaL5xhDIlEgoyMDCxYsABBQUE26fPo0aN4/Fhbn2bQoEEYMmSITcZgMBhITU3FunXrbJKuZwukUilSUlKwYMEChIbq1/4zh5MnTyImJkZrf79+/TBixAibjMFgMJCVlYW1a9eanJpU00ilUiQkJGD+/PkID7dMoLw6Z8+e1Zkm3Lt3b4wZY51TXgWDwUBeXh7WrVuHxMREm/RpLTKZDC9evMCcOXNMSh0zhYsXL+qMkOzWrRvGj7dcA6s6xcXFWLduHZ4/f26zPi2Foiise3szvQA5etFQBEZaHmUOA4s5EW0a0Pfdx1beewCg0/C29OsnV5/hzmnt7xQVN27cwKFD1i34REZGonHjxgbbbHy36j4eEOGLMOWzqqWkxmXQ2RTq9/GGLUJond4nV+MwfH6VUzntWabZ+pHqaZ8v7ifTRbx0cffuXezbZ3qldEe1hXVJpcLZGBERgSZNmhg8ryi3hHa4qWRPXhbEoUYgEAiEGicnNQ+7VyhWCFls63S0VKTEptOphOrOFQBo3CkSACCXU3hy/TnKisrx8Wtf4/TvF+k2b333JhZsnEn/2AeAncv/ple8uo/piDb9miudAlPodrtXHKBTH0zhRUzVSqtKMBbKUH8Vj65Yn3rUqF04+k9RVMUrLxZi6//+tKiff/ffwMym79PRUAAwYFov/HR/JZp1i4awtAKfDv0WR385TR+fsnwcFm6eAzanKjpn97cHUZCpiP7oMLg1Og5tY8XVKVC3ZYiaLSPbNaRTEmxhywbNQzBoliLaprJcpOE4NIfr/9zBzKbva6QK957YFb88WIVWvZua3M/fq47YNN0G1SIA1N+X4a1CwbVTOKcfXbbelkGN/Gu1cIYpnDx5Evv27bNZiohMJkNMTIzOKBWZTIYff/wROTm2cSQGBwfDw8MDt27dskl/1nL27Fns2bPHZraUy+W4f/8+RCLtSGCKorB27VqbORP9/f3h6+tbZ2x58eJF/PnnnzYr4EFRFO7du6fTlgCwfv16mzkTfXx8EBgYWGd06a5cuYJdu3bZVOBf3/uSwWBg06ZNNnMmuru7IzQ0tE7Y8uqhW3RUtXewJ8b/z7ooc1S796g7geydBPRiaOKDFKs0PKEsjqPORgNyGAkJCVZXWfX09ESbNm30fn5vn4rB/XOP6O0WPQ07jExB4z6u5pzk2nER3joMUDrQAAat0yaXyXHloHnvLVVaropN722DuFJ3VGZCQgKEQqHJfdvZVy0qqv4+bm5uaN++vUHHX1F21aKx20ssSADiUCMQCARCbbDrq/10WuCIBa9pPERZyoOLT+jXjTtGahxr0iWKfn3z2F282+UT+kGGa8fBp3+9j9GLhmr8CMxNy8c/yuqVdgIeZq+q0n8KjgrA8PkDAaVT4GcTnQIURdHz5DvYIbRJVTSMo6sDbYcX95NQUWbdwxwATP9mPAROimi745vP4fndBJPPLS8ux3dT1mP5qJW0U9HFyxnLDn6Ihb/Ngb2TALlp+Xiv26e4deI+oBTTX7JjASZ88rqGLQtzinFQqdPB4bIxd81Um/zgVtmSw+OgYcuqaBi+vR3CWym2k5+koaTAeKUtY0xZPhaOboqKgmd3/mtWFKGwtAI/zPwJnw79lhbNdXJ3xKd/vY8l2xeYlepcWliGv384AgBgsph4e5116TYqHlx6QvcZ2bZKSJnD5SBSmT6clZhjVXSeiuqFM+6ds33hDHN4+vQpuna1LkJWHQaDgUaNGiE6OlrrGIvFQkVFhc2iTVgsFqZOnYpevXrViSqVNWHLyMhING2q7XBmsVgQiUR49uyZTcZiMpmYNGkS+vbtW2ds2aVLF6tSwNRhMBiIiIhAs2bNdB6TSCQ20+tiMBiYMGECBg4cWGds2aFDB3A4HJv12bBhQ7Ro0UJrP4PBgFwut6ktx40bh8GDB79UW8rlcmz7bDe9PWf1FKujzKF27wGA6E4RGsdUi6EUpVgMtQZ13TAoCx0c3nBSZ9vw8HC0atXKqvEoisLmzZt1RipTFIVtn2oucnoHW1ckA9Weg6vbsknnqsjMJ1fjNNI2j/121qxx/KvZMjMhG/tW65bDaNiwIdq0MX0Blcevek/JlJGQFEVh69atOiOVVagXdyApnwQCgUCo12QmZuPElnMAAIEjH298ZJuUnZiLVQ8tzbpr/pBt3LnKwfbPT6foFANnD0d8f3Ypuo3qqNXfrq/20RFvQ+cNgIe/5orcm+pOgb+vI+FBstE5pj3LoG/6Tbo00oiGg3oknUyOpzfiTbhqw7h6u2Dip6MBNb04U7h37iFmNluI09urIvg6j2iHXx+uQqehirSJx1fj8Hb7j+gqn46u9vjm5Cc6U3f3rDhIa829NrMPXe3RGrKTc5GVqIjyieoQDq4dV+N4407qD4/W/+B2cnfElOXj6O3ty/4y2F7Fw3+fYlaLRTi+ueqBtf2gVvj14Sqd7ztj/L3qCJ0q2m9yD6uKOqgozCmmPxMRrcPolGcV6rZU6QlaQ/XCGb8v3WOzKBxzEYvFmD9/Ptq3b29Ca9MoKytDr169dFa3ZLFY6N27NwICAnSeawl8Ph9Pnz7Fb7/99lJ/cIvFYsyePRudO3e2WZ9lZWXo1q2bTi0jBoOB3r17IzDQ+gUZFXZ2doiPj8fPP/8MmczyasvWIhaLMWPGDHTv3t1mfZaXl6Nz5846tYwYDAZ69uyJ4GDrUs7U4fF4SE5OxsaNG20aGWYuYrEYkydPtpk+IpSaTu3atYO3t+57Wffu3RESYnmRmOpwuVxkZmZi3bp1NtNnM5dLe68h6ZEigrFR+3B0GtbW6DnGoCgKDy4ont34DnYIbxWmcbyxmhPosZUR0kFR/lqLT39+e0BnJXBvb29ERkZq7TcHBoMBe3t7FBVpV9G8/s8dxN3SFPN397eugi/UnoM5PI6GjAiq2fLR5VgMmVulcWmuNIZ/Qx86hVTF3pWHICzVXgj28PBAVFSU1n59cNWctFJlxXsGgwFHR0edtlShXszLwwa2tAbiUCMQCARCjbLzi78hU94kR7zzmlXlwVWoP5TZOwsQ1lzzR4FngDsdBaTS/vAP98Xaa18juqP2Q1NWUg7t9OM72GHMB0O12tg72+ONj0bS27u+Nq4REXOhavWwWXdtbY3GXdQdF7apODfs7QH0w8W1w7c10iSrI6oQYeO7W/Fhn+V05SmBEx8fbnsbS/9eBBdPZ1AUhSM/ncKinkvpFE6fUC+sufIVmuu4pryMAhzZpFgF5tpx8MbHI7XaWIL6SqyucdWdqLay5aC3+sAnVFHR7e7pB3h6Q/+KuVgkwa8f7sDCHktpxx/fwQ7v/TIbXxxeAjcf88WOi3KLsf9HxSowm8PCxE9HWXwt6qjbUtf7skkN2LLvpO50NdbHV+I05lBb5Ofn4/vvv0d+fr4JrU3nyJEjOHfunN7jrVu3tvmPYl9fX2RmZuLFC8MV12qKoqIirFy5EtnZ2Tatrnb8+HGcPn1a7/GWLVtCKpXa1CHr6+uLnJwcm0W+mUtpaSl++OEHpKWl2dSWJ0+exIkTJ/Qeb9GiBeRyuc1tmZ+fjydPav/zDaXja82aNUhKSrKpLc+cOYOjR/UXqGnWrBkYDIZNbenj44OSkhI8evTIhNa2RSaTYfuyqgW5ycvG2sSexhYZm6g/E1217t7D4/PoqpcqSYiinGIc+1UzOqugoABbtmxBVlaWVeMBwNixY7WiGKtH+qlQz1iwhJwUw4uM6hFrj6/GolXvZmBzFPYWllQgM9H06vJsDhsBkYqqnar3QWlhOQ5v1Iz4KykpwebNm5GWZnqVVjtB1bxVEWoA8Prrr6N169Z6z0tUW9QOsdKW1kIcagQCgUCoMdKeZeCMMurJwcUeo963jTh38pM0Oi2xabcourIRlALuKyatQ1lRlf5GZLuGWHv1K/g10F0S/Y8v/qYdbyPfGQRnDyed7QbO6A0XL0UUyqW915ESm25wnupRdM176HJcqD882iZdhMvjYMwHw+jtXV/v19ku7vYLzGm9WKOEeouejfHrg1XoO6k7GAwGxJVi/DBjE9bO/ZW2T7Pu0Vh77Wu9kVJ/fr0f4kpFeu/QuQPg7mt51Sx1HhixZeMasCWLzcIbS6oiKnd9pduJ+iImCfPaLsZfK6uqXzXp0gg/31+J12b0tviHyF/fHUJluWI1feCMPjZJEYEJtlTX97OVLZlMJsZ/XKW/84ceW9Ykt2/fBp/P1xtlYilZWVnw8dH93aI6vmvXLpvpqEFZvXHEiBE2vxZTuXPnDjgcDnx9fU1obTqZmZkGbZmXl4c///zTpkUZfHx88Prrr9v8Wkzl3r17YDAYNo1ihAnvy8LCQuzevRspKSl625iLh4cHRo0aZfNrMZX79+9DJpPZrNiIiuzsbIO2LC0txe7du5GQYLrMgjFcXFwwevRom1+LKZzbdRmpyuebJl0aoXVf7bRhSzC2yOgV6AHPQEV2QOyNeL2aZ6YS2kQRzaoS7geAv74/BLGoqsKtKgqqevVWS6AoCk+fPtXYd3n/DTqyn8dXOI+YLCa9wGQpMUYWGV08nRGodII9v5MAUYVIw/G0Y5lpGQwqQpS2VHca7/vhCJ2NAGVBDQBwctL9DK0LdQ011eI7lI47Q475RPXCSk1sF7VsCcShRiAQCIQaY8fyvZDLFTffUQuHmKUdZYiYC2oOAbUHiaykHLzb5ROc/eNfjfY9xnTSGxmX9jwTp9Sdfgv1O/3sBDyMVh6nKAp/fqPbWQWdqQ3aFfB8Qr3gpnQ4Pb32zGYpR6/N7K2Rnpr8tGq1UFQhwtZP/sQ7nf5HPzBz7TiYs3oKVpz+jBbyzUnNw/vdP8OJrefpc0e+MwgrTn0KVy/dFZVyUnJxXKnNYWfPw9jFw3S2s4QYNf20qA7aFfDcfV3p1NLYm/EaD8zW0Hdyd/oB//o/dxB/r0p4WiySYMfyvXi73RI6NYbDZWPmiolYef5zq1JdC7IK6dVfDo+D8R/bJlUaahFqTBZTI7JPhbq+X/y9RJvo+wFAj7Gd4NdQ8aP03tmHVlcRNZcWLVpg/PjxYLPZJrQ2nXHjxhlMIfXy8gKbzUZeXp5Nx23WrBlu3LhhU4eIOWNPmDABXC7XhNamM3r0aIMppB4eHuByuTa3ZZMmTXD37l2bOkRMpXHjxpgwYQLs7Oxs2u/IkSPRrVs3vcddXV3B5/NtbsvGjRvj4cOHL6VKZVRUFCZMmACBwLoqyNUZOnQoevbsqfe4o6MjHBwcbG7LRo0aITY2FrGxtokUNgWpRKrhbJnyxTibRfsZW2SEWpRapVCkIbpvCepC/Spt0Lz0ApzadoHeHxQUhKlTp9rEoZaUlISzZ8/STieZTKZRWV7lIAyM9NOKKDOXBxeM21IlKyKVyBB36wWGvV1V7VO9WJIpqNsyqqMi+q0otwTHfjlD7/fz88PkyZN1puzrw86+6ntPpub4TElJwdmzZ3XKGsjlciQ+VNz3fEK9rK56bi3EoUYgEAiEGiHpcSrO/3kFUOpRqSr92QJdD2V3TsdgbpvF9AOYqlIhADy5rj+VZ+fyvfTq5aj3jTv9Bs/uR4vVn9t1GRkvdKcJVE9tUK+AqYLBYNAODWFpBf2AYC08Pg+jFyrSVtUdf3fPPMBbzRdh19f76ZXA8NZh2HjnO4x8ZxAthh1z8THmtVlMa37w+Fws2bEAc1ZP0XkdKv74skqHbvj81+DiaZtS5jkpubRehq7UBhUqW0pEEsSbUZDBEBwuB2M/HE5vqyKrHlx6gtktP8D2z/+io/fCmgVj/c1vMeaDYRpRk5bw5zcHIKpQpAkOmd1PS9PPUgpzipH0WOH8i2gdpvdBVF3fL/am9fp+0BHxt/PL2otSO3v2LNLS0gxGmVhCfHw8nj9/btBJx+VyMWfOHEREROhtYyk5OTk4duyYCS1tx8WLF5GQkAA/Pz+b9puYmIinT58aFJJnsViYNWuWWRo9ppKbm4tjx47Vqr7flStXEBsba/OIrpSUFMTExBh0eDKZTMycOVNnAQhryc/Px9GjR2tV4+/GjRt48OCBzSO6MjIycOfOHYMOTwaDgenTp6Nly5Y2HRvKlMSjR4/Wmi7dqd8v0vfblr2b6ox+sgRTFhlhYw1P9YisiNYN6Nd7VhygnVvp6ek2SfeEsnIwl8ulv0Mu7rlK65U2aB4CmVTxeVBVM7UGY4uMqB65fyUO/Sb3AEf5bFxRVolr/9zReZ4u1FNUw9Re7/n+EF3xMzMz02xbqkeoydUi1Pz9/cHj8XR+h2Qn5aKirFIxFxvY0lqIQ41AIBAINcL2z6uEx8d+OExL+NxSKIrCQ+WDhL2zosz6nu8O4eOBX6G0oAxQ6qWtu/4NPebjy7E6fyQlP0nFuV2XAZXT7x3jTj+BIx+vvzsYUDobdn97UGc7YzpVKppUE461FYNn96Wj8s7tuozPRqzA4n5fICNe8bDD5rDw5mejsfbqVwiOUvyYoygK+388ig/7LEdRbgkAwCfEE2uufKmz+IA6GS+y6Gg2gRMfoxfZJr0XJqQ2qKgpWw6Y1hNuyipSl/ffwOcjv8fCHkvpCD8mi4lxS0Zg3Y1vbPJwl5Oah6M/K3Sk7AQ8jFsy3Og5pvLwkmnvS3V9P1vass+b3eAVpBBJv3X8Hp7dqXkNsPz8fFy+fLlG+r5165ZJEWJlZWX4559/bD5+r1694OJSexXOiouLcfHixRpxOt2+fRvJycaLvVRWVuLQoUM2n0PPnj3h5lZ74tZlZWU4f/58jTid7t69i6Qk49E9YrEYBw8etPkcunXrBk9Pz1pzTlZUVODMmTM1ZsvExESj7aRSKfbv32/z4hZdu3aFj49PrTgnxSIJ/vjyb3p7yvKxNus7/Xmm0UVGVNNRe3Tlqc42phLSuMpRXV5cjjb9mwMAspJy6We/hw8f4t69e1aNQ48XEoL3338fTCYTMqmmDl27QVVVRK3WT0vNM2mRsbotmUwm2g2ocvruMLHYEgAEq9myKLcYnYcrilQUZBbipPLZ7/Hjx7hzx3QnHaqnfKpFqPn7+2PRokU6F6vUi4JZa0tbQBxqBAKBQLA58fcT8e8+RTi5q7czhs4bYPQcU0l5mkY7exp3isQ3E37Eb0t20qml7Qe1wnqlY0MVll6QVaRT72z7sr30A/+YD0x3+g17ewAEToq2p7dfQE5KrlYbU1IbUG0F8f5524kP8x34GPnuIAAAJadw7dBt+liTLo3w073vMenzMfRDrUp7btN72+iIvVZ9m2HDrRVo2EL3SrI6O7/4uyrS770hcHKzPn1ChUZBgpdgSx6fh1GLqgpVXDl4k37dqH04Nt35DtO/Hg8uT39kjTns+mo/Hek37O0BcPW2ncPEVFs2qSFbsjlsjFtc5SDUp0tnS1gsFlq3bq0lFm0LBAIBmjdvbrRdeXk5YmJiDFYtswRfX1+MHDkST548qRXnBYPBQMuWLQ2KRVuKqbYUCoV4/PixzdPrvLy8MHr06Fq1ZfPmzdGuXTub983n8016v1dWVuLp06fIzjZdoNwUPDw8MHbsWMTGxtZalFrTpk3RsaP5lZSNYaotRSIR4uLikJ5uWFvVXFxdXTFu3Dg8f/68xivRnth8Djkpis9V24EtdRZxshR1qQ5DizkhTQLp56sH/2fvrMObOt83fsfr7kJdKFaktLhLcYcBQ4dsjPlgbt/5xmAMNmC4u7tTpFCklLq7uzd6fn+c5CRp0zZyspX98rmuXSPJOW9Onp7kvOd5n+e+7yTo9JndAlwo44OsuFzM+0xu7HPoBzL5aWxsTFvlcl1dHdavX4+amhpc2xeB/FRS67HH0C4gFJJFui68tWfSJMPVzxlW9qSeWdy9JAgFQiz7aT71etqzTDSoKeng5OVAacBlxedh7qdyTdTDP52GUCCEkZGRxrE0NpNXfipq3TU2NmL9+vWoqKhosY9SQs1QoWbAgAEDBv6L7P+ffIVzzkdTYaRgi60riqK2qc8yEHEsknr86hcz8c2ZtVTbZp/R8puzyLNPlMbJTsil9rVysMSkVWPUPgYzK1NMeTMckGpTHPn5jNLrBEFQx2lkymu1tQEAfHt6wtKOTD49vRqj0tJdG3KS8hF16ZnScyYWxnh320qsu/21kh6GKu252Wsm4/uLn6jlylqQXoQb+yMAAObWppj2Dn3tvVAQ0edw2QgM9W11O48gN8rh9PnNOJWW7tqQn1aIRxeUV12NTHlYvek1bLj3P1pbDkpyyyjHWRNzYyWDCTqQJXqZTIZK/TQZTl4OlN5Z3L0k1JTX0nYMYxYPo7QD759+jMzY9quStKWmpgZpaWmYMGGCzm24zZFIJBg+fLhaSSBvb2/4+Pi0u502VFZW4tixY3rXrKqrq0NSUhImTpzYZlumNkgkEgwePFitRJ2Hhwd8fX2pFnU6qa2txfHjx/XuUllfX4/Y2FhMnDgRPB5910dIrz/9+vVrU9dPhpubG/z9/Wn/bkCa+Dx+/DhevHhB+9iKNDY2Ijo6GhMnTqRdh44gCISEhLSp6yfD2dkZgYGBtH83IE3WHT9+nLZKKlWIhCIlXdiFX9NXnYZmi4zdhwS1uh2LxUKvkaQJQnVZLRIjtXff5XA5cPUjr2O5SfnoHOpHLSTlpRQi4thDjBgxApMn03OdFQgEqK2tRWlpqdJi0aJvZiuJ6Ht3162qSjk52XosGQwGekvnwQ01jXhxJwGufs6ULixBENivpjkBi8WijBQK0orgEeSGkHCy2q0kpww39t/FkCFDMH369HZGUkaxuk4xoSYSiVBbW6ty4YTOWNKBIaFmwIABAwZopTi7FJFnHgMAbJytMWHFKFrHf3henhirLCYdhUwsjPH16TVY8NUspZus/pNDqH8/OBOlNM6ZTZepf89eMxnGpppNxKe9M54qVb+04ybKCyup11KfZaBC+rjboM5t6o6xWCyETegDAGiq5yP6hm7VQIImAfZ+dRQrgz9AwgPliejAaaEY99oIpRjdPfEQr/daQ2nPGZny8NmR9/Daj/PVvsk6++cVqkJw+nsTYWpJj/kEpInPgnRpa0M/f/CMW7/5ZDAY6DeJ/JsLBSI8vvxcp/cWCoQ48N0JLOv2PmJuxSu9Fjq+Fya9MYb2G9ELW69R+nZTVoerldBUl8LMYso8wb+PT5tCvgwGA/2lsZSIJXh04Vmr22oK14iL2Wo40dLBzZs38fDhQ72MfefOHRw4cECtbXk8HmbPng2hkB6zDEUcHBzg5eWF9HT9ts/euXMH9+/f18vYDx48wO7du9XalsPhYPbs2Xqp1rGxsYG/v7/eY3nv3j3cvXtXjS0159GjR9ixY4da27JYLMyaNUsvFXkWFhbo0qWL3o0eIiMj9daG/OzZM2zZskWtbZlMJmbOnKmXRK+selOf5+X9U1EoyyergcIm9kZAH/oWAIQCIZ5Ir8fGZkbw7+3d5vayaw+kiy66INNREwpEyE8rwrzP5Amfg9+dwIEDB/D4sW7vIcPS0hK9evVCbkwR1ZLZa2Q3dB3YmaqqMrU0gb27ndbvIRaLEXWRvB63pZ8mo5+KWE56Xb6AfHXPbZX7qUIWS4IgkJtUgPkKsTz0w0kcOXIEkZGRbYzQEsXvi2JCzdTUFH369FHpZJ0pjSXXiEMt/P2bGBJqBgwYMGCAVs5vuUolVyasGKWzk5EiJTmleHIlRum5Tp1dsenRD0oTMBkuPk6UnXbSozRUFJFJrvrqelzbRzp7GpnyEL50uMbHYmlngYkrRwNSEXyZuyUA3Dkqn1AMmNJ+O49y4k/7id3zW3FYEfwB9n1zjGoZdPSwpwwaIo5FUlVbTQ18bFixFd/MXIe6qnoAgIuvEzZGfo8hM9Vvm2msb6L0Mzg8Du0J1Ihj8mSIOrGU6XoAQORZ7WMZdy8Rr/dag92fH4ZQ6hhq52ZDJVEfnH5Ma9UWpPo1F/8mHbNYbBYmvqF+1aQ66BLLBzrEUhXjlo+kWlEijj9USkjTSXl5uVqVOtqQkpKikTB/eno6tmzZgoaGBlqPg8FgYO7cuRg5cqReWxXLysoQFhaml7FTUlLg6uqq9vbZ2dnYsmULampqaD+WWbNmITw8XK+tivo8L1NTUzU6L/Py8rBlyxZUVtL/HZw2bRomTJig11iWlZUhNDRUL4ksTc/LoqIibNmyBaWlLWUgdGXSpEmYOnWq3to+z2yWLzJOe3s8rWNH34hDbSU5zwib2LvNRUZIF6yYLPLv+eDsY51+12SO1QCQHZ+L4GFdESSVA8mKz0VOdi4aG+mpZmexWOjbty8ub79JPTft7fGoraxDaW45AMCrWyedXFPj7iVRWnR9w4PbXGQEgJCxweBwyXg/PPcEBEFgxgcTqfhWl9Ui8ZF6VYCKscyMy0FQvwAED+8KAChIL0ZWRrZO1zfZvQOkibaQkJAWVadNDXzkp5JawB5d3PVSXasphoSaAQMGDBigDUGTABeliSU2h4Xxy0fSNnbK03Ss6vux0sRqxPxB+OPhD3APaH3CK0u0EQSBh+fItr2re+6gqZ5srRz16hCtK6omvxlOTYwu77wJiUQCgiAQcZxMqDFZTAyY2n7ioteo7pQ2ReS5JxpPmKvLavDLks34cMTXyEshNTtYbBbmfDQV2+PXY9SCoYC0Au7WoXvIeJGNVSFrceFvud354Jn9sDnqR40FXm8dvEcl5Ia9MgCWdhYa7d8eslgCwKDp7d/Mdx8SROmvPLrwjHLyUpfayjpsWLEV7w7+gnLnYrKYmPHeROxM2IDxy8hzWigQ4fq+CA0/TdtEHIuk9AEHTQ+FnQu9AumKsRysRtK0cz9/Kun15Mpz2tqRITVbCH9tBCBdlb66W/1VcnXh8/lYtGgRQkJaJtvpYNSoURgxYoTa27u5uZEr+7m5tB8Lm83GqVOncPnyZTW21hw+n4958+bpRaMKUnOFUaPUT8a7uLiAwWCoZQihKSwWC+fOndOLiQSkbWGzZs3CoEFtG71oy5AhQzB2rPq6pc7OzmCz2WoZQmgKk8nE5cuXcfq0avMeXREIBJg6dSqGDRuml/EHDRqEcePUlzBwcHAAl8tVyxBCU5hMJm7cuIHjx4+rsbVmZLzIRuxd0gCgU2dXBA/rSuv4itIcg2e0/xtiYWuOboNIJ9+CtCLkJOZp/d6KSaCsuFwwGAxMWS3/m4qKgIAA+rTi9u7Zh8JKUkfP2dsRfcYGKzm4e3XTTSJC01iamBsjeATp5FuaV47UZxlgs9lUfAFg5yeH1Hpvj2bJSQCY+pY8lg1ZQq0cmGXzaEKinDg9cuQIoqKUu0uy43Op+wBvHWNJF4aEmgEDBgwYoI07RyOpqp1BM8Jg42St85gSiQTHfzuHt/t/iqqSaur5+V/MwEd732rXSKC/QiXO/TNRkEgkOPun/KZTF8MERw97yjWqOLsUT6+9QOqzDBRllgAAgod1gZW9ZbvjGJnwKJ2LqpJqJD1KU+v9CYLAtb13sKTzO0oJiaB+/vjr6U9Y+v1cGJnwMG6Z/Kb/4Pcn8Wbox8hJJCd8PGMu3vt7JT47/C6lPacuBEHgjGIs36DPfALSds8s6aQtqH8A7N1s292Hw+UgVOqmVVdVjxcR6rmEEQSBm4fuYUnnd5QSjf59fLA56kes+HUBjM2MEb5MniS+uP06rRVBZ/UYy8LMYqQ8IduFfHt6wcWn/TYJsh2Z1LSiox25OeFL5eflpR03aK1iIQgC27dvx4MHD2gbU5HExERUVVXB1FT974yZmRmWLl0KL6/2TT60wdHREdHR0bRXAxEEgd27dyMigt4EsoyUlBSUlJTA3Fz99mZjY2MsXboUfn5ttztpi5OTE168eEF7iy5BENi3bx9u3rypU5VKa6SnpyM/Px+Wlu1fd2RwuVwsWbKE1qSCIs7OzoiLi0NTUxPtYx8+fBhXr17VSyyzs7ORlZUFa2v15zFsNhtLlixBly6tC8XrgpOTE5KSklBfX0/ruGc3K1976IynUCCkJDeMzYwQMlY9cxi62j5lXQoAkJVAzicGTO1LySnEXUyBEYseF3oA4NfxwTYmq6YmrhwNFoullFDTRXNVLBbj3knS8IvD4yBsYh+19hug2AUhjeWS716hnou9mwCRqP3FRy/FWErnZqHjesHWhfyOxF9NBYfQQhNSero1n09xudwWvxt0xZJODAk1AwYMGDBAG2c2X6L+PXlVuM7jVRZX4bMJP2DrB3shEsqrtmxdrLHgy1lqjeHf25sSqo++EYeH555SVVw9hnZRWr3UhvDX5AmWS9uvK7V7qrN6KENR50Kdts+cpHysGfUNfl60iUpimlqa4K0/l2H93f8prYL69/ahJh4lOWVUC6N3Dw9sfvITwpeO0GoCHX8/CRkxZFVDYKgfrZoraNaiqEkbquJEPFKNWOanFeKTcd/hh3m/U0lbYzMjrPp9CTZGfgffnvIEiEdnN0rMPzshDwk6CCYrkvwkHYkPSVF57+4eSnb3dKBtLPvR1I6sCmdvR/QaSa6cF2YU43kznTpdyM/PR1lZmd6SVzdv3tSq0szc3BxnzpyBQCCg/ZjCwsIwatQo2lvfiouLUVRUpLdY3r59W6tKMwsLC5w5c0YviZo+ffpgzJgxYLPbbk3TlIqKCuTl5cHT05PWcWXcuXNHq+ooKysrnD17lvZ2ZAAIDg5GeHg4uFz65B8AoLq6GpmZmXo7LyMiIpCZmanxftbW1jh37hzq6upoP6Zu3bph3LhxtBpZ1FbWUYZEJubGGLVgCG1jQ0W7Z3stijL6TZYni3SRb3DxcaJaHrOkYvZcHgejFgwBz5KDoFc9cG73pXZGUY/GukbEHcpE4ZMKcI04GLOErJzMVHCl1EVEv3m7p7rO9IqJN5l8Q1C/ACqpKBZJcOK39ity7d3tqPeUVaix2CyMWTQMHFMWui3ywpldFzT+XFSFWrOE2pQpU1q0xis7fP77hgQwJNQMGDBgwABdJEWlIvkxWQHjE+xJaVRoy5OrMVgR/IFKYflhcwaqnQBiMBjoJ51MCPmkyLyMyTpUp8noN7E3rB3JaoAHZ57g1hFStFvddk8ZYRN6gclkSMeJanW7mvJabH5rJ5Z3fx/Pb8orhobM6ocdCRswceXoFjfUMbfjUZyjrOkyZXU4/oj8Hh6d3dQ+xuYoaq7QEcvmaNruKSMkvCfYHHKF+P6ZqFaryOqq6rHl/T14rcu7Stp8A6b2xY6EDZiyOlylPse415Sr1OhAsTpt8ip6KwSgRbunjF4jdWtHbo9xzRLSdGFvb4/Zs2drpH+kLgRBgMPhoGfPnhrvKxaLkZCQgLQ09apQNYHH48HT0xO3bt2itXLSxsYGs2bN0lsSiM1mq+Xu2RyCIJCYmIjk5GTaj4nL5cLHxwc3b96kNZYWFhaYOXOm3irr2Gw2+vRRr2pFEYIgkJycjMRE9Sp6NYHD4cDf3x83btBbhWpmZoYZM2YgMJDexQcZTCZT61impKQgLo7eil5I/76BgYG4efMmbb/FV3ffRlODVAJjwRC1kzTqommLogxnL0dqITApKg1lBRVavT+LzYK71J0yP7UIAumCYvhrI6jKqAdndNNpk3F9/10weARMHY0wfO4gWNiQCasMBSdrTw1lNRTRNpa2ztYIDCV/czJjcyjDhFEL5cnTs39eaXccBoMBjy7knLEoqxSNdaT23NilwwHpnOXRxWcaf88ZTNUJtcrKShQWFio9p+gK7tXNkFAzYMCAAQP/IRQvxrokBIQCIbZ9uBcfj/2WcvG0drSEv0L1kyYJATRr+0x5Sib97N1slcwAtIXNYWP0QlKjTCwSozSHtPhWt91ThpW9JboMIG8M8lIKkZOUr/S6UCDEyQ0XsMh/NU5vukQ5QTp62OPb8x/js8PvwdZZuTVFLBJj9+eH8eGIr1FfJa88MDLlYekP83QyjCgvrMTdE4+kx26h8d+kPbRp95RhamFCCeWW5pZTDqYyxCIxzmy+jIV+q3Fi/Xmq+tHezRZfn1qDr0582Ob7DZ7ZD6aWpEPmnSMPUF+tW/tNTXktbh0iE7FmVqYYNnegTuM1R5t2TxlGJjyqrVmTdmR16Tc5BJZ25E3H/VNRqC7TXWS+trYW586dg4+Pj15awRobG7Fo0SJ06qT5ZN7a2hrdu3cHh8Oh/bgg/ewRERHIz89XY+v2qa+vx9mzZ+Ht7a23WM6fP1+rKiNzc3P07NmT9sonGXV1dbh37x5teliNjY04e/YsPD099RLLpqYmzJ49W6tknYmJCfr06UNr5ZMiDQ0NePDgAW0ulXw+H6dPn4aHh4dezAj4fD6mT5+ulR4Uj8dD3759W4ip00VTUxMiIyNpSSRLJBKc/Us+d9NFAkMV2rZ7yug3SbFK7Umb27aFrBNBLBIjP6UAkFab+3X1QezeTKTez9a52pwgCJz98zKc+tjAobsVtcgokUioNkUnLwetE5batnvKGKCi2nzBV7Oo36KSnDLkpxa2ur8MjyAFHTWpzqyzlyO69QtC7N5MZD3KV1rsVQfZYjKa5TSfPn2K58/li+oEQSDjBRlLGycrjebY+sSQUDNgwIABAzpTVVqN24fJhIC5tSmGvaJdQiA7IRfvDPwcx9ado54LGRuMdbe/ppIiDp3sENjXV6NxewyVC9XLLtjjl48Ci02PO5BMXF0RTVYPZSi1fZ4mJ6EEQeDB2cdY1u19/PXebqp1wsiEhwVfzcL2+PUIHderxVh5KQV4b8gXOPDdCWrVz8bZCpDqYSmudGrDxW3XqaRe+GsjwOXRmyBQalHUIpbK+ivyir+oS9FY3uN9bFq9g2qV5RpxMO/T6diRsF6tJKuRCQ/D55KC4vxGAW4evKfx8SlyacdNqg13zKKhMDal90ZMMZZ0nZd0QbbekAlpoUCEa3vv6DxmVFSUXirAZOzfv18nPbEpU6bAwoJe8w4Znp6e8PT0pM217smTJ0hJoaetWRWHDh3CzZs31dhSNZMmTYKNjY1e3E3d3d3h4+NDW0tpdHS0XirAZBw7dgxXr17Vev9x48bB3t5eL7F0cnKCv78/bbF88eIF4uPj9eZqe+rUKVy6pH0b4JgxY+Di4qKX47O3t0dQUBD4fN1NYp5ejUFBGumY2HNEN3QKpLeiV9t2TxnKDujaX3s8u8gXP7Li5QYHY5cOh42/OZgchs7V5i8iEpAVlwtBnQjmFuaUVERRZgllgqWL5pdiu2fIWPXbPWUoyjfcl8bSxMwYPsHyyuPtHx1odxxF46qsOLnsgSyWLC5T41i2lhQ3MzNT0tYsL6yk5m1eHUQ/DYaEmgEDBgwYoINL229CKCAFTccuGQ4jE80mTWKRGAe/P4nXe62hKmnYHBZWrluIb89/jPj7yVTyZvCMfhqv7nO4HPQeI18ZZbGZSkL9uuLq64wew+QixAwmQ6N2TxkDpsgnPDcO3EXa80ysGfUNvpzys9LK4aiFQ7Ar+Xe8+sXMFrEWi8U4tu4cVgR/QK24MllMLP1+Lj478h61naLwvqaIhCKc33aNHJvJwISVo7UeqzWU2j1nqN/uKUNxZfvmwbvIiM3Gx+Hf4tPx31OGDAAwfO5A7Er6HYv+NwfGZupPUBXPH5mzrTaIxWKcU6gQmPjGGK3Hag3ldk/NYxk2oTeYLHLKeOvwfdrbPhUT0he339D5JtTIyAhDhw7VSxVYXV0dCgsLdWolra+vx5YtW/SS9GMymVi4cCGsra1puZnn8XgYPHiwXiqXmpqakJubCxcXF63H4PP52LJlC5KSkmg9Nkjbm+bPnw8HBwdaYsnlcjFw4ECYmJjQcnyKCIVCZGZm6nReikQibNmyRS+tigwGA6+88gpcXFxoafvkcDgYMGCARkYW6iKRSJCWlqbTeSmRSLB161ZER0fTemwyZs6cCQ8PD51/i/Uu26Bli6IMv17esHcnq8WfXY9FeWGlVscha1OEgo4aAAQN9YVrmB1MHYxw58gDyrFcG2SxTDmZp+RYrOzwSU+7pyY6qDI6BbrCzd8ZABB3NwlFWaR51vwvZlLbPLrUfrumUizj5Qm1oMFkLM2cjXH/VBSqSqtbGaElDIWEmuL7T548GeHhcj1mJUOCDtLuCUNCzYABAwYM0MGNA/JqjYmva5YQyHiRjdVhH2PXZ4eopJx7gAs2Rn6P6e9OIK3iD96ltte2tbBTgHxybOVgCWtHK63GaY3gofKEmpWDhVal6C4+TgjqTwreZ8Xn4vVea5RK57sN6ozNj3/Eml1vws61ZUtidmIe3h30ObZ9uBeCJrLiydnbEevv/g9zPpqKrgMCqdaHhAfJSpMhTYi+GYcK6cS23+QQOLjbaTVOa6THZGnd7inDztWWErwvSC/Gyp4fKumkdQ7zw+8PvsPH+9+GQyd7jcf3DfZCQAjZhpwWnUm1EmtK/P1kFGeT+nYhY4Ph6uus1TitkZdSoNTuqc34lnYW6DuO1AsrzSvHExW6hrrQKdAV3QaTrVW5SfmIv699cqSurg7+/v4IC9M8cagOJiYmmDlzpk6OiKampnByctJbtRJBENi6dSuePNG+RQrSNj0vLy8MHEhvC7IMHo+HmTNnomvXrjqN4ebmppeEmowdO3YgMlK3it6mpia4urpi6NChtB2XIhwOBzNmzECPHj20HoPNZsPLy0uvsdy7dy/u3dOtopfP58PBwQEjRtC3KKYIk8nE9OnTtdL1UxzDx8dHr7E8cOAAbt++rcaWqqkqraY0au3dbSlHZ7poauBT1eHatHtCmogdOX8wAEAilii5mWuCUlWVwrzHysYKIBgQ1Il0qjavr67HQ2lLaucZnuC4yhPwGUqGBNpVVQkFQkQcJyvNtWn3hCyWr5KaaQRB4PJOsjJ4wOQQGJuRVfHCJiGu72u7StyzlViaW5iDQTDArxFCJBTj2l71q7iZLPkiuUzPDwAuX76MO3fkx5OpZEhgqFAzYMCAAQP/EbLicykdhS4DAuDs7ajWfiKhCPu+OYZVIWuR+ox00mIyGZj14WT89exn+PXyBqRJIllSycXHUeN2Txn5afIKr4rCSpTklmk1Tmsoap7VlNWhoVbzlitBk6CFDhqkuhtfHHsf625/Df/eLZ00xSIxDv94Cq/3WkM5RTIYDEx9axy2xvyKoDB/6jnFaiBt2+sijj6g/j1i3mCtxmiLcwp6fMO1bB8W8IVKSVNCQk5wHTrZ4ZOD7+D3+99RcdEWRUH9a3u0jKXCqrM+YnmWhliihRGD9hV56ox/VctYAsCFCxdw7do1mo5KGbFYjLNnz8LJyUkn3SYGg4E5c+Zg0KBBtB6f4vh+fn4638xfvnwZly9fVmNLzZFIJDh79izs7e111sCaOXMmhgyh15lQEV9fX51jefXqVVy8eJG2Y1KEIAicO3cONjY2Kk1UNGHatGkYPnw4bcfWHDqSTDdv3sTZs2dpOyZFCILAxYsXYWFhobPD6+TJk5UqlehG1/Py/qkoSMRkNdCwOQNpk8CQcevQParia+C0UI3bPWWEL5XPWS7t0M7YwtHTnqrmV0oCmZtj/tQF4FeTC5DX9mqXsHtw9gm1IOzob4PKKnklHR0i+ndPPKIcyMMm9tZah23M4mFUtfmVXbeozo+B0+ROmkd+PtPmGDZOVjC3NgUUnD4hXWxaMvc1NFWQDtaaxFLx3Guqk7eFl5SUoKxMPlfP6ICGBDAk1AwYMGDAgK5oU9Kf9jwTq/p+hL1fHaUE4T2C3LDh/ndY9tN8pYmXYnJl0hvamR3wG/l4dP4Z9ZgggCs7b2k8TmtUFlfhnlSgH9IE15Mr6lfxEASB20fuY0nnd3D3xEOl1xZ+PQs7EjZg0PQwlZ89My4Hb/X/FDs+OUjpcLn6OeO3O1/jjQ2LW+hxjZg3iBKAvX+6dQfM1hAJRbgvFbQ1MuWhb7jmq85tUVtZhxsHyIpEE3NjjFqg2Y0yQRC4e/IRlnV9lxpHxisfT8POxA0YNmcALaLgQ2b3V8tNtDXEYjH19yZXnemtEGisa8SV3eR5zjXiYMySYVqP1Te8J2xdyGTvw/NPtW69aY1B00OpGx5d3ESzs7O1ErhXh8TERMTExNDS8mppaYlHjx4pCS7Tyfjx4zF6tG6t2PqMZWpqKp4/fw6RSKTzWBYWFnj+/LnOFXmtER4ertR2pA05OTl6i2VGRgaePXsGgUCg81hmZmaIj4/Hw4cP1dhac0aPHo0JEyboNIY+z8vc3Fw8fvyYFn0yU1NTpKSk6FyR1xojRozA5MmTtd5fW+dndSAIgrZ2UmdvR6ravDCjGM9vxWs8BpPJRKcgslWxML2YqoKqra3F2Zun4BtC6oglRaWhLL9c4/EVY9klqAv8/eWLdTIRfa4RBy6+6hsCKUJXLO1cbBA6ntTcLcuvoCoUl3w/l9omJzEflSVVrY7BYDCoKrWy/ArUVtYB0ormYxeOoMtQuZtoQXqRWselOB/jN8p/x7p06aLk4pspjSWTxUQnHRzq6caQUDNgwIABAzqhNClrR+tKKBBi9xeH8Wbfj5ERQ640MVlMvPLxVPz59Gd0DlV2J6uvacDVPeQql5EJD6MXadcu8+RKDBrrlMWQL+28QZsW1MXtN6jVSRkyF6X2SIpKxTuDPsd3r2ygWv8UsbS3VCn4LxKKcODbE3ijt1x3jslkYOb7E7H1+S/oOlC1O5mlnQW6DCQnKPmpLd1E2yP6ZhxqK8gJVNjEPlqvOrfG1d23qcnuqAVDNFqJTX2WgQ+Gf4VvZvyKgvTiFq9b2pnTerymFiboOYKc6JfmliMtOlOj/ePvJyuJDJta0KutdH3/XTTUkJWSw+cOgoWN9npDLDYLYxeTlSsSsQRXdtGXkAYAnjEPvRXcRGWVlpqycOFChIaGqrGl5rBYLPTu3Rv29pq3CKuCz+fj1q1behEuNzU1RXx8PFJTtYsjAMydOxcDBgyg9bhkMBgMBAcHw9mZnhZnPp+P27dv06LP1RxjY2OkpKTo1KI7a9YsDB5MfwUqpLHs1q0b3N3d1di6fQQCAe7cuUNLsrM5RkZGyMzMRGxsrNZjzJgxQ29VdARBICgoiLaEnVAoxN27d2lJdjaHy+UiLy9Pq6R8VWk1lZhy8nKAf29vWo8t/kEyZSQV2NcXASHadRbIUKxgvqSleYBMc4sgCCRHkfqVtbW1qKmpQc+x8rZzTd1E66vr8VQqJ2HjbI0h4YPg4UG2IzY18CnTB8+unbSqIE19loGEB8nSMdzRfXCQxmMoolxtTsbSzsUGrn7y3+Jdnx5ucwzF6jDZtbq+vh41NTXoPkouf6LuPFgoEFL/tnaUy6X4+flR30WRUIScRLIbplOgK+1GWLpgSKgZMGDAgAGtyU5QbvdUpeslI/lJOt7osxYHvj1BlZl7deuEPx5+jyXfzVV5cby+L4JKhI2YNwjm1mZaHeedY/IWRf8+5MSxNLccT6++0Go8RcQiMS5slbeYybQoHl14BpGw9RuSvJQCfD9vA1aHfUJNlgCg9+ge+Pyo3DxA1eQxPSYLq8M+we4vDlMVfu6Brlh/71ss/2VBu0kjRQfMSDUnPDIU2z21ERluC4lEgrN/yldiJ6m5EluYUYyfF23CqpCP8OJOAvV88LAu+PLEB9Tji9uv0568UHLA1DSWOgo2twVBEDhLs+D02KXDqZVkbVtv2kKX8xIAbt26hby8PJ1bCFUhEAhgbm6uc3WNIgMGDICnp6caW2pHUVER7t+/r9W+ERERyMrK0rmFUBVCoRDGxsY6Vdc0p1+/fvD29qal8lQVxcXFWlcaPXjwAKmpqTq3EKpCJBKBzWZj2rRptH32vn37wtfXV2+xLCkp0TqWUVFRiI+P14vhiGyBbebMmbR99j59+sDf319vsSwtLUVERITG1zXFdk9tjJ7aQ5vreFv0nxICK3vSGfn+qShUl9VoPEZ3BZ3b6JtkQtfW1hbdu3fHwPHyxeAHZzW79ii2ew6eHoYzZ85QLtDZ8bnU30ZbEX3l63i4zn+rkLHBsHO1AaTz1LKCCgDAzA8mUtsozplV0UMhls+lsbSyskKPHj0waLx8LqNuLEUKC9JGJvKuinPnzlEu0LnJBdR816t7x2n3hCGhZsCAAQMGdCHimLwtpLWEQGNdI/5esw9v9fuEsthmsVmY//kMbH78o0pNMMgSAjRMyviNfDw89xQAYGZlilkfTqFe09UmHdLJVGke2SIQNrE3QqXCvnVV9Yi927KioSC9CD8v3oSlQe/g1iH5za57oCu+Pf8xfrj0KQbP6Af/PmRcUp9lIvVZBiBd7dz12SGsCvmIqoZiMhmYs3YKtjz7WW1NMCUreg0mj/pu93xyJYaqLOs1shs6BbbtWFeUVYLflm3BooC3cG3vHWri6uLrhK9PrcHP17/EwKmh6DaIrNbLScxHvELykg4U3UQ1iaVYLMbdk2SbsD7aPV/cSaC0YroMCIBvT90rLpw8HdBrVHcAQFFmiZJhBh2Eju8lb0c+81ijm0ShUIjIyEg0NDTQekwyrl27hjNn2taW0RRbW1uMGjUKGRkZtI4ro2/fvlq5IIrFYjx48EBvsbx16xZOnjxJ65hWVlYYO3asXpxTIY2lpaXmRjMSiQQPHjxAfb327oFtERERgaNHj9I6poWFBcaNG4f0dO2MVtqjT58+WsWSIAjcv38fdXV1ejmuBw8e4NChQ7SOaWZmhgkTJiAjI0Mvlai9e/eGtXVL3dX20Ge7Z3lhJTU3tLQz18qRsjkcLoeSfxAKRFrpv/YcLq9Ce36LvHbxeDyEhoYisI8f5Sb6/GYc6mvU/+1rHkuRSEQlZxXnG949NF88qSmvxc1DZPLZ1NIEI+bpbhDDYrMwZjEp/6BYbR6+dATYXDLp31DTiKjLz1odQymhJo0lh8NBaGgofLp6Um6i8feS1Ep+ikVkcpfBVE4WikQiauFOceHZu7v+FqK0wZBQM2DAgAEDWqO4itW83ZMgCNw5+gBLOr+Do7+epVZDfYI9sSnqByz8ejY43NZXmZ/fikNOItmO2G1wZ63dkRTbPQdM6YsBU0Jg40SK1T889xQVRbppQZ3dfIn69+RV4RigmKw6LU+wFGWVYN1rf2Fx4Nu4tucOJFKRfAtbc6zauATbYn5F6Lhe1OrjOAXzgIt/X8e9U4+wNOgdHPz+JFXh59nVHRsf/oClP8wD14ir9jG7+DjBsyvZHpT4MFVtPSx9t3sqJlAnr2pds6gktwy/v74NiwPeIiulpOeWubUpVq5biO1xv6H/5BAqlopGDHQkURWxc7GhjDIyYrJRmNmy1VQV8feTKadUfbR7nlEzlpoyTo+xtLSzQFdp8lPTdmQGgwFvb2+dXA7bIi0tDV26dFFjS83IysrCgQMHUF1dTfvYvr6+GD16NBobNTNIYTAY8PLyQs+ePWk/Jkj104KCdGtbUkVubi4OHjyIiooK2sf29PTEuHHjNE4yMhgMdOrUSSfHyLbQ13lZUFCAQ4cOoaSkhPax3d3dMXnyZK2SjO7u7ggJCVFjS83R13lZXFyMw4cPo7CwUI2tNcPFxQXTp0/XKJb6bve8+Pd1ao4S/tpIjeYmbaF8Hb+hcYLSztUW7lK396RHaWisawSfz8fff/+NzMxMqkJaJBTj8aVotcZs3u7ZZUAAwsPDqVb56Bvy1ubgYZp/T6/sukU5to9ZNAzGZtqZETQnfOkIan50eedNSCQSMJlM9Bktv35ufW9vq/tb2lnAJ5hMaqVFZ6GmohYikQh///03UlJS0H9yXwCARELg4fmn7R6PbA7X3Bhj9OjRlHnPMx1jqU8MCTUDBgwYMKAVbbV7ZifmYc2ob/DtnPUoyydvbjg8DhZ+PRubHv0A3+D2q2XObKYnIaCU9JvZD2wOG6MXkatzYpFYaxt2SGMgm5i6+Tuj18huCAnvSQnVPzj7GMU5pVTy5/LOm0rJnyXfzcW+jM2Y8mY42BzldqBhrwyEkSmZsLq4/Qa+nv4rSnJItyM2h4V5n03H5sc/IaCP6gq/9hggnfAAwMNz6mmG6LPdsyC9CFEXyUmsQyc7hE7o1WKbsoIKbFq9A4v8VuP81mtU+b+ppQkWfDUL+zI2Y/q7E1okagfPCIOZlan0M0RSzmN0odj2qa7+ij7bPUvzynH/VBQgdeQaOK1vu/uoS79JfZRab6pK6U0Eadv2WVZWhkmTJsHCwoLW45GxYMECvWhg+fn5gcfjITc3V42tNefy5csaOyKWlZVhwoQJsLKyUmNrzZk3b55eNLC8vb1hamqK7OxsNbbWnOvXr2tcWVdWVobw8HDY2rYuh6ALs2fP1tl8QhWenp6wsLDQWyxv3bqlcWVdeXk5Ro8eDQcHB70c0/Tp0zFu3Djax3Vzc4O1tTWysrJoHxsA7t69q1FlnT7bPUVCES5sIyUwmEwGJq6kz+XUPcAV3QaTCy65SfmIv6+5w2nwMLJKTSwSI/ZuEthsNhgMBhoaGtB/ivw6qW61efN2TyaTiezsbDAYDIiEIkqCwsrBkhLyVxexWIyzf8lNuSa+MUaj/dvC0cMevUfLq81lib83fl9MbZOTlI/ERymtjiGLJUEQiLmdABaLBSaTicbGRqUuiMh2YilQ0E+TzZ2pY8ghTQgkEglVEW9qaQI/mpPAumJIqBkwYMCAAa1Q1e7ZUNuIbR/uxYoeHyi1g/Ud1xN/x67D/M9ntEgcqaIkp5S6mbZ1scaAKdqtSDdv9+w5gpwAhC+V38yd23K1Ta2ztjizWdmBlMlkwtTCBMHS1oKSnDIs8m2Z/Fn49Wzsy9iMVz6e2qroPoPJoByhZJNfAOg1qju2vViHRd/M0UmUtZ/ChOe+GokLfbd7nvvrKrXiPHHlaCXtpoqiSvz17m4s9H0TZzZfpiawJubGmPfZdOzL2IxXv5gJU0tTlWPzjHkYMY9c5eQ3CnBpx01aj13x/FRHR03f7Z4Xtl6jzplxy0a2WQmqKRwuB6MXkuYgIqEYF7bSW6XWX8PzEtK2kN27dyM+XnP3t/YgCAL79u3TmzYbj8fDW2+9pZfKGEhv5jVpNxOLxdi9ezdiYmL0cjyHDh1CRkaGXrTZOBwOVq1ahe7du9M+NqSxzMrKUls7UHbuPHvWeuuULhw7dgzJycl6iSWLxcLKlSvRq1fLhQ06cHNzQ05OjtrGBwRB4ODBg3j8WHNtRXU4deoU4uPj9aJzx2QysXz5cr2Zpbi5uaGgoABNTU1qbK3fds/7px+jvICsvO43OQQOnegxcJGhKKh/6o9LbW6rimDFts+bsWCxWHj11Vfh7++P7oM7Uwtvjy48UxLKb43msRQKhbh27Rqys7OR/DgdDbVkdXDPEV01Tlw+vvQcRZlkhWifMT3g5kePgYsMxVielsbS2csRQf3l0iHrl29tdf+ezWLJYDAwf/58dO7cGYGhvpS5wJMrMZTRlCqqiuSOohyFOa1EIsGVK1eQmZmJjJhs1JTXAtLqNH385umCIaFmwIABAwa04t6pR9S/B00Pw63D97Gk89s4tu4cVe7v5GmPr0+vwbfnPoarr/qTgTObr1AtkeOXj1IrCaeKZ9djldo9ZYkFFx8nhIST7UwlOWW4vv+uxmPXVtbh+j5Sx8PIlIfRC0l9j4qiSogEcvdQkTQWismf+Z/PaDX5QxAE7p4k2ztlTqiQuqF+eugd/Hj5M7gHtK0tpg7+vb0pYdrnN2KpiV9rvLiToLd2z4baRlzZRSa5ODwOxkoTnlWl1dj24V4s8HkTJ3+/QLU+GJnyMGftFOzL2IxF38xRy6xi4uvyKo7j685C0ESf61qnzm5U8jP2biI18WuNpEdpemv35DfyceFvMsnFYrMwfgV9FQIyxq8YRWmdnfz9AhrrNGspbAtnb0fKQSzpkXrtyMXFxeDz+bQ58ymSl5eHjIwMmJqq/r7SgbGxMX7//XckJCSosbVmhISEYM6cOWrfzJWXl6OxsVEvsSwqKkJKSoreY/nnn3/ixQvdDWea07NnT8ydO1ftxGplZSVqa2vh7U1/NUVZWRkSEhL0Hstt27bpJSHYvXt3zJ8/X+0EVl1dHSorK/VyXlZVVeHFixcwMaG37V4RIyMj7Nq1C1FRUbSPHRQUhPnz54PHa/+aXFtZp7d2T4IgcGrjBerxpDd0NyNozqDpobByIBM1d48/1NilXJX2V1VVFUpLS8HmsBE6nkwgN9Q0KhkcqaKxvqlFuydBEOBwOLC1tcWz6/LfoF4jNE/yK8aSTtkGGf0m9YG9G1k5+/D8U6Q9J3V5P9jxBrVNZmwO9Xxzug0OApNF/hbKYllTU4OSkhKwWCyETSD1ZfmNAqVYNEfWxQIAPGN5e7AslnZ2dkr799QilvrGkFAzYMCAAQMaU11Wg4wXZLLHo4s7fl74B76fu4FameTwOJj/+Qxsj1+P/pNCNFqZqyqtprS0OFw2xi0b2e4+rRFzS14lpygeDwDzPp1O/fvQDycpEVl1Ob7uHJWsGzl/MIQCEZX8ea7wvgwmA3M+mqpW8icvpQAfh3+Hb2b8itJc0uhAFjqJWIKmej5t7RkMBoNqVRQKRHh8+Xmb2yt+pn4T+7S5raac2ngRtZVkG+bQOf3BZDKx45ODeNV7FY6tOwd+I5n84hlzMfP9idibvhlLf5gHC1v1Bdc9gtwxaDpZIVBRVEVrlRqDwaBaFSViCR5daPsGVJ+xPPfXVVSVkG2YA6f1hZ2LDa3jQ5qQHjaXFEeuKa/F+S3X2t1HE/pr2ELr7OyM119/HXZ2drQeB6Si4kOGDNHLjbwiTk5OWjsftgWbzUZ9fT0iIyPV2Bqws7PDypUr4exMbzUEAJiYmGDw4MHw8/OjfWxFnJ2dcfeu5osk7cFisSAQCNT+O1lbW2PlypVwd3en/ViMjIwwcOBABAYG0j62IvqKJZPJhEQiwZ076onLm5mZYcWKFXpJTnK5XAwcOBBdu3ZVY2vtcXJyotwf6YTBYIDBYODWrVvtbht7N5GqXu43sQ+t7Z7RN2IRf58Uju/U2VWpgokueMY8zHyfdKMkCAKHftCsBVuV9tejR4+oBLyifMP9021XQyY8SKaq5ftN6A0mkwkul4u1a9fC1dWVchKF1GRJE+LuJ+HZdXJ/Z29HhNDcEQAAbA4bs9bInZYPfk/G0j3AlTLFAoB1S/9Sub+JuTGlH5uTmI+yggpERUUhOpqU7ujfip5wcxQXzWQyJ5D+3q5ZswYeHh46xfKfwJBQM2DAgAEDGvMiQu5emZOQR614AkDYhN7YHvcbFn49W6sqpiM/nUFTPVkePm7ZSNg6a+5gJSNGusLIYDAo7Q0ZXfoHUMKmBWlFuHOkbZtwRarLanBq40VAqvnAYDBaJH9kE1VCQmDK6vA2kz+NdY3Y8clBLOv2Hp5elbda9R7dA58cfId6fOjHU1T1Hx0oTnieXG5bhDdGYbVWcZVXV+qq6nF83TlAWoVnZMLDq96rcPjHU9R5wOFxMO3t8dibvgnLf1kAawfNHeIAYO4n8iTqkZ9Pq9XSoS6KsXx8pe1Yvrgj/770oFFct7GuEUd+Og1Izz/FpDHdvPLxNOocP7buLPiNrbd0aIpiO/KTdmIJAGfPntWLI2VJSQkSEhIwdOhQWm88VTFu3DiEhYWpsaXmlJWVISIiQq22zwsXLujFRbG8vBwxMTEYNmyYXlpnFRkzZgwlCk43sliqswBz+fJlvZhNVFZW4smTJxgxYoTeW59GjhxJiYLTTUVFBSIiIiAUtv87fO3aNb2YTVRXV+Phw4cYMWKEXto9FRk+fDiGDh2ql7ErKytx7969dts+X9yWX3tkGlh0QBAEdn9xmHo8//OZevvNnLByNMxtyIXJmwfvoSC9SKP9m2t/2dnZgcMhuxdCxgaDI3W6fHKl7UXGmNuK13FyzNLSUmzduhU1lTVIjCT1x1x8nTRufd2jEMu5n07X2/c8fOlwqjXz3olHyE4gtTw/2CmvUkuLzqQcw5ujeA7F3IqHnZ0duFyyyqzniK5UguzxleetXn8qFVo+jUyN5M9XVuKvv/5CbU0dYqX3HHauNnDzd9HpM+sDQ0LNgAEDBgxohFAgxKnf5aXosoukk5cDvjmzFv87+xFcfJy0Gru8sJKqTuMacfDKJ9O0Ps7ayjqkPydFgL17eMDCpmVCa95nM6h/H/z+pNraOEd/PkNVp0Gqw9Y8+TNplVxAVtHuWxGRUIRzf13BQr/VOPzjKUpnzaGTHb44/gF+uPQphs4eQOl+FKQV4bYGib/26DYokBKBjW/lGCFtbUiOSgMAuAe46JTkbM6J9ecpkwAmk4Fzf12l2k85XDYmrxqLvemb8Pr6RbBx0u19fXt6IWwCqVdWmluOa3vpqxboHOYHIxNy8ihbpVeFUCCkXnfoZAcnT/oEts9suoyqUtKifsjs/vDqpp0zrjp4dHbDIKmzb2VxNS5tp6/iz6+XF6VlE38/uc1EUE1NDWJiYvSSULtw4QKSk1v/W9KJpaUlHB0dceHCBY3d69ojKCgINjY27f6+NTQ04NmzZ1q5L7bHpUuX9NLSqgpzc3O4ubnh3Llzav+mq0vnzp1hZ2fX7t+Iz+fj8ePHqK1tu/1bG65cuYK4uDg1ttQdMzMzeHl54cyZM2rrnalLQEAAHB0d2/0biUQiREVFoaamhtb3h9RoQh/twaowMTGBn58fzpw5o1YSURP8/Pzg5OTU7nmpuMjYdRB91Y1Rl6KR+DAVkLqPD5lFrzabIibmxpj29nhAWhF++MfTGu3fXPtr2rRpGDlyJDV2gLTqqjCjuE3JAcVFxu5DSA3MoqIilJaWIu5+MjWf6zVCs4qq6Jux1CK1q58zRr1KvxmODJ4xDzM/IKvUyIq/UwAAr66dqEo+APh16Z8q9++p8Nme34zFpEmTMHbsWGrsLgPIc6yisBJFWaodg2UV9QCU5C+KiopQXl6OxIcp1EJ1z5Hd9L64pQ2GhJoBAwYMGFALiUSCm4fuYUnndxB7V16hxuGxseDLWdge95vO7WuHvj9J6WRNfH2MTomb2LuJ1OSyxxDVVUA9hnZBUP8AAEB2Qh7ljNgWz268wPH156nHsklT8+RPn9HyEv24e8puVARBIOJ4JF7r+h42rtqOyuJqaoy5n0zDjoQNGDQtlJo4zFdK/J2g7SaRZ8yj3JJykwtadWxMeJBMVcZ1byWW2hB3PwmHfjxFPZbFks1hYcKKUdid+gfe/GMprW2LcxWqtg7TWPHH5rARGEpOxEtyylCSW6Zyu+TH6dTksMfQLrRNDuur63H0lzOANDG54MuZtIzbFnMVEt5HfzkDAZ+em0Qmk0kJI1eV1iA/tbDNbb28vPTSCiYWizFs2DDax23r/Z48eYLExEQ1tlYfBwcHLFiwoN2qKgaDAS8vL/j4aOcc3BZCoRAjRoygfdzWkEgkePbsGWJjY9XYWn1sbW2xcOHCdn+DGQwGPDw84O/v3+Z22iAUCqkEwD8BQRB4/vw57UYVVlZWWLRokVrburu766W9VSAQYNQo+nUm2yImJgZPnz6ldUwLCwssXry4zeuJOouM2kAQhFJF1YKvZuu9CnXK6nCYWJCGTtf23kZJTqna+ypqf0XfjMPjx4+VnJC7DpCfZ605iba2yOjo6IhevXrhxW15sq3XSPU1v8hKvyPU41e/mAkWW79VqBNWjKQ6KG4duof8NPJ6+962FdQ2yVFpKq/DQf38KSOB6JtxiI6OVnJC7iKdX0PFPFhGdbm8ItrUSp5Qc3BwQHBwMOLvyhe1tNGi+ycwJNQMGDBgwEC7PL0Wg1UhH+GHeb9TrkMAYG5jhh0JG/DqlzN1FqkvySnFRamYupEpD7PXTtFpPMXWBtnqYXMYDAbmfyZPsBz47oTKFV6CIPDkagzWjvkf1o76n5LrJofLxvjlLZM/ik5J8Q/kE4mY2/F4q98n+N+s35QmKINmhGFb7G9Y/O0rVKWT4vF3GUBOTHIS83Hv5CPQRZf+8sljwgPVFukxasRSXQiCQPTNWHwy/nu8O+hziIXym3w2h4WxS4ZjV/JGvP3Xcji406+J1TnUD71GkZOywoxi3DxEn26VYixbq1JTiuVg+pwdT26Q69CNmD+YFuOK9vDp4UlpE5bmlePantu0ja0Yy7g2Kv4IgsDs2bNhZGTU6jaaQhAEsrOzsXjxYr1rpyni4uKCvn376mUF/syZM7h0qW1XPLFYjFmzZtEudJ+Tk4NXX30Vvr6+tI7bFg4ODujXr59ebuwvXryIc+fOtbmNUCjErFmzYG5OT9JCRm5uLubMmaN37TRFbGxsMGjQIL3E8sqVKzh16lSb2wgEAsycORNWVla0vndeXh6mT5+OLl3oWyRqD0tLSwwdOlQv7aXXr1/H8ePHW31dcZGRzmvP/dNRSH1GCtf79vTCwKl9aRu7NcysTDHlTVKoXyQU48jPZ9TeV1H7KzcpH2XF5UhPT6de7zKg/eu40iKjQixlmpvRN8hEPoPB0EjW4cmV51RHg0eQG4bO6a/2vtpibGaM6e9OAABIJAQOS6vU/Pv4wrOLXP/x1yUtq9S4RlxqblqcXYrivBKkpaVRr6sTy1oFEydZKy+kFZ1Dhw6lYolmLq0dCUNCzYABAwYMtErqswysHfM/fDTmW6RFt3T6Gbt4GJy9HGl5r4PfnaQEXqe8Ga61TpaMtvTTFOkzJpgSYE1/noWoi3JBeaFAiKt7bmNF8Af4eOy3eHZNuTVk2tvjsT/rT7yzpWXyx8LGHB5BboBU/DbxUQo+Gf89Phj+FZKi5BOOboM7Y2Pk9/ji6Put2qIzGAyl9tTWEn/aIJsMoY3VWFWtDZoiEopw48BdvNFnLdaM/AaPLylrY018fTT2Zf6J97e/TmsbpCqUDSlOaWxI0RpdBra/sq2kn0aTFl1NRS2Or5fr0M3/fEa7+9DFvGYVfyIhPW1hXdWIJQDs378fDx7Q1wYNAOnp6di9ezfKylRXGeqT8PBwmJmZ0a4XZWVlhZycnDa3OXz4MO0C9NnZ2di1axeKi4tpHVcdRo8eDRsbG9r/jpaWlsjOzm5zm+PHj6slEq8J+fn52LlzJ/LzNXM2pIPhw4fDyckJJSWq27a0RZ3z8tSpU7h+/Tqt71tcXIwdO3a0+3fUB4MHD4a7uzuKijTT/moPa2trZGdntzo3UFxkpOvaI5FIsOdLeUXVwq9n/2MtedPeGU9pdF3acVMtR2gZitpfojIoJVVbWwxVRGlhTCGW165dw6mTpymHdt9eXmpXAraoTvtylt41EmVMXjWGklm4ti8Cxdlkxd+7ClVqcfeTUJzd8vvfc7i87bOxQIRu3eSPO4f6UtWArcWytkouMaCoNXzz5k2cPHGSqgT0CHLTi8kSHRgSagYMGDBgoAWFGcX4ft4GvNFnrVISybenF/pPkQuG0zUpK8woxuVd5M2HibkxZn4wSafx6qrqqdYGr+6d2pzQNBdv3//tCdRW1uHwT6fxqvcq/LJ4MzJjW074p70zvl1dL1m5u1gkxlv9PlVKInl2dce35z/Gultfo3No+653fUb3oBJ/GTHZeHienpYRxRXEOBWJi8b6JqQ8Jic0bv7OGk9o6msacGzdOSzweRM/vrpRZWJ2/IpReGvzsn9sstR9cBCVZM1Nyse9E/RU/AWF+VE3E6piKRQIqSpAe3dbOHnRkzg8vu4cGmpI3bkxi4ZprWGoDQEhvugzpgcAoCirFDcP0lPxFxDiI9f3ayWhJhAIUFJSAnt7zQSf2yMhIQHu7u5wcNBvYrc1Hj16hGPHjtGqpda/f/822wTFYjEKCgpod0qNj4+Hs7MzXFz+HSHpx48f48iRI7RqqYWFhWHMmDGtvk4QBPLy8vRyXtrb26NTp060jqsuT58+xaFDh2hbgACAkJAQjBs3rs1t8vLyaD8vExMTYWNjo5dWcXV4/vw5Dh48SKsuXc+ePTFx4sRWE1ovItRbZNSEiGORyIojBesDQ/0QOr4XLeOqg6WdBSauHA0AEPKFOPbr2Xb3kaFY6ZR2Pwtdu3alfm8VF0NTn2Wisb6l0YMslmi2yFhRUYGmKrlBj2KyqT0izz1ByhOyUs67uwflSv5PYGppiimryYo/sUhMmRsF9QtQMgH4ZXHLKjXFWCbfS0ePHj2o31tjM2NKiy0rLhe1lS0Nb+qr5fqnlnbyuXpFRQUEdSJIJOTfRZNY/tMYEmoGDBgwYICisqQam9/eiSWd38atQ/ep55087fHx/rew+fGPKMogV6iYTIZSFYku7P/2OFU+P+2d8W06YqqDOvppioRN7A2vbuRNStKjVMxxXY4dHx9AeYF8xdMn2BNMNnnZNDYzUtKPUkV1WQ1K88pbPG/vbosPd63CluhfEDqul9qruWSVmjzxt/vzw7Tof1k7WMJVWhmX+jQDgiaB0uuJkSmUtpk6sZRRkluGbR/uxdxOK7Htw71KsfDu7kElS7hGHLz6hf71vpqjmETd8+URWhw/TS1N4dWdPI8yX2RT5goyUp5koKmBnGzTpZ9WVVqt5DireI78UyjGct83x1qcQ9rQXN+vuqylIDmXy8Xs2bMRFERf+5JEIsHo0aMxb968f038OCQkBKWlpbS6bZqZmaG+vr7Vai0Wi4VZs2ahe3f6NGokEglGjBiBhQsX/quxrKyspNVt08TEBHw+v9WqOwaDgRkzZqBnz560vadEIsGQIUOwZMkSvetTtUZISAjq6uporZ40MjKikrmtMW3aNPTpo5s+qyIEQaB///547bXX/rEKoOb07t0bjY2NtFb88Xg8MJlM5Oa2dGSsq6pHWrR6i4zqIhaLsffrY9Tjf7I6TcaM9yeCa0RqeJ3fclVtLbUu/QMo7a/nd+Kwfft2JQMa2WKoRCyhKqRkKOqnNV9kHD16NGqT5Ne/XiPVSwKpqvT7p7/nU98eB2MzUjrh8s6blJbaO1uWU9vE3IlvMa8N6OMDE3NSz+75rTjs3LlTyYBGUZMuIbKlrEhjjXyeJHMchdRhmJ8hX1TqqWYs/w0MCTUDBgwYMICy/HL8+c4uvOr1Bk7/cYlKoFjYmuP19YuwI/F3DJ87CHWV9ch4IStl94appe5aO9mJebi+9w4g1cWQaTnoQoyGrQ2pzzIpgVsAlDECg8HAgKl9seHet/Du4QGJiFx1m/b2eFjaWagcq6KoEts+3Iv5Xm/g8WW57TqLzcLyn1/F7uSNGL1wqFYT+X4T+8CvF6nplPEim9Kc0xVZ26dQIKJWSGW01trQGmnRmfjx1Y1Y4PMmjilUTkGauFx3+2sE9fOnzrFJb4yl1TVUXXqN7E597tzkApzZdJmWcWXaXxIJgcSHypNHpfOSJnOHwz+cohxmw18bCUcPeqti1KHrwM7UjUNRZgmOrWtbX0pdlDTpVLjQJiQkQCwW03bjQRAE9u7di4cPH4LH000TUhc8PDywZs0a2m+oHj9+jIcPH6p8LTk5GQKBgLYEA0EQOHjwIO7evfuvxtLV1RVr1qwBl8ulteLv6dOniIyMVPlaWloaGhoaaNXJOnbsGG7cuEGrVqCmODo64sMPP4SJiQmtsYyOjsb9+/dVvpaZmYnq6mpwuVza3u/kyZO4cuUKjI2N1dhaP9jZ2eHDDz+EpaUlrbGMiYnBvXstq4Q1XWRUh+v7IpCbRLYfdx0YiN6j/nnBeBsna6pKjd8owLY1+9TaT1H7qyijFDwuD1VVVdTrbWl/tbbIKBQKER8fjxc3yWQSh8dRe9E54lgk1Sbq38eH0ib9J7GwMcfUt8hqUaFAhC3v7wGkc2hnH6m0CwGse+0vpf1YbBZVpVdZVA0jnlEbsWxZbd6kUAEo6/gQi8WIi4tD7G3SoIfJYqKHjvq9+sSQUDNgwICB/8cUZhZjw8ptWODzJk5tvEi5DxqZ8DDv0+nYm/YHpr09HlzpSp5igoAOUVuCILBp9Q6qpHvG+xMpHQddSIiUT4C6DVLd2iAUCHHnWCTeH/Yl3uz7UYtJU0BfX+xM+h1fnfgQAHBtD5n0M7U0wfT3Wib9SnJKsWn1Dsz3WoVj685RSQ4ZPGMupr07Hlwj7W8MGAwG3vh9CfV41+eHUaMg6KotiiuIzZ2YFGPZmn6aSCjCvVOPsGbUN3i99xrcOHCXqp7j8DgYv2wkdiRswP/OfAQjU14z84nJOh+/NjAYDLyxQe6Ktu/rY6goUl+DpTUUJ9DaxFITMuNycFqaCOTwOJj7yVSdx9SWlb8torRSDv9wqlWXU01Q0lFT4RB2584dJTFpXUlLS0N2djY8PT1pG1NbuFwuNmzY0GoCTBt8fX3R2Nio8rW7d+8qiUnrSnZ2NtLT0ztMLDdv3txq0kYb/Pz8Wo3lvXv3kJKi2uBFG/Lz85GUlNRhYrl161bcvk2fAUlb5+WDBw+UKod0pbi4GHFxcR0mljt37qRVH661WCY8oPfaU1dVj+0fHaAeL/pmzr9WhTr/i5lUq+Cdo5FKC1dtoaij5m0ZqKT9pXQdv6/suhzfSizz8vIQGRmJygoymdSlv79aZl0NtY3Y+sFe6vG/UeknY85HU2DrQia1Hp57iiipTMlbm16jtnl27QUqS6qU9lOMpSvHC8HBcpd7RZ1eVVIYsvsOALB1Jav9CgsL8eDBA5QWk/OIgBAfWhbw9YUhoWbAgAED/w/JTc7Hz4s3YZH/W7iw7RplBsAz5mLqW+OwK2UjFv1vTosLWGacvJVAVimlC7cO38fzm3GAtK2Ujuo0giCQHZ9Hjdm8fTQvtRB/r92Pue4r8e3s3/BCQXDf3MYMDCY5kcmOywXXiAOxSIyNb/xNbbPomzkwt5Y7ERWkF+G3ZVuw0G81zmy+DCGfrG7j8DiY9MYY9A0n234aahup49KFrgMCMWLeIABAbUWdkoittiitIDarBJLpo1g7WrbQOCvMKMaOTw5insfr+Hr6r0puTBa25pj/+QwcyP4L72xdgU6BrhCLyVjKEqjzP58JK3vdzCd0wb+3D8KXDgekf5+dnxzSecyuiiYPrcTSxMIYzt66mXkQBIE/Vm2nEpevfDQVdq62Oo2pC15dO2HSG6SuVFMDH3+v3a/zmEH9FSbiKirUAKBzZ3q0gCB12Zw9e3aHuNkGgODgYFoNF0aMGIEZM1QbVhAEQWssHRwcMGvWrH/U2bMtevToQWtCbciQIZgzZ06rr9PZhmxra4sZM2b8o86ebUH3eTlgwADMnz9f5Wt0n5dWVlaYPn06unbtGG6BwcHBePjwIW26dH379sWiRYtaPJ8Vrzh30103btdnh1BVQrZRD5wWSpuerjaYWZliyffzqMeb396plhxGzxHyBFrK0zSlNkVnb0eq/TAhMkXp76MYS1+FWBIEAQ6TC36VQDq+ehV7+785hrJ8so06JLwnQsYGt7uPvjA2M8byn1+lHv/17i4IBUL0GRNMVb8TBIHfXtuitJ+SjtqTNMTHy5Oadi42lF5sclRaC3kNWUcIANi7kXNMiUQCDouDxnJyYbqXmrH8tzAk1AwYMGDg/xGZsdn47pX1WBr0Lq7tuQOJWCYcaoQ5a6dgX+afeGPD4lbF4bMT5BMJDwU7bW2or67HVmlJOQCs2rgURia6twaV5pZR2lWyYxTwhbh95D4+HPk1Fge8haO/nEFVqVyTyT3QFe9uW4nDeVsx+Y2xgEJS4Mymy/I2155emPg62V6QnZCLHxdsxOKAt3Bpxw2qBcDIhIcZ703EvozNWL3pNfQaKZ8IqNKP0IbXfpxHuVtd2HoV6TFZOo3nHuBCJR4VqxArS6qpOMliKRQIEXE8EmvH/A8LfN/E4R9PoaJIvlrp4uuEt/5chgPZf2Hh17OV3Fovbb+J5MdkRZFHkBumvdO2GPU/weLvXoGppQkA4MruW0iKStVpPIdO9rB3IxNbSY9SKXHehtpGyjnLs4u7zivQ1/dFIPYuuXLu4uP4r1X6KbLgq1lUpcDtw/eVhJu1QUnf70l6CwfRFStWwM+vfUMPdbh9+zYiIyM7TNICAMaMGYM5c+bQ1hJGEAR+++035OW1TOwvXbqUtsTFvXv3EBERQWsiRFdGjhyJ+fPn09pet2HDBmRltfztXbBggVK1iy48fPgQ169fR5cu9Ggu0sGQIUOwcOFC2mLJYDCwadMmlRWSc+fORa9e9AjdP3nyBJcvX0bXrl07TCwHDBiAxYsX09bezWAwsHXrViQmKldVyZJAxmZGcOikm8FDytN0nPvrKiCtMn99fcsE3j/NmMVDKc3NzNgcnN96rd19FLW/CosLEBERQb3GYDCohcaGmkbkJsk1/rKlseRw2XD1lRsAeXt7QxzPBSH1P1FHPy0zLgcnNlwgx+Nx8ObGJf/6uTnslYFUVVleSiFOb7wEAFi1cTG1zaOLz1BTIe+O8OrWibr2F5YU4NatW0q/D7LxBE1CZLxQNvmSLUIDgJkVuVjdqVMnsNLNIRFJDQk6sH4aDAk1AwYMGPj/QfLjNHw59Wcs7/EBbh95QF3ozK1NseDLWdif9SeW/jBPKfmhClmFDZPJgHuAbq5te748SiVi+k8OQdiE3jqNJ0Oxis7G2ZoUxndfge9e2UBVw0Eq4D50dn/8fP0LbI/7DeNeGwGuERcLvp5FJZduH76PnZ8eBKQTrLf+XIbMuBx8M2sdlnV7Hzf236WqrUwsjDH3k2nYn/UnVvy6gNIF8+0pr+TLSdS9Qg0A7FxtKSF4iYTA5rd36nRzw2AwKCem6rJaVJWSK8/ZCiuxdq422P7Rfszt9Dr+N+s3JfdXFpuFQTPC8OOVz7Ar6XdMXDm6RXK0qrQaOz+Rt4is3vwaOFyO1sdMF1b2llj49Wzq8ea3dursCOjTk4xlY10TyqQCvtkJ8r+9R5Buyejayjps+1DeIvLmH0t1aiWmC3NrMyz5bi71ePNb6lUKtIWvNJZCgQiFGXIR+MTERGzcuFGnsWWUl5cjIiICZmZmamz9z8Fms2FpaYl169apTIJpCpPJhEAgQHZ2ttLzaWlpWLduHS0Jkurqaty6dQumph2rPYfFYsHOzg7r1q1r8fm1gcFgQCwWt0ioZWVl4ZdffqHFVbSurg7Xr1/vkLF0cnLCb7/9RlvLtUQiaRHLvLw8/PTTTxAKdTeMaWxs/Nd101TBZDLh6uqK3377jbbW1uaxbKxrRFEmaX7gEeSmU8JGVmUu+6149YuZcHCn14FVG1gsFlYpyGHs+eKwSiMbpX3YLMrttCSpApBA6TfQN1g+d5Ndv4UCIfJSSLF+twAXsNhyzcmzZ8+isJbcztTShErwtYasyly2sP3Kx1P/UYfu1mAwGHhz41K5HMY3x1BeWIl+E0NgJ23JJCQE1i/bSu3DZDLRQ9r2WZ5aDSaYrcYyJ0H5WiabIyiel5cuXUJ+DZl44xlz0TnMX0+flh4MCTUDBgwY+I8ikUgQdSkaH439Fm+GfowHZx5Tr1k5WGLpD/OwL/NPvPrlTLUcn8RiMZUQcvVz1ukGPu15Js5sIle9eMZcvLFhcbv7qEuGQrXWpe03cGzdOVSXyVfSXP2csfznV3Eobys+PfQueg7vprQ6TCYFXqEey/Qd+owNxv7/HcPrvdbg7vGHcot1W3Ms+t8cHMj6C4u/faWFWUGnzq7Uv3OkAr50MO3dCXCRCsXGRiTizlHdWnA6BSocZyJ5nBkv5LG8vi8CR34+Q7V5QNoWsfSHeTiUuwVfHH0fvUf1aHWlffvaA6itrAcAjJg/iDZhZDqY+PpoeEor8JKi0nBNapKhLZ0C3ah/Z0tjqZic9OyqW0Jt12eHqcrBQdNDETKWPjdBXRmzZBitxhmKsZSdlwCQk5NDm4A+j8fDkCFD0LdvX1rGoxNjY2NYWFjg1q1bOo/FYDAwfPhweHh4KD0viyUdlREcDgeDBg1Cv379dB6LbrhcLmxsbHDjxg1axhs6dCi8vJSlD3JycsBgMGiJJZvNxsCBAzFw4ECdx6IbFosFe3t72mI5ZMgQeHsrJyByc3NBEAQt5g4sFgsDBgzAkCFDdB6LbhgMBpydnWnTUhs4cKBS5a7i76anjp0FLavMx+s0Hp106R+Aka8OBgDUVtZj9+eH292n53Cy8qkqox5eXOXqZKW5m3Tum5dSSCWAml/HU5NTqeRv8LAu7V6fWlSZr/n3q8xl+Pb0wrhlIwHpwuAO6WLoynULqW3un4lCXZXciVqmo1aT0wB3+Cn9BnbqrHgdb5ZQkyYUZRqsAJCSlAJ+E9nu2W1wZ0rHuaNiSKgZMGDAwH+M+poGnP7jEpZ0fgefjv8eT6/GUK/ZudrgjQ2LsS9jM+asnQJTCxO1xy3KLKG0DnRp95RIJOSqnLSya95nM2hxJsxOzMOW93Yr2bjL4HDZGPbKAPx68yvsSvodMz+Y1KZ219ilw+GiUMrPYDDw+FI0oi5GU89ZO1pi+S8LsD9zM+Z9Or1VMwUrB0vqNboq1ACAy+Pg9fXyROS2D/ehUcEtSVPcFRJqMbfj8feafdjx8cEW27E5LAyZ1Q8/XfsCu1M2Ys7aKbB2tGpz7Lh7ibiym0wImFqaKGl0dATYHDZeV0jq7vj4AOqr67UeTzGWudKbGUXdFV1uapKfpOP8Fnm7zcrf/v12G0VYLBatxhnuKhK9ABAYGIjhw4frcKQkKSkpePLkCYYMGUK7qyYdMJlMzJw5EyEhIbSMp0o7ys/PDyNHjtR57PT0dERGRmLo0KG0OlzSBYPBwLRp0xAWFkbLeF26dGlxzvj6+mL06NE6J9SysrIQERGBoUOHgsPpeDeTDAYDU6ZMQf/+/WkZr3Pnzi0SEF5eXhgzZozOsczJycGNGzcwdOjQf9Vxti0mTZqEwYMH0zJWYGCg0vdP8dqjy9ytsqRllTmb07G+50t/mAdjM9IJ98K260iLzmxze0Xtrxf5TxETI58vK117kloujDWvNDcWmqM0llxwbE8/raNWmSuy+Ns51Nz12p47SHiYgiGz+sPGiZzvERICv78u1xdW1KRLLHmBp0+fUo/dA+UdLYoLyxKJBJAWsrE58u+/scgcJTFkB0tH10+DIaFmwIABA/8d8lILsfntnZjrvhKb396J/NRC6jUnLwe8s2U59qRtwtS3xmmlVaYoqO8R5Nbmtm1xZdctSkvMPdAVM97X3oigqYGP6/sj8N6QL/Bal3dxYsMFiARynSVXPyes+HUBDuVtxScH3kGPoerp0OSnFKKyWK4Lpli67tDJDm/+sRT7MjZj5vsTYWzWdgsJg8GgVjpLc8vRWKfazUwbQsf3QojU9KA0rxwHvzup9VjO3g7Uv/d+dRRHfz2rJBbr5OWAZT/Nx8Hcrfjs8HvoNaKbWgkIsUiMjau2U48Xf/sKZY3ekeg1ohsGTQ8FAFQWV2PvVy0Ts+qiqiqRDv3B5u02C76c1SHabZrTdUAgRsyXG2fs/FR7swflWMp/gwQCQYuKFk3h8/k4ffo0qqur1dj638Pa2hr29vbYu3dvq26I6hIXF4f9+/cr/abx+XydzQOEQiFOnz6NqqoqNbb+97CysoKLiwv27t2Luro6NfZoncTEROzdu1epvbOpqUnnWIrFYpw+fRoVFRU6jaNvLCws4OHhgT179qCmpu32uvZISUnB3r17IRLJr9+NjY06ayRKJBKcOXMG5eXlOo2jb8zMzODj44M9e/agslI3t+mMjAzs2bMHTU3kAls2TQm17R/tp6rMR746uENVmcuwc7HBvM9I4xWCILDprR1ttl97detEuVrWVtQjKVHeduvq50RVTeUmtb0wxufzkR9TjPpiMuaKySVV7Pr0kLzKfEZYh6oyl2FpZ4GF38jlMDat3gGxSIxlP8sNRCKOP0SDdE7r6utEmS3VlNUhMUHu6OnoYQ+eMZkwzFVIqCm25XKkVWgCgQAFscWoKyDHbS+WHQFDQs2AAQMGXmIIgsCTqzH4bOIPWBL4Nk7/cYkS5If0QvT16TXYnbIR45eP0qlsOjNOLiSqbYVNTXmtktX66k1LNdbREgqEeHj+KX58dSNmOb2Gnxb8QZXNK2LrYoNdSRsx472JLdowVUEQBKJvxuKLKT9haZd30VirXO1lYWuOz4++h71pmzB51Vi17NBlKLVTKojb6gqDwcDrvy2kVvaO/nJGI1F9kVCEqEvR+HnRJnw7a32r21nYmmNP6h+Y9eHkdnX2mnP6j0vIjCXPHb9eXpiwcpRG+/+TLP9lAbhG5Pl4auNFleeVOij/vckkkEx/0NzalFrh1ZSLf99AyhOy3cazizumvv3vmzq0xms/zpcbZ2y7hqfXYtrdRxVu/s5UElxWodbU1ISDBw8iM7Pt6oP2EIvF8PHxwYgRI3Qa55/AyMgI+fn5uHv3rk7j2Nrags/nQyAgW9lFIhEOHjyoUhBeEyQSCTw9PTFqVMf9fsvg8XgoKirCnTu6tXbb2NhAJBJRSU6JRIKDBw/qrIUlkUjg7u6OMWPG6DTOPwGXy0VpaanOLcm2traQSCRUkpMgCBw+fLiFuL6mEAQBFxcXhIeH6zTOPwGHw0FFRQVu3ryp0zg2NqTOlSyWdFRHx91LxNXdt4EOWmWuyNS3x1FmNvH3k3Hq94utbstkMjFwKrmQlnO7BMxa+XyUw+VQshp5yQWkNl0rycl79+6DcCVbFO1cbdrUGE5+kk6ZJhiZ8vB6B6syV2TiytFUa2vq0wwc+fkMRs4fAkt7ck4tEUuwfhnp+MlgMDBoOln9m3e3FMwaeSyZTCbcpDHJTyuinD7TY+R6liYW5OL0o0ePIHImf1MtbM3h3UNZoqAjYkioGTBgwMBLSGNdI87+eQVLu7yLj8d+i0cXnlEVBzxjLsYvG4ltL9bh52tfoP+kEK21hnKT87Fu6Z/4dcmfuHnoHvU8v1GAyhLNqzq2fLCHav8a9soASr+iPcRiMaJvxuK3ZVsw23kZPp/0I24cuIvGOnnSy8TCGP59fKjH9u62SH2W0a44dFMDHxe2XcPy7u9jzchvEHn2idLrbC7Z0lBTXoumer6SCK26tKUfoSvuAa545eNpgHRy89OCP9DUwG91e4lEgpg78diwchtmuyzHp+O/x7W9d5TaRRkMBgJCmscyU8k6Xh0KM4ux58sj1JirNy+jTfdKHzh5OmDBV+SKLEEQ+HnhH6ivadB4HDMredIs6VEqflu+BWX5ZLWJjbM1kh+naSzWX5pXjp2fyFtwO2K7jSJ2LjZY+v086vGvS/5EbaXmFUE8Yx6cvMjqydykfBAEgfp6skrC3l77VvHS0lLExsZi+vTpHc6MQBWmpqaYNm0aHB0ddRrHx8cHy5Yto1rf6uvrQRAE7Oy0r3QsLy/Hs2fPMH36dFhYtL948W9jbGyMadOmwdnZWadxPDw8sGzZMso0oLGxEWKxWKfzsrKyElFRUZg+fTqsrTteJW9zeDwepk2bBhcX3UyKXF1dsWzZMlhakgs2AoEAAoFAp/OyuroaDx48wLRp02Bra6vT8f0TcDgcTJs2Da6urmps3TqOjo4Y2G0o/n73ADas2Ir4B2SCl2fCRXFWicbSEIImgVJr3+JvX2lX5uHfhMvj4J0ty6nHOz45qJQIa44sCVSVUYfEqBSleY5s7sZvFODH+Rvx4g7pXM3msFBRWEktYKcnZihVVLXWCSEUCLFhxValKnOZK3hHhMVm4d2tK8Bkkp9n71dHkfosA0t/kF/b7xyNREkO6WAuq/Kvzq5H4qNUpYpTWQutRCxBQVoRACDjuVyn11o6Z0pLyEBdATnvCh7etUNKMTSn4x+hAQMGDBigSIvOxKbVO/CK+0r88eZ2pdJph0520pa8LXhn6wp4de2k8/vt+uwQLu+6hSu7byk58/y65E/MdV+BmNvxao8VcTwS1/aQFQEm5sZY8evCNrcnCAIJD1OoNtY1I7/BpR03qJYDSBMXA6UX8IaaRqp6B9JExqqQj7B21Dcq3esyXmTjr3d3Y677CmxYuU3lhGv88pH45OA71OPNb+1EUVaJ2p9ZhmLbWi6NxgQy5n46jUqA5aUU4u81+5ReJwgCyY/TsOW93ZjbaSU+GPYVLmy7pqRtZWJhDHMbM4Xt5bFMf56FN/t+hPcGf6G2E6BYJMZPC/6gkp7jXhuBzqG6te/8E8x4fwK6DSKdv4qySrHl3d1ajeMsXdkW8kW4tF0u3J2dkIfVYZ/gzdCP1U5QSiQS/LJ4M+qq5O023QcHaXVc/ySTVo1Br1Gk/klZfgX+eHN7u/uoQvb9aaxrQll+BWxsbLBq1SqtExcikQhHjhzRufrlnyYgIAAeHh44fvw41c6lKQwGA4mJiZQLoKWlJVatWqV1QkQsFuPo0aOIi4tTY+uOg6+vL/z8/HD8+HE0NGieNIc0likpKZTTpampKVatWoVOnbS79hIEgWPHjuHFixdqbN1x8Pb2RlBQEI4dO4baWu31EjMyMpCaSlZY83g8rFq1Suu2boIgcOLECURHR9NiEPFP4eHhgR49euDYsWM6taIf33oaMc9e4MLf19FQQyZ6+A0CvDv4CyzwXtWuA6Yi2z86QM2POnqVuYzgYV0xXWqYIOQL8eOrG6mqqOZ0HRQIK3sLsIyYgDsfn879HyaazcfGVduVqs1vHb6P2gpyUUgkFOP9oV9ivufrKC+sRPWLJqSeJ+d2/Se3rne598ujlK5bR68ylxHULwBzPpoKKMzrhr8yAPbuZCKQIAh8PWMdACAgxBf27rZgshng+Irx+avfYaLZfKxb+qdK4ytFPTWZlnJtPB8pp8nnB7QRy46EIaFmwIABAx2c6rIanPz9Alb0/ACv916DM5svo75afgPQfUgQvjj+AfambcKsDyer5dipLm3pM4mEYqqVrz1K88qxYYXcYvvNP5bC1rnl6jtBEMh4kY0dHx/AAp9VeLv/pzj9xyVUFMl1eYxMeRg+dyC+ObMWR4v+xrtbV4DDbb1SJ/VZJpUEqqmoxelNl/BGnzVYEfwBTv5+QSlBZ+dmQ/3bzd8ZK9YtxKBpoRi1kHQGa6htxC+LN7db9dYcVeK2dMLmsLF272pKo+Lsn1fw+HI0suJzseuzQ1jkvxpvhn6MExsuoLxArs/CM+ZiyKx++OrkhzhWtB0h4cFtvk/68yy1K6sO/3ga8ffJlXEnLwcs+6XjtogowmKxsGbPmzAxJ9sPLu+6hfunozQep7lgcXMyY3OU9P7a4sT6C4i+EQtI20leX99xW0QUYTKZ+HDnGzC3Jit4bh26r1Tpqi7uAa7gWXFg5mKM7IRc3L17V0nwWFMEAgHMzMwwYYL2+o3/Fmw2G2lpabh27ZrWYyQlJeHhQ9Kp+MGDB4iKilI7Ud4ckUgEY2NjTJo0Sevj+bdgsVjIyMjAlStXtB4jOTkZkZGRAICoqCg8ePBAp1hyuVxMntxx3P7Uhc1mIzs7G5cuXdJ6jJSUFDx4QLpVP336VKf2ZoIgwGKxMHXqVK3H+Ldgs9nIy8vD+fPntR7D2tccjj1UV5FVldagJKdMrXEeX3mOUxvJlkkOj4MPd7/ZoavMFVny/VxK7zf9eZZKXVShQIh7J6PAM+VB3CRBYzkfRXlFaGrg49qe20pzN1XUVtYjNTYdRYJciPkSGJnyEDJW9Twq5k48jvx8BpBWuK3Z82aHrjJXZP4XMyj37uyEPOz85BA+VVhsTnmSjkeXnuKH+b+jpqwWEhGB+qJGFBcWo6mBj6t778A9oOU8uChDvkDt5u+C2tpa5NRlQiyQgMNlI3RC73/0c2rLy/FXNGDAgIH/Z4hFYjy+/BxXdt/Cw3NPIBIqJzG4RhwMf2UgJq8Oh2+wl96OY8ziYTix4YLK16zsLTB83sB2x5BIJPh50SYqcTVkVj/K2lxGXmohbh++j1uH7yk5+cngcNnoO64nhs4egNAJvWFsaiR/zYaDAVP74vaRByrff8pb4Xh6NQaXd91C5JnHEDZLYnB4HAyd3R9dBgTg95VkWwOLzcLHB96m3mfVhsWIuRWPkpwyvLiTgBPrL2Dm+xPb/ewyHD3tweFxIOQLVX4+OnAPcMXyXxZQVUCfT/oRYlHLxB+bw0KfscEYNnsA+k3qo2Sq4N3NEzfResJj8pvhak0AEx+lYu/XRwEATCYDa/eu1shR9t/GydMBr29YjHVL/wQArF++BUH9/DVqc2mvQnTiytFq6fClPc+knNUYDAbW7HmT1qS5vrFztcXqzcvw/dwNAIA/Vm1Ht0GdNWpz6dTZFQ7drOAx3BERj2+jVkRWbjQ2NqKwsBAzZ85UuzUsLy8PFRUVWLTo5UhKNsfMzAwzZsxAaWmp1mOYm5sjOTkZhw4doiqCmpqaUFxcjKlTp8LJyandMQCgoKAAxcXFL20sTUxMMHPmTOTna/+bbGFhgZSUFBw6dAgpKaTZjlAoRGlpKSZOnKh2+15xcTHy8vJe2ljyeDzMmjVLJ11DCwsLxMfHK8VSJBKhoqICY8eOhYeHelpKpaWlyMrKwsKFbVfBd1Q4HA5mzpxJfTe1wdfHF49vq1506DG0C3x7tj9vrCqtxq+LN1OPl/00n5bOh38KrhEXH+17C6vDPoZIKMbRn08jdFxPdB3Ymdrmy6m/4PEluXt73P5MmLmYwNiWi87TOoFl03ZyvHOYHwqK82HuYQwGkzSKUnVdr62sw08L/qCS7Qu/mQO/XrqZ6vyTcLgcrN27Gq/3XgshX4iTv19A6ITe6NI/gGop/mz8j0r7JBzOhpmLMUzsefAb7waJhYB6TdapUVYgN17x7tYJEVfuw9zDCEwWA71H9Xhp5o2GCjUDBgwY6EDkJOXj77X7MbfTSnw+6UfcO/lIKZkWGOqHd7Ysx9HCv/H+jjf0mkwDAK9uHghspU1vxbqFat3Yn/jtPJ7fJNuB7N1s8fZfpLZFTlI+jv5yBm+ErMXigLew58sjSskmJouJ3qN74IOdb+Bo0XZ8dXINhs4eoJRMkxG+VLWouLm1KS7vuIlPxn2PiGORSsk0/z4+WL3pNRwp2IY3NizGwe9OUpOdRd/Mhn9vuYaYqaUp1ux5k2od2fXpQWS8yML5rdfwyfjv2xWvZ7FYlEhtQVoRREL1KpPUJS+lAMd/O4ere+TC0M2TaXauNnhn63IcKfwb/zvzEYbPHdTCoVSxNbU5jh72mP/FjHaPpbGuET++uhESMfn+r3wyDV0HBGrxqf5dxiwaigFTyHaD6rJa/LZsC8ryy/Hz4k1Yv3xLu3/DtmJp62KNRd/OafcY+I18/DDvd+o3YMZ7E9TWHexIDJszAMNeGQAAqKuqx69LNqOiqJLSZxQ0Cdrcv1NnN5QlVIOQEFQyDQBiYmJQU1NDaVi1R0NDAw4dOkS16L2s+Pr6omfPnjh58qRW7ooTJkwAg8FQumGPjY1FVVUVzM3VS9Y2NTXh8OHDOt30dwS8vLzQt29fnDx5UiuH0vHjx4PJZFIJIEidVMvLy9WOpUAgwKFDh3Q2M/i36dSpEwYMGICTJ09q5ao5btw4sFgspVgmJCSgtLRUbW0+kUiEw4cPIyEhQeP370i4ublhyJAhOHXqFEpKNJeZmL10OvIjWv4N2BwW3vpzWbttsARBYP3yrVR3QMjYYExZ3fGNHZrj29MLC78mdVElEgI/LdyEypJqbP9oP76a/gsyYqSt716mYHIY6LHUF51ndkKPZT4wceHBwqF1fU0mi4l3tqxA+tMsFD+vhERIYND0fi22IwgCG1dtR2ku+ffoPiQIMz9Qf0G2o+AR5I7XflTQRV28GUt+eKXFdpaeZCy7L/ZG51ke6L7UG2adjGBmY0Jpscm0hBVlR/xDfJD6KAMlMVUQNYkxWEUsOyqGCjUDBgwY+JepraxDxLFIXNl9C4kPW96c2DhZYeT8wRi9aGi7bWT6IHzJcCQ9Uj6u4OFdMWLeoHb3TYvOxM5PSSF1BoOBKavDsfero3h04RkKM4pV7tN1YCCGzRmIQTPC1HaUDB7eFU6e9ijKUq7aqK2sBxRaOq3sLTBi/mCMWTQUXt3kq93fz9tAtUB0G9wZMz9s2b7UY0gXzHhvAo6tOwehQIT3h35FaVqVF1Rga/SvbR6jq78zMl5kQywSozS3nLIX1wahQIjYu0mIuvAUDy88Q35qYavbyirjyvIrYGZl1mYS1M2/dZHu1ZuWqkxmNufPd3ZTgrOBoX6Y/3n7SbiOCIPBwDtbVyD+QQqqSqrx8PxTxN5NpNqtuw7sjFELhrS6f1uxfGPDYrVWXv9es59KMvsEe2LRty0nry8Lqze9htiIRJTlV+DZ9VgsDXqX+v4EhvphworWdXnc/J3RWC7A080p6P1GABjSjiM/Pz8MGDAAxsbGre6rSENDA+zt7V8KJ8r2YLFYyMrKwvnz5zF37lyN9q2trQWLxQKDwYBQSOoK+fj4oH///monJxsbG2FtbY2xY8dqdfwdCRaLhdzcXJw9exYLFizQaN+6ujowGAzweDzw+aQZjJeXF/r166d2EqipqQmWlpYYN67j6ym1B5PJREFBAU6fPo2lS5dqtG9dXR0kEglMTEwoXTsPDw/069dPbYMGPp//0rZzN4fBYKCoqAinTp3CihUrNNqXL+aj9zt+ePx7MvjVcu2w2WunKGlZtcbFv6/jwZnHAABLO3N8sPONl0qLTpGZH07CwwtPEX8/GUWZJVjW9V1Ul5GJnNDxvdDIb0S3BV6QiAkwWeRnZPNYYAhY6NylM2ycrJRkR2RMf2c8PLq44dnZeJRlV4JnzEVfFbIZNw7cxe3D9wGp7u/avatfmrbZ5kxZHY6H558i+kYsSvPK8f6Qr5ReZxux0G1hy1iCz0Rg50A4eNijKLMEhdJWz0apqQOk5lfPzsWhMLUUbA4LYRNfjnZPGBJqBl4mxGIxshNykRadhbyUQhRlFKOsoBLVpTWor65HUz0fQr70osFggCH7P6PlYwYYYDBlzzMABnnhYjAABpMJY1MjWDlawt7dFm7+zvDr5Y2uAwNhZa/ezb0BA+1RU16LB2ceI+J4JJ5dj22hS0VeTPpgzKJhCBkbrJWzJF0MnTMAm1bvoKq7WGwm3tr8WruTq6YGPr6ds56qrmGxmfh77X6V2/r19saw2QMwZHb/NnXbVFFbWYfIs08oN87mMFlMhI7vhTGLhiF0fK8WLYs3DtzFrUPkZMfU0gQftTHZWfTtK3h44SlykwqoZAAAZL7IQX11PUwtW78ZdVBocSvLr9A4oVZZUo2oi8/w6OIzPL0SQ7lLNccn2BMeQe64eZDUn6F+FwHE3U3EkJmtr/rZtdKGN3BaKELHtz+5uXvyES7vvAlIte4+2rf6pdEIUYWVvSXe3/46Pp9EtjIoahfG3k1sM6Fm42wNJpMBiUS5ZSRkbE/KVawtHl18hjObLwPSFu+PD7wNLo/T7n4dFXNrM3y4axXWjv4fIK1UkxF3L7HNhJqFrTm4RhwQEnK1nwEGWCwWhg4dqraYfnp6OiQSyUvbUtccWVuYYlXTo0ePUF9fj+HDh7e5L4PBgEgkAptNfjeZTCYGDRqkdktdZmYm+Hw+Fi9erOOn6BiwWCzMnDlTyVjh6dOnKC8vx+jRo9vdXywWU9dDJpOJAQMGwMfHp939ACAnJwd1dXX/mVgymUzMmDED0dHyNrrnz5+jsLAQ4eFtVzgxGAwQBAGBQEA9DgsLQ0BAgFrvnZeXh8rKyv9MLBkMBmbMmEFpHDIYDMTHxyMjIwMTJ7Zd4cQgb3ZgZMOlEmoOnezwysfta8rlJudjy3t7qMfvbX8dNk4d33G2NVgsFtbuWY3Xur0HQaOASqYBQElOGT4/8AH++HwL3IbYgWsqn6/Ych1gZmYGe3fbFgk1aycrvPrlTDy98Rz+85whPCBAt15dW1T9F2YW449VcjOet/9apvEctyPBZDLx4a5VWBr0DmU4pYioSYyk47nwCXcGUyGWlgxrWFhYwN7dFkWZJairqkdDbQN1f8DhsRH/MBmeM+zRdLQRvn5+MLfu+O7bMl7eWa6B/wxZcTm4cfAukh6lobKkCvVVDWiqb4KgSQiRUEyKf2un76o1VahGYWYxEh+qfp3JYoLNZcPIhAtTS1NYOZDJt06BLvAJ9jIk3wyopLqsBvdPRSHixEM8vxmnUtzdu7sHxiwahuHzBnaYc8jE3Bg+wV5IiiKr1IbPG6QkLqqIRCJB6rNMRF14hjN/XkZ1qbwdSbF1lcVmodvgzggd1wthE/vAza/1ah5V1FTU4sHpx4g48RDR11+00JgDAPcAF4S/NhIj5w9qVfuqKKsEG1fJ7eDf/ms5HDq17hyY9ixDaTImgyAIJD5KQ5/RPVrd19ZVnqwqzWu/HYYgCKQ/z8LD80/x6OIzJEelqRS7ZrKY6DowEGHjeyNsYm84eTngz7d3qRwz4WGKyudlGJsawdzaVMmogcFk4I0N7d+glOWXY/3yLdTjVb8vgauvZn/XjoZYJMaz66od9xLbiSWbw4a1k5WSCQSDwcDqzUvbTUZXllTj1yV/Uo+X/7IAHp3dND7+joRYLKaMFZqTENl2LBkMBuxcbVCUUwpyQsCARCKBkVH7FZMAUF5ejsOHDyMsLAx+fh3faVZd3N3d4erqiqNHj0IsFqOgoAASiQTDhg1r8xxzdXXF4MGD8fAhOcmRVQWpQ1VVFQ4fPoxevXohMPDla+VuDRcXFzg7O+P48eMQCoUoLCwEn8/HqFGj2oylk5MThg4diocPH0IkEmkUy9raWhw6dAhdunRBUFDHd+1VFycnJ4SHh+PUqVPg8/koKipCfX09xowZAyazdbUhW1tbDB8+HFFRUairqwNBEGpXTNbX1+PQoUPw8/NDt24vX1t8a9jb22P8+PE4e/Ys6uvrUVpaiurqaoSHh1MJcVVYWVlh5MiReL5pG/Xcm5uWtqvbKRQI8cP8jWhqIKstxy8fhf6TXg6nxbZ4fitOpQlQVlwuOof54b2f3sRnE3+Ax1h72Hcl54sNXHKuZ+dmq+R6DgArfl0AYzNj3L38AExLJhpKm1oslMkcMWWLnyNfHYyhswfo8VP+M8TcjoeAr9oxFQDK4qtRFl8Nv8mucAwmE7FNRuScUlE7NfZeEvVvE3Nj3Dl/FyxjJhpK+Rj8UfuLjh0JQ0LNwD9GwsNk3DnyAPEPklGYWYL6qga13eI6GhKxBIJGAQSNAtSU16EwQ3XyjcVhwdzaDG4BLug5vCvGLB4GxzZu1g3896gsqcb9U1G4eyISz2/FU7pSijh0ssOgaaEYMX8wfHt6dciy+rf/eg1rR38LSztzvP3nMqXXGusa8ex6LB6ef4qoi89UlsZD2m4ZMq4nQsf1Rp/R3dus5lJFdVkN7p9+jLsnIhF9Q3VCkmfMgUgkwcSVo/HGhsVtxlIslk52auSTnWFzWp/sVBRV4qMx36pclQOAxMiUNhNq9goOouX5FSq3aaxvQvSNWERdICvRylrZztzGDH3H9UTY+N7oPbqH0krejk8O4vxW1Q6A6c+zwG/ktzmptnW1QW1lPRgMBoxMeZi1Zkq7AvISiQS/LN5MWcoPmh6KMYuHtbnPy8ChH05RDmfNyU7Ia7cq0c7VhkqoGZkZYepb4+Ds1XZlIkEQ+O21v1BVQmqF9R3XE5PeGKPT5+gInFx/AYd/Oq3ytcKMYlSWVLfZ4m3nZouC9GKkns1Hz/kBGDlyJGxsbFrdXpHa2lp4eHhg8ODBamz9ciEQCJCUlEQl29UxFGCxWHBzc8OoUaNw+/ZtDB48GPb26s1Namtr4erqiqFDh+p87B0NkUiExMREysVZnZgwmUy4urpi9OjRuHnzJsLCwuDsrN5CQl1dHRwdHTFihGoN0JcZsViM+Ph4iMXkddrWtn0TElksR4wYgRs3bqBPnz5wd1dP5qK+vh52dnb/iXbu5kgkEsTGxkIkIhNC1tbW7c4TGQwGXF1dMe/L6dj76TH0HN4N/Sb0afe99n51DKlPMwDpouSKdZq1QHdEnlyNwW/Ltqh8jSAIJEelodfI7vjh8mf4dc3vsO9KvmZmTF7b7Vzk1xkjEx66De6MEXMHQSKR4OmpOIi4AkBEdkIo0tzp/M0/NGuB7oi8iEjATwv+UGvbuvwmOEo7YI15ZOWeYizjFLSHLWzN8fRULJoYjRDWidF/8suVxDUk1DoYTUIximr5KG8QoKJBiCaRGAQBMBkMWBixYWvCgZ0pD/ZmXDA74E23WCzG85txiDgeieTH6SjOLkVDTaPKJIKmMBgMqjKMZ8yFsbkRzG3MYONoBTs3G7j6OsPF1wlcHhsikRhioQQikQhioRgikQRikQiEGBCLRBCLxBCLJM3+L4ZELIGQL0RJdhlKcstQVVqDhupG8Bv5ZLWchp9DLBSjqqQaVSXViLubiH1fk5bNHB4HVg4W8OrmgdDxvTDq1cEtyoQ7EnyRBEW1TShvEKKiXoBG6rwEzHls2JpwYWvKhaMZjxKc/KchCAIVjUKU1vFR3iBEdaMQImmrFZfFhI0JB7YmXDia82DG0+9PX1lBBSLPkNVTL27HK7V8cUyN4NjbB53CAuDRPxDmzjbgmvDAYgD5PDaaimqpWLL+xVhWNgpRWidAeYMAVY1CiLgmWHj7e3BZTEQX10NUVoCCqBQ8O/sYL27Ht3DOVCRkbDDmfzETASE+GutGVBRVIvLsE6qqT/E7yDbhwbGXD9xD/eE1oDPMXW3BNeaCxWTAlMtGbFEtbE24cDJXHcvdnx9BnHSFzMnTvt3JDr9BAL501VYVcfdVGxNUSs/Leg9njN72JjimRqi1NcelpBJYG7MhLq9B4eNUPDv7GM9vxim1aCri1a0TQsf3RtiE3ggM9W01ljVlrYuUi0VipDzJQLdBnZWeF4olKJZee3p8OAOdATA5bHgGucLShIeYgmrYmZLfH7aKCoND35/Cs+tk9ZGtizXe2bKiQyaGNaW6jVi2VpUoEktQVMdHeb0AQW9NhreEAJPNgkdnV1iaGSGmoJo6L9mslrE8/tt5PDxPurNZ2Vvggx0vr3aNIm3FEtKEdPNJtFhCkNeeeiH8lofDdckYMDlsuPs7o8LMCM8VYslREUtIjQvs7Owwf/58Wj9PRyA3Nxc5OTlUqxyklSlCoRBcLldpW7GEoL7j5Q0CpOc1wNjUGgHj5qOWw8Lz/GrYmJKx5LYSy7i4OFhYWGisM/YykJeXh9zcXKXnrKysIBAIwOMpL0CIJQRK6vgoqydjmZHXACNjc/iHz0Mjh4Xo/GrYmnDgZG4ELlt1LBMTE2FkZPSfaUFWpKCgAHl5eUrPmZubg8/nt9A7lMhi2SBAeb0AGXn14PJM4T92HoQcFp7lVcFWel7yWpG+SE5OBpvN/s+0eipSWFjYIpZmZmbg8/ktKiElhOJ5KURGbh04vQOxLPIXGLFZeJpXRf5eWvBgpCKWUZeicUS66MFis/DR/rfU0k3t6LQ1JwKA+Mhk9BrZHV0HBGL5R0uwZ/N+uPSzRbdBAxBfVAvLMb0xtncAWDwOHDvZwc7eAk/zqlCfUwLL7pbIvZOHPmOUHSmf34p7qZ3OW0PRRKA9Rowbhvv37sOlvw26Dx6IhOJamA7tgbFBXmDxOBCZ8TDiD0dUpOTDSCBCSX4yyu9VInh4V1jYvjxO5gDAIFT1j/w/oaamBpaWlqiurlZbOFRflNTxkVxSh6zKBkjU+IuYclkIsDeDn50pjDj/jraSWCxGxPFInN18BZkvctBY19hCK0YdmCwmTMyNYOtqAztXW9i72sDF1wkeXdzgE+zVISu6inNKkRCZjLToLOSnFqIsrxxVJTWor2mAoFEAkUCkcSwYDIBnwoOdmy38e3tjyKx+CB3f+18VriyvFyCptA6ZFQ0Qq/F5jDlM+NuZwd/eDCbcf+a4hWIJMisakFRSh8rG1kuQFXG1MEKAgxncLI1ouVEVCUWIf5CMx5ei8fjyc2S8yG6xjZWvM4KXjITr0O5gqKGHZsRmws/eDAH2pjBtRRuMbkQSMpbJJXUob1AvloWPkpFy4gHyIuJASAhwjTjg8DiU1lTYxN745vRateMsFomREJmCx5fJWKZFZ7bYxtLbEcGLRsJtRA8w1NDn4rGZ8LMzRYC9GZVMvXfqEb6eTpoIMFlMrLv9tVpOlI8vR2PX54epFVxF2BwWLjQeBJPJhFhCIKuiAUmldSirb9vBUEbRkzSknLiP3NuxIMQScI04CB7eFWHjeyN0fK82W1EVaahtxO7PD+PSjhtoqm+ZAJz69ji8sZ688ahuEiKppA7p5fUQitv/jnNZTPjamSLQwQzm0lhGXYrGZxN+oDRefrz6OXqN+G+03DQ18LH3yyO4sO26Ss268NdG4L1tKwEANU1CJJfWIa2sHgI1YslhMeBra4oABzNYGpHaaM9vxWHtqG+o68e35z5SS7vuZUDQJMC+r4/h3JarSlp0MobPHYiP978NAKjli5BcUoe08nrwRe0vZHGYDPhIv+NWxnKdueTkZBw+fBhTpkxBjx6tV4++rGzZsgXFxcrmLkwmE6GhoZT2Vx1fhJTSOqSW1aNJjViymQx425og0N4M1ibypFx6ejr279+P8ePHo0+f9itdXjZ27NiBvLw8peQkk8lEr169MH78eABAvUCElNJ6pJbVoVHYfixZTAa8bUwQ6GAGG4VYZmdnY8+ePRg9ejTCwl6u1iZ12Lt3LzIzM5ViyWAw0L17d0yZMgUA0CAQI6WsDiml9WhUIdnQHBaDAU8bYwQ6mMPOVB7LvLw87Nq1C0OHDsWgQe0bJb1sHDp0CCkpKUqxBICgoCDMnDkTANAoFCO1tB4pZXWoF7QfSyYD8LQhv+P2ZmSyuDCjGKtC1lJyD0t/mIc5a6fo7XP9kxAEgTObLuPor2cop01FPLu44+/Y3wBpYUtqWT0SiqrRpEYTFSERI/9+HHq422HCDPK7XJJbhlV91qJKKnky//MZlNPoyw5BELiw7TqO/HSqhQlYczZF/wKRow3iC6vRqFYsJSh8lIBAWwtMeaX/S7WQaEio/csJtSahGI9yKpFVqVpcuj04TAb6uFvBz85U7yeeWCzGnSMPcPavK0iPyUZTK21PrcFiM2FiYQJHT3t0DvPH0Fn90WVAwEvrdNIeYrEYT6/H4s6R+0h6lIbSvHI01TeB0DDRxuFx4B7oijGLhmDym+H/SLwEIgke51Yhrbxeja1bwmIy0MvVEp0dzPR6XuZXNyEyu0KtCYQq7E25GOBlQ93MakJJbhmeXH6OqMvRiL4e26pAvHsXdwz6fDaY3uoJZzeHyQB6ulgiyMlcr1WphTVNeJBVgTotYykqrYYfU4yHh+7i2t47AAAXH0dsivqxXWHRsvxyPL78HI+vPMezay9U3mwDgEuAC4Z8MQcsP+20pJgMoLuzBSyra/F22CfU32zluoWY/q76jmAEQeBFRAKOrztHVRLJ2JX0OzjOtniQVYEafutVe20hKq+BDyFC2OBAGJm0rXfSFrWVdbiw7TpObbyIikK5jpdHkBu2vFiH6PwaJBSrv9qoCIMBdHOygENTI1b3/YiahC/+9hXM/WSa1sfcUamvrsfF7Tdx6vcLSvp3zt6O2JXyB2IKqhFXVKuV3CcDQBcnc7hIhHgr5CNqEj7v0+lY9L85NH6KjkFDbSMu7yRjqTght3ezxb6svxBbVIMXhTXQdnba2cEMvVwtwWYx8ezZM5SUlGDMmDEv1eRcXQQCAeLi4mBsbIwnT54gI4NM9Ds5OWHZ8uWIL6rF84JqtRZqVRFgb4bebpbgsJiIiYlBXl4exo0b95+MpVAoRFxcHIyMjBAdHY3UVFIz1NbWFm+sWoXE4lpE59dArOWJ6Wdnij7uVuCymIiPj0d6ejomTJjQpqbYy4pIJEJcXBw4HA7i4uKQnJwMgiBgaWmJt99+G0kldXiWX011EWiKj60JQtytwWMzkZycjISEBEyaNOk/eT8ha51lMplISkpCQkICpS33/vvvI6WsHk9yq7SOpaeNCYLtTLBmyOfIiCEXg/tPDsGXJz74z52bIqEIEccicWzdOaXFWjaXjYuNB5FWXo/HuVVqLS6qopOVMXo5meGzkV8jKSoNANBnTA98e/7j/9y5KRaJce/kIxxbd7aFvlzv0T3QY94QoKs3BFp2qLlZGqGfh80/VpyhK4aE2r+YUMutasT9rAq1Vl/bw8XCCIO8bNSqVsuIzYJHkHu7X25tE2gsDgtmVqZw8XFCUH9/DHtlAAJ6+6r9Wf7rNDbycefIA0SefYz051moLK6GoFG9ChYA4Blz4dnVHRNeH4NRrw6m/Ue6qKYJdzMr0KDGimF7OJhxMdjblvYKK7GEQFROJVLKtEv4KcJiMNDb3RKdHdouLxbwhYi/n0RVoWXF57a6rX8fH4SMDUb3qaHIYPG0TvgpYmfKxRBvW9rbVSUSAg+zK5BarjqJpeFgePrHeSQeuA2eMRcbI7+Hd/eWrnEioQjx95OpKjRVFX0y/Hp5oc+YYARPDUMm10jrhJ8itVnFuPHeDtTllWHonAH45MDbWt8gZifmYct7u/H06gtYOVrivfs/ILmsgcw46QCDAQQ7W6Kbs7nON69CgRDX9kVg24d7UV/dgAW/LYbZ8J5aJ/wUqc8rw433tqMmq+Q/OwlXRCQU4dbh+/jr3d2orazDnG/nwW5iKKqadI9lY2EFbry3A1Xphf/ZSbgiYhFZ5b757V2oLq3BtM9mwHX2ELUrjdvCjMsCuygJw/uFwNz85Wod0Zbi4mKcPXsWBQUFGDo6HLWWndSuNG4LUy4LnKJkDA3tBUvLjmGUo29KS0tx9uxZ5OXlYeCwEeDb+6FUzUrjtjDhMMEtTcOgXt3U1v972SkvL8e5c+eQnZ2NsIGDQbh2QXFd69IJ6mLMZsKoPBP9ugeorf/3slNVVYWzZ88iMzMTfUL7geMVjMJa3WMpbmjCnY/3oiAyCW7+ztj06AeNNW5fJgiCwPNbcdj4xt/ISylE7/G9MXLdUuTXaFYoogpJkwARn+1DXkQ8nDztsfnJT7Cw+e9egwiCQOzdRPyxajuy4nPRdVhXTNy6CrlV2hUKKcJlMdDPwwaeNh2/VdaQUPuXEmrp5fW4n1lBq3mlpREbo/0dWs3misVivOK2ApXF1WBz2Thfv19psi4Wi3Hr0D2c++sqMmJz1EqgsdhMOLjbo9+k3pjw+hi4+2tXhWOA1Iq6uuc2nl59gZykPNSU16l0pGmOkZkRfIM9Me3t8S0cZjQlp7IRdzLKtF7NVoUpl4XR/g6wMGo7EVSaV46Kwkr49/FpM4EgkkhwK60cBTRc+BTp6mSOXq6W1HuLhCKkPstE3N1EvLibgOc341S2z0EqptlnTA+EjO2J3qN7wNrBEvnVjbiVVq71arYqjDksjPG3h6Vx2xV15YWVKM4uRedQP5WxrK2sQ+rTDMQ9TEF1J2dYBHWi7RgBIPHQHYzq7YERc8n2C7FIjLToTMTeTUTs3UQ8vxnXakWfuY0Zeo/ugZAxwegzpgdsnKxRWNOEm2llWq/AqqKxvAaJG07jx+Pvt6kRUllchcKMYgSG+qlMFNVV1SP1WQbiHqSgys0BFl09aTtGAPC3N0VYp/YFiNWluLYJN9LKtF6BVUVTVR3ifj2BH4+82+YkvLqsBrnJBQjq5/+fSLqV1vFxPbVM6xVYVfBrGhDz83H8cPCtNifhNRW1yEnIQ+d+/v+JpFt5PRlLdVoS1UUiEmKolzW8HK3b3K6uqh4ZL7LRpX8AWGq043d0KhsEuJZaqlZLorpIxCIMcDeHv4tdm9vV1zQg/XkWOof5gcPVvPK7o1HdKMC11DJaFsVkEGIx+rqYIMjdoc3tGusakfI0A53D/MHlvfyxrG0S4mpKKS2LYjIIiRi9HHjo7tm2CURTAx/Jj9PQOdQPXCNum9u+DNTxhbiWUkbLopgMiUiMxz8cw9of5sAjqHUjCH4jH0mP0hAY6tuuY+jLQINAhGsppbQsismQiCV48vMJvPvZVPj29Gp1O0GTAIkPU+Ef4vOf0KprFIpwPaUMFTQsiikS2skagQ5td7r82xgSav9CQi27sgF30stpTabJsDJiY2ygI3jNRFDFYjFmOy9DdZm8vWfh17PQZUAAdn9+BBkvsltNFijCYrPg0MkO/aeE4JVPpsHyP5x17wgIBAKcXH8B1/dFID+tSK0Em4mFMQL6+GLGh5PQd0yw2u9VWNOE66mltCbTZJhxWQgPdGw12Xv7yH38vHAThAIRPjn4TqtOixKCwK20MuRV05tMk+HY1IjSGzF4cTcBSQ9TKdtwVQT29UXf8F4ICQ+GX29vpZva4lo+rqWU0ppMk2HCYWFcZ4dWq/4enHmM715ZD0GTEO/veAMDpoQg9WkGUp5mIPVZBlKfZqAwoxhgMDDo+wXwGKEfXSFHAR9lN54j9l4iEh4kt/n74tfbC6HjeiNkbDAC+iqL7ZfV83EluZTWZJoMLgOY0NWZ0gJrTtSlaPxv1jo01fOxetNrGD53IBXD1GcZSHmSjoJ0Ur9owNfz4BWuH62rIEczhLi3nRRQh4oGAS4nl9CaTJPBBjChq1Or7dPRN2Px1dRf0FDbiOW/LMDM9yeqNa5QIERpbjmKskrRUNMAFpsl/Y8JJoup9Lj5v5ksJjg8DmycrWhPOlU1CnEpqYTWZJoMFgiM7+IEa2PVN35x9xLx+aSfUFdVj4Vfz8b8z2eoNa5IKJLGsgT11fJYknFsPZayOLO5bNg6W9OedKppImNJZzJNBpvJwNgAB9iaqo5l4qNUfD7xB1SX1WLOR1Ox9Pu5ao0rFolRmleO4qxS1FbWKcRR9bnYPM5sLhs2TlZgq6EBqQl1fBEuJhXTmkyTwWIyMNrfHg5mqm+i06Iz8cm471BZXI1pb4/H6+vVE9sXi8Qoy69AUVYJaivq1PpeKz5mc1iwcbamPZb1AhEuJZXQmkyTwWQAo/zt4WSu+iY6My4Hn4R/h7L8CoxfPgrvbFmu1rhikRjlBRUoyipFTXltm7FU9Rqbw4K1kxXtydBGoRgXk4pRx9dPLIf72sPVUnUsc5Pz8Un4dyjKKsWoBUOwZvebao0rFotRXlCJ4qxSVJfVtBrL1n4/2RwWrBytaE+GNonEuJxUgmoaE0AUBIHhfvZwt1JtklaYUYyPxn6LgrQiDJ7ZD58feU+tYcViMSoKq1CcVYKqUtWxbO/309qJ/lgKRBJcTi6hpSq6BQSBIT52rVZXleSU4uPw75CTmI+wCb3xv7MfqTWsRCJBRWElirJKUVVS3SKW7f1+stgsWDlY0J4MFYoluJJcQktVtCoGetnAx7bjVk0aEmr/cEKtXiDCmfgivdzQyPC2McEgb7k9tVgsxmyX5agubdvlRBWGBFrHorGuEYd/Oo07Rx+gKKsUYjXaMs2sTdFndA+8vn4RbJxU35Q3icQ4E1eklxsaGa4WRhjhZ9ei0ubkhgv4673d1OOQscH4/uKngHT1pji7FEVZpSjJLkUxhwdWt9ZXe3SFkEhwdeVmlD5vKYTPZDMhUYjP+rv/Q9cBgSAIAlWlNSjOKkFxVikKc8vR2DsATD26tjIra+HdUA83f2c4eztSk4zjv53DtjX7KJ0+jhEHwibVF7eAWQMR8oF+ta6ur/oLRY9TWzzPYjMhVojlT1c/R6+R3UEQBKrLalCcRf7Ni3LK0NDLH0xz/ZV7M6rr4F1bC3d/Zzj7OFGxPPvnZWx+ayclDs/hsSFsZTXYd3Iowj7Vr+CsRUY+fJws4ObvDGtHK40r1sQSAucSivQzCZdiY8LB+EDHFk6/tw7fx88L/4BI+nvl1a0TtsWsA5olzGTfoaJs8v/FWaUoy6+ArtMUDpcNJ29HuPk7w83PGW7+LnD1d4arnzNsnTWv/hNLCFxILNbPJFyKlREbE4KcWrjT3j35CD/M+51ygnXxdcKeFNLCXjFhRn6HSlCcXUr9uzy/QivjIEXYHBacvR3h6u8MNz8XuPo5k3H1d4ati43GsZQQBC4mlqC8Qfd2utaw4LExMcixhaPqowtP8e3s9dTCiZ2rDQ7mbAGDwSBjKU2YUedmdikV27K8cp1jyWKz4OztQJ6Pvk5w9XeRxtIFti7WGldxEgSBy8mlKKGhna41TLksTO7i1MJR9em1GHw9/Vc0SjsbzG3McKx4O1gsllLysajZd7wkuxQlueU6O8EzWUw4eTlIv+NkHF39XeDm5wQ7N1utYnkttRSFNfqLpTGHicldnFssgMfciceXU36mtESNzYxwsnwX2By2UvKxOKuU+n4XZ5egKKsUpbnlEIt0S1oxmQw4eTlI4+es8B13gb27drG8qceFUEhNnCZ3cWohe5PwMAWfT/yRcibk8Dg4VbELPGOeUsKMimdWCYqkMS3JKaMllo6eDnD1cyJ/L6VxdPN3hr27rVYLPXfSy7TW3VYHLouByV2cWyyApzxNx6fjf0BVSTUg/c6dLN8FUwsTpYRZUVZps+tPCUpyyqjrv7YwGAw4ethR56XsOu7m5wwHDzutYnkvsxzpdMidtAKbycDkLk4tpFoyY7Pxcfh3KC8gtW0ZDAaOFv0NK3tLpYSZ0rkp+47nlEGoRnFFWzAYDDh0sqPi5+onPy8dPey1WjR7mF2B5FLdZXhag8VkYFKQIyy00Lz+JzAk1P7BhBpBELiRWkZLj3Z7DPO1QycrY2kybRmqS9UTnjYk0F4uqitqcei7E7h3KgqleeVKCR9VcI256DowEK+vWwjPrvI2v4iMcmRW6O+iImOApw187cgVBolEgu1r9+PYunNK2zBZTPj19kJpTjkqiqqo5y08HTB+3/tg6bn1oSanFBfm/QoxXwg2hwVLewvUVta30Llz8XUCm8NCcVYp+AqvhX06C76T9e/a9ein40g98QAMBgNcYw6EAlG7f38ZZq62mHDwA7D1XK5fV1iBC3N/gbCeDxaHBUs7C9RXN4DfrPLPydsBPCMuirNKlaoC+3wwFYGz9O/a9XTDGSQevAMwSI1CkUCs9kTaxNEKEw6tAddMv+X6DaXVOD/nZwhqG2FibgxXPyeliaUsqdFay2UdX4Q6gQgiMYGIzHJqUcfBjIvwQEccfp5Pi55nTxdLdHeRX0+P/3YOWz/Y22K7gL6+qCiopCVhpgvGZkbUDaOrwsTSPcAFZlaqY/k8vxoxhZovUGlKN2cL9HKVa1ad/fMKNq3e0SJeAX18UFFcRUvCTBeMTHnyWPrKb3jcA1xaNSaJLazBs/xqvR9b8yrPyztvYv2KrS0SOX69vVFdWkNLwkwXjEx4cPF1om543BSSbRa2qudlicW1iMqtUvkanfjbm6Kfh1z/68aBu/hl8eYWv5m+vbxQW15Hzk30UMmpLlwjjsJ33IX6rrsHuMDSTvXcP6W0DpHZlSpfoxMfWxMM9JIvgEccj8SP8ze2uGH2CfZEfVU9LclHXeAaceDi60QlganzMsAFVvaq9fXSy+txL7NC78fmaW2MIT7yluSH55/i29m/Kc3PAMC7hwcaahppST7qAofLlsZSfl7K4mntaKVyn+zKBtxOb+lSSTdulkYY7itfAH9yNQbfzJAnzGV4dfcAv76JloSZLnC4bDj7OJLxk17HZclLGyfVC5B5VY24kVam92NzNudhlL89dQwxt+PxxZSf0FCjnBT17OoOQZMQJdml/2os2RwWnH2cqCSw7Lx09W99AbKwpglXU9p2/KQDBzMuxgY4dEhTHENC7R9MqOVUNuJWuvKXl+6bGRmmXBamdXPGeOO57bYJ2rnZYMis/oYE2n+A0vxy7P/mGKIuRaOioLLNGwI2hwXfnl6Y88tCpBkr3zgyGMDYAAdYGXHwILsC2ZWNsDfloo+7FSQE0eKmXF24LCZmdHcGIRLjyyk/48mV52rvO/z35XDpF9jmMcrQ9XsVs+USYnde03g/m85uGLdHXgLf2jHamXLR08USDAbpVBqvhdOioK4JpyZ+A2G95gn6wT8vRqeh3ZSea+1YQztZwcaECwaAp/nVKNZQADdu13U8/+uixscYMj0M7+x6s8X55mdnCl87U0gIAvcztXclVUTUJMCpSf8Dv0rz1bXZO1dj0oxQpeO0MuLo/F1RReKhO3i6/kyb23h164Rugzqj++AgdB3UGbbO1qhtEuJsQjFEEgL+9qbgsZmILSTPuaE+pGnI9dRSWq5BTAYwrZszjNlM/LJ4M67vi9B6LCsHSzh52sPR0x6OHg4wtzGDRCyBWCSW/ieBRCSGmHpO+ljhuaZ6PgrSi1CQVgRBK9WareER5EbGckgXdBsUCDtXW9TxRTgZV0g5ULb2u6jr9wZS98+p3ZxhxmVhw8ptuPj3dY3HkGFlb0HG0dMBTh72MLc1V4ol+W8VsVWIJb+Bj8KMEuSnFra4SW0P90BXdB/UGd0GB6Hb4M5wcLdDo1CM4y8KlGQGjNhMDPO1g4QgwAADD7MrwWExaPk+TeniBAsjNv58dzdOb9T8N0mGha05HD3tyXPTwwGW9haQiCUtzs02Y9koQGFGMQpSi9qUFlCFm78zug0i49h9cBAcPezBF4lx/EUh2ExGi/hVNQlpueYoMjHIEdbGHGz/+ACO/tz2b1JbmNuYSb/jDnD0sIeVgyUICaEQO/ViWZRJnpfqSJco4uLrpHReOnk6QCQhcOxFAYRiosVcQh/Xn/BABziY8bDnqyPY/7/j0FYPxtzalIyjpz2cZLEkoHYsJWIJ+I0CFGeVIC+lsEXypD2cvR3RbXBndBsUhO6DO8PZ2xFigsDxF4Utri2q5mh03A+N9reHs4URDv90Cjs/OaT1Yo2ZlanSd9zaUc1YiiUQi8WQiCQQNAlQlFWK/JTCVjVjW8PRwx7dhwShm/TcdPV1goQATsQWolGabGkeLzquOYqM8LWDm5UxTmw4j20f7tM6kWtiYQwnLwc4Sb/jNk5WbcZS6VokiyWfTDTlJhe0SES1h727LboPlsfSPcAFBIBTsYWoE4gxt6crVSEdW1gLoVhC+/xtiLctPG1McG7LFWx+a6dSh4YmmJiTsSTnRPawdbZWGUuV1yKFWJbmlCE3uYCqglUXO1cbpe94p85uAIAz8fLuh+bxLKhpovX601FbPw0JtX8woXY1uaSFGwvdNzOKdDNmYG23d9vcxsrBEseKttP6vgY6DgXphdj+8UE8vRLT6gV94HevwnNUzxbPG3OY8Lc3Q1WjENmVjTDmMCEQExCruCnXhH4e1vh93P+Q8jSjze1snK3lN9NdPMAe3afdY5Sh6/dKUt+EZ5/sRlJkitr7mFmZYuA382AXFqj0fPNjZDKAYT52uJ1RDrGOFRCPfz2J5KP31N6exWbCvac3BvyxEgwVbRvNj9Wcx0Y/D2tcTSmFCYeFwd42uJys2SoU0SRAzOd7EHcnUe19TC1NMPrHBbAICVA635JL6jHSzw6XkkpgY8JFVydz3MmgZ7X22R/nkLDvltrbM1lMuHbthDE73oZQ2gYoO860snpavivNIQRCpP50DLnxuSjOKlGrgsbVzxlha6bBuIcPAMDX1hRGHCbiimrhZmkECyM23K2McTu9nLZrUA8XC5x8Yysizz5uc7vmCTPqxtrTHg6d7GgV6ZVIJCjLK0deSqH0vwLkp5H/LsosUetmwcXHEaHvT4VpH3/qOVW/i1kVjTp/b2T8X3v3Hd9Gef8B/KO9JS95753hJCSBkMkOCbusUloKZbRltKW0ZZS2lMIP2tJSCoVSWijQFgplrxACZJI9ncR7721ZtmVb635/SJaXbEu2bNnO5/16+WVZOj16/L073d33nrEwWofN976Crf8dez8fnjDzXFgnGxGZZAx8LGvbUFNUj9rietQW1aGm2BXL+rJGn2IZnRKJM398ObRnzhvyvAgD+YQonQIZERocqjEFZH+aF6nFzkf+i09f/HLM5QwRuiGJiajkQdtmUgRUAezO73Q60VrXjtriQdtlset3fVmTTy1oIhMjcOaPLoV+bY7X+O2uaAvYMadfRoQGR556D+89vWnM5YYnzKKHbZcafeC68wuCgNb6dtS641hTVO/Zx+tLG3xq9WGMD8eKuy5CyLmuc6LB5xKCgCk5/qSGqVH84ma8/vi7Yy43PGE2sI+7tstAzsooCALaGkzu7bFh0D5eh7oS32IZHhuKFd/fiLANI8/dvJ2jBeJ6KDFEhfo3d+Cfv3h9zOWGJ8w8cXQnKkZrnTwRgiCgvdGE2uKGge2y2B3XkgZP9/2xhEWH4IzbLkDEpSs9zw2Ol1wiDtgxp1+cXgnzpv34649fHnO54QkzTxzdMQ10LE3NZtf26D7+9G+XtcW+xTIk0oAzvnMuIq9y9X64bEE0PjjZ4Hk9UNc6g0XrFHB+dQJP3vrXMZdTaZWISY3ybIfRyUO3TW2IJmCts/qHWPHE0b1d9v/tyw1IQ4QOy284GzHfOMfz3PB4BvKaB+4GCRfPi5p0OYEW2BE8aVQdvbYRybR4gxJNXX1ICJma2c6aJON3jetsm/xFHs1csWkx+NWbPwHc46+9cO+/seN/ezzjSajCdUg8Z5HX9w4f1Hjw304nMNFUfGFTF+rLm8ZcJm1xMp4/8gTgHmR3R349qvpGfqC3gZcDsV+JNUqc/5PLUXD1Ez6/xyoICD0tbdw6GjUK2J0Czk4LhxgiHKwxTXgspmW3rkf1p4d8vmPnsDthWJ7hNZnmra69NgfsTgEiAHKpeEJj7ImUclxw31U4sf1Rn9/TZ3NAnp3oOfj2b28RGjkaOvsgAGi1WMedOdYfS246D9WfHERnq2/fiU6HE4Zl6egddILQX89A7SvDieQy3PiPO5Fp1MLaZ0NDeZPrRNJ9AVl8pBylR8qHJNoaqlogds+AppCIkRWpxefFrhPtrEgttpa0jBiA+MIs12DZw28CLYjSYXlCCPIaO3FgjK5lRc3dqCqoHfN/MRj1eKPuhWmb7VMsFiMy0YjIRCOWnj/0O89m7Y/lwIllyZEyFB8uH5IcaqhsgThl6Gxy3tb1ZPabyxdE41CNyTPeUHFLN8rza8Z8j8agxn9rX5i2GSrFYjEiEyIQmRCBpecNbelqt9k9rYX6E0QlRytQfKhsSHKosbIZouToEWUP3lXkEjHaLbaA7U8lrd0ozxs7lnKVHK9V/23aZlUUi8UwxofDGB+OJecsHPKaw+5Ag7u1UP8+XnqsAkUHS4ckNJqqW4EkVyy9xS+Qx5x+ZW0WlJ0cO5ZSmQT/qXguoAnIsYhEIkTEhiEiNgyLz14w5DWH3YHGyuZB+7g7lgdKh3SvbK5phZDoiuXwc4mpOv5UtFtQkjf296VYLMLLxc+MOfNvIIlEIoTHhCI8JhSLzxoWS4cDTZUtqCke2C7LjleiYF/JkIRGa107nF5mMvV2jjbR87bh35fVpp5xvy8B4B8n/4TwmMlP9OMLkUiEsOhQhEWHImft0BsIDocDzdWtQ5Lp5cerkL+3aEhCo63BBEes0fP38HgF4lxtuFpzL+oL6sZd7vnDTyAmdXoSHCKRCKGRBoRGGrBwzdBYOp1OdyzrPMnL8hNVyN9TNKRFtampA7aYga7BGpkEG7KM6LY6sL/KNCXnbw2dfTDlj72PA8DTex5D8oLRZ1gNJJFIhBCjASFGAxauHtoQYMhNM3fysvyEa7sc3Aq4o6UTtujwIe8dHs8QlWxSx5/h+3hLtxWt3dZRJxoKllmfUHv22WfxxBNPoKGhAYsXL8YzzzyDM844I9jVGqHGNPKCd6yLmar2HuQ3dQ15/sblCfjgZIPPG2JjlxWf2N5A/lcF2PfJYRTuL0F9WSPMLZ3o67VCEASsumLmxYqmhkqrwo+euw0/eu42OBwO/OfRt5Fb1gKxnxdhwy/K+0Vq5ciJ0cOoUUAEoMtqR1mbBfmNnUO69LT12PDAOz/DP3/yCkxNHWirbx/R/Lm6sBa/ueYPqC5wnWBc9Pq90CVEwBdj7VeRWgU+yhsYTFwmEeH60+LxVm7diJm8wpak4aLbzsexbSfR0WJGV/vI7oAbbj4X+jAtju3IgzVU79P4bmq5BCEqGT7Ob4RGLsHKpDB8WjiQYIzRKbA41oAwtQyCADR19+FIbQfavMycIw7R4qFNv8BLd7+EtgYT2upNI1o0iCVipCxKRH1ZIywdPYhfu3BEOaOxOQV0W+342sIYSMSiIV3WL8wywqhRwDnobONQTQcKm7tGlKNOj8Pld27AoS3H0NHSic62kcucf8M6hMeEIndHHrpVSsjcLWoGb2+xeuWQWRUH36fzd/0OJ9ap8atPf4EX7/oH2ura0dbQPuIuvEgkwp3P3IyTXxXg+I78IbH0tl94e26y9aw29SDTqIVcIUNidhwSs+OGvN5ttiBvTxGO78jD8Z35MDlFUBjUkIhFOCstHPur2tFndyI1TI1qU8+os/p29NiQHqEZklBLj9DA5MPxp8fmwI/fvAcv3f4CWmrb0NZgGjH0QEezGbY+W8BnmpoImVyGhKw4JGQNjWVPV487lvnI3ZmHFosdqlHGrxq8rsfab/QKKZYnhMCokUMsFqHH6kBJazdONLgSue8PurMLAH12J37wn7vxz+8/j+bqVrQ1tI+YHKO7w4Jus2XaLrbHIpVJ3eMAxWLFxQPP93T3In9vsWe7bGjrhmaUSXIMSilWJYdBI5cMGS/I2/40XjwHszkEfO+fd+Gf330eTZXNaGswjWjRYO2xwtxiRkRc+Ij3TzeJVIK4dNd4dLho4PleSx8K9hV7tsuaOhP0iQMX28Pjp1NIxzzmAMCq5FBkRGjx3ol6nyYucTgF3PTX7+OV7z6HhvImtDeaRrRosNscaGswIS59ehJqY5FIJYhNi0ZsWjSwcaBFfl9PHwr2l+D4jnwc35mHirJmhKa7kubDzyUUUvGoxx/4cQ40nFMArnvyJti7elBf2oi2RtOIMVudTgGttW0zYh+XSFwTk8SkRuH0QTPJW3utKDxQilz3Pl6aX4uIBYkj3u/tHM3bc9efNvB9LBGLIAjwnG80dvXhi+KWEd+XAoArHv0mepvNqCmuR3uDyWv39KaqlmlLqI1FIpEgOtnVumv5+oEZ1619NhQfKsPxHXnI3ZmPoqMViFqW7nl9eLzGOuZgEtvmxgeuRFd1C6rya9De1OG1S3VTVcu0JdTGIhaLEZXkatm17IKBWNqsNhQfLvfs4/kHShFzxkAr83dOuLokp4drcFqcAXurXGMnjnb+5ut573DrfnAxWovrUHGiGu2NHej1MlxLU1XLtCXUxjLaTTO7zY6SI+WeY8/J3UWIWzU0sTk8no1dfaMef3w5Hx6+j8N9HsyEWgC98cYbuOeee/D8889jxYoVeOqpp3DhhReisLAQkZEj74oEU8uwi+HxLmYCpdVixaJ187Fo3fyp/SCaVSQSCb790LXYW9nu04HA875hF+X94g1KrEsNx5HaDuwqb0Of3Qm9UoqcaD1UMsmIJEFZZSty1sxDY2UT6soa0VDWNGS8DmuvDTvf3gcAkOtUPifTxtuvrHYnlsYZfBqItM1ixV3P3Iyu9m6Y27pQlV+LvN2FKD1W4e7yYEfx4TK0N5jQ3tiB035wiU917LM70dTVB7tTQEevHXLJwGl5gkGJtanhOFBtwufFFohFQKZRiw1ZkaNOR11S3oyFq7PRUNmMhrIm1Jc1wNI5EEunw4nSIxUAAIlSDkOK7yc+sXoFFFIJ3jlRD5VMjPPSjfgov9Hz+qEa04jEvzetFiu+98dvo6u9G53t3aguqMXJ3YUoPVqBulJXM/2K41U4/PlxtDeYsOi7F7rqO2x7s9qdCFUNJC2Hr2Z/1q83mqRIPLPnMcB9ElZxohrFh8pQdKgMdaUNWHX56bj8jg24/I4NsDuceO1ILYRR9ovR9pXJ1nO82RA1ejVOv3CJ50LnSFUbjjd146zUcBQ0daG52/X+EJUM4Ro5EkNUCFXJsC4lHFsGnTiWt1swL1ILmUQEm0NAhPvkpaV76OerZRKsTglDhEaOzl47KtstyDRqUdPRgz9/9X+A+ySs4qQrlsWHylBdVIcVFy2dEcm0sai0Kiy7YLHn5Dy3ph1HGkZu78PX9Vj7zXkZEahos2B7mWvQe4NSCoNq7ES8OEyHP+14BHDHsiq/FkWHylB0sBTVhbVYet6iUQf9nylUGiWWnpfjOTnPq+vAgTrvEzt09NqxqaAJoSoZViaF4pOCplH3J3/j6dSq8eS2hwF3q6Wq/BoUubfLqoJa5KyZh/DYsFHfPxMo1QosOWehp0VbYaMZe6sHJnYYHr+jdeZRjzlwz0SXHKpGr92BjAgNDtaMPUlEf7dSq1KOP3z5a8Dd0qa6oM79fVmKyrwaZJ+R7kpgzWAKlQKLz1rgaYVV2tyJXZUmr+cSYx1//D0HGq5XIsXvt/wKcMeypqje831ZcbIK6UtSkDQDLrTHIlfKXeNUuVthVbZ2Y9uwyQi8xXW087bXjgy06BmtoYE3FkGExz/9BeBuaVNbXO85jpefqELy/ARkLk+d5H87teQKGRasysKCVVm47v6voabdgi/cNxe8xWusY85Ets3+fdzsAB796AHAHcu60kb3dlmK0txKxKXHYMHqrOkKy4TI5DLMPzMT88/MxNfvvRwN5h5sLho49+o/npS3W5BpdHVPHev8zdfz3uE6bE785r37AHd3y/qyRhQdLEXxoTKU5lYiOsmIJef6fsM7GKQyKbLPyED2GRm45qeXoaWrFx8XDG1cMTyeVaaeMY8/EzkfnspZwSdqVifUnnzySdx22234zne+AwB4/vnn8fHHH+Oll17C/fffH+zqDdE27CJkvIuZ8UjFIiyLNyDeoIJELEJdRy/2VbePGDixtduGaN3Uzj5Hs5c/X0oi98Cagy/K+52RGIoTDZ1DDjLmXju+qvA+s9OB3UU49rdPx/1MmVyKeReOHN9tNOPtV4XNXZgXqUOUVoHGrrEHbG3vtuLSkJvg6B09Rv1TXgNAWHa8T3Vs6e7DohjXXWalVIzBu+zp7jgWtwy0hjvR0OlphbHZy5gYh/aX4vDTH4/7uVKZBNkXLIZY4k+XCpHn4GhzCJCKJzZ2Q5fVgSuMt8A6xsC8Q2KZFe91e2vutmJRrB4iAKFqGczDWlKMt37H+95s7bYhw527lcllyFiaioylqbjotpH17eizQxhlvxhrX/GlnvOjtMgyaqGSSdBrcyKvsRMF7sR3j80Ji9UxYkr70XTYnEgJUyNKq4BMIsK8KC1qTL1DZla8MMuIHeVDxwKy2p2o7ehFSpgaRc3dSI/QoKSlGyHDkhXrUsPQ0WvHl8Ut0MglOD/D6ImlJ+4yKdKXpCB9SQo23nKeT/WeiTqsI7vReF/X3vcbhVQMvVKGwuZuT3dmU68dpkHb8VU5MdhfbUL1oFbtgxPpUpkUqYuSkLooCRu+MzBuyWxjGiXBIBbBc6FodTg93Zi87U++xHO4wcc8iVSClJwkpOQk4cKbZm8sO/oGYuktfmMdcwAgJUwNu1PAkdoOnBZnwKHajiHdnK7KiUFhc5fruKqW4eP8Jph6bENjKZEgeUECkhck4IJvnzXV//KUMblj6e1cYntZ66jHH1/Ogcb6Xh8ey6R58UiaF4/zv7Vumv7zwDP1jdwPvcW11WKd8PWQ9+/LgViKxWJP6+Nzr5/6GcOnyuBYeovhycbOUc/VfNk2R93Hu4fGMj7DNevwOdetnob/emq0D9pvpWIRHE4BAoBorQLmPvu452+jGf/8cqAskUjkaTF79tdncSx7hu7j3uI53vFnvPPh8fbxmWLWJtSsVisOHTqEBx54wPOcWCzG+eefjz179nh9T19fH/r6BlaW2Tz10973swzrOjTexcx4VieHwSkI+CCvAYIArEoKxYrE0BFTU/cEcepdmvnG2j7OSg1HuEYOm8OJCI0c7RbbiIvyk42uZI9OIUV5m+8zJKoGTa8uEomgNqihNaihDdXAEKGHIUIHtUENhUoOkZcxOEar46GasferPrsTxxvMWBpvwKaCscdxE0nEUIVp0VU3+nTvIpEIYTEhMCZEIHyUll/e6ljSYsGGrEiIRcBB91hU/XEsax0Zx7I2Cy7INEIiEsExbECHwbGEyNVCSRuihjZEC0OEDnqjHmq9Ckq1AogZuxvT8LoerulAargaG7IiIRGLcKx+4t+ZKqN+zISaSCRCaHQIIhPCYcyI8ZoEOtnYidLWbmzIjoRTELC7on1IGeOt3/G+N4d/T4+lx50Q8FbPHpvDa919rWdXnwObC5thsTkQrVPgvIwItPZY0dxl9dTT14SaxepAc7cVZW2jz+bkLVEL95hTp8UaUNpiQVKICu+fbMCy+BDP62qZBFE6JbaW1sIhCDD32VHY3IXsSK1fsZwtvP1P3tZ/XmOn1/2mz+5ER48Nq1PCUNTchZZu67gtV+Beh3PNaNtHuFqOpfGuGfVEIuBAtWnU74KJxHOux9Jb/KwOwesxp196hAZlrRaUt1lwekIIEgwqVA0bpiQ9QoMvi1vQ2WdH/5jYPXM4lt7O0a0Op9fjj6/nQGN9r8/J70sv24e3uA5uATSR66ERnzvHY+l127Q7vR5z/Dk/97qPz/FY6t3d420OJ5xOYHdl26jHm/EE8vxythj+P3mL53jHH3+uy/r12JxwCgLEAZqgIRBmbUKtpaUFDocDUVFDL2KjoqJQUFDg9T2PP/44Hn744Wmq4VDDL4IH83YxszTegCWxBq/LK6RiJIaq8MbRWk/m+0idGZcviMZX5W1DmqE7T91JXMkHY8244m32Km8X5QqZq8WTLxeG/QaP2yYIArpN3eg2daOxcuS+kH75Cpy5NmfE86PVsd9oSYL8xi7Mi9QiIUSFhs6xp4XPOjMDMpsdujAt9KFaRMSHw5gQAWN8GCLiwxEWHQKpzPU1+nZuHbq8xMBbHUtau1EyLHHWH0dvB90emwNikQgKqXjE60PGwBPc4yl1WNBYObL5dPKFS7HmnCUjnh+rrsOT9IMN/576X24d7KNsUxnL0yBdEA9dqBa6/ljGh3niGRYT6onleyfqXYNee9neipq7UdQ8+snhaOvXl+9NX2bN7Nf/nT5aPcdKYI1VTwBDLmYbOvtQ19GLaJ3Ck1Dz53t9rGPPeOrNfViVJMGiWD2au60jBjpWyyWwO51DLoi63WOlzcVjj7f/abT1P9p+82lhExZG67Ek1gC9Ugpzrx37q9tRbx69xeycjOUo+1pzt3XEd3ebxTbq/uRvPKd6mI1gGLx9eIsfRjnmwD3eWqRWgb2V7bA7BVSZepARoRmRUCts6oLZ3Uqm/+PmZCy9/FOD4+nt+OPrOdBY3+vOwEywPKOMd+zxtp2Odt7mjzm5XY4Sy8Hx8nbM8ef83Ns+Prw10VwwOJZtFhs+ymsc8vpox/R+3s57JWLR+OeXgut6J1CzdM4Ew7cPb/HEGMeffv5cl/UTBC8DWQbRrE2oTcQDDzyAe+65x/O32WxGQsL0jEkgEYlg9+Ok+HBNh9dJCQBAK5dCLBLhqpzYEe9TySRDLrhnUvaWZh7JBLvwDdbnnhFHI5egs8+3pJrTNv6gx/0cVt+X9ak8QcDROjOWxhnwacHY3T4f/M/d0Cl8+5oUTzKW/XFUyyQjEnMqmQROQfA6lbw/sfRnWV94+54azX3/vGtEd8HRSCbxvTXa+vXle9Of/WEydRyrnnC3eloQpYNWIYEIIkjEoiHbhD+fPdl6lrZ2Y1GMfsjg8P0sVgekYjEUUrFn29TIXfvLXDz2BOJ/6rU7cbDGhIM1rlkYF8XocU5aBN7KrR8y4Plgk12HM1Egjj2YQDy5XQ6VEaFFm8XqGRC6tKUb52caoR52Luntgnyyx7yZaCLbpa/nQGN9rwdqf5hJgvU/cR8f4M/5ubd9fE4eeyb5P3k77zUoZeOeX4pFmFPJNACQBOjf8ee6rN9M+8qctQm1iIgISCQSNDYOzYQ2NjYiOtr7IKgKhQIKRXAGQdbIJT7NnOSLbqsdTkHAm7l1Y7YwAgCNwr8ZHOnUopGPP1jueMx9dnT22ZEcpsbx+vGbRQPAmo2n4erz5kMQBPeP63aDIAiuO8SCAKlcCplChh65DHmTquFIJS3dWBClQ1qEetRlRCJXcstXWrl0xJhe/jD32dHVZ0dK+Mg4poSp0dTV5/WO75nnLcTX1vzap1j2yWU4MeEaTo6vXRQBQKOQos2PabWH87Z+ffne1PhVx8l/t3qrp0YuwZqUMHxe1IyGzj4IAM5JGzYtuZ+x9GcckOHyGrvQ2NmHBi9jW1hsDjR29mFpnAH7q0xQyyWeQX21ftRxttDKpQB8O9nzhdXhxNG6DiyIdl1kt1m8J9Tm4nG8P/EaSL7EU8tYeohEQGq4GjKxCNcuHrgQFItESIsYehzy9o3pz/fQbDGRWPpyDjTe9/pcjKV2CvZx3z53DsbSxxu7w/lzfn7K7OMTjOVYfDm/DNb+MJUC+T/5cl3WTyOXzLjk5Kxdu3K5HMuWLcMXX3yBK664AnDPQPLFF1/grrvuCnb1RgjXyAOWUOu1O1Ft6sGKxBAcqulAn90JpVSMSK1iRDP9cPXMmlaWZpZwtRxNXZMf3HF/VTvWpYbD5hBQ3mpBn8MJvUKKhdE6HKs3j0jaJceHIitx7PG8+tkcTuQNmu0pEAT3OBQrk0afNl0lOAGnExBLYLfZ8eRtz6PwQAmSFiQgc2kqMpa5fvqnsQ9Ty1Bn9q2p8mgOVJuwJiUMPTYnKtosEImALKMWKWFqfFbkvStEQkwIFiS7RtLP3ZGHZ3/4EpRa5ZA6JmbHQSKVwOEUcPJIDaa7B5lScELi/lCHw4E/f//vOLm7AInz4l0D/y9LReayVBgi9ACAcLVsyACk/vK2fn353lTYBpJ4+fuK8efbX4Bc6Z6cYFkaMpelIml+PCRSCQxKGSTuAVgDWc/+wYR77U4IAOIMSsTqlShyT1ShkUugdCd6nU4n/vKDl3B06wkkZsd66pixLBUh7rH1wtUyjDI3iE+sDifqO0dPIu0sb8Wq5DBcuyQWnb12lLVakBKuHhLL2UAQBDx/zys4sPkoErJih2yXoVGucePCNTKUTGJ4H7lEhAVROpS2WdDZa4dY7Pq71+4YMxmvsM6uWALAiw/8B1+9fwBxGdHIXJrm+S4Kj3Ft6+EaGTDJ3l0TiedsjOWrv34T297cjdi0qCHbZXhsGEQiEcLVvrX8HS7BoIJcIsYHeQ2wDmr9nB2pRUa4dtwLcIXVNuu6ML3++LvY8q/tiE6J9BwjM5enISJucrEc7xxovO91hW32xfKtJz/EJ//4AlFJEZ5jZNbyVBgTIlzjy04wlpM1G2P5/rOf4oPnPoUxwRXL/uN4VJJx0rH09/x8MKV99sXyk398gbf/9CEi4sKGnLtFp0S69/HAXxf7cn6ptNtnXSy3/Gs73vjdewiNDhlyTRGbFu3aLjWBi6Uv12X9wmZgbkMkCLN3cI433ngDN954I/72t7/hjDPOwFNPPYU333wTBQUFI8ZW88ZsNsNgMKCjowN6vX5K65rf2In9wwbiG81o00PfuDwBH5xsQHuPDVKxCEtiDUgMVUEhFaPX5kBFmwVHBk1DLzicED7Zi9WXLUfG0tRZtRPT5DkcDjz+zT/jwKajCI8LQ1y6a0aZmLQoxKREIjYjGtbwkDHHyPJHpFaORTF6GDWuVqBdVtfFdX5T54gxLd7a+BA0ShnOvHgpFp21AIvWzUNE3OgJtvdO1E86Ie1tv7ooOxJGrQJv5daNOKkofm8vjj/zIRaszkJCdhzeecr7TJpqvQrG+HB8//V7cDIAjVdi9UositEjTC2DAKC5qw9Has2jzmrz7uWPQA4BKy9ahoq8auTtKRqxjFQmgTZUi3VXn4nkOy5Bm2XyF5X+TGNf/ukhHP7925i/KgspOYl4648fel1OrpIjLDoEP3zrZ8hz+Hdn1Jf1O9735gfX/hZ6uQQ5a+ejprgOx3fkj/gciUwCbYgGKy9bjnn3XOl36y9f6rkkVo8soxYikQjVph5IxCL02Bw4UG1CYogK56S7EqjtjSZcG+NlClIAMoUUoVEh+NGbP0W+ePpOPhZG6xCjV+LHK+6H0uHAorXzkLNuPnLWzUN0cuSMPQ51my24IuRGr68pVHKExYbi9n/ehSKlZsKfIRWLsCIxFFE6hWu2K6eANosNR+o60OLejrzNaLX51qch7epBzrp5yFk7H4vWzUNMatSMjaXNasNFyuu9vqbUKBAaFYLvvfB9lOi9jxPrK1/iOdzndz0PobEdi86ajxz3thmXHj1jYykIAjbIr4PTS/dVpUYBg1GP2/5yGyoiI/wu+7yMCPTanCNm41ZIxbh6UQy+KG5BQ2ef120SALb95EX0VTRg0bqBWCZkxc7YWALAZfob0NM18saXUqOAIUKHW/70HVTFx0yo7PHOgcb6Xt/581fRnV81ZB9PnBc/o2N5TfStMDV1jHheoVZAH67FTb/7FurTkwLyWaOdb3jbNnc//DpMh0uwyB3LnHXzkDQ/HmKxPzOcT69vpdzhdQxhhUoOfbgO1z98LdpyMry2IvPFeNvmaPv4vt+9hZZdJ13H8LXzsGjdfCQvTJjRsbx5/t2oLhh5E16ukkMfpsXXH/gaOlcsmNBYe2Od9453fnnoqfdRv+UIFq6d54llyqJESCQztxXg7cvuRcmR8hHPy5Uy6MK0uOqeS2E9+7RRx04ejy/nw962zdNiDVgUO7V5G3/N6oQaAPzlL3/BE088gYaGBixZsgRPP/00VqxY4dN7pzOh1tVnxzvH6yf8ZTgR1dtPYPvPXgIARCZGYNXlp2PN11Zg4ZpsSKQzdwemwDC3deKqiJvHXOasb65D8t1fm9TA5f5qOlqGz777lxHPR6dEIm1xEuIyYhGfGYP4TNfvkEgDjtSZcXwSM0xOxBc/fAH1e71PcOJNzjkLseyJWyZ8YJmI1vxqbLrxT36955H8Z1DYOb2tNLbf+09Ubzvu8/KaMC2+vuXRUceUmgqmsgZ8dN3v/XrPr4/9CSV903sIXZsShtRwV1Knp7sXl+luGHN5sVSCm/f/ccSEAoESppbB7hRg7rUjTC3DeelG7Murw2PLfoLhTSGN8eFIW5KMuIyB/Ts+M8bT0iaY+nqtuET9zTGXEYlF+O7hpybdTd4f3Y0mvHfFoxCG7QvhsaFIPy0F8RkxiHPHMi4jBhFxYUG/2LH2WXG54UbYxxj/Uq6S49a9f/AMgj0detu78M4lD8M5bGKXsOgQpC9NQXxGrHvbdP1ExIcHPZY2qw23LrgHdaUNoy4TGmXAtz5/1DMO2nSwdvbg7YsfhqN3aOIyxKhHxrLUYft4LIwJwY+l3WbH7UvvRcXJ6lGX0YVpccvO346akJ2SevX04e2LH4ZtWKLPEKFDxrJU13bp3r/jM2MQmRgR9Itwh92BH656EEUHS0ddRqVT4c79f0DDGC2cA14vqx3vXPIw+kxDB0DXhWndsRy6XUYmzYxY/vTcX+PErtHPNxUqOe4+8hRqJ9kLwh9OuwPvXv4oepqHJk21IRpkLk8dca4elWQM+rWlw+HAzzc+hsOf5466jFQuxb0nnhnRo2sqCU4n3r/yMXTVDb15odarkLk8DQmZsYjPjEVcRjTiMmMRnWz0TNIVLA6HA7++8gns/fDQqMuIJWL8ovC5cSfhCrTLF0T7PCbzdJm1XT773XXXXTOyi+dwWoUU8SFKVJum78uw+O3dnsdNVS1475lNeO+ZTdCH67Dy0uVYdfnpWHz2fGgME7/jTjOXLlSLmNQo1JeNnHGlX/7OPJzzm2+OOftKoBW99ZXX5xvKm9BQPnLKZLVOhZQVGVjy6I0QTdMolNZWM+x1zZDIJHD4ONV1+dFyJOzOR9iZ2VNev36jxXIsr93+PJY+/h2IJNNzcWPr6Ia1ogFSmQR2H2PZ3daF+m25CF+7cMrr1699XwG0IRp0mXzfF167/Xksf+IWiKfpxEfoteK/P34RjaWNaKhoRlt9+7jvcdodyDRqkTtFCWmlVIIzk0KhkorRa3eiqKULlcfKkbMmGwX7imEblFRprmlFc83IPpNKtQKxGdGuE3P3BU9cZgziM2KgD9cFpJ7WPhuaqlrQWNGExopmNFQ0obGyGQ0VzWisaEJb/fgtyAWngMwIzZCW4FNN3W5Gzpps5O8thq1vIGHSWteO1rp27Bu2vEIlR1xGjCd+gxMb+nBdQBKXNmt/LAfi54qlK7atde0Y716ttceKjAg1DtVOXyyVrR1YtCYbeXuKYO0diGVbgwn7PzmC/TgyZHm5UuaKZUbMkMRlfGYMDBH6gMWypabNE7v+7bL/cWtt27izDy9cMw9ZkVrsrRz/+yBQ5C0mLFqdhbzdhejrGUg+mZrNOPDpURz49OiQ5WUKGeLSoz3bpeviMcZz0ywQsbTb7GiuaR11u2ypaR03lvNWZCDbqMWu7sC03PeFrKUDOSszkbe7EL3dA8mnjpZOHNx8DAc3Hxu6vFyK2PRoVxI9feh2GRoVEpBYOuyOQbF0b5uVrt+NFc1ormn12mpysMxlqcgyaqc1oSZrMWHRmRk4satgSEvEzrYuHN6Si8NbhiZaZHIpYtKiPPu459iTGYuw6MDFsqV2YB8fGssmNFWPH8vURUnIitROa0JN2mpGzumpOLGrABbzQPKpy9SNw58fx+HPh94klcokiEmNcu/jAzd5AnnTzOFwoLW2zb1/D2ybjZVNaKhoRnN1Kxz2sc8zk+bFIztSO60JNUl7JxYuTcHx7l50dwwknyzmHhz98gSOfjl0dGOJVIKY1EjX9pgePWgfj0V4bGhAbk44HA601rUPjWNFExrcx5+mqpZxYxmXEYOsSO20JtSidYoZl0zDXGihNhnT2UINAOrNvaOOgxRoeqUU68IV2PvhIXz13n4c+eK414tZsViEjGWpWHz2Qiw5dyEWrsmGSqOcljpS4AmCgMq8GhzdegJ7PjyII58fH/XCRiqX4rFNDyLxjEx8lD960i2QlFIRyv70Lnb+bw9svf7dTV/7+I1IOm/xlNVtsINPvoeC/+7w+32GlChc/NrPIJ6GZFVvexfevewROPr8b5Ww6tfXI/Wi5VNSr+GOPPsxTr7yhd/v08aF47L/3Q/xNNzxtHb24N3LfgNbt/8n/ivuvwYZV66cknoNl/uPz5D7wqd+vScsJgQvlf8V7xyvn1AXB39JxSJclRMDpUyCvp4+FOwvwfEd+Ti+Mw95e4qGXDD6QhemRWxaFBRqBSRSCSRSsfv30MdiiRgSietvsVQCiUQMc1vnkITZZE93pAop3jH/G28fr5/U2Hm+kohEuDInBmq5BNY+G4oOlCB3Rz5yd+Qhb3eh165rY9GFahCTFg2lxnssxZJBfw+LZWd7l18Js/FkLk/Dk7sfw9u5dbBNQyzFIuBrC2OgVUhh7bOh+FAZju/IQ+7OfJz8augFoy80BjVi06Oh0iqHxHIghqPEUipGl6nbr4TZWK7+yaX47u9vgN0p4O3cevRNQ6teEYDLF0bDoJTBZrWh+HC5Zx8/satgyAWjL9R6FeLSo6HSqQbF0Pt+PjyW3R0WvxJmY7nszgtx19O3wCkAb+XWTVmr3uEunR+FMLUcdpsdJUdcsczdmYeTuwrQ2e7fzU61TuXaLnVK7/EbK5Zmi18Js7FsuOVc/Phv3wMgwjsn6qetVW9/dzGH3YGSoxU4viMPx3fm48SuAphbfZs0q59Kq0RsejTUepV/sZSIYenq8SthNpZzr1+Le1+5EyKxGO+daEDnNLXqvTDLiGidEg6HA+W5Vcjtj+XOfJia/bsRotQoEJseDY1B7VMsBx+Lerp6/UqYjWXtVSvw89fuhkQqwQcnG2AK0Njm4zk/IwJxBhUcDgcqTlR79vHjO/K9dpsei1LtjmXI2LF0nRMNfa23u9evhNlYVly8FA+9/VNIZVJ8nN+I1gAMJeOLc9LCkRg6/sQF040JtWlMqAHAjrJWlE9DJrf/i7Bfd0c39n18GLve248Dm46MelEjkUqQvSIdS9wJtvkrMyFXzrzB/8jF6XSiMq8Gx7addB3stuf5dKDThWnxxBcPIW1xMgBgb2U7CpvHHwtrss5Ji0BiqAoA0FzTgqe+9wIOfZ7rUyswdVQILnn9Xsi1U5vwbSuowabvPAXB4XQNYBobiqhkI9R6NQ5sGtqCQaaQYuGaebCYLagpqkd3hwWn/eASLLjh3CmtIwDsfPBVVG456qmHVCZFb3efTxe6qnAdLvnvfVAYpvagZCprwCc3/HFEF6vRiMQiJGTFoa2+HV2mbiy67UIsuu3CKa0jAOz+zeso++gA4G7hE5VsRFRyJOpKGlBbXD9k2ahkIxIyY1FX1oiG8ibItCpc8t97oQpQS6rRdFa34KPrn/ArgZqSk4gXjv0RAHC83ozDtf6duE3EisQQZEd6j4XT6URrXTtqiupQU1SP2qI61BTXo7a4HvVlTZM6uZtq2hA13mz8B2QyGfIaO3HAxzFRJ2N5vAELor2fmwiCgNa6NtQU1bt/6lBbUo/aonrUlTYGLZYyuXRIq0RvTt94Gh55/z5IpBIUNXdhzzS0rFoSq8fiWO9jtgmCgNb6dtQWubbFGvd2WVNUj/rSBp9b1gZaiFGPqGQjIuLDsef9A0OSRWKxCD96/nu46NbzPM+VtnYHbEzUseRE67A0PsTra4IgoL3R5NkuB+/jdSUN424bU8UQoUNUciSMCeHY+9GhIeccIpEId/z5O7jiro2e5yraLNheNokZSHw0L1KLMxK9D8ItCAJMTR0D+3dxvSuWRfWoLWkY0mJ1OunDda5jZGIE9n1yZEQ9vvvEt3HNTy71/F1j6sEXJS1TXq9MowYrk8K8viYIAkzNZvf+PbBduuIavFjqwrSITjYiMsmIQ5uPodcy9Nrspkeuw/U/v9LTumu6GmakhauxJsX7uMaCIMDc2unZLmuK6lFb7IpjbXH9kBar00kXqkFkkhFRSRE4uvXkiJsk1//8Stz0yHWeWDZ19mFT4cheMYGWFKrC2Wmjj3HpimV/HOsHtsui4MVSrVchOiUS0cmROL4zH51tQ68Pr77nUtz2+295Wsq1dlvxcX7jlA9rFW9Q4tz0iKAPEeINE2rTnFDrtTvw/omGKb3zlR2pxYpRDtAA0NfT526um4ujW0+g4sTo40nIFDIsWJWJJefkYPE5C5B1ehpk8pnX1PJUMSSBtv0kcrfnoaNl9LtukYkRsHT2oGvQXU5dqAa//+IhpC9J8TxnczjxwckGdE3hXcTUMDXWpno/QJccK8dzP/on8nYXwjHGvpF++Qqc+eDXp6yOgtOJsKIqxEcbEJVshDEhAnKFa3t3Op24NvpWT7zDYkLx2Cc/9yQl+0/YqovrkSvI4JjCRLS4qR0J3d2ISTYiKtk4pPvRyw/9F/955O1xy0i+cCnWPPKtKauj0+HE5lueRmte1YjXwmJC0N7YAWHQBaJcKcNvN/8SOWvneU7YqorqkeuQwK5STFk9xS0dSDCbEe1OooUYB2K55dXt+P1NA+P9XXjTObj7b9/1jG1hs9rQWNGM/Mo21IVOboD1sQhOJz77/rNoPjpycNjRxGfG4MW8pzwnPE5BwCf5TaNObhEI0ToF1mcaJ3SyY7fZ0VDR7LrQ8SSIGlBTVIfm6sld2IZFhyAq2QhtiAb1ZY1orGyGzY+7/CqdEv9r/AcUStd2KAgCPi1sRlPX1HVlMmrk2JAdCfEEYumwO9BQ0TRwgu6+4KkpqkdT1eQubEOjDIhKjkR0shEGox5d7d2oKqxF2dGKMb+7+512Xg4e/fB+z406QRCwpah5zJlkJytMLcPF2VEQT2DIAIfdgaaqFs8FT3+yra64Ho2VLZNqqRcSaUBUUoQrnkmu75+oZKPnAntwb4GfnfdrHN16EnAn/R/874+x8tKhrYwFQcCXJS2o6Zi6bmEhSikumR8NyURi6eiPZf1A8tK9XTZWNE8qlv0Js6hkoyeW/d/pUUkRUGlVnmUfvOQx7P/EdXNMppDh/n/9AOuuHtnKeHtpCyrap65bmE4hxWXzoyCdQIt2h8OB5upWz/7tSbgV1aOxomlSLfX6E2bRyUZEJfVvk67fUUlGqHUDsfzNNX/AzrddHc+lMgl++tKdOO+ba0eUuau8FaWtU9eYQCOX4PIF0ZBNIJZOpxMtNa1Dbk70J4Ebypsm1bqsP2Hm2g4H4ti/j2v0Azc1f3fjM/j8X66eEWKJGD/+2/ew4eaRN2f3VLahqHnqhmlRycS4fEEMFNIJxrK2zZO0HEgQ1aO+rHFysQzVjNjHPdtmUsSQ4Yue+t7f8PHfPwfcCfO7nrkFl90x8ubsgep25DVOXWMChVSMKxZEe2Zm90f/DciR+3jdpG9AakM0I/bxqCSjJ57akIFYPnf3P/Hu0594/v7eH76Nq++5dESZh2s7pnSsa7lEhMsXuFrsz0RMqE1zQg0AGjp7saWoeUq630Rq5bggw+jXAbq9qQO5207iyJcncGzbCdQU1Y+6rFKjwMI12VhyTg6WnLsQ6aclB31Az7nM3wSaxqBGzrp5WHzWAiw5dyHSFifjlYfewH8edSVYdKEa/P7zh5B+WsqI97Z2W7G5sGlKut+EqmTYkBUJ+TgHaEEQUHigBC//8r/I3ZHn9aJ35S+vQ9qlZwS8jgCwMikUmUbtqK//8xev47XH3kHivDj838c/R3RypNfl2i1WfHS8Hs4p6PppUEqxITsSylG6QpqaO3DbwnvQ0dKJi793PhorW3Bs64khYwb1O/3eq5B19eqA1xEADvzhHRS+uQtwd51YuCYbi85agNPOXYiMZan45WW/w/5PDgPuAcof3/QgFq2bP6Kcjl4bNhU0oW8KbkLoFFJszI6EapSTnc72Lty68B60N5jwjQe+NuTu5nBTeWJ2+C8fIe/VL0c8Hx4binO/uRY73tyNxsqBRElUkhGvlv5lxDgbnX12bCpoRI8t8LHUyCXYmB0JjTzw48k57A7Xj8MJp90Bh9058Nygx06H0/O33eaAxqBGbVEd3v7zx8jbXThmEk0sESNjaQrMbV2oLx3oAi9XyvBm49+h0Q0da7TbasemgqYp6cqklrliqVVMQSwdAzEbLZauODqGxFKtVyEqyYiu9i7senc/vnp3H3K353m9cI+IC8M5162GqdmMLa9u9zw/78wM/O6zXw5JbgCAxerApoLGKbmho5SKsTE7Enpl4G8EjhfLgTgOi6VOOSJhNp7tb+7Go9f9CSFGPR5+/z7MPzPT63K9Ngc2FTRNyWQPCokYG7Ijp2T8mrFiOXi/Hh5LlVY5ImE2nt0fHMBDV/weujAtfv3Oz7wedwCgz+7Ep4VNME3BZA8yiQgbsiIRpg78jbdRYznO96dCrRiRMBvPoS3HcP+Fj0KtV+FX//sJll3gfVgOq8OJzYVNAZlhfDipWIT1mUYYtYG/8eZ0OmG3OYbG0jH+Pi9XykYkzMZzfGc+fnL2Q1BqFHjw9bux4uJlXpezOZzYUtTs9wzjvpCIRbggw4go3TTEctB+PdY+L1PIRiTMxlN4oAQ/XPUg5AoZ7n31B1h7pffJCh1O1w2dxim4OSYWAednGBGjD3yvmv5YejvGjLXPS+VSRCUZhyTMxlOWW4k7T78PIrEYP33pDpz7jTVel3M4BXxR0ox6c+BjKRIB56ZHIN7g+3fTdGNCLQgJNQCo7ejB1tLWgI7DYtTIcX6GcdykxXhaaltxdOtJ10CJW094ncq5n1qvQtqSZKQsTETywkSk5CQieUGCXzsrDejp6kFVfi3y9xX7nUBbfPYCpC5OGpHgbGtox0/P+TUcdgd+8cY9yFiaOmp5TZ19+LykGTZH4LbLUJUMy3QyxCb4PyhpRV41/v3w/7Dvk8OebsoiiRirfvUNpGz0frIxUWckhGBe1Njd9gRBQF1pA6KTI8eczagyvwa/uvFZrH78poB2qzQopbgg0zhu0sLS2QOL2YKIuIEWgdWFtfj3I29hz4cH0dPpbsEgEuHMn1+D9MvPDFgdAeD43zZBXtuMRe7tMmNpyogZi7pMXbh7zS/R3WHB/f/+IRaftWDU8tosVmwpag5oy16dQor1mcZxkxY93b3obOtCZMLoTfbh3jb2VZkC3nX62Auf4vg/PgPcXWJTchKx/sazcen313ta+dSV1ePG9B8CAMJjw/DvimchlXr/v0w9NnxW1BTQpJpGLsH6zEjolcGf56jX0ovP/7UTH/3tM5QfrxrzjrhEJsG8MzJww0NXY8m5ORCLxTA1m3BN1G2Ae5zJ12r+htAI7+cHHb02bClqDmhSTS2TYH2mEYYZNOhufVkjdr69F7ve3Yf8vcVel4mIC8Oar63AmitXYOHabEgkEjgcDtwy727UljQgJScRf9z2MHSh3m9YdPbZ8VlRE7r6AhdLpVSM9ZlGhE5B0iIYmqqaoY/QQ6ke+2K322rHZ4XNAU2qKaRiXJBhRLhmjsSyugW6MO24SU2L1YEtRU0BHWtJLhHhvAwjIqcgARQMLbWtUOvV4ybiem0ObClqRlsAE5QysQjnZkQMGeJmNmutb4dSLR83edRnd+Lz4uaAzkYrFYtwTloEYg1zI5btjSZI5dJRjzn9rA4nvihuCWiLc4lIhLPTwhEfMnMTQP4wNXdALBaPO0mUzeHE1pKWgLY4F4uAdanhSJqB46YNxoRakBJqANDc1Yed5W0BGWAyLVyNFYmhE2ruPJ768kYc23oSR7e6EmytdeOPd2JMCHcl2PqTbAsTkDgv3tN97lTX2d6FqvxaVObVoCqvGlUFrsfjdcfxJYE2GqfT6dPMMG0WK3aWtwXkrmxSqAqf3v13HPr4MFQ6JW773bew/sazoZhAF7768ka88bv3sP1/e9BlsiDnlguQc/MFkx60Xi4RYWVSGJLDAvNl3W224AcrHkB1YR30yZHY+JfvQxbpfbwZf8QblFidHDahpuPDNVU1480n3seXr3+FzrYuLPj2uVj0vQ2QTHa2SpsdaRInVi5N9nn6dF+3S3OvDTvK2gLSZTFOr8TqlLBRW6ZNlCAIyGvswuFa06RbIFu7enHwyXdRveUI5q3IxCW3r8dZ16wcNVa1pfUo3FuCs7+xetx4dvbZsbOsNSB3uKN1CqxJCZuSlmm+cDqd2PfJEXz2ylYc23YSna1jJzTlShmWnr8I1//iKmSfnu41yZ+3pwhfvr4Ltzz+Dag0Y58Qd1vt2FXeFpCZ7CK1CqxNCZuSlmn+6J/cZtc7+7Dznb0oO1bpdbnYtCisufJMrL1qBTKXp3nd7lrr23FiZz7OuHipT8mLXRWtAbnDbdTIsSYlfEYkeYOhx+bA7oq2gHT/DFfLsDY1HIYpaOU3G/TZHfiqoh3VAZgVMFQlw9rUMISq5kZi0l9WuxN7KtsC0pXWoJRiXWr4lLTymw1sDif2VrWjLABdafUKKdamhiFCMzeSvP6yO5zYX21Cccvku9JqFRKsTQmfMwlzfzmcAg5UB+bmskYuwZqUsFmRMGdCLYgJNbh34sO1HchvmtiGp5ZJsDIpdNqy4IIgoKaoztWCbesJnPyqwKcEG9xdauIyYpCSk+hu0ZaAlJxERKdEzsluo/1jalXl1aAqvwaVeTWozK9BVV4N2hp8G9BaY1Bj0VnzPQm0lEWJ0xIrh1PAsXozTjSYMZFvCIVUjDMTQ5EcpsbXwm5Cl2ngIBVi1OOyOzbg0jvWI8Q4sXGnWmpb8f5zm7FnWx4W3HkJwjLjJlRO1dZcHPj9OwgL03haV7oSwImIS4/2OSnUTxAEPHz1H/DVu/sB91TnT+56BCVmK3LrzRNKssglYpyRGILUMHXABuI0t3a6krn5NSg8UIojXx5Hr0SClb/4OsLnJ06ozJpdJ7H/t28hRKf0xDBlYSKScxIRnxHjdyy9cQoCTjZ04mhdx4RiKZOIcHpCCNLDNYGLZVsnqvJrUZXn2serCmrQ0tGDrFsvhHHRyK7Vvmg8VILe3SdxxS3nYNG60VvuTYZTEJDf2IUjdR0TaiktFYuwPD4EmcbAxdJXJUfL8dHzn+Hw57loqGgeMhafN2q9CquvOAPX/uxyJM2PD3h9BUFAYXMXDtV0wD7BWC6NMyA7Uhu0wXYFQUDRoTLsemcfdr2zd9ShH1JyEj0t0VJyEqcklsUt3ThYY5pQS2mJSIQlcXrMj9JNaPy5uUQQBJS2WnCguh3WCcRSLAIWxxiwMFo3ofHn5hJBEFDeZsH+atOEhh8QiYBF0XrkxOgnNP7cXFPRZsG+qvYJtToXAVgQrcOSWANjCaDK1IO9lW0TanUuAjAvSovT4gyQ+nBjc66r7ejB7op2WCY4EU12pBZL4wxT0rhltqk392J3RduEh3LIjNBgWUII5LMklkyoBTmh1q+zz46i5i4Ut3T7dLCO0MiRbdQiOUwd9AOKua0TFSeqUX68ChUnqlB+ogoVJ6p9njpdoZIjMsmIsOgQhEYZEBJpQGhUyMDf7schkfoZMyGC3WZHZ1sXOlo60dFihrm1C+YWMzpaOtFU2expcebPNN0agxqJ8+KQNC8eKTlJWHTW/GlLoI2m22pHUXM3ipq7fDrxCVXJkB2pRUqY2nNA+cWlj2Pfx4dHLCtXyrDh5nPx3SdumFCLtX7tTSZ8+flJVPXYEZqTDNE4JwX2XisqNh9G0du70VZQM+pyMoUM0clGhES5tsfQSANCo0Ncj6MMQ7bP/paX//vjh3jhZ68C7kE/nz3wW8SmRQPu1hfFLV0obO5Gjw8H6xClFFmROqSFq30+ODvsDpjbumBu7YS5f9ts6URHSyeaq1s82+Wo03SLRIhZkYnMq1Yjbs18iMf5XEefDRVbjqDord1eJx/oJ5NLEZVsRGhUCEKiDAiLGohjiCeWrr99mVW4x+ZAcYtru/Slu51BKUWWUYu0cI3PXeIdDodnH+9s7XTv650wt5jRXNOKqvwaVOXXjpkcjz49A5lXrUb8ugXjtqR02uywVTRi1eJ4LJgXN22JlV6bAyUt3Shs7vLpxEevkCLTqEV6hGZCgxZPREtdGz7+2xbs+fAgqvJrfJpQwBChwwU3noVLv3+hZx+can12B0paLChs7vKp5blWIUGWO5ajjYk4lay9Vpz4qhD7PjqEXe/uG7WFdNbpaVhz5ZlY87UzEJ8ZOz11sztR0tqNwqYun7ouauQDsQx0y9PZzupwoqy1GwVNXejwoeuiWiZBplGDTKOWsRzG5nCirM2CwqYutPvQil8lEyMzQosMoyZorXhnKpvDiXJ3LH3pBqqUipFh1CIzQhP0Vrwzjd3pREVbDwqaunxqxa+QipERoUGWUctYDuNwCqhod22XvrTiV0jESI/QINOomZKxOmczh1NAlcm1XfrSpVYmESE9XIOsSO2saxHNhNoMSaj1czgFtFqsaO22otViRZ/dCafgGihSr5AiXCNHuFo+47sxCIKA5prWgUTbySqUH69CVX7tpKan1oVqPAm24ck3tV4FkVgMsVgEkVgEsVjs/i0CRCL382O/buuzw9w6cOHc0dKJjlZXUmLg+c4hLa78ZYjQIXF+PJLmxSNxXjyS5scjcX48wmNCZ+RUwADg7N8uLTa0WaxoauxA/v4SOKw2REcacM5FSxDh3i6H/w+bX96KP9z83Khlf+fRb+D6n18ZkHo2t3Ri765CFBU3wAIRJAoZ4BRg7e5Fe1Et2gpq0JpXBVt3YAfN1BjU0IZo0FTV7GnRd/4N65Czdj60Ieoh251ILEafTIo+uRy9MikcYjEEkQhiAHI4oREEaOCECoDYvX3arXaYW7vQ4d4mze4kbv+22f9cZ/vEt0tdqGbIdhmWEoWWrj5UN5jQ7QQkSjngFGDr7kV7cR1aC2rQerIKtu7Aziin1qs8CbbhyTdNiAZiydBYWmVS9Mpl6JXJhsVSgEZwQiM4oRINiqXNMSjhOGw/H5QY72rvntSsc4MpQjSIWJCIsOwEhKRFQ6pSQCqXQKNWIDEuFKctT4FRq5y2BJU3TkFAe4/Nc+yxWB3uYw+glkkRrpEhXC1HqEo25d9T5SeqsPW1XTiy9Tiq8mph6fSte1DSgnhcfOsFWHv1iiHjB043oT+WFitau23ottrhFFwtfjRyCcLVcoRrpieWw+tVlV+DQ5/l4uBnR5G7PQ99PSMvGEQiERauzcbaK8/E6itOR2SicdrqOJwgCDD12NBqccWz22qHw+mKpbo/lmo5QtWyU75F2ngEQUBHrx2t3Va0DIulSibxnF+GMZbj8sTSfb7eZXXA4RQ8sQxTyxGudn1nnuqt+8YjCALMfXbPsaezbyCWSpnEE8cwtTzoDQhmA3OvDS3drvP1zj77QCylEoS5j+PhjKVPOvvsrlh2W2EeFEuFVOyJY7iGsfRFV38sLVaYe12xFLljGeaJpWzWtpRkQm2GJdTmOofdgdqSBldLtuNVqDhZjYoTVWipbfMMOj9XhMeGupJl2a6EWdL8eCTOi5twN8eZpKGiCTek3gkAWHv1mfjVmz8ZddnqwlrcPO/uUV9/+N17sery0wNex56uHhz49CgObDqCPR8eHHNyh+FEYhEkUgkEQYBjgk2/Z6rQKAOS5scjIdu1Tfb/hEQaRr2477X04eDmo9j/yRHs/egg2htHaeHmhSeWTmFS03zPRDL3nV2b1Q6McyRVaZVIPy0FZ12zEhfcdDbUfsxKN5f1Wnqx46192PvhQRQdLEVLbSscPnYDEotFWHLeQpx97Wqsuvx0GEaZPOBUZm7txOHPc3Hos2M4tCUXzTWtXpeTSCU47byFWHvlmVh52XKERk1+3EciIiKiuY4JNSbUZoye7l6YGjvQ1mBCe6MJ7Y0d7r/b0d7UgfbGDrS7XwtW8k0XqoE+Qg9DhA76cB30EToYwnVDnguNDkFidtycnunUZrXhIuX1AIB5Z2bg6d2PjbqsIAi4yngzOtuGjhMolopx7z/vwnnfXDvl9RUEARUnq3Fw8zEc+PQIcrfn+ZXcEYlE0IVpEJUUidj0aITHhMBmdcDUZEJbgwnlJ6ph8bGL81TQhmigD9cObIcROhjC9dCH6zx/h0aFICErdtxZesYjCAKqCmpxaPMxHNh8BEe/PAG7H0lHkQjQhmoRlWxEbGoUIuLDYbfaPfu868cEi3nygxZPhMagdsdMD324FoYIPRx2BxqrWtBc1QJTUwesveO3spXKpUjMjsOKS5biku9eENRWPjNJydFyfPnaLuRuP4nqwjq/13NotAErLlqG5esXY/mFi8edDe1UY7fZkb+3GAc3H8WhLcdQdLBs1JaW4bGhWLZ+MZZdsBinb1gy7mxoRERERDQUE2pMqM1KPV09Qy6+2xtcSTZBEOB0ChCcApxOJ4TBj4X+xwIE92uex4JrtjiJVALD4KREhB76/uRZmDYgA6vPFddE3wpTUweM8eF4rer5MZd98JLHsP+TIyOe/8OXv8bis6dm0PWx9Fr6cHxHHg58ehQHPzuK6oI6v8sQS8QwGPXQh2pRme8ai02ulOHh9++DWqfyJId7OntGbJd2qx3vP/vpkCTjikuWIXl+/MB2KQwsL5GIRyZy3X/rwrSQTnZ2zkno6+nD8Z0FOLjZFcvKk6OPSzcascQ1HXdcejSyTk/DsgsXY97KLHS3dw9JpFvMI2PZv4+7nnd638eHxVIXrhuyn/cnHhVaJfL3FOHwllwUHShFTUkd2hs64HSM32JKY1AjITsWp52Tg7OvW4XURckTjOjcYLfbcXxHPg5tyUXh/hLUFNejrb7dp1gOJlNIseTcHCxfvxjL1i9GYvb0jS83W9SVNuDg5mM4tOUYjn55YtQusnKlDIvOmo9lFyzG8guXTMkEDURERESnEibUmFAjmpA7lt+L4sPlEEvE+NjynzGTOv/7wwd44d5/AQCikoxorGwGAEQmRuCFY38IeiuTpqpmHNx8DAc/O4rDnx/3eUINb5QaJSITwpGyyDWxxMpLl8MYP3Q8p/88+jZe/tV/hzyXs24entz2mwl/7kzRXNOKQ58dw4HNR3Hk89xJjeum1CgQEReOlEWJWLxuPlZetjxgLb3KT1Rh/yeHcXJ3IaryatBS144+i28tXyVSCYwJ4cg6PR0rL1uO1VecDqV65k/rPVUq82tcsfyqEJV51ZPuwp+2JBnLLnAl0BauyfZM+kEupuYOnNhV4OnGWV/WOOqyKTmJnmTkwjXZk5oAhoiIiIiGYkKNCTWiCXnk609ix//2AABeyn8KCVlxoy7ba+nDy794HQajAV+7+yI8eNFjyN2eBwC44Ntn4d6X75q2eo/HYXcgf5+7y9Rnx1B4oHTSg9NLpGLowrQIjw1DaFQIDn+RC6eXcaL+WfDnaZtFbzo4HA4UHijFIXeysmBfMZzOycVSLOmPZShiU6ORkpOA7DMzsGBVNjR69ZBl7XY7yo5WoGB/CQr2l6AstxKNlc3oNln8WqfaEA0S58dhyTk5OPf6NUiaFz+p/2E2cjqdKMutRN6eIhQdLEXp0Qo0Vjajy9QNYZLrNDTK4Ol6uPT8HIRFhwas3rOd0+lEdUEtTu4uwsndBcjbXYiaovpRlw8x6rH0gkWuWF6wCBGxYdNaXyIiIqJTCRNqTKgRTcgrD72Bfz/yFgDg1+/8DKuvOMPn9zZWNuO7i37i6Zr0q//9BGuvOnPK6joZ/YN6H9x8DLk78sZsDTJZMamRWHv1SmQtT0POunkIjZxbA4N3tnfh8OfHcXDzUeTuyENdSUNgP0AE1+x0IpGnG6g/JDJXl++49GhkLEvD0vNzcNq5CyFXygNbzxmqqaoZJ/cUofhQGaoLatFQ0YT2xg50d1hgt9oD9jkyuRQL185zdz1cjJScRIhn6cxOgdbT3YuiA6U4ubsQJ3cXIH9P0ZitPKUyCRaszva0QktbksxYEhEREU0TJtSYUCOakK3//QqPXf8UAODm/7se33jga369f8ur2/H7m/4CANCH6/BC7h8RHjPzW6a01rdj+5u78cLPXvV5NsKJEolFUKjkUGmV0IZoYDDqER4bhsjECMSmRSMhKxZJCxMQMktnN2xvNOHEV4U4+VUBTn5VgOLD5dM2E6hYIoZKq0JEfBgylqZg5eXLkbNm7iUxAcDS1YOaglrUFjegrrwRzVUtaK1rR3ujCa117ehs70Jfj3XcmUonSqaQIXN5KhaszMLicxYiZ908qDSnbhfZwZprWpG3uxAnvipA3p4ilB6tGHMfkMmlyFiWivkrs7D47AVYfPZ8qDhjLBEREVFQBG8kayKa1RLnDXTxrCrwfyD6829Yhz0fHsDOt/fB3NqJP976V/zfRw/M+EGyQ6MM2P7mbk8y7aLbzsfZX1+FE7sKcHJ3IfL3FI06KLi/BKeA3u4+9Hb3ob2xA9WFo0+eIJFJoFDJoTGooQvVQqVVQqVXQaNXQ2NQQxuqgT5MC12YFgajAaGRehgi9QiPCQ34+F9OpxMWswUdzZ0wt3Wis70L3e0WdLZ3oavDAou5B5YOi2sm36YOmFs70dXRDZlSCqFH8Hvg+gnV0eFEd0c3uju6UXmyGp//a4fntf5YqvVq6EI1UOtUUOlVUOtU0IZooA3VQBeicU0OYTQgJEKHkGjD1MaytRPmlkGxNHWjy9TtiaWp2Yz2BhPMbZ3oMlnQ29WLvl4rHH7MwDoWsUQMiVQMp0MYN+kZEmnAgtVZWLAqGwtWZSJ9aSrHQXN3Jy/LrcTJrwpxck8h8nYXoqmqZcz3hBj1mL8qCwtWZWH+qixkLks9ZVpMEhEREc10TKgR0YTEZ8ZAJBJBEARUF9T6/X6RSIQf/fW7OLGrAO2NHTiw6Qg+fuFzXPK9C6akvoGy+Z9bkbenCACQkBWLO566CQqVAqedmwO4xw0rP17lSbCd3FWA5prWsQsVuSYz0IWoIVPI0dvdi57OXvT29Pk8PpXD5oDF1gOLuQfN1eN8nrcqiEQQiUXux+5KDf8lGvy6+1kRAEGAw+6cUDfLQBOJRDBE6KAJ0bgSkhZ3LC0Ti2XLeOtulDpMJpZOhxNOx/TGUiwRQ6lRQq1TQqFWQCwWoa/HiraGdtitDnedRiY6RSIRkhcmeBI+C1ZlISY1asYnxqdal6kbZbmVKDtWibLcSpQfr0T58SpXS8AxJC8YiOX8VVmIS48+5WNJRERENFOxyye7fBJN2A1pd6KhvAlqnQrvmV6Z0IXfvk8O4xeXPA4A0BjUeLnoaYQYDVNQ28nraDHjO9k/QmdbFwDgiS8ewpJzFo77vqaqZpzYVeDp3liWW+nT50XEhSElJxER8eFQapUQCQK6zT1orWtDe6OrZZfF3IO+HmtAx7gKNolMAoVSDqVWCW2IGvowHUKjQxARFwq1e+KBjmYz8vcVozy30qeJDsJjQ12xjHPHEoCl89SIpVwpc3UbNmigD9fBYNRDoZFDBBEcDic62ztRdbJ2/MQvAJVWiXlnZmD+SnfS58yMoM/SG0wOhwN1JQ2exFn/z3gtzwBAqVYge0U6FqzKxvxVWZh3ZgZ0odppqTcRERERTR4TakyoEU3Yg5c8hv2fHAEAvFb1PIzx4RMq54mbn8VnL28DAGy85Tzc8/fvB7SegfLkbc9j04tfAADOvX4NHvj3jyZUzpEvj+Pe838DAIhNj4ZSrUBlXo1P44eptEqkLk5C6qJkpC9JRtqSZCQvTIBCpYC5rROVeTWoKapHR1OHq1tgu7trYGcPesw96OnuRV93H/p6bbD1WmHrs8Nus8Nhd8LpdLdAGnRUEIb+MSqRWASxWOTuGiiBRCaBVCaFTC6FTCGDXCmDXCWHQiWHUqOAUq1ESKQeEQnhiE2JQlxGNOIyY0fM1DmebrMFJUfKUXq0AqXHKlB6tAKVJ6th96Gro1KjQOqiJKQtTkbqYlcsU3ISoVQPjaW5xQxzWxe62rvR3WFBt9mCHnMPei2u7kEygN8AAC2/SURBVLh9PVbY+myw9dlgtwYgliIRxJJBsZRKIJUPi6VSDoXaFUuFSoGQSD2MiRGITo5EXEYMErJcsTS3daI8twqlxypQnluJ0txKVJ6shrXXNm58RCIR4jKikbEs1dV9c3UWUhYmQiKVjPveuaizvcvV2qw/nscrUXGietxWZ3DHMiYtCpmDYpm6KOmUjSURERHRXMCEGhNqRBP2t5++iree/BAA8NvNv8CyCxZPqJz2RhNuyvohLOYeiEQiPLPvcWQtTwtwbScnb28RfrTqQQCAWq/CS/l/nvAkCptf3oo/3PwcAOB7f/g2rr7nUlj7bKjKr3ElhgYlh7o7LOOWJxKJYEwIR2x6NOLSohGb7vqJS49GTJorYXcqsVltqMqvRenRCpQdG4jlWLMlDmaMD/fELzY9ZlAso2bkYPoOuwNN1S2oL21EfVkj6kobUXGyCmXHKtFS2+ZTGRqDGqmLkgZ+FicheWHiKbftOBwONFe3or6sEfWljagrbUBlXg1Kj1X43JVarVchdVESUnKSkLY4CSmLkpCyMIGTBxARERHNMRxDjYgmbPDEBNUFdRNOqIVGheCGX12Dv/30VQiCgOd+9BL+tPMRiMXiANZ24hx2B56+4++ev2/6zXWTmpG04kS153HSggQAgFwhQ/qSFKQvSfG8JggCGiubPUm2slzX74aK5iHlCYKApqoWNFW14OiXJ0Z8XkRcmCvJltafJIpGXEYMYtOi5uRFvkwuQ9riZKQtTvY8JwgCmqtbUDIsYdlQ3jTi/c01rWiuacWxbSdHvBYeGzoocRkzKPEWDbVu6mLZ09WDOnfCrD/RU1/ehPrSBjRWtvg8O2p/q7PUxclIzUlyt3ZMQmRixCkzVldPdy8a3IlHT0zLGlBX2oimymafWjdiUKuzNHeL0f5EZFSS8ZSJJREREdGpjAk1IpqwxHnxnsdV+f7P9DnY5XdtwCf/+ALVBbXI21OEL/6zExfccFYAajl5Hzy3GaVHKwAAaUuScdkdF06qvMq8gYRaysKEUZcTiUSITo5EdHIkVl9xhuf5/q5npUcrUHK0HNX5tagtafCM7TZcS20bWmrbkLs9b8RrYdEhnhZtsWmun7CYEIRFhyAsJhRqnWpOJAdEIhEiE42ITDRi1WWne57v7uhGWW6VO2lZjoq8GtSVNMDc2um1nNa6drTWteP4jvwRr4VGGQZaB6bFICY1EuGxYZ54qvXqUWMpCALaGkyoL20YlORxJ87KmmBq6vD7fz5VW50JgoD2RpMrjv2t9spccawvbUB7o/+xZKszIiIiIhqOXT7Z5ZNowrpM3fha2E0AgOwz0vHM3scnVd7Bz47hgQ2PAu5Ezz8Ln57SVj++aK1vx83zfgSLuQcA8OevHsX8lVmTKvP6pO+juboVGoMa77a9HLCElbmtE/WljagtrkdtSQPqShtQV9KA2uJ6dLR4TxCNR6lWIDQ6BKHRIQiPCUFolCvR1p9w6/8dYtTPqfGgOtu7XC2Y3PGrK21wxbSkYULJLQCQyqVQaZWQK2WeWNltdvRZrOjp7B0Yd80PKq0SMWlRiEmNQmxqFGLSohGTGoWErNg51erM4XDA3NKJ9sYOmJo60N7YgfZGk+t3kwmmJjNM7r9NTR0+tzIbTKlRIDYtGjGpkYhJdcUxJi0K8ZkxiE6OnDOxJCIiIqLAYAs1IpowbYgGifPiUJVfi+LD5ei19E2q9cvy9Yux6vLTsfv9A2hrMOE/j76N2373rYDW2V8v/OxVTzJt4y3nTTqZ1m22eMZiSlqQENCLdH2YDvowHbJOTx/xWpepeyDBVtKA2pJ61LkTRGO12Om19HlaS41FLBbBYNS7E2+hriRcpAEqnQoqrRJqnQoqnQpqnRIqrdL9WAWlVgm1Tgm5Uj6jEha6UC2ylmuRtjgJvd196O3udf229MHU1IHa4gY0lDeiobwJjVUtaKs3obOtc8zB/u1W+6itCMeiUMmhC9PCYNQjLDoUEfFhiEoyIjYtChFx4VDphsZ3psWyn8PuQG93L3q6+4bG1P24y2SBqdHkSpgNSpqZmswwt5h9ms11PGExoYhJjXQlzlJcCbNYd0IyJNIwI+NGRERERDMTE2pENCkLVmWjKr8WDrsDhQdKsPisBZMq7/t/vBEHPj0KW58N7zz1ETbeci7iM2MDVl9/FOwvxpev7QIA6MN1uPW335x0mcWHyjyPUxaM3t0z0LQhGmQuS0PmspGTPVg6e1wtsIob0FTZjLYGE9oa2l2/69vR3mAad0B/p1NwJ0A6UHas0u/6iSXiQYm3oUk3lVYJhcqdJBKJ4Po17DH6n3P9Frlfw6DH/cs5HE53cqwXfRbriMTO4McTaekUaH09VvS5u+2WomLc5QfHsj9hOTixGchYOp2CK2YW7/Hrf9xn6YPNap/SOIklYoQY9QiJMiA8NszVYs/dyizG/Xiud3clIiIiounDhBoRTcqC1VnY9OIXAIATuwomnVCLSY3CNT+5FK899g7sNgf+9rNX8cj79weotv55+VdveB7f9JuvQx+um3SZgwe6X7Ame9LlBYJapxoxIcJw1l4r2hs7PEm2wcm21gbX77Z6E9oaTD4PkD+Y0+FEd4fFp1lNZzqZQobQKIP7JwQhkQaERA78rQvVQCwVw2F3oq+nD+0NHa74uROZ7Q0mtLpjO5GE3lyMpSd+kQaERIW4fw+OsR76cN2MmciEiIiIiOY+JtSIaFIWDkoKndxdGJAyr3vga/jslW1oqW3D3g8PofhwGTKWpgakbF+d2JWPQ58dAwBEJxux4ZZzA1Ju7o6BiQEWnzU/IGVOB7lSjqgkI6KSjGMu53Q60dXejdb6dphbOmHp7EFPZw96unph6exFT2cPLJ096O3qhaWrBz2dve7Xetyv9aK3y/XcdA/xKZVJoFAroNQooNQo3b+HPVa7H7uXU+vVnuRZSFQIQqMMAZvIQRAEdLZ1oa3BhI5msytGXb1D4uSJW1f/a70D8e0ciO90x1IilXiPn0YJpVru/j309f5YDiQfDWNO5EBEREREFExMqBHRpMSmRSMk0gBTUwfydhfC6XROupWISqPENx64Es/c9Q8AwH/+7238+u2fBajGvhncOu1bv7oGMrls0mVae63I31sMuFviRSaOnZyajcRiMfThukm35nM6neiz9HkScdYeKwRBcCWGBHgee/JEg/52LTPyMdxJKrFY5DVhJpXNrEOiSCQKSCwFQUCvpc+TiJtsLN2LeI1lf0IyEPsLEREREdFMNrOuHoho1hGJRFi4Jhu73tmH7g4LKk9WIyUnadLlbrj5HPzn/95GW307vnp3P8pPVCFlYWJA6jyeI18e93TNjM+MwfnfWheQcvP3FsPW5xq0fja1TgsGsVgMlVYFlVaFsOhg12Z2E4lEUGmUUGmUjCURERERUYBwsBEimrQFqwZmvjzxVWC6fcqVclz708s8f7/22DsBKXc8giDg5V/+1/P3Db+6BhKpJCBlDx4/bdHZkxtrjoiIiIiIiIKHCTUimrQFqweNo/ZVQcDKvei758MQ4erutv2N3agurA1Y2aM58OlR5O0pAgAkzY/HWV9fFbCyZ+v4aURERERERDQUE2pENGnppyVDoZIDAU6oqTRKXH3PpYC75djrv303YGV7IwgCXv7VQOu0Gx/+OiSSwLROs/ZaPYm66JTIOTl+GhERERER0amCCTUimjSZXIbsFRkAgIaKZtSW1Aes7EvvuBC6UA0A4It/70R9eWPAyh5u9/sHUHyoDACQtiQZq792RsDKzt83ePw0dvckIiIiIiKazZhQI6KAOH3DaZ7Hu98/GLByNXo1vvbDiwEATocTb/z2vYCVPZggCPjP/73t+fvGh78+6dlKBzu2dWD8tMUcP42IiIiIiGhWY0KNiAJi9RWnex7vfn9/QMu+4ocbodapAACbX96KltrWgJYPdwuy/tZp6ael4MxLlgW0/K8GxWTxOUyoERERERERzWZMqBFRQMRnxiIhOw4AkLe7EO1NHQErWxeqxWV3XAgAsNsc+PSlrQEru98Hz33qeXzFDzZCJBIFrOya4nqUHasEAGSfkY7IhIiAlU1ERERERETTjwk1IgqY1Ze7Wqk5nQL2fXQooGVf8v31niTXpy99CafTGbCy2xtN2PHmHgCAPlyHswM4sycA7PjfHs/jdVevDGjZRERERERENP2YUCOigFl5+aBunx8cCGjZUUlGLL9wMQCgsbIZh7bkBqzsT/7xBWxWOwBgw83nQqFSBKxsANj+v92ex+uuYUKNiIiIiIhotmNCjYgCJvuMdIRFhwAADm/JRa+lL6Dlb7z1fM/jTf/4PCBlOuwOfPy3LQAAkUiES29fH5By+w3v7hmVZAxo+URERERERDT9mFAjooARi8VYeelyAEBfjxWHPjsW0PJXXroMoVEGwD2TaHujadJl7v7gIJprXJMcnHnpMkQnR066zMHY3ZOIiIiIiGjuYUKNiAJqKrt9SmVSrL/xbMDdsuyzV7ZPuswPnt3keXzZHRsmXd5w7O5JREREREQ09zChRkQBddq5C6HSKgEAez88BLvNHtDyN956nufxphe/gCAIEy6rMq8aR7eeBADEZ8Zg6fk5AaljP3b3JCIiIiIimpuYUCOigJIr5TjjotMAAObWTuz/5EhAy49Lj8GScxcCAGqL65G7PW/CZX3w3GbP48vu2ACxOLBfiezuSURERERENDcxoUZEAbf+xnM8jz8J0OQBg100aHKCiZbvsDs8CS+FSo71N54VsPoBgCAI+PxfA11S2d2TiIiIiIho7mBCjYgCbtn6RYhMjAAAHNh0xDPof6Cs/toZ0IfrAAC73tmHnu5ev8s4tj0PpmYzAOCMi5dCY9AEtI5HvjiO6sI6AMCis+azuycREREREdEcwoQaEQWcRCLBhu+cCwBwOgV8+tKXAS1frpBh7VVnAgCsvbYJzSY6uDvmWVPQHfP9Zz/1PL78zsBPdkBERERERETBw4QaEU2JC28+B2KxCADw6UtfwuFwBLT8VZOYTdRhd+Crd/cB7u6eZ1y8NKB1a6howt4PDwIAIuLChtSViIiIiIiIZj8m1IhoSkQmROD0ja7JCZqqWnB4S25Ay18yaDbRfR8dhsPue8JueHdPlUYZ0Lp99PxncDpds49e8r31kMqkAS2fiIiIiIiIgosJNSKaMkMnD/gioGXLFTJPws7c2okTXxX4/N6p7O5p7bVi04uuLq5SmQQX3XZeQMsnIiIiIiKi4GNCjYimzIqLlyIsJhQAsOeDg2hvNAW0/FWXDXSl3PO+b90+p7q757Y3dsPc2gm4Z/YMjQoJaPlEREREREQUfEyoEdGUkUgluPCmswF3Imvzy9sCWv4ZF50GiVQCAPjq/QMQBGHc90xld09BEPDeXzZ5/uZkBERERERERHMTE2pENKU23jLQ5fGDZz+FzWoLWNm6UC0WnTUfANBQ3oSKE1Xjvmcqu3sW7C9B8aEyAEDG0hTMOzMzoOUTERERERHRzMCEGhFNqZjUKJx56TIAQHNNK7a8sj2g5Q+eQfOr98bu9ikIAva4Z9+ciu6e7zz1kefxZXduhEgkCmj5RERERERENDMwoUZEU+6bD17lefz6b9/1a0bO8ay6bLnn8e7394+5bE1RHdrq2wEAi85eENDunuUnqrD9TVfrN0OEDudctypgZRMREREREdHMwoQaEU257DMysGz9YsDdNfPL13YFrOzIRCPSliQDAIoPl8Pc1jnqsse25XkeLz5rQcDqAACv/vpNzxhuX7/va1CoFAEtn4iIiIiIiGYOJtSIaFp86xeDWqk9/g4cjsC1UhucHMvbXTTqcse2nxx4z9nzA/b5JUfKsesd18yhYdEhuPT29QErm4iIiIiIiGYeJtSIaFosXDPPM4FAdWEddr61N4BlZ3sen9iV73UZQRCQu82VUFNplchYmhqwz3/loTc8j7/x8yuhVLN1GhERERER0VzGhBoRTZtv/uJqz+P//N/bcDqdASl3weosz+OTuwu9LlNTVIe2BhMAYOHaeZBIJQH57Ly9Rdj70SEAgDEhHBfddn5AyiUiIiIiIqKZiwk1Ipo2p527EPPOzAAAVJyoxp4PDgak3LDoUMSmRQEACg+UwtpnG7FM7vapGT9tcOu0bz54FeQKWcDKJiIiIiIiopmJCTUimjYikWhoK7VH3/IM5D9ZC1a7un3a+mwoPlQ24vWpGD/t+M58HN6SCwCITonEhd85JyDlEhERERER0czGhBoRTaszNp6GjKUpgHtWzm1v7A5IuQtWDer2+VXBkNcEQfDM8Bmo8dMEQcDLv/qv5+9v/fJqSGXSSZdLREREREREMx8TakQ0rUQiEW78zXWev1/42avo6e6ddLmDJyYYPo5abXE92urbPcsFYvy0g5uPerqRxmfG4PxvrZt0mURERERERDQ7MKFGRNNuxUVLseLipQCAlto2/PfxdyddZkJ2HHShGsDdQm1wV9L8fcWexzlrJ9/d09prxV9++JLn7xseujZgkxwQERERERHRzMeEGhEFxfefvAlSmSsJ9b8/fIC60oZJlScWiz3jqHW0dKKmqM7zWuXJas/jtCXJk/ocAHjj9++jrsRV35y183DOdasnXSYRERERERHNHkyoEVFQxGfE4KofXwIAsFnt+NtPX510mYPHUSvYX+J5XJlX43mcvCB+Up9RV9qA190t6sQSMX7w7K0QiUSTKpOIiIiIiIhmFybUiChorn/wKoTFhAIAdr9/AAc/Ozap8lJyEj2Pq/JrPY8rTlQBANQ6FYwJERMuXxAE/OUHL8LWZwMAXHX3xUhZmDju+4iIiIiIiGhuYUKNiIJGrVPhtt99y/P3c3f/E3abfcLlJc4baH1WXehKqPV09aChohkAkLQgflKtyXa9ux8HPj0KAIiIC8MND10z4bKIiIiIiIho9mJCjYiC6rxvrsX8lZkAgOqCWrz/l08nXFZkUgTkShkwqIXa4JZqSfMTJlx2T1cP/vrjf3r+vuOp70ClVU24PCIiIiIiIpq9mFAjoqASiUS48+mbPS3HXn34TbTUtk6oLIlEgvjMWABAXUkD7DY7KgZNSJC8YOIJtX8/8jaaq131Wn7hYqy5csWEyyIiIiIiIqLZjQk1Igq6zGVp2HjLuQAAi7kHT9z8HJxO54TKSpwXBwBw2B2oLWlAxYmBhFrSBBNqFSer8fafPgIAyBQy3PXMLZyIgIiIiIiI6BTGhBoRzQi3/PabiIgLAwAc3pKLD57bPKFyErMHxlH71WW/xZZ/bff8XbCvCCd25UMQBJ/Lc9gdePK2v8JhdwAArrvvCsSlx0yobkRERERERDQ3MKFGRDOCPkyHn750h+fvv9/7L1QV1I75Hm8SsmM9j+tKG9HRbPb8/cpDb+LH636FPR8c9Lm81/7vHeTvLQYAxKZF4ev3Xe53nYiIiIiIiGhuYUKNiGaMZRcsxhV3bQQAWHtt+N23n/F71s/BM32Oxtpr9amsvD2F+PejbwEAxBIx7vvXD6FQKfyqDxEREREREc09TKgR0Yxyy2+/iYRs1zhoRQdL8Z9H3/br/fGZY3fHTF2U5NOEApbOHvz2hmfgdLjGcvvWL67G/DMz/aoLERERERERzU1MqBHRjKJUK3Dfqz+ARCoBALz22Ds4/MVx/P6mv+D6xO9jz4djd9eUK+WISY3y+ppIJMKPnv8upDLpuPV49kcvob6sEQAwf2Umrn/wygn9P0RERERERDT3MKFGRDNO1vI03PCrawAATocTD178GLa8uh3NNa3412/+N+774zKivT5/8XfP96mV2Y639uCzl7cBANQ6Fe7/1w89CT4iIiIiIiIiJtSIaEa67v4rkDjP1fXTbh0YR63sWCV6LX1jvjciLnzEcxqDGjc/dv24n9tc04qnvvc3z993Pn3zqC3eiIiIiIiI6NTEhBoRzUgf/vUz1BTVj3jeYXeg6GDpmO81xo9MqF3/8yuhC9WO+T6n04nf3/QXdLZ3AwDOunYlLvj2WX7XnYiIiIiIiOY2JtSIaMYpOVKOZ3/0kmdCgOHy9hSN+f6IQQm1yMQInPfNtbjmp5eN+7lvP/kRjn55AnAn5X701+9CJBL5XX8iIiIiIiKa28YfmZuIaJoptUrIlTJYe21eX8/dfhLX3XfFkOdsDicq23vQ3N2HzgUpuG7745CqFBAEAQqpGJ8VNSNMLUe0ToE4gxLiYYmy4zvz8eLPXwPckxfc+8pd47ZoIyIiIiIiolOTSBAEIdiVCBaz2QyDwYCOjg7o9fpgV4eIBinLrcQbv38P297YPaKlmkwhxceW1yASiWDutSGvsQtlrd2wOX37OtPIJciI0CA7UgeFVIyWujbcsexetDd2AACuu+8K3PL4N6fk/yIiIiIiIqLZjwk1JtSIZrSmqma88+dP8PHfP0dvV6/n+fc6XkF5tx1HajvgYx5tBJVMjNPj9Hjq8t96upGedl4OHt/0IGf1JCIiIiIiolFxDDUimtEiE434/h9vxH+rn8cVP9gIjUGNFVeeie01nThUM/FkGgD02JzYUWGC7pwlEEnEiEyMwM9f+xGTaURERERERDQmtlBjCzWiWcVidWBzURPMvfaAlluz8ySuXJuBecvTAlouERERERERzT2clICIZg2bw4nPi5sDnkwDgPi1C9ASroYgCJzZk4iIiIiIiMbELp9ENGscqulAe4/3mT8DoazVgvI2y5SVT0RERERERHMDE2pENCvUm3tR2Nw15Z+zv8qEHptjyj+HiIiIiIiIZi92+SSiGU8QBBysMQ15TiQCNmRFIkQpw+7KNlS290ApFeOc9Ag4BQEiiLC3sh2mXv9atPU5nMitN2NFYmiA/wsiIiIiIiKaK9hCjYhmvJZuK9osQxNjggBsK21BXlOn57k+uxObCpqwubAZR+o6sDBGN6HPK23ths3hnHS9iYiIiIiIaG5iQo2IZrzRunr22IYmvQZPWSyXiNFumdh4azaHwLHUiIiIiIiIaFSzNqH2f//3f1i1ahXUajVCQkKCXR0imkJ15l6flzUopdiYHYkViSFo7OrzPH9hlhE3LItHqErmeU4mEeHG5QnQyCWT+kwiIiIiIiI6tczahJrVasU111yD22+/PdhVIaIpZLE6RrREG0tHrx2bCprwRXELzkgYmmy32p1YGmfwqZxWi9XvuhIREREREdGpYdZOSvDwww8DAF5++eVgV4WIplCbH4ktsQhwuvt9Wh1O2J3CkNcLm7swL1KHKK1iSOs1b7r6HLDanZBLZ+19ByIiIiIiIpoiszahNhF9fX3o6xu4iDabzUGtDxGNr9c+euu0s1LDEa6Rw+ZwIkIjR1V7D5bGGyAIrllAD1QPnRm0z+7E8QYzlsYbsKmgyafPZkKNiIiIiIiIhjulEmqPP/64p2UbEc0OgiCM+tr2stYRz20ubB6zvPzGLsyL1CIhRIWGzrHHSRvrs4mIiIiIiOjUNaOaXtx///0QiURj/hQUFEy4/AceeAAdHR2en+rq6oDWn4gCTyIWBbQ8hyDgaJ0ZS+MMEGPssgP92URERERERDQ3zKgWaj/5yU9w0003jblMamrqhMtXKBRQKBQTfj8RTT+9MvBfUyUt3VgQpUNahHrUZSRiEdReZv8kIiIiIiIimlEJNaPRCKPRGOxqENEMEqqSQyQCAtn7UgBwuLYDK5NCR10mTCWDWMQWakRERERERDTSjEqo+aOqqgptbW2oqqqCw+HA0aNHAQDp6enQarXBrh4RBYhELEKYSoZWiy2g5VaZerAwWgelzHsrtAiNPKCfR0RERERERHOHSJilo27fdNNNeOWVV0Y8v3XrVpx99tk+lWE2m2EwGNDR0QG9Xj8FtSSiQMhr7BwxY+dUu3heFJNqRERERERE5NWsTagFAhNqRLNDn92J/+XWweGcnq+rcLUcl8yPmpbPIiIiIiIiotlnRs3ySUTkjUIqRkaEZto+b0G0bto+i4iIiIiIiGYfJtSIaFY4Lc4AzTTMuhlvUCI5VDXln0NERERERESzFxNqRDQryCVirEwKm+LPEGFlUhhEnN2TiIiIiIiIxsCEGhHNGnEGJZbFG6akbLEIODstAuppaAVHREREREREs5s02BUgIvLHwmg9BAE4XNsRsDKlYhHOTotAjF4ZsDKJiIiIiIho7mJCjYhmnZwYPQxKKfZUtqPX7pxUWaEqGdakhCFMLQ9Y/YiIiIiIiGhuY0KNiGalxFA1IrUKHKg2oazN4vf7pWIRFkTrkBOth0TMMdOIiIiIiIjIdyJBEIRgVyJYzGYzDAYDOjo6oNfrg10dIpqgrj47ipq7UNLajR7b2C3WDEopsoxapIVrIJdyGEkiIiIiIiLyHxNqTKgRzRmCIKDb6kCrxQpTjw12p+vrTS4RI0wtQ7haDqWMkw4QERERERHR5LDLJxHNGSKRCFqFFFqFFEmhwa4NERERERERzVXs70REREREREREROQHJtSIiIiIiIiIiIj8wIQaERERERERERGRH5hQIyIiIiIiIiIi8gMTakRERERERERERH5gQo2IiIiIiIiIiMgPTKgRERERERERERH5gQk1IiIiIiIiIiIiPzChRkRERERERERE5Acm1IiIiIiIiIiIiPzAhBoREREREREREZEfmFAjIiIiIiIiIiLyAxNqREREREREREREfmBCjYiIiIiIiIiIyA9MqBEREREREREREfmBCTUiIiIiIiIiIiI/MKFGRERERERERETkBybUiIiIiIiIiIiI/MCEGhERERERERERkR+YUCMiIiIiIiIiIvIDE2pERERERERERER+YEKNiIiIiIiIiIjID0yoERERERERERER+YEJNSIiIiIiIiIiIj8woUZEREREREREROQHJtSIiIiIiIiIiIj8wIQaERERERERERGRH5hQIyIiIiIiIiIi8gMTakRERERERERERH5gQo2IiIiIiIiIiMgPTKgRERERERERERH5gQk1IiIiIiIiIiIiPzChRkRERERERERE5Acm1IiIiIiIiIiIiPzAhBoREREREREREZEfmFAjIiIiIiIiIiLygzTYFQgmQRAAAGazOdhVISIiIiIiIiKiGUCn00EkEo25zCmdUOvs7AQAJCQkBLsqREREREREREQ0A3R0dECv14+5jEjob6Z1CnI6nairq/Mp80hjM5vNSEhIQHV19bgbHc1+XN+nHq7zUwvX96mH6/zUw3V+auH6PvVwnZ9auL4Djy3UxiEWixEfHx/saswper2eO/AphOv71MN1fmrh+j71cJ2ferjOTy1c36cervNTC9f39OKkBERERERERERERH5gQo2IiIiIiIiIiMgPTKhRQCgUCjz00ENQKBTBrgpNA67vUw/X+amF6/vUw3V+6uE6P7VwfZ96uM5PLVzfwXFKT0pARERERERERETkL7ZQIyIiIiIiIiIi8gMTakRERERERERERH5gQo2IiIiIiIiIiMgPTKgRERERERERERH5gQk1mpS//vWvWLRoEfR6PfR6PVauXIlNmzYFu1o0hWpra/Gtb30L4eHhUKlUyMnJwcGDB4NdLZoinZ2duPvuu5GUlASVSoVVq1bhwIEDwa4WBciOHTtw6aWXIjY2FiKRCO+9957nNZvNhvvuuw85OTnQaDSIjY3Ft7/9bdTV1QW1zjQ5Y61zALjpppsgEomG/GzYsCFo9aXJGW99d3V14a677kJ8fDxUKhXmz5+P559/Pmj1pcl5/PHHcfrpp0On0yEyMhJXXHEFCgsLhyzzwgsv4Oyzz4Zer4dIJILJZApafWnyfFnn/QRBwMaNG71+F9DsMN76rqioGHEM7//53//+F9S6z1VMqNGkxMfH47e//S0OHTqEgwcP4txzz8Xll1+OkydPBrtqNAXa29uxevVqyGQybNq0CXl5efjjH/+I0NDQYFeNpsitt96KLVu24F//+heOHz+O9evX4/zzz0dtbW2wq0YB0N3djcWLF+PZZ58d8ZrFYsHhw4fxy1/+EocPH8Y777yDwsJCXHbZZUGpKwXGWOu834YNG1BfX+/5ef3116e1jhQ4463ve+65B59++in+/e9/Iz8/H3fffTfuuusufPDBB9NeV5q87du3484778TevXuxZcsW2Gw2rF+/Ht3d3Z5lLBYLNmzYgJ///OdBrSsFhi/rvN9TTz0FkUgUlHpSYIy3vhMSEoYcv+vr6/Hwww9Dq9Vi48aNwa7+nCQSBEEIdiVobgkLC8MTTzyBW265JdhVoQC7//778dVXX2Hnzp3BrgpNg56eHuh0Orz//vu4+OKLPc8vW7YMGzduxKOPPhrU+lFgiUQivPvuu7jiiitGXebAgQM444wzUFlZicTExGmtHwWet3V+0003wWQysfXCHORtfS9cuBBf//rX8ctf/tLzHL/j547m5mZERkZi+/btWLdu3ZDXtm3bhnPOOQft7e0ICQkJWh0psEZb50ePHsUll1yCgwcPIiYmZtzjPc0OY+3j/U477TQsXboUL7744rTX71TAFmoUMA6HA//973/R3d2NlStXBrs6NAU++OADLF++HNdccw0iIyNx2mmn4e9//3uwq0VTxG63w+FwQKlUDnlepVJh165dQasXBU9HRwdEIhEvvua4bdu2ITIyEllZWbj99tvR2toa7CrRFFm1ahU++OAD1NbWQhAEbN26FUVFRVi/fn2wq0YB0NHRAbhvdtOpwds6t1gsuP766/Hss88iOjo6iLWjQBtvHz906BCOHj3Khi5TiAk1mrTjx49Dq9VCoVDg+9//Pt59913Mnz8/2NWiKVBWVoa//vWvyMjIwObNm3H77bfjhz/8IV555ZVgV42mgE6nw8qVK/HII4+grq4ODocD//73v7Fnzx7U19cHu3o0zXp7e3HffffhG9/4BvR6fbCrQ1Nkw4YNePXVV/HFF1/gd7/7HbZv346NGzfC4XAEu2o0BZ555hnMnz8f8fHxkMvl2LBhA5599tlRWzrQ7OF0OnH33Xdj9erVWLhwYbCrQ9NgtHX+4x//GKtWrcLll18e1PpRYPmyj7/44ouYN28eVq1aNe31O1VIg10Bmv2ysrJw9OhRdHR04K233sKNN96I7du3M6k2BzmdTixfvhyPPfYY4G5CfOLECTz//PO48cYbg109mgL/+te/cPPNNyMuLg4SiQRLly7FN77xDRw6dCjYVaNpZLPZcO2110IQBPz1r38NdnVoCl133XWexzk5OVi0aBHS0tKwbds2nHfeeUGtGwXeM888g7179+KDDz5AUlISduzYgTvvvBOxsbE4//zzg109moQ777wTJ06cYIvyU4i3df7BBx/gyy+/xJEjR4JaNwq88fbxnp4evPbaa0O69FPgsYUaTZpcLkd6ejqWLVuGxx9/HIsXL8af//znYFeLpkBMTMyIROm8efNQVVUVtDrR1EpLS8P27dvR1dWF6upq7N+/HzabDampqcGuGk2T/mRaZWUltmzZwtZpp5jU1FRERESgpKQk2FWhAOvp6cHPf/5zPPnkk7j00kuxaNEi3HXXXfj617+OP/zhD8GuHk3CXXfdhY8++ghbt25FfHx8sKtD02C0df7ll1+itLQUISEhkEqlkEpd7WmuuuoqnH322UGsMU2GL/v4W2+9BYvFgm9/+9vTXr9TCVuoUcA5nU709fUFuxo0BVavXj1iKu6ioiIkJSUFrU40PTQaDTQaDdrb27F582b8/ve/D3aVaBr0J9OKi4uxdetWhIeHB7tKNM1qamrQ2tqKmJiYYFeFAsxms8Fms0EsHnp/XSKRwOl0Bq1eNHGCIOAHP/gB3n33XWzbtg0pKSnBrhJNsfHW+f33349bb711yHM5OTn405/+hEsvvXSaa0uT5c8+/uKLL+Kyyy6D0Wic1jqeaphQo0l54IEHsHHjRiQmJqKzsxOvvfYatm3bhs2bNwe7ajQF+sdgeOyxx3Dttddi//79eOGFF/DCCy8Eu2o0RTZv3gxBEJCVlYWSkhL87Gc/Q3Z2Nr7zne8Eu2oUAF1dXUNaHpWXl+Po0aMICwtDTEwMrr76ahw+fBgfffQRHA4HGhoaAPfgt3K5PIg1p4kaa52HhYXh4YcfxlVXXYXo6GiUlpbi3nvvRXp6Oi688MKg1psmZqz1nZiYiLPOOgs/+9nPoFKpkJSUhO3bt+PVV1/Fk08+GdR608TceeedeO211/D+++9Dp9N5vrMNBgNUKhUAoKGhAQ0NDZ7t4vjx49DpdEhMTOTkBbPQeOs8Ojra60QEiYmJTLjOQr7s4wBQUlKCHTt24JNPPglibU8RAtEk3HzzzUJSUpIgl8sFo9EonHfeecJnn30W7GrRFPrwww+FhQsXCgqFQsjOzhZeeOGFYFeJptAbb7whpKamCnK5XIiOjhbuvPNOwWQyBbtaFCBbt24VAIz4ufHGG4Xy8nKvrwEQtm7dGuyq0wSNtc4tFouwfv16wWg0CjKZTEhKShJuu+02oaGhIdjVpgkaa30LgiDU19cLN910kxAbGysolUohKytL+OMf/yg4nc5gV50mYLTv7H/+85+eZR566KFxl6HZw5d17u0977777rTWkwLD1/X9wAMPCAkJCYLD4QhaXU8VIsG1YoiIiIiIiIiIiMgHnJSAiIiIiIiIiIjID0yoERERERERERER+YEJNSIiIiIiIiIiIj8woUZEREREREREROQHJtSIiIiIiIiIiIj8wIQaERERERERERGRH5hQIyIiIiIiIiIi8gMTakRERERERERERH5gQo2IiIjoFGQ0GiESicb8+d73vhfsahIRERHNSNJgV4CIiIiIppfdbsef/vQnr6+ZzWb89Kc/RV9fH6644opprxsRERHRbCASBEEIdiWIiIiIKPj6+vqwYcMGbNu2Dc899xxuv/32YFeJiIiIaEZil08iIiIigsPhwPXXX49t27bh17/+NZNpRERERGNgCzUiIiIiwne/+138/e9/x5133om//OUvwa4OERER0YzGFmpEREREp7gHH3wQf//733Httdfi6aefDnZ1iIiIiGY8tlAjIiIiOoU9/fTT+NGPfoTzzz8fH3/8MeRyebCrRERERDTjMaFGREREdIp6/fXX8c1vfhPLli3D1q1bodVqg10lIiIiolmBCTUiIiKiU9DmzZtx6aWXIiUlBbt27YLRaAx2lYiIiIhmDSbUiIiIiE4x+/btw3nnnYeQkBB89dVXSEpKCnaViIiIiGYVJtSIiIiITiH5+flYu3YtnE4ndu7ciQULFgS7SkRERESzDhNqRERERKcIk8mERYsWobq6GnfccQdWrlzpdbnIyEisX79+2utHRERENFswoUZERER0ivjss89w4YUXjrvct7/9bbzyyivTUiciIiKi2YgJNSIiIiIiIiIiIj+Ig10BIiIiIiIiIiKi2YQJNSIiIiIiIiIiIj8woUZEREREREREROQHJtSIiIiIiIiIiIj8wIQaERERERERERGRH5hQIyIiIiIiIiIi8gMTakRERERERERERH5gQo2IiIiIiIiIiMgPTKgRERERERERERH5gQk1IiIiIiIiIiIiPzChRkRERERERERE5Acm1IiIiIiIiIiIiPzAhBoREREREREREZEf/h8neu0e0cwhrAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = net.plot(rotated=True, curved_edges=True, size=(1500, 800), hide_xalpha=True, node_size=400, node_font_size=9)" + ] + }, + { + "cell_type": "markdown", + "id": "645d99fa-570b-4615-be99-110a36b0afda", + "metadata": {}, + "source": [ + "Now we'll add in the electron capture onto Ni56, but we'll change the end point to be Fe56 -- this is what `aprox21` does" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "f9bcaaa4-3bad-46fd-ac51-c3adf2a6a9e0", + "metadata": {}, + "outputs": [], + "source": [ + "fig.savefig(\"newnet.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "42587393-219a-429e-8774-c84872304c1d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Co56 + e⁻ ⟶ Fe56 + 𝜈,\n", + " Co56 ⟶ Ni56 + e⁻ + 𝜈,\n", + " Fe56 ⟶ Co56 + e⁻ + 𝜈,\n", + " n ⟶ p + e⁻ + 𝜈,\n", + " Ni56 + e⁻ ⟶ Co56 + 𝜈,\n", + " p + e⁻ ⟶ n + 𝜈]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tr = [r for r in net.get_rates() if isinstance(r, pyna.rates.TabularRate)]\n", + "tr" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "e227dc53-80a8-4967-98e6-6d174acc06ec", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/zingale/development/pynucastro/pynucastro/rates/derived_rate.py:85: UserWarning: C12 partition function is not supported by tables: set pf = 1.0 by default\n", + " warnings.warn(UserWarning(f'{nuc} partition function is not supported by tables: set pf = 1.0 by default'))\n", + "/home/zingale/development/pynucastro/pynucastro/rates/derived_rate.py:85: UserWarning: N13 partition function is not supported by tables: set pf = 1.0 by default\n", + " warnings.warn(UserWarning(f'{nuc} partition function is not supported by tables: set pf = 1.0 by default'))\n", + "/home/zingale/development/pynucastro/pynucastro/rates/derived_rate.py:85: UserWarning: N14 partition function is not supported by tables: set pf = 1.0 by default\n", + " warnings.warn(UserWarning(f'{nuc} partition function is not supported by tables: set pf = 1.0 by default'))\n" + ] + } + ], + "source": [ + "net.write_network()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/networks/He-C-Fe-group-simple/newnet.png b/networks/He-C-Fe-group-simple/newnet.png new file mode 100644 index 000000000..ea52d9f8f Binary files /dev/null and b/networks/He-C-Fe-group-simple/newnet.png differ diff --git a/networks/He-C-Fe-group-simple/p-n_electroncapture.dat b/networks/He-C-Fe-group-simple/p-n_electroncapture.dat new file mode 100644 index 000000000..21f333657 --- /dev/null +++ b/networks/He-C-Fe-group-simple/p-n_electroncapture.dat @@ -0,0 +1,148 @@ +!p -> n, e- capture +!Q=1.2933 MeV +! +!Log(rhoY) Log(temp) mu dQ Vs Log(e-cap-rate) Log(nu-energy-loss) Log(gamma-energy) +!Log(g/cm^3) Log(K) erg erg erg Log(1/s) Log(erg/s) Log(erg/s) +1.000000 7.000000 -4.806530e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +1.000000 8.000000 -9.292624e-08 0.00 0.00 -49.750000 -5.712729e+01 -100.00 +1.000000 8.301030 -2.146917e-07 0.00 0.00 -29.580000 -3.665029e+01 -100.00 +1.000000 8.602060 -4.902661e-07 0.00 0.00 -19.262000 -2.602029e+01 -100.00 +1.000000 8.845098 -8.058948e-07 0.00 0.00 -14.019000 -2.051929e+01 -100.00 +1.000000 9.000000 -8.187123e-07 0.00 0.00 -10.766000 -1.709829e+01 -100.00 +1.000000 9.176091 -8.187123e-07 0.00 0.00 -7.990000 -1.412829e+01 -100.00 +1.000000 9.301030 -8.187123e-07 0.00 0.00 -6.458000 -1.245629e+01 -100.00 +1.000000 9.477121 -8.187123e-07 0.00 0.00 -4.715000 -1.051429e+01 -100.00 +1.000000 9.698970 -8.187123e-07 0.00 0.00 -2.968000 -8.516290e+00 -100.00 +1.000000 10.000000 -8.187123e-07 0.00 0.00 -1.035000 -6.245290e+00 -100.00 +1.000000 10.477121 -8.187123e-07 0.00 0.00 1.600000 -3.099290e+00 -100.00 +1.000000 11.000000 -8.187123e-07 0.00 0.00 4.293000 1.317104e-01 -100.00 +2.000000 7.000000 -1.602177e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +2.000000 8.000000 -6.088271e-08 0.00 0.00 -48.749000 -5.612529e+01 -100.00 +2.000000 8.301030 -1.522068e-07 0.00 0.00 -28.580000 -3.564929e+01 -100.00 +2.000000 8.602060 -3.636941e-07 0.00 0.00 -18.262000 -2.502029e+01 -100.00 +2.000000 8.845098 -7.145708e-07 0.00 0.00 -13.606000 -2.010629e+01 -100.00 +2.000000 9.000000 -8.107014e-07 0.00 0.00 -10.744000 -1.707729e+01 -100.00 +2.000000 9.176091 -8.187123e-07 0.00 0.00 -7.989000 -1.412729e+01 -100.00 +2.000000 9.301030 -8.187123e-07 0.00 0.00 -6.458000 -1.245629e+01 -100.00 +2.000000 9.477121 -8.187123e-07 0.00 0.00 -4.715000 -1.051429e+01 -100.00 +2.000000 9.698970 -8.187123e-07 0.00 0.00 -2.968000 -8.516290e+00 -100.00 +2.000000 10.000000 -8.187123e-07 0.00 0.00 -1.035000 -6.245290e+00 -100.00 +2.000000 10.477121 -8.187123e-07 0.00 0.00 1.600000 -3.099290e+00 -100.00 +2.000000 11.000000 -8.187123e-07 0.00 0.00 4.293000 1.317104e-01 -100.00 +3.000000 7.000000 3.204353e-09 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +3.000000 8.000000 -2.883918e-08 0.00 0.00 -47.732000 -5.510929e+01 -100.00 +3.000000 8.301030 -8.811971e-08 0.00 0.00 -27.574000 -3.464429e+01 -100.00 +3.000000 8.602060 -2.355200e-07 0.00 0.00 -17.260000 -2.401829e+01 -100.00 +3.000000 8.845098 -5.030835e-07 0.00 0.00 -12.658000 -1.915829e+01 -100.00 +3.000000 9.000000 -7.450121e-07 0.00 0.00 -10.538000 -1.687029e+01 -100.00 +3.000000 9.176091 -8.107014e-07 0.00 0.00 -7.974000 -1.411229e+01 -100.00 +3.000000 9.301030 -8.171101e-07 0.00 0.00 -6.454000 -1.245329e+01 -100.00 +3.000000 9.477121 -8.187123e-07 0.00 0.00 -4.714000 -1.051429e+01 -100.00 +3.000000 9.698970 -8.187123e-07 0.00 0.00 -2.968000 -8.515290e+00 -100.00 +3.000000 10.000000 -8.187123e-07 0.00 0.00 -1.035000 -6.245290e+00 -100.00 +3.000000 10.477121 -8.187123e-07 0.00 0.00 1.600000 -3.099290e+00 -100.00 +3.000000 11.000000 -8.187123e-07 0.00 0.00 4.293000 1.317104e-01 -100.00 +4.000000 7.000000 1.922612e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +4.000000 8.000000 8.010883e-09 0.00 0.00 -46.572000 -5.394829e+01 -100.00 +4.000000 8.301030 -2.082830e-08 0.00 0.00 -26.519000 -3.358929e+01 -100.00 +4.000000 8.602060 -1.073458e-07 0.00 0.00 -16.243000 -2.300029e+01 -100.00 +4.000000 8.845098 -2.787787e-07 0.00 0.00 -11.652000 -1.815229e+01 -100.00 +4.000000 9.000000 -4.838573e-07 0.00 0.00 -9.716000 -1.604929e+01 -100.00 +4.000000 9.176091 -7.434100e-07 0.00 0.00 -7.833000 -1.397129e+01 -100.00 +4.000000 9.301030 -7.962818e-07 0.00 0.00 -6.423000 -1.242129e+01 -100.00 +4.000000 9.477121 -8.123036e-07 0.00 0.00 -4.709000 -1.050829e+01 -100.00 +4.000000 9.698970 -8.171101e-07 0.00 0.00 -2.967000 -8.515290e+00 -100.00 +4.000000 10.000000 -8.187123e-07 0.00 0.00 -1.035000 -6.245290e+00 -100.00 +4.000000 10.477121 -8.187123e-07 0.00 0.00 1.600000 -3.099290e+00 -100.00 +4.000000 11.000000 -8.187123e-07 0.00 0.00 4.293000 1.317104e-01 -100.00 +5.000000 7.000000 8.491536e-08 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +5.000000 8.000000 8.331318e-08 0.00 0.00 -44.223000 -5.160029e+01 -100.00 +5.000000 8.301030 7.530230e-08 0.00 0.00 -25.017000 -3.208629e+01 -100.00 +5.000000 8.602060 4.165659e-08 0.00 0.00 -15.072000 -2.182929e+01 -100.00 +5.000000 8.845098 -4.165659e-08 0.00 0.00 -10.585000 -1.708529e+01 -100.00 +5.000000 9.000000 -1.570133e-07 0.00 0.00 -8.685000 -1.501729e+01 -100.00 +5.000000 9.176091 -3.941355e-07 0.00 0.00 -7.099000 -1.323729e+01 -100.00 +5.000000 9.301030 -6.136337e-07 0.00 0.00 -6.134000 -1.213329e+01 -100.00 +5.000000 9.477121 -7.626361e-07 0.00 0.00 -4.656000 -1.045529e+01 -100.00 +5.000000 9.698970 -8.042927e-07 0.00 0.00 -2.959000 -8.506290e+00 -100.00 +5.000000 10.000000 -8.155079e-07 0.00 0.00 -1.034000 -6.244290e+00 -100.00 +5.000000 10.477121 -8.187123e-07 0.00 0.00 1.600000 -3.099290e+00 -100.00 +5.000000 11.000000 -8.187123e-07 0.00 0.00 4.293000 1.317104e-01 -100.00 +6.000000 7.000000 3.444680e-07 0.00 0.00 -99.697970 -1.057943e+02 -100.00 +6.000000 8.000000 3.428658e-07 0.00 0.00 -36.029000 -4.340629e+01 -100.00 +6.000000 8.301030 3.412636e-07 0.00 0.00 -20.834000 -2.790429e+01 -100.00 +6.000000 8.602060 3.316506e-07 0.00 0.00 -12.798000 -1.955529e+01 -100.00 +6.000000 8.845098 3.028114e-07 0.00 0.00 -9.036000 -1.553629e+01 -100.00 +6.000000 9.000000 2.579504e-07 0.00 0.00 -7.382000 -1.371429e+01 -100.00 +6.000000 9.176091 1.490024e-07 0.00 0.00 -5.962000 -1.210029e+01 -100.00 +6.000000 9.301030 1.602177e-09 0.00 0.00 -5.168000 -1.116629e+01 -100.00 +6.000000 9.477121 -3.396614e-07 0.00 0.00 -4.214000 -1.001329e+01 -100.00 +6.000000 9.698970 -6.729142e-07 0.00 0.00 -2.876000 -8.424290e+00 -100.00 +6.000000 10.000000 -7.866687e-07 0.00 0.00 -1.025000 -6.235290e+00 -100.00 +6.000000 10.477121 -8.155079e-07 0.00 0.00 1.601000 -3.098290e+00 -100.00 +6.000000 11.000000 -8.187123e-07 0.00 0.00 4.293000 1.317104e-01 -100.00 +7.000000 7.000000 1.140750e-06 0.00 0.00 -46.082000 -5.446429e+01 -100.00 +7.000000 8.000000 1.139148e-06 0.00 0.00 -10.983000 -1.835929e+01 -100.00 +7.000000 8.301030 1.139148e-06 0.00 0.00 -8.290000 -1.535929e+01 -100.00 +7.000000 8.602060 1.134341e-06 0.00 0.00 -6.487000 -1.324229e+01 -100.00 +7.000000 8.845098 1.123126e-06 0.00 0.00 -5.363000 -1.185729e+01 -100.00 +7.000000 9.000000 1.103900e-06 0.00 0.00 -4.733000 -1.105829e+01 -100.00 +7.000000 9.176091 1.060641e-06 0.00 0.00 -4.066000 -1.019629e+01 -100.00 +7.000000 9.301030 9.965539e-07 0.00 0.00 -3.616000 -9.607290e+00 -100.00 +7.000000 9.477121 8.171101e-07 0.00 0.00 -3.010000 -8.803290e+00 -100.00 +7.000000 9.698970 2.996070e-07 0.00 0.00 -2.270000 -7.815290e+00 -100.00 +7.000000 10.000000 -5.046856e-07 0.00 0.00 -0.937000 -6.147290e+00 -100.00 +7.000000 10.477121 -7.850666e-07 0.00 0.00 1.604000 -3.095290e+00 -100.00 +7.000000 11.000000 -8.155079e-07 0.00 0.00 4.293000 1.317104e-01 -100.00 +8.000000 7.000000 3.101814e-06 0.00 0.00 -1.350000 -7.185290e+00 -100.00 +8.000000 8.000000 3.101814e-06 0.00 0.00 -1.349000 -7.185290e+00 -100.00 +8.000000 8.301030 3.100212e-06 0.00 0.00 -1.348000 -7.183290e+00 -100.00 +8.000000 8.602060 3.098610e-06 0.00 0.00 -1.345000 -7.176290e+00 -100.00 +8.000000 8.845098 3.093803e-06 0.00 0.00 -1.335000 -7.158290e+00 -100.00 +8.000000 9.000000 3.085792e-06 0.00 0.00 -1.320000 -7.129290e+00 -100.00 +8.000000 9.176091 3.064964e-06 0.00 0.00 -1.285000 -7.065290e+00 -100.00 +8.000000 9.301030 3.036125e-06 0.00 0.00 -1.240000 -6.983290e+00 -100.00 +8.000000 9.477121 2.954414e-06 0.00 0.00 -1.128000 -6.787290e+00 -100.00 +8.000000 9.698970 2.693259e-06 0.00 0.00 -0.875000 -6.369290e+00 -100.00 +8.000000 10.000000 1.573337e-06 0.00 0.00 -0.301000 -5.502290e+00 -100.00 +8.000000 10.477121 -4.838573e-07 0.00 0.00 1.635000 -3.064290e+00 -100.00 +8.000000 11.000000 -7.882709e-07 0.00 0.00 4.294000 1.327104e-01 -100.00 +9.000000 7.000000 7.480563e-06 0.00 0.00 0.831000 -4.464290e+00 -100.00 +9.000000 8.000000 7.480563e-06 0.00 0.00 0.831000 -4.464290e+00 -100.00 +9.000000 8.301030 7.480563e-06 0.00 0.00 0.832000 -4.464290e+00 -100.00 +9.000000 8.602060 7.480563e-06 0.00 0.00 0.832000 -4.463290e+00 -100.00 +9.000000 8.845098 7.477358e-06 0.00 0.00 0.833000 -4.461290e+00 -100.00 +9.000000 9.000000 7.474154e-06 0.00 0.00 0.835000 -4.458290e+00 -100.00 +9.000000 9.176091 7.464541e-06 0.00 0.00 0.838000 -4.451290e+00 -100.00 +9.000000 9.301030 7.450121e-06 0.00 0.00 0.844000 -4.442290e+00 -100.00 +9.000000 9.477121 7.413271e-06 0.00 0.00 0.859000 -4.414290e+00 -100.00 +9.000000 9.698970 7.291506e-06 0.00 0.00 0.904000 -4.333290e+00 -100.00 +9.000000 10.000000 6.724335e-06 0.00 0.00 1.074000 -4.035290e+00 -100.00 +9.000000 10.477121 2.340780e-06 0.00 0.00 1.922000 -2.772290e+00 -100.00 +9.000000 11.000000 -5.191052e-07 0.00 0.00 4.302000 1.407104e-01 -100.00 +10.000000 7.000000 1.699429e-05 0.00 0.00 2.676000 -2.211290e+00 -100.00 +10.000000 8.000000 1.699429e-05 0.00 0.00 2.676000 -2.211290e+00 -100.00 +10.000000 8.301030 1.699429e-05 0.00 0.00 2.676000 -2.211290e+00 -100.00 +10.000000 8.602060 1.699429e-05 0.00 0.00 2.676000 -2.211290e+00 -100.00 +10.000000 8.845098 1.699269e-05 0.00 0.00 2.676000 -2.211290e+00 -100.00 +10.000000 9.000000 1.699108e-05 0.00 0.00 2.676000 -2.210290e+00 -100.00 +10.000000 9.176091 1.698628e-05 0.00 0.00 2.677000 -2.209290e+00 -100.00 +10.000000 9.301030 1.697987e-05 0.00 0.00 2.678000 -2.208290e+00 -100.00 +10.000000 9.477121 1.696224e-05 0.00 0.00 2.680000 -2.203290e+00 -100.00 +10.000000 9.698970 1.690617e-05 0.00 0.00 2.688000 -2.188290e+00 -100.00 +10.000000 10.000000 1.664181e-05 0.00 0.00 2.725000 -2.122290e+00 -100.00 +10.000000 10.477121 1.386203e-05 0.00 0.00 3.006000 -1.638290e+00 -100.00 +10.000000 11.000000 2.164541e-06 0.00 0.00 4.385000 2.237104e-01 -100.00 +11.000000 7.000000 3.752778e-05 0.00 0.00 4.416000 -1.062896e-01 -100.00 +11.000000 8.000000 3.752778e-05 0.00 0.00 4.416000 -1.062896e-01 -100.00 +11.000000 8.301030 3.752778e-05 0.00 0.00 4.416000 -1.062896e-01 -100.00 +11.000000 8.602060 3.752778e-05 0.00 0.00 4.416000 -1.062896e-01 -100.00 +11.000000 8.845098 3.752618e-05 0.00 0.00 4.416000 -1.062896e-01 -100.00 +11.000000 9.000000 3.752618e-05 0.00 0.00 4.416000 -1.052896e-01 -100.00 +11.000000 9.176091 3.752298e-05 0.00 0.00 4.416000 -1.052896e-01 -100.00 +11.000000 9.301030 3.752137e-05 0.00 0.00 4.416000 -1.052896e-01 -100.00 +11.000000 9.477121 3.751176e-05 0.00 0.00 4.417000 -1.042896e-01 -100.00 +11.000000 9.698970 3.748613e-05 0.00 0.00 4.419000 -1.012896e-01 -100.00 +11.000000 10.000000 3.736436e-05 0.00 0.00 4.426000 -8.828961e-02 -100.00 +11.000000 10.477121 3.605538e-05 0.00 0.00 4.499000 4.271039e-02 -100.00 +11.000000 11.000000 2.244810e-05 0.00 0.00 4.989000 8.437104e-01 -100.00 diff --git a/networks/He-C-Fe-group-simple/partition_functions.H b/networks/He-C-Fe-group-simple/partition_functions.H new file mode 100644 index 000000000..d34ee02f2 --- /dev/null +++ b/networks/He-C-Fe-group-simple/partition_functions.H @@ -0,0 +1,448 @@ +#ifndef PARTITION_FUNCTIONS_H +#define PARTITION_FUNCTIONS_H + +#include +#include + +#include +#include +#include + +using namespace amrex; +using namespace Species; + +namespace part_fun { + + constexpr int npts_1 = 72; + + // this is T9 + + extern AMREX_GPU_MANAGED amrex::Array1D temp_array_1; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D O16_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D F18_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Ne20_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Ne21_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Na22_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Na23_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Mg24_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Al27_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Si28_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D P31_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D S32_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Cl35_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Ar36_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D K39_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Ca40_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Sc43_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Ti44_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D V47_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Cr48_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Mn51_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Fe52_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Fe53_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Fe54_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Fe55_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Fe56_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Co55_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Co56_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Co57_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Ni56_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Ni57_pf_array; + + // this is log10(partition function) + + extern AMREX_GPU_MANAGED amrex::Array1D Ni58_pf_array; + + + + // interpolation routine + + template + AMREX_GPU_HOST_DEVICE AMREX_INLINE + void interpolate_pf(const amrex::Real t9, const T& temp_array, const T& pf_array, + amrex::Real& pf, amrex::Real& dpf_dT) { + + if (t9 >= temp_array.lo() && t9 < temp_array.hi()) { + + // find the largest temperature element <= t9 using a binary search + + int left = temp_array.lo(); + int right = temp_array.hi(); + + while (left < right) { + int mid = (left + right) / 2; + if (temp_array(mid) > t9) { + right = mid; + } else { + left = mid + 1; + } + } + + const int idx = right - 1; + + // now we have temp_array[idx] <= t9 < temp_array[idx+1] + + // construct the slope -- this is (log10(pf_{i+1}) - log10(pf_i)) / (T_{i+1} - T_i) + + amrex::Real slope = (pf_array(idx+1) - pf_array(idx)) / + (temp_array(idx+1) - temp_array(idx)); + + // find the PF + + amrex::Real log10_pf = pf_array(idx) + slope * (t9 - temp_array(idx)); + pf = std::pow(10.0_rt, log10_pf); + + // find the derivative (with respect to T, not T9) + + amrex::Real dpf_dT9 = pf * M_LN10 * slope; + dpf_dT = dpf_dT9 / 1.e9_rt; + + } else { + + // T < the smallest T or >= the largest T in the partition function table + pf = 1.0; + dpf_dT = 0.0; + + } + + } + + struct pf_cache_t { + // Store the coefficient and derivative adjacent in memory, as they're + // always accessed at the same time. + // The entries will be default-initialized to zero, which is fine since + // log10(x) is never zero. + amrex::Array2D data{}; + }; + +} + +// main interface + +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void get_partition_function(const int inuc, [[maybe_unused]] const tf_t& tfactors, + amrex::Real& pf, amrex::Real& dpf_dT) { + + // inuc is the 1-based index for the species + + 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 Fe53: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Fe53_pf_array, pf, dpf_dT); + break; + + case Fe54: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Fe54_pf_array, pf, dpf_dT); + break; + + case Fe55: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Fe55_pf_array, pf, dpf_dT); + break; + + case Fe56: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Fe56_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 Co56: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Co56_pf_array, pf, dpf_dT); + break; + + case Co57: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Co57_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; + + case Ni57: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ni57_pf_array, pf, dpf_dT); + break; + + case Ni58: + part_fun::interpolate_pf(tfactors.T9, part_fun::temp_array_1, part_fun::Ni58_pf_array, pf, dpf_dT); + break; + + + default: + + pf = 1.0_rt; + dpf_dT = 0.0_rt; + + } + +} + +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void get_partition_function_cached(const int inuc, const tf_t& tfactors, + part_fun::pf_cache_t& pf_cache, + amrex::Real& pf, amrex::Real& dpf_dT) { + if (pf_cache.data(inuc, 1) != 0.0_rt) { + // present in cache + amrex::ignore_unused(tfactors); + pf = pf_cache.data(inuc, 1); + dpf_dT = pf_cache.data(inuc, 2); + } else { + get_partition_function(inuc, tfactors, pf, dpf_dT); + pf_cache.data(inuc, 1) = pf; + pf_cache.data(inuc, 2) = dpf_dT; + } +} + +// spins + +AMREX_GPU_HOST_DEVICE AMREX_INLINE +constexpr amrex::Real get_spin_state(const int inuc) { + + amrex::Real spin = -1.0; + + switch (inuc) { // NOLINT(bugprone-switch-missing-default-case) + + case He4: + case C12: + case O16: + case Ne20: + case Mg24: + case Si28: + case S32: + case Ar36: + case Ca40: + case Ti44: + case Cr48: + case Fe52: + case Fe54: + case Fe56: + case Ni56: + case Ni58: + spin = 1; + break; + + case N: + case H1: + case N13: + case P31: + spin = 2; + break; + + case N14: + case F18: + spin = 3; + break; + + case Ne21: + case Na23: + case Cl35: + case K39: + case V47: + case Fe55: + case Ni57: + spin = 4; + break; + + case Al27: + case Mn51: + spin = 6; + break; + + case Na22: + spin = 7; + break; + + case Co55: + case Co57: + case Sc43: + case Fe53: + spin = 8; + break; + + case Co56: + spin = 9; + break; + + + } + + return spin; + +} + + +#endif diff --git a/networks/He-C-Fe-group-simple/partition_functions_data.cpp b/networks/He-C-Fe-group-simple/partition_functions_data.cpp new file mode 100644 index 000000000..1b52b9083 --- /dev/null +++ b/networks/He-C-Fe-group-simple/partition_functions_data.cpp @@ -0,0 +1,655 @@ +#include +#include +#include +#include + +#include + +using namespace amrex; + +namespace part_fun { + + // this is T9 + + AMREX_GPU_MANAGED amrex::Array1D temp_array_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) + + AMREX_GPU_MANAGED amrex::Array1D O16_pf_array = { + 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.03742649794062367, 0.07188200730612536, 0.1205739312058499, 0.1846914308175988, 0.26245108973042947, + 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.555094448578319, 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) + + AMREX_GPU_MANAGED amrex::Array1D F18_pf_array = { + 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.008600171761917567, 0.02530586526477026, 0.04921802267018165, + 0.08635983067474821, 0.12385164096708583, 0.16731733474817606, 0.20682587603184974, 0.28330122870354957, + 0.35024801833416286, 0.4065401804339551, 0.45331834004703764, 0.4941545940184428, 0.6646419755561255, + 0.756636108245848, 0.8419848045901139, 0.9232440186302765, 1.0043213737826426, 1.08278537031645, + 1.1643528557844371, 1.250420002308894, 1.3384564936046048, 1.429752280002408, 1.6748611407378116, + 1.9405164849325671, 2.220108088040055, 2.505149978319906, 2.79309160017658, 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.6674529528899535, 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) + + AMREX_GPU_MANAGED amrex::Array1D Ne20_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 6.948656121358244e-06, 0.00016586881316040883, 0.0011034421778731533, 0.003892457497077877, + 0.00954097493969645, 0.01859524021829981, 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.193124598354461, 6.556302500767288, 6.916980047320382, 7.276461804173244, + 7.6344772701607315, 7.991669007379948, 8.34830486304816, 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.613841821876068, 14.3096301674259, 15.004321373782643, 15.702430536445526, 16.399673721481037, + 17.096910013008056, 18.838849090737256, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Ne21_pf_array = { + 0.0, 0.0, 0.0, 8.685880952436747e-07, 2.4754079983896385e-05, + 0.0001901793368385613, 0.0007372402163824667, 0.0019404293040471109, 0.0040039218205739505, 0.007021925578680666, + 0.010986057727319889, 0.04118891376750491, 0.0777722105539352, 0.11230632139519969, 0.14260436993417835, + 0.16888829052162926, 0.19197861038694294, 0.2126999294489824, 0.23172922294680384, 0.2666728249346414, + 0.2996105757244402, 0.3321030146619489, 0.3650139334448046, 0.3988146649899236, 0.46982201597816303, + 0.546542663478131, 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.9656719712201065, 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.84447717574568, + 13.55509444857832, 14.267171728403014, 14.979548374704095, 15.693726948923647, 16.40823996531185, + 17.123851640967086, 18.923244018630278, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Na22_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 4.342942647204277e-07, 2.605759074128604e-06, 1.3028639028478182e-05, 4.559852671908958e-05, 0.00011984873864003521, + 0.0002626687122755098, 0.0029928105843703536, 0.010836979076306525, 0.02428653620880802, 0.04242704733870039, + 0.06402310268617777, 0.08796765614200239, 0.11338308526345184, 0.13961150376071624, 0.19275584832811385, + 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.173186268412273, 12.544068044350276, 13.285557309007773, + 14.02938377768521, 14.773054693364262, 15.518513939877888, 16.264817823009537, 17.012837224705173, + 17.76492298464989, 19.64933485871214, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Na23_pf_array = { + 0.0, 0.0, 0.0, 0.0, 1.7371744532199383e-06, + 2.3885539658322847e-05, 0.00013113713282427166, 0.0004423207528904243, 0.0010999766245234136, 0.002232173197636284, + 0.003929471989446119, 0.021128907257497758, 0.0479649055541949, 0.07726249885377771, 0.10525805048344757, + 0.13079227003361296, 0.15390201926318714, 0.17503899265296466, 0.19472325248715508, 0.23147162936712465, + 0.26668504599022796, 0.3016913566252569, 0.33713446730536967, 0.37335950050705796, 0.4487063199050799, + 0.5314789170422551, 0.6211762817750351, 0.7218106152125465, 0.8344207036815325, 0.9590413923210935, + 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) + + AMREX_GPU_MANAGED amrex::Array1D Mg24_pf_array = { + 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.0007714899373308071, 0.0037633124724497633, 0.010764115210255056, + 0.022625058328435317, 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.9749719942980689, + 1.1172712956557642, 1.2741578492636798, 1.4424797690644486, 1.6232492903979006, 2.103803720955957, + 2.598790506763115, 3.089905111439398, 3.577491799837225, 4.05307844348342, 4.52244423350632, + 4.984527313343793, 5.440909082065217, 5.894869656745253, 6.344392273685111, 6.791690649020118, + 7.235528446907549, 7.6785183790401135, 8.12057393120585, 8.558708570533165, 8.99563519459755, + 9.431363764158988, 9.866287339084195, 10.301029995663981, 10.732393759822969, 11.164352855784436, + 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.089905111439396, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Al27_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 8.685880952436747e-07, 3.4743419578801875e-06, + 1.0422942490878872e-05, 0.00032429686817590634, 0.0018833542475028369, 0.005477808032249925, 0.011239204769804155, + 0.01890428637893266, 0.028126564553716336, 0.03862016194970278, 0.05018673657450416, 0.07608019569340022, + 0.10530099179798431, 0.13774106877747655, 0.1734986149135784, 0.21278880583973628, 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.423245873936807, 13.89707700320942, 14.371067862271737, + 14.845098040014257, 15.320146286111054, 15.79309160017658, 16.267171728403014, 17.214843848047696, + 18.161368002234976, 19.110589710299248, 20.060697840353612, 21.012837224705173, 21.96284268120124, + 22.915927211697117, 25.305351369446623, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Si28_pf_array = { + 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.12184552784347e-05, 0.0005624812393818785, 0.002223099674110693, + 0.0059171580771474625, 0.012282407118825528, 0.02157709561709228, 0.03370716078346824, 0.06502557053071237, + 0.1027522772573885, 0.14387160800291654, 0.1866035043986153, 0.2302807913268337, 0.3222192947339193, + 0.42324587393680785, 0.541579243946581, 0.6839471307515121, 0.8518696007297664, 1.041392685158225, + 1.250420002308894, 1.4727564493172123, 1.7024305364455252, 1.9375178920173466, 2.531478917042255, + 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.85913829729453, + 16.367355921026018, 16.8750612633917, 17.38201704257487, 17.88874096068289, 18.90036712865647, + 19.911157608739977, 20.921166050637737, 21.9304395947667, 22.93951925261862, 23.948901760970212, + 24.958563883221967, 27.48572142648158, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D P31_pf_array = { + 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.0005624812393818785, 0.002468018295084159, 0.006670091319158333, + 0.013688955408210905, 0.023674199668938998, 0.03655105068012579, 0.05215275629691826, 0.09085986215557586, + 0.13887811232360858, 0.19608052467040618, 0.26289299085539924, 0.33982852740425823, 0.5237464668115644, + 0.7419390777291989, 0.9827233876685453, 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.029383777685208, + 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) + + AMREX_GPU_MANAGED amrex::Array1D S32_pf_array = { + 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.948155872801059e-05, 0.0003893875360542875, + 0.001336870159627728, 0.003378232401258555, 0.006963377556787149, 0.012456734172197398, 0.03011415790845077, + 0.057484285853877215, 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.888740960682892, 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) + + AMREX_GPU_MANAGED amrex::Array1D Cl35_pf_array = { + 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.027253766962590423, 0.0532486689285615, + 0.09021853774459236, 0.13964204799692437, 0.20296975189964023, 0.28111453407611076, 0.48000694295715063, + 0.7234556720351858, 0.9934362304976116, 1.2741578492636798, 1.5587085705331658, 1.841984804590114, + 2.123851640967086, 2.401400540781544, 2.678518379040114, 2.951823035315912, 3.6263403673750423, + 4.2878017299302265, 4.942008053022313, 5.588831725594207, 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.33041377334919, 21.95375969173323, 23.20139712432045, + 24.450249108319362, 25.699837725867244, 26.950364854376122, 28.20139712432045, 29.456366033129044, + 30.71264970162721, 33.862131379313034, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Ar36_pf_array = { + 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.00023141729162330258, 0.0010622869460975197, + 0.0031540913067783544, 0.007135153007315866, 0.013474284663478431, 0.02245187936733961, 0.048771089883939175, + 0.08643600351808534, 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.437750562820387, 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.92582757462474, 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) + + AMREX_GPU_MANAGED amrex::Array1D K39_pf_array = { + 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.00016282990201490303, 0.0005394928156396339, 0.0014074368520356395, 0.0031075244141559894, 0.010846721573671135, + 0.028297088943748088, 0.06095682921468604, 0.11414775667614005, 0.1912997955319451, 0.4132997640812518, + 0.7015679850559274, 1.0170333392987803, 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.619093330626742, + 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.839478047374197, 17.539076098792776, 18.238046103128795, + 18.936513742478894, 19.633468455579585, 20.33041377334919, 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) + + AMREX_GPU_MANAGED amrex::Array1D Ca40_pf_array = { + 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.6056887215373325e-05, 0.00012419046343446514, 0.0004254001802063995, 0.0011532564515138494, 0.005324252203746658, + 0.016451245325404363, 0.03938040551055626, 0.07909980819723089, 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) + + AMREX_GPU_MANAGED amrex::Array1D Sc43_pf_array = { + 0.0, 1.7371744532199383e-06, 3.2136602621167924e-05, 0.0006088881229004689, 0.0026394223512168323, + 0.006348788305828209, 0.011375876688411647, 0.017242084547645732, 0.02355944464942603, 0.03006796257543875, + 0.03661053325876141, 0.06810122175372875, 0.09804672309111766, 0.12848424511267922, 0.16058766813472455, + 0.1946644458530261, 0.23055748142930874, 0.26792627543589265, 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.45788189673399, 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.68214507637383, 41.55870857053316, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Ti44_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 4.342942647204277e-07, 1.7371744532199383e-06, + 7.382943437485089e-06, 0.0004987179011085028, 0.004043078170724821, 0.01413521502778782, 0.032426549056877405, + 0.05856115101668825, 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.1522883443830563, 2.5415792439465807, + 2.9334872878487053, 3.322219294733919, 3.7041505168397992, 4.079181246047625, 4.996073654485276, + 5.885361220031512, 6.757396028793024, 7.619093330626742, 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) + + AMREX_GPU_MANAGED amrex::Array1D V47_pf_array = { + 2.518834949526704e-05, 0.0007584840322833457, 0.004226764680268442, 0.024475815916759104, 0.05998274311239668, + 0.10280266491559079, 0.14672973694476377, 0.1885209834473098, 0.22688178294786615, 0.2615226538586488, + 0.29260868165003595, 0.4071409645052156, 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.285557309007773, 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) + + AMREX_GPU_MANAGED amrex::Array1D Cr48_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 8.685880952436747e-07, 8.251516766996927e-06, 3.951899976600419e-05, 0.00013330794422173613, + 0.00035120219371925, 0.006401856055765157, 0.02685304570895992, 0.06215311825135839, 0.10696594975266842, + 0.15598699109465686, 0.205815844445829, 0.25471214514215257, 0.30198352738731143, 0.39152612205819926, + 0.47640596203905256, 0.5602400543128645, 0.6474755901642433, 0.7433846322638775, 0.983175072037813, + 1.3096301674258988, 1.7067177823367587, 2.1398790864012365, 2.577491799837225, 3.012837224705172, + 3.437750562820388, 3.8549130223078554, 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.23299611039215, 38.99913054128737, 40.764922984649886, 42.5327543789925, + 44.30102999566398, 48.727541257028555, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Mn51_pf_array = { + 0.0, 0.0, 4.342942647204277e-07, 6.0362737871404116e-05, 0.0005954436481690331, + 0.002352703452491265, 0.0058636025937444025, 0.011219737158250306, 0.018191443590229183, 0.026405776501228783, + 0.035473365577059296, 0.08393991903492294, 0.12694077261184436, 0.16267998396542166, 0.19356340377635362, + 0.22185561141496238, 0.2491212785730439, 0.27638918590325057, 0.30436276263857276, 0.36442247019537943, + 0.4326074417788097, 0.5117005179251304, 0.6041057952026397, 0.7115562776994953, 0.9717395908877782, + 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.029383777685208, 19.985426474083003, + 20.93851972517649, 21.88986172125819, 22.839478047374197, 23.787460474518415, 24.73399928653839, + 25.67942789661212, 26.6232492903979, 27.56702636615906, 28.5092025223311, 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) + + AMREX_GPU_MANAGED amrex::Array1D Fe52_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 1.7371744532199383e-06, 9.554373504133797e-06, 3.778197643341552e-05, + 0.00011333607006293108, 0.0030242952161453874, 0.015422212189991184, 0.040215337130588114, 0.07478865660777631, + 0.11488541698288196, 0.15714990338033966, 0.19960737134331175, 0.24132628928072955, 0.3217032118192907, + 0.3993396534463543, 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.944482672150168, 7.989894563718773, 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) + + AMREX_GPU_MANAGED amrex::Array1D Fe53_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 1.3028814913777444e-06, 6.080080186165502e-06, 2.0411360986187104e-05, + 5.384917717601842e-05, 0.00099773035779373, 0.004491618246634796, 0.011583129716232713, 0.02260939259680282, + 0.037536053829818145, 0.056184239286028684, 0.07836255359576534, 0.10393433162264984, 0.16508072986206487, + 0.2398955676994077, 0.3292351155694239, 0.43390673907557786, 0.5541592859186848, 0.8375884382355113, + 1.1702617153949575, 1.5314789170422551, 1.9148718175400503, 2.3096301674258988, 2.710963118995276, + 3.1172712956557644, 3.5276299008713385, 3.940516484932567, 4.3560258571931225, 5.396199347095736, + 6.440909082065217, 7.48572142648158, 8.52762990087134, 9.564666064252089, 10.597695185925513, + 11.626340367375043, 12.650307523131936, 13.669316880566113, 14.683947130751513, 15.69460519893357, + 16.700703717145018, 17.7041505168398, 18.70329137811866, 19.699837725867244, 20.693726948923647, + 21.684845361644413, 22.67394199863409, 23.65991620006985, 24.64542226934909, 25.62838893005031, + 26.60959440922522, 27.589949601325706, 28.569373909615045, 29.547774705387823, 30.525044807036846, + 31.50105926221775, 32.47712125471966, 33.45331834004704, 34.428134794028786, 36.37839790094814, + 38.32837960343874, 40.27875360095283, 42.230448921378276, 44.1846914308176, 46.13987908640124, + 48.096910013008056, 52.99956548822598, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Fe54_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 4.038750882690593e-05, 0.0006153933644858295, 0.0031795285189803882, 0.009608097244673557, + 0.021489478918632662, 0.039963481298721557, 0.06578505049986659, 0.09933285917375559, 0.18904568529064877, + 0.30450216050560097, 0.4386136969546961, 0.5858349639065905, 0.7435112541834851, 1.089905111439398, + 1.4727564493172123, 1.8864907251724818, 2.320146286111054, 2.760422483423212, 3.204119982655925, + 3.6503075231319366, 4.093421685162235, 4.539076098792776, 4.982271233039568, 6.089905111439398, + 7.190331698170292, 8.287801729930226, 9.378397900948137, 10.462397997898956, 11.539076098792776, + 12.61066016308988, 13.675778341674086, 14.734799829588846, 15.789580712164426, 16.838219221907625, + 17.88252453795488, 18.922206277439017, 19.957607287060096, 20.989449817666692, 22.01703333929878, + 23.041392685158225, 24.06445798922692, 25.08278537031645, 26.100370545117563, 27.113943352306837, + 28.127104798364808, 29.136720567156406, 30.146128035678238, 31.155336037465062, 32.16136800223497, + 33.164352855784436, 34.17026171539496, 35.17318626841227, 36.17609125905568, 38.17897694729317, + 40.18184358794477, 42.18184358794477, 44.18184358794477, 46.1846914308176, 48.1846914308176, + 50.18752072083646, 55.204119982655925, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Fe55_pf_array = { + 0.0, 0.0, 0.0, 0.0, 1.3028814913777444e-06, + 1.5634319932414176e-05, 7.599488497457784e-05, 0.0002370600756061832, 0.0005564089438241259, 0.0010813488014597976, + 0.0018431377713960377, 0.009434322601068017, 0.022947317188587973, 0.04207202183227031, 0.06669370834774807, + 0.09644559083435453, 0.13073538555922604, 0.1689268514992448, 0.210470482925873, 0.30216484315823844, + 0.40437472924396634, 0.5173772341350337, 0.6421575367181118, 0.7795497407641858, 1.089905111439398, + 1.4471580313422192, 1.8312296938670634, 2.2355284469075487, 2.649334858712142, 3.0718820073061255, + 3.496929648073215, 3.926856708949692, 4.359835482339888, 4.79309160017658, 5.8819549713396, + 6.973589623427257, 8.064457989226918, 9.14921911265538, 10.232996110392154, 11.307496037913213, + 12.378397900948137, 13.444044795918076, 14.503790683057181, 15.558708570533165, 16.608526033577196, + 17.65417654187796, 18.69635638873333, 19.73399928653839, 20.768638101247614, 21.800029359244135, + 22.82865989653532, 23.854913022307855, 24.878521795501207, 25.899820502427097, 26.91960102378411, + 27.937517892017347, 28.954242509439325, 29.96941591235398, 30.983626287124533, 31.99694924849538, + 33.00860017176192, 34.02118929906994, 35.03342375548695, 36.04532297878666, 38.064457989226916, + 40.086359830674745, 42.10720996964787, 44.127104798364805, 46.15228834438306, 48.17609125905568, + 50.20139712432045, 55.28103336724773, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Fe56_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 1.7371744532199383e-06, 9.988658214691801e-06, 3.951899976600419e-05, + 0.00011724368292883856, 0.0030902761496993327, 0.0156878675130911, 0.04089651650139037, 0.07635858866725904, + 0.11828391003740016, 0.16392102383975418, 0.21196213905930564, 0.2621108778253895, 0.36964919324674056, + 0.4887648498436591, 0.6206486780522652, 0.76578080127876, 0.924731337394998, 1.2855573090077739, + 1.6972293427597176, 2.143014800254095, 2.606381365110605, 3.0718820073061255, 3.5403294747908736, + 4.004321373782642, 4.468347330412158, 4.928395852256714, 5.38738982633873, 6.5276299008713385, + 7.660865478003869, 8.788168371141168, 9.909556029241175, 11.02530586526477, 12.136720567156408, + 13.2405492482826, 14.340444114840118, 15.432969290874405, 16.52244423350632, 17.606381365110604, + 18.686636269262294, 19.76192783842053, 20.833147111912787, 21.90036712865647, 22.96473092105363, + 24.02530586526477, 25.08278537031645, 26.139879086401237, 27.193124598354462, 28.243038048686294, + 29.292256071356476, 30.338456493604603, 31.383815365980432, 32.428134794028786, 33.46982201597816, + 34.51188336097887, 35.552668216112195, 36.59217675739587, 37.631443769013174, 39.70842090013471, + 41.78390357927273, 43.85913829729453, 45.93449845124357, 48.00860017176192, 50.086359830674745, + 52.164352855784436, 57.37106786227174, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Co55_pf_array = { + 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.685880952436747e-07, 1.4331481434642371e-05, 9.336327741651445e-05, + 0.00038114325769492564, 0.001151090732337307, 0.0028275866787247843, 0.0059861278100218065, 0.019727612600003865, + 0.049238961363648255, 0.10167663281566902, 0.18228879723157643, 0.29243817096179087, 0.5865873046717549, + 0.9449759084120479, 1.3324384599156054, 1.7363965022766423, 2.1492191126553797, 2.56702636615906, + 2.991226075692495, 3.419955748489758, 3.851869600729766, 4.2878017299302265, 5.382017042574868, + 6.482873583608754, 7.5820633629117085, 8.677606952720494, 9.767155866082181, 10.85003325768977, + 11.927370363039023, 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.75587485567249, + 39.786751422145564, 41.818225893613956, 43.850033257689766, 45.88309335857569, 47.91750550955255, + 49.954242509439325, 55.05690485133647, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Co56_pf_array = { + 0.0, 1.7371744532199383e-06, 3.4307908925770636e-05, 0.0007363730997827178, 0.003397192878964486, + 0.008467734331585224, 0.01550645173957485, 0.0238164702394971, 0.03279759856010612, 0.04203693696495622, + 0.05128645751287552, 0.09519865223967466, 0.13622861655702886, 0.176714169466867, 0.21729965897649603, + 0.2578772011708393, 0.2983265845453606, 0.3387098245578885, 0.3792523836931725, 0.46216521358362883, + 0.5500314690476197, 0.6456769741905006, 0.7513340033440492, 0.8684365267163909, 1.1367205671564067, + 1.4517864355242902, 1.7986506454452689, 2.1702617153949575, 2.5599066250361124, 2.9614210940664485, + 3.3729120029701067, 3.7902851640332416, 4.214843848047698, 4.6414741105041, 5.723455672035186, + 6.814913181275074, 7.9084850188786495, 9.0, 10.089905111439398, 11.173186268412275, + 12.250420002308894, 13.32633586092875, 14.394451680826217, 15.459392487759231, 16.521138083704038, + 17.577491799837226, 18.630427875025024, 19.680335513414562, 20.727541257028555, 21.77232170672292, + 22.81358098856819, 23.853089529851864, 24.890979596989688, 25.926856708949693, 26.960946195733833, + 27.99387691494121, 29.02530586526477, 30.056904851336473, 31.08635983067475, 32.11727129565576, + 33.14612803567824, 34.17318626841227, 35.20139712432045, 36.230448921378276, 38.28555730900777, + 40.3424226808222, 42.39967372148104, 44.45939248775923, 46.52113808370404, 48.5854607295085, + 50.651278013998144, 55.831229693867066, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Co57_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 4.342942647204277e-07, 4.994099386680048e-05, 0.0005963110461953748, 0.0027783956198411766, 0.008035647971175024, + 0.017613403025029208, 0.03234391616743567, 0.05264970241280307, 0.07864673504318612, 0.14731854080928636, + 0.23700682147881122, 0.34629017327562855, 0.47392017252998775, 0.6185154181425263, 0.9503648543761231, + 1.3263358609287514, 1.7299742856995557, 2.1492191126553797, 2.57978359661681, 3.0170333392987803, + 3.456366033129043, 3.900913067737669, 4.348304863048161, 4.795880017344075, 5.922206277439017, + 7.05307844348342, 8.178976947293169, 9.30319605742049, 10.423245873936807, 11.537819095073274, + 12.64640372622307, 13.751279103983343, 14.850646235183067, 15.94546858513182, 17.037426497940622, + 18.12057393120585, 19.204119982655925, 20.28330122870355, 21.357934847000454, 22.431363764158988, + 23.50105926221775, 24.568201724066995, 25.632457292184725, 26.69635638873333, 27.757396028793025, + 28.81690383937566, 29.87563993700417, 30.93247376467715, 31.989004615698537, 33.04532297878666, + 34.10037054511756, 35.15228834438306, 36.20682587603185, 37.26007138798507, 39.3654879848909, + 41.47275644931721, 43.578639209968074, 45.686636269262294, 47.79657433321043, 49.90794852161227, + 52.02118929906994, 57.31806333496276, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Ni56_pf_array = { + 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.817230319428646e-06, 6.42708273977769e-05, + 0.0002904458650804842, 0.0009123622824012837, 0.0022498876258026487, 0.0046944487518873, 0.014735532704563181, + 0.03529042138996706, 0.07190703372466718, 0.13162956968664008, 0.22190042758492473, 0.5092025223311029, + 0.9132839017604184, 1.374748346010104, 1.8555191556678001, 2.3404441148401185, 2.8221680793680175, + 3.3031960574204886, 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.053078443483418, 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, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Ni57_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 4.342942647204277e-07, 1.7371744532199383e-06, 9.554373504133797e-06, 3.257086475060328e-05, + 8.771862606148251e-05, 0.0017410663385697559, 0.007809206274475302, 0.01921477477459369, 0.03493231633712192, + 0.05345799700199783, 0.07364137994668778, 0.0948950837519807, 0.11713833477999397, 0.16608656859343765, + 0.22565890312281184, 0.3025878355093501, 0.4025382106894563, 0.5279492540555757, 0.8463371121298052, + 1.2253092817258628, 1.631443769013172, 2.05307844348342, 2.484299839346786, 2.9237619608287004, + 3.369215857410143, 3.8188854145940097, 4.27415784926368, 4.731588765186738, 5.884795363948981, + 7.041392685158225, 8.195899652409233, 9.344392273685111, 10.482873583608754, 11.613841821876068, + 12.736396502276643, 13.851258348719075, 14.959041392321094, 16.060697840353612, 17.15836249209525, + 18.247973266361807, 19.332438459915604, 20.414973347970818, 21.492760389026838, 22.565847818673518, + 23.636487896353366, 24.7041505168398, 25.768638101247614, 26.831229693867062, 27.89209460269048, + 28.950851458888547, 30.008600171761916, 31.06445798922692, 32.11727129565576, 33.17026171539496, + 34.222716471147585, 35.27415784926368, 36.32633586092875, 37.376576957056514, 39.478566495593846, + 41.578639209968074, 43.67851837904011, 45.77959649125783, 47.88252453795488, 49.98721922990801, + 52.093421685162234, 57.372912002970104, + }; + + // this is log10(partition function) + + AMREX_GPU_MANAGED amrex::Array1D Ni58_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 2.822822391636452e-05, 0.0004722555358597003, 0.0025858928325085315, 0.008151594991554035, + 0.018820703394680185, 0.03585661791649524, 0.060127596252288286, 0.09212527438468374, 0.17939292292561174, + 0.29475734836761314, 0.43276876399762537, 0.5886922364625494, 0.7597527315231631, 1.1398790864012365, + 1.5670263661590604, 2.0211892990699383, 2.4913616938342726, 2.968015713993642, 3.4471580313422194, + 3.9253120914996495, 4.4048337166199385, 4.884795363948981, 5.363611979892144, 6.561101383649056, + 7.754348335711019, 8.94101424370557, 10.12057393120585, 11.290034611362518, 12.45178643552429, + 13.60530504614111, 14.752048447819439, 15.89209460269048, 17.02530586526477, 18.155336037465062, + 19.276461804173245, 20.394451680826215, 21.50650503240487, 22.6159500516564, 23.72098574415374, + 24.822168079368016, 25.920123326290724, 27.01703333929878, 28.10720996964787, 29.198657086954423, + 30.285557309007775, 31.371067862271737, 32.456366033129044, 33.539076098792776, 34.620136054973756, + 35.70070371714502, 36.78031731214015, 37.85853719756964, 38.936513742478894, 41.0899051114394, + 43.243038048686294, 45.39619934709574, 47.549003262025785, 49.70156798505593, 51.8561244442423, + 54.01283722470517, 59.41161970596323, + }; + + +} + diff --git a/networks/He-C-Fe-group-simple/pynucastro.net b/networks/He-C-Fe-group-simple/pynucastro.net new file mode 100644 index 000000000..7773fdfd6 --- /dev/null +++ b/networks/He-C-Fe-group-simple/pynucastro.net @@ -0,0 +1,37 @@ +neutron n 1.0 0.0 +hydrogen-1 H1 1.0 1.0 +helium-4 He4 4.0 2.0 +carbon-12 C12 12.0 6.0 +nitrogen-13 N13 13.0 7.0 +nitrogen-14 N14 14.0 7.0 +oxygen-16 O16 16.0 8.0 +fluorine-18 F18 18.0 9.0 +neon-20 Ne20 20.0 10.0 +neon-21 Ne21 21.0 10.0 +sodium-22 Na22 22.0 11.0 +sodium-23 Na23 23.0 11.0 +magnesium-24 Mg24 24.0 12.0 +aluminum-27 Al27 27.0 13.0 +silicon-28 Si28 28.0 14.0 +phosphorus-31 P31 31.0 15.0 +sulfur-32 S32 32.0 16.0 +argon-36 Ar36 36.0 18.0 +calcium-40 Ca40 40.0 20.0 +titanium-44 Ti44 44.0 22.0 +chromium-48 Cr48 48.0 24.0 +manganese-51 Mn51 51.0 25.0 +iron-52 Fe52 52.0 26.0 +iron-54 Fe54 54.0 26.0 +iron-56 Fe56 56.0 26.0 +cobalt-55 Co55 55.0 27.0 +cobalt-56 Co56 56.0 27.0 +cobalt-57 Co57 57.0 27.0 +nickel-56 Ni56 56.0 28.0 +nickel-58 Ni58 58.0 28.0 +__extra_chlorine-35 Cl35 35.0 17.0 +__extra_potassium-39 K39 39.0 19.0 +__extra_scandium-43 Sc43 43.0 21.0 +__extra_vanadium-47 V47 47.0 23.0 +__extra_iron-53 Fe53 53.0 26.0 +__extra_iron-55 Fe55 55.0 26.0 +__extra_nickel-57 Ni57 57.0 28.0 diff --git a/networks/He-C-Fe-group-simple/reaclib_rates.H b/networks/He-C-Fe-group-simple/reaclib_rates.H new file mode 100644 index 000000000..780c60edd --- /dev/null +++ b/networks/He-C-Fe-group-simple/reaclib_rates.H @@ -0,0 +1,7547 @@ +#ifndef REACLIB_RATES_H +#define REACLIB_RATES_H + +#include +#include + +#include +#include +#include + +using namespace Rates; +using namespace Species; + +struct rate_t { + amrex::Array1D screened_rates; + amrex::Real enuc_weak; +}; + +struct rate_derivs_t { + amrex::Array1D screened_rates; + amrex::Array1D dscreened_rates_dT; + amrex::Real enuc_weak; +}; + + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // C12 + p --> 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}; + + // 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; + + 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; + } + + // 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_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; + + 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; + } + + // 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] + 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_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // N14 + 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}; + + // 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 = + -(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] + 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.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; + } + + // 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 = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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_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 = 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] + 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; + } + + // 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; + } + + // 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; + } + + // 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 = + -(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] + 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_F18_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // F18 + He4 --> Na22 + + 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 = 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 = 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] + 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_Ne20_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Ne20 + 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 = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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 = 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 = + -(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] + 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 = -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 = 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] + 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 = 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; + } + + // 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_Ne21_to_Na22(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Ne21 + p --> Na22 + + 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 = -47.6554 + -0.19618 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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 = 19.0696 + -19.2096 * tfactors.T913i + + -1.0 * 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; + } + + // 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 = -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 = 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] + 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 = 1.75704 + -1.39957 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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_Na23_to_Mg24(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Na23 + p --> 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}; + + // 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 = + -(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] + 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 = 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 = 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] + 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.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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_Mg24_to_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Mg24 + He4 --> 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}; + + // 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 = 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] + 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 = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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) { + + // Al27 + p --> 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}; + + // 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; + + 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; + } + + // 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 = 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 = 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] + 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 = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * 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; + } + + // 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_Si28_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Si28 + He4 --> 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}; + + // 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 = + -(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] + 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_P31_to_S32(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // P31 + p --> 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}; + + // 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 = 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] + 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 = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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 = 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 = + -(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] + 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(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Cr48 + He4 --> 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 = 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) * -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] + 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_Mn51_to_Fe52(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_Mn51_to_Co55(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Mn51 + He4 --> 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 = 65.9219 + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 + + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i + + 1.00492 + (5.0/3.0) * -0.125548 * 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(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_p_Co55_to_Ni56(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_C12_C12_to_p_Na23(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // C12 + C12 --> 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}; + + // 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 = + -(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] + 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_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; + + 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; + } + + // 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_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.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] + 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_p_Al27(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // O16 + C12 --> p + Al27 + + 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 = 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 = -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] + 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) { + + // 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; + + 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; + } + + // 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_O16_O16_to_p_P31(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // O16 + O16 --> p + P31 + + 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 = 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 = -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] + 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_O16_O16_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // O16 + O16 --> He4 + 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 = 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 = 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] + 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_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.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] + 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_Na23_to_He4_Ne20(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Na23 + p --> 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}; + + // 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 = 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] + 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 = 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; + } + + // 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 = 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 = + -(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] + 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_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); + 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_P31_to_He4_Si28(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // P31 + p --> He4 + 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}; + + // 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; + + 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 = 1.87716 * 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 = 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) * -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] + 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_p_Mn51(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Cr48 + He4 --> p + Mn51 + + 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 = 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 = + -(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] + 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(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_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.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] + 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; + } + + // 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.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] + 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_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; + + 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; + } + + // 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_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 = 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] + 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_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.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] + 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_Fe54_to_Co55(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Fe54 + 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 = 36.2304 + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 + + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i + + -1.77529 + (5.0/3.0) * 0.198562 * 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_Fe54_to_Ni58(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Fe54 + He4 --> Ni58 + + 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 = 60.2478 + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 + + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i + + -3.31305 + (5.0/3.0) * 0.271293 * 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_Fe56_to_Co57(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Fe56 + p --> Co57 + + 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.0665 + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 + + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i + + -1.31689 + (5.0/3.0) * 0.122089 * 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_n_Co55_to_Co56(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Co55 + n --> Co56 + + 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 = 17.065 + -1.86357 * tfactors.T913 + + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.86357 * tfactors.T923i + + 0.616591 + (5.0/3.0) * -0.0839313 * 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; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_n_Co56_to_Co57(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Co56 + n --> Co57 + + 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 = 17.3552 + -1.37855 * tfactors.T913 + + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.37855 * tfactors.T923i + + 0.299896 + (5.0/3.0) * -0.04382 * 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; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Co57_to_Ni58(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Co57 + p --> Ni58 + + 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.0159 + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 + + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i + + -1.48268 + (5.0/3.0) * 0.121073 * 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_Mn51_to_p_Fe54(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Mn51 + He4 --> p + Fe54 + + 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.2777 + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 + + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i + + -0.635672 + (5.0/3.0) * 0.0196464 * 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_Co55_to_p_Ni58(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Co55 + He4 --> p + Ni58 + + 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 = 60.2281 + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 + + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i + + -1.71062 + (5.0/3.0) * 0.133003 * 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_n_Co56_to_p_Fe56(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Co56 + n --> p + Fe56 + + 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 = 20.4539 + -1.13331 * tfactors.T913 + + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.13331 * tfactors.T923i + + 0.347185 + (5.0/3.0) * -0.0328879 * 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; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Co57_to_He4_Fe54(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Co57 + p --> He4 + Fe54 + + 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 = -2.1962 + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 + + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i + + -4.75966 + (5.0/3.0) * 0.40418 * 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_n_Ni56_to_p_Co56(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Ni56 + n --> p + Co56 + + 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 = 15.5693 + 1.76846 * tfactors.T913 + + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.76846 * tfactors.T923i + + 0.197992 + (5.0/3.0) * -0.017494 * 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; + } + +} + +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 + + 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 = 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) * -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] + 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_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 = 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; + } + + // 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 = 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_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Cl35 + p --> He4 + 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}; + + // 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; + + 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; + } + + // 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 = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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 = 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) * -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); + 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_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Ar36 + 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 = 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) * -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] + 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_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 = 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] + 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 = 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 = 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] + 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_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // K39 + p --> He4 + 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}; + + // 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) * -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] + 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_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 = + -(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] + 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_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Sc43 + p --> 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}; + + // 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) * -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] + 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_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 = + -(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] + 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_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) * -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] + 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_Ti44_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // 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_n_Fe52_to_Fe53_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Fe52 + n --> Fe53 + + 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 = 15.8885 + -0.344319 * tfactors.T913 + + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.344319 * tfactors.T923i + + 0.178277 + (5.0/3.0) * -0.0334326 * 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; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_n_Fe53_to_Fe54_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Fe53 + n --> Fe54 + + 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 = 16.4534 + -1.10421 * tfactors.T913 + + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.10421 * tfactors.T923i + + 0.379905 + (5.0/3.0) * -0.0581878 * 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; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_n_Fe54_to_Fe55_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Fe54 + n --> Fe55 + + 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}; + + // ks03 + ln_set_rate = -0.80864 + 0.0591716 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 + + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -9.78317 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0591716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i + + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -9.78317 * 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_n_Fe55_to_Fe56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Fe55 + n --> Fe56 + + 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}; + + // ks03 + ln_set_rate = 21.7202 + -0.0955677 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 + + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 6.47093 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0955677 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i + + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 6.47093 * 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_n_Ni56_to_Ni57_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Ni56 + n --> Ni57 + + 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 = 16.0765 + -1.19665 * tfactors.T913 + + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.19665 * tfactors.T923i + + 0.507179 + (5.0/3.0) * -0.074604 * 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; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_n_Ni57_to_Ni58_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Ni57 + n --> Ni58 + + 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 = 17.2731 + -1.90814 * tfactors.T913 + + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.90814 * tfactors.T923i + + 0.493188 + (5.0/3.0) * -0.0684633 * 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; + } + +} + +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 = 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] + 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; + } + + // 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 = 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] + 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 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_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) { + + // O16 --> 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}; + + // 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 = 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] + 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 = 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 = 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] + 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 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 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_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 = 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] + 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 = 38.61457954391361 + -62.19490570025806 * tfactors.T9i + -5.6227 * tfactors.T913i; + + if constexpr (do_T_derivatives) { + 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] + 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 = 24.91191754391361 + -56.38964570025806 * tfactors.T9i; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 56.38964570025806 * 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; + } + + + 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_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 = 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] + 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; + } + + // co10c + ln_set_rate = 28.64304585936365 + -65.24613003813835 * tfactors.T9i; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.24613003813835 * 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; + } + + // 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 = 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] + 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 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_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) { + + // Na22 --> 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}; + + // il10c + ln_set_rate = -24.579038986172677 + -78.40599033331655 * tfactors.T9i; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.40599033331655 * 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; + } + + // 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 = 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] + 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 = -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 = 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] + 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 = 24.833401013827324 + -79.60938033331655 * tfactors.T9i; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.60938033331655 * 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; + } + + + 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 = 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] + 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 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_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) { + + // 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}; + + // 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 = 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] + 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 = 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 = 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] + 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 = 20.002361764706784 + -137.3003390421346 * tfactors.T9i; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 137.3003390421346 * 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; + } + + + 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_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) { + + // Mg24 --> 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}; + + // il10c + ln_set_rate = -13.886931148855957 + -110.62012330714883 * tfactors.T9i; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 110.62012330714883 * 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; + } + + // 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 = 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] + 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 = 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 = 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] + 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 = 117.33433330714882 * 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; + } + + + 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_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) { + + // Si28 --> p + Al27 + + 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 = 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 = 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] + 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 = 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 = 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] + 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 = 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 = 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] + 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 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_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) { + + // Si28 --> 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}; + + // 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 = 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] + 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 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_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) { + + // S32 --> p + P31 + + 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 = 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 = 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] + 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 = 21.682890958303158 + -105.11947563716609 * tfactors.T9i; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 105.11947563716609 * 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; + } + + // 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 = 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] + 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 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_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) { + + // S32 --> He4 + 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}; + + // 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 = 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] + 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 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_Fe52_to_p_Mn51_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Fe52 --> p + Mn51 + + 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 = 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 = 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] + 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 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_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Fe52 --> 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 = 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 = 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] + 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 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_Co55_to_He4_Mn51_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Co55 --> He4 + Mn51 + + 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 = 90.61300778512097 + -95.28620688500884 * tfactors.T9i + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 + + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + 0.833333 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 95.28620688500884 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i + + 1.00492 + (5.0/3.0) * -0.125548 * 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; + } + + + 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 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 z_r = He4_pf * Mn51_pf; + amrex::Real z_p = Co55_pf; + + amrex::Real dz_r_dT = Mn51_pf * dHe4_pf_dT + He4_pf * dMn51_pf_dT; + amrex::Real dz_p_dT = 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; + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Ni56 --> 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 = 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.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; + } + + // 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 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_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Ni56 --> He4 + 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 = 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.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; + } + + // 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 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_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 = 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] + 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; + } + + // 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 = 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] + 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; + } + + // 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 = 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] + 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 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_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) { + + // 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.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 = 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] + 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 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_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) { + + // Ne20 + He4 --> 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}; + + // 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 = 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] + 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 = 0.227472413562738 + -29.434873644623337 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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 = 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 = 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] + 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 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_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) { + + // Ne21 + p --> 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 = 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 = 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] + 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 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_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) { + + // Mg24 + He4 --> p + Al27 + + 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 = -6.445750338407262 + -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 = 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] + 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.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 = 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] + 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 = 30.039739661592737 + -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 = 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] + 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 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_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) { + + // Si28 + He4 --> p + P31 + + 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 = -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 = 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] + 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 = -13.459473139095032 + -24.11106858572089 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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 = 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 = 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] + 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 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_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Mn51 + p --> 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 = 58.73119795916719 + -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 = 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] + 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 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_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Co55 + p --> He4 + 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 = 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.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; + } + + // 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 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; + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Co55_to_p_Fe54_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Co55 --> p + Fe54 + + 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 = 57.82919157553295 + -58.76609208478817 * tfactors.T9i + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 + + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + 0.833333 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 58.76609208478817 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i + + -1.77529 + (5.0/3.0) * 0.198562 * 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; + } + + + 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 Fe54_pf, dFe54_pf_dT; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors, pf_cache, Fe54_pf, dFe54_pf_dT); + + amrex::Real z_r = p_pf * Fe54_pf; + amrex::Real z_p = Co55_pf; + + amrex::Real dz_r_dT = Fe54_pf * dp_pf_dT + p_pf * dFe54_pf_dT; + amrex::Real dz_p_dT = 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; + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Co56_to_n_Co55_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Co56 --> n + 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 = 40.62594603130468 + -117.00951667337291 * tfactors.T9i + -1.86357 * tfactors.T913 + + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953 + 1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 117.00951667337291 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.86357 * tfactors.T923i + + 0.616591 + (5.0/3.0) * -0.0839313 * 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; + } + + + amrex::Real n_pf, dn_pf_dT; + // setting n partition function to 1.0 by default, independent of T + n_pf = 1.0_rt; + dn_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 Co56_pf, dCo56_pf_dT; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors, pf_cache, Co56_pf, dCo56_pf_dT); + + amrex::Real z_r = n_pf * Co55_pf; + amrex::Real z_p = Co56_pf; + + amrex::Real dz_r_dT = Co55_pf * dn_pf_dT + n_pf * dCo55_pf_dT; + amrex::Real dz_p_dT = dCo56_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_Co57_to_n_Co56_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Co57 --> n + Co56 + + 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 = 41.15219049522237 + -132.01531905660212 * tfactors.T9i + -1.37855 * tfactors.T913 + + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953 + 1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 132.01531905660212 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37855 * tfactors.T923i + + 0.299896 + (5.0/3.0) * -0.04382 * 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; + } + + + amrex::Real n_pf, dn_pf_dT; + // setting n partition function to 1.0 by default, independent of T + n_pf = 1.0_rt; + dn_pf_dT = 0.0_rt; + + amrex::Real Co56_pf, dCo56_pf_dT; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors, pf_cache, Co56_pf, dCo56_pf_dT); + + amrex::Real Co57_pf, dCo57_pf_dT; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors, pf_cache, Co57_pf, dCo57_pf_dT); + + amrex::Real z_r = n_pf * Co56_pf; + amrex::Real z_p = Co57_pf; + + amrex::Real dz_r_dT = Co56_pf * dn_pf_dT + n_pf * dCo56_pf_dT; + amrex::Real dz_p_dT = dCo57_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_Co57_to_p_Fe56_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Co57 --> p + Fe56 + + 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 = 57.66626591788614 + -69.94994642462048 * tfactors.T9i + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 + + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + 0.833333 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 69.94994642462048 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i + + -1.31689 + (5.0/3.0) * 0.122089 * 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; + } + + + 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 Fe56_pf, dFe56_pf_dT; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors, pf_cache, Fe56_pf, dFe56_pf_dT); + + amrex::Real Co57_pf, dCo57_pf_dT; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors, pf_cache, Co57_pf, dCo57_pf_dT); + + amrex::Real z_r = p_pf * Fe56_pf; + amrex::Real z_p = Co57_pf; + + amrex::Real dz_r_dT = Fe56_pf * dp_pf_dT + p_pf * dFe56_pf_dT; + amrex::Real dz_p_dT = dCo57_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_Ni58_to_p_Co57_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Ni58 --> p + Co57 + + 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 = 61.775010752827114 + -94.83746016924091 * tfactors.T9i + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 + + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + 0.833333 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 94.83746016924091 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i + + -1.48268 + (5.0/3.0) * 0.121073 * 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; + } + + + 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 Ni58_pf, dNi58_pf_dT; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors, pf_cache, Ni58_pf, dNi58_pf_dT); + + amrex::Real Co57_pf, dCo57_pf_dT; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors, pf_cache, Co57_pf, dCo57_pf_dT); + + amrex::Real z_r = p_pf * Co57_pf; + amrex::Real z_p = Ni58_pf; + + amrex::Real dz_r_dT = Co57_pf * dp_pf_dT + p_pf * dCo57_pf_dT; + amrex::Real dz_p_dT = dNi58_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_Ni58_to_He4_Fe54_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Ni58 --> He4 + Fe54 + + 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 = 85.23266274036175 + -74.27065665689001 * tfactors.T9i + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 + + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + 0.833333 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.27065665689001 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i + + -3.31305 + (5.0/3.0) * 0.271293 * 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; + } + + + 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 Ni58_pf, dNi58_pf_dT; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors, pf_cache, Ni58_pf, dNi58_pf_dT); + + amrex::Real Fe54_pf, dFe54_pf_dT; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors, pf_cache, Fe54_pf, dFe54_pf_dT); + + amrex::Real z_r = He4_pf * Fe54_pf; + amrex::Real z_p = Ni58_pf; + + amrex::Real dz_r_dT = Fe54_pf * dHe4_pf_dT + He4_pf * dFe54_pf_dT; + amrex::Real dz_p_dT = dNi58_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_Fe54_to_He4_Mn51_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Fe54 + p --> He4 + Mn51 + + 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 = 65.37001620958803 + -36.52011480022066 * tfactors.T9i + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 + + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 36.52011480022066 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i + + -0.635672 + (5.0/3.0) * 0.0196464 * 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; + } + + + 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 Mn51_pf, dMn51_pf_dT; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors, pf_cache, Mn51_pf, dMn51_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 Fe54_pf, dFe54_pf_dT; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors, pf_cache, Fe54_pf, dFe54_pf_dT); + + amrex::Real z_r = He4_pf * Mn51_pf; + amrex::Real z_p = p_pf * Fe54_pf; + + amrex::Real dz_r_dT = Mn51_pf * dHe4_pf_dT + He4_pf * dMn51_pf_dT; + amrex::Real dz_p_dT = Fe54_pf * dp_pf_dT + p_pf * dFe54_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_Fe54_to_p_Co57_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Fe54 + He4 --> p + Co57 + + 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 = -1.4219519875346407 + -20.56680351235092 * tfactors.T9i + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 + + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 20.56680351235092 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i + + -4.75966 + (5.0/3.0) * 0.40418 * 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; + } + + + 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 Co57_pf, dCo57_pf_dT; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors, pf_cache, Co57_pf, dCo57_pf_dT); + + amrex::Real Fe54_pf, dFe54_pf_dT; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors, pf_cache, Fe54_pf, dFe54_pf_dT); + + amrex::Real z_r = p_pf * Co57_pf; + amrex::Real z_p = He4_pf * Fe54_pf; + + amrex::Real dz_r_dT = Co57_pf * dp_pf_dT + p_pf * dCo57_pf_dT; + amrex::Real dz_p_dT = Fe54_pf * dHe4_pf_dT + He4_pf * dFe54_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_Fe56_to_n_Co56_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Fe56 + p --> n + Co56 + + 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 = 22.65112457733622 + -62.065024496438 * tfactors.T9i + -1.13331 * tfactors.T913 + + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 62.065024496438 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13331 * tfactors.T923i + + 0.347185 + (5.0/3.0) * -0.0328879 * 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; + } + + + amrex::Real n_pf, dn_pf_dT; + // setting n partition function to 1.0 by default, independent of T + n_pf = 1.0_rt; + dn_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 Fe56_pf, dFe56_pf_dT; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors, pf_cache, Fe56_pf, dFe56_pf_dT); + + amrex::Real Co56_pf, dCo56_pf_dT; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors, pf_cache, Co56_pf, dCo56_pf_dT); + + amrex::Real z_r = n_pf * Co56_pf; + amrex::Real z_p = p_pf * Fe56_pf; + + amrex::Real dz_r_dT = Co56_pf * dn_pf_dT + n_pf * dCo56_pf_dT; + amrex::Real dz_p_dT = Fe56_pf * dp_pf_dT + p_pf * dFe56_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_Co56_to_n_Ni56_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Co56 + p --> n + 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 = 13.37207542266378 + -33.86221596961605 * tfactors.T9i + 1.76846 * tfactors.T913 + + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 33.86221596961605 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.76846 * tfactors.T923i + + 0.197992 + (5.0/3.0) * -0.017494 * 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; + } + + + amrex::Real n_pf, dn_pf_dT; + // setting n partition function to 1.0 by default, independent of T + n_pf = 1.0_rt; + dn_pf_dT = 0.0_rt; + + 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 Co56_pf, dCo56_pf_dT; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors, pf_cache, Co56_pf, dCo56_pf_dT); + + amrex::Real z_r = n_pf * Ni56_pf; + amrex::Real z_p = p_pf * Co56_pf; + + amrex::Real dz_r_dT = Ni56_pf * dn_pf_dT + n_pf * dNi56_pf_dT; + amrex::Real dz_p_dT = Co56_pf * dp_pf_dT + p_pf * dCo56_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_Ni58_to_He4_Co55_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Ni58 + p --> He4 + 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 = 63.614171164828804 + -15.504564572101842 * tfactors.T9i + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 + + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.504564572101842 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i + + -1.71062 + (5.0/3.0) * 0.133003 * 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; + } + + + 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 Ni58_pf, dNi58_pf_dT; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors, pf_cache, Ni58_pf, dNi58_pf_dT); + + amrex::Real z_r = He4_pf * Co55_pf; + amrex::Real z_p = p_pf * Ni58_pf; + + amrex::Real dz_r_dT = Co55_pf * dHe4_pf_dT + He4_pf * dCo55_pf_dT; + amrex::Real dz_p_dT = Ni58_pf * dp_pf_dT + p_pf * dNi58_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_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // S32 + He4 --> p + Cl35 + + 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 = 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 = 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] + 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 = -0.877601761965469 + -25.59141776398283 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + 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] + 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 = -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 = 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] + 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 = 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 = 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] + 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 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_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) { + + // Ar36 --> He4 + 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}; + + // 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 = 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] + 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 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_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) { + + // Ar36 --> p + Cl35 + + 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 = 16.01685487088493 + -100.72924752614605 * 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] + 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 = -17.47510512911507 + -99.28393852614604 * tfactors.T9i; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.28393852614604 * 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; + } + + // 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 = 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] + 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 = 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 = 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] + 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 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_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) { + + // Ar36 + He4 --> 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}; + + // ths8r + 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 = 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] + 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 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_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) { + + // Ca40 --> He4 + 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}; + + // 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 = 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] + 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 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 = 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] + 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 = 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 = 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] + 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 = 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 = 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] + 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 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_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) { + + // 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.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 = 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] + 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 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_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) { + + // 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.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 = 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] + 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 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_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) { + + // 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.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 = 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] + 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 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_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) { + + // Cr48 --> 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}; + + // ths8r + 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 = 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] + 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 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_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) { + + // Cr48 --> 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}; + + // 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 = 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] + 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 = 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; + + 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; + } + + // 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 = 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; + + 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; + } + + // 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 = 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] + 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 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_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) { + + // V47 + p --> 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}; + + // 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.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] + 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 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_Fe54_to_n_Fe53_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Fe54 --> n + Fe53 + + 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 = 42.210560167376684 + -155.25104569177333 * tfactors.T9i + -1.10421 * tfactors.T913 + + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953 + 1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 155.25104569177333 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.10421 * tfactors.T923i + + 0.379905 + (5.0/3.0) * -0.0581878 * 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; + } + + + amrex::Real n_pf, dn_pf_dT; + // setting n partition function to 1.0 by default, independent of T + n_pf = 1.0_rt; + dn_pf_dT = 0.0_rt; + + amrex::Real Fe53_pf, dFe53_pf_dT; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors, pf_cache, Fe53_pf, dFe53_pf_dT); + + amrex::Real Fe54_pf, dFe54_pf_dT; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors, pf_cache, Fe54_pf, dFe54_pf_dT); + + amrex::Real z_r = n_pf * Fe53_pf; + amrex::Real z_p = Fe54_pf; + + amrex::Real dz_r_dT = Fe53_pf * dn_pf_dT + n_pf * dFe53_pf_dT; + amrex::Real dz_p_dT = dFe54_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_Fe53_to_n_Fe52_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Fe53 --> n + 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 = 37.48624299107921 + -123.99427613085159 * tfactors.T9i + -0.344319 * tfactors.T913 + + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953 + 1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 123.99427613085159 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.344319 * tfactors.T923i + + 0.178277 + (5.0/3.0) * -0.0334326 * 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; + } + + + amrex::Real n_pf, dn_pf_dT; + // setting n partition function to 1.0 by default, independent of T + n_pf = 1.0_rt; + dn_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 Fe53_pf, dFe53_pf_dT; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors, pf_cache, Fe53_pf, dFe53_pf_dT); + + amrex::Real z_r = n_pf * Fe52_pf; + amrex::Real z_p = Fe53_pf; + + amrex::Real dz_r_dT = Fe52_pf * dn_pf_dT + n_pf * dFe52_pf_dT; + amrex::Real dz_p_dT = dFe53_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_Fe56_to_n_Fe55_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Fe56 --> n + Fe55 + + 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}; + + // ks03 + ln_set_rate = 46.785223428080954 + -130.0232339465001 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 + + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 7.97093 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 130.0232339465001 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i + + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 7.97093 * 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; + } + + + amrex::Real n_pf, dn_pf_dT; + // setting n partition function to 1.0 by default, independent of T + n_pf = 1.0_rt; + dn_pf_dT = 0.0_rt; + + amrex::Real Fe56_pf, dFe56_pf_dT; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors, pf_cache, Fe56_pf, dFe56_pf_dT); + + amrex::Real Fe55_pf, dFe55_pf_dT; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors, pf_cache, Fe55_pf, dFe55_pf_dT); + + amrex::Real z_r = n_pf * Fe55_pf; + amrex::Real z_p = Fe56_pf; + + amrex::Real dz_r_dT = Fe55_pf * dn_pf_dT + n_pf * dFe55_pf_dT; + amrex::Real dz_p_dT = dFe56_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_Fe55_to_n_Fe54_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Fe55 --> n + Fe54 + + 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}; + + // ks03 + ln_set_rate = 21.483298756092896 + -107.84311925142697 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 + + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -8.28317 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 107.84311925142697 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i + + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -8.28317 * 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; + } + + + amrex::Real n_pf, dn_pf_dT; + // setting n partition function to 1.0 by default, independent of T + n_pf = 1.0_rt; + dn_pf_dT = 0.0_rt; + + amrex::Real Fe55_pf, dFe55_pf_dT; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors, pf_cache, Fe55_pf, dFe55_pf_dT); + + amrex::Real Fe54_pf, dFe54_pf_dT; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors, pf_cache, Fe54_pf, dFe54_pf_dT); + + amrex::Real z_r = n_pf * Fe54_pf; + amrex::Real z_p = Fe55_pf; + + amrex::Real dz_r_dT = Fe54_pf * dn_pf_dT + n_pf * dFe54_pf_dT; + amrex::Real dz_p_dT = dFe55_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_Ni58_to_n_Ni57_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Ni58 --> n + Ni57 + + 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 = 42.339063572267165 + -141.77239789336582 * tfactors.T9i + -1.90814 * tfactors.T913 + + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953 + 1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 141.77239789336582 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.90814 * tfactors.T923i + + 0.493188 + (5.0/3.0) * -0.0684633 * 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; + } + + + amrex::Real n_pf, dn_pf_dT; + // setting n partition function to 1.0 by default, independent of T + n_pf = 1.0_rt; + dn_pf_dT = 0.0_rt; + + amrex::Real Ni57_pf, dNi57_pf_dT; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors, pf_cache, Ni57_pf, dNi57_pf_dT); + + amrex::Real Ni58_pf, dNi58_pf_dT; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors, pf_cache, Ni58_pf, dNi58_pf_dT); + + amrex::Real z_r = n_pf * Ni57_pf; + amrex::Real z_p = Ni58_pf; + + amrex::Real dz_r_dT = Ni57_pf * dn_pf_dT + n_pf * dNi57_pf_dT; + amrex::Real dz_p_dT = dNi58_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_Ni57_to_n_Ni56_derived_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Ni57 --> n + 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 = 38.36941309844609 + -118.94166894064354 * tfactors.T9i + -1.19665 * tfactors.T913 + + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953 + 1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 118.94166894064354 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19665 * tfactors.T923i + + 0.507179 + (5.0/3.0) * -0.074604 * 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; + } + + + amrex::Real n_pf, dn_pf_dT; + // setting n partition function to 1.0 by default, independent of T + n_pf = 1.0_rt; + dn_pf_dT = 0.0_rt; + + 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 Ni57_pf, dNi57_pf_dT; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors, pf_cache, Ni57_pf, dNi57_pf_dT); + + amrex::Real z_r = n_pf * Ni56_pf; + amrex::Real z_p = Ni57_pf; + + amrex::Real dz_r_dT = Ni56_pf * dn_pf_dT + n_pf * dNi56_pf_dT; + amrex::Real dz_p_dT = dNi57_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_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_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_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); + } +} + +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_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_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_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_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); + } +} + +template +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_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_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); + } +} + +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_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_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_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_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); + } +} + +template +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_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_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); + } +} + +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_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_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_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_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); + } +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + 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_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_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); + } +} + +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_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_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); + } +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Fe52_n_n_to_Fe54_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_n_Fe52_to_Fe53_removed); + amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe53_to_Fe54_removed); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived_removed); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe52_to_Fe53_removed); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_removed); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived_removed); + drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Fe54_to_Fe52_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived_removed); + amrex::Real r2_gn = rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived_removed); + amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe53_to_Fe54_removed); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived_removed); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived_removed); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_removed); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Fe54_n_n_to_Fe56_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_n_Fe54_to_Fe55_removed); + amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe55_to_Fe56_removed); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived_removed); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe54_to_Fe55_removed); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_removed); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived_removed); + drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Fe56_to_Fe54_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived_removed); + amrex::Real r2_gn = rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived_removed); + amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe55_to_Fe56_removed); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived_removed); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived_removed); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_removed); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Ni56_n_n_to_Ni58_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_n_Ni56_to_Ni57_removed); + amrex::Real r2_ng = rate_eval.screened_rates(k_n_Ni57_to_Ni58_removed); + amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived_removed); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni56_to_Ni57_removed); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_removed); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived_removed); + drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Ni58_to_Ni56_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived_removed); + amrex::Real r2_gn = rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived_removed); + amrex::Real r2_ng = rate_eval.screened_rates(k_n_Ni57_to_Ni58_removed); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived_removed); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived_removed); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_removed); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } +} + + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void +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_p_C12_to_N13(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_C12_to_N13) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_C12_to_N13) = drate_dT; + + } + rate_He4_C12_to_O16(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_C12_to_O16) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_C12_to_O16) = drate_dT; + + } + rate_He4_N14_to_F18(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_N14_to_F18) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_N14_to_F18) = drate_dT; + + } + rate_He4_O16_to_Ne20(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_O16_to_Ne20) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20) = drate_dT; + + } + rate_He4_F18_to_Na22(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_F18_to_Na22) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22) = drate_dT; + + } + rate_He4_Ne20_to_Mg24(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Ne20_to_Mg24) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24) = drate_dT; + + } + rate_p_Ne21_to_Na22(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Ne21_to_Na22) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22) = drate_dT; + + } + rate_p_Na23_to_Mg24(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Na23_to_Mg24) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24) = drate_dT; + + } + rate_He4_Mg24_to_Si28(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Mg24_to_Si28) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28) = drate_dT; + + } + rate_p_Al27_to_Si28(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Al27_to_Si28) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28) = drate_dT; + + } + rate_He4_Si28_to_S32(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Si28_to_S32) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32) = drate_dT; + + } + rate_p_P31_to_S32(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_P31_to_S32) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_P31_to_S32) = drate_dT; + + } + rate_He4_Cr48_to_Fe52(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Cr48_to_Fe52) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52) = drate_dT; + + } + rate_p_Mn51_to_Fe52(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Mn51_to_Fe52) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52) = drate_dT; + + } + rate_He4_Mn51_to_Co55(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Mn51_to_Co55) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Mn51_to_Co55) = drate_dT; + + } + rate_He4_Fe52_to_Ni56(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Fe52_to_Ni56) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56) = drate_dT; + + } + rate_p_Co55_to_Ni56(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Co55_to_Ni56) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56) = drate_dT; + + } + rate_C12_C12_to_p_Na23(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23) = drate_dT; + + } + rate_C12_C12_to_He4_Ne20(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20) = drate_dT; + + } + rate_He4_N13_to_p_O16(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_N13_to_p_O16) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = drate_dT; + + } + rate_C12_O16_to_p_Al27(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_C12_O16_to_p_Al27) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27) = drate_dT; + + } + rate_C12_O16_to_He4_Mg24(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_C12_O16_to_He4_Mg24) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24) = drate_dT; + + } + rate_O16_O16_to_p_P31(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31) = drate_dT; + + } + rate_O16_O16_to_He4_Si28(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28) = drate_dT; + + } + rate_He4_F18_to_p_Ne21(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_F18_to_p_Ne21) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21) = 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_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_p_P31_to_He4_Si28(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_P31_to_He4_Si28) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28) = drate_dT; + + } + rate_He4_Cr48_to_p_Mn51(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51) = drate_dT; + + } + rate_He4_Fe52_to_p_Co55(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Fe52_to_p_Co55) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55) = drate_dT; + + } + rate_He4_He4_He4_to_C12(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12) = drate_dT; + + } + rate_C12_C12_to_Mg24_modified(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_Mg24_modified) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_Mg24_modified) = drate_dT; + + } + rate_O16_O16_to_S32_modified(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_S32_modified) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_S32_modified) = drate_dT; + + } + rate_C12_O16_to_Si28_modified(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + + } + rate_p_Fe54_to_Co55(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Fe54_to_Co55) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Fe54_to_Co55) = drate_dT; + + } + rate_He4_Fe54_to_Ni58(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Fe54_to_Ni58) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Fe54_to_Ni58) = drate_dT; + + } + rate_p_Fe56_to_Co57(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Fe56_to_Co57) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Fe56_to_Co57) = drate_dT; + + } + rate_n_Co55_to_Co56(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_n_Co55_to_Co56) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_Co55_to_Co56) = drate_dT; + + } + rate_n_Co56_to_Co57(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_n_Co56_to_Co57) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_Co56_to_Co57) = drate_dT; + + } + rate_p_Co57_to_Ni58(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Co57_to_Ni58) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Co57_to_Ni58) = drate_dT; + + } + rate_He4_Mn51_to_p_Fe54(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Mn51_to_p_Fe54) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Mn51_to_p_Fe54) = drate_dT; + + } + rate_He4_Co55_to_p_Ni58(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Co55_to_p_Ni58) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Co55_to_p_Ni58) = drate_dT; + + } + rate_n_Co56_to_p_Fe56(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_n_Co56_to_p_Fe56) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_Co56_to_p_Fe56) = drate_dT; + + } + rate_p_Co57_to_He4_Fe54(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Co57_to_He4_Fe54) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Co57_to_He4_Fe54) = drate_dT; + + } + rate_n_Ni56_to_p_Co56(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_n_Ni56_to_p_Co56) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_Ni56_to_p_Co56) = drate_dT; + + } + rate_He4_S32_to_Ar36_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_S32_to_Ar36_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_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_p_Cl35_to_He4_S32_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed) = drate_dT; + + } + rate_He4_Ar36_to_Ca40_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Ar36_to_Ca40_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_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_p_K39_to_He4_Ar36_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed) = drate_dT; + + } + rate_He4_Ca40_to_Ti44_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Ca40_to_Ti44_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_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_p_Sc43_to_He4_Ca40_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed) = drate_dT; + + } + rate_He4_Ti44_to_Cr48_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Ti44_to_Cr48_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed) = drate_dT; + + } + rate_He4_Ti44_to_p_V47_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed) = drate_dT; + + } + rate_p_V47_to_Cr48_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_V47_to_Cr48_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed) = drate_dT; + + } + rate_n_Fe52_to_Fe53_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_n_Fe52_to_Fe53_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_Fe52_to_Fe53_removed) = drate_dT; + + } + rate_n_Fe53_to_Fe54_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_n_Fe53_to_Fe54_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_removed) = drate_dT; + + } + rate_n_Fe54_to_Fe55_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_n_Fe54_to_Fe55_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_Fe54_to_Fe55_removed) = drate_dT; + + } + rate_n_Fe55_to_Fe56_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_n_Fe55_to_Fe56_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_removed) = drate_dT; + + } + rate_n_Ni56_to_Ni57_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_n_Ni56_to_Ni57_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_Ni56_to_Ni57_removed) = drate_dT; + + } + rate_n_Ni57_to_Ni58_removed(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_n_Ni57_to_Ni58_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_removed) = drate_dT; + + } + 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_Fe52_to_p_Mn51_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + + } + rate_Fe52_to_He4_Cr48_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + + } + rate_Co55_to_He4_Mn51_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Co55_to_He4_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_derived) = drate_dT; + + } + rate_Ni56_to_p_Co55_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + + } + rate_Ni56_to_He4_Fe52_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_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_p_Mn51_to_He4_Cr48_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = drate_dT; + + } + rate_p_Co55_to_He4_Fe52_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; + + } + rate_Co55_to_p_Fe54_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Co55_to_p_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_p_Fe54_derived) = drate_dT; + + } + rate_Co56_to_n_Co55_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Co56_to_n_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_derived) = drate_dT; + + } + rate_Co57_to_n_Co56_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Co57_to_n_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_derived) = drate_dT; + + } + rate_Co57_to_p_Fe56_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Co57_to_p_Fe56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_p_Fe56_derived) = drate_dT; + + } + rate_Ni58_to_p_Co57_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ni58_to_p_Co57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_p_Co57_derived) = drate_dT; + + } + rate_Ni58_to_He4_Fe54_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ni58_to_He4_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_derived) = drate_dT; + + } + rate_p_Fe54_to_He4_Mn51_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Fe54_to_He4_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Fe54_to_He4_Mn51_derived) = drate_dT; + + } + rate_He4_Fe54_to_p_Co57_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_He4_Fe54_to_p_Co57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Fe54_to_p_Co57_derived) = drate_dT; + + } + rate_p_Fe56_to_n_Co56_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Fe56_to_n_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Fe56_to_n_Co56_derived) = drate_dT; + + } + rate_p_Co56_to_n_Ni56_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Co56_to_n_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Co56_to_n_Ni56_derived) = drate_dT; + + } + rate_p_Ni58_to_He4_Co55_derived(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_p_Ni58_to_He4_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Ni58_to_He4_Co55_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_Fe54_to_n_Fe53_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived_removed) = drate_dT; + + } + rate_Fe53_to_n_Fe52_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived_removed) = drate_dT; + + } + rate_Fe56_to_n_Fe55_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived_removed) = drate_dT; + + } + rate_Fe55_to_n_Fe54_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived_removed) = drate_dT; + + } + rate_Ni58_to_n_Ni57_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived_removed) = drate_dT; + + } + rate_Ni57_to_n_Ni56_derived_removed(tfactors, rate, drate_dT, pf_cache); + rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived_removed) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived_removed) = drate_dT; + + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void +fill_approx_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) +{ + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + + } + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + + } + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + + } + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + + } + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + + } + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + + } + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + + } + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + + } + rate_Fe52_n_n_to_Fe54_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_n_to_Fe54_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_n_n_to_Fe54_approx) = drate_dT; + + } + rate_Fe54_to_Fe52_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_to_Fe52_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_Fe52_n_n_approx) = drate_dT; + + } + rate_Fe54_n_n_to_Fe56_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_n_to_Fe56_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_n_n_to_Fe56_approx) = drate_dT; + + } + rate_Fe56_to_Fe54_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_to_Fe54_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_Fe54_n_n_approx) = drate_dT; + + } + rate_Ni56_n_n_to_Ni58_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_n_to_Ni58_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_n_to_Ni58_approx) = drate_dT; + + } + rate_Ni58_to_Ni56_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_to_Ni56_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_Ni56_n_n_approx) = drate_dT; + + } + +} + +#endif diff --git a/networks/He-C-Fe-group-simple/table_rates.H b/networks/He-C-Fe-group-simple/table_rates.H new file mode 100644 index 000000000..1ea1aa537 --- /dev/null +++ b/networks/He-C-Fe-group-simple/table_rates.H @@ -0,0 +1,429 @@ +#ifndef TABLE_RATES_H +#define TABLE_RATES_H + +#include +#include +#include +#include + +#include + +using namespace amrex; + +void init_tabular(); + +// Table is expected to be in terms of dens*ye and temp (logarithmic, cgs units) +// Table energy units are expected in terms of ergs + +// all tables are expected to have columns: +// Log(rhoY) Log(T) mu dQ Vs Log(e-cap-rate) Log(nu-energy-loss) Log(gamma-energy) +// Log(g/cm^3) Log(K) erg erg erg Log(1/s) Log(erg/s) Log(erg/s) +// + +const int num_tables = 6; + +enum TableVars +{ + jtab_mu = 1, + jtab_dq = 2, + jtab_vs = 3, + jtab_rate = 4, + jtab_nuloss = 5, + jtab_gamma = 6, + num_vars = jtab_gamma +}; + + +struct table_t +{ + int ntemp; + int nrhoy; + int nvars; + int nheader; +}; + +// we add a 7th index, k_index_dlogr_dlogt used for computing the derivative +// of Log(rate) with respect of Log(temperature) by using the table +// values. It isn't an index into the table but into the 'entries' +// array. Is important to mention that although we compute dlogr/dlogT is +// the computed quantity in 'entries', we pursue ultimately +// dr/dt as the final desired quantity to be computed for this index. + +const int k_index_dlogr_dlogt = 7; +const int add_vars = 1; // 1 Additional Var in entries + + +namespace rate_tables +{ + extern AMREX_GPU_MANAGED table_t j_Co56_Fe56_meta; + extern AMREX_GPU_MANAGED amrex::Array3D j_Co56_Fe56_data; + extern AMREX_GPU_MANAGED amrex::Array1D j_Co56_Fe56_rhoy; + extern AMREX_GPU_MANAGED amrex::Array1D j_Co56_Fe56_temp; + + extern AMREX_GPU_MANAGED table_t j_Co56_Ni56_meta; + extern AMREX_GPU_MANAGED amrex::Array3D j_Co56_Ni56_data; + extern AMREX_GPU_MANAGED amrex::Array1D j_Co56_Ni56_rhoy; + extern AMREX_GPU_MANAGED amrex::Array1D j_Co56_Ni56_temp; + + extern AMREX_GPU_MANAGED table_t j_Fe56_Co56_meta; + extern AMREX_GPU_MANAGED amrex::Array3D j_Fe56_Co56_data; + extern AMREX_GPU_MANAGED amrex::Array1D j_Fe56_Co56_rhoy; + extern AMREX_GPU_MANAGED amrex::Array1D j_Fe56_Co56_temp; + + extern AMREX_GPU_MANAGED table_t j_n_p_meta; + extern AMREX_GPU_MANAGED amrex::Array3D j_n_p_data; + extern AMREX_GPU_MANAGED amrex::Array1D j_n_p_rhoy; + extern AMREX_GPU_MANAGED amrex::Array1D j_n_p_temp; + + extern AMREX_GPU_MANAGED table_t j_Ni56_Co56_meta; + extern AMREX_GPU_MANAGED amrex::Array3D j_Ni56_Co56_data; + extern AMREX_GPU_MANAGED amrex::Array1D j_Ni56_Co56_rhoy; + extern AMREX_GPU_MANAGED amrex::Array1D j_Ni56_Co56_temp; + + extern AMREX_GPU_MANAGED table_t j_p_n_meta; + extern AMREX_GPU_MANAGED amrex::Array3D j_p_n_data; + extern AMREX_GPU_MANAGED amrex::Array1D j_p_n_rhoy; + extern AMREX_GPU_MANAGED amrex::Array1D j_p_n_temp; + +} + +template +void init_tab_info(const table_t& tf, const std::string& file, R& log_rhoy_table, T& log_temp_table, D& data) +{ + // This function initializes the selected tabular-rate tables. From the tables we are interested + // on the rate, neutrino-energy-loss and the gamma-energy entries. + + std::ifstream table; + table.open(file); + + if (!table.is_open()) { + // the table was not present or we could not open it; abort + amrex::Error("table could not be opened"); + } + + std::string line; + + // read and skip over the header + + for (int i = 0; i < tf.nheader; ++i) { + std::getline(table, line); + } + + // now the data -- there are 2 extra columns, for log_temp and log_rhoy + + for (int j = 1; j <= tf.nrhoy; ++j) { + for (int i = 1; i <= tf.ntemp; ++i) { + std::getline(table, line); + if (line.empty()) { + amrex::Error("Error reading table data"); + } + + std::istringstream sdata(line); + + sdata >> log_rhoy_table(j) >> log_temp_table(i); + + for (int n = 1; n <= tf.nvars; ++n) { + sdata >> data(i, j, n); + } + } + } + table.close(); +} + + +template +AMREX_INLINE AMREX_GPU_HOST_DEVICE +int vector_index_lu(const int vlen, const V& vector, const amrex::Real fvar) +{ + + // Returns the greatest index of vector for which vector(index) < fvar. + // Return 1 if fvar < vector(1) + // Return size(vector)-1 if fvar > vector(size(vector)) + // The interval [index, index+1] brackets fvar for fvar within the range of vector. + + int index; + + if (fvar < vector(1)) { + index = 1; + } else if (fvar > vector(vlen)) { + index = vlen - 1; + } else { + int nup = vlen; + int ndn = 1; + for (int i = 1; i <= vlen; ++i) { + int j = ndn + (nup - ndn)/2; + if (fvar < vector(j)) { + nup = j; + } else { + ndn = j; + } + if ((nup - ndn) == 1) { + break; + } + } + index = ndn; + } + return index; +} + + +AMREX_INLINE AMREX_GPU_HOST_DEVICE +amrex::Real +evaluate_linear_1d(const amrex::Real fhi, const amrex::Real flo, const amrex::Real xhi, const amrex::Real xlo, const amrex::Real x) +{ + // This function is a 1-D linear interpolator, that keeps x constant to xlo or xhi, based + // on the side, if x is outside [xlo, xhi] respectively. + + amrex::Real xx = Clamp(x, xlo, xhi); + amrex::Real f = flo + (fhi - flo) * (xx - xlo) / (xhi - xlo); + + return f; +} + +AMREX_INLINE AMREX_GPU_HOST_DEVICE +amrex::Real +evaluate_linear_2d(const amrex::Real fip1jp1, const amrex::Real fip1j, const amrex::Real fijp1, const amrex::Real fij, + const amrex::Real xhi, const amrex::Real xlo, const amrex::Real yhi, const amrex::Real ylo, + const amrex::Real x, const amrex::Real y) +{ + // This is the 2-D linear interpolator, as an extension of evaluate_linear_1d. + + amrex::Real f; + amrex::Real dx = xhi - xlo; + amrex::Real dy = yhi - ylo; + + amrex::Real E = fij; + amrex::Real C = (fijp1 - fij) / dy; + amrex::Real B = (fip1j - fij) / dx; + amrex::Real A = (fip1jp1 - B * dx - C * dy - E) / (dx * dy); + + amrex::Real xx = Clamp(x, xlo, xhi); + amrex::Real yy = Clamp(y, ylo, yhi); + + f = A * (xx - xlo) * (yy - ylo) + + B * (xx - xlo) + + C * (yy - ylo) + + E; + + return f; +} + + +template +AMREX_INLINE AMREX_GPU_HOST_DEVICE +amrex::Real +evaluate_vars(const table_t& table_meta, const R& log_rhoy_table, const T& log_temp_table, const D& data, + const amrex::Real log_rhoy, const amrex::Real log_temp, const int component) +{ + // This function evaluates the 2-D interpolator, for several pairs of rho_ye and temperature. + + int jtemp_lo = vector_index_lu(table_meta.ntemp, log_temp_table, log_temp); + int jtemp_hi = jtemp_lo + 1; + + int irhoy_lo = vector_index_lu(table_meta.nrhoy, log_rhoy_table, log_rhoy); + int irhoy_hi = irhoy_lo + 1; + + amrex::Real rhoy_lo = log_rhoy_table(irhoy_lo); + amrex::Real rhoy_hi = log_rhoy_table(irhoy_hi); + + amrex::Real t_lo = log_temp_table(jtemp_lo); + amrex::Real t_hi = log_temp_table(jtemp_hi); + + amrex::Real fij = data(jtemp_lo, irhoy_lo, component); + amrex::Real fip1j = data(jtemp_lo, irhoy_hi, component); + amrex::Real fijp1 = data(jtemp_hi, irhoy_lo, component); + amrex::Real fip1jp1 = data(jtemp_hi, irhoy_hi, component); + + amrex::Real r = evaluate_linear_2d(fip1jp1, fip1j, fijp1, fij, + rhoy_hi, rhoy_lo, t_hi, t_lo, log_rhoy, log_temp); + + return r; +} + + +template +AMREX_INLINE AMREX_GPU_HOST_DEVICE +amrex::Real +evaluate_dr_dtemp(const table_t& table_meta, const R& log_rhoy_table, const T& log_temp_table, const D& data, + const amrex::Real log_rhoy, const amrex::Real log_temp) +{ + // The main objective of this function is compute dlogr_dlogt. + + int irhoy_lo = vector_index_lu(table_meta.nrhoy, log_rhoy_table, log_rhoy); + int irhoy_hi = irhoy_lo + 1; + + int jtemp_lo = vector_index_lu(table_meta.ntemp, log_temp_table, log_temp); + int jtemp_hi = jtemp_lo + 1; + + amrex::Real dlogr_dlogt; + + //Now we compute the forward finite difference on the boundary + + if ((jtemp_lo - 1 < 1) || (jtemp_hi + 1 > table_meta.ntemp)) { + + // In this case we are in the boundaries of the table. + // At the boundary, we compute the forward-j finite difference + // to compute dlogr_dlogt_i and dlogr_dlogt_ip1, using the + // following stencil: + // + // + // fijp1-----------fip1jp1 + // | | + // | | + // | | + // | | + // | | + // | | + // | | + // fij-------------fip1j + // + // with the following result: + // + // dlogr_dlogt_i --------dlogr_dlogt_ip1 + // + // Finally, we perform a 1d-linear interpolation between dlogr_dlogt_ip1 + // and dlogr_dlogt_i to compute dlogr_dlogt + + amrex::Real log_rhoy_lo = log_rhoy_table(irhoy_lo); + amrex::Real log_rhoy_hi = log_rhoy_table(irhoy_hi); + + amrex::Real log_temp_lo = log_temp_table(jtemp_lo); + amrex::Real log_temp_hi = log_temp_table(jtemp_hi); + + amrex::Real fij = data(jtemp_lo, irhoy_lo, jtab_rate); + amrex::Real fip1j = data(jtemp_lo, irhoy_hi, jtab_rate); + amrex::Real fijp1 = data(jtemp_hi, irhoy_lo, jtab_rate); + amrex::Real fip1jp1 = data(jtemp_hi, irhoy_hi, jtab_rate); + + amrex::Real dlogr_dlogt_i = (fijp1 - fij) / (log_temp_hi - log_temp_lo); + amrex::Real dlogr_dlogt_ip1 = (fip1jp1 - fip1j) / (log_temp_hi - log_temp_lo); + + if ((log_temp < log_temp_lo) || (log_temp > log_temp_hi)) { + dlogr_dlogt = 0.0_rt; + } else { + dlogr_dlogt = evaluate_linear_1d(dlogr_dlogt_ip1, dlogr_dlogt_i, log_rhoy_hi, log_rhoy_lo, log_rhoy); + } + + } else { + + // In this case, we use a bigger stencil to reconstruct the + // temperature derivatives in the j and j+1 temperature positions, + // using the cetral-j finite differences: + // + // fijp2 ------------fip1jp2 + // | | + // | | + // | | + // | | + // | | + // | | + // | | + // fijp1------------fip1jp1 + // | | + // | | + // | | + // | | + // | | + // | | + // | | + // fij------------- fip1j + // | | + // | | + // | | + // | | + // | | + // | | + // | | + // fijm1------------fip1jm1 + // + // with the following result: + // + // + // dr_dt_ijp1 --------dr_dt_ip1jp1 + // | | + // | | + // | | + // | | + // | | + // | | + // | | + // dr_dt_ij-----------dr_dt_ip1j + // + // Finally, we perform a 2d-linear interpolation to + // compute dlogr_dlogt. + + amrex::Real log_temp_jm1 = log_temp_table(jtemp_lo-1); + amrex::Real log_temp_j = log_temp_table(jtemp_lo); + amrex::Real log_temp_jp1 = log_temp_table(jtemp_hi); + amrex::Real log_temp_jp2 = log_temp_table(jtemp_hi+1); + + amrex::Real log_rhoy_lo = log_rhoy_table(irhoy_lo); + amrex::Real log_rhoy_hi = log_rhoy_table(irhoy_hi); + + amrex::Real fijm1 = data(jtemp_lo-1, irhoy_lo, jtab_rate); + amrex::Real fij = data(jtemp_lo, irhoy_lo, jtab_rate); + amrex::Real fijp1 = data(jtemp_hi, irhoy_lo, jtab_rate); + amrex::Real fijp2 = data(jtemp_hi+1, irhoy_lo, jtab_rate); + + amrex::Real fip1jm1 = data(jtemp_lo-1, irhoy_hi, jtab_rate); + amrex::Real fip1j = data(jtemp_lo, irhoy_hi, jtab_rate); + amrex::Real fip1jp1 = data(jtemp_hi, irhoy_hi, jtab_rate); + amrex::Real fip1jp2 = data(jtemp_hi+1, irhoy_hi, jtab_rate); + + amrex::Real dlogr_dlogt_ij = (fijp1 - fijm1)/(log_temp_jp1 - log_temp_jm1); + amrex::Real dlogr_dlogt_ijp1 = (fijp2 - fij)/(log_temp_jp2 - log_temp_j); + amrex::Real dlogr_dlogt_ip1j = (fip1jp1 - fip1jm1)/(log_temp_jp1 - log_temp_jm1); + amrex::Real dlogr_dlogt_ip1jp1 = (fip1jp2 - fip1j)/(log_temp_jp2 - log_temp_j); + + dlogr_dlogt = evaluate_linear_2d(dlogr_dlogt_ip1jp1, dlogr_dlogt_ip1j, dlogr_dlogt_ijp1, dlogr_dlogt_ij, + log_rhoy_hi, log_rhoy_lo, log_temp_jp1, log_temp_j, + log_rhoy, log_temp); + + } + return dlogr_dlogt; +} + + +template +AMREX_INLINE AMREX_GPU_HOST_DEVICE +void +get_entries(const table_t& table_meta, const R& log_rhoy_table, const T& log_temp_table, const D& data, + const amrex::Real log_rhoy, const amrex::Real log_temp, amrex::Array1D& entries) +{ + for (int ivar = 1; ivar <= num_vars; ivar++) { + entries(ivar) = evaluate_vars(table_meta, log_rhoy_table, log_temp_table, data, + log_rhoy, log_temp, ivar); + } + + entries(k_index_dlogr_dlogt) = evaluate_dr_dtemp(table_meta, log_rhoy_table, log_temp_table, data, + log_rhoy, log_temp); +} + +template +AMREX_INLINE AMREX_GPU_HOST_DEVICE +void +tabular_evaluate(const table_t& table_meta, + const R& log_rhoy_table, const T& log_temp_table, const D& data, + const amrex::Real rhoy, const amrex::Real temp, + amrex::Real& rate, amrex::Real& drate_dt, amrex::Real& edot_nu, amrex::Real& edot_gamma) +{ + amrex::Array1D entries; + + // Get the table entries at this rhoy, temp + + amrex::Real log_rhoy = std::log10(rhoy); + amrex::Real log_temp = std::log10(temp); + + get_entries(table_meta, log_rhoy_table, log_temp_table, data, + log_rhoy, log_temp, entries); + + // Fill outputs: rate, d(rate)/d(temperature), and + // (negative) neutrino loss contribution to energy generation + + rate = std::pow(10.0_rt, entries(jtab_rate)); + drate_dt = rate * entries(k_index_dlogr_dlogt) / temp; + edot_nu = -std::pow(10.0_rt, entries(jtab_nuloss)); + edot_gamma = std::pow(10.0_rt, entries(jtab_gamma)); +} + +#endif diff --git a/networks/He-C-Fe-group-simple/table_rates_data.cpp b/networks/He-C-Fe-group-simple/table_rates_data.cpp new file mode 100644 index 000000000..3fb138c94 --- /dev/null +++ b/networks/He-C-Fe-group-simple/table_rates_data.cpp @@ -0,0 +1,101 @@ +#include +#include +#include +#include + +using namespace amrex; + +namespace rate_tables +{ + + AMREX_GPU_MANAGED table_t j_Co56_Fe56_meta; + AMREX_GPU_MANAGED amrex::Array3D j_Co56_Fe56_data; + AMREX_GPU_MANAGED amrex::Array1D j_Co56_Fe56_rhoy; + AMREX_GPU_MANAGED amrex::Array1D j_Co56_Fe56_temp; + + AMREX_GPU_MANAGED table_t j_Co56_Ni56_meta; + AMREX_GPU_MANAGED amrex::Array3D j_Co56_Ni56_data; + AMREX_GPU_MANAGED amrex::Array1D j_Co56_Ni56_rhoy; + AMREX_GPU_MANAGED amrex::Array1D j_Co56_Ni56_temp; + + AMREX_GPU_MANAGED table_t j_Fe56_Co56_meta; + AMREX_GPU_MANAGED amrex::Array3D j_Fe56_Co56_data; + AMREX_GPU_MANAGED amrex::Array1D j_Fe56_Co56_rhoy; + AMREX_GPU_MANAGED amrex::Array1D j_Fe56_Co56_temp; + + AMREX_GPU_MANAGED table_t j_n_p_meta; + AMREX_GPU_MANAGED amrex::Array3D j_n_p_data; + AMREX_GPU_MANAGED amrex::Array1D j_n_p_rhoy; + AMREX_GPU_MANAGED amrex::Array1D j_n_p_temp; + + AMREX_GPU_MANAGED table_t j_Ni56_Co56_meta; + AMREX_GPU_MANAGED amrex::Array3D j_Ni56_Co56_data; + AMREX_GPU_MANAGED amrex::Array1D j_Ni56_Co56_rhoy; + AMREX_GPU_MANAGED amrex::Array1D j_Ni56_Co56_temp; + + AMREX_GPU_MANAGED table_t j_p_n_meta; + AMREX_GPU_MANAGED amrex::Array3D j_p_n_data; + AMREX_GPU_MANAGED amrex::Array1D j_p_n_rhoy; + AMREX_GPU_MANAGED amrex::Array1D j_p_n_temp; + + +} + + +void init_tabular() +{ + + amrex::Print() << "reading in network electron-capture / beta-decay tables..." << std::endl; + + using namespace rate_tables; + + j_Co56_Fe56_meta.ntemp = 13; + j_Co56_Fe56_meta.nrhoy = 11; + j_Co56_Fe56_meta.nvars = 6; + j_Co56_Fe56_meta.nheader = 5; + + init_tab_info(j_Co56_Fe56_meta, "56co-56fe_electroncapture.dat", j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data); + + + j_Co56_Ni56_meta.ntemp = 13; + j_Co56_Ni56_meta.nrhoy = 11; + j_Co56_Ni56_meta.nvars = 6; + j_Co56_Ni56_meta.nheader = 5; + + init_tab_info(j_Co56_Ni56_meta, "56co-56ni_betadecay.dat", j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data); + + + j_Fe56_Co56_meta.ntemp = 13; + j_Fe56_Co56_meta.nrhoy = 11; + j_Fe56_Co56_meta.nvars = 6; + j_Fe56_Co56_meta.nheader = 5; + + init_tab_info(j_Fe56_Co56_meta, "56fe-56co_betadecay.dat", j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data); + + + j_n_p_meta.ntemp = 13; + j_n_p_meta.nrhoy = 11; + j_n_p_meta.nvars = 6; + j_n_p_meta.nheader = 5; + + init_tab_info(j_n_p_meta, "n-p_betadecay.dat", j_n_p_rhoy, j_n_p_temp, j_n_p_data); + + + j_Ni56_Co56_meta.ntemp = 13; + j_Ni56_Co56_meta.nrhoy = 11; + j_Ni56_Co56_meta.nvars = 6; + j_Ni56_Co56_meta.nheader = 5; + + init_tab_info(j_Ni56_Co56_meta, "56ni-56co_electroncapture.dat", j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data); + + + j_p_n_meta.ntemp = 13; + j_p_n_meta.nrhoy = 11; + j_p_n_meta.nvars = 6; + j_p_n_meta.nheader = 5; + + init_tab_info(j_p_n_meta, "p-n_electroncapture.dat", j_p_n_rhoy, j_p_n_temp, j_p_n_data); + + + +} diff --git a/networks/He-C-Fe-group-simple/tfactors.H b/networks/He-C-Fe-group-simple/tfactors.H new file mode 100644 index 000000000..3ec02d562 --- /dev/null +++ b/networks/He-C-Fe-group-simple/tfactors.H @@ -0,0 +1,34 @@ +#ifndef TFACTORS_H +#define TFACTORS_H + +struct tf_t { + amrex::Real T9; + amrex::Real T9i; + amrex::Real T943i; + amrex::Real T923i; + amrex::Real T913i; + amrex::Real T913; + amrex::Real T923; + amrex::Real T953; + amrex::Real lnT9; +}; + +AMREX_GPU_HOST_DEVICE AMREX_INLINE +tf_t evaluate_tfactors(const amrex::Real T) +{ + + tf_t tf; + tf.T9 = T / 1.e9_rt; + tf.T9i = 1.0_rt / tf.T9; + tf.T913 = std::cbrt(tf.T9); + tf.T913i = 1.0_rt / tf.T913; + tf.T923i = tf.T913i * tf.T913i; + tf.T943i = tf.T9i * tf.T913i; + tf.T923 = tf.T913 * tf.T913; + tf.T953 = tf.T9 * tf.T923; + tf.lnT9 = std::log(tf.T9); + + return tf; +} + +#endif diff --git a/unit_test/burn_cell/GNUmakefile b/unit_test/burn_cell/GNUmakefile index 8372650eb..394010020 100644 --- a/unit_test/burn_cell/GNUmakefile +++ b/unit_test/burn_cell/GNUmakefile @@ -24,7 +24,7 @@ EOS_DIR := helmholtz # This sets the network directory NETWORK_DIR := aprox13 - +SCREEN_METHOD := screen5 CONDUCTIVITY_DIR := stellar INTEGRATOR_DIR = VODE diff --git a/unit_test/burn_cell/_parameters b/unit_test/burn_cell/_parameters index 9047a84f8..9dc27e92e 100644 --- a/unit_test/burn_cell/_parameters +++ b/unit_test/burn_cell/_parameters @@ -19,3 +19,5 @@ density real 1.e7 temperature real 3.e9 skip_initial_normalization bool 0 + +init_species_all_equal bool 0 diff --git a/unit_test/burn_cell/burn_cell.H b/unit_test/burn_cell/burn_cell.H index 71f379471..ad7771e7b 100644 --- a/unit_test/burn_cell/burn_cell.H +++ b/unit_test/burn_cell/burn_cell.H @@ -21,12 +21,15 @@ void burn_cell_c() // Make sure user set all the mass fractions to values in the interval [0, 1] for (int n = 1; n <= NumSpec; ++n) { - massfractions[n-1] = get_xn(n); + if (unit_test_rp::init_species_all_equal) { + massfractions[n-1] = 1.0_rt / static_cast(NumSpec); + } else { + massfractions[n-1] = get_xn(n); - if (massfractions[n-1] < 0 || massfractions[n-1] > 1) { - amrex::Error("mass fraction for " + short_spec_names_cxx[n-1] + " not initialized in the interval [0,1]!"); + if (massfractions[n-1] < 0 || massfractions[n-1] > 1) { + amrex::Error("mass fraction for " + short_spec_names_cxx[n-1] + " not initialized in the interval [0,1]!"); + } } - } // Echo initial conditions at burn and fill burn state input