OK.
On a related topic, in the same part of the code, in the time step where the radiation multipoles are switched off, and if
Num_nu_massive = 0, any dark energy/21cm variables are shifted down the array:
Code: Select all
if (CP%Num_Nu_massive == 0) then
EV%ScalEqsToPropagate=5
if (w_lam /= -1 .and. w_Perturb.and.y(1).lt.GRtrans) then
!actually DE perturbations probably irrelvant and could set to zero too
y(6)=y(EV%w_ix)
y(7)=y(EV%w_ix+1)
EV%w_ix = 6
EV%ScalEqsToPropagate=7
end if
if (Evolve_baryon_cs) then
y(EV%ScalEqsToPropagate+1) = y(EV%line_ix)
EV%line_ix = EV%ScalEqsToPropagate+1
EV%ScalEqsToPropagate = EV%ScalEqsToPropagate+1
end if
if (Evolve_delta_xe) then
y(EV%ScalEqsToPropagate+1) = y(EV%xe_ix)
EV%xe_ix = EV%ScalEqsToPropagate+1
EV%ScalEqsToPropagate = EV%ScalEqsToPropagate+1
end if
if (Evolve_delta_Ts) then
y(EV%ScalEqsToPropagate+1) = y(EV%Ts_ix)
EV%Ts_ix = EV%ScalEqsToPropagate+1
EV%ScalEqsToPropagate = EV%ScalEqsToPropagate+1
end if
end if
Is this then consistent with the sources in
output, where the expressions explicitly reference photon variables? For example
sources(1) in
output includes
y(9), which would contain the ionization perturbation if
w/=-1,
Evolve_baryon_cs=T, and
Evolve_detla_xe=T.
Is this shifting of the variables down the array necessary, or is it just to save memory?
I'm sure I'm missing something here...