Télécharger modsta.eso

Retour à la liste

Numérotation des lignes :

modsta
  1. C MODSTA SOURCE CB215821 24/04/12 21:16:46 11897
  2. SUBROUTINE MODSTA(IPMOD,IPTABM,ipmod1)
  3. C
  4. implicit real*8(a-h,o-z)
  5. -INC PPARAM
  6. -INC CCOPTIO
  7. -INC SMMODEL
  8. POINTEUR IMODE3.IMODEL
  9. -INC SMTABLE
  10. -INC SMELEME
  11.  
  12. logical login,lobre
  13. character*8 charin, charre, tapind,typobj
  14.  
  15. mmodel = ipmod
  16. segact mmodel*mod
  17. is0 = kmodel(/1)
  18. c write(6,*) 'modsta',ipmod,iptabm,is0
  19. isk = is0
  20. isa = 1
  21. isb = is0
  22.  
  23. IVALIN = 1
  24. * continue la liste des maillages
  25. 10 CONTINUE
  26. *
  27. n1 = kmodel(/1)
  28. if (isk + is0 .ge. n1) then
  29. n1 = n1 + is0 + 1000
  30. segadj mmodel
  31. endif
  32. *
  33. IVALIN=IVALIN + 1
  34. XVALIN=REAL(0.D0)
  35. LOGIN=.TRUE.
  36. IOBIN=0
  37. TAPIND='ENTIER '
  38. CHARIN='MAILLAGE'
  39. TYPOBJ=' '
  40. CALL ACCTAB(IPTABM,TAPIND,IVALIN,XVALIN,CHARIN,LOGIN,IOBIN,
  41. . TYPOBJ,IVALRE,XVALRE,CHARRE,LOGRE,IOBRE)
  42. c write(6,*)'bsta',ivalin,iobre,typobj,ierr
  43. IF (IERR.NE.0) RETURN
  44. if (typobj.ne.'MAILLAGE'.or.iobre.le.0) goto 100
  45.  
  46. ktabm = 0
  47. * traiter les maillages elementaires
  48. MELEME = IOBRE
  49. segact meleme*nomod
  50. NSOU = MELEME.LISOUS(/1)
  51. NSOU1 = MAX(1,NSOU)
  52. DO 80 IM=1,NSOU1
  53. IF (NSOU.EQ.0) THEN
  54. IPT1 =MELEME
  55. ELSE
  56. IPT1 =MELEME.LISOUS(IM)
  57. SEGACT,IPT1
  58. ENDIF
  59. ITYP1 =IPT1.ITYPEL
  60. NBNN =IPT1.NUM(/1)
  61. NBELEM = IPT1.NUM(/2)
  62.  
  63. * chercher modele elementaire
  64. do is = isa,isb
  65. imode1 = kmodel(is)
  66. ipt2 = imode1.imamod
  67. ityp2 = ipt2.itypel
  68. nbn2 = ipt2.num(/1)
  69. nbele2 = ipt2.num(/2)
  70. if (ityp2.eq.ityp1.and.nbn2.eq.nbnn.and.nbele2.eq.nbelem) then
  71. ktabm = ktabm + 1
  72. goto 60
  73. endif
  74. enddo
  75. * pb : pas trouve de zone jumelle
  76. * write(6,*) 'pas de zone jumelle tranche ',ivalin,' zone ',im
  77. call erreur(5)
  78. return
  79.  
  80. 60 CONTINUE
  81. * dupliquer modele elementaire
  82. segini,imodel=imode1
  83. isk = isk + 1
  84. kmodel(isk) = imodel
  85. * segact imodel*mod
  86. imamod = ipt1
  87. do ity = 1,ivamod(/1)
  88. if (tymode(ity).eq.'STATIO') goto 70
  89. enddo
  90. * write(6,*) 'pas d entree STATIO tranche ',IVALIN,' zone ',im
  91. call erreur(5)
  92. return
  93. 70 ivamod(ity) = imode1
  94. C ... voir modif constituant
  95. if (cmatee.eq.'PARALLEL') then
  96. if (ipmod1.eq.0) then
  97. * write(6,*) 'donnees stationnaire parallele incompletes'
  98. call erreur(21)
  99. return
  100. else
  101. mmode1 = ipmod1
  102. endif
  103.  
  104. do ity = 1,ivamod(/1)
  105. if (tymode(ity).eq.'IMODEL') then
  106. imode2 = ivamod(ity)
  107. do immel = 1,mmode1.kmodel(/1)
  108. imode3 = mmode1.kmodel(immel)
  109. if (imode3.imamod.eq.imamod) then
  110. if (imode3.cmatee.eq.imode2.cmatee.and.
  111. & imode3.imatee.eq.imode2.imatee.and.
  112. & imode3.inatuu.eq.imode2.inatuu) goto 177
  113. endif
  114. enddo
  115. * write(6,*) 'donnees stationnaire parallele incorrectes'
  116. call erreur(21)
  117. return
  118.  
  119. 177 continue
  120. ivamod(ity) = imode3
  121.  
  122. endif
  123. enddo
  124.  
  125. endif
  126. 80 CONTINUE
  127.  
  128. if (ktabm.ne.is0) then
  129. * write(6,*) 'tranche ', ivalin,' non homologue'
  130. call erreur(5)
  131. return
  132. endif
  133. * on limite la recherche à la tranche précédente
  134. isa = isb + 1
  135. isb = isk
  136. GOTO 10
  137.  
  138. 100 CONTINUE
  139.  
  140. n1 = isk
  141. segadj mmodel
  142.  
  143.  
  144. RETURN
  145. END
  146.  
  147.  
  148.  
  149.  

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