* fichier : deduad3d.dgibi
************************************************************************
* Section : Langage Objets
* Section : Maillage Autres
* Section : Fluides Thermique
************************************************************************
'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 ;
'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
*
'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 100.) 0.);
   g22 = 'NOMC' 'G22' ('+' ('*' ymt 100.) 0.) ;
   g33 = 'NOMC' 'G33' ('+' ('*' zmt 100.) 0.) ;
   g21 = 'NOMC' 'G21' ('*' xmt 0.) ;
   g31 = 'NOMC' 'G31' g21 ;
   g32 = 'NOMC' 'G32' g21 ;
   met = g11 'ET' g22 'ET' g33 'ET' g21 'ET' g31 'ET' g32 ;
*
   mod = 'MODE' mt 'MECANIQUE' ;
   met = 'CHANGER' 'CHAM' met mod 'GRAVITE' ;
'FINSI' ;
'RESPRO' mt met mod rigblo cblo ;
*
* End of procedure file CAS3D
*
'FINPROC' ;
*ENDPROCEDUR cas3d
*

'OPTION' 'DIME' 3 ;
'SI' ('NON' interact) ;
  'OPTION' 'TRAC' 'PSC' ;
'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 met mod 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) 'MCHAML') ;
            dep = 'DEDU' 'ADAP' mail mblo cblo 'METR' met mod debug ;
         'SINON' ;
            dep = 'DEDU' 'ADAP' mail mblo cblo debug ;
         'FINSI' ;
*
* tracé
*
         orig = 'FORME' ;
         'FORME' dep ;
         'SI' ('EGA' ('TYPE' met) 'MCHAML') ;
            ciso = DEADUTIL 'QISO' mail 'METR' met mod ;
            cequ = DEADUTIL 'QEQU' mail 'METR' met mod ;
         'SINON' ;
            ciso = DEADUTIL 'QISO' mail ;
            cequ = DEADUTIL 'QEQU' mail ;
         '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' ;
            mod = 'MODE' mail 'MECANIQUE' ;
            tit = 'CHAINE' 'Isotropie ' mes ;
            'SI' interact ;
               'TRACER' ciso mod 'TITR' tit ;
            'SINON' ;
               'TRACER' ciso mod 'TITR' tit 'NCLK' ;
            'FINSI' ;
            tit = 'CHAINE' 'Equidis. ' mes ;
            'SI' interact ;
               'TRACER' cequ mod 'TITR' tit ;
            'SINON' ;
               'TRACER' cequ mod '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' ;
 

