Télécharger kopsrot3D.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : kopsrot3D.dgibi
  2. ***************** CAS TEST : kopsrot3D.dgibi *************************
  3. *
  4. GRAPH = faux ;
  5. eps0 = 1.D-10 ;
  6. 'SAUT' 'PAGE' ;
  7. *
  8. *-------------------------------------------------------------------
  9. * TEST kopsrot3D
  10. *
  11. * Ce test permet de vérifier le bon fonctionnement de l'option ROT
  12. * de KOPS en 3D pour les trois familles d'éléments compatibles avec
  13. * le modèle NAVIER_STOKES
  14. *
  15. * On calcule la composante non nulle du rotationel d'un champ de vecteur
  16. * linéaire en chaque coordonnée
  17. * (a0+a1*x+a2*y+a3*z,b0+b1*x+b2*y+b3*z,c0+c1*x+c2*y+c3*z)
  18. * Il est donc constant et égale dans le repère cartésien (x,y,z) à :
  19. * (c2-b3,a3-c1,b1-a2)
  20. *
  21. * On s'attend à une précision de l'ordre de la précision machine.
  22. *
  23. *-------------------------------------------------------------------
  24. *
  25. 'SAUT' 'PAGE' ;
  26. *
  27. 'OPTION' 'DIME' 3 'ELEM' 'CU20' 'ECHO' 0 ;
  28. *
  29. *-------------------------------------------------------------------------
  30. * Procedure test3D
  31. * /S test : boolean (vrai si ok)
  32. *-------------------------------------------------------------------------
  33. 'DEBP' test3D ;
  34. m1x m1y m1z = 'COOR' DOMTOT ;
  35. a0 = 7. ; a1= 2. ; a2= -5. ; a3 = 13. ;
  36. b0 = 11. ; b1= 1. ; b2= 3. ; b3 = 2. ;
  37. c0 = 13. ; c1= 5. ; c2= 2. ; c3 = 7. ;
  38. p1x = 'NOMC' 'UX' ( a0 '+' (a1*m1x) '+' (a2*m1y) + (a3*m1z)) ;
  39. p1y = 'NOMC' 'UY' ( b0 '+' (b1*m1x) '+' (b2*m1y) + (b3*m1z)) ;
  40. p1z = 'NOMC' 'UZ' ( c0 '+' (c1*m1x) '+' (c2*m1y) + (c3*m1z)) ;
  41. u1 = 'KCHT' $domtot 'VECT' 'SOMMET' (p1x + p1y + p1z) ;
  42. *
  43. rotu1 = 'KOPS' u1 'ROT' $domtot ;
  44. *
  45. rotu1x = 'EXCO' rotu1 'UX' 'SCAL' ;
  46. rotu1y = 'EXCO' rotu1 'UY' 'SCAL' ;
  47. rotu1z = 'EXCO' rotu1 'UZ' 'SCAL' ;
  48. mini1 = 'MINI' rotu1x ;
  49. mini2 = 'MINI' rotu1y ;
  50. mini3 = 'MINI' rotu1z ;
  51. maxi1 = 'MAXI' rotu1x ;
  52. maxi2 = 'MAXI' rotu1y ;
  53. maxi3 = 'MAXI' rotu1z ;
  54. vtest1 = mini1 + maxi1 / 2. - (c2-b3) ;
  55. vtest2 = mini2 + maxi2 / 2. - (a3-c1) ;
  56. vtest3 = mini3 + maxi3 / 2. - (b1-a2) ;
  57. *
  58. test1 = faux ;
  59. test2 = faux ;
  60. test3 = faux ;
  61. 'SI' (('ABS' vtest1) < eps0) ; test1 = vrai ; 'FINSI' ;
  62. 'SI' (('ABS' vtest2) < eps0) ; test2 = vrai ; 'FINSI' ;
  63. 'SI' (('ABS' vtest3) < eps0) ; test3 = vrai ; 'FINSI' ;
  64. test = test1 'ET' test2 'ET' test3 ;
  65. *
  66. 'SI' ('EGA' graph vrai) ;
  67. 'LIST' mini1 ;
  68. 'LIST' maxi1 ;
  69. 'LIST' (c2-b3) ;
  70. 'LIST' mini2 ;
  71. 'LIST' maxi2 ;
  72. 'LIST' (a3-c1) ;
  73. 'LIST' mini3 ;
  74. 'LIST' maxi3 ;
  75. 'LIST' (b1-a2) ;
  76. 'LIST' test1 ;
  77. 'LIST' test2 ;
  78. 'LIST' test3 ;
  79. 'LIST' test ;
  80. *
  81. ampl = 0.05 ;
  82. v1 = 'VECT' rotu1 ampl 'UX' 'UY' 'UZ' 'JAUNE' ;
  83. 'TRAC' v1 domtot 'TITRE' 'Rotationel' ;
  84. 'FINSI' ;
  85. 'FINP' test ;
  86. *-------------------------------------------------------------------------
  87. *
  88. *
  89. * Maillage
  90. Lx = 1. ; Ly = 1. ; Lz = 1. ;
  91. Nx = 6 ; Ny = 7 ; Nz = 6 ;
  92. *
  93. p1 = 0. 0. 0. ;
  94. p2 = Lx 0. 0. ;
  95. p3 = Lx Ly 0. ;
  96. p4 = 0. Ly 0. ;
  97. *
  98. bord1 = 'DROI' Nx p1 p2 ;
  99. bord2 = 'DROI' Ny p2 p3 ;
  100. bord3 = 'DROI' Nx p3 p4 ;
  101. bord4 = 'DROI' Ny p4 p1 ;
  102. *
  103. surf0 = 'DALL' bord1 bord2 bord3 bord4 'PLAN' ;
  104. *
  105. domtot0 = surf0 'VOLU' Nz 'TRAN' (0. 0. Lz) ;
  106. _domtot = 'CHAN' 'QUAF' domtot0 ;
  107. *
  108. * Test des MMODELs
  109. MotDiscr = 'QUAF' ;
  110. $domtot = 'MODELISER' _domtot 'NAVIER_STOKES' MotDiscr ;
  111. domtot = 'DOMA' $DOMTOT 'MAILLAGE' ;
  112. a0 = test3D ;
  113. MotDiscr = 'MACRO' ;
  114. $domtot = 'MODELISER' _domtot 'NAVIER_STOKES' MotDiscr ;
  115. domtot = 'DOMA' $DOMTOT 'MAILLAGE' ;
  116. a1 = test3D ;
  117. MotDiscr = 'LINE' ;
  118. $domtot = 'MODELISER' _domtot 'NAVIER_STOKES' MotDiscr ;
  119. domtot = 'DOMA' $DOMTOT 'MAILLAGE' ;
  120. a2 = test3D ;
  121. *
  122. * Test de non regression
  123. 'SI' a0 ; va0 = 'VRAI' ; 'SINO' ; va0 = 'FAUX' ; 'FINSI' ;
  124. 'SI' a1 ; va1 = 'VRAI' ; 'SINO' ; va1 = 'FAUX' ; 'FINSI' ;
  125. 'SI' a2 ; va2 = 'VRAI' ; 'SINO' ; va2 = 'FAUX' ; 'FINSI' ;
  126. 'OPTI' 'ECHO' 0 ;
  127. 'SAUT' 1 ligne ;
  128. 'MESS' '-----------------------' ;
  129. 'MESS' 'MODE TEST' ;
  130. 'MESS' '-----------------------' ;
  131. 'MESS' 'QUAF ' va0 ;
  132. 'MESS' 'MACRO ' va1 ;
  133. 'MESS' 'LINE ' va2 ;
  134. 'MESS' '-----------------------' ;
  135. 'SAUT' 1 ligne ;
  136. test = a0 'ET' a1 'ET' a2 ;
  137. *
  138. * Compte-rendu de fin et sortie
  139. 'SI' test ;
  140. 'ERRE' 0 ;
  141. 'SINO' ;
  142. 'ERRE' 5 ;
  143. 'FINSI' ;
  144. 'FIN' ;
  145.  
  146.  
  147.  
  148.  
  149.  

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