Télécharger resou1.eso

Retour à la liste

Numérotation des lignes :

resou1
  1. C RESOU1 SOURCE MB234859 25/01/03 21:15:25 12105
  2. SUBROUTINE RESOU1(KRIGI,IDAMEM,NOID,NOEN,prec,istab,isouci)
  3. C
  4. C **** SUBROUTINE QUI EXECUTE L OPERATION RESOU
  5. C **** APPELEE PAR RESOU OU PAR SUPRI
  6. C
  7. IMPLICIT INTEGER(I-N)
  8. IMPLICIT REAL*8 (A-H,O-Z)
  9. INTEGER OOOVAL
  10. SEGMENT IDEMEM(0)
  11. -INC SMRIGID
  12. -INC SMVECTD
  13.  
  14. -INC PPARAM
  15. -INC CCOPTIO
  16. -INC SMMATRI
  17. C
  18. MRIGID=KRIGI
  19. SEGACT MRIGID
  20. LAGDUA=IMLAG
  21. ICHOLX=ICHOLE
  22. SEGDES MRIGID
  23. IF(ICHOLX.NE.0) then
  24. MMATRI=ICHOLX
  25. SEGACT MMATRI
  26. IF (PRCHLV.lt.PREC*1.001.and.PRCHLV.gt.PREC*0.999) GO TO 1
  27. write (6,*) ' attention changement de precision '
  28. MILIGN=IILIGN
  29. segact milign
  30. DO 20 I=1,ILIGN(/1)
  31. LIGN=ILIGN(I)
  32. SEGSUP LIGN
  33. 20 CONTINUE
  34. MDIAG=IDIAG
  35. SEGSUP MDIAG
  36. MDNOR=IDNORM
  37. SEGSUP MDNOR
  38. SEGSUP MMATRI
  39. ICHOLX=0
  40. ENDIF
  41. CALL TRIANG(KRIGI,prec,istab)
  42. IF(IERR.NE.0) GO TO 5000
  43. MRIGID=KRIGI
  44. SEGACT MRIGID
  45. ICHOLX=ICHOLE
  46. SEGDES MRIGID
  47. mmatri=icholx
  48. segact mmatri
  49. C
  50. C **** SUBROUTINE CHV2 : TRANSFORME LE CHPOIN ISECO EN VECTEUR
  51. C
  52. 1 CONTINUE
  53. IDEMEM=IDAMEM
  54. SEGACT IDEMEM*MOD
  55. NNTOT=IDEMEM(/1)
  56. MMATRI=ICHOLX
  57. SEGACT MMATRI
  58. MILIGN=IILIGN
  59. SEGACT,MILIGN
  60. INK=IPNO(/1)
  61. SEGDES MILIGN,MMATRI
  62. CALL INTPDO(LENB)
  63. NNPA= MAX(1,((OOOVAL(1,1)-NGMAXY)/(2*LENB))/INK+1)
  64.  
  65. C
  66. C ON TRAVAILLE AVEC AUTANT DE VECTEUR SIMULTANEE QU'IL EN RENTRE DANS
  67. C LA MOITIE DE LA MEMOIRE CENTRALE
  68. C
  69. NN=NNPA
  70. DO 201 KGEN = 1,NNTOT,NNPA
  71. IF(KGEN+NNPA-1.GT.NNTOT) NN= NNTOT-KGEN+1
  72. KGEN1=KGEN-1
  73. DO 2 K=1,NN
  74. ISECO=IDEMEM(K+KGEN1)
  75. CALL CHV2(ICHOLX,ISECO,MVECTX,NOID)
  76. IF(IERR.NE.0) GO TO 5000
  77. IDEMEM(K+KGEN1)=MVECTX
  78. 2 CONTINUE
  79. IF(NN.NE.1) THEN
  80. INC = INK * NN
  81. SEGINI MVECTD
  82. DO 3 LL=1,NN
  83. LD=INK*(LL-1)
  84. MVECT1=IDEMEM(LL+KGEN1)
  85. SEGACT MVECT1
  86. DO L=1,INK
  87. VECTBB(L+LD)=MVECT1.VECTBB(L)
  88. enddo
  89. SEGSUP MVECT1
  90. 3 CONTINUE
  91. MVECTX=MVECTD
  92. SEGDES MVECTD
  93. ENDIF
  94. C
  95. C **** SUBROUTINE MONDES :
  96. C
  97. IF(IIMPI.EQ.1) THEN
  98. WRITE(IOIMP,499)
  99. 499 FORMAT(' TEMPS SUIVANT AVANT APPEL MONDES')
  100. CALL GIBTEM(XKT)
  101. INTERR(1)=XKT
  102. CALL ERREUR(-259)
  103. ENDIF
  104. segact mrigid
  105. ** write(6,*) 'dans resou1 mrigid lagdua ',mrigid,lagdua
  106. CALL MONDES(ICHOLX,MVECTX,NOEN,isouci,lagdua)
  107. IF(IIMPI.EQ.1) THEN
  108. WRITE(IOIMP,498)
  109. 498 FORMAT(' TEMPS SUIVANT APRES APPEL MONDES')
  110. CALL GIBTEM(XKT)
  111. INTERR(1)=XKT
  112. CALL ERREUR(-259)
  113. ENDIF
  114. IF(IERR.NE.0) GO TO 5000
  115. C
  116. C **** SUBROUTINE VCH1 : REMET LE VECTEUR SOUS FORME D UN CHPOINT
  117. C **** LE CHPOINT EST DE TYPE PREMIER MEMBRE
  118. C
  119. MVECTA=MVECTX
  120. DO 5 K=1,NN
  121. IF(NN.EQ.1) GO TO 10
  122. IF(K.EQ.1) THEN
  123. INC=INK
  124. MVECT1=MVECTX
  125. SEGACT MVECT1
  126. SEGINI MVECTD
  127. ENDIF
  128. SEGACT MVECTD*MOD
  129. LD=(K-1)*INK
  130. DO 6 L=1,INK
  131. VECTBB(L)=MVECT1.VECTBB(L+LD)
  132. 6 CONTINUE
  133. MVECTA=MVECTD
  134. SEGDES MVECTD
  135. IF(K.EQ.NN) SEGSUP MVECT1
  136. 10 CONTINUE
  137. CALL VCH1(ICHOLX,MVECTA,ISOLU,KRIGI)
  138. IF(IERR.NE.0) RETURN
  139. C
  140. IDEMEM(K+KGEN1)=ISOLU
  141. 5 CONTINUE
  142. MVECTD=MVECTA
  143. SEGSUP MVECTD
  144. 201 CONTINUE
  145. IDAMEM = IDEMEM
  146. **** SEGDES IDEMEM
  147. C
  148. 5000 CONTINUE
  149. RETURN
  150. END
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  

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