orthog.f 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. *DECK ORTHOG
  2. SUBROUTINE ORTHOG (USOL, IDMN, ZN, ZM, PERTRB)
  3. C***BEGIN PROLOGUE ORTHOG
  4. C***SUBSIDIARY
  5. C***PURPOSE Subsidiary to SEPELI
  6. C***LIBRARY SLATEC
  7. C***TYPE SINGLE PRECISION (ORTHOG-S)
  8. C***AUTHOR (UNKNOWN)
  9. C***DESCRIPTION
  10. C
  11. C This subroutine orthogonalizes the array USOL with respect to
  12. C the constant array in a weighted least squares norm.
  13. C
  14. C***SEE ALSO SEPELI
  15. C***ROUTINES CALLED (NONE)
  16. C***COMMON BLOCKS SPLPCM
  17. C***REVISION HISTORY (YYMMDD)
  18. C 801001 DATE WRITTEN
  19. C 891214 Prologue converted to Version 4.0 format. (BAB)
  20. C 900402 Added TYPE section. (WRB)
  21. C***END PROLOGUE ORTHOG
  22. C
  23. COMMON /SPLPCM/ KSWX ,KSWY ,K ,L ,
  24. 1 AIT ,BIT ,CIT ,DIT ,
  25. 2 MIT ,NIT ,IS ,MS ,
  26. 3 JS ,NS ,DLX ,DLY ,
  27. 4 TDLX3 ,TDLY3 ,DLX4 ,DLY4
  28. DIMENSION USOL(IDMN,*) ,ZN(*) ,ZM(*)
  29. C***FIRST EXECUTABLE STATEMENT ORTHOG
  30. ISTR = IS
  31. IFNL = MS
  32. JSTR = JS
  33. JFNL = NS
  34. C
  35. C COMPUTE WEIGHTED INNER PRODUCTS
  36. C
  37. UTE = 0.0
  38. ETE = 0.0
  39. DO 20 I=IS,MS
  40. II = I-IS+1
  41. DO 10 J=JS,NS
  42. JJ = J-JS+1
  43. ETE = ETE+ZM(II)*ZN(JJ)
  44. UTE = UTE+USOL(I,J)*ZM(II)*ZN(JJ)
  45. 10 CONTINUE
  46. 20 CONTINUE
  47. C
  48. C SET PERTURBATION PARAMETER
  49. C
  50. PERTRB = UTE/ETE
  51. C
  52. C SUBTRACT OFF CONSTANT PERTRB
  53. C
  54. DO 40 I=ISTR,IFNL
  55. DO 30 J=JSTR,JFNL
  56. USOL(I,J) = USOL(I,J)-PERTRB
  57. 30 CONTINUE
  58. 40 CONTINUE
  59. RETURN
  60. END