With the "accurate_reionization" flag turned on, CAMB will ordinarily calculate [tex]C_l[/tex] for the odd values of [tex]l[/tex] between 11 and 37, as prescribed in the "initlval" routine. The even values of [tex]l[/tex] are then interpolated. I would like to obtain the Cls for all [tex]l[/tex] without interpolation, so to get them (between 11 and 37) I simply changed the lines (modules.f90:563)
Code: Select all
if (CP%AccurateReionization) then
do lvar=11, 37,2
to
Code: Select all
if (CP%AccurateReionization) then
do lvar=11, 37,1
After making this change, the value of lSet%l0 and the lSet%l array seem to have been set properly. The calculated Cls look okay, with the exception of the single multipole [tex]l=16[/tex], which is off by around 1%. Here are the contents of iCl_scalar(*,i,in) for i=1 (i.e. the temperature Cl, prior to the spline interpolation), from the June 08 version with gfortran 4.3.1:
The relative error seems to get worse with increasing accuracy_boost. Is there a reason my kludge should work for all even [tex]l[/tex] except [tex]l=16[/tex]?
Thanks
Alex