Télécharger trprof.eso

Retour à la liste

Numérotation des lignes :

trprof
  1. C TRPROF SOURCE PV090527 25/10/15 21:15:04 12383
  2. SUBROUTINE TRPROF
  3.  
  4. IMPLICIT INTEGER(I-N)
  5. -INC SMRIGID
  6. -INC SMMATRI
  7. -INC SMELEME
  8. -INC SMCOORD
  9.  
  10. -INC PPARAM
  11. -INC CCOPTIO
  12.  
  13. call lirobj('RIGIDITE',mrigi0,1,iretou)
  14. if (ierr.ne.0) return
  15. * creation d'un maillage résultat
  16. NBNN = 2
  17. NBELEM = 100
  18. NBSOUS = 0
  19. NBREF = 0
  20. segini meleme
  21. ITYPEL = 2
  22.  
  23. segact mcoord*mod
  24. inbpt = nbpts
  25. nb0 = 0
  26.  
  27. mrigid = mrigi0
  28. segact mrigid
  29.  
  30. do ifois=1,29
  31. * write(6,*) 'trprof ifois ipmatr mrigid ',ifois,ipmatr,mrigid
  32. if (jrcond.ne.0) then
  33. mrigid=jrcond
  34. segact mrigid
  35. nbr=irigel(/2)
  36. if (nbr.eq.0) then
  37. infer0 = 0
  38. * write(6,*) ' diagn1 nbr 0 '
  39. segdes mrigid
  40. return
  41. endif
  42. if(isupt.eq.0) isupt=isupeq
  43. endif
  44. enddo
  45. segact mrigid
  46. If ( (ichole .eq. 0) .and. (jrcond .ne. 0) ) then
  47. ri1 = mrigid
  48. mrigid = ri1.jrcond
  49. segact mrigid
  50. segdes ri1
  51. endif
  52. MMATRI = ICHOLE
  53. segdes mrigid
  54. if (MMATRI .eq. 0) GOTO 1000
  55. segact MMATRI
  56.  
  57. MILIGN = IILIGN
  58. segact MILIGN
  59.  
  60. NNOE = ILIGN(/1)
  61.  
  62. nbpts = nbpts + 100000
  63. segadj mcoord
  64. inumli = 0
  65. * Boucle sur les blocs de lignes
  66. Do j=1,NNOE
  67. Lign = ilign(j)
  68. segact Lign
  69.  
  70. NA = IMMM(/1)
  71. * Boucle sur les lignes
  72. Do i0=1,NA
  73. inumli = inumli + 1
  74. ideb = ivpo(2*ippvv(i0)-1)
  75. ifin = ivpo(2*ippvv(i0+1)-1)
  76. nbterm = ifin - ideb
  77. ixdeb = inumli - nbterm
  78. * Boucle sur les morceaux de lignes
  79. Do i1=ippvv(i0),(ippvv(i0+1)-1)
  80. nbt = ivpo(2*(i1+1)) - ivpo(2*i1)
  81. ndeb = ivpo(2*i1-1)
  82. if (nbt .lt. 0) then
  83. print*,'nbt negatif !!!'
  84. nbt = 0
  85. endif
  86. if (nb0 .eq. NBELEM) then
  87. NBELEM = NBELEM + 100000
  88. segadj meleme
  89. endif
  90.  
  91. if ((inbpt + 2) .gt. nbpts) then
  92. nbpts = nbpts + 100000
  93. segadj mcoord
  94. endif
  95.  
  96. inbpt = inbpt + 1
  97. nb0 = nb0 + 1
  98. xx1 = ixdeb + ndeb - ideb
  99. xx2 = ixdeb + ndeb - ideb + nbt
  100. yy = -1. * inumli
  101. * creation du point
  102. xcoor((inbpt-1)*(idim+1)+1) = xx1
  103. xcoor((inbpt-1)*(idim+1)+2) = yy
  104. if (idim .eq. 3) xcoor((inbpt-1)*(idim+1)+3) = 0
  105. xcoor(inbpt*(idim+1)) = 1
  106.  
  107. inbpt = inbpt + 1
  108. xcoor((inbpt-1)*(idim+1)+1) = xx2
  109. xcoor((inbpt-1)*(idim+1)+2) = yy
  110. if (idim .eq. 3) xcoor((inbpt-1)*(idim+1)+3) = 0
  111. xcoor(inbpt*(idim+1)) = 1
  112.  
  113. * affectation dans le meleme
  114. num(1,nb0) = inbpt - 1
  115. num(2,nb0) = inbpt
  116. icolor(nb0) = 1
  117. Enddo
  118. Enddo
  119.  
  120. segdes Lign
  121. Enddo
  122.  
  123. segdes MILIGN
  124.  
  125. segdes MMATRI
  126.  
  127. nbpts = inbpt
  128. segadj mcoord
  129. NBELEM = nb0
  130. segadj meleme
  131. segdes meleme
  132. melem0 = meleme
  133. call ecrobj('MAILLAGE',melem0)
  134. return
  135. 1000 continue
  136. call erreur(990)
  137. segdes meleme
  138. melem0 = 0
  139. end
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  

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