chksng.f 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. *DECK CHKSNG
  2. SUBROUTINE CHKSNG (MBDCND, NBDCND, ALPHA, BETA, GAMA, XNU, COFX,
  3. + COFY, SINGLR)
  4. C***BEGIN PROLOGUE CHKSNG
  5. C***SUBSIDIARY
  6. C***PURPOSE Subsidiary to SEPELI
  7. C***LIBRARY SLATEC
  8. C***TYPE SINGLE PRECISION (CHKSNG-S)
  9. C***AUTHOR (UNKNOWN)
  10. C***DESCRIPTION
  11. C
  12. C This subroutine checks if the PDE SEPELI
  13. C must solve is a singular operator.
  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 890531 Changed all specific intrinsics to generic. (WRB)
  21. C 891214 Prologue converted to Version 4.0 format. (BAB)
  22. C 900402 Added TYPE section. (WRB)
  23. C***END PROLOGUE CHKSNG
  24. C
  25. COMMON /SPLPCM/ KSWX ,KSWY ,K ,L ,
  26. 1 AIT ,BIT ,CIT ,DIT ,
  27. 2 MIT ,NIT ,IS ,MS ,
  28. 3 JS ,NS ,DLX ,DLY ,
  29. 4 TDLX3 ,TDLY3 ,DLX4 ,DLY4
  30. LOGICAL SINGLR
  31. C***FIRST EXECUTABLE STATEMENT CHKSNG
  32. SINGLR = .FALSE.
  33. C
  34. C CHECK IF THE BOUNDARY CONDITIONS ARE
  35. C ENTIRELY PERIODIC AND/OR MIXED
  36. C
  37. IF ((MBDCND.NE.0 .AND. MBDCND.NE.3) .OR.
  38. 1 (NBDCND.NE.0 .AND. NBDCND.NE.3)) RETURN
  39. C
  40. C CHECK THAT MIXED CONDITIONS ARE PURE NEUMAN
  41. C
  42. IF (MBDCND .NE. 3) GO TO 10
  43. IF (ALPHA.NE.0.0 .OR. BETA.NE.0.0) RETURN
  44. 10 IF (NBDCND .NE. 3) GO TO 20
  45. IF (GAMA.NE.0.0 .OR. XNU.NE.0.0) RETURN
  46. 20 CONTINUE
  47. C
  48. C CHECK THAT NON-DERIVATIVE COEFFICIENT FUNCTIONS
  49. C ARE ZERO
  50. C
  51. DO 30 I=IS,MS
  52. XI = AIT+(I-1)*DLX
  53. CALL COFX (XI,AI,BI,CI)
  54. IF (CI .NE. 0.0) RETURN
  55. 30 CONTINUE
  56. DO 40 J=JS,NS
  57. YJ = CIT+(J-1)*DLY
  58. CALL COFY (YJ,DJ,EJ,FJ)
  59. IF (FJ .NE. 0.0) RETURN
  60. 40 CONTINUE
  61. C
  62. C THE OPERATOR MUST BE SINGULAR IF THIS POINT IS REACHED
  63. C
  64. SINGLR = .TRUE.
  65. RETURN
  66. END