dy.f 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. *DECK DY
  2. SUBROUTINE DY (U, IDMN, I, J, UYYY, UYYYY)
  3. C***BEGIN PROLOGUE DY
  4. C***SUBSIDIARY
  5. C***PURPOSE Subsidiary to SEPELI
  6. C***LIBRARY SLATEC
  7. C***TYPE SINGLE PRECISION (DY-S)
  8. C***AUTHOR (UNKNOWN)
  9. C***DESCRIPTION
  10. C
  11. C This program computes second order finite difference
  12. C approximations to the third and fourth Y
  13. C partial derivatives of U at the (I,J) mesh point.
  14. C
  15. C***SEE ALSO SEPELI
  16. C***ROUTINES CALLED (NONE)
  17. C***COMMON BLOCKS SPLPCM
  18. C***REVISION HISTORY (YYMMDD)
  19. C 801001 DATE WRITTEN
  20. C 891214 Prologue converted to Version 4.0 format. (BAB)
  21. C 900402 Added TYPE section. (WRB)
  22. C***END PROLOGUE DY
  23. C
  24. COMMON /SPLPCM/ KSWX ,KSWY ,K ,L ,
  25. 1 AIT ,BIT ,CIT ,DIT ,
  26. 2 MIT ,NIT ,IS ,MS ,
  27. 3 JS ,NS ,DLX ,DLY ,
  28. 4 TDLX3 ,TDLY3 ,DLX4 ,DLY4
  29. DIMENSION U(IDMN,*)
  30. C***FIRST EXECUTABLE STATEMENT DY
  31. IF (J.GT.2 .AND. J.LT.(L-1)) GO TO 50
  32. IF (J .EQ. 1) GO TO 10
  33. IF (J .EQ. 2) GO TO 30
  34. IF (J .EQ. L-1) GO TO 60
  35. IF (J .EQ. L) GO TO 80
  36. C
  37. C COMPUTE PARTIAL DERIVATIVE APPROXIMATIONS AT Y=C
  38. C
  39. 10 IF (KSWY .EQ. 1) GO TO 20
  40. UYYY = (-5.0*U(I,1)+18.0*U(I,2)-24.0*U(I,3)+14.0*U(I,4)-
  41. 1 3.0*U(I,5))/TDLY3
  42. UYYYY = (3.0*U(I,1)-14.0*U(I,2)+26.0*U(I,3)-24.0*U(I,4)+
  43. 1 11.0*U(I,5)-2.0*U(I,6))/DLY4
  44. RETURN
  45. C
  46. C PERIODIC AT X=A
  47. C
  48. 20 UYYY = (-U(I,L-2)+2.0*U(I,L-1)-2.0*U(I,2)+U(I,3))/TDLY3
  49. UYYYY = (U(I,L-2)-4.0*U(I,L-1)+6.0*U(I,1)-4.0*U(I,2)+U(I,3))/DLY4
  50. RETURN
  51. C
  52. C COMPUTE PARTIAL DERIVATIVE APPROXIMATIONS AT Y=C+DLY
  53. C
  54. 30 IF (KSWY .EQ. 1) GO TO 40
  55. UYYY = (-3.0*U(I,1)+10.0*U(I,2)-12.0*U(I,3)+6.0*U(I,4)-U(I,5))/
  56. 1 TDLY3
  57. UYYYY = (2.0*U(I,1)-9.0*U(I,2)+16.0*U(I,3)-14.0*U(I,4)+6.0*U(I,5)-
  58. 1 U(I,6))/DLY4
  59. RETURN
  60. C
  61. C PERIODIC AT Y=C+DLY
  62. C
  63. 40 UYYY = (-U(I,L-1)+2.0*U(I,1)-2.0*U(I,3)+U(I,4))/TDLY3
  64. UYYYY = (U(I,L-1)-4.0*U(I,1)+6.0*U(I,2)-4.0*U(I,3)+U(I,4))/DLY4
  65. RETURN
  66. C
  67. C COMPUTE PARTIAL DERIVATIVE APPROXIMATIONS ON THE INTERIOR
  68. C
  69. 50 CONTINUE
  70. UYYY = (-U(I,J-2)+2.0*U(I,J-1)-2.0*U(I,J+1)+U(I,J+2))/TDLY3
  71. UYYYY = (U(I,J-2)-4.0*U(I,J-1)+6.0*U(I,J)-4.0*U(I,J+1)+U(I,J+2))/
  72. 1 DLY4
  73. RETURN
  74. C
  75. C COMPUTE PARTIAL DERIVATIVE APPROXIMATIONS AT Y=D-DLY
  76. C
  77. 60 IF (KSWY .EQ. 1) GO TO 70
  78. UYYY = (U(I,L-4)-6.0*U(I,L-3)+12.0*U(I,L-2)-10.0*U(I,L-1)+
  79. 1 3.0*U(I,L))/TDLY3
  80. UYYYY = (-U(I,L-5)+6.0*U(I,L-4)-14.0*U(I,L-3)+16.0*U(I,L-2)-
  81. 1 9.0*U(I,L-1)+2.0*U(I,L))/DLY4
  82. RETURN
  83. C
  84. C PERIODIC AT Y=D-DLY
  85. C
  86. 70 CONTINUE
  87. UYYY = (-U(I,L-3)+2.0*U(I,L-2)-2.0*U(I,1)+U(I,2))/TDLY3
  88. UYYYY = (U(I,L-3)-4.0*U(I,L-2)+6.0*U(I,L-1)-4.0*U(I,1)+U(I,2))/
  89. 1 DLY4
  90. RETURN
  91. C
  92. C COMPUTE PARTIAL DERIVATIVE APPROXIMATIONS AT Y=D
  93. C
  94. 80 UYYY = -(3.0*U(I,L-4)-14.0*U(I,L-3)+24.0*U(I,L-2)-18.0*U(I,L-1)+
  95. 1 5.0*U(I,L))/TDLY3
  96. UYYYY = (-2.0*U(I,L-5)+11.0*U(I,L-4)-24.0*U(I,L-3)+26.0*U(I,L-2)-
  97. 1 14.0*U(I,L-1)+3.0*U(I,L))/DLY4
  98. RETURN
  99. END