Télécharger isosurf.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : isosurf.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ************************ CAS TEST : isosurf.dgibi ******************
  5. GRAPH = FAUX ;
  6. 'SAUT' 'PAGE' ;
  7. *-------------------------------------------------------------------
  8. * TEST @ISOSURF
  9. * ISOSURFACES POUR MAILLAGE DE TETRAHEDRES
  10. ********************************************************************
  11. * Test de la procedure qui extrait les isosurfaces dont les valeurs
  12. * sont listées dans une liste (LIS1) d'un champoint (HANA1) appuyé
  13. * sur un maillage (MASSIF0) exclusivement constitué de tetrahèdres
  14. * (TET4).
  15. *
  16. * Le résultat final est constitué du maillage surfacique (TRI3)
  17. * regroupant l'ensemble des isosurface MAIF1 et du champoint CHPF1
  18. * des isovaleurs LIS1 appuyées sur MAIF1.
  19. *
  20. * Si GRAPH est faux, seule l'isosurface de valeur 1500 est extraite
  21. * et un test de non regression est realise sur la base de
  22. * l'apartenance d'un point de coordonnees analytiques a la surface
  23. * extraite.
  24. *
  25. * Si GRAPH est vrai, le meme test de non regression est realise,
  26. * mais 6 isosurfaces dont les valeurs sont listees dans LIS1 sont
  27. * tracees.
  28. ********************************************************************
  29. *
  30. 'OPTION' 'ECHO' 1 ;
  31. 'TITRE' 'Isosurface Tetra' ;
  32. OPTI DIME 3 ELEM TET4 ;
  33. OPTI ISOV SURFACE ;
  34. *
  35. *-------------------------------------------------------------------
  36. *--------------------- Création du maillage 3D ---------------------
  37. *
  38. EPSI1 = 0.000001 ;
  39. *-----------------------------------------
  40. * Dimensions de base
  41. *-----------------------------------------
  42. LX1 = 10.D0 ;
  43. LY1 = 10.D0 ;
  44. LZ1 = 10.D0 ;
  45. *-----------------------------------------
  46. * Points
  47. *-----------------------------------------
  48. * Points tetra
  49. P1 = 0.D0 0.D0 0.D0 ;
  50. P2 = LX1 0.D0 0.D0 ;
  51. P3 = LX1 LY1 0.D0 ;
  52. P4 = (LX1 / 2.D0) (LY1 / 4.D0) LZ1 ;
  53. *-----------------------------------------
  54. * Lignes base
  55. *-----------------------------------------
  56. ND1 = 13 ;
  57. LXY1 = DROIT ND1 P1 P2 ;
  58. LXY2 = DROIT ND1 P2 P3 ;
  59. LXY3 = DROIT ND1 P3 P1 ;
  60. COT1 = LXY1 ET LXY2 ET LXY3 ;
  61. *
  62. LZZ1 = DROIT ND1 P1 P4 ;
  63. LZZ2 = DROIT ND1 P2 P4 ;
  64. LZZ3 = DROIT ND1 P3 P4 ;
  65. COT2 = LXY1 ET LZZ2 ET (INVE LZZ1) ;
  66. COT3 = LXY2 ET LZZ3 ET (INVE LZZ2) ;
  67. COT4 = LXY3 ET LZZ1 ET (INVE LZZ3) ;
  68. *-----------------------------------------------------------
  69. * Surfaces
  70. *-----------------------------------------------------------
  71. SUB1 = SURF COT1 'PLANE' ;
  72. SUZ1 = SURF COT2 'PLANE' ;
  73. SUZ2 = SURF COT3 'PLANE' ;
  74. SUZ3 = SURF COT4 'PLANE' ;
  75. SUT1 = SUB1 ET SUZ1 ET SUZ2 ET SUZ3 ;
  76. ELIM EPSI1 SUT1 ;
  77. *-------------------------------------------------------------------
  78. * -- VOLUMES --
  79. *-------------------------------------------------------------------
  80. MASSIF0 = COUL ROUG (VOLU SUT1) ;
  81. SI GRAPH ;
  82. TRAC CACH MASSIF0 ;
  83. FINSI ;
  84. *-------------------------------------------------------------------
  85. *=====================================================================
  86. * -- MAILLAGES QUAF --
  87. *=====================================================================
  88. QFTOT = CHANGE MASSIF0 QUAF ;
  89. *
  90. *=====================================================================
  91. * -- MODELE--
  92. *=====================================================================
  93. MODHYB = 'MODELE' QFTOT 'DARCY' 'ANISOTROPE' ;
  94. HYSOM = 'DOMA' MODHYB 'SOMMET' ;
  95. XXS YYS ZZS = 'COOR' HYSOM ;
  96. *
  97. *=====================================================================
  98. * Valeurs charges imposees
  99. GRA1 = 2000.D0 ;
  100. *
  101. * Champoint
  102. PI2 = 2.0D0 * 3.1414D0 ;
  103. HANA1 = (COS (PI2 * (XXS - (LX1 / 2.D0))))
  104. * (COS (PI2 * (XXS - (LX1 / 2.D0))))
  105. * (COS (PI2 * (YYS - (LY1 / 2.D0))))
  106. * (COS (PI2 * (YYS - (LY1 / 2.D0))))
  107. * (COS (PI2 * (ZZS - (LZ1 / 2.D0))))
  108. * (COS (PI2 * (ZZS - (LZ1 / 2.D0))))
  109. * GRA1 ;
  110. *
  111. *------------------Tracer champoint-----------------------------
  112. SI GRAPH ;
  113. TRAC CACH HANA1 MASSIF0 ;
  114. FINSI ;
  115. * ===========================================================
  116. * Liste des isovaleurs a extraire
  117. LIS1 = PROG 1500.0 ;
  118. SI GRAPH ;
  119. LIS1 = PROG 1900.0 1700.0 1500.0 800.0 1040.0 1200.0 ;
  120. FINSI ;
  121. *
  122. * Procedure @isosurf
  123. MAIF1 CHPF1 = @ISOSURF MASSIF0 LIS1 HANA1 ;
  124. *
  125. SI GRAPH ;
  126. TRAC CHPF1 MAIF1 ;
  127. FINSI ;
  128. *
  129. CONT1 = COT1 ET COT2 ET COT3 ET COT4 ;
  130. VAL1 = MINI HANA1 ;
  131. CHP2 = MANU 'CHPO' CONT1 1 'SCAL' VAL1 'NATURE' 'DISCRET' ;
  132. MAT1 = MAIF1 ET CONT1 ;
  133. CHT1 = CHPF1 ET CHP2 ;
  134. SI GRAPH ;
  135. TRAC CACH FACE CHT1 MAT1 ;
  136. FINSI ;
  137. *
  138. * Verification de l'algoritme
  139. * Un point de coordonnees XT1, YT1, ZT1 identifie comme
  140. * appartenant a la surface d'isovaleur 1500.0D0 definie
  141. * dans LIS1 est il reelement contenu dans l'isosurface extraite ?
  142. VAL0 = (COS (PI2 * ((LY1 / 4.D0) - (LY1 / 2.D0))))
  143. * (COS (PI2 * ((LY1 / 4.D0) - (LY1 / 2.D0)))) ;
  144. VAL1 = (1500.0D0 / (GRA1 * VAL0)) ** 0.5D0 ;
  145. VAL2 = ((1.D0 - (VAL1 * VAL1)) ** 0.5D0) / VAL1 ;
  146. VAL3 = ATG (VAL2) ;
  147. ZT1 = (VAL3 / PI2 ) + (LZ1 / 2.D0) ;
  148. XT1 = LX1 / 2.D0 ;
  149. YT1 = LY1 / 4.D0 ;
  150. PV1 = XT1 YT1 ZT1 ;
  151. *
  152. OPTI ERREUR IGNORE ;
  153. GEO1 = MAIF1 ELEM 'CONTENANT' PV1 ;
  154. OPTI ERREUR NORMAL ;
  155. MOT1 = TYPE GEO1 ;
  156. SI (EGA MOT1 'ANNULE') ;
  157. MESS 'Point de reference hors isosurface' ;
  158. 'ERREUR' 5 ;
  159. FINSI ;
  160. *
  161. FIN ;
  162. ************************************************************************
  163.  
  164.  
  165.  
  166.  
  167.  

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