Télécharger topv4.eso

Retour à la liste

Numérotation des lignes :

topv4
  1. C TOPV4 SOURCE GOUNAND 25/11/24 21:15:22 12406
  2. SUBROUTINE TOPV4(TRAVL,IALGO,XVMIN,XVTOL,NKPVIR,impr)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : TOPV4
  7. C DESCRIPTION : Amélioration d'une topologie autour d'un élément : sélection des
  8. C candidats de volume minimum mais non nul
  9. C
  10. C
  11. C
  12. C IJOB=0
  13. C Minimise le volume d'une topologie de maillage
  14. C en le maintenant supérieur à 0
  15. C IJOB=1
  16. C Minimise le volume, mais on a le droit d'ajouter des
  17. C noeuds internes
  18. C IJOB=2
  19. C La topologie de maillage est supposée être un maillage
  20. C On essaie de l'améliorer en conservant son volume
  21. C mais en augmentant sa qualité grace a l'adjonction
  22. C de noeuds internes
  23. C
  24. C
  25. C
  26. C LANGAGE : ESOPE
  27. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  28. C mél : gounand@semt2.smts.cea.fr
  29. C***********************************************************************
  30. C VERSION : v1, 05/02/2013, version initiale
  31. C HISTORIQUE : v1, 05/05/2013, création
  32. C HISTORIQUE :
  33. C HISTORIQUE :
  34. C***********************************************************************
  35. -INC PPARAM
  36. -INC CCOPTIO
  37. -INC CCREEL
  38. -INC TMATOP1
  39. POINTEUR LMCANS.MELEMX
  40. -INC SMLENTI
  41. POINTEUR LIDXCA.MLENTI
  42. POINTEUR LOKVOL.MLENTI
  43. -INC SMLREEL
  44. -INC SMCOORD
  45. POINTEUR KCOORD.MCOORD
  46. *
  47. INTEGER JCAND
  48. LOGICAL LCHANG
  49. LOGICAL LCHTOP
  50. *
  51. * Executable statements
  52. *
  53. * WRITE(IOIMP,*) 'entree topv4'
  54. *
  55. LMCANS=TRAVL.MCANS
  56. LIDXCA=TRAVL.IDXCA
  57. LOKVOL=TRAVL.OKVOL
  58. *
  59. TRAVL.NVOCOU=0
  60. JCAND=TRAVL.NCCOU
  61. DO ICAND=1,JCAND
  62. * IMCAND=ITCAND(ICAND)
  63. *Erreur pour calculer le volume, il ne faut pas utiliser la métrique !
  64. *
  65. IELDEB=LIDXCA.LECT(ICAND)
  66. IELFIN=LIDXCA.LECT(ICAND+1)-1
  67. CALL VOMSI3(LMCANS,IELDEB,IELFIN,NKPVIR,XVCAND,XVCANS,XVCANV)
  68. IF (IERR.NE.0) RETURN
  69.  
  70. if (impr.ge.4) then
  71. WRITE(IOIMP,*) ' ICAND=',ICAND,' XVCAND=',XVCAND,' XVCANS='
  72. $ ,XVCANS,' XVCANV=',XVCANV
  73. * àfaire CALL ECMAI1(imcand,0)
  74. endif
  75.  
  76. IF (IALGO.EQ.0) THEN
  77. IF (XVCAND.GT.XVTOL.AND.XVCAND.LE.XVMIN+XVTOL) THEN
  78. IF (ABS(XVMIN-XVCAND).LE.XVTOL) THEN
  79. *
  80. NVOCOU=NVOCOU+1
  81. LOKVOL.LECT(NVOCOU)=ICAND
  82. ELSE
  83. XVMIN=XVCAND
  84. *
  85. NVOCOU=1
  86. LOKVOL.LECT(NVOCOU)=ICAND
  87. ENDIF
  88. ENDIF
  89. ELSEIF (IALGO.EQ.1) THEN
  90. * On ne retient pas les candidats qui ont des elements qui se replient
  91. * if (XVCAND.NE.XVCANS) THEN
  92. if (ABS(XVCAND-XVCANS).GE.XVTOL) THEN
  93. if(impr.ge.4) then
  94. WRITE(IOIMP,*) ' ICAND=',ICAND,' XVCAND=',XVCAND,'
  95. $ XVCANS=',XVCANS
  96. write(ioimp,*) ' Candidat non selectionne : ',
  97. $ 'il y a repliement.'
  98. endif
  99. elseif (ABS(XVCANV).GE.XVTOL) then
  100. if(impr.ge.4) then
  101. WRITE(IOIMP,*) ' ICAND=',ICAND,' XVCANV=',XVCANV,'
  102. $ XVTOL=',XVTOL
  103. write(ioimp,*) ' Candidat non selectionne : ',
  104. $ 'un noeud virtuel nest plus coplanaire.'
  105. endif
  106. else
  107. IF (ABS(XVMIN-XVCAND).LE.XVTOL) THEN
  108. NVOCOU=NVOCOU+1
  109. LOKVOL.LECT(NVOCOU)=ICAND
  110. ELSE
  111. if(impr.ge.4) then
  112. WRITE(IOIMP,*) ' ICAND=',ICAND,' XVCAND=',XVCAND,'
  113. $ XVMIN=',XVMIN
  114. write(ioimp,*) ' Candidat non selectionne : ',
  115. $ 'pas le bon volume.'
  116. endif
  117.  
  118. ENDIF
  119. endif
  120. ELSE
  121. WRITE(IOIMP,*) 'IALGO=',IALGO,' unknown'
  122. GOTO 9999
  123. ENDIF
  124. ENDDO
  125. if (impr.ge.4) then
  126. write(ioimp,*) 'Apres selection vol ncandidat=',nvocou
  127. Write(ioimp,*) (lokvol.lect(iii),iii=1,nvocou)
  128. endif
  129. * write(ioimp,*) 'Sortie topv4'
  130. RETURN
  131. 9999 CONTINUE
  132. MOTERR(1:8)='TOPV4 '
  133. * 349 2
  134. *Problème non prévu dans le s.p. %m1:8 contactez votre assistance
  135. CALL ERREUR(349)
  136. RETURN
  137. *
  138. * End of subroutine TOPV4
  139. *
  140. END
  141.  
  142.  

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