@@ -686,20 +686,23 @@ void nu_photo(const sneutf_t& sf,
686
686
// and table 2 written out for speed
687
687
688
688
amrex::Real tau;
689
- amrex::Real cc;
689
+ amrex::Real cc, ccdt ;
690
690
amrex::Real c00, c01, c02, c03, c04, c05, c06;
691
691
amrex::Real c10, c11, c12, c13, c14, c15, c16;
692
692
amrex::Real c20, c21, c22, c23, c24, c25, c26;
693
693
amrex::Real dd01, dd02, dd03, dd04, dd05;
694
694
amrex::Real dd11, dd12, dd13, dd14, dd15;
695
695
amrex::Real dd21, dd22, dd23, dd24, dd25;
696
696
697
+ amrex::Real taudt = nu_constants::iln10 * sf.tempi ;
698
+
697
699
if (sf.temp < 1 .0e8_rt) {
698
700
699
701
// note: we already bailed above for T < 1.e7, so this is really 1.e7 <= T < 1.e8
700
702
701
703
tau = std::log10 (sf.temp * 1 .0e-7_rt);
702
704
cc = 0 .5654e0_rt + tau;
705
+ ccdt = taudt;
703
706
c00 = 1 .008e11_rt;
704
707
c01 = 0 .0e0_rt;
705
708
c02 = 0 .0e0_rt;
@@ -741,6 +744,7 @@ void nu_photo(const sneutf_t& sf,
741
744
742
745
tau = std::log10 (sf.temp * 1 .0e-8_rt);
743
746
cc = 1 .5654e0_rt;
747
+ ccdt = 0 .0e0_rt;
744
748
c00 = 9 .889e10_rt;
745
749
c01 = -4 .524e8_rt;
746
750
c02 = -6 .088e6_rt;
@@ -784,6 +788,7 @@ void nu_photo(const sneutf_t& sf,
784
788
785
789
tau = std::log10 (sf.t9 );
786
790
cc = 1 .5654e0_rt;
791
+ ccdt = 0 .0e0_rt;
787
792
c00 = 9 .581e10_rt;
788
793
c01 = 4 .107e8_rt;
789
794
c02 = 2 .305e8_rt;
@@ -823,8 +828,6 @@ void nu_photo(const sneutf_t& sf,
823
828
824
829
}
825
830
826
- amrex::Real taudt = nu_constants::iln10 * sf.tempi ;
827
-
828
831
// equation 3.7
829
832
830
833
const auto [sin1, cos1] = amrex::Math::sincos (nu_constants::fac1 * tau);
@@ -902,7 +905,7 @@ void nu_photo(const sneutf_t& sf,
902
905
amrex::Real xnum = dum * z;
903
906
amrex::Real xnumdt, xnumda, xnumdz;
904
907
if constexpr (do_derivatives) {
905
- xnumdt = dumdt * z - dum * z * cc * sf.zetadt ;
908
+ xnumdt = dumdt * z - dum * z * ( cc * sf.zetadt + sf. zeta * ccdt) ;
906
909
xnumda = dumda * z - dum * z * cc * sf.zetada ;
907
910
xnumdz = dumdz * z - dum * z * cc * sf.zetadz ;
908
911
}
@@ -1383,7 +1386,7 @@ void nu_recomb(const sneutf_t& sf,
1383
1386
}
1384
1387
1385
1388
amrex::Real c00 = 1 .0e0_rt / (1 .0e0_rt + f1 * nu + f2 * nu2 + f3 * nu3);
1386
- amrex::Real c01 = f1 + f2 * 2 .0e0_rt * nu + f3 * 3 .0e0_rt * nu2;
1389
+ amrex::Real c01 = -( f1 + f2 * 2 .0e0_rt * nu + f3 * 3 .0e0_rt * nu2) * c00 * c00 ;
1387
1390
amrex::Real dum = zeta * c00;
1388
1391
amrex::Real dumdt, dumda, dumdz;
1389
1392
if constexpr (do_derivatives) {
0 commit comments