SPEED
GET_LEGENDRE_VALUE_2DER.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine get_legendre_value_2der (p2der2, p2, p2der, p1, p1der, n, x)
 Computes Legendre polynomial and its first and second derivative on a given point x.
 

Function/Subroutine Documentation

◆ get_legendre_value_2der()

subroutine get_legendre_value_2der (   p2der2,
  p2,
  p2der,
  p1,
  p1der,
  n,
  x 
)

Computes Legendre polynomial and its first and second derivative on a given point x.

Author
Ilario Mazzieri
Date
September, 2013
Version
1.0
Parameters
[in]ndegree of the polynomial
[in]xpoint
[out]p2Legendre polynomial of degree n evaluated in x
[out]p2derderivative of p2 evaluated in x
[out]p2der2second derivative of p2 evaluated in x
[out]p1Legendre polynomial of degree n-1 evaluated in x
[out]p1derderivative of p1 evaluated in x

Definition at line 32 of file GET_LEGENDRE_VALUE_2DER.f90.

33
34 implicit real*8 (a-h,o-z)
35
36 p2=1.d0
37 p2der=0.d0
38 p2der2=0.d0
39 if (n.eq.0) return
40 p1=p2
41 p2=x
42 p1der=p2der
43 p2der=1.d0
44 p2der2=0.d0
45 p1der2=0.d0
46 p0der2=0.d0
47 if (n.eq.1) return
48 k=1
49 p0=p1
50 p1=p2
51 p0der=p1der
52 p1der=p2der
53 p0der2 = p1der2
54 p1der2 = p2der2
55 dk=dfloat(k)
56 a1=(2.d0*dk+1.d0)/(dk+1.d0)
57 a2=-dk/(dk+1.d0)
58 p2=a1*p1*x+a2*p0
59 p2der=a1*p1+a1*p1der*x+a2*p0der
60 p2der2=a1*p1der2*x+2.d0*a1*p1der+a2*p0der2
61 if (n.eq.2) return
62 do k=2,n-1
63 p0=p1
64 p1=p2
65 p0der=p1der
66 p1der=p2der
67 p0der2=p1der2
68 p1der2=p2der2
69 dk=dfloat(k)
70 a1=(2.d0*dk+1.d0)/(dk+1.d0)
71 a2=-dk/(dk+1.d0)
72 p2=a1*p1*x+a2*p0
73 p2der=a1*p1+a1*p1der*x+a2*p0der
74 p2der2=a1*p1der2*x+2.d0*a1*p1der+a2*p0der2
75 enddo
76 return

Referenced by phi().

Here is the caller graph for this function: