Télécharger repart.eso

Retour à la liste

Numérotation des lignes :

repart
  1. C REPART SOURCE PV 17/06/26 21:15:12 9466
  2. subroutine repart(mrigid)
  3. *
  4. * repartitionne une raideur pour la limiter a un enregistrement gemat
  5. * par sous-zone. Ca optimise gemat.
  6. *
  7. IMPLICIT INTEGER(I-N)
  8. IMPLICIT REAL*8(A-H,O-Z)
  9.  
  10. -INC SMELEME
  11. -INC SMRIGID
  12. INTEGER OOOLEN
  13. INTEGER OOOVAL
  14. *
  15. LTRK=OOOVAL(1,4)
  16. if (LTRK.eq.0) LTRK=oooval(1,1)
  17.  
  18. iafair=0
  19. nbs=0
  20. segact mrigid
  21. do 100 irig=1,irigel(/2)
  22. xmatri=irigel(4,irig)
  23. LSEG=ooolen(xmatri)
  24. * write (6,*) ' repart lseg ',lseg
  25. nblprt=(LSEG-1)/LTRK + 1
  26. meleme=irigel(1,irig)
  27. segact meleme
  28. nbelem=num(/2)
  29. nblmax=(nbelem-1)/nblprt+1
  30. nblprt=(nbelem-1)/nblmax+1
  31. if (nbelem.gt.nblmax) iafair=1
  32. * if (nblprt.gt.1) iafair=1
  33. nbs=nbs+nblprt
  34. * write (6,*) ' re nblmax ',nbelem,nblmax
  35. * write (6,*) ' nblprt vaut ',nblprt
  36. segdes meleme
  37. 100 continue
  38. * write(6,*) 'nrigel nbs',irigel(/1),nbs
  39. if (iafair.eq.0) then
  40. segdes,mrigid
  41. return
  42. endif
  43. *
  44. * il y a du travail à faire
  45. nrigel=nbs
  46. segini ri1
  47. ri1.iforig=iforig
  48. ri1.mtymat=mtymat
  49. nbs=0
  50. nbsous=0
  51. nbref=0
  52. do 200 irig=1,irigel(/2)
  53. xmatri=irigel(4,irig)
  54. LSEG=ooolen(xmatri)
  55. nblprt=(LSEG+1)/LTRK + 1
  56. meleme=irigel(1,irig)
  57. segact meleme
  58. nbnn=num(/1)
  59. nbelee=num(/2)
  60. nblmax=(nbelee-1)/nblprt+1
  61. nblprt=(nbelee-1)/nblmax+1
  62. if (nbelee.le.nblmax) then
  63. * if (nblprt.eq.1) then
  64. nbs=nbs+1
  65. ri1.coerig(nbs)=coerig(irig)
  66. do im=1,irigel(/1)
  67. ri1.irigel(im,nbs)=irigel(im,irig)
  68. enddo
  69. else
  70. segact xmatri
  71. nligrd=re(/1)
  72. nligrp=re(/2)
  73. do 250 ipar=1,nblprt
  74. nbs=nbs+1
  75. jpar=nblmax*(ipar-1)
  76. nbelem=min(nblmax,nbelee-jpar)
  77. segini ipt2
  78. ipt2.itypel=itypel
  79. do 260 iel=1,nbelem
  80. jel=iel+jpar
  81. do 270 in=1,nbnn
  82. ipt2.num(in,iel)=num(in,jel)
  83. 270 continue
  84. ipt2.icolor(iel)=icolor(jel)
  85. 260 continue
  86. segdes ipt2
  87. nelrig=nbelem
  88. segini xmatr1
  89. do 280 iel=1,nelrig
  90. jel=iel+jpar
  91. do 280 ip=1,nligrp
  92. do 280 id=1,nligrd
  93. xmatr1.re(id,ip,iel)=re(id,ip,jel)
  94. 280 continue
  95. segdes xmatr1
  96. ri1.coerig(nbs)=coerig(irig)
  97. ri1.irigel(1,nbs)=ipt2
  98. ri1.irigel(2,nbs)=irigel(2,irig)
  99. ri1.irigel(3,nbs)=irigel(3,irig)
  100. ri1.irigel(4,nbs)=xmatr1
  101. do im=5,irigel(/1)
  102. ri1.irigel(im,nbs)=irigel(im,irig)
  103. enddo
  104. 250 continue
  105. segsup xmatri
  106. endif
  107. segdes meleme
  108. 200 continue
  109. segdes ri1
  110. segsup mrigid
  111. mrigid=ri1
  112. return
  113. end
  114.  
  115.  
  116.  
  117.  

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