bessels.f90 File Source

CAMB spherical and hyperspherical Bessel function routines
This version May 2006 - minor changes to bjl (http://cosmocoffee.info/viewtopic.php?t=530)
Feb 2007: fixed for high l, uses Ranges
Feb 2009: minor fix for non-flat compiled with non-smart IF evaluation
Dec 2011: minor tweak to DoRecurs for smoother errors across flat for L~O(30)
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
Flat bessel function module

Modules

Dependencies

Subroutines
  • BJL_EXTERNAL(L, X, JL)
    • INTEGER  :: L
    • real(dl)  :: X
    • real(dl)  :: JL
  • phi_small_closed_int(l, beta, chi, y1, y2)
    • integer intent(IN) :: l
    • real(dl) intent(IN) :: beta
    • real(dl) intent(IN) :: chi
    • real(dl)  :: y1
    • real(dl)  :: y2
  • USpherBesselWithDeriv(Chi, beta, y1, y2, l, closed, CP)
    returns y1=ujl*sinhChi and y2=diff(y1,Chi) aim for accuracy > 1% for all inputs
    • real(dl)  :: Chi
    • real(dl)  :: beta
    • real(dl)  :: y1
    • real(dl)  :: y2
    • integer  :: l
    • logical intent(IN) :: closed
    • CAMBParams intent(in) :: CP
Functions
  • real(dl)
    airy_ai(x)
    • real(dl)  :: x
  • real(dl)
    p1evl(x, coef, N)
    • real(dl)  :: x
    • real(dl)  :: coef
    • integer  :: N
  • real(dl)
    phi_langer(l, K, beta, chi)
    • integer  :: l
    • integer  :: K
    • real(dl)  :: beta
    • real(dl)  :: chi
  • real(dl)
    phi_recurs(l, K, beta, chi)
    doesn't like values which give exponentially small phi
    • integer intent(IN) :: l
    • integer intent(IN) :: K
    • real(dl) intent(IN) :: beta
    • real(dl) intent(IN) :: chi
  • real(dl)
    polevl(x, coef, N)
    • real(dl)  :: x
    • real(dl)  :: coef
    • integer  :: N
  • real(dl)
    qintegral(sin_K, K, alpha)
    • real(dl)  :: sin_K
    • integer  :: K
    • real(dl)  :: alpha