* fichier : fvol.dgibi ************************************************************************ * NOM : FVOL * DESCRIPTION : Cas test : gravité : comparaison de deux méthodes * de projection VPI1 et VPI2 éléments P2/P1 ou Q2/Q1 * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 13/12/2002, version initiale * HISTORIQUE : v1, 13/12/2002, 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 ! ************************************************************************ * Insertion de procédures utilitaires ************************************************************************ * NOM : CALRESI * DESCRIPTION : * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 13/12/2002, version initiale * HISTORIQUE : v1, 13/12/2002, 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 ! ************************************************************************ * * 'DEBPROC' CALRESI ; 'ARGUMENT' rvx*'TABLE ' ; rv = rvx . 'EQEX' ; rvi = rv . 'INCO' ; rvr = rv . 'RESIDU' ; * freq1 : fréquence d'impression * freq2 : fréquence du stockage d'infos pour FILM et PHOTO * eps0 : Sortie de la boucle de EQEX si convergence freq1 = 'ENTIER' ('+' (rvx . 'ARG1') 0.001D0) ; freq2 = 'ENTIER' ('+' (rvx . 'ARG2') 0.001D0) ; eps0 = rvx . 'ARG3' ; 'SI' ('NON' ('EXISTE' rv 'CURRIT')) ; currit = 0 ; 'SINON' ; currit = rv . 'CURRIT' ; 'FINSI' ; currit = '+' currit 1 ; time0 = rv . 'PASDETPS' . 'TPS' ; un = rvi . 'UN' ; uex = rvr . 'UNEX' ; unm1 = rvr . 'UNM1' ; pn = 'NOMC' 'SCAL' (rvi . 'PRESSION') ; pn = ELNOPRES pn ; pex = rvr . 'PNEX' ; pex = ELNOPRES pex ; pnm1 = rvr . 'PNM1' ; pnm1 = ELNOPRES pnm1 ; * mmu = rvr . 'MMU' ; mmp = rvr . 'MMP' ; * * Calcul des résidus par rapport à la solution exacte * Pour la vitesse, on norme par 1 * Pour la pression, on norme par ||pexact|| * uinco = 'MOTS' 'UX' 'UY' ; uinco2 = 'MOTS' '1UN' '2UN' ; diffu = 'NOMC' uinco uinco2 ('-' un uex) ; resiu = 'XTY' diffu ('KOPS' mmu '*' diffu) uinco2 uinco2 ; pinco = 'MOTS' 'SCAL' ; pinco2 = 'MOTS' 'PN' ; diffp = 'NOMC' pinco pinco2 ('-' pn pex) ; pex2 = 'NOMC' pinco pinco2 pex ; resip = 'XTY' diffp ('KOPS' mmp '*' diffp) pinco2 pinco2 ; normp = 'XTY' pex2 ('KOPS' mmp '*' pex2) pinco2 pinco2 ; erru = '+' ('**' ('ABS' resiu) 0.5D0) 1.D-16 ; errp = '+' ('**' ('ABS' ('/' resip normp)) 0.5D0) 1.D-16 ; * * Calcul des erreurs relatives * diffru = 'NOMC' uinco uinco2 ('-' un unm1) ; * 'MESSAGE' 'un' ; * 'LISTE' un ; * 'MESSAGE' 'unm1' ; * 'LISTE' unm1 ; * 'MESSAGE' 'diffru' ; * 'LISTE' diffru ; resiru = 'XTY' diffru ('KOPS' mmu '*' diffru) uinco2 uinco2 ; diffrp = 'NOMC' pinco pinco2 ('-' pn pnm1) ; resirp = 'XTY' diffrp ('KOPS' mmp '*' diffrp) pinco2 pinco2 ; errrelu = '+' ('**' ('ABS' resiru) 0.5D0) 1.D-16 ; errrelp = '+' ('**' ('ABS' ('/' resirp normp)) 0.5D0) 1.D-16 ; * 'SI' ('EGA' (MODULO ('-' currit 1) freq1) 0) ; titmess = 'CHAINE' 'FORMAT' formflot 'It=' currit ' ; erru=' erru ' ; errp=' errp ' ; errrelu=' errrelu ' ; errrelp=' errrelp ; 'MESSAGE' titmess ; 'FINSI' ; rvr . 'IT' = 'ET' (rvr . 'IT') ('PROG' currit) ; rvr . 'TI' = 'ET' (rvr . 'TI') ('PROG' time0) ; rvr . 'ERU'= 'ET' (rvr . 'ERU') ('PROG' erru) ; rvr . 'ERP'= 'ET' (rvr . 'ERP') ('PROG' errp) ; rvr . 'ERRELU'= 'ET' (rvr . 'ERU') ('PROG' errrelu) ; rvr . 'ERRELP'= 'ET' (rvr . 'ERP') ('PROG' errrelp) ; * 'SI' ('EGA' (MODULO ('-' currit 1) freq2) 0) ; rvf = rv . 'FILM' ; dimtab = '+' ('DIME' rvf) 1 ; rvf . dimtab = 'TABLE' ; rvf . dimtab . 'IT' = currit ; rvf . dimtab . 'TI' = time0 ; rvf . dimtab . 'UN' = 'COPIER' un ; rvf . dimtab . 'PN' = 'COPIER' pn ; 'FINSI' ; * rvr . 'UNM1' = 'COPIER' un ; rvr . 'PNM1' = 'COPIER' pn ; rv . 'CURRIT' = currit ; mat1 chp1 = 'KOPS' 'MATRIK' ; 'RESPRO' mat1 chp1 ; * * End of procedure file CALRESI * 'FINPROC' ; ************************************************************************ * NOM : ELNOPRES * DESCRIPTION : * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 13/12/2002, version initiale * HISTORIQUE : v1, 13/12/2002, 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 ! ************************************************************************ * * 'DEBPROC' ELNOPRES ; 'ARGUMENT' pn*'CHPOINT ' ; * * Correction de la constante de pression * A enlever quand tout ira bien * pvoul = 'EXTRAIRE' pexact 'SCAL' pmp1 ; pcour = 'EXTRAIRE' pn 'SCAL' pmp1 ; pn = '+' pn ('-' pvoul pcour) ; * * * pn2 = 'KCHT' $mt 'SCAL' kpres pn ; 'RESPRO' pn2 ; * * End of procedure file ELNOPRES * 'FINPROC' ; ************************************************************************ * NOM : FILM * DESCRIPTION : Affiche sous forme d'animation des infos stockées * dans la table rvf * On peut préciser un indice de début, un indice de fin * et un pas pour n'afficher qu'une partie des informations * contenues dans la table. * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 13/12/2002, version initiale * HISTORIQUE : v1, 13/12/2002, 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 ! ************************************************************************ * * 'DEBPROC' FILM ; 'ARGUMENT' rvf*'TABLE ' ; 'ARGUMENT' ndebu/'ENTIER ' ; 'ARGUMENT' nfin/'ENTIER ' ; 'ARGUMENT' ninter/'ENTIER ' ; * * Un champ nul pour les déformées * dxmt = 'MANUEL' 'CHPO' mt 2 'UX' 0.D0 'UY' 0.D0 'NATURE' 'DISCRET'; * dimtab = 'DIME' rvf ; liv = 'ET' ('EXISTE' ndebu) ('EXISTE' nfin) ; 'SI' (liv) ; livok = 'ET' liv ('ET' ('<' ndebu nfin) ('ET' ('>EG' ndebu 1) ('EG' ndebu 1) ('' nraff 0) ; 'REPETER' bcl nraff ; _mt = 'CHANGER' mt 'QUAF' ; $mt = 'MODELISER' _mt 'NAVIER_STOKES' 'MACRO' ; mt = 'DOMA' $mt 'MAILLAGE' ; 'FIN' bcl ; 'FINSI' ; 'RESPRO' mt ; * * End of procedure file RAFFMAIL * 'FINPROC' ; ************************************************************************ * NOM : TRACCHML * DESCRIPTION : Trace un CHPOINT défini sur les centres des éléments * (valeur constante par élément) avec titre optionnel * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 04/11/2002, version initiale * HISTORIQUE : v1, 04/11/2002, 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 ! ************************************************************************ * * 'DEBPROC' TRACCHML ; 'ARGUMENT' chml*'CHPOINT ' ; 'ARGUMENT' tit/'MOT ' ; rescal = 'KCHA' $mt chml 'CHAM' ; tituap = 'CHAINE' tit ' ' titglob ; 'TRACER' rescal modbid 'TITR' tituap ; * * End of procedure file TRACCHML * 'FINPROC' ; ************************************************************************ * NOM : TRACCHPO * DESCRIPTION : Tracé d'un chpoint avec titre optionnel. * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 14/10/2002, version initiale * HISTORIQUE : v1, 14/10/2002, 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 ! ************************************************************************ * * 'DEBPROC' TRACCHPO ; 'ARGUMENT' KK*'ENTIER' ; 'ARGUMENT' pn*'CHPOINT ' ; 'ARGUMENT' tit/'MOT ' ; 'SI' (EGA KK 0); KLIK = 'NCLK'; 'SINON' ; KLIK =TEXT ' ' ; 'FINSI'; 'SI' ('EXISTE' tit) ; titpn = 'CHAINE' 'FORMAT' formflot tit titglob ; 'SINON' ; titpn = 'CHAINE' 'FORMAT' formflot 'PRES' titglob ; 'FINSI' ; rescal = pn ; 'TRACER' rescal mt mt 'TITR' titpn nbisov KLIK; * * End of procedure file TRACCHPO * 'FINPROC' ; ************************************************************************ * NOM : TRACVIT * DESCRIPTION : Trace un champ vectoriel sous forme de flèches avec * titre optionnel. * On peut préciser une échelle pour les vitesses. Si on ne * la précise pas, elle est calculée automatiquement * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 14/10/2002, version initiale * HISTORIQUE : v1, 14/10/2002, 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 ! ************************************************************************ * * 'DEBPROC' TRACVIT ; 'ARGUMENT' KK*'ENTIER' ; 'ARGUMENT' vit*'CHPOINT ' ; 'ARGUMENT' tit/'MOT ' ; 'ARGUMENT' echvit/'FLOTTANT' ; ladens = ('**' ('/' ('MESURE' mt) ('NBEL' mt)) ('/' 1.D0 ('VALEUR' 'DIME'))) ; 'SI' (EGA KK 0); KLIK = 'NCLK'; 'SINON' ; KLIK =TEXT ' ' ; 'FINSI'; 'SI' ('NON' ('EXISTE' echvit)) ; echvit = 'MAXIMUM' vit 'ABS' ; 'SINON' ; echvit = 'ABS' echvit ; 'FINSI' ; 'SI' ('<' echvit 1.D-30) ; echvit = 1.D0 ; 'FINSI' ; uref = '/' ('*' ladens 2.0D0) echvit ; vecvit = 'VECTEUR' vit uref 'UX' 'UY' 'JAUN' ; 'SI' ('EXISTE' tit) ; titvit = 'CHAINE' 'FORMAT' formflot tit ' echvit=' echvit titglob ; 'SINON' ; titvit = 'CHAINE' 'FORMAT' formflot 'VIT echvit=' echvit titglob ; 'FINSI' ; 'TRACER' vecvit mt 'TITR' titvit KLIK ; * * End of procedure file TRACVIT * 'FINPROC' ; * ************************************************************************ misaup = VRAI ; post = VRAI ; interact= VRAI ; graph = VRAI ; graph = FAUX ; 'OPTION' 'DIME' 2 'ELEM' 'QUA4' ; 'OPTION' 'ISOV' 'SULI' ; nbisov = 15 ; 'SI' ('NON' interact) ; 'OPTION' 'TRAC' 'PSC' ; 'SINON' ; 'OPTION' 'TRAC' 'X' ; 'FINSI' ; formflot ='(1PE9.2)' ; ****************************************************************** * * Paramètres * * * Valeurs possibles : * ireso = 1 : méthode de projection VPI2 * ireso = 2 : méthode de projection VPI1 * typmail = 'TRIG' : maillage de triangles * typmail = 'CARR' : maillage de carrés * iraff = i : raffinement de maillage i fois par dichotomie *lreso = 'LECT' 1 2 ; *lmail = 'MOTS' 'TRIG' 'CARR' ; *lraff = 'LECT' 0 PAS 1 3 ; lreso = 'LECT' 1 2 ; lmail = 'MOTS' 'TRIG' 'CARR'; lraff = 'LECT' 2 ; lechvit = prog 7.e-4 7.e-4 5.e-5 5.e-5; idsauv = 'CHAINE' 'projection' ; titsauv = 'CHAINE' '/test4/gounand/validation/' idsauv '.sauv' ; * * Fin des paramètres * ****************************************************************** 'SI' ('OU' ('NON' post) misaup) ; res = 'TABLE' ; * * 'REPETER' jreso ('DIME' lreso) ; ireso = 'EXTRAIRE' lreso &jreso ; res . ireso = 'TABLE' ; * 'REPETER' jmail ('DIME' lmail) ; typmail = 'EXTRAIRE' lmail &jmail ; res . ireso . typmail = 'TABLE' ; * mt = MAILLAGE typmail ; * 'REPETER' jraff ('DIME' lraff) ; iraff = 'EXTRAIRE' lraff &jraff ; res . ireso . typmail . iraff = 'TABLE' ; ****************************************************************** * * Paramètres numériques * discr = 'QUAF' ; kpres = 'MSOMMET' ; *kpres = 'CENTREP1'; ksupg = 'CENTREE' ; * 'SI' ('EGA' ireso 1) ; kmeth = 'VPI1' ; 'FINSI' ; 'SI' ('EGA' ireso 2) ; kmeth = 'VPI2' ; 'FINSI' ; * titre global pour les dessins titglob = 'CHAINE' ' ' typmail ' ' kmeth ' raf=' iraff ; * titdgibi = 'CHAINE' 'Cas test gravite seule' titglob ; 'MESSAGE' ('CHAINE' '********************************') ; 'MESSAGE' titdgibi ; 'MESSAGE' ('CHAINE' '********************************') ; mt = RAFFMAIL mt iraff ; * Tracé *'SI' (graph) ; * titgeo = 'CHAINE' 'Maillage ' 'NBPO=' ('NBNO' mt) * ' NBELEM=' ('NBEL' mt) titglob ; * 'TRACER' mt 'TITRE' titgeo ; *'FINSI' ; * cmt = 'CONTOUR' mt ; _mt = 'CHANGER' mt 'QUAF' ; _cmt = 'CHANGER' cmt 'QUAF' ; 'ELIMINATION' ('ET' _mt _cmt) 1.D-5 ; $mt = 'MODELISER' _mt 'NAVIER_STOKES' discr ; $cmt = 'MODELISER' _cmt 'NAVIER_STOKES' discr ; mp1 = 'ELEM' ('DOMA' $mt kpres) 1 ; pmp1 = 'POIN' mp1 1 ; * *========================================================== * Définition des équations vitesse, pression *========================================================== * * * Paramètres physiques et pas de temps nu = 1.D0 ; alph = -70.D0 ; gx = 'COS' alph ; gy = 'SIN' alph ; *gx=0. ; gy = -1. ; g = gx gy ; ax = coor 1 mt ; ay = coor 2 mt ; fi1=(ax**5.) + (((ax*ay)**3.)*ax) + (((ax*ay)**2.)*ay) + (ay**4.); fi1=ax ; fi1 = kcht $mt scal sommet fi1 ; *g = kops 'GRADS' fi1 $mt; *trace (exco g ux); *trace (exco g uy); *opti donn 5 ; * Solution exact * Vitesse uexact = 'KCHT' $mt 'VECT' 'SOMMET' (0.D0 0.D0) ; mailp = 'DOMA' $mt kpres ; xmp ymp = 'COORDONNEE' mailp ; pexact = 'KCHT' $mt 'SCAL' kpres ('+' ('*' xmp gx) ('*' ymp gy)) ; 'SI' (graph) ; rescal = uexact ; tituap = 'CHAINE' 'Vitesse exacte'; TRACVIT 1 rescal tituap ; rescal = ELNOPRES pexact ; tituap = 'CHAINE' 'Pression exacte'; TRACCHPO 1 rescal tituap ; 'FINSI' ; * * Paramètres numériques dt = 1.e-3 ; npdt = 10 ; * nimpr = 1 ; nfilm = 1 ; nresi = 1.D-6 ; * 'TEMPS' 'ZERO' ; ****************************************************************** * * Paramètres * * Equations en vitesse * ITMA : Nombre de pas de temps * NITER : Nombre d'itérations internes * OMEGA : Facteur de relaxation des itérations internes * FIDT : Nombre maximum de pas de temps * rv = 'EQEX' 'ITMA' npdt 'NITER' 1 'FIDT' 1000 ; rv = 'EQEX' rv 'OPTI' 'EF' ksupg 'IMPL' kpres 'ZONE' $mt 'OPER' 'CALRESI' nimpr nfilm nresi 'OPTI' 'EF' ksupg 'IMPL' kpres 'ZONE' $mt 'OPER' 'NS' 1. 'UN' nu g 'INCO' 'UN' * 'ZONE' $mt 'OPER' 'TOIMP' g 'INCO' 'UN' 'OPTI' 'EF' ksupg 'IMPL' kpres 'ZONE' $mt 'OPER' 'DFDT' 1.D0 'UN' dt 'INCO' 'UN' ; * * Equation en pression avec condition de Dirichlet en un point * * Methode projection sans iterations internes rvp = 'EQEX' 'OPTI' 'EF' ksupg 'IMPL' kpres 'ZONE' $mt 'OPER' 'KBBT' -1.D0 'INCO' 'UN' 'PN' 'CLIM' 'PN' 'TIMP' mp1 ('EXTRAIRE' pexact 'SCAL' pmp1) ; * * Conditions aux limites en vitesse * rv = 'EQEX' rv 'CLIM' 'UN' 'UIMP' ('DOMA' $cmt 'SOMMET') 0.D0 'UN' 'VIMP' ('DOMA' $cmt 'SOMMET') 0.D0 ; * * Initialisation des champs (table INCO) rv . 'INCO' = TABLE 'INCO' ; rv . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' (0.D0 0.D0) ; rv . 'INCO' . 'PN' = 'KCHT' $mt 'SCAL' kpres 0.D0 ; rv . 'INCO' . 'PRESSION' = 'NOMC' 'PN' ('KCHT' $mt 'SCAL' kpres 0.D0) ; * * Champs supplémentaires pour la procédure CALRESI rv . 'RESIDU' = 'TABLE' 'RESIDU' ; * Champs rv . 'RESIDU' . 'UNM1' = 'COPI' rv . 'INCO' . 'UN' ; rv . 'RESIDU' . 'PNM1' = 'NOMC' 'SCAL' (rv . 'INCO' . 'PN') ; rv . 'RESIDU' . 'UNEX' = 'COPI' uexact ; rv . 'RESIDU' . 'PNEX' = 'COPI' pexact ; * Matrices masse pour le calcul des résidus rk = 'EQEX' 'OPTI' 'EF' 'CENTREE' 'IMPL' 'ZONE' $mt 'OPER' 'DFDT' 1.D0 'UN' 1.D0 'INCO' 'UN' ; rk . 'INCO' = TABLE 'INCO' ; rk . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' (0.D0 0.D0) ; toto mm = 'DFDT' (rk . '1DFDT') ; rv . 'RESIDU' . 'MMU' = mm ; $mt2 = 'MODELISER' _mt 'NAVIER_STOKES' 'LINE' ; rk = 'EQEX' 'OPTI' 'EF' 'CENTREE' 'IMPL' 'ZONE' $mt2 'OPER' 'DFDT' 1.D0 'PN' 1.D0 'INCO' 'PN' ; rk . 'INCO' = TABLE 'INCO' ; rk . 'INCO' . 'PN' = 'KCHT' $mt2 'SCAL' 'SOMMET' 0.D0 ; toto mm = 'DFDT' (rk . '1DFDT') ; rv . 'RESIDU' . 'MMP' = mm ; * Erreurs rv . 'RESIDU' . 'IT' = 'PROG' ; rv . 'RESIDU' . 'TI' = 'PROG' ; rv . 'RESIDU' . 'ERU' = 'PROG' ; rv . 'RESIDU' . 'ERP' = 'PROG' ; rv . 'RESIDU' . 'ERRELU' = 'PROG' ; rv . 'RESIDU' . 'ERRELP' = 'PROG' ; * Infos supplémentaires pour les films rv . 'FILM' = 'TABLE' ; * Méthode d'inversion du problème en vitesse rv . 'METHINV' . 'TYPINV' = 1 ; rv . 'METHINV' . 'IMPINV' = 0 ; rv . 'METHINV' . 'FCPRECT' = 1 ; rv . 'METHINV' . 'FCPRECI' = 1 ; * * Méthode d'inversion du problème en pression rvp . 'METHINV' . 'TYPINV' = 1 ; rvp . 'METHINV' . 'IMPINV' = 0 ; rvp . 'METHINV' . 'FCPRECT' = 1 ; rvp . 'METHINV' . 'FCPRECI' = 1 ; * * Couplage vitesse/pression : Méthode de projection rv . 'PROJ' = rvp ; rv.'TYPROJ'=kmeth ; * *========================================================== * Résolution *========================================================== * EXEC rv ; TABTPS = TEMP 'NOEC'; tcpu = TABTPS.'TEMPS_CPU'.'INITIAL'; tcpus = '/' ('FLOTTANT' tcpu) 100.D0 ; rvi = rv . 'INCO' ; rvr = rv . 'RESIDU' ; * * Résultats intéressants dans la table res * res . ireso . typmail . iraff . 'TCPU' = tcpus ; res . ireso . typmail . iraff . 'MAILLAGE' = mt ; res . ireso . typmail . iraff . 'MODELE' = $mt ; res . ireso . typmail . iraff . 'IT' = rvr . 'IT' ; res . ireso . typmail . iraff . 'ERU' = rvr . 'ERU' ; res . ireso . typmail . iraff . 'ERP' = rvr . 'ERP' ; res . ireso . typmail . iraff . 'ERU' = rvr . 'ERRELU' ; res . ireso . typmail . iraff . 'ERP' = rvr . 'ERRELP' ; res . ireso . typmail . iraff . 'VIT' = rvi . 'UN' ; * * Pression pe = 'NOMC' 'SCAL' (rvi . 'PRESSION') ; res . ireso . typmail . iraff . 'PRES' = pe ; res . ireso . typmail . iraff . 'FILM' = rv . 'FILM' ; Si graph ; tituap = 'CHAINE' 'Vitesse' ; TRACVIT 1 (rvi . 'UN') un tituap ; tituap = 'CHAINE' 'Pression' ; TRACCHPO 1 (ELNOPRES pe) tituap ; *tituap = 'CHAINE' 'Pression' ; *TRACCHPO ('-' (ELNOPRES pe) (ELNOPRES pexact)) tituap ; *film (rv . 'FILM') ; photo (rv . 'FILM') ; Finsi ; echvit = Maxi ((PSCAL (rvi . 'UN') (MOTS 'UX' 'UY') (rvi . 'UN') (MOTS 'UX' 'UY'))**0.5); nbk = &jmail + ((dime lreso)*(&jreso - 1)); mess ' ECHVIT= ' ECHVIT ' nbk=' nbk (extr lechvit nbk); mess 'jraff= ' &jraff ' jmail=' &jmail ' jreso=' &jreso; Si (ECHVIT > (extr lechvit nbk)); erreur 5 ; Finsi ; 'FIN' jraff ; 'FIN' jmail ; 'FIN' jreso ; 'FIN' jchoi ; 'SI' ('NON' misaup) ; 'OPTION' 'SAUV' titsauv ; 'SAUVER' ; 'FINSI' ; 'FINSI' ; * * *========================================================== * Post traitement *========================================================== 'SI' ('OU' post misaup) ; 'SI' ('NON' misaup) ; 'OPTION' 'REST' titsauv ; 'RESTITUER' ; 'FINSI' ; * * Calcul des ordres * 'REPETER' jchoi ('DIME' lchoi) ; ichoi = 'EXTRAIRE' lchoi &jchoi ; * 'REPETER' jreso ('DIME' lreso) ; ireso = 'EXTRAIRE' lreso &jreso ; * 'REPETER' jmail ('DIME' lmail) ; typmail = 'EXTRAIRE' lmail &jmail ; * lechloc = 'PROG' ; ltcpu = 'PROG' ; lerrl2u = 'PROG' ; lerrl2p = 'PROG' ; lxreatt = 'PROG' ; 'REPETER' jraff ('DIME' lraff) ; iraff = 'EXTRAIRE' lraff &jraff ; * ****************************************************************** * * Paramètres numériques * 'SI' ('EGA' ichoi 1) ; discr = 'MACRO' ; kpres = 'CENTREP1' ; 'FINSI' ; 'SI' ('EGA' ichoi 2) ; discr = 'QUAF' ; kpres = 'CENTREP1' ; 'FINSI' ; 'SI' ('EGA' ichoi 3) ; discr = 'QUAF' ; kpres = 'MSOMMET' ; 'FINSI' ; 'SI' ('EGA' idcen 0) ; ksupg = 'CENTREE' ; 'FINSI' ; 'SI' ('EGA' idcen 1) ; ksupg = 'SUPG' ; 'FINSI' ; * 'SI' ('EGA' ireso 1) ; kmeth = 'IMPL' ; 'FINSI' ; 'SI' ('EGA' ireso 2) ; kmeth = 'MOT' 'PROJ' ; 'FINSI' ; 'SI' ('EGA' ireso 3) ; kmeth = 'MOT' 'PRIT' ; 'FINSI' ; * titre global pour les dessins titglob = 'CHAINE' ' ' typmail ' ' kmeth ' ' discr ' ' kpres ' ' ksupg ' raf=' iraff ; titglo2 = 'CHAINE' ' ' typmail ' ' kmeth ' ' discr ' ' kpres ' ' ksupg ; tcpu = res . ichoi . ireso . typmail . iraff . 'TCPU' ; mt = res . ichoi . ireso . typmail . iraff . 'MAILLAGE' ; $mt = res . ichoi . ireso . typmail . iraff . 'MODELE' ; lit = res . ichoi . ireso . typmail . iraff . 'IT' ; leru = res . ichoi . ireso . typmail . iraff . 'ERU' ; lerp = res . ichoi . ireso . typmail . iraff . 'ERP' ; un = res . ichoi . ireso . typmail . iraff . 'VIT' ; pn = res . ichoi . ireso . typmail . iraff . 'PRES' ; tfilm = res . ichoi . ireso . typmail . iraff . 'FILM' ; evcf = res . ichoi . ireso . typmail . iraff . 'EVCF' ; xrea = res . ichoi . ireso . typmail . iraff . 'XREATTAC' ; * Quelques graphiques *xeveru = lit ; *yeveru = '/' ('LOG' leru) ('LOG' 10.D0) ; *everu = 'EVOL' 'MANU' 'Iteration' xeveru 'Log Err L2 U' yeveru ; *tituap = 'CHAINE' 'Conv. vitesse' titglob ; *'DESSIN' everu 'TITR' tituap ; *xeverp = lit ; *yeverp = '/' ('LOG' lerp) ('LOG' 10.D0) ; *everp = 'EVOL' 'MANU' 'Iteration' xeverp 'Log Err L2 P' yeverp ; *tituap = 'CHAINE' 'Conv. pression' titglob ; *'DESSIN' everp 'TITR' tituap ; * Champ de déformée (pour l'échelle) xmt ymt = 'COORDONNEE' ('DOMA' $mt 'SOMMET') ; dxmt = 'ET' ('NOMC' 'UX' ('*' xmt 0.D0) 'NATURE' 'DISCRET') ('NOMC' 'UY' ('*' ymt 5.D0) 'NATURE' 'DISCRET') ; orig = 'FORME' ; 'FORME' dxmt ; tituap = 'CHAINE' 'Vitesse' ; TRACVIT 0 un tituap ; tituap = 'CHAINE' 'Pression' ; TRACCHPO 0 pn tituap ; *film tfilm ; 'FORME' orig ; 'DESSIN' evcf 'TITR' 'EVCF' 'TITX' 'X' 'TITY' 'CF' ; chevcf = 'CHAINE' 'Abscisse reattac =' xrea ; 'MESSAGE' chevcf ; 'OPTION' 'DONN' 5 ; * 'SI' ('>' ('DIME' lraff) 1) ; echloc = '**' ('/' ('MESURE' mt) ('NBEL' mt)) ('/' 1.D0 ('VALEUR' 'DIME')) ; lechloc = 'ET' lechloc ('PROG' echloc) ; ltcpu = 'ET' ltcpu ('PROG' tcpu) ; lerrl2u = 'ET' lerrl2u ('PROG' ('EXTRAIRE' leru ('DIME' leru))) ; lerrl2p = 'ET' lerrl2p ('PROG' ('EXTRAIRE' lerp ('DIME' lerp))) ; lxreatt = 'ET' lxreatt ('PROG' xrea) ; 'FINSI' ; 'FIN' jraff ; * 'SI' ('>' ('DIME' lraff) 1) ; lechloc = '/' ('LOG' lechloc) ('LOG' 10.D0) ; ltcpu = '/' ('LOG' ltcpu) ('LOG' 10.D0) ; lerrl2u = '/' ('LOG' lerrl2u) ('LOG' 10.D0) ; lerrl2p = '/' ('LOG' lerrl2p) ('LOG' 10.D0) ; dimevo = 'DIME' lechloc ; evtcpu = 'EVOL' 'MANU' lechloc ltcpu ; everru = 'EVOL' 'MANU' lechloc lerrl2u ; everrp = 'EVOL' 'MANU' lechloc lerrl2p ; evxrea = 'EVOL' 'MANU' lechloc lxreatt ; tab = 'TABLE' ; tab . 'TITRE' = 'TABLE' ; tab . 1 = 'CHAINE' 'MARQ TRIB ' ; tab . 'TITRE'. 1 = 'CHAINE' 'Tps CPU (s)' ; evterrt = evtcpu ; tituap = 'CHAINE' 'Tps CPU' titglo2 ; 'DESSIN' evterrt 'LEGE' 'TITR' tituap 'TITX' 'log h' 'TITY' 'log tcpu' tab ; tab = 'TABLE' ; tab . 'TITRE' = 'TABLE' ; tab . 1 = 'CHAINE' 'MARQ TRIB ' ; tab . 'TITRE'. 1 = 'CHAINE' 'Err. calculée' ; evterru = everru ; tituap = 'CHAINE' 'Err L2 U' titglo2 ; 'DESSIN' evterru 'LEGE' 'TITR' tituap 'TITX' 'log h' 'TITY' 'log errl2' tab ; tab = 'TABLE' ; tab . 'TITRE' = 'TABLE' ; tab . 1 = 'CHAINE' 'MARQ TRIB ' ; tab . 'TITRE'. 1 = 'CHAINE' 'Err. calculée' ; evterrp = everrp ; tituap = 'CHAINE' 'Err L2 P' titglo2 ; 'DESSIN' evterrp 'LEGE' 'TITR' tituap 'TITX' 'log h' 'TITY' 'log errl2' tab ; tab = 'TABLE' ; tab . 'TITRE' = 'TABLE' ; tab . 1 = 'CHAINE' 'MARQ TRIB ' ; tab . 'TITRE'. 1 = 'CHAINE' 'Xreattac' ; evtxrea = evxrea ; tituap = 'CHAINE' 'X reattac' titglo2 ; 'DESSIN' evtxrea 'LEGE' 'TITR' tituap 'TITX' 'log h' 'TITY' 'X reattac' tab ; * res . ichoi . ireso . typmail . 'ORDU' = orderru ; * res . ichoi . ireso . typmail . 'ORDP' = orderrp ; * res . ichoi . ireso . typmail . 'LMIERL2U' = 'MINIMUM' lerrl2u ; * res . ichoi . ireso . typmail . 'LMIERL2P' = 'MINIMUM' lerrl2p ; 'FINSI' ; 'FIN' jmail ; 'FIN' jreso ; 'FIN' jchoi ; * * 2eme partie du post-traitement : affichage des ordres et min des * erreurs L2 de façon claire avant inclusion dans LateX * On affiche également vitesse et pression sur le maillage le plus fin * *'SI' ('>' ('DIME' lraff) 1) ; ** *tittab = 'CHAINE' 'Methode'/1 'Ord. u '/31 'Ord. p'/41 * 'Lminerru'/51 'Lminerrp'/61 ; *optecho = 'VALEUR' 'ECHO' ; *'OPTION' 'ECHO' 0 ; *'MESSAGE' tittab ; ** *'REPETER' jreso ('DIME' lreso) ; *ireso = 'EXTRAIRE' lreso &jreso ; ** *'REPETER' jmail ('DIME' lmail) ; *typmail = 'EXTRAIRE' lmail &jmail ; ** *'REPETER' jchoi ('DIME' lchoi) ; *ichoi = 'EXTRAIRE' lchoi &jchoi ; ** ** Paramètres numériques ** *'SI' ('EGA' ichoi 1) ; * discr = 'MACRO' ; * kpres = 'CENTREP1' ; *'FINSI' ; *'SI' ('EGA' ichoi 2) ; * discr = 'QUAF' ; * kpres = 'CENTREP1' ; *'FINSI' ; *'SI' ('EGA' ichoi 3) ; * discr = 'QUAF' ; * kpres = 'MSOMMET' ; *'FINSI' ; *'SI' ('EGA' idcen 0) ; * ksupg = 'CENTREE' ; *'FINSI' ; *'SI' ('EGA' idcen 1) ; * ksupg = 'SUPG' ; *'FINSI' ; ** *'SI' ('EGA' ireso 1) ; * kmeth = 'IMPL' ; *'FINSI' ; *'SI' ('EGA' ireso 2) ; * kmeth = 'MOT' 'PROJ' ; *'FINSI' ; *'SI' ('EGA' ireso 3) ; * kmeth = 'MOT' 'PRIT' ; *'FINSI' ; ** titre global pour les dessins *titglob = 'CHAINE' ' ' kmeth ' ' typmail ' ' discr ' ' kpres ; *ordu = res . ichoi . ireso . typmail . 'ORDU' ; *ordp = res . ichoi . ireso . typmail . 'ORDP' ; *mleu = res . ichoi . ireso . typmail . 'LMIERL2U' ; *mlep = res . ichoi . ireso . typmail . 'LMIERL2P' ; *formf ='(F9.2)' ; *titord = 'CHAINE' 'FORMAT' formf titglob/1 ordu/31 ordp/41 * mleu/51 mlep/61 ; *'MESSAGE' titord ; **'SI' (graph) ; * maxraff = 'DIME' lraff ; * imraff = 'EXTRAIRE' lraff maxraff ; * mt = res . ichoi . ireso . typmail . imraff . 'MAILLAGE' ; * $mt = res . ichoi . ireso . typmail . imraff . 'MODELE' ; * rescal = res . ichoi . ireso . typmail . imraff . 'VIT' ; * tituap = 'CHAINE' 'Vitesse maillage fin' ; * TRACVIT rescal tituap ; * rescal = res . ichoi . ireso . typmail . imraff . 'PRES' ; * tituap = 'CHAINE' 'Pression maillage fin'; * TRACPRES rescal tituap ; **'FINSI' ; *'FIN' jchoi ; *'FIN' jmail ; *'FIN' jreso ; ** *'OPTION' 'ECHO' optecho ; **'SI' ('>' ('DIME' lraff) 1) ; *'FINSI' ; *'SI' (post) ; 'FINSI' ; 'OPTION' 'DONN' 5 ; * * End of dgibi file MARCHE_DESC * 'FIN' ;