Download fvol.dgibi

Back to the list

* 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' 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) ;
         lindic = 'LECT' ndebu 'PAS' ninter nfin ;
      'SINON' ;   
         lindic = 'LECT' ndebu 'PAS' 1 nfin ;
      'FINSI' ;
   'SINON' ;
      'ERREUR' 'Bornes de l"intervalle incorrectes' ;
   'FINSI' ;
'SINON' ;
   lindic = 'LECT' 1 'PAS' 1 dimtab ;      
'FINSI' ;   
ladens = (** ('/' ('MESURE' mt) ('NBEL' mt))
             ('/' 1.D0 ('VALEUR' 'DIME'))) ;
*
* Détermination de l'échelle de vitesse
*
lemax = 'PROG' ;
'REPETER' iindic ('DIME' lindic) ;
   idimt = 'EXTRAIRE' lindic &iindic ;
   lavit  = rvf . idimt . 'UN' ;
   lemax  = 'ET' lemax ('PROG' ('MAXIMUM' lavit 'ABS')) ;
'FIN' iindic ;
echvit = 'MAXIMUM' lemax 'ABS' ;
uref = '/' ('*' ladens 4.0D0) echvit ;
*
* Animation de la vitesse
*
tabvit = 'TABLE' ;
'REPETER' iindic ('DIME' lindic) ;
   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 ;
vitani = @STBL tabvit ;
titvit = 'CHAINE' 'FORMAT' formflot
                  'Vitesse ; echvit=' echvit titglob ;
'TRACER' vitani 'ANIME' 'TITR' titvit ;
'OUBLIER' tabvit ; 'MENAGE' ;
*
* Animation de la pression
*
isovorig = 'VALEUR' 'ISOV' ;
'OPTION' 'ISOV' 'SURF' ;
tabpre = 'TABLE' ;
'REPETER' iindic ('DIME' lindic) ;
   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 ;
preani = @STBL tabpre ;
titpre = 'CHAINE' 'FORMAT' formflot
                 'Pression' titglob ;
'TRACER' preani 'ANIME' 'TITR' titpre ;
'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
'ARGUMENT' typmail*'MOT     ' ;
*
* 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' ;
   ladens = '**' ('/' ('MESURE' mt) ('NBEL' mt))
                 ('/' 1.D0 ('VALEUR' 'DIME')) ;
   ampbruit = (0.1 * ladens) ;
   cnt = 'CONTOUR' mt ;
   pmt = 'CHANGER' mt 'POI1' ;
   pcnt= 'CHANGER' cnt 'POI1' ;
   inmt= 'DIFF' pmt pcnt;
   brbl1 = 'BRUIT' 'BLAN' 'GAUS' 0.D0 ampbruit inmt ;
   brbl2 = 'BRUIT' 'BLAN' 'GAUS' 0.D0 ampbruit inmt ;
   brbl = 'ET' ('NOMC' 'UX' brbl1) ('NOMC' 'UY' brbl2) ;
   mt = 'PLUS' mt brbl;
'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
*
dxmt = 'MANUEL' 'CHPO' mt 2 'UR' 0.D0 'UZ' 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' 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) ;
         lindic = 'LECT' ndebu 'PAS' ninter nfin ;
      'SINON' ;   
         lindic = 'LECT' ndebu 'PAS' 1 nfin ;
      'FINSI' ;
   'SINON' ;
      'ERREUR' 'Bornes de l"intervalle incorrectes' ;
   'FINSI' ;
'SINON' ;
   lindic = 'LECT' 1 'PAS' 1 dimtab ;      
'FINSI' ;   
ladens = (** ('/' ('MESURE' mt) ('NBEL' mt))
             ('/' 1.D0 ('VALEUR' 'DIME'))) ;
*
* Détermination de l'échelle de vitesse
*
lemax = 'PROG' ;
'REPETER' iindic ('DIME' lindic) ;
   idimt = 'EXTRAIRE' lindic &iindic ;
   lavit  = rvf . idimt . 'UN' ;
   lemax  = 'ET' lemax ('PROG' ('MAXIMUM' lavit 'ABS')) ;
'FIN' iindic ;
echvit = 'MAXIMUM' lemax 'ABS' ;
uref = '/' ('*' ladens 2.0D0) echvit ;
*
* Photos de la vitesse
*
'REPETER' iindic ('DIME' lindic) ;
   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
*
'REPETER' iindic ('DIME' lindic) ;
   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' ;
   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 ;

tcpu = 'TEMPS' 'NOEC' ;
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' ;

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer