* 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 ; fdep3 = '*' rtot -1. ; '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