Télécharger rescgs.eso

Retour à la liste

Numérotation des lignes :

  1. C RESCGS SOURCE CHAT 05/01/13 02:51:23 5004
  2. SUBROUTINE RESCGS(IZB,MTABP,IZP)
  3. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  4. C C
  5. C RESOLUTION DE L'EQUATION K*P = B PAR LA METHODE DU GRADIENT C
  6. C CONJUGUE PRECONDITIONNE. LA MATRICE EST STOCKEE. C
  7. C C
  8. C MTABP EST UNE TABLE QUI CONTIENT LES INFOS NECESSAIRES POUR LE C
  9. C CALCUL. C
  10. C C
  11. C IZP ET IZB SONT LA SOLUTION ET LE SECOND MEMBRE DE L'EQUATION C
  12. C C
  13. C ON DECODE LA TABLE MTABP.METHODE ET ON APPELLE LE SP C
  14. C DE LA BIBLIOTHEQUE : C
  15. C C
  16. C CGRES (SANS PRECONDITIONNEMENT) C
  17. C CGRESD (PRECONDITIONNEMENT DIAGONAL) C
  18. C CGRESI (PRECONDITIONNEMENT CHOLESKI) C
  19. C C
  20. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  21. IMPLICIT INTEGER(I-N)
  22. IMPLICIT REAL*8 (A-H,O-Z)
  23. -INC SMLREEL
  24. POINTEUR IZB.MLREEL
  25. POINTEUR IZP.MLREEL
  26. CHARACTER*8 TYPE
  27.  
  28. TYPE=' '
  29. CALL ACMO(MTABP,'MATRIS',TYPE,MTAB2)
  30. TYPE=' '
  31. CALL ACMO(MTABP,'METHODE',TYPE,MTAB3)
  32. CALL ECME(MTAB3,'ICOLD',0)
  33. CALL ACME(MTAB3,'IPAT',IPAT)
  34. CALL ECMO(MTAB3,'IZP','LISTREEL',IZP)
  35. IF(IPAT.LE.3) THEN
  36. IPOU=1
  37. VPOU=100.D0
  38. CALL ECME(MTAB3,'IPOU',IPOU)
  39. CALL ECMF(MTAB3,'VPOU',VPOU)
  40. ELSE
  41. CALL ECME(MTAB3,'IPOU',0)
  42. ENDIF
  43. C
  44. C Il faut renseigner KSTO,NL,ILG,IMAT,IPRC,IA,JA,KA,
  45. C **** ** *** **** **** ** ** **
  46. C IZB,IZP,ICOLD,NPT,NPITE,EPI,IPOU,VPOU
  47. C *** *** ***** *** ***** *** **** ****
  48. C NIMPR et IPAT !!!
  49. C ***** ****
  50. C
  51. CALL ACME(MTAB3,'KSTOCK',KSTO)
  52. CALL ACME(MTAB3,'KTYPI',KTYPI)
  53. CALL ACME(MTAB2,'NL',NL)
  54. CALL ACME(MTAB2,'ILG',ILG)
  55. TYPE=' '
  56. CALL ACMO(MTAB2,'IMAT',TYPE,IMAT)
  57. TYPE=' '
  58. CALL ACMO(MTAB3,'IPRC',TYPE,IPRC)
  59. TYPE=' '
  60. CALL ACMO(MTAB2,'IA',TYPE,IA)
  61. TYPE=' '
  62. CALL ACMO(MTAB2,'JA',TYPE,JA)
  63. TYPE=' '
  64. CALL ACMO(MTAB2,'KA',TYPE,KA)
  65. TYPE=' '
  66. CALL ACMO(MTAB3,'IZP',TYPE,IZP)
  67. CALL ACME(MTAB3,'ICOLD',ICOLD)
  68. CALL ACME(MTAB3,'NITMAX',NPT)
  69. CALL ACME(MTAB3,'NPITE',NPITE)
  70. CALL ACMF(MTAB3,'EPSI',EPSI)
  71. CALL ACME(MTAB3,'IPOU',IPOU)
  72. CALL ACMF(MTAB3,'VPOU',VPOU)
  73. CALL ACME(MTAB3,'NFIMPR',NIMPR)
  74. CALL ACME(MTAB3,'IPAT',IPAT)
  75. C
  76. C Il faut renseigner KSTO,NL,ILG,IMAT,(IPRC),IA,JA,KA,
  77. C **** ** *** **** **** ** ** **
  78. C IZB,IZP,ICOLD,NPT,NPITE,NEFF,EPI,IPOU,VPOU
  79. C *** *** ***** *** ***** 0000 *** **** ****
  80. C NIMPR et IPAT !!!
  81. C ***** ****
  82. C
  83. IF(KTYPI.EQ.2) THEN
  84. CALL CGRES( KSTO,
  85. 1 NL,ILG,
  86. 2 IMAT,IA,JA,KA,
  87. 3 IZB,IZP,ICOLD,
  88. 4 NPT,NPITE,NEFF,ICONV,EPSI,IPOU,VPOU,
  89. 5 NIMPR,IPAT)
  90. ELSEIF(KTYPI.EQ.3) THEN
  91. CALL CGRESD( KSTO,
  92. 1 NL,ILG,
  93. 2 IMAT,IPRC,IA,JA,KA,
  94. 3 IZB,IZP,ICOLD,
  95. 4 NPT,NPITE,NEFF,ICONV,EPSI,IPOU,VPOU,
  96. 5 NIMPR,IPAT)
  97. ELSEIF(KTYPI.EQ.4) THEN
  98. CALL CGRESI( KSTO,
  99. 1 NL,ILG,
  100. 2 IMAT,IPRC,IA,JA,KA,
  101. 3 IZB,IZP,ICOLD,
  102. 4 NPT,NPITE,NEFF,ICONV,EPSI,IPOU,VPOU,
  103. 5 NIMPR,IPAT)
  104. ELSE
  105. WRITE(6,*) 'RESGCS : KTYPI = ',KTYPI,' INVALIDE'
  106. ENDIF
  107. C SEGACT IZB,IZP
  108. C JG=IZB.PROG(/1)
  109. C CALL RSETD(IZB.PROG,IZP.PROG,JG)
  110. C SEGDES IZB,IZP
  111. C
  112. C Reglage a posteriori de la frequence des tests si on a converge
  113. C au premier test.
  114. C
  115. IF(ICONV.EQ.1) THEN
  116. IF(NEFF.EQ.NPITE) THEN
  117. NPITE=MAX(NPITE/2,3)
  118. ELSE
  119. NPITE=MAX(NEFF/10,10)
  120. ENDIF
  121. ENDIF
  122.  
  123. CALL ECME(MTAB3,'NPITE',NPITE)
  124. CALL ECMO(MTAB3,'IZP','LISTREEL',IZP)
  125. IPAT=IPAT+1
  126.  
  127. RETURN
  128. END
  129.  
  130.  
  131.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales