Télécharger confor.eso

Retour à la liste

Numérotation des lignes :

confor
  1. C CONFOR SOURCE PV090527 25/01/07 12:39:21 12114
  2. subroutine confor(mchelm,mchel1,mmodel,iprio)
  3. implicit real*8(a-h,o-z)
  4. implicit integer (i-n)
  5. -INC SMMODEL
  6. -INC SMCHAML
  7.  
  8. -INC PPARAM
  9. -INC CCOPTIO
  10. -INC SMCOORD
  11. *
  12. * verifie que dans un chamelem pas plus de zones que dans le modele
  13. * si c'est le cas essaye de regrouper les zones du chaml s'appuyant
  14. * sur le meme modele en prenant iprio comme lieu de support
  15. *
  16. segment lijk
  17. integer imail(no),isu(no),ipla(no),igard(nch)
  18. character*16 ncom(no),npha(no)
  19. endsegment
  20. character*16 icom,iph
  21. * write(6,*) ' entrée dans confor '
  22. nmo=kmodel(/1)
  23. nch=imache(/1)
  24. no=nmo
  25. n1=1
  26. segini lijk
  27. n3=infche(/2)
  28. l1 = titche(/1)
  29. * write(6,*) 'mchelm',mchelm
  30. segini,mchel1=mchelm
  31. * write(6,*) ' nmo nch ', nmo,nch
  32. * write(6,*) ' pour le modele imamod conmod phamod'
  33.  
  34. do 1 io=1,nmo
  35. imodel=kmodel(io)
  36. * write (6,*) imamod,conmod,phamod
  37. imail(io)=imamod
  38. ncom(io)=conmod
  39. npha(io)=conmod(17:24)
  40. 1 continue
  41.  
  42. * write(6,*) ' boucle sur le chamelem '
  43. do 2 io=1,nch
  44. ima=imache(io)
  45. icom=conche(io)
  46. iph=conche(io)(17:24)
  47. mcham1=ichaml(io)
  48. * write(6,*) ' nomche ',(mcham1.nomche(ic),ic=1,
  49. * $ mcham1.nomche(/2))
  50. * write(6,*) ima, icom,iph
  51. do 3 iu=1,nmo
  52. if( ima.eq.imail(iu)) then
  53. if(icom.eq.ncom(iu)) then
  54. if(iph.eq.npha(iu)) then
  55. * on a trouvé sur quelle partie du modele on s'appuie
  56. * on teste si deja rencontré et si oui on met tout le monde
  57. * sur le support iprio
  58. if(isu(iu).ne.0) then
  59. isune=infche(io,6)
  60. if(isu(iu).ne.iprio.and.isu(iu).ne.isune) then
  61. * il faut changer le support du ipla(iu)
  62. ia = ipla(iu)
  63. * write(6,*) ' ia iu',ia,iu
  64. segini mmode1
  65. mmode1.kmodel(1)=kmodel(iu)
  66. segini mchel2
  67. mchel2.CONCHE(1)=conche(Ia)
  68. mchel2.IMACHE(1)=imache(ia)
  69. mchel2.IMACHE(1)=imache(ia)
  70. mchel2.ICHAML(1)=ICHAML(ia)
  71. mchel2.ifoche=ifoche
  72. mchel2.titche=titche
  73. do iy=1,n3
  74. mchel2.infche(1,iy)=infche(ia,iy)
  75. enddo
  76. * write(6,*) ' confor appel a chasup'
  77. call chasup(mmode1,mchel2,mchel3,irt,iprio)
  78. isu(iu)=iprio
  79. if(irt.ne.0) return
  80. mchel1.ichaml(ia)=mchel3.ichaml(1)
  81. mchel1.infche(ia,6)=mchel3.infche(1,6)
  82. segsup mchel2,mmode1
  83. endif
  84. * il suffit d'additionner au ipla(iu )ieme ( si pas bon support
  85. * faire un chasup)
  86. * write(6,*) ' passage 2 io '
  87. ia=io
  88. segini mchel2
  89. mchel2.CONCHE(1)=conche(Ia)
  90. mchel2.IMACHE(1)=imache(ia)
  91. mchel2.ICHAML(1)=ICHAML(ia)
  92. mchel2.ifoche=ifoche
  93. mchel2.titche=titche
  94. do iy=1,n3
  95. mchel2.infche(1,iy)=infche(ia,iy)
  96. enddo
  97. if(infche(io,6).ne.isu(iu)) then
  98. n1=1
  99. isuppr=1
  100. segini mmode1
  101. mmode1.kmodel(1)=kmodel(iu)
  102. * write(6,*) ' confor appel a chasup 2'
  103. call chasup(mmode1,mchel2,mchel3,irt,iprio)
  104. segsup mmode1,mchel2
  105. else
  106. isuppr=0
  107. mchel3=mchel2
  108. endif
  109. ib=ipla(iu)
  110. * write(6,*) ' ib iu ' , ib,iu
  111. mchaml=mchel1.ichaml(ib)
  112. segini,mcham4=mchaml
  113. mchaml=mcham4
  114. mchel1.ichaml(ib)=mchaml
  115. n22= ielval(/1)
  116. mcham3=mchel3.ichaml(1)
  117. n4=mcham3.ielval(/1)
  118. n2=n22+n4
  119. segadj mchaml
  120. * write(6,*) ' n2 n22 n4 ', n2 , n22 , n4
  121. do iy=1,n4
  122. mchaml.nomche(iy+n22)=mcham3.nomche(iy)
  123. mchaml.typche(iy+n22)=mcham3.typche(iy)
  124. mchaml.ielval(iy+n22)=mcham3.ielval(iy)
  125. enddo
  126. if(isuppr.eq.1) segsup mchel3,mcham3
  127. else
  128. * on se contente de stocker le champ
  129. isu(iu)=infche(io,6)
  130. ipla(iu)=io
  131. igard(io)=1
  132. * write(6,*) ' iu io',iu,io
  133. endif
  134. go to 2
  135. endif
  136. endif
  137. endif
  138. 3 continue
  139. call erreur( 19)
  140. return
  141. 2 continue
  142. *
  143. * il ne reste plus qu'a tasser mchel1
  144. *
  145. ico=0
  146. do iy=1,nch
  147. if(igard(iy).eq.1) then
  148. ico=ico+1
  149. do ip=1,n3
  150. mchel1.infche(ico,ip)=mchel1.infche(iy,ip)
  151. enddo
  152. mchel1.conche(ico)=mchel1.conche(iy)
  153. mchel1.imache(ico)=mchel1.imache(iy)
  154. mchel1.ichaml(ico)=mchel1.ichaml(iy)
  155. endif
  156. enddo
  157. if(ico.ne.nch) then
  158. n1=ico
  159. l1=mchel1.titche(/1)
  160. n3= mchel1.infche(/2)
  161. segadj mchel1
  162. endif
  163. * if(ico.ne.no) call erreur(19)
  164. segsup lijk
  165.  
  166. end
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  

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