Télécharger resou1.eso

Retour à la liste

Numérotation des lignes :

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

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