Compute the characteristic value of Mathieu functions for q ≥ 3m
| Type | Intent | Optional | 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 |
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