Download deduad3d.dgibi

Back to the list

* fichier : deduad3d.dgibi
'OPTI' 'ECHO' 0 ;
************************************************************************
* NOM         : DEDUAD3D
* DESCRIPTION : cas test 3d pour deduadap
*
*
* LANGAGE     : GIBIANE-CAST3M
* AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
*               mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION    : v1, 21/09/2005, version initiale
* HISTORIQUE : v1, 21/09/2005, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
'SAUTER' 2 'LIGNE' ;
'MESSAGE' ' Execution de deduad3d.dgibi' ;
'SAUTER' 2 'LIGNE' ;
*
*
*
interact= FAUX ;
graph = FAUX ;
debug = FAUX ;
*
*BEGINPROCEDUR cas3d
************************************************************************
* NOM         : CAS3D
* DESCRIPTION : Construit les cas pour deduadap 3D
*
*
*
* LANGAGE     : GIBIANE-CAST3M
* AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
*               mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION    : v1, 15/12/2004, version initiale
* HISTORIQUE : v1, 15/12/2004, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
*
'DEBPROC' CAS3D ;
'ARGUMENT' mesh*'ENTIER' ;
'ARGUMENT' nbmail2*'ENTIER' ;
'ARGUMENT' ltri/'LOGIQUE' ;
*
'SI' ('NON' ('EXISTE' ltri)) ;
   ltri = 'VRAI' ;
'FINSI' ;   
*
'ARGUMENT' disc/'MOT' ;
'SI' ('NON' ('EXISTE' disc)) ;
   disc = 'LINE' ;
'FINSI' ;   
*
'SI' ('<' nbmail2 1) ;
   cherr = 'CHAINE' 'Nombre de mailles inférieur à 2...' ;
   'ERREUR' cherr ;
'FINSI' ;
nbmail = '*' nbmail2 2 ;
*
'SI' ltri ;
   'SI' ('EGA' disc 'LINE') ;
      'OPTION' 'ELEM' 'TRI3' ;
   'SINON' ;      
      'OPTION' 'ELEM' 'TRI6' ;
   'FINSI' ;      
'SINON' ;   
   'SI' ('EGA' disc 'LINE') ;
      'OPTION' 'ELEM' 'QUA4' ;
   'SINON' ;      
      'OPTION' 'ELEM' 'QUA8' ;
   'FINSI' ;      
'FINSI' ;   
*
   p000 = 0. 0. 0. ; p100 = .5 0. 0. ; p200 = 1. 0. 0. ;
   p010 = 0. .5 0. ; p110 = .5 .5 0. ; p210 = 1. .5 0. ;
   p020 = 0. 1. 0. ; p120 = .5 1. 0. ; p220 = 1. 1. 0. ;
   p001 = 0. 0. .5 ; p101 = .5 0. .5 ; p201 = 1. 0. .5 ;
   p011 = 0. .5 .5 ; p111 = .5 .5 .5 ; p211 = 1. .5 .5 ;
   p021 = 0. 1. .5 ; p121 = .5 1. .5 ; p221 = 1. 1. .5 ;
   p002 = 0. 0. 1. ; p102 = .5 0. 1. ; p202 = 1. 0. 1. ;
   p012 = 0. .5 1. ; p112 = .5 .5 1. ; p212 = 1. .5 1. ;
   p022 = 0. 1. 1. ; p122 = .5 1. 1. ; p222 = 1. 1. 1. ;
*
   n2 = nbmail2 ; n1 = '-' nbmail 1 ;
   crit = 1.D-4 ;
   'SI' ('OU' ('EGA' mesh 1) ('EGA' mesh 3)) ;
      ba = 'ET' ('DROIT' n2 p000 p100) ('DROIT' n2 p100 p200) ;
      dr = 'ET' ('DROIT' n2 p200 p210) ('DROIT' n2 p210 p220) ;
      ha = 'ET' ('DROIT' n2 p220 p120) ('DROIT' n2 p120 p020) ;
      ga = 'ET' ('DROIT' n2 p020 p010) ('DROIT' n2 p010 p000) ;
      ligg = 'ET' ('DROIT' n2 p000 p001) ('DROIT' n2 p001 p002) ;
   'FINSI' ;      
   'SI' ('EGA' mesh 2) ;
      ba = 'ET' ('DROIT' n1 p000 p100) ('DROIT' 1 p100 p200) ;
      dr = 'ET' ('DROIT' n1 p200 p210) ('DROIT' 1 p210 p220) ;
      ha = 'ET' ('DROIT' 1  p220 p120) ('DROIT' n1 p120 p020) ;
      ga = 'ET' ('DROIT' 1  p020 p010) ('DROIT' n1 p010 p000) ;
      ligg = 'ET' ('DROIT' n1 p000 p001) ('DROIT' 1 p001 p002) ;
   'FINSI' ;      
