Télécharger resou1.eso

Retour à la liste

Numérotation des lignes :

resou1
  1. C RESOU1 SOURCE PV 22/04/15 17:10:55 11344
  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. 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. CALL MONDES(ICHOLX,MVECTX,NOEN,isouci)
  104. IF(IIMPI.EQ.1) THEN
  105. WRITE(IOIMP,498)
  106. 498 FORMAT(' TEMPS SUIVANT APRES APPEL MONDES')
  107. CALL GIBTEM(XKT)
  108. INTERR(1)=XKT
  109. CALL ERREUR(-259)
  110. ENDIF
  111. IF(IERR.NE.0) GO TO 5000
  112. C
  113. C **** SUBROUTINE VCH1 : REMET LE VECTEUR SOUS FORME D UN CHPOINT
  114. C **** LE CHPOINT EST DE TYPE PREMIER MEMBRE
  115. C
  116. MVECTA=MVECTX
  117. DO 5 K=1,NN
  118. IF(NN.EQ.1) GO TO 10
  119. IF(K.EQ.1) THEN
  120. INC=INK
  121. MVECT1=MVECTX
  122. SEGACT MVECT1
  123. SEGINI MVECTD
  124. ENDIF
  125. SEGACT MVECTD*MOD
  126. LD=(K-1)*INK
  127. DO 6 L=1,INK
  128. VECTBB(L)=MVECT1.VECTBB(L+LD)
  129. 6 CONTINUE
  130. MVECTA=MVECTD
  131. SEGDES MVECTD
  132. IF(K.EQ.NN) SEGSUP MVECT1
  133. 10 CONTINUE
  134. CALL VCH1(ICHOLX,MVECTA,ISOLU,KRIGI)
  135. IF(IERR.NE.0) RETURN
  136. C
  137. IDEMEM(K+KGEN1)=ISOLU
  138. 5 CONTINUE
  139. MVECTD=MVECTA
  140. SEGSUP MVECTD
  141. 201 CONTINUE
  142. IDAMEM = IDEMEM
  143. **** SEGDES IDEMEM
  144. C
  145. 5000 CONTINUE
  146. RETURN
  147. END
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  

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