* fichier : valitraj.dgibi
'SAUTER' PAGE ;
'OPTION' 'ECHO' 0 ;
GRAPH = faux ;
*********************************************************************
*
* Test de validation de l'opérateur TRAJ
* on considère un domaine carré dans lequel on se donne un champ
* de vitesse circulaire. En chaque point le module de la vitesse
* est égal à la distance au centre.
* Au temps 2*Pi chaque particule doit être revenue à sa position
* initiale après avoir décrit un cercle.
*
*********************************************************************
'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
*
* DEFINITION DU MAILLAGE
*
'TITRE' 'test trajectoires ' ;
P1 = 0. 0. ;
P2 = 2. 0. ;
P3 = 2. 2. ;
P4 = 0. 2. ;
LIG = P1 'DROITE' 10 P2 D 15 P3 D 20 P4 D 25 P1 ;
CARRE = 'SURFACE' 'PLAN' LIG ;
BORDS = 'CONTOUR' CARRE ;
CARRF = 'CHANGER' CARRE 'QUAF' ;
*
* CREATION DES ÉLEMENTS RELATIFS
*
MODCAR= 'MODELE' CARRF 'DARCY' 'ISOTROPE' ;
HYSUR = 'DOMA' MODCAR 'SURFACE' ;
HYNOR = 'DOMA' MODCAR 'NORMALE' ;
HYCEN = 'DOMA' MODCAR 'CENTRE' ;
HYFAC = 'DOMA' MODCAR 'FACE' ;
'SI' GRAPH ;
'TITRE' 'Maillage';
'TRACER' CARRE ;
'FINSI' ;
* Centre du cercle :
xcen = 1. ;
ycen = 1. ;
LOGERR = FAUX ;
* ===========================================================
*
* CALCUL DES TRAJECTOIRES AVEC LA FORMULATION MIXTE HYBRIDE
*
* ===========================================================
Mess ' ' ;
Mess 'Formulation Mixte-Hybride' ;
Mess '-------------------------' ;
*
* GENERATION DE LA VITESSE CIRCULAIRE V AUX CENTRES DES FACES
* ET DES FLUX CORRESPONDANT QN
*
XX YY = 'COOR' HYFAC ;
* le long d'un cercle, la vitesse est orthoradiale :
V1X = (YY * -1.) + YCEN ;
V1Y = XX - XCEN ;
V = ('NOMC' 'UX' V1X) 'ET' ('NOMC' 'UY' V1Y) ;
MOT1 = 'MOTS' 'UX' 'UY' ;
VAVN = 'PSCAL' V HYNOR MOT1 MOT1 ;
VAVN = 'NOMC' 'SCAL' VAVN ;
VF = HYNOR * VAVN ;
QN = VAVN * HYSUR ;
QN = 'NOMC' 'FLUX' QN ;
* LÂCHER DES PARTICULES
LACHER = 'TABLE' ;
LACHER.TEMPS_LACHER = 'PROG' 0. ;
LACHER.TEMPS_LIMITE = 2 * PI ;
LACHER.CFL = 0.05 ;
LACHER.DELTAT_SAUVE = 0. ;
LACHER.1 = ((XCEN + .4) YCEN) 'ET' ((XCEN + .6) YCEN) 'ET'
((XCEN + .8) YCEN) ;
MODTRJ CHMTRJ = 'TRAJ' 'CONVECTION_EXPLICITE' MODCAR QN LACHER ;
*
* CONTROLE DES RESULTATS
*
TABZONE = 'EXTR' MODTRJ 'ZONE' ;
'REPETER' BLOC1 ('NBNO' LACHER.1) ;
I = &bloc1 ;
PT1 = 'POINT' LACHER.1 I ;
XP1 = ('COOR' PT1 1) - XCEN ;
YP1 = ('COOR' PT1 2) - YCEN ;
MAILTRJ = TABZONE . (2*I) ;
NBPT1 = 'NBEL' mailtrj ;
* distance au centre du cercle :
XX1 YY1 = 'COOR' mailtrj ;
XX1 = XX1 - XCEN ;
YY1 = YY1 - YCEN ;
DISTC = ( (XX1*XX1) + (YY1*YY1) ) ** 0.5 ;
DCMIN = 'MINIMUM' DISTC ;
DCMAX = 'MAXIMUM' DISTC ;
MESS 'Part.' (i @ARR 0) ', MAX et MIN de la distance au centre : '
DCMAX DCMIN ;
ERDCMAX = 'ABS' ( ((DCMAX + DCMIN) * 0.5) - XP1 ) ;
MESS ' Erreur sur la moyenne de ces deux valeurs : '
ERDCMAX ;
'SI' (ERDCMAX > 1.D-2) ;
LOGERR = VRAI ;
'FINSI' ;
* Distance point de départ - point d'arrivée :
PTF = 'POINT' MAILTRJ 'FINAL' ;
XF1 = ('COOR' PTF 1) - XCEN ;
YF1 = ('COOR' PTF 2) - YCEN ;
DELX = XP1 - XF1;
DELY = YP1 - YF1;
DISTP = ((DELX * DELX) + (DELY * DELY)) ** 0.5 ;
MESS ' Distance entre le point initial et le point final '
DISTP ;
* erreur relative à la distance totale parcourue
TT1 = 'EXTR' CHMTRJ 'TMPS' I NBPT1 2 ;
LLON = TT1 * XP1 ;
DISTPR = DISTP / LLON ;
MESS ' soit, '
'relativement a la distance totale parcourue :' DISTPR ;
'SI' (DISTPR > 2.D-2) ;
LOGERR = VRAI ;
'FINSI' ;
'FIN' BLOC1 ;
*
* DIFFERENTS TRACÉS
*
'SI' GRAPH ;
'TITRE' 'Vitesse de l ecoulement aux faces';
VNCH1 = 'VECTEUR' VF 0.1 'UX' 'UY' 'ROUGE' ;
'TRACER' VNCH1 (CARRE 'ET' LACHER.1) ;
'TITRE' 'Trajectoires formulation mixte hybride (test circulaire)' ;
CROB1 = 'EXTR' CHMTRJ 'MAIL' ;
'TRACER' (CROB1 ET BORDS) ;
'TRACER' CHMTRJ MODTRJ ;
'TITRE' 'Trajectoires formulation mixte hybride (test circulaire)'
' 1 part.' ;
TRAJ1 = 'REDU' CHMTRJ (TABZONE.2) ;
'TRACER' TRAJ1 (TABZONE.1) ;
'FINSI' ;
* ===========================================================
*
* CALCUL DES TRAJECTOIRES AVEC LA FORMULATION ELEMENTS FINIS
*
* ===========================================================
Mess ' ' ;
Mess 'Formulation Elements Finis' ;
Mess '--------------------------' ;
*
* GENERATION D'UNE VITESSE CIRCULAIRE AUX NOEUDS DU MAILLAGE
*
XX YY = 'COOR' CARRE ;
* le long d'un cercle, la vitesse est orthoradiale :
V1X = (YY * -1.) + YCEN ;
V1Y = XX - XCEN ;
V1 = ('NOMC' 'VX' V1X) 'ET' ('NOMC' 'VY' V1Y) ;
*
* CALCUL DES TRAJECTOIRES AVEC LA FORMULATION ELEMENTS FINIS
*
* Cette formulation s'appuie sur la table domaine :
DOMCAR = 'DOMA' CARRE 'TABLE' ;
* On garde la même table de lâcher
MODTRJ CHMTRJ = 'TRAJ' DOMCAR V1 LACHER ;
*
* CONTROLE DES RESULTATS
*
TABZONE = 'EXTR' MODTRJ 'ZONE' ;
'REPETER' BLOC1 ('NBNO' LACHER.1) ;
I = &bloc1 ;
PT1 = 'POINT' LACHER.1 I ;
XP1 = ('COOR' PT1 1) - XCEN ;
YP1 = ('COOR' PT1 2) - YCEN ;
MAILTRJ = TABZONE . (2*I) ;
NBPT1 = 'NBEL' mailtrj ;
* distance au centre du cercle :
XX1 YY1 = 'COOR' mailtrj ;
XX1 = XX1 - XCEN ;
YY1 = YY1 - YCEN ;
DISTC = ( (XX1*XX1) + (YY1*YY1) ) ** 0.5 ;
DCMIN = 'MINIMUM' DISTC ;
DCMAX = 'MAXIMUM' DISTC ;
MESS 'Part.' (i @ARR 0) ', MAX et MIN de la distance au centre : '
DCMAX DCMIN ;
ERDCMAX = 'ABS' ( ((DCMAX + DCMIN) * 0.5) - XP1 ) ;
MESS ' Erreur sur la moyenne de ces deux valeurs : '
ERDCMAX ;
'SI' ( ERDCMAX > 1.D-4 ) ;
LOGERR = VRAI ;
'FINSI' ;
* Distance point de départ - point d'arrivée :
PTF = 'POINT' MAILTRJ 'FINAL' ;
XF1 = ('COOR' PTF 1) - XCEN ;
YF1 = ('COOR' PTF 2) - YCEN ;
DELX = XP1 - XF1;
DELY = YP1 - YF1;
DISTP = ((DELX * DELX) + (DELY * DELY)) ** 0.5 ;
MESS ' Distance entre le point initial et le point final '
DISTP ;
* erreur relative à la distance totale parcourue
TT1 = 'EXTR' CHMTRJ 'TMPS' I NBPT1 2 ;
LLON = TT1 * XP1 ;
DISTPR = DISTP / LLON ;
MESS ' soit, '
'relativement a la distance totale parcourue :' DISTPR ;
'SI' ( DISTPR > 2.D-3) ;
LOGERR= VRAI ;
'FINSI' ;
'FIN' BLOC1 ;
*
* DIFFERENTS TRACÉS
*
'SI' GRAPH ;
'TITRE' 'Vitesses de l ecoulement aux noeuds du maillage' ;
VNCH2 = 'VECTEUR' V1 0.1 'VX' 'VY' 'ROUGE' ;
TRAC VNCH2 (CARRE 'ET' LACHER.1) ;
'TITRE' 'Trajectoires formulation elements finis (test circulaire)' ;
CROB2 = 'EXTR' CHMTRJ 'MAIL' ;
'TRACER' (CROB2 'ET' BORDS) ;
'FINSI' ;
* Test de réussite et sortie :
'SI' LOGERR ;
'ERREUR' 5 ;
'SINON' ;
'ERREUR' 0 ;
'FINSI' ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer