* fichier : dedu_cerc.dgibi
************************************************************************
************************************************************************
************************************************************************
* 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 ;
*
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 ;
xp = 'EXTRAIRE' cx 'SCAL' pp ;
yp = 'EXTRAIRE' cy 'SCAL' pp ;
xr = 'EXTRAIRE' ncx 'SCAL' pp ;
yr = 'EXTRAIRE' ncy 'SCAL' pp ;
'FIN' iix ;
'FIN' iiy ;
tabsor = 'TABLE' ;
tabsor . 'X_param' = lxp ;
tabsor . 'Y_param' = lyp ;
tabsor . 'X_physi' = lxr ;
tabsor . 'Y_physi' = lyr ;
'SORTIR' 'EXCE' tabsor ;
'FINPROC' ;
*
*
*
'SI' ('NON' interact) ;
'OPTION' 'TRAC' 'PS' ;
'SINON' ;
'OPTION' 'TRAC' 'X' ;
'FINSI' ;
*
'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 ;
lBED = 'CERCLE' nc pB pA pD ;
cmt2 = lAB 'ET' lBED 'ET' lDA ;
fdep1 = 'DEPIMPOSE' mdep1 cdep ;
fcar = 'FORME' ;
'FORME' creg1 ;
fcas1 = 'FORME' ;
*
* Cas 2 : idem cas1 sauf que les points de lAB et lDA peuvent
* bouger tangentiellement
*
mdep22 = 'BLOQUE' 'UY' lAB ;
mdep23 = 'BLOQUE' 'UX' lDA ;
mdep2 = mdep21 'ET' mdep22 'ET' mdep23 ;
'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' ;
R = 1. ;
'REPETER' iit 15 ;
xc yc = 'COORDONNEE' mc ;
* Fabrication du résidu
'REPETER' ipmc npmc ;
mpcou = 'MANUEL' 'POI1' pcou ;
xpc = 'EXTRAIRE' xc 'SCAL' pcou ;
ypc = 'EXTRAIRE' yc 'SCAL' pcou ;
lac = 'EXTRAIRE' lam 'SCAL' pcou ;
('-' ('+' ('*' 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 = '*' ltot 2. ;
'SI' ('EGA' &ipmc 1) ;
mtot = mto ;
'SINON' ;
mtot = mtot 'ET' mto ;
'FINSI' ;
'FIN' ipmc ;
mdep3 = mtot 'ET' mdep22 'ET' mdep23 ;
'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 ;
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' ;
tit = 'CHAINE' 'Isotropie ' mes ;
'SI' interact ;
'TRACER' cliso mb 'TITR' tit ;
'SINON' ;
'TRACER' cliso mb 'TITR' tit 'NCLK' ;
'FINSI' ;
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 - Tous droits réservés.
					Mentions légales