Télécharger orieelem.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : orieelem.dgibi
  2. ************************************************************************
  3. * NOM : ORIEELEM
  4. * DESCRIPTION : On teste ORIE et INVE pour les elements massifs
  5. * sur des maillages à 1 element.
  6. * Egalement, on peut tracer les elements pour savoir
  7. * comment ils sont numerotes !
  8. *
  9. * Mots-cles : element de reference, numerotation, orientation, inversion
  10. * Mots-clés : élément de référence, numérotation
  11. *
  12. *
  13. * LANGAGE : GIBIANE-CAST3M
  14. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  15. * mél : stephane.gounand@cea.fr
  16. **********************************************************************
  17. * VERSION : v1, 09/05/2016, version initiale
  18. * HISTORIQUE : v1, 09/05/2016, création
  19. * HISTORIQUE :
  20. * HISTORIQUE :
  21. ************************************************************************
  22. 'OPTI' 'ECHO' 0 ;
  23. 'SAUT' 'PAGE' ;
  24. graph = faux ;
  25. interact = faux ;
  26. *
  27. *'OPTI' debu 1 ;
  28. *
  29. * verifie que deux elements sont parfaitement identiques :
  30. * noeuds decrits dans le meme ordre
  31. 'DEBPROC' egael ;
  32. 'ARGUMENT' el1*'MAILLAGE' ;
  33. 'ARGUMENT' el2*'MAILLAGE' ;
  34. * Operateur ou directive ? Si directive, on signale les erreurs
  35. * Sinon on renvoie la valeur du test.
  36. 'ARGUMENT' loper/'LOGIQUE' ;
  37. 'SI' ('NON' ('EXISTE' loper)) ;
  38. loper=vrai ;
  39. 'FINSI' ;
  40. lok = vrai ;
  41. * 1 seul
  42. nbl1 = 'NBEL' el1 ;
  43. nbl2 = 'NBEL' el2 ;
  44. err = 'OU' ('NEG' nbl1 1) ('NEG' nbl2 1) ;
  45. lok = lok 'ET' ('NON' err) ;
  46. 'SI' ('ET' err ('NON' loper)) ;
  47. 'ERREUR' 'Un seul element pour les entrees' ;
  48. 'FINSI' ;
  49. * type
  50. tel1 = 'EXTRAIRE' ('ELEM' el1 'TYPE') 1 ;
  51. tel2 = 'EXTRAIRE' ('ELEM' el2 'TYPE') 1 ;
  52. err = 'NEG' tel1 tel2 ;
  53. lok = lok 'ET' ('NON' err) ;
  54. 'SI' ('ET' err ('NON' loper)) ;
  55. 'ERREUR' 'Type differents' ;
  56. 'FINSI' ;
  57. nno1 = 'NBNO' el1 ;
  58. nno2 = 'NBNO' el2 ;
  59. err = 'NEG' nno1 nno2 ;
  60. lok = lok 'ET' ('NON' err) ;
  61. 'SI' ('ET' err ('NON' loper)) ;
  62. 'ERREUR' 'Pas le meme nbno pour les entrees' ;
  63. 'FINSI' ;
  64. * Boucle
  65. * Ici, on suppose que le CHAN POI1 conserve l'ordre des noeuds de
  66. * chaque element. A un moment, on a pense qu'une syntaxe type :
  67. * p1 = POIN el1 &ino 'ELEM' 'TRI3' 1 ;
  68. * serait plus claire.
  69. *
  70. pel1 = 'CHANGER' 'POI1' el1 ;
  71. pel2 = 'CHANGER' 'POI1' el2 ;
  72. 'REPETER' ino nno1 ;
  73. p1 = 'POIN' pel1 &ino ;
  74. p2 = 'POIN' pel2 &ino ;
  75. err = 'NEG' p1 p2 ;
  76. lok = lok 'ET' ('NON' err) ;
  77. 'SI' ('ET' err ('NON' loper)) ;
  78. 'ERREUR' 'Pas les memes numeros de noeuds pour les entrees' ;
  79. 'FINSI' ;
  80. 'FIN' ino ;
  81. 'SI' loper ;
  82. 'RESPRO' lok ;
  83. 'FINSI' ;
  84. 'FINPROC' ;
  85. *
  86. *
  87. *
  88. 'DEBPROC' veri ;
  89. 'ARGUMENT' el*'MAILLAGE' ;
  90. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  91. 'MESSAGE' nomel ;
  92. * On vérifie que :
  93. * 1) inve() .ne. Id
  94. * 2) inve(inve()) = Id
  95. * 3) orie(inve())=Id
  96. * 4) orie()=Id car les elements sont orientes positivement de base
  97. ivel = 'INVERSE' el ;
  98. ivivel = 'INVERSE' ivel ;
  99. 'MESSAGE' 'NON EGAEL el ivel ;' ;
  100. tst = EGAEL el ivel ;
  101. 'SI' tst ;
  102. 'ERREUR' 'lelement et son inverse sont identiques' ;
  103. 'FINSI' ;
  104. 'MESSAGE' 'EGAEL el ivivel ;' ;
  105. EGAEL el ivivel faux ;
  106. 'MESSAGE' 'EGAEL el orivel ;' ;
  107. orivel = 'ORIENTER' ivel ;
  108. EGAEL el orivel faux ;
  109. 'MESSAGE' 'EGAEL el orel ;' ;
  110. orel = 'ORIENTER' el ;
  111. EGAEL el orel faux ;
  112. 'SI' graph ;
  113. 'LISTE' el ; 'TRACER' el 'NOEU' 'TITR' nomel ;
  114. 'LISTE' ivel ; 'TRACER' ivel 'NOEU' 'TITR'
  115. ('CHAINE' 'INVE ' nomel) ;
  116. 'FINSI' ;
  117. *
  118. 'FINPROC' ;
  119. *
  120. *
  121. *
  122. 'DEBPROC' veri2 ;
  123. 'ARGUMENT' el*'MAILLAGE' ;
  124. 'ARGUMENT' eli*'MAILLAGE' ;
  125. 'OPTI' echo -1 ;
  126. 'ELIMINATION' ('ET' el eli) 1.D-6 ;
  127. 'OPTI' echo 1 ;
  128. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  129. 'MESSAGE' nomel ;
  130. * On vérifie que :
  131. * 1) inve(el) .eq. eli
  132. ivel = 'INVERSE' el ;
  133. 'MESSAGE' 'EGAEL ivel eli ;' ;
  134. EGAEL ivel eli faux ;
  135. 'FINPROC' ;
  136.  
  137. *
  138. * Fin des procedures
  139. *
  140. *
  141. 'REPETER' idim 3 ;
  142. dim = &idim ;
  143. *dim = 3 ;
  144. 'SI' ('EGA' dim 1) ;
  145. 'OPTI' 'DIME' 1 'ELEM' 'SEG2' ;
  146. *
  147. p1 = 'POIN' 0. ; p2 = 'POIN' 1. ;
  148. * p3 = 'POIN' 0.5 ;
  149. se2 = 'MANU' 'SEG2' p1 p2 ; VERI se2 ;
  150. se3 = 'CHANGER' se2 'QUAD' ; VERI se3 ;
  151. * On construit un inverse à la main...
  152. * Cela sert surtout pour les QUAFs 3D où on veut vérifier que l'on ne
  153. * s'est pas trompé sur les noeuds faces et centre dans la programmation
  154. * de inver4.eso
  155. se2i = 'MANU' 'SEG2' p2 p1 ; VERI2 se2 se2i ;
  156. se3i = 'CHANGER' se2i 'QUAD' ; VERI2 se3 se3i ;
  157. 'FINSI' ;
  158. 'SI' ('EGA' dim 2) ;
  159. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  160. p1 = 0. 0. ; p2 = 1. 0. ; p3 = 1. 1. ; p4 = 0. 1. ;
  161. tr3 = 'MANU' 'TRI3' p1 p2 p3 ; VERI tr3 ;
  162. tr6 = 'CHANGER' tr3 'QUAD' ; VERI tr6 ;
  163. tr7 = 'CHANGER' tr6 'QUAF' ; VERI tr7 ;
  164. qu4 = 'MANU' 'QUA4' p1 p2 p3 p4 ; VERI qu4 ;
  165. qu8 = 'CHANGER' qu4 'QUAD' ; VERI qu8 ;
  166. qu9 = 'CHANGER' qu8 'QUAF' ; VERI qu9 ;
  167. *
  168. * Les inverses
  169. *
  170. tr3i = 'MANU' 'TRI3' p1 p3 p2 ; VERI2 tr3 tr3i ;
  171. tr6i = 'CHANGER' tr3i 'QUAD' ; VERI2 tr6 tr6i ;
  172. tr7i = 'CHANGER' tr6i 'QUAF' ; VERI2 tr7 tr7i ;
  173. qu4i = 'MANU' 'QUA4' p1 p4 p3 p2 ; VERI2 qu4 qu4i ;
  174. qu8i = 'CHANGER' qu4i 'QUAD' ; VERI2 qu8 qu8i ;
  175. qu9i = 'CHANGER' qu8i 'QUAF' ; VERI2 qu9 qu9i ;
  176.  
  177. 'FINSI' ;
  178. 'SI' ('EGA' dim 3) ;
  179. 'OPTI' 'DIME' 3 'ELEM' 'TET4' ;
  180. p1 = 0. 0. 0. ; p2 = 1. 0. 0. ; p3 = 1. 1. 0. ; p4 = 0. 1. 0. ;
  181. p5 = 0. 0. 1. ; p6 = 1. 0. 1. ; p7 = 1. 1. 1. ; p8 = 0. 1. 1. ;
  182. te4 = 'MANU' 'TET4' p1 p2 p3 p5 ; VERI te4 ;
  183. te10 = 'CHANGER' te4 'QUAD' ; VERI te10 ;
  184. te15 = 'CHANGER' te10 'QUAF' ; VERI te15 ;
  185. py5 = 'MANU' 'PYR5' p1 p2 p3 p4 p5 ; VERI py5 ;
  186. py13 = 'CHANGER' py5 'QUAD' ; VERI py13 ;
  187. py19 = 'CHANGER' py13 'QUAF' ; VERI py19 ;
  188. pr6 = 'MANU' 'PRI6' p1 p2 p3 p5 p6 p7 ; VERI pr6 ;
  189. pr15 = 'CHANGER' pr6 'QUAD' ; VERI pr15 ;
  190. pr21 = 'CHANGER' pr15 'QUAF' ; VERI pr21 ;
  191. cu8 = 'MANU' 'CUB8' p1 p2 p3 p4 p5 p6 p7 p8 ; VERI cu8 ;
  192. cu20 = 'CHANGER' cu8 'QUAD' ; VERI cu20 ;
  193. cu27 = 'CHANGER' cu20 'QUAF' ; VERI cu27 ;
  194. *
  195. * Les inverses
  196. *
  197. te4i = 'MANU' 'TET4' p1 p3 p2 p5 ; VERI2 te4 te4i ;
  198. te10i = 'CHANGER' te4i 'QUAD' ; VERI2 te10 te10i ;
  199. te15i = 'CHANGER' te10i 'QUAF' ; VERI2 te15 te15i ;
  200. py5i = 'MANU' 'PYR5' p1 p4 p3 p2 p5 ; VERI2 py5 py5i ;
  201. py13i = 'CHANGER' py5i 'QUAD' ; VERI2 py13 py13i ;
  202. py19i = 'CHANGER' py13i 'QUAF' ; VERI2 py19 py19i ;
  203. pr6i = 'MANU' 'PRI6' p1 p3 p2 p5 p7 p6 ; VERI2 pr6 pr6i ;
  204. pr15i = 'CHANGER' pr6i 'QUAD' ; VERI2 pr15 pr15i ;
  205. pr21i = 'CHANGER' pr15i 'QUAF' ; VERI2 pr21 pr21i ;
  206. cu8i = 'MANU' 'CUB8' p1 p4 p3 p2 p5 p8 p7 p6 ; VERI2 cu8 cu8i ;
  207. cu20i = 'CHANGER' cu8i 'QUAD' ; VERI2 cu20 cu20i ;
  208. cu27i = 'CHANGER' cu20i 'QUAF' ; VERI2 cu27 cu27i ;
  209. * Test orientation decoupage tetra en cube
  210. * Ce test provoquait une erreur incorrecte
  211. * ***** ERREUR 318 ***** dans l'operateur ORIE
  212. * Deux elements adjacents ont des orientations opposees
  213. * avant les modifs de la fiche 8985.
  214. c1 = 'CHANGER' 'TET4' te15 ;
  215. c2 = 'CHANGER' 'QUAF' c1 ;
  216. c3 = 'CHANGER' 'CUB8' c2 ;
  217. tt = 'ORIENTER' c3 ;
  218. 'FINSI' ;
  219.  
  220.  
  221. 'FIN' idim ;
  222.  
  223.  
  224. 'SI' interact ;
  225. 'OPTION' 'DONN' 5 'ECHO' 1 ;
  226. 'FINSI' ;
  227.  
  228. *
  229. * End of dgibi file ORIEELEM
  230. *
  231. 'FIN' ;
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  

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