Télécharger topv4.eso

Retour à la liste

Numérotation des lignes :

topv4
  1. C TOPV4 SOURCE GOUNAND 21/04/06 21:15:35 10940
  2. *ijob SUBROUTINE TOPV4(TRAVL,IJOB,XVMIN,XVTLOV,XVTOL,KPVIRT)
  3. SUBROUTINE TOPV4(TRAVL,IALGO,XVMIN,XVTLOV,XVTOL,KPVIRT,impr)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. IMPLICIT INTEGER (I-N)
  6. C***********************************************************************
  7. C NOM : TOPV4
  8. C DESCRIPTION : Amélioration d'une topologie autour d'un élément : sélection des
  9. C candidats de volume minimum mais non nul
  10. C
  11. C
  12. C
  13. C IJOB=0
  14. C Minimise le volume d'une topologie de maillage
  15. C en le maintenant supérieur à 0
  16. C IJOB=1
  17. C Minimise le volume, mais on a le droit d'ajouter des
  18. C noeuds internes
  19. C IJOB=2
  20. C La topologie de maillage est supposée être un maillage
  21. C On essaie de l'améliorer en conservant son volume
  22. C mais en augmentant sa qualité grace a l'adjonction
  23. C de noeuds internes
  24. C
  25. C
  26. C
  27. C LANGAGE : ESOPE
  28. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  29. C mél : gounand@semt2.smts.cea.fr
  30. C***********************************************************************
  31. C VERSION : v1, 05/02/2013, version initiale
  32. C HISTORIQUE : v1, 05/05/2013, création
  33. C HISTORIQUE :
  34. C HISTORIQUE :
  35. C***********************************************************************
  36. -INC PPARAM
  37. -INC CCOPTIO
  38. -INC CCREEL
  39. -INC SMELEME
  40. POINTEUR KELEM.MELEME
  41. POINTEUR KEXTO.MELEME
  42. POINTEUR IBTLOC.MELEME
  43. POINTEUR IPBTL2.MELEME
  44. POINTEUR KTBES.MELEME
  45. POINTEUR KTBES2.MELEME
  46. *anc POINTEUR IMCAND.MELEME
  47. -INC TMATOP1
  48. *-INC SMELEMX
  49. POINTEUR LMCANS.MELEMX
  50. POINTEUR IPBTL.MELEMX
  51. -INC SMLENTI
  52. POINTEUR KNNO.MLENTI
  53. POINTEUR LIDXCA.MLENTI
  54. POINTEUR LOKVOL.MLENTI
  55. *anc POINTEUR LNQUAL.MLENTI
  56. -INC SMLREEL
  57. *anc POINTEUR IQUAL.MLREEL
  58. *anc POINTEUR LQUALS.MLREEL
  59. -INC SMCOORD
  60. POINTEUR KCOORD.MCOORD
  61. *anc-INC STRAVJ
  62. *anc POINTEUR TRAVK.TRAVJ
  63. *-INC STRAVL
  64. *
  65. LOGICAL LOK
  66. *anc LOGICAL LTOIBO
  67. *anc LOGICAL LTOIBA
  68. INTEGER JCAND
  69. LOGICAL LCHANG
  70. LOGICAL LCHTOP
  71. * Liste de topologies de maillages candidates
  72. * SEGMENT ITCAND(0)
  73. * Liste de topologies de maillages candidats de plus petit volume non nul
  74. * SEGMENT ITVOL(JG)
  75. * Liste de topologies de maillages candidats de plus petit volume
  76. * et de meilleure qualité
  77. * SEGMENT ILQUAL(JG)
  78. * SEGMENT ILIND(JG)
  79. * SEGMENT JLIND(JG)
  80. *
  81. * Executable statements
  82. *
  83. * WRITE(IOIMP,*) 'coucou topv4'
  84. * Il vaudrait mieux la lire !!
  85. * XVTOL=XZPREC*1.D2
  86. *anc IDIMP1=IDIM+1
  87. *anc KCOORD=TRAVK.COORD
  88. *anc KEXTO=TRAVK.TOPO
  89. *
  90. LMCANS=TRAVL.MCANS
  91. LIDXCA=TRAVL.IDXCA
  92. LOKVOL=TRAVL.OKVOL
  93. *anc LQUALS=TRAVL.QUALS
  94. *anc LNQUAL=TRAVL.NQUAL
  95. *
  96. TRAVL.NVOCOU=0
  97. JCAND=TRAVL.NCCOU
  98. DO ICAND=1,JCAND
  99. * IMCAND=ITCAND(ICAND)
  100. *Erreur pour calculer le volume, il ne faut pas utiliser la métrique !
  101. * CALL VOMSIM(IMCAND,IMET,KPVIRT,XVCAND)
  102. * CALL VOMSIM(IMCAND,0,KPVIRT,YVCAND,YVCANV)
  103. *
  104. IELDEB=LIDXCA.LECT(ICAND)
  105. IELFIN=LIDXCA.LECT(ICAND+1)-1
  106. CALL VOMSI3(LMCANS,IELDEB,IELFIN,0,KPVIRT,XVCAND,XVCANV)
  107. IF (IERR.NE.0) RETURN
  108.  
  109. if (impr.ge.4) then
  110. WRITE(IOIMP,*) ' ICAND=',ICAND,' XVCAND=',XVCAND,
  111. $ ' XVCANV=',XVCANV
  112. * àfaire CALL ECMAI1(imcand,0)
  113. endif
  114.  
  115. *ijob IF (IJOB.EQ.0.OR.IJOB.EQ.1) THEN
  116. IF (IALGO.EQ.0) THEN
  117. IF (XVCAND.GT.XVTOL.AND.XVCAND.LE.XVMIN+XVTOL) THEN
  118. IF (ABS(XVMIN-XVCAND).LE.XVTOL) THEN
  119. *
  120. NVOCOU=NVOCOU+1
  121. LOKVOL.LECT(NVOCOU)=ICAND
  122. ELSE
  123. XVMIN=XVCAND
  124. *
  125. NVOCOU=1
  126. LOKVOL.LECT(NVOCOU)=ICAND
  127. ENDIF
  128. ENDIF
  129. *ijob ELSEIF (IJOB.EQ.2) THEN
  130. ELSEIF (IALGO.EQ.1) THEN
  131. **** Test !!!!
  132. **** IF (ABS(XVMIN-XVCAND).LE.XVTOL) THEN
  133. **** Test !!!!
  134. IF (ABS(XVMIN-XVCAND).LE.XVTOL.AND.ABS(XVCANV
  135. $ -XVTLOV).LE.XVTOL)THEN
  136. *
  137. NVOCOU=NVOCOU+1
  138. LOKVOL.LECT(NVOCOU)=ICAND
  139. ENDIF
  140. ELSE
  141. *ijob WRITE(IOIMP,*) 'IJOB=',IJOB,' unknown'
  142. WRITE(IOIMP,*) 'IALGO=',IALGO,' unknown'
  143. GOTO 9999
  144. ENDIF
  145. ENDDO
  146. if (impr.ge.4) then
  147. *anc write(ioimp,*) 'Apres selection vol ncandidat=',ITVOL(/1)
  148. *anc Write(ioimp,*) (itvol(iii),iii=1,itvol(/1))
  149. write(ioimp,*) 'Apres selection vol ncandidat=',nvocou
  150. Write(ioimp,*) (lokvol.lect(iii),iii=1,nvocou)
  151. endif
  152. RETURN
  153. *
  154. *
  155. *
  156. 9999 CONTINUE
  157. MOTERR(1:8)='TOPV4 '
  158. * 349 2
  159. *Problème non prévu dans le s.p. %m1:8 contactez votre assistance
  160. CALL ERREUR(349)
  161. RETURN
  162. *
  163. * End of subroutine TOPV4
  164. *
  165. END
  166.  
  167.  
  168.  

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