Download dedu_cerc.dgibi

Back to the list

* fichier : dedu_cerc.dgibi
'OPTI' 'ECHO' 0 ;
************************************************************************
* NOM         : DEDU_CERC
* DESCRIPTION : Utilisation de 'DEDU' 'ADAP' pour construire le maillage
*               le plus "régulier" possible d'un quart de cercle
*               homéomorphe à un maillage cartésien.
*
*
* LANGAGE     : GIBIANE-CAST3M
* AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
*               mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION    : v1, 15/05/2007, version initiale
* HISTORIQUE : v1, 15/05/2007, 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 dedu_cerc.dgibi' ;
'SAUTER' 2 'LIGNE' ;
*
*
*
interact= FAUX ;
graph   = FAUX ;
complet = FAUX ;
*
* Output of node coordinates in parametric and real space
*
'DEBPROC' SORNOD ;
'FORME' fcar ;
cx  cy  = 'COORDONNEE' mt ;
'FORME' fcas3 ;
ncx ncy = 'COORDONNEE' mt ;
'FORME' fcar ;
*
lxp = 'PROG' ;
lyp = 'PROG' ;
lxr = 'PROG' ;
lyr = 'PROG' ;
nAB = 'NBEL' lAB ;
delta = '/' 1. ('FLOTTANT' nAB) ;
'REPETER' iiy ('+' nAB 1) ;
   iy = &iiy ;
   ys = '*' delta ('-' iy 1) ;
   'REPETER' iix ('+' nAB 1) ;
      ix = &iix ;
      xs = '*' delta ('-' ix 1) ;
      ps = xs ys ;
      pp = 'POIN' mt 'PROC' ps ;
      xp = 'EXTRAIRE' cx 'SCAL' pp ;
      yp = 'EXTRAIRE' cy 'SCAL' pp ;
      xr = 'EXTRAIRE' ncx 'SCAL' pp ;
      yr = 'EXTRAIRE' ncy 'SCAL' pp ;
      lxp = 'ET' lxp ('PROG' xp) ;
      lyp = 'ET' lyp ('PROG' yp) ;
      lxr = 'ET' lxr ('PROG' xr) ;
      lyr = 'ET' lyr ('PROG' yr) ;
   'FIN' iix ;
'FIN' iiy ;
tabsor = 'TABLE' ;
tabsor . 'X_param' = lxp ;         
tabsor . 'Y_param' = lyp ;         
tabsor . 'X_physi' = lxr ;         
tabsor . 'Y_physi' = lyr ;         
'OPTION' 'SORT' './circle.txt' ;
'SORTIR' 'EXCE' tabsor ;
'FINPROC' ;
*
*
*
'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
'SI' ('NON' interact) ;
  'OPTION' 'TRAC' 'PS' ;
'SINON' ;
  'OPTION' 'TRAC' 'X' ;
'FINSI' ;  
'OPTI' 'ECHO' 0 ;
*
'SI' complet ;
   vden    = 0.03D0 ;
   testiso = 2.1D0 ; testequ = 1.1 ;
'SINON' ;
   vden  = 0.1D0 ;
   testiso = 1.8D0 ; testequ = 1.1 ;
'FINSI' ;      
theta = 0.5D0 ;
gamma = 1.5D0 ;
*
chparam = 'CHAINE' 'vden=' vden
               ' ' 'theta=' theta
               ' ' 'gamma=' gamma ;
'DENS' vden ;
*
* Cas 1 : on construit le carré et on contraint le bord
*   
   pA = 0. 0. ; pB = 1. 0. ; pC = 1. 1. ; pD = 0. 1. ;
   lAB = 'DROIT' pA pB ; lBC = 'DROIT' pB pC ;
   lCD = 'DROIT' pC pD ; lDA = 'DROIT' pD pA ;
   cmt = lAB 'ET' lBC 'ET' lCD 'ET' lDA ;
   mt  = 'DALLER' lAB lBC lCD lDA ;
   nc = '+' ('NBEL' lBC) ('NBEL' lCD) ;
   lBED = 'CERCLE' nc pB pA pD ;
   cmt2 = lAB 'ET' lBED 'ET' lDA ;
   cdep = 'MOIN' cmt2 cmt ;
   mdep1 = 'BLOQUE' 'DEPL' cmt ;
   fdep1 = 'DEPIMPOSE' mdep1 cdep ;
   creg1 = 'DEDU' 'ADAP' mt mdep1 fdep1 'THET' theta 'GAMM' gamma ;
   fcar = 'FORME' ;
   'FORME' creg1 ;
   fcas1 = 'FORME' ;
*
* Cas 2 : idem cas1 sauf que les points de lAB et lDA peuvent
*         bouger tangentiellement
*
   mdep21 = 'BLOQUE' 'DEPL' (lBC 'ET' lCD) ;
   mdep22 = 'BLOQUE' 'UY' lAB ;
   mdep23 = 'BLOQUE' 'UX' lDA ;
   mdep2 = mdep21 'ET' mdep22 'ET' mdep23 ;
   creg2 = 'DEDU' 'ADAP' mt mdep2 'THET' theta 'GAMM' gamma ;
   'FORME' creg2 ;
   fcas2 = 'FORME' ;
