Guest User

Untitled

a guest
May 26th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. program Assignment_3
  2.  
  3. implicit none
  4. real(4), allocatable, dimension(:) ::L_p, w, A_un, r_arr
  5. real(4), allocatable, dimension(:,:) :: A, z, L_b
  6. real(4) :: k, x, lambda, ierr, h, sum, step, nm
  7. integer :: N, i, j, o, matz, max, r, half
  8. matz = 1
  9. half = 15
  10. N = 10
  11. lambda = 1.
  12. o = N
  13. step = 1e-5
  14. allocate( L_p(0:N), A_un(0:2*half))
  15. max = 2 * half
  16. allocate(A(1:N,1:N), L_b(1:N,0:max), r_arr(0:max))
  17. k = 2.
  18. nm = N
  19. do j = 0,N
  20. do i = 0, N
  21. A(j,i) = 0.
  22. end do
  23. end do
  24. h = 1.
  25.  
  26. do i = 0, max
  27. r_arr(i) = i * step
  28. end do
  29.  
  30. !
  31.  
  32. do j = 1, N
  33. do r = 0, max
  34. if (j==1) then
  35. L_p(0) = 1
  36. L_b(j, r) = SQRT((lambda * GAMMA(j + 1. - 1.))/GAMMA(2. + j)) * r * lambda * L_p(j - 1) * EXP(-r * lambda / 2.)
  37. else if (j==2) then
  38. L_p(1) = 1. + k - lambda * r
  39. L_b(j, r) = SQRT((lambda * GAMMA(j + 1. - 1.))/GAMMA(2. + j)) * r * lambda * L_p(j - 1) * EXP(-r * lambda / 2.)
  40. else
  41. L_p(j-1) = ((2. * (j-1.) + 1. + k - lambda * r) * L_p(j-2) - (j + k - 1.) * L_p(j - 3)) / ( j +1. -1.)
  42.  
  43. L_b(j, r) = SQRT((lambda * GAMMA(j + 1. - 1.))/GAMMA(2. + j)) * r * lambda * L_p(j - 1) * EXP(-r * lambda / 2.)
  44. end if
  45. end do
  46. end do
  47.  
  48. do j = 1, N
  49.  
  50. do i = 1, j
  51. if (i == 1 .OR. i == 2) then
  52. do r = 0, max
  53. h = L_b(2,r) - L_b(1,r)
  54. A_un(r) = L_b(j,r) * (-1./2. * (15./4. * L_b(i,r) - 77./6. * L_b(i + 1,r) + 107./6 * L_b(i + 2,r) &
  55. - 13. * L_b(i + 3,r) + 61./12. * L_b(i + 4,r) - 5./6. * L_b(i + 5,r)) / h**2 - L_b(i,r)/r)
  56.  
  57. end do
  58. call integrate(A_un, half, h, sum)
  59. A(j,i) = sum
  60. else if (i == N .OR. i == N-1) then
  61. do r = 0, max
  62. h = L_b(2,r) - L_b(1,r)
  63. A_un(r) = L_b(j,r) * (-1./2. * (15./4. * L_b(i,r) - 77./6. * L_b(i - 1,r) + 107./6 * L_b(i - 2,r) &
  64. - 13. * L_b(i - 3,r) + 61./12. * L_b(i - 4,r) - 5./6. * L_b(i - 5,r)) / h**2 - L_b(i,r)/r)
  65. end do
  66. !write(*,*)A_un
  67. call integrate(A_un, half, h, sum)
  68. A(j,i) = sum
  69. else
  70. do r = 0, max
  71. h = L_b(2,r) - L_b(1,r)
  72. A_un= L_b(j,r) * (-1./2. * (-1./12. * L_b(i-2,r) + 4./3. * L_b(i-1,r) - 5./2. * L_b(i,r) &
  73. + 4./3. * L_b(i + 1,r) - 1./12. * L_b(i + 2,r)) / h**2. - L_b(i,r)/r)
  74. end do
  75. call integrate(A_un, half, h, sum)
  76. A(j,i) = sum
  77. !write(*,*)"it got here"
  78. end if
  79. end do
  80. end do
  81. write(*,*)A(1,1:N)
  82. call rs(nm,o,a,w,matz,z,ierr)
  83.  
  84.  
  85.  
  86. end program Assignment_3
  87.  
  88. subroutine integrate(A_un, half, h, sum)
  89. implicit none
  90. real(4) :: A_un(0:2*half)
  91. real(4) :: sum, h
  92. integer :: half, i
  93. sum = 0
  94. do i = 0, half
  95. sum = sum + A_un(2*half-2) + 4. * A_un(2*half-1) + A_un(2*half)
  96. end do
  97.  
  98. sum = h/3. * sum
  99.  
  100. end subroutine integrate
Add Comment
Please, Sign In to add comment