Télécharger resmmo.eso

Retour à la liste

Numérotation des lignes :

resmmo
  1. C RESMMO SOURCE OF166741 24/11/18 21:15:24 12081
  2.  
  3. SUBROUTINE RESMMO (ICOLAC,ITLACC,IMAX1,IDEB)
  4.  
  5. *--------------------------------------------------------------------*
  6. * *
  7. * Restauration des pointeurs issus de la pile des MODELEs. *
  8. * *
  9. *--------------------------------------------------------------------*
  10.  
  11. IMPLICIT INTEGER(I-N)
  12. IMPLICIT REAL*8 (A-H,O-Z)
  13.  
  14. -INC PPARAM
  15. -INC CCOPTIO
  16.  
  17. -INC SMMODEL
  18.  
  19. -INC TMCOLAC
  20.  
  21. character*8 cmate,MOTa
  22. character*8 ityp1
  23.  
  24. EXTERNAL LONG
  25. character*(LOCHAI) m_libe,m_mode
  26. logical b_z
  27.  
  28. * Boucle sur les MODELEs contenus dans la pile:
  29. *
  30. ITLAC1 = KCOLA(1)
  31. ITLAC2 = KCOLA(10)
  32. ITLAC3 = KCOLA(40)
  33. ITLAC4 = KCOLA(29)
  34. DO 10 IEL=IDEB,IMAX1
  35. MMODEL = ITLAC(IEL)
  36. IF (MMODEL.EQ.0) GOTO 10
  37. SEGACT,MMODEL
  38. NSOUMO = KMODEL(/1)
  39. DO 20 ISOU=1,NSOUMO
  40. IMODEL=KMODEL(ISOU)
  41. IF (IMODEL.NE.0) THEN
  42. SEGACT,IMODEL*MOD
  43. IVA = IMAMOD
  44. IF (IVA.LT.0) IMAMOD = ITLAC1.ITLAC(ABS(IVA))
  45. C Point support DEFO.GENE.
  46. IVA = IPDPGE
  47. IF (IVA.LT.0) IPDPGE = ITLAC1.ITLAC(ABS(IVA))
  48. NFOR=FORMOD(/2)
  49. MN3 =INFMOD(/1)
  50. do 715 iou=1,ivamod(/1)
  51. ityp1=tymode(iou)
  52. call typfil(ityp1,j)
  53. if(j.le.0) go to 715
  54. iva=ivamod(iou)
  55. itlac5=KCOLA(J)
  56. if (iva.lt.0) ivamod(iou)=itlac5.itlac(abs(iva))
  57. 715 continue
  58. C Cas 'NAVIER_STOKES' : INFMOD(2) contient une table
  59. IF (NFOR.GT.0) THEN
  60. IF (MN3.GT.1) THEN
  61. IF ((FORMOD(1).EQ.'NAVIER_STOKES') .OR.
  62. & (FORMOD(1).EQ.'DARCY ') .OR.
  63. & (FORMOD(1).EQ.'EULER ')) THEN
  64. IVA=INFMOD(2)
  65. IF(IVA.LT.0) INFMOD(2) = ITLAC2.ITLAC(ABS(IVA))
  66. ENDIF
  67. ENDIF
  68. do iou = 3, mn3
  69. if(iou.ne.9.and.iou.ne.13) then
  70. iva = infmod(iou)
  71. if (iva.lt.0) then
  72. if (iou.eq.14) then
  73. infmod(iou)=itlac4.itlac(abs(iva))
  74. else
  75. infmod(iou)=itlac3.itlac(abs(iva))
  76. endif
  77. endif
  78. endif
  79. enddo
  80. ENDIF
  81.  
  82. if (NFOR.eq.1) then
  83. NOBMOD = IVAMOD(/1)
  84. if (nobmod.eq.0) goto 200
  85. if (inatuu.ge.0) goto 200
  86.  
  87. noblib = 0
  88. DO II=1,NOBMOD
  89. IF(TYMODE(II) .EQ. 'MOT ')THEN
  90. IVA=IVAMOD(II)
  91. CALL QUEVAL(IVA,'MOT ',ier,lgmot,r_z,MOTa,b_z,io)
  92. IF(ier .NE. 0) CALL ERREUR(5)
  93. IF( MOTa .EQ. 'LMEEXT' .AND.
  94. & (formod(1).EQ. 'MECANIQUE' .OR.
  95. & formod(1).EQ. 'POREUX' ) ) THEN
  96. noblib = II+1
  97. imoLib = ivamod(II+2)
  98. imoFct = ivamod(II+3)
  99. GOTO 220
  100. ELSEIF(MOTa .EQ. 'LDIEXT' .AND.
  101. & formod(1).EQ. 'DIFFUSION' ) THEN
  102. noblib = II+1
  103. imoLib = ivamod(II+2)
  104. imoFct = ivamod(II+3)
  105. GOTO 220
  106. ENDIF
  107. ENDIF
  108. ENDDO
  109. 220 CONTINUE
  110. IF (noblib.LE.0) GOTO 200
  111.  
  112. call queval(imoLib,'MOT',ier,lli,r_z,m_libe,b_z,io)
  113. IF (ier .NE. 0) CALL ERREUR(5)
  114. call queval(imoFct,'MOT',ier,lmo,r_z,m_mode,b_z,io)
  115. IF (ier .NE. 0) CALL ERREUR(5)
  116. ivamod(noblib) = 0
  117. ip = -1
  118. CALL LEXTOP(m_libe,m_mode,ip,m_iloi,m_ptre)
  119. if (m_iloi.gt.0) ivamod(noblib) = m_ptre
  120. lli = LONG(m_libe)
  121. CALL POSCHA(m_libe(1:lli),imoLib)
  122. ivamod(noblib+1) = imoLib
  123. lmo = LONG(m_mode)
  124. CALL POSCHA(m_mode(1:lmo),imoFct)
  125. ivamod(noblib+2) = imoFct
  126.  
  127. 200 continue
  128. endif
  129.  
  130. SEGDES,IMODEL
  131. ENDIF
  132. 20 CONTINUE
  133. SEGDES,MMODEL
  134. 10 CONTINUE
  135.  
  136. RETURN
  137. END
  138.  
  139.  
  140.  

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