Page 1 of 1

CAMB: 1% error at l = 16?

Posted: July 30 2008
by Alexander van Engelen
Hello,

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:

Image

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

Re: CAMB: 1% error at l = 16?

Posted: August 29 2008
by Antony Lewis
Sounds reasonable, the interpolation will give some error. 1% is well below cosmic variance there, but I'll put in a switch to do every l if lSampleBoost>1 and accurate_reionization = T.

I'm not sure why your results look offset as you change accuracy boost, it seems to be pretty stable for me (at least with accurate_reionization = T)