cvql Subroutine

public subroutine cvql(Kd, m, q, a0)

Compute the characteristic value of Mathieu functions for q ≥ 3m

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: Kd
integer, intent(in) :: m

Order of Mathieu functions

real(kind=wp), intent(in) :: q

Parameter of Mathieu functions

real(kind=wp), intent(out) :: a0

Initial characteristic value


Called by

proc~~cvql~~CalledByGraph proc~cvql specfun_module::cvql proc~cv0 specfun_module::cv0 proc~cv0->proc~cvql proc~cva2 specfun_module::cva2 proc~cva2->proc~cvql proc~cva2->proc~cv0 proc~mtu0 specfun_module::mtu0 proc~mtu0->proc~cva2 proc~mtu12 specfun_module::mtu12 proc~mtu12->proc~cva2

Source Code

   subroutine cvql(Kd,m,q,a0)

      integer,intent(in) :: Kd
      integer,intent(in) :: m !! Order of Mathieu functions
      real(wp),intent(in) :: q !! Parameter of Mathieu functions
      real(wp),intent(out) :: a0 !! Initial characteristic value

      real(wp) :: c1 , cv1 , cv2 , d1 , d2 , d3 , d4 , p1 , &
                  p2 , w , w2 , w3 , w4 , w6

      select case (Kd)
      case(1,2)
         w = 2.0_wp*m + 1.0_wp
      case(3,4)
         w = 2.0_wp*m - 1.0_wp
      case default
         w = 0.0_wp
      end select
      w2 = w*w
      w3 = w*w2
      w4 = w2*w2
      w6 = w2*w4
      d1 = 5.0_wp + 34.0_wp/w2 + 9.0_wp/w4
      d2 = (33.0_wp+410.0_wp/w2+405.0_wp/w4)/w
      d3 = (63.0_wp+1260.0_wp/w2+2943.0_wp/w4+486.0_wp/w6)/w2
      d4 = (527.0_wp+15617.0_wp/w2+69001.0_wp/w4+41607.0_wp/w6)/w3
      c1 = 128.0_wp
      p2 = q/w4
      p1 = sqrt(p2)
      cv1 = -2.0_wp*q + 2.0_wp*w*sqrt(q) - (w2+1.0_wp)/8.0_wp
      cv2 = (w+3.0_wp/w) + d1/(32.0_wp*p1) + d2/(8.0_wp*c1*p2)
      cv2 = cv2 + d3/(64.0_wp*c1*p1*p2) + d4/(16.0_wp*c1*c1*p2*p2)
      a0 = cv1 - cv2/(c1*p1)

   end subroutine cvql