* fichier : dedu_cerc.dgibi ************************************************************************ * Section : Langage Objets * Section : Maillage Autres * Section : Fluides Thermique ************************************************************************ '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' ;