* fichier : kopsrot3D.dgibi ***************** CAS TEST : kopsrot3D.dgibi ************************* * GRAPH = faux ; eps0 = 1.D-10 ; 'SAUT' 'PAGE' ; * *------------------------------------------------------------------- * TEST kopsrot3D * * Ce test permet de vérifier le bon fonctionnement de l'option ROT * de KOPS en 3D pour les trois familles d'éléments compatibles avec * le modèle NAVIER_STOKES * * On calcule la composante non nulle du rotationel d'un champ de vecteur * linéaire en chaque coordonnée * (a0+a1*x+a2*y+a3*z,b0+b1*x+b2*y+b3*z,c0+c1*x+c2*y+c3*z) * Il est donc constant et égale dans le repère cartésien (x,y,z) à : * (c2-b3,a3-c1,b1-a2) * * On s'attend à une précision de l'ordre de la précision machine. * *------------------------------------------------------------------- * 'SAUT' 'PAGE' ; * 'OPTION' 'DIME' 3 'ELEM' 'CU20' 'ECHO' 0 ; * *------------------------------------------------------------------------- * Procedure test3D * /S test : boolean (vrai si ok) *------------------------------------------------------------------------- 'DEBP' test3D ; m1x m1y m1z = 'COOR' DOMTOT ; a0 = 7. ; a1= 2. ; a2= -5. ; a3 = 13. ; b0 = 11. ; b1= 1. ; b2= 3. ; b3 = 2. ; c0 = 13. ; c1= 5. ; c2= 2. ; c3 = 7. ; p1x = 'NOMC' 'UX' ( a0 '+' (a1*m1x) '+' (a2*m1y) + (a3*m1z)) ; p1y = 'NOMC' 'UY' ( b0 '+' (b1*m1x) '+' (b2*m1y) + (b3*m1z)) ; p1z = 'NOMC' 'UZ' ( c0 '+' (c1*m1x) '+' (c2*m1y) + (c3*m1z)) ; u1 = 'KCHT' $domtot 'VECT' 'SOMMET' (p1x + p1y + p1z) ; * rotu1 = 'KOPS' u1 'ROT' $domtot ; * rotu1x = 'EXCO' rotu1 'UX' 'SCAL' ; rotu1y = 'EXCO' rotu1 'UY' 'SCAL' ; rotu1z = 'EXCO' rotu1 'UZ' 'SCAL' ; mini1 = 'MINI' rotu1x ; mini2 = 'MINI' rotu1y ; mini3 = 'MINI' rotu1z ; maxi1 = 'MAXI' rotu1x ; maxi2 = 'MAXI' rotu1y ; maxi3 = 'MAXI' rotu1z ; vtest1 = mini1 + maxi1 / 2. - (c2-b3) ; vtest2 = mini2 + maxi2 / 2. - (a3-c1) ; vtest3 = mini3 + maxi3 / 2. - (b1-a2) ; * test1 = faux ; test2 = faux ; test3 = faux ; 'SI' (('ABS' vtest1) < eps0) ; test1 = vrai ; 'FINSI' ; 'SI' (('ABS' vtest2) < eps0) ; test2 = vrai ; 'FINSI' ; 'SI' (('ABS' vtest3) < eps0) ; test3 = vrai ; 'FINSI' ; test = test1 'ET' test2 'ET' test3 ; * 'SI' ('EGA' graph vrai) ; 'LIST' mini1 ; 'LIST' maxi1 ; 'LIST' (c2-b3) ; 'LIST' mini2 ; 'LIST' maxi2 ; 'LIST' (a3-c1) ; 'LIST' mini3 ; 'LIST' maxi3 ; 'LIST' (b1-a2) ; 'LIST' test1 ; 'LIST' test2 ; 'LIST' test3 ; 'LIST' test ; * ampl = 0.05 ; v1 = 'VECT' rotu1 ampl 'UX' 'UY' 'UZ' 'JAUNE' ; 'TRAC' v1 domtot 'TITRE' 'Rotationel' ; 'FINSI' ; 'FINP' test ; *------------------------------------------------------------------------- * * * Maillage Lx = 1. ; Ly = 1. ; Lz = 1. ; Nx = 6 ; Ny = 7 ; Nz = 6 ; * p1 = 0. 0. 0. ; p2 = Lx 0. 0. ; p3 = Lx Ly 0. ; p4 = 0. Ly 0. ; * bord1 = 'DROI' Nx p1 p2 ; bord2 = 'DROI' Ny p2 p3 ; bord3 = 'DROI' Nx p3 p4 ; bord4 = 'DROI' Ny p4 p1 ; * surf0 = 'DALL' bord1 bord2 bord3 bord4 'PLAN' ; * domtot0 = surf0 'VOLU' Nz 'TRAN' (0. 0. Lz) ; _domtot = 'CHAN' 'QUAF' domtot0 ; * * Test des MMODELs MotDiscr = 'QUAF' ; $domtot = 'MODELISER' _domtot 'NAVIER_STOKES' MotDiscr ; domtot = 'DOMA' $DOMTOT 'MAILLAGE' ; a0 = test3D ; MotDiscr = 'MACRO' ; $domtot = 'MODELISER' _domtot 'NAVIER_STOKES' MotDiscr ; domtot = 'DOMA' $DOMTOT 'MAILLAGE' ; a1 = test3D ; MotDiscr = 'LINE' ; $domtot = 'MODELISER' _domtot 'NAVIER_STOKES' MotDiscr ; domtot = 'DOMA' $DOMTOT 'MAILLAGE' ; a2 = test3D ; * * Test de non regression 'SI' a0 ; va0 = 'VRAI' ; 'SINO' ; va0 = 'FAUX' ; 'FINSI' ; 'SI' a1 ; va1 = 'VRAI' ; 'SINO' ; va1 = 'FAUX' ; 'FINSI' ; 'SI' a2 ; va2 = 'VRAI' ; 'SINO' ; va2 = 'FAUX' ; 'FINSI' ; 'OPTI' 'ECHO' 0 ; 'SAUT' 1 ligne ; 'MESS' '-----------------------' ; 'MESS' 'MODE TEST' ; 'MESS' '-----------------------' ; 'MESS' 'QUAF ' va0 ; 'MESS' 'MACRO ' va1 ; 'MESS' 'LINE ' va2 ; 'MESS' '-----------------------' ; 'SAUT' 1 ligne ; test = a0 'ET' a1 'ET' a2 ; * * Compte-rendu de fin et sortie 'SI' test ; 'ERRE' 0 ; 'SINO' ; 'ERRE' 5 ; 'FINSI' ; 'FIN' ;