*      
   bas   = 'DALLER' ba dr ha ga ;
   'SI' ('EGA' disc 'LINE') ;
      'OPTION' 'ELEM' 'CUB8' ;
   'SINON' ;      
      'OPTION' 'ELEM' 'CU20' ;
   'FINSI' ;      
   mt   = 'VOLUME' bas 'GENE' ligg ;
   emt  = 'ENVELOPPE' mt ;
*   amt  = 'ARETE' mt ;
*   'TRACER' 'CACH' mt ;
   pmt   = 'CHANGER' emt 'POI1' ;
   pmtz0 = 'POIN' pmt 'PLAN' p000 p200 p020 crit ;
   pmtz1 = 'POIN' pmt 'PLAN' p002 p202 p022 crit ;
   pmty0 = 'POIN' pmt 'PLAN' p000 p200 p002 crit ;
   pmty1 = 'POIN' pmt 'PLAN' p020 p220 p022 crit ;
   pmtx0 = 'POIN' pmt 'PLAN' p000 p020 p002 crit ;
   pmtx1 = 'POIN' pmt 'PLAN' p200 p220 p202 crit ;
*   'TRACER' (emt 'ET' ('COULEUR' pmtz0 'ROUG')) ;
*   'LISTE' pmtz0 ;
   fz0   = 'ELEM' emt 'APPUYE' 'STRICTEMENT' pmtz0 ;
*   'TRACER' (emt 'ET' ('COULEUR' fz0 'ROUG')) ;
*   'LISTE' pmtz1 ;
   fz1   = 'ELEM' emt 'APPUYE' 'STRICTEMENT' pmtz1 ;
   fy0   = 'ELEM' emt 'APPUYE' 'STRICTEMENT' pmty0 ;
   fy1   = 'ELEM' emt 'APPUYE' 'STRICTEMENT' pmty1 ;
   fx0   = 'ELEM' emt 'APPUYE' 'STRICTEMENT' pmtx0 ;
   fx1   = 'ELEM' emt 'APPUYE' 'STRICTEMENT' pmtx1 ;
*
* Cas QUAF
*
'SI' ('EGA' disc 'QUAF') ;
   mt = 'CHANGER' mt 'QUAF' ;
   fz0 = 'CHANGER' fz0 'QUAF' ;
   fz1 = 'CHANGER' fz1 'QUAF' ;
   fy0 = 'CHANGER' fy0 'QUAF' ;
   fy1 = 'CHANGER' fy1 'QUAF' ;
   fx0 = 'CHANGER' fx0 'QUAF' ;
   fx1 = 'CHANGER' fx1 'QUAF' ;
   'ELIMINATION' (mt 'ET' fx0 'ET' fx1 'ET' fy0 'ET' fy1
                     'ET' fz0 'ET' fz1 'ET' ba) 1.D-6 ;
   _mt = mt ;
'SINON' ;
   _mt = 'CHANGER' mt 'QUAF' ;   
'FINSI' ;
*
* Blocages 
*
   rigblo =      ('BLOQUE' 'UX' (fx0 'ET' fx1))
            'ET' ('BLOQUE' 'UY' (fy0 'ET' fy1))
            'ET' ('BLOQUE' 'UZ' (fz0 'ET' fz1))
                  ;
   cblo = 'DEPIMPOSE' rigblo 0. ;                    
*
* Métrique
*
$mt = 'MODELISER' mt 'THERMIQUE' ;
'SI' ('ET' ('>EG' mesh 1)  ('<EG' mesh 2)) ;
   met = 'CHAINE' 'rien' ;
'FINSI' ;
'SI' ('EGA' mesh 3) ;
*   xmt ymt zmt = 'COORDONNEE' mt ;
*   g11 = 'NOMC' 'G11' ('+' ('*' xmt 10.) 0.1);
*   g22 = 'NOMC' 'G22' ('+' ('*' ymt 10.) 0.1) ;
*   g33 = 'NOMC' 'G33' ('+' ('*' zmt 10.) 0.1) ;
*   g12 = 'NOMC' 'G12' ('*' xmt 0.D0) ;
*   g13 = 'NOMC' 'G13' g12 ;
*   g23 = 'NOMC' 'G23' g12 ;
*   cg11 = 'CHANGER' 'CHAM' g11 $mt 'NOEUD' ;   
*   cg22 = 'CHANGER' 'CHAM' g22 $mt 'NOEUD' ;   
*   cg33 = 'CHANGER' 'CHAM' g33 $mt 'NOEUD' ;   
*   cg12 = 'CHANGER' 'CHAM' g12 $mt 'NOEUD' ;   
*   cg13 = 'CHANGER' 'CHAM' g13 $mt 'NOEUD' ;   
*   cg23 = 'CHANGER' 'CHAM' g23 $mt 'NOEUD' ;   
*   met = cg11 'ET' cg22 'ET' cg33 'ET' cg12 'ET' cg13 'ET' cg23 ;
   $mt = 'MODELISER' _mt 'NAVIER_STOKES' 'QUAF' ;
   mtc = 'DOMA' $mt 'CENTRE' ; 
   xmt ymt zmt = 'COORDONNEE' mtc ;
   g11 = 'NOMC' 'G11' ('+' ('*' xmt 100.) 0.);
   g22 = 'NOMC' 'G22' ('+' ('*' ymt 100.) 0.) ;
   g33 = 'NOMC' 'G33' ('+' ('*' zmt 100.) 0.) ;
   g12 = 'NOMC' 'G12' ('*' xmt 0.) ;
   g13 = 'NOMC' 'G13' ('*' xmt 0.) ;
   g23 = 'NOMC' 'G23' ('*' xmt 0.) ;
   met = g11 'ET' g22 'ET' g33 'ET' g12 'ET' g13 'ET' g23 ;
'FINSI' ;
'RESPRO' mt _mt met rigblo cblo ;
*
* End of procedure file CAS3D
*
'FINPROC' ;
*ENDPROCEDUR cas3d
*

'OPTION' 'DIME' 3 ;
'SI' ('NON' interact) ;
  'OPTION' 'TRAC' 'PS' ;
'SINON' ;
  'OPTION' 'TRAC' 'X' ;
'FINSI' ;
*
* Pour les tests, on regarde les valeurs max. des indicateurs
* d'isotropie et d'equidistribution 
*
lmaiso = 'PROG' ;
lmaequ = 'PROG' ;
*
* Ici les valeurs de référence
*
lok = VRAI ;
idx = 0 ;
lmaisor = 'PROG' 1.2 1.2 1.2 1. 1. 1. 1.2 1.2 1.2 1. 1. 1. ;
lmaequr = 'PROG' 1.2 1.2 1.5 1. 1. 1. 1.2 1.2 1.2 1. 1. 1. ;
*
* Maillage :
*   mesh = 1 : maillage régulier
*   mesh = 2 : maillage concentré à gauche
*   mesh = 3 : maillage régulier + métrique concentrée à gauche
*   ltri = VRAI 
*   nbmail2  : nombre de mailles divisé par 2
*   'QUAI' : quadratique incomplet (mécanique)
*   'QUAF' : quadratique fluide 
tdisc = 'TABLE' ;
tdisc . 1 = 'LINE' ;
tdisc . 2 = 'QUAI' ;
tdisc . 3 = 'QUAF' ;
'REPETER' idisc 2 ;
   'REPETER' itri 2 ;
      'REPETER' imesh 3 ;
         iidisc = &idisc ;
         iitri  = &itri ;
         iimesh = &imesh ;
*         iidisc = 1 ;
*         iitri  = 2 ; 
*         iimesh = 3 ;
         gdisc = tdisc . iidisc ;
         'SI' ('EGA' iidisc 1) ;
            nbmail2 = 3 ;
         'SINON' ;
            nbmail2 = 2 ;
         'FINSI' ;
         'SI' ('EGA' iitri 1) ;
            ltri = VRAI ;
         'SINON' ;
            ltri = FAUX ;
         'FINSI' ;         
*
* Maillage
*
         mail _mt met mblo cblo = CAS3D iimesh nbmail2 ltri gdisc ;
         'SI' ltri ;
            mtri = 'CHAINE' 'triangle' ;
         'SINON' ;
            mtri = 'CHAINE' 'carre' ;
         'FINSI' ;         
         mes = 'CHAINE' 'mesh=' iimesh ' ; ' mtri ' ; ' gdisc ;
         'MESSAGE' mes ;
         'SI' graph ;
            tit = 'CHAINE' 'Maillage initial ' mes ;
            'SI' interact ;
               'TRACER' 'CACH' mail 'TITR' tit ;
            'SINON' ;            
               'TRACER' 'CACH' mail 'TITR' tit 'NCLK' ;
            'FINSI' ;
         'FINSI' ;
*
* adaptation
*
         'SI' ('EGA' ('TYPE' met) 'CHPOINT ') ;
*            dep = 'DEDU' 'ADAP' mail mblo cblo 'METR' met 'CSTE'
*                  debug ;
            dep = 'DEDU' 'ADAP' _mt mblo cblo 'DISG' gdisc
                  'METR' met 'CSTE'
                  debug ;
         'SINON' ;         
            dep = 'DEDU' 'ADAP' mail mblo cblo debug ;
         'FINSI' ;
*
* tracé
*         
         orig = 'FORME' ;
         'FORME' dep ;
         'SI' ('EGA' ('TYPE' met) 'CHPOINT ') ;
            ciso = DEADUTIL 'QISO' _mt gdisc 'GAU7' met 'CSTE' ;
            cequ = DEADUTIL 'QEQU' _mt gdisc 'GAU7' met 'CSTE' ;
         'SINON' ;         
            ciso = DEADUTIL 'QISO' _mt gdisc 'GAU7' ;
            cequ = DEADUTIL 'QEQU' _mt gdisc 'GAU7' ;
         'FINSI' ;
         maciso = 'MAXIMUM' ciso ; miciso = 'MINIMUM' ciso ;
         macequ = 'MAXIMUM' cequ ; micequ = 'MINIMUM' cequ ;
         'MESSAGE' ('CHAINE' 'CISO : max. = ' maciso
                                  '  min. = ' miciso) ;
         'MESSAGE' ('CHAINE' 'CEQU : max. = ' macequ
                                  '  min. = ' micequ) ;
* Tests      
         lmaiso = 'ET' lmaiso ('PROG' maciso) ;
         lmaequ = 'ET' lmaequ ('PROG' macequ) ;
         idx = '+' idx 1 ;
         visor='EXTRAIRE' lmaisor idx ;
         tiso = ('<' maciso ('*' visor 1.05)) ;
         'SI' ('NON' tiso) ;
            cherr = 'CHAINE' '!!! Erreur, on aurait voulu max. ciso. < '
                             visor ;
            'MESSAGE' cherr ;                          
         'FINSI' ;                          
         lok = 'ET' lok tiso ;
      
         vequr='EXTRAIRE' lmaequr idx ;
         tequ = ('<' macequ ('*' vequr 1.05)) ;
         'SI' ('NON' tequ) ;
            cherr = 'CHAINE' '!!! Erreur, on aurait voulu max. cequ. < '
                             vequr ;
            'MESSAGE' cherr ;                          
         'FINSI' ;                          
         lok = 'ET' lok tequ ;
*      
         'SI' graph ;
            tit = 'CHAINE' 'Maillage final ' mes ; 
            'SI' interact ;         
               'TRACER' 'CACH' mail 'TITR' tit ;
            'SINON' ;            
               'TRACER' 'CACH' mail 'TITR' tit 'NCLK' ;
            'FINSI' ;
            $mt   = 'MODELISER' _mt 'NAVIER_STOKES' 'LINE' ;
            mb    = 'MODE' ('DOMA' $mt 'MAILLAGE') 'THERMIQUE' ;
            cliso = 'KCHA' $mt ciso 'CHAM' ;
            tit = 'CHAINE' 'Isotropie ' mes ; 
            'SI' interact ;         
               'TRACER' cliso mb 'TITR' tit ;
            'SINON' ;            
               'TRACER' cliso mb 'TITR' tit 'NCLK' ;
            'FINSI' ;
            clequ = 'KCHA' $mt cequ 'CHAM' ;
            tit = 'CHAINE' 'Equidis. ' mes ; 
            'SI' interact ;         
               'TRACER' clequ mb 'TITR' tit ;
            'SINON' ;            
               'TRACER' clequ mb 'TITR' tit 'NCLK' ;
            'FINSI' ;
        'FINSI' ;
        'FORME' orig ;
*        'TEMPS' 'SGAC' 'IMPR' ;
      'FIN' imesh ;
   'FIN' itri ;
'FIN' idisc ;
*
* Fin du jeu de données
*
'SAUTER' 2 'LIGNE' ;
'SI' lok ;
   'MESSAGE' 'Tout sest bien passe' ;
'SINON' ;
   'MESSAGE' 'Il y a eu des erreurs' ;
'FINSI' ;   
'SAUTER' 2 'LIGNE' ;
'SI' interact ;
   'OPTION' 'DONN' 5 ;
'FINSI' ;   
'SI' ('NON' lok) ;
   'ERREUR' 5 ;
'FINSI' ;   
*
* End of dgibi file DEDUAD3D
*
'FIN' ;

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer