* fichier : diff1d-2.dgibi ************************************************************************ ************************************************************************ * NOM : DIFF1D-2 * DESCRIPTION : Exemple diffusion 1D en temporel * Non stationary 1D diffusion equation * * Similar to diff1d.dgibi but more complex: * + interactive GUI (interact = vrai) * + slide generation for the lecture notes (transp = vrai) * * * See: * ENSTA Lecture Notes 2021 * Introduction to the finite element method applied to * incompressible fluid mechanics (in english) * Introduction a la methode des elements finis en * mecanique des fluides incompressibles (en francais) * Stephane GOUNAND and Sergey KUDRIAKOV * http://www-cast3m.cea.fr/index.php?xml=supportcours * * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 25/09/2007, version initiale * HISTORIQUE : v1, 25/09/2007, création ************************************************************************ * interact = FAUX ; graph = FAUX ; transp = VRAI ; * 'DEBPROC' CALCUL ; 'ARGUMENT' icini*'ENTIER' ; 'ARGUMENT' idt*'ENTIER' ; 'ARGUMENT' lnclk/'LOGIQUE' ; * 'SI' ('NON' ('EXISTE' lnclk)) ; lnclk = FAUX ; 'FINSI' ; * nmail = 10 ; nitma = 10 ; * Time steps dt = 'EXTRAIRE' lndt idt ; * * Maillage (Mesh) * pA = 0. 0. ; pB = 1. 0. ; lt = 'DROIT' nmail pA pB ; bas = lt ; mt = 'TRANSLATION' lt 1 (0. 1.) ; _bas = 'CHANGER' bas 'QUAF' ; _gau = 'CHANGER' gau 'QUAF' ; _dro = 'CHANGER' dro 'QUAF' ; _mt = 'CHANGER' mt 'QUAF' ; 'ELIMINATION' (_mt 'ET' _bas 'ET' _gau 'ET' _dro) 1.D-6 ; * * Initial condition * 'SI' ('EGA' icini 1) ; 'FINSI' ; * 'SI' ('EGA' icini 2) ; 'FINSI' ; * * table EQEX (Problem definition) * 'OPTI' 'EF' 'IMPL' 'CENTREE' 'ZONE' $mt 'OPER' 'DFDT' 1. 'CNM1' dt 'INCO' 'CN' 'OPTI' 'EF' 'IMPL' 'CENTREE' 'ZONE' $mt 'OPER' 'LAPN' 1. 'INCO' 'CN' 'CLIM' gau 'CN' 'TIMP' 1. 'CLIM' dro 'CN' 'TIMP' 0. ; * rv . 'INCO' = 'TABLE' 'INCO' ; * * Boucle en temps à la main * Manual time stepping loop * res = 'TABLE' ; res . 'icini' = icini ; res . 'bas' = bas ; res . 'TPS' = 'TABLE' ; res . 'CN' = 'TABLE' ; ires = 1 ; cn = rv . 'INCO' . 'CN' ; res . 'TPS' . ires = rv . 'PASDETPS' . 'TPS' ; res . 'CN' . ires = 'COPIER' cn ; 'REPETER' iitma nitma ; EXEC rv ; ires = '+' ires 1 ; cn = rv . 'INCO' . 'CN' ; res . 'TPS' . ires = rv . 'PASDETPS' . 'TPS' ; res . 'CN' . ires = 'COPIER' cn ; evtot = evc ; tabt = 'TABLE' ; tabt . 'TITRE' = 'TABLE' ; tabt . 1 = 'CHAINE' 'TIRC MARQ CROI' ; *tabt . 1 = 'CHAINE' 'TIRC NOLI' ; tabt . 'TITRE' . 1 = 'CHAINE' 'Sol. App.' ; cht = 'CHAINE' 'Pdt = ' &iitma ; 'SI' graph ; 'SI' lnclk ; 'DESSIN' evtot 'TITX' 'X' 'TITY' 'C' 'TITR' cht 'LEGE' tabt 'NCLK' ; 'SINON' ; 'DESSIN' evtot 'TITX' 'X' 'TITY' 'C' 'TITR' cht 'LEGE' tabt ; 'FINSI' ; 'FINS' ; 'FIN' iitma ; 'RESPRO' res ; 'FINPROC' ; * * Post-traitement * Post treatment * 'DEBPROC' POST ; 'ARGUMENT' res*'TABLE' ; 'ARGUMENT' ipost*'ENTIER' ; 'ARGUMENT' lnclk/'LOGIQUE' ; 'SI' ('NON' ('EXISTE' lnclk)) ; lnclk = FAUX ; 'FINSI' ; icini = res . 'icini' ; bas = res . 'bas' ; rt = res . 'TPS' ; rc = res . 'CN' ; tm = 'TABLE' 'ESCLAVE' ; ti = rt . &it ; ci = rc . &it ; tm . &it = mail ; 'FIN' it ; oeil = '*' (1.2 -2.4 1.3) 2. ; mtp = 'ET' tm ; 'SI' ('EGA' ipost 1) ; 'SI' lnclk ; 'TRACER' oeil mtp 'NCLK' ; 'SINON' ; 'TRACER' oeil mtp ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' ipost 2) ; tabt = 'TABLE' ; tabt . 1 = 'CHAINE' 'TIRC MARQ CROI' ; * tabt . 1 = 'CHAINE' 'TIRC NOLI' ; 'SI' lnclk ; 'DESSIN' evtot 'TITX' 't' 'TITY' 'Min c.' 'LEGE' tabt 'NCLK' ; 'SINON' ; 'DESSIN' evtot 'TITX' 't' 'TITY' 'Min c.' 'LEGE' tabt ; 'FINSI' ; 'FINSI' ; 'FINPROC' ; * * Table contenant les choix des menus (menu entries) * tcini = 'TABLE' ; tcini . 1 = 'choc' ; tcini . 2 = 'smooth' ; tdt = 'TABLE' ; tdt . 1 = 'dt=1.D-1' ; tdt . 2 = 'dt=1.D-2' ; tdt . 3 = 'dt=1.D-3' ; tdt . 4 = 'dt=1.D-4' ; tdt . 5 = 'dt=1.D-5' ; tpost = 'TABLE' ; tpost . 1 = '3D' ; tpost . 2 = 'Min. c' ; * * Précalcul de tous les cas (Precompute all cases) * tprec = 'TABLE' ; 'REPETER' b1 ntcini ; tprec . &b1 = 'TABLE' ; 'REPETER' b2 ntdt ; tprec . &b1 . &b2 = CALCUL &b1 &b2 VRAI ; 'FIN' b2 ; 'FIN' b1 ; * 'SI' interact ; * * Boucle d'affichage (Print loop) * 'REPETER' bouc ; * CALCUL itcini itadc VRAI ; POST (tprec . itcini . itdt) itpost VRAI ; cha = 'CHAINE' ' ' ; 'SI' ('EGA' ret 'Quitter') ; 'QUITTER' bouc ; 'FINSI'; 'SI' ('EGA' ret (tcini . itcini)) ; itcini = '+' itcini 1 ; 'FINSI' ; 'SI' (itcini > ntcini) ; itcini = 1 ; 'FINSI'; 'SI' ('EGA' ret (tdt . itdt)) ; itdt = '+' itdt 1 ; 'FINSI' ; 'SI' (itdt > ntdt) ; itdt = 1 ; 'FINSI'; 'SI' ('EGA' ret (tpost . itpost)) ; itpost = '+' itpost 1 ; 'FINSI' ; 'SI' (itpost > ntpost) ; itpost = 1 ; 'FINSI'; 'FIN' bouc ; 'FINS' ; * * Mes transparents * Lecture notes slides * 'SI' transp ; * POST (tprec . 1 . 1) 1 ; POST (tprec . 1 . 4) 1 ; * POST (tprec . 2 . 1) 1 ; POST (tprec . 2 . 4) 1 ; * 'FINSI' ; * 'SI' interact ; 'OPTION' 'DONN' 5 ; 'FINSI' ; * * End of dgibi file DIFF1D-2 * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales