Télécharger repart.eso

Retour à la liste

Numérotation des lignes :

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

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