* 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 ' ; 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 = 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|| * erru = '+' ('**' ('ABS' resiu) 0.5D0) 1.D-16 ; errp = '+' ('**' ('ABS' ('/' resip normp)) 0.5D0) 1.D-16 ; * * Calcul des erreurs relatives * * 'MESSAGE' 'un' ; * 'LISTE' un ; * 'MESSAGE' 'unm1' ; * 'LISTE' unm1 ; * 'MESSAGE' 'diffru' ; * 'LISTE' diffru ; 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' ; * 'SI' ('EGA' (MODULO ('-' currit 1) freq2) 0) ; rvf = rv . 'FILM' ; 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 ; '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) ; * * * '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 * 'NATURE' 'DISCRET'; * liv = 'ET' ('EXISTE' ndebu) ('EXISTE' nfin) ; 'SI' (liv) ; livok = 'ET' liv ('ET' ('<' ndebu nfin) ('ET' ('>EG' ndebu 1) ('<EG' nfin dimtab)) ) ; 'FINSI' ; lviv = 'ET' ('EXISTE' ninter) ('EXISTE' livok) ; 'SI' (lviv) ; * On corrige nfin pour que MODULO (- nfin ndebu) ninter =0 npouet = '/' ('-' nfin ndebu) ninter ; nfin = '+' ndebu ('*' npouet ninter) ; 'FINSI' ; 'SI' (liv) ; 'SI' (livok) ; 'SI' (lviv) ; 'SINON' ; 'FINSI' ; 'SINON' ; 'ERREUR' 'Bornes de l"intervalle incorrectes' ; 'FINSI' ; 'SINON' ; 'FINSI' ; * * Détermination de l'échelle de vitesse * idimt = 'EXTRAIRE' lindic &iindic ; lavit = rvf . idimt . 'UN' ; 'FIN' iindic ; echvit = 'MAXIMUM' lemax 'ABS' ; uref = '/' ('*' ladens 4.0D0) echvit ; * * Animation de la vitesse * tabvit = 'TABLE' ; idimt = 'EXTRAIRE' lindic &iindic ; lavit = rvf . idimt . 'UN' ; * latem = rvf . idimt . 'TN' ; vecvit = 'VECTEUR' lavit uref 'UX' 'UY' 'JAUN' ; * defvit = 'DEFORME' mt dxmt 0.D0 vecvit latem ; defvit = 'DEFORME' mt dxmt 0.D0 vecvit ; tabvit . &iindic = defvit ; 'FIN' iindic ; titvit = 'CHAINE' 'FORMAT' formflot 'Vitesse ; echvit=' echvit titglob ; 'OUBLIER' tabvit ; 'MENAGE' ; * * Animation de la pression * tabpre = 'TABLE' ; idimt = 'EXTRAIRE' lindic &iindic ; lapre = ELNOPRES (rvf . idimt . 'PN') ; * lapre = ('-' (ELNOPRES (rvf . idimt . 'PN')) (elnopres pexact)) ; defpre = 'DEFORME' mt dxmt 0.D0 lapre ; tabpre . &iindic = defpre ; 'FIN' iindic ; titpre = 'CHAINE' 'FORMAT' formflot 'Pression' titglob ; 'OUBLIER' tabpre ; 'MENAGE' ; 'OPTION' 'ISOV' isovorig ; * * End of procedure file FILM * 'FINPROC' ; ************************************************************************ * NOM : MAILLAGE * 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' MAILLAGE ; * * Paramètres * * * Valeurs possibles : * typmail = 'TRIG' : maillage de triangles * typmail = 'CARR' : maillage de carrés * * Génération du maillage * pA = 0.0D0 0.D0 ; pB = 1.D0 0.D0 ; pC = 1.D0 1.D0 ; pD = 0.D0 1.D0 ; nX = 3 ; nY = 3 ; *nX = 1 ; nY = 1 ; * bas = 'DROIT' nX pA pB ; dro = 'DROIT' nY pB pC ; hau = 'DROIT' nX pC pD ; gau = 'DROIT' nY pD pA ; pourt = 'ET' ('ET' ('ET' bas dro) hau) gau ; 'SI' ('EGA' typmail 'TRIG') ; 'OPTION' 'ELEM' 'TRI3' ; mt = 'SURFACE' pourt 'PLAN' ; 'FINSI' ; 'SI' ('EGA' typmail 'CARR') ; 'OPTION' 'ELEM' 'QUA4' ; mt = 'DALLER' bas dro hau gau 'PLAN' ; ampbruit = (0.1 * ladens) ; cnt = 'CONTOUR' mt ; pmt = 'CHANGER' mt 'POI1' ; pcnt= 'CHANGER' cnt 'POI1' ; brbl1 = 'BRUIT' 'BLAN' 'GAUS' 0.D0 ampbruit inmt ; brbl2 = 'BRUIT' 'BLAN' 'GAUS' 0.D0 ampbruit inmt ; 'FINSI' ; 'RESPRO' mt ; * * End of procedure file MAILLAGE * 'FINPROC' ; ************************************************************************ * NOM : MODULO * DESCRIPTION : Calcule un entier modulo un autre... * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 15/10/2002, version initiale * HISTORIQUE : v1, 15/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' MODULO ; 'ARGUMENT' i*'ENTIER' j*'ENTIER' ; 'SI' ('EGA' j 0) ; 'MESSAGE' 'Impossible de faire modulo 0' ; 'ERREUR' 5 ; 'SINON' ; k=i '/' j ; mod=i '-' ( k '*'j ) ; 'RESPRO' mod ; 'FINSI' ; * * End of procedure file MODULO * 'FINPROC' ; ************************************************************************ * NOM : PHOTO * DESCRIPTION : Trace des infos stockées dans la table rvf * (comme la procédure FILM mais sans faire d'animations) * 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' PHOTO ; 'ARGUMENT' rvf*'TABLE ' ; 'ARGUMENT' ndebu/'ENTIER ' ; 'ARGUMENT' nfin/'ENTIER ' ; 'ARGUMENT' ninter/'ENTIER ' ; * * Un champ nul pour les déformées * 'NATURE' 'DISCRET'; * liv = 'ET' ('EXISTE' ndebu) ('EXISTE' nfin) ; 'SI' (liv) ; livok = 'ET' liv ('ET' ('<' ndebu nfin) ('ET' ('>EG' ndebu 1) ('<EG' nfin dimtab)) ) ; 'FINSI' ; lviv = 'ET' ('EXISTE' ninter) ('EXISTE' livok) ; 'SI' (lviv) ; * On corrige nfin pour que MODULO (- nfin ndebu) ninter =0 npouet = '/' ('-' nfin ndebu) ninter ; nfin = '+' ndebu ('*' npouet ninter) ; 'FINSI' ; 'SI' (liv) ; 'SI' (livok) ; 'SI' (lviv) ; 'SINON' ; 'FINSI' ; 'SINON' ; 'ERREUR' 'Bornes de l"intervalle incorrectes' ; 'FINSI' ; 'SINON' ; 'FINSI' ; * * Détermination de l'échelle de vitesse * idimt = 'EXTRAIRE' lindic &iindic ; lavit = rvf . idimt . 'UN' ; 'FIN' iindic ; echvit = 'MAXIMUM' lemax 'ABS' ; uref = '/' ('*' ladens 2.0D0) echvit ; * * Photos de la vitesse * idimt = 'EXTRAIRE' lindic &iindic ; letem = rvf . idimt . 'TI' ; lavit = rvf . idimt . 'UN' ; titvit = 'CHAINE' 'FORMAT' formflot 'Vitesse ; tps=' letem ; * TRACVIT lavit titvit echvit ; TRACVIT 0 lavit titvit ; 'FIN' iindic ; * * Photos de la pression * idimt = 'EXTRAIRE' lindic &iindic ; letem = rvf . idimt . 'TI' ; lapre = ELNOPRES (rvf . idimt . 'PN') ; titpre = 'CHAINE' 'FORMAT' formflot 'Pression ; tps=' letem ; TRACCHPO 0 lapre titpre ; 'FIN' iindic ; * * End of procedure file PHOTO * 'FINPROC' ; ************************************************************************ * NOM : RAFFMAIL * DESCRIPTION : * * * * 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' RAFFMAIL ; * * Paramètres * * * Valeurs possibles : * mt : la maillage à raffiner * nraff = i : raffinement de maillage i fois par dichotomie 'ARGUMENT' mt*'MAILLAGE' ; 'ARGUMENT' nraff*'ENTIER ' ; 'SI' ('>' nraff 0) ; 'REPETER' bcl nraff ; _mt = 'CHANGER' mt 'QUAF' ; $mt = 'MODELISER' _mt 'NAVIER_STOKES' 'MACRO' ; '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 ' ; 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 ' ; 'SI' ('EXISTE' tit) ; titpn = 'CHAINE' 'FORMAT' formflot tit titglob ; 'SINON' ; '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' echvit/'FLOTTANT' ; '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' '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 ; idsauv = 'CHAINE' 'projection' ; * * Fin des paramètres * ****************************************************************** 'SI' ('OU' ('NON' post) misaup) ; res = 'TABLE' ; * * ireso = 'EXTRAIRE' lreso &jreso ; res . ireso = 'TABLE' ; * typmail = 'EXTRAIRE' lmail &jmail ; res . ireso . typmail = 'TABLE' ; * mt = MAILLAGE typmail ; * 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 ; * *========================================================== * 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 ; fi1=(ax**5.) + (((ax*ay)**3.)*ax) + (((ax*ay)**2.)*ay) + (ay**4.); fi1=ax ; *g = kops 'GRADS' fi1 $mt; *trace (exco g ux); *trace (exco g uy); *opti donn 5 ; * Solution exact * Vitesse 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' 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 ; * * Equation en pression avec condition de Dirichlet en un point * * Methode projection sans iterations internes 'CLIM' 'PN' 'TIMP' mp1 ('EXTRAIRE' pexact 'SCAL' pmp1) ; * * Conditions aux limites en vitesse * rv = 'EQEX' rv 'CLIM' ; * * Initialisation des champs (table INCO) rv . 'INCO' = TABLE 'INCO' ; rv . 'INCO' . 'PRESSION' = 'NOMC' 'PN' * * Champs supplémentaires pour la procédure CALRESI rv . 'RESIDU' = 'TABLE' 'RESIDU' ; * Champs * Matrices masse pour le calcul des résidus rk . 'INCO' = TABLE 'INCO' ; rv . 'RESIDU' . 'MMU' = mm ; $mt2 = 'MODELISER' _mt 'NAVIER_STOKES' 'LINE' ; rk . 'INCO' = TABLE 'INCO' ; rv . 'RESIDU' . 'MMP' = mm ; * Erreurs * 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.'TYPROJ'=kmeth ; * *========================================================== * Résolution *========================================================== * EXEC rv ; 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 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 ; '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 * ichoi = 'EXTRAIRE' lchoi &jchoi ; * ireso = 'EXTRAIRE' lreso &jreso ; * typmail = 'EXTRAIRE' lmail &jmail ; * 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) ; 'FINSI' ; 'SI' ('EGA' ireso 3) ; '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' ; 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) 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 ; * 'FINSI' ; 'FIN' jraff ; * lechloc = '/' ('LOG' lechloc) ('LOG' 10.D0) ; ltcpu = '/' ('LOG' ltcpu) ('LOG' 10.D0) ; lerrl2u = '/' ('LOG' lerrl2u) ('LOG' 10.D0) ; lerrl2p = '/' ('LOG' lerrl2p) ('LOG' 10.D0) ; 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' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales