Download valitraj.dgibi

Back to the list

* 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