Télécharger resmmo.eso

Retour à la liste

Numérotation des lignes :

resmmo
  1. C RESMMO SOURCE CB215821 24/04/12 21:17:08 11897
  2.  
  3. SUBROUTINE RESMMO (ICOLAC,ITLACC,IMAX1,IDEB)
  4.  
  5. *--------------------------------------------------------------------*
  6. * *
  7. * Restauration des pointeurs issus de la pile des MODELEs. *
  8. * *
  9. *--------------------------------------------------------------------*
  10. C***********************************************************************
  11. C HISTORIQUE : 06/11/98 : rajout de la restitution de la table
  12. C pour le modele 'NAVIER_STOKES'
  13. C On ne fait pas comme MILL car on ne comprend pas
  14. C sa modification (en fait, on ne comprend pas
  15. C pourquoi elle n'est pas faite dans tous les
  16. C objets (cf. restch.eso pour les CHPOINTs))
  17. C
  18. C***********************************************************************
  19. IMPLICIT INTEGER(I-N)
  20. IMPLICIT REAL*8 (A-H,O-Z)
  21.  
  22.  
  23. -INC PPARAM
  24. -INC CCOPTIO
  25. -INC SMMODEL
  26. -INC TMCOLAC
  27.  
  28. character*8 cmate,MOTa
  29. character*8 ityp1
  30. *
  31. EXTERNAL LONG
  32. character*(LOCHAI) m_libe,m_mode
  33. logical b_z
  34. *
  35. * Boucle sur les MODELEs contenus dans la pile:
  36. *
  37. ITLAC1 = KCOLA(1)
  38. ITLAC2 = KCOLA(10)
  39. ITLAC3 = KCOLA(40)
  40. ITLAC4 = KCOLA(29)
  41. DO 10 IEL=IDEB,IMAX1
  42. MMODEL = ITLAC(IEL)
  43. IF (MMODEL.EQ.0) GOTO 10
  44. SEGACT,MMODEL
  45. NSOUMO = KMODEL(/1)
  46. DO 20 ISOU=1,NSOUMO
  47. IMODEL=KMODEL(ISOU)
  48. IF (IMODEL.NE.0) THEN
  49. SEGACT,IMODEL*MOD
  50. IVA = IMAMOD
  51. IF (IVA.LT.0) IMAMOD = ITLAC1.ITLAC(ABS(IVA))
  52. C Point support DEFO.GENE.
  53. IVA = IPDPGE
  54. IF (IVA.LT.0) IPDPGE = ITLAC1.ITLAC(ABS(IVA))
  55. C cas 'NAVIER_STOKES' : INFMOD(2) contient une table
  56. NFOR=FORMOD(/2)
  57. MN3 =INFMOD(/1)
  58. do 715 iou=1,ivamod(/1)
  59. ityp1=tymode(iou)
  60. call typfil(ityp1,j)
  61. iva=abs(ivamod(iou))
  62. if(j.le.0) go to 715
  63. itlac5=KCOLA(J)
  64. if( ivamod(iou).le.0) ivamod(iou)=itlac5.itlac(iva)
  65. 715 continue
  66.  
  67. IF (NFOR.GT.0) THEN
  68. IF ((FORMOD(1).EQ.'NAVIER_STOKES') .OR.
  69. * (FORMOD(1).EQ.'DARCY').OR.
  70. * (FORMOD(1).EQ.'EULER')) THEN
  71. IF (MN3.GT.1) THEN
  72. IVA=ABS(INFMOD(2))
  73. IF(IVA.NE.0) INFMOD(2)=ITLAC2.ITLAC(IVA)
  74. ENDIF
  75. ENDIF
  76. do iou=3,mn3
  77. if(iou.ne.9.and.iou.ne.13) then
  78. if(infmod(iou).lt.0) then
  79. iva=abs(infmod(iou))
  80. if(iou.eq.14) then
  81. infmod(iou)=itlac4.itlac(iva)
  82. else
  83. infmod(iou)=itlac3.itlac(iva)
  84. endif
  85. endif
  86. endif
  87. enddo
  88. ENDIF
  89. if(mn3.lt.8.and.(formod(1).EQ.'MECANIQUE' .OR.
  90. & formod(1).EQ.'POREUX' .OR.
  91. & formod(1).EQ.'CHARGEMENT' ))then
  92. mn3=8
  93. nfor=formod(/2)
  94. nmat=matmod(/2)
  95. nobmod=ivamod(/1)
  96. segadj,imodel
  97. call prquoi(imodel)
  98.  
  99. * initialisation des nomid
  100. IF (FORMOD(1).NE.'NAVIER_STOKES'.AND.
  101. & FORMOD(1).NE.'EULER' .AND.
  102. & FORMOD(1).NE.'MELANGE' ) THEN
  103. if (CMATE.NE.'MODAL'.AND.CMATE.NE.'STATIQUE') then
  104. lucvar=0
  105. lucmat=0
  106. lucmaf=0
  107. luparx=0
  108. call inomid(imodel,' ',iret,lucvar,lucmat,
  109. & lucmaf,luparx)
  110. endif
  111. ENDIF
  112. endif
  113.  
  114. if (NFOR.eq.1) then
  115. NOBMOD = IVAMOD(/1)
  116. if (nobmod.eq.0) goto 200
  117. if (inatuu.ge.0) goto 200
  118.  
  119. noblib = 0
  120. DO II=1,NOBMOD
  121. IF(TYMODE(II) .EQ. 'MOT ')THEN
  122. IVA=IVAMOD(II)
  123. CALL QUEVAL(IVA,'MOT ',ier,lgmot,r_z,MOTa,b_z,io)
  124. IF(ier .NE. 0) CALL ERREUR(5)
  125. IF( MOTa .EQ. 'LMEEXT' .AND.
  126. & (formod(1).EQ. 'MECANIQUE' .OR.
  127. & formod(1).EQ. 'POREUX' ) ) THEN
  128. noblib = II+1
  129. imoLib = ivamod(II+2)
  130. imoFct = ivamod(II+3)
  131. GOTO 220
  132. ELSEIF(MOTa .EQ. 'LDIEXT' .AND.
  133. & formod(1).EQ. 'DIFFUSION' ) THEN
  134. noblib = II+1
  135. imoLib = ivamod(II+2)
  136. imoFct = ivamod(II+3)
  137. GOTO 220
  138. ENDIF
  139. ENDIF
  140. ENDDO
  141. 220 CONTINUE
  142. IF (noblib.LE.0) GOTO 200
  143.  
  144. call queval(imoLib,'MOT',ier,lli,r_z,m_libe,b_z,io)
  145. IF (ier .NE. 0) CALL ERREUR(5)
  146. call queval(imoFct,'MOT',ier,lmo,r_z,m_mode,b_z,io)
  147. IF (ier .NE. 0) CALL ERREUR(5)
  148. ivamod(noblib) = 0
  149. ip = -1
  150. CALL LEXTOP(m_libe,m_mode,ip,m_iloi,m_ptre)
  151. if (m_iloi.gt.0) ivamod(noblib) = m_ptre
  152. lli = LONG(m_libe)
  153. CALL POSCHA(m_libe(1:lli),imoLib)
  154. ivamod(noblib+1) = imoLib
  155. lmo = LONG(m_mode)
  156. CALL POSCHA(m_mode(1:lmo),imoFct)
  157. ivamod(noblib+2) = imoFct
  158.  
  159. 200 continue
  160. endif
  161.  
  162. SEGDES,IMODEL
  163. ENDIF
  164. 20 CONTINUE
  165. SEGDES,MMODEL
  166. 10 CONTINUE
  167.  
  168. RETURN
  169. END
  170.  
  171.  
  172.  
  173.  

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