*
* Cas 3 : idem cas1 sauf que les points de lBC et lCD peuvent
*         bouger tangentiellement au cercle
   mc = lBC 'ET' lCD ;
   pmc = 'CHANGER' mc 'POI1' ;
   npmc = 'NBEL' pmc ;
   sol ='MANUEL' 'CHPO' mc 1 'LX' 0. ;
   R = 1. ;
   'REPETER' iit 15 ;
      xc yc = 'COORDONNEE' mc ;
      lam   = 'EXCO' 'LX' sol ;
*  Fabrication du résidu 
      'REPETER' ipmc npmc ;
         pcou = pmc 'POIN' &ipmc ;
         mpcou = 'MANUEL' 'POI1' pcou ;
         xpc  = 'EXTRAIRE' xc 'SCAL' pcou ;
         ypc  = 'EXTRAIRE' yc 'SCAL' pcou ;
         lac  = 'EXTRAIRE' lam  'SCAL' pcou ;
         resx = 'MANUEL' 'CHPO' pcou 1 'FX' ('*' ('*' xpc lac) 2.) ;
         resy = 'MANUEL' 'CHPO' pcou 1 'FY' ('*' ('*' ypc lac) 2.) ;
         resl = 'MANUEL' 'CHPO' pcou 1 'FLX'
            ('-' ('+' ('*' xpc xpc) ('*' ypc ypc))
                 ('*' R R)) ;
         'SI' ('EGA' &ipmc 1) ;                         
            rtot = resx '+' resy '+' resl ;
         'SINON' ;      
            rtot = rtot '+' resx '+' resy '+' resl ;
         'FINSI' ;      
*   Fabrication de la matrice tangente
         ltot = 'PROG' lac 0. lac xpc ypc 0. ;
         ltot = '*' ltot 2. ;
         mto  = 'MANUEL' 'RIGI' mpcou ('MOTS' 'UX' 'UY' 'LX') ltot ;
         'SI' ('EGA' &ipmc 1) ;                         
            mtot = mto ;
         'SINON' ;      
            mtot = mtot 'ET' mto ;
         'FINSI' ;      
      'FIN' ipmc ;
      mdep3 = mtot 'ET' mdep22 'ET' mdep23 ;
      fdep3 = '*' rtot -1. ;
      creg3 = 'DEDU' 'ADAP' mt mdep3 fdep3 'THET' theta 'GAMM' gamma
              'ACVG' FAUX 'NITM' 1 ;
      'FORME' creg3 ;
   'FIN' iit ;
   'SI' graph ;
      fcas3 = 'FORME' ;
      'FORME' fcar ;
      cht = 'CHAINE' 'Original mesh ' chparam ;
      'TRACER' mt 'TITR' cht ;
      'FORME' fcas1 ;
      cht = 'CHAINE' 'Case 1 ' chparam ;
      'TRACER' mt 'TITR' cht ;
      'FORME' fcas2 ;
      cht = 'CHAINE' 'Case 2 ' chparam ;
      'TRACER' mt 'TITR' cht ;
      'FORME' fcas3 ;
      cht = 'CHAINE' 'Case 3 ' chparam ;
      'TRACER' mt 'TITR' cht ;
   'FINSI' ;      
   _mt = 'CHANGER' mt 'QUAF' ;
   gdisc = 'LINE' ;
   mes = chparam ;
   ciso = DEADUTIL 'QISO' _mt gdisc 'GAU7' ;
   cequ = DEADUTIL 'QEQU' _mt gdisc 'GAU7' ;
   maciso = 'MAXIMUM' ciso ; miciso = 'MINIMUM' ciso ;
   macequ = 'MAXIMUM' cequ ; micequ = 'MINIMUM' cequ ;
   mamiequ = '/' macequ micequ ;
   'MESSAGE' chparam ;
   'MESSAGE' ('CHAINE' 'CISO : max. = ' maciso '  min. = ' miciso) ;
   'MESSAGE' ('CHAINE' 'CEQU : max. = ' macequ '  min. = ' micequ) ;
   'MESSAGE' ('CHAINE' '       max/min = ' mamiequ) ;
   'SI' graph ;
       $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' ;
*
* Tests
*   
   lok = VRAI ;
   tiso = ('<' maciso testiso) ;
   'SI' ('NON' tiso) ;
      cherr = 'CHAINE' '!!! Erreur, on aurait voulu max. ciso. < '
                       testiso ;
      'MESSAGE' cherr ;                          
   'FINSI' ;                          
   lok = 'ET' lok tiso ;
   tequ = ('<' mamiequ testequ) ;
   'SI' ('NON' tequ) ;
      cherr = 'CHAINE' '!!! Erreur, on aurait voulu max/min cequ. < '
                       testequ ;
      'MESSAGE' cherr ;                          
   'FINSI' ;                          
   lok = 'ET' lok tequ ;
*
* 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' ;   
*SORNOD ;
*
* End of dgibi file DEDU_CERC
*
'FIN' ;

 

© Cast3M 2003 - All rights reserved.
Disclaimer