Télécharger ordon4.eso

Retour à la liste

Numérotation des lignes :

ordon4
  1. C ORDON4 SOURCE CB215821 23/01/25 21:15:27 11573
  2. SUBROUTINE ORDON4 (MELEME)
  3. ************************************************************************
  4. * O R D O N N
  5. * -----------
  6. * SOUS-PROGRAMME ASSOCIE A LA DIRECTIVE "ORDONNER"
  7. * FONCTION:
  8. * ---------
  9. * reordonner une ligne de seg2 ou seg3
  10. *
  11. * on ordonne selon la proximite au premier pt pour des POI1 (PP 97)
  12. *
  13. C+PP
  14. IMPLICIT INTEGER(I-N)
  15. IMPLICIT REAL*8 (A-H,O-Z)
  16. DIMENSION P(3)
  17. real*8 DIST2, P
  18. integer i, ia, ico, iCompl, ie1, ie2, iref, j, jg
  19. integer iPile,nbElem
  20. C+PP
  21.  
  22. -INC PPARAM
  23. -INC CCOPTIO
  24. -INC COCOLL
  25. -INC SMELEME
  26. C+PP
  27. -INC SMLREEL
  28. -INC SMLENTI
  29. -INC SMCOORD
  30. -INC TMCOLAC
  31.  
  32. SEGMENT TTRAV
  33. INTEGER ILIS(NNOE)
  34. ENDSEGMENT
  35.  
  36. pointeur piles.LISPIL
  37. pointeur jcolac.ICOLAC
  38. pointeur jlisse.ILISSE
  39. pointeur jtlacc.ITLACC
  40.  
  41. C+PP
  42. *
  43. * on verifie d'abord que l'objet est simple
  44. *
  45. icompl=0
  46. SEGACT MELEME
  47. IF(LISOUS(/1).NE.0.OR.ITYPEL.GT.3) then
  48. CALL RENUEL(MELEME)
  49. return
  50. endif
  51. C+PP
  52. iun=1
  53. IF(ITYPEL.EQ.1)THEN
  54. SEGACT,MELEME*MOD
  55. NBELEM=ICOLOR(/1)
  56. C Si le nombre d'éléments POI1 est inférieur ou égal à 2
  57. C Il n'y a rien à faire
  58. IF(NBELEM.LE.2) GOTO 9998
  59. IREF=NUM(1,1)
  60. IREF=(IDIM+1)*(IREF-1)
  61. SEGACT,MCOORD
  62. DO IE1=1,IDIM
  63. P(IE1)=XCOOR(IREF+IE1)
  64. ENDDO
  65. JG=NBELEM-1
  66. SEGINI,MLREEL,MLENTI
  67. DO IE1=1,JG
  68. IREF=NUM(1,IE1+1)
  69. LECT(IE1)=IREF
  70. IREF=(IDIM+1)*(IREF-1)
  71. DIST2=0.D0
  72. DO IE2=1,IDIM
  73. DIST2=DIST2+(P(IE2)-XCOOR(IREF+IE2))**2
  74. ENDDO
  75. PROG(IE1)=DIST2
  76. ENDDO
  77. CALL GENOS2(PROG,LECT,JG)
  78. DO IE1=1,JG
  79. NUM(1,IE1+1)=LECT(IE1)
  80. ENDDO
  81. SEGSUP,MLREEL,MLENTI
  82. ELSE
  83. C+PP
  84. CALL LIGMAI(MELEME,TTRAV,1)
  85. IF(IERR.NE.0) RETURN
  86. SEGACT TTRAV
  87. SEGACT MELEME*MOD
  88. IA=1
  89. DO 1 I=1,NUM(/2)
  90. IA=IA-1
  91. DO 2 J=1,NUM(/1)
  92. IA=IA+1
  93. NUM(J,I)=ILIS(IA)
  94. 2 CONTINUE
  95. 1 CONTINUE
  96. SEGSUP TTRAV
  97. ENDIF
  98. 9998 CONTINUE
  99. c
  100. IF(IPSAUV.NE.0) THEN
  101. ICOLAC = IPSAUV
  102. SEGACT ICOLAC
  103. ILISSE=ILISSG
  104. SEGACT ILISSE*MOD
  105. CALL TYPFIL('MAILLAGE',ICO)
  106. ITLACC = KCOLA(ICO)
  107. SEGACT ITLACC*MOD
  108. CALL AJOUN0(ITLACC,MELEME,ILISSE,iun)
  109. SEGDES ICOLAC,ILISSE
  110. ENDIF
  111. C Suppression des piles d'objets communiques
  112. if(piComm.gt.0) then
  113. piles=piComm
  114. segact piles
  115. call typfil('MAILLAGE',ico)
  116. do ipile=1,piles.proc(/1)
  117. jcolac= piles.proc(ipile)
  118. if(jcolac.ne.0) then
  119. segact jcolac
  120. jlisse=jcolac.ilissg
  121. segact jlisse*mod
  122. jtlacc=jcolac.kcola(ico)
  123. segact jtlacc*mod
  124. call ajoun0(jtlacc,MELEME,jlisse,iun)
  125. segdes jtlacc
  126. segdes jlisse
  127. segdes jcolac
  128. endif
  129. enddo
  130. segdes piles
  131. endif
  132. RETURN
  133. END
  134.  
  135.  

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