PageRenderTime 51ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/wrfv2_fire/external/fftpack/fftpack5/mradf4.F

http://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 90 lines | 63 code | 1 blank | 26 comment | 0 complexity | b78829e8d5c195ab592741e214982b4a MD5 | raw file
Possible License(s): AGPL-1.0
  1. !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  2. !
  3. ! FFTPACK 5.0
  4. !
  5. ! Authors: Paul N. Swarztrauber and Richard A. Valent
  6. !
  7. ! $Id: mradf4.f,v 1.2 2004/06/15 21:29:20 rodney Exp $
  8. !
  9. !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  10. SUBROUTINE MRADF4 (M,IDO,L1,CC,IM1,IN1,CH,IM2,IN2,WA1,WA2,WA3)
  11. REAL CC(IN1,IDO,L1,4) ,CH(IN2,IDO,4,L1) , &
  12. & WA1(IDO) ,WA2(IDO) ,WA3(IDO)
  13. !
  14. HSQT2=SQRT(2.)/2.
  15. M1D = (M-1)*IM1+1
  16. M2S = 1-IM2
  17. DO 101 K=1,L1
  18. M2 = M2S
  19. DO 1001 M1=1,M1D,IM1
  20. M2 = M2+IM2
  21. CH(M2,1,1,K) = (CC(M1,1,K,2)+CC(M1,1,K,4)) &
  22. & +(CC(M1,1,K,1)+CC(M1,1,K,3))
  23. CH(M2,IDO,4,K) = (CC(M1,1,K,1)+CC(M1,1,K,3)) &
  24. & -(CC(M1,1,K,2)+CC(M1,1,K,4))
  25. CH(M2,IDO,2,K) = CC(M1,1,K,1)-CC(M1,1,K,3)
  26. CH(M2,1,3,K) = CC(M1,1,K,4)-CC(M1,1,K,2)
  27. 1001 CONTINUE
  28. 101 END DO
  29. IF (IDO-2) 107,105,102
  30. 102 IDP2 = IDO+2
  31. DO 104 K=1,L1
  32. DO 103 I=3,IDO,2
  33. IC = IDP2-I
  34. M2 = M2S
  35. DO 1003 M1=1,M1D,IM1
  36. M2 = M2+IM2
  37. CH(M2,I-1,1,K) = ((WA1(I-2)*CC(M1,I-1,K,2)+WA1(I-1)* &
  38. & CC(M1,I,K,2))+(WA3(I-2)*CC(M1,I-1,K,4)+WA3(I-1)* &
  39. & CC(M1,I,K,4)))+(CC(M1,I-1,K,1)+(WA2(I-2)*CC(M1,I-1,K,3)+ &
  40. & WA2(I-1)*CC(M1,I,K,3)))
  41. CH(M2,IC-1,4,K) = (CC(M1,I-1,K,1)+(WA2(I-2)*CC(M1,I-1,K,3)+ &
  42. & WA2(I-1)*CC(M1,I,K,3)))-((WA1(I-2)*CC(M1,I-1,K,2)+ &
  43. & WA1(I-1)*CC(M1,I,K,2))+(WA3(I-2)*CC(M1,I-1,K,4)+ &
  44. & WA3(I-1)*CC(M1,I,K,4)))
  45. CH(M2,I,1,K) = ((WA1(I-2)*CC(M1,I,K,2)-WA1(I-1)* &
  46. & CC(M1,I-1,K,2))+(WA3(I-2)*CC(M1,I,K,4)-WA3(I-1)* &
  47. & CC(M1,I-1,K,4)))+(CC(M1,I,K,1)+(WA2(I-2)*CC(M1,I,K,3)- &
  48. & WA2(I-1)*CC(M1,I-1,K,3)))
  49. CH(M2,IC,4,K) = ((WA1(I-2)*CC(M1,I,K,2)-WA1(I-1)* &
  50. & CC(M1,I-1,K,2))+(WA3(I-2)*CC(M1,I,K,4)-WA3(I-1)* &
  51. & CC(M1,I-1,K,4)))-(CC(M1,I,K,1)+(WA2(I-2)*CC(M1,I,K,3)- &
  52. & WA2(I-1)*CC(M1,I-1,K,3)))
  53. CH(M2,I-1,3,K) = ((WA1(I-2)*CC(M1,I,K,2)-WA1(I-1)* &
  54. & CC(M1,I-1,K,2))-(WA3(I-2)*CC(M1,I,K,4)-WA3(I-1)* &
  55. & CC(M1,I-1,K,4)))+(CC(M1,I-1,K,1)-(WA2(I-2)*CC(M1,I-1,K,3)+ &
  56. & WA2(I-1)*CC(M1,I,K,3)))
  57. CH(M2,IC-1,2,K) = (CC(M1,I-1,K,1)-(WA2(I-2)*CC(M1,I-1,K,3)+ &
  58. & WA2(I-1)*CC(M1,I,K,3)))-((WA1(I-2)*CC(M1,I,K,2)-WA1(I-1)* &
  59. & CC(M1,I-1,K,2))-(WA3(I-2)*CC(M1,I,K,4)-WA3(I-1)* &
  60. & CC(M1,I-1,K,4)))
  61. CH(M2,I,3,K) = ((WA3(I-2)*CC(M1,I-1,K,4)+WA3(I-1)* &
  62. & CC(M1,I,K,4))-(WA1(I-2)*CC(M1,I-1,K,2)+WA1(I-1)* &
  63. & CC(M1,I,K,2)))+(CC(M1,I,K,1)-(WA2(I-2)*CC(M1,I,K,3)- &
  64. & WA2(I-1)*CC(M1,I-1,K,3)))
  65. CH(M2,IC,2,K) = ((WA3(I-2)*CC(M1,I-1,K,4)+WA3(I-1)* &
  66. & CC(M1,I,K,4))-(WA1(I-2)*CC(M1,I-1,K,2)+WA1(I-1)* &
  67. & CC(M1,I,K,2)))-(CC(M1,I,K,1)-(WA2(I-2)*CC(M1,I,K,3)- &
  68. & WA2(I-1)*CC(M1,I-1,K,3)))
  69. 1003 CONTINUE
  70. 103 CONTINUE
  71. 104 END DO
  72. IF (MOD(IDO,2) .EQ. 1) RETURN
  73. 105 CONTINUE
  74. DO 106 K=1,L1
  75. M2 = M2S
  76. DO 1006 M1=1,M1D,IM1
  77. M2 = M2+IM2
  78. CH(M2,IDO,1,K) = (HSQT2*(CC(M1,IDO,K,2)-CC(M1,IDO,K,4)))+ &
  79. & CC(M1,IDO,K,1)
  80. CH(M2,IDO,3,K) = CC(M1,IDO,K,1)-(HSQT2*(CC(M1,IDO,K,2)- &
  81. & CC(M1,IDO,K,4)))
  82. CH(M2,1,2,K) = (-HSQT2*(CC(M1,IDO,K,2)+CC(M1,IDO,K,4)))- &
  83. & CC(M1,IDO,K,3)
  84. CH(M2,1,4,K) = (-HSQT2*(CC(M1,IDO,K,2)+CC(M1,IDO,K,4)))+ &
  85. & CC(M1,IDO,K,3)
  86. 1006 CONTINUE
  87. 106 END DO
  88. 107 RETURN
  89. END