* fichier : fcourant2.dgibi ************************************************************************ * NOM : FCOURANT2 * DESCRIPTION : Teste la procédure calculant la fonction de courant * sur des solutions analytiques en 2D et 2D axi * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 16/10/2018, version initiale * HISTORIQUE : v1, 16/10/2018, 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 fcourant2.dgibi' ; 'SAUTER' 2 'LIGNE' ; * interact = FAUX ; graph = FAUX ; * * 'SI' ('NON' interact) ; 'OPTION' 'TRAC' 'PS' ; 'SINON' ; 'OPTION' 'TRAC' 'X' ; 'FINSI' ; * lok = VRAI ; * ikas = 0 ; * Liste des cas à passer * typel = LINE, QUAI ou QUAF * axi = 1 (mode plan), 2 (mode axi regularise), 3 (mode axi "normal") * sol = 1 (simplifiee 2), 2 (simplifiee 1), 3 (complete) * errf = erreur calculee au 18/10/2018 Linux 64 * tolf = limite sup erreur pour la solution en question * * 1 Sol complete plan LINE * ikas = '+' ikas 1 ; tikas . 'typel' = 'LINE' ; tikas . 'axi' = 1 ; tikas . 'sol' = 3 ; tikas . 'errf' = 1.30693E-01 ; tikas . 'tolf' = 2.d-1 ; * * 2 Sol simplif 1 plan LINE * ikas = '+' ikas 1 ; tikas . 'typel' = 'LINE' ; tikas . 'axi' = 1 ; tikas . 'sol' = 2 ; tikas . 'errf' = 2.38364E-02 ; tikas . 'tolf' = 3.d-2 ; * * 3 Sol simplif 2 plan LINE * ikas = '+' ikas 1 ; tikas . 'typel' = 'LINE' ; tikas . 'axi' = 1 ; tikas . 'sol' = 1 ; tikas . 'errf' = 2.27339E-02 ; tikas . 'tolf' = 3.d-2 ; * * 4 Sol complete axi regu LINE * ikas = '+' ikas 1 ; tikas . 'typel' = 'LINE' ; tikas . 'axi' = 2 ; tikas . 'sol' = 3 ; tikas . 'errf' = 1.77030E-01 ; tikas . 'tolf' = 2.d-1 ; * * 5 Sol simplif 1 axi regu LINE * ikas = '+' ikas 1 ; tikas . 'typel' = 'LINE' ; tikas . 'axi' = 2 ; tikas . 'sol' = 2 ; tikas . 'errf' = 5.63040E-02 ; tikas . 'tolf' = 7.d-2 ; * * 6 Sol simplif 2 axi regu LINE * ikas = '+' ikas 1 ; tikas . 'typel' = 'LINE' ; tikas . 'axi' = 2 ; tikas . 'sol' = 1 ; tikas . 'errf' = 7.12942E-02 ; tikas . 'tolf' = 8.d-2 ; * * 7 Comparaison axi regu et axi normale (4) * ikas = '+' ikas 1 ; tikas . 'typel' = 'LINE' ; tikas . 'axi' = 3 ; tikas . 'sol' = 3 ; tikas . 'errf' = 2.27984E-01 ; tikas . 'tolf' = 2.5d-1 ; * * 8 Comparaison axi regu QUAI et LINE (4) * ikas = '+' ikas 1 ; tikas . 'typel' = 'QUAI' ; tikas . 'axi' = 2 ; tikas . 'sol' = 3 ; tikas . 'errf' = 1.00955E-02 ; tikas . 'tolf' = 1.3d-2 ; * * 9 Comparaison axi regu QUAF et LINE (4) * ikas = '+' ikas 1 ; tikas . 'typel' = 'QUAF' ; tikas . 'axi' = 2 ; tikas . 'sol' = 3 ; tikas . 'errf' = 4.63262E-03 ; tikas . 'tolf' = 5.d-3 ; * * Debut boucle sur les cas * 'REPE' iikas nkas ; 'SAUTER' 1 'LIGNE' ; ikas = &iikas ; tikas = tkas . ikas ; * * iiaxi = 1 : mode plan * iiaxi = 2 : mode axi mot-cle REGU pour FCOURANT * iiaxi = 3 : mode axi mot-cle NORM pour FCOURANT * iiaxi = tikas . 'axi' ; 'SI' ('EGA' iiaxi 1) ; 'MESSAGE' 'Mode plan ' ; tdef = ' mod=PLAN' ; 'SINON' ; 'SI' ('EGA' iiaxi 2) ; 'MESSAGE' 'Mode axi calcul "regularise"' ; 'SINO' ; 'MESSAGE' 'Mode axi calcul "normal"' ; 'FINS' ; 'FINSI' ; 'SAUTER' 1 'LIGNE' ; * * * Maillage * typl = tikas . 'typel' ; 'SI' ('EGA' typl 'LINE') ; 'SINO' ; 'FINS' ; * a = 1. ; b = 1. ; nx = 5 ; ny = 7 ; * pA = 0. 0. ; pB = a 0. ; pC = a b ; pD = 0. b ; bas = 'DROIT' nx pA pB ; dro = 'DROIT' ny pB pC ; hau = 'DROIT' nx pC pD ; gau = 'DROIT' ny pD pA ; * cmt = bas 'ET' dro 'ET' hau 'ET' gau ; mt = 'SURFACE' cmt ; 'SI' ('EGA' typl 'QUAF') ; mt = 'CHANGER' mt 'QUAF' ; 'FINS' ; * * Solution * iisol = tikas . 'sol' ; * * * Solutions exactes 2D plan * * u_x = - dpsi / dy * u_y = dpsi / dx * * COMPLETE * psi = x(1-x) y(1-y) * u_x = -x(1-x) (1-2y) * u_y = (1-2x) y(1-y) * * SIMPLIFIEE 1 * psi = y(1-y) * u_x = - (1-2y) * u_y = 0 * * SIMPLIFIEE 2 * psi = x(1-x) * u_x = 0 * u_y = 1-2x * * 'SI' ('NON' laxi) ; x1mx = '*' x (1. '-' x) ; y1my = '*' y (1. '-' y) ; 1m2x = '-' 1. ('*' x 2.) ; 1m2y = '-' 1. ('*' y 2.) ; * 'SI' ('EGA' iisol 3) ; psi = '*' x1mx y1my ; ux = '*' ('*' x1mx 1m2y) -1. ; uy = '*' y1my 1m2x ; mclim = bas 'ET' gau ; 'FINS' ; * 'SI' ('EGA' iisol 2) ; ux = '*' 1m2y -1. ; uy = y '*' 0. ; psi = y1my ; mclim = bas ; 'FINS' ; * 'SI' ('EGA' iisol 1) ; ux = x '*' 0. ; uy = 1m2x ; psi = x1mx ; mclim = gau ; 'FINS' ; 'SINON' ; * * Solution exacte 2D axi * * u_r = - 1/(2 pi r) dpsi/dz * u_z = 1/(2 pi r) dpsi/dr * * * COMPLETE * psi = r^2 (1-r) z(1-z) * ur = -1/2pi (1-2z) * uz = 1/2pi z(1-z) * * SIMPLIFIEE 1 * psi = r^2 z(1-z) * ur = -1/2pi r(1-2z) * uz = 1/2pi 2r z(1-z) * * SIMPLIFIEE 2 * psi = r^2 (1-r) * u_r = 0 * u_z = 1/2pi (2-3r) * ideupi = '/' 1. ('*' PI 2.) ; mideupi = '*' -1. ideupi ; r1mr = r '*' (1. '-' r) ; r21mr = r '*' r '*' (1. '-' r) ; 2m3r = '-' 2. ('*' 3 r) ; z1mz = '*' z (1. '-' z) ; 1m2z = '-' 1. ('*' z 2.) ; * 'SI' ('EGA' iisol 3) ; psi = '*' r21mr z1mz ; ur = '*' ('*' r1mr 1m2z) mideupi ; uz = '*' ('*' z1mz 2m3r) ideupi ; mclim = bas 'ET' gau ; 'FINS' ; * 'SI' ('EGA' iisol 2) ; ur = '*' ('*' ('*' ideupi 1m2z) r) -1. ; uz = ideupi '*' z1mz '*' 2. ; psi = r '*' r '*' z1mz ; mclim = gau ; 'FINS' ; * 'SI' ('EGA' iisol 1) ; ur = r '*' 0. ; uz = ideupi '*' 2m3r ; psi = r21mr ; mclim = gau ; 'FINS' ; 'FINSI' ; * *clpsi = 'MANUEL' 'CHPO' (bas 'ET' gau) 1 'SCAL' 0. ; *clpsi = 'REDU' psi mclim ; 'SI' laxi ; 'SINO' ; 'FINS' ; * dpsir = '/' ('ABS' ('-' psi psic)) ('MAXIMUM' psi 'ABS') ; titg = 'CHAINE' tdef ' isol=' iisol ' typl=' typl ; 'MESS' titg ; 'SI' graph ; tit = 'CHAINE' 'Vitesse (analytique)' titg ; 'TRACER' vun mt cmt 'TITR' tit ; tit = 'CHAINE' 'Fonction de courant (analytique)' titg ; 'TRACER' psi mt 'TITR' tit ; tit = 'CHAINE' 'Fonction de courant (calculee) + Vitesse (ana)' titg ; 'TRACER' psic vun mt cmt 'TITR' tit ; tit = 'CHAINE' 'Fonction de courant (|err. rel.|)' titg ; 'TRACER' dpsir mt 'TITR' tit ; 'FINSI' ; * * tolf = tikas . 'tolf' ; * 'MESSAGE' ('CHAINE' 'errf=' errf ' tolf=' tolf) ; * tst = ('<' errf tolf) ; 'SI' ('NON' tst) ; chmes = 'CHAINE' '!!! Erreur, on na pas errf < ' tolf ; 'MESSAGE' chmes ; 'FINSI' ; lok = lok 'ET' tst ; * 'FIN' iikas ; * '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 'ECHO' 1 ; 'FINSI' ; 'SI' ('NON' lok) ; 'ERREUR' 5 ; 'FINSI' ; * * End of dgibi file FCOURANT2 * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales