Download soudage2.dgibi

Back to the list

* fichier :  soudage2.dgibi
'OPTION' 'ECHO' 0 ;
************************************************************************
* NOM         : ERRREL
* DESCRIPTION : Calcul d'une erreur relative
*
*
*
* LANGAGE     : GIBIANE-CAST3M
* AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
*               mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION    : v1, 23/04/2003, version initiale
* HISTORIQUE : v1, 23/04/2003, 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' ERRREL ;
'ARGUMENT' val*'FLOTTANT' ;
'ARGUMENT' valref*'FLOTTANT' ;
*
'SI' ('<' ('ABS' valref) 1.D-10) ;
   echref = 1.D0 ;
'SINON' ;
   echref = valref ;   
'FINSI' ;
*
errabs = 'ABS' ('/' ('-' val valref) echref);
*
'RESPRO' errabs ;
*
* End of procedure file ERRREL
*
'FINPROC' ;


************************************************************************
* NOM         : CALCNU
* DESCRIPTION : calcul de la viscosité (tp2v2) :
*               si t > tfusion : viscosité = nu
*               si t < tfusion : viscosité = nu * 1.D6
*
*
*
* LANGAGE     : GIBIANE-CAST3M
* AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
*               mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION    : v1, 20/10/2002, version initiale
* HISTORIQUE : v1, 20/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' CALCNU ;
'ARGUMENT' rvx*'TABLE   ' ;
   rv   = rvx . 'EQEX' ;
   tn   = rv . 'INCO' . 'TN' ;
   tnc = 'NOEL' $mt tn ;
   zliq = tnc 'MASQUE' 'SUPERIEUR' tfusion ;
   zsol = tnc 'MASQUE' 'EGINFE'    tfusion ;
   nuc  = '+' ('*' zliq nu)
              ('*' zsol ('*' nu 1.D6)) ;
   nuc = 'KCHT' $mt 'SCAL' 'CENTRE' nuc ;              
   rv . 'INCO' . 'NU' = nuc ;
   mat1 chp1 = 'KOPS' 'MATRIK' ;
   'RESPRO' mat1 chp1 ;
*
* End of procedure file CALCNU
*
'FINPROC' ;


************************************************************************
* NOM         : CALCTAU
* DESCRIPTION : calcul de la tension de surface (tp2v2) :
*               contrainte tangentielle proportionnelle
*               au gradient de température tangentiel.
*               nu dUt/dn = (dg/dT / rho) (gradT.t)
*
*               Attention : on divise par rho
*               car l'équation de qdm est aussi divisée par rho
*
*
*
* LANGAGE     : GIBIANE-CAST3M
* AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
*               mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION    : v1, 25/10/2002, version initiale
* HISTORIQUE : v1, 25/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' CALCTAU ;
'ARGUMENT' rvx*'TABLE   ' ;
   rv    = rvx . 'EQEX' ;
   tn    = rv . 'INCO' . 'TN' ;
   tnhau = 'KCHT' $hau 'SCAL' 'SOMMET' tn ;
   gtnh  = 'KOPS' 'GRAD' tnhau $hau ;
   tau = '*' ('/' dgdt rho) gtnh ;
*   TRACVIT tau 'TAU' ;
*   rv . 'INCO' . 'TAU' = 'KCHT' $hau 'VECT' 'CENTRE' (0.D0 0.D0) ;
   rv . 'INCO' . 'TAU' = 'KCHT' $hau 'VECT' 'CENTRE' tau ;
   mat1 chp1 = 'KOPS' 'MATRIK' ;
   'RESPRO' mat1 chp1 ;
*
* End of procedure file CALCTAU
*
'FINPROC' ;

************************************************************************
* NOM         : CALRESI
* DESCRIPTION : Calcul des residus et
*               stockage d'infos utiles au post-traitement
*               cf. procedures FILM et PHOTO
*
*
*
* LANGAGE     : GIBIANE-CAST3M
* AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
*               mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION    : v1, 23/10/2002, version initiale
* HISTORIQUE : v1, 23/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' CALRESI ;
'ARGUMENT' rvx*'TABLE   ' ;
   rv    = rvx . 'EQEX' ;
* 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' ;
   time0 = rv . 'PASDETPS' . 'TPS'     ;
   pdt0  = rv . 'PASDETPS' . 'NUPASDT' ;
   rvi = rv . 'INCO' ;
   un   = rvi . 'UN' ;
   tn   = rvi . 'TN' ;
   pn   = rvi . 'PN' ;
   nu   = rvi . 'NU' ;
*
* Calcul des résidus
* Le résidu est défini comme : || u_(i) - u_(i-1) || / || u_(i) ||
* où || || est la norme L2
*
   rvr = rv . 'RESIDU' ;
   'SI' ('>' pdt0 1) ;
      unm1 = rvr . 'UNM1' ;
      tnm1 = rvr . 'TNM1' ;
      pnm1 = rvr . 'PNM1' ;
      num1 = rvr . 'NUM1' ;
      mmu = rvr . 'MMU' ;
      mmt = rvr . 'MMT' ;
      mmp = rvr . 'MMP' ;
      mmn = rvr . 'MMN' ;
      uinco  = 'MOTS' 'UX' 'UY' ;
      uinco2 = 'MOTS' '1UN' '2UN' ;
      diffu  = 'NOMC' uinco uinco2 ('-' un unm1) ;
      resiu2  = 'XTY' diffu ('KOPS' mmu '*' diffu) uinco2 uinco2 ;
      couru  = 'NOMC' uinco uinco2 un  ;
      normu2 = 'XTY' couru ('KOPS' mmu '*' couru) uinco2 uinco2 ;
      erru = '/' ('**' ('ABS' resiu2) 0.5D0)
                 ('**' ('ABS' normu2) 0.5D0)
             ;
      tinco  = 'MOTS' 'SCAL' ;
      tinco2 = 'MOTS' 'TN' ;
      difft  = 'NOMC' tinco tinco2 ('-' tn tnm1) ;
      resit2 = 'XTY' difft ('KOPS' mmt '*' difft) tinco2 tinco2 ;
      court  = 'NOMC' tinco tinco2 tn  ;
      normt2 = 'XTY' court ('KOPS' mmt '*' court) tinco2 tinco2 ;
      errt = '/' ('**' ('ABS' resit2) 0.5D0)
                 ('**' ('ABS' normt2) 0.5D0)
             ;    
      pinco  = 'MOTS' 'SCAL' ;
      pinco2 = 'MOTS' 'PN' ;
      diffp  = 'NOMC' pinco pinco2 (ELNOPRES ('-' pn pnm1)) ;
      resip2 = 'XTY' diffp ('KOPS' mmp '*' diffp) pinco2 pinco2 ;
      courp  = 'NOMC' pinco pinco2 (ELNOPRES pn)  ;
      normp2 = 'XTY' courp ('KOPS' mmp '*' courp) pinco2 pinco2 ;
      errp = '/' ('**' ('ABS' resip2) 0.5D0)
                 ('**' ('ABS' normp2) 0.5D0)
                 ;
      ninco  = 'MOTS' 'SCAL' ;
      ninco2 = 'MOTS' 'SCAL' ;
      diffn  = 'NOMC' ninco ninco2 ('-' nu num1) ;
      resin2 = 'XTY' diffn ('KOPS' mmn '*' diffn) ninco2 ninco2 ;
      resin2 = '+' resin2 1.D-14 ;
      courn  = 'NOMC' ninco ninco2 nu ;
      normn2 = 'XTY' courn ('KOPS' mmn '*' courn) ninco2 ninco2 ;
      errn = '/' ('**' ('ABS' resin2) 0.5D0)
                 ('**' ('ABS' normn2) 0.5D0)
                 ;
      rvr . 'IT' = 'ET' (rvr . 'IT') ('PROG' pdt0) ;
      rvr . 'TI' = 'ET' (rvr . 'TI') ('PROG' time0) ;
      rvr . 'ERU'= 'ET' (rvr . 'ERU') ('PROG' erru) ;
      rvr . 'ERT'= 'ET' (rvr . 'ERT') ('PROG' errt) ;
      rvr . 'ERP'= 'ET' (rvr . 'ERP') ('PROG' errp) ;
      rvr . 'ERN'= 'ET' (rvr . 'ERN') ('PROG' errn) ;
      'SI' ('OU' ('EGA' (MODULO pdt0 freq1) 0) ('EGA' pdt0 2));
         titmess1 = 'CHAINE' 'Pdt=' pdt0 ' ; tps=' time0 
                ' erru=' erru ' ; errt=' errt
                ' ; errp=' errp ' ; errn=' errn ;
         'MESSAGE' titmess1 ;
      'FINSI' ;
   'FINSI' ;
   rvr . 'UNM1' = 'COPIER' un ;
   rvr . 'TNM1' = 'COPIER' tn ;
   rvr . 'PNM1' = 'COPIER' pn ;
   rvr . 'NUM1' = 'COPIER' nu ;
*
* Film
*
   'SI' ('OU' ('EGA' (MODULO pdt0 freq2) 0) ('EGA' pdt0 1));
      rvf = rv . 'FILM' ;
      dimtab = '+' ('DIME' rvf) 1 ;
      rvf . dimtab = 'TABLE' ;
      rvf . dimtab . 'IT' = pdt0  ;
      rvf . dimtab . 'TI' = time0 ;
      rvf . dimtab . 'UN' = 'COPIER' un ;
      rvf . dimtab . 'TN' = 'COPIER' tn ;
      rvf . dimtab . 'PN' = 'COPIER' pn ;
      rvf . dimtab . 'NU' = 'COPIER' nu ;
   'FINSI' ;
   mat1 chp1 = 'KOPS' 'MATRIK' ;
'RESPRO' mat1 chp1 ;
*
* End of procedure file CALRESI
*
'FINPROC' ;

************************************************************************
* NOM         : ELNOPRES
* DESCRIPTION : Projette un champ de pression au sommet
*
*
*
* 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' ELNOPRES ;
'ARGUMENT' pn*'CHPOINT ' ;
*
'SI' ('EGA' kpres 'MSOMMET') ;
   pn2 = 'KCHT' $mt 'SCAL' kpres pn  ;
'SINON' ;
   pn2 = 'ELNO' $mt ('KCHT' $mt 'SCAL' kpres pn) kpres;
'FINSI' ;
pn2 = 'NOMC' 'SCAL' ('REDU' pn2 mt) 'NATURE' 'DISCRET' ;
'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, 23/10/2002, version initiale
* HISTORIQUE : v1, 23/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' 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 '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 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 température
*
isovorig = 'VALEUR' 'ISOV' ;
'OPTION' 'ISOV' 'SURF' ;
tabtem = 'TABLE' ;
'REPETER' iindic ('DIME' lindic) ;
   idimt = 'EXTRAIRE' lindic &iindic ;
   latem  = rvf . idimt . 'TN' ;
   deftem = 'DEFORME' mt dxmt 0.D0 latem ;
   tabtem . &iindic = deftem ;
'FIN' iindic ;
temani = @STBL tabtem ;
tittem = 'CHAINE' 'FORMAT' formflot
                 'Temperature' titglob ;
'TRACER' temani 'ANIME' 'TITR' tittem ;
'OUBLIER' tabtem ; 'MENAGE' ;
'OPTION' 'ISOV' isovorig ;
*
* 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') ;
   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 ;
*
* Animation de la viscosité
*
isovorig = 'VALEUR' 'ISOV' ;
'OPTION' 'ISOV' 'SURF' ;
tabnu = 'TABLE' ;
'REPETER' iindic ('DIME' lindic) ;
   idimt = 'EXTRAIRE' lindic &iindic ;
   lenu   = 'ELNO' $mt (rvf . idimt . 'NU') ;
   defnu = 'DEFORME' mt dxmt 0.D0 lenu ;
   tabnu . &iindic = defnu ;
'FIN' iindic ;
nuani = @STBL tabnu ;
titnu = 'CHAINE' 'FORMAT' formflot
                 'Viscosite' titglob ;
'TRACER' nuani 'ANIME' 'TITR' titnu ;
'OUBLIER' tabnu ; 'MENAGE' ;
'OPTION' 'ISOV' isovorig ;
*
* End of procedure file FILM
*
'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, 23/10/2002, version initiale
* HISTORIQUE : v1, 23/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' 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 ;   
'FIN' iindic ;
*
* Photos de la température
*
'REPETER' iindic ('DIME' lindic) ;
   idimt = 'EXTRAIRE' lindic &iindic ;
   letem = rvf . idimt . 'TI' ;
   latem = rvf . idimt . 'TN' ;
   tittem = 'CHAINE' 'FORMAT' formflot
                  'Temperature ; tps=' letem ;
   TRACCHPO latem tittem ;   
'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 lapre titpre ;   
'FIN' iindic ;
*
* Photos de la viscosité
*
'REPETER' iindic ('DIME' lindic) ;
   idimt = 'EXTRAIRE' lindic &iindic ;
   letem = rvf . idimt . 'TI' ;
   lavis = rvf . idimt . 'NU' ;
   titvis = 'CHAINE' 'FORMAT' formflot
                  'Viscosite ; tps=' letem ;
   TRACCHML lavis titvis ;   
'FIN' iindic ;
*
* End of procedure file PHOTO
*
'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' pn*'CHPOINT ' ;
'ARGUMENT' tit/'MOT     ' ;
'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 ;
*
* 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' vit*'CHPOINT ' ;
'ARGUMENT' tit/'MOT     ' ;
'ARGUMENT' echvit/'FLOTTANT' ;
ladens = ('**' ('/' ('MESURE' mt) ('NBEL' mt))
               ('/' 1.D0 ('VALEUR' 'DIME'))) ;
'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 ;
*
* End of procedure file TRACVIT
*
'FINPROC' ;

'OPTION' 'ECHO' 1 ;

************************************************************************
* NOM         : SOUDAGE2
* DESCRIPTION : cas-test Navier-Stokes axi 2D stationnaire Bousinessq 
*               effet Marangoni et phase liquide-solide
*
*               Biblio :
*               Rapport DM2S SFME/LTMF/RT/02-052/A
*               S. Gounand
*               Deux cas-tests en vue d'une modélisation numérique d'un
*               processus de soudage. 
*
* LANGAGE     : GIBIANE-CAST3M
* AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
*               mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION    : v1, 03/10/2002, version initiale
* HISTORIQUE : v1, 03/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 !
************************************************************************
*
* Paramètres : * misaup = FAUX : on effectue une sauvegarde
*                         VRAI : on ne fait pas de sauvegarde
*              * post n'a de sens que si misaup = FAUX
*                alors : post = FAUX : on effectue la partie calcul
*                                        + sauvegarde
*                        post = VRAI : on effectue la partie restitution
*                                        + post-traitement
*              * interact = VRAI si on travaille en interactif
*                           FAUX sinon
*              * graph    = VRAI si on veut des graphiques
*                           FAUX sinon
*              * grossier = VRAI : calcul grossier
*                           FAUX : calcul fin
*              * idsauv et titsauv : nom du fichier de sauvegarde
misaup  = VRAI ;
post    = VRAI ;
*interact= VRAI ;
*graph   = VRAI ;
interact= FAUX ;
graph   = FAUX ;
grossier = VRAI;
idsauv = 'CHAINE' 'soudage2_it1600' ;
titsauv = 'CHAINE' '/test4/gounand/soudage/' idsauv '.sauv' ;
*
* Fin des paramètres 
*
******************************************************************
'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
'OPTION' 'MODE' 'AXIS' ;
'OPTION' 'ISOV' 'SULI' ;
nbisov = 15 ;
'SI' ('NON' interact) ;
  'OPTION' 'TRAC' 'PSC' ;
  'OPTION' 'ECHO' 0 ;
'SINON' ;
  'OPTION' 'TRAC' 'X' ;
'FINSI' ;  
formflot ='(1PE9.2)' ;
'SI' ('OU' ('NON' post) misaup) ;
******************************************************************
*
* Donnees materielles (dimensionnelles)
*                    (systeme SI)
*   Geometrie
*     long : rayon de la plaque
*     epai : epaisseur de la plaque
*     ras  : rayon de la source gaussienne
*long = 20.D-3 ;
long = 10.D-3 ;
epai = 2.5D-3 ;
ras  = 1.5D-3 ; 
*   Physique
*     rho : masse volumique
*     cp  : chaleur spécifique à pression constante
*     mu  : viscosite (dynamique)
*     kappa : conductivité thermique
*     beta : dilatabilité
*     dgdt : variation de la tension superficielle
*            avec la température 
*     tfusion : température de fusion
*     puis : puissance de la source gaussienne
rho    = 7200.D0 ; 
cp     = 500.D0 ;
mu     = 0.05D0 ;
kappa  = 20.D0 ;
beta   = 1.D-4 ;
rhocp = '*' rho cp ;
alfa = '/' kappa rhocp ;
nu = '/' mu rho ;
gb = 0. ('*' -9.81D0 beta) ;
dgdt = 1.D-4 ;
tfusion = 1700.D0 ;
*
*lambda = 25.D0 ;
puis  = 900.D0 ;
*sigma =  5.6710D-8 ;
*   Conditions aux limites
t0    = 300.D0 ;
*
* Paramètres numériques (I)
*                        
*   dg : densité grosse
*   dp : densité petite
*   dt : pas de temps
*   nitma : nombre de pas de temps
*   nfilm : intervalle de sauvegarde des champs
*           dans la table rv . 'FILM'
'SI' (grossier) ;
   dg = 0.5D-3 ;
   dp = 0.1D-3 ;
   dt = 0.001D0 ;
   nitma = 30 ;
   nfilm = 1 ;
'SINON' ;
   dg = 0.5D-3 ;
   dp = 0.1D-3 ;
   dt = 0.001D0 ;
   nitma = 1600 ;
   nfilm = 20 ;
'FINSI' ;
*
* Paramètres numériques (II)
*
   discr = 'QUAF' ;
   kpres = 'CENTREP1' ;
   ksupg = 'CENTREE' ;
   kmeth = 'IMPL' ;
* titre global pour les dessins
titglob = 'CHAINE' ' soudage2' ;
*
titdgibi = 'CHAINE' 'Cas test' titglob ;
'MESSAGE' ('CHAINE' '********************************') ;
'MESSAGE' titdgibi ;
'MESSAGE' ('CHAINE' '********************************') ;
*
*  Géométrie
*
pA  = 0.D0  0.D0 ;
pB  = long  0.D0 ;
pC  = long  epai ;
pD  = 0.D0  epai ;
bas = 'DROIT' pA pB 'DINI' dp 'DFIN' dg ;
dro = 'DROIT' pB pC 'DINI' dg 'DFIN' dp ;
hau = 'DROIT' pC pD 'DINI' dg 'DFIN' dp ;
gau = 'DROIT' pD pA 'DINI' dp 'DFIN' dg ;
mt = 'DALLER' bas dro hau gau ;
'SI' graph ;
   titgeo = 'CHAINE' 'mt ' 'NBPO=' ('NBNO' mt)
                      ' NBELEM=' ('NBEL' mt) titglob ;
   'TRACER' mt 'TITRE' titgeo ;
'FINSI' ;   
*
* Modèle
*
_mt = 'CHANGER' mt 'QUAF' ;
_bas = 'CHANGER' bas 'QUAF' ;
_dro = 'CHANGER' dro 'QUAF' ;
_hau = 'CHANGER' hau 'QUAF' ;
_gau = 'CHANGER' gau 'QUAF' ;
'ELIMINATION' (_mt 'ET' _bas 'ET' _dro 'ET' _hau 'ET' _gau)
              ('/' dp 100.D0) ;
modbid = 'MODELISER' mt 'THERMIQUE' ;
$mt = 'MODELISER' _mt 'NAVIER_STOKES' discr ;
$bas = 'MODELISER' _bas 'NAVIER_STOKES' discr ;
$dro = 'MODELISER' _dro 'NAVIER_STOKES' discr ;
$hau = 'MODELISER' _hau 'NAVIER_STOKES' discr ;
$gau = 'MODELISER' _gau 'NAVIER_STOKES' discr ;
mtc = 'DOMA' $mt 'CENTRE' ;
mp1  = 'ELEM' ('DOMA' $mt kpres) 1 ;
pmp1 = 'POIN' mp1 1 ;
pini = 'KCHT' $mt 'SCAL' kpres 0.D0 ;
*
* Construction de la source
*
rhauc = 'COORDONNEE' 1 ('DOMA' $hau 'CENTRE') ;
fes = '*' (('*' rhauc rhauc))
          ('/' -3.D0 ('*' ras ras)) ;
gs  = '*' ('EXP' fes)
          ('/' 3.D0 (PI '*' ras '*' ras)) ;
sgs = 'NOMC' 'SOUR' ('*' gs puis) 'NATURE' 'DISCRET' ;
sgs = 'KCHT' $hau 'SCAL' 'CENTRE' 'COMP' 'SOUR' sgs ;
*
* Rescaling de la source
*
isgavc = 'MAXIMUM' ('RESULT' ('*' sgs ('DOMA' $hau 'VOLUME'))) ;
'MESSAGE' ('CHAINE' 'FORMAT' formflot
                    'int. source gauss avant correction='
                    isgavc ' W' ) ;
fcor = '/' puis isgavc ;
sgs = '*' sgs fcor ;
isgapc  = 'MAXIMUM' ('RESULT' ('*' sgs ('DOMA' $hau 'VOLUME'))) ;
'MESSAGE' ('CHAINE' 'FORMAT' formflot 
                    'int. source gauss apres correction='
                    isgapc ' W' ) ;
stot = sgs ;
*
* conditions initiales
*
tini = 'KCHT' $mt 'SCAL' 'SOMMET' t0 ;
uini = 'KCHT' $mt 'VECT' 'SOMMET' (0.D0 0.D0) ;
*
* conditions aux limites 
*
* vitesse
mailvr   = ('DOMA' $gau 'SOMMET') 'ET' ('DOMA' $bas 'SOMMET')
      'ET' ('DOMA' $dro 'SOMMET') ;
climvr   = 'MANUEL' 'CHPO' mailvr 1 '1UN' 0.D0 'NATURE' 'DISCRET' ;
mailvz   = ('DOMA' $hau 'SOMMET') 'ET' ('DOMA' $bas 'SOMMET')
      'ET' ('DOMA' $dro 'SOMMET') ;
climvz   = 'MANUEL' 'CHPO' mailvz 1 '2UN' 0.D0 'NATURE' 'DISCRET' ;
* temperature
mailt   = 'ET' ('DOMA' $bas 'SOMMET') ('DOMA' $dro 'SOMMET') ;
climt   = 'MANUEL' 'CHPO' mailt 1 'TN' t0 'NATURE' 'DISCRET' ;
* pression imposée en un point
mailp   = mp1 ;
climp   = 'MANUEL' 'CHPO' mailp 1 'PN' 0.D0 'NATURE' 'DISCRET' ;
*
climtot = climt 'ET' climvr 'ET' climvz 'ET' climp ;
*
* Mise en place du calcul numérique
*
*   résidu et film
rv = 'EQEX' 'NITER' 1 'ITMA' nitma 'OMEGA' 1.D0 'FIDT' 1000
     'ZONE' $mt 'OPER' 'CALRESI' 1 nfilm 1.D-6
     ;
*   quantité de mouvement
rv = 'EQEX' rv 
     'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
     'ZONE' $mt 'OPER' 'CALCNU'
     'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
     'ZONE' $mt 'OPER' 'NS' 1. 'UN' 'NU' gb 'TN' t0  'INCO' 'UN'
     ;
*   effet Marangoni
rv = 'EQEX' rv
     'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
     'ZONE' $mt  'OPER' 'CALCTAU'
     'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
     'ZONE' $hau 'OPER' 'TOIM' 'TAU' 'INCO' 'UN'
     ;
*   pression     
rv = 'EQEX' rv 
     'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
     'ZONE' $mt 'OPER' 'KBBT' ('/' +1.D0 rho) 'INCO' 'UN' 'PN'
     ;
*   énergie     
rv = 'EQEX' rv      
     'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
     'ZONE' $mt 'OPER' 'LAPN' alfa           'INCO' 'TN'
     'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
     'ZONE' $mt 'OPER' 'KONV' 1.D0 'UN' alfa 'INCO' 'TN'
     'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
     'ZONE' $hau 'OPER' 'FIMP' ('/' sgs rhocp) 'INCO' 'TN'
     ;
*   temps     
rv = 'EQEX' rv
     'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
     'ZONE' $mt 'OPER' 'DFDT' 1. 'UN' DT 'INCO' 'UN' 
     'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
     'ZONE' $mt 'OPER' 'DFDT' 1. 'TN' DT 'INCO' 'TN'
     ;
rv . 'CLIM' = climtot ;
rv . 'INCO' = 'TABLE' 'INCO' ;
rv . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' uini ;
rv . 'INCO' . 'TN' = 'KCHT' $mt 'SCAL' 'SOMMET' tini ;
rv . 'INCO' . 'PN' = 'KCHT' $mt 'SCAL' kpres 0.D0 ;
rv . 'INCO' . 'NU' = 'KCHT' $mt 'SCAL' 'CENTRE' nu ;
* Infos supplémentaires pour la procédure CALRESI
rv . 'RESIDU' = 'TABLE' ;
*   Champs 
rv . 'RESIDU' . 'UNM1' = 'COPI' rv . 'INCO' . 'UN' ;
rv . 'RESIDU' . 'TNM1' = 'COPI' rv . 'INCO' . 'TN' ;
rv . 'RESIDU' . 'PNM1' = 'COPIER'  rv . 'INCO' . 'PN' ;
rv . 'RESIDU' . 'NUM1' = 'COPIER'  rv . 'INCO' . 'NU' ;
*   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 ;
   rk = 'EQEX' 'OPTI' 'EF' 'CENTREE' 'IMPL'
               'ZONE' $mt 'OPER' 'DFDT' 1.D0 'TN' 1.D0 'INCO' 'TN' ;
   rk . 'INCO'          = TABLE 'INCO' ;
   rk . 'INCO' . 'TN'   = 'KCHT' $mt 'SCAL' 'SOMMET' 0.D0 ;
   toto mm = 'DFDT' (rk . '1DFDT') ;
rv . 'RESIDU' . 'MMT' = 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 ;
rv . 'RESIDU' . 'MMN' = 'DOMA' $mt 'VOLUME' ;
*   Erreurs
rv . 'RESIDU' . 'IT'   = 'PROG' ;
rv . 'RESIDU' . 'TI'   = 'PROG' ;
rv . 'RESIDU' . 'ERU'   = 'PROG' ;
rv . 'RESIDU' . 'ERT'   = 'PROG' ;
rv . 'RESIDU' . 'ERP'   = 'PROG' ;
rv . 'RESIDU' . 'ERN'   = 'PROG' ;
* Infos supplémentaires pour les films
rv . 'FILM' = 'TABLE' ;
*
* Calcul proprement dit
*
'TEMPS' 'ZERO' ;
EXEC rv ;
tcpu = 'TEMPS' 'NOEC' ;
tcpus = '/' ('FLOTTANT' tcpu) 100.D0 ;
'MESSAGE' ('CHAINE' 'tcpus=' tcpus) ;
*'TEMPS' 'IMPR' ;
rvi = rv . 'INCO' ;
rvr = rv . 'RESIDU' ;
*
* Résultats intéressants mis dans  la table res
*
res = 'TABLE' ;
res . 'TCPU' = tcpus ;
res . 'MAILLAGE' = mt ;
res . 'MODELE' = $mt ;
res . 'IT'  = rvr . 'IT' ;
res . 'ERU' = rvr . 'ERU' ;
res . 'ERT' = rvr . 'ERT' ;
res . 'ERP' = rvr . 'ERP' ;
res . 'ERN' = rvr . 'ERN' ;
res . 'UN' = rvi . 'UN' ;
res . 'TN' = rvi . 'TN' ;
res . 'PN' = rvi . 'PN' ;
res . 'NU' = rvi . 'NU' ;
res . 'FILM' = rv . 'FILM' ;
'SI' ('NON' misaup) ;
   'OPTION' 'SAUV' titsauv ;
   'SAUVER' ;
'FINSI' ;   
'FINSI' ;
*
*
*==========================================================
* Post traitement
*==========================================================
'SI' ('OU' post misaup) ;
'SI' ('NON' misaup) ;
   'OPTION' 'REST' titsauv ;
   'RESTITUER' ;
'FINSI' ;
tcpu = res . 'TCPU' ;
mt   = res . 'MAILLAGE' ;
$mt  = res . 'MODELE' ;
lit  = res . 'IT' ;
leru = res . 'ERU' ;
lert = res . 'ERT' ;
lerp = res . 'ERP' ;
lern = res . 'ERN' ;
un   = res . 'UN' ;
tn   = res . 'TN' ;
pn   = res . 'PN' ;
nu   = res . 'NU' ;
rf   = res . 'FILM' ;
'SI' graph ;
* Quelques graphiques
   ndimlit = 'DIME' lit ; 
   'SI' ('>' ndimlit 2) ;
      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 ;
      xevert = lit ;
      yevert = '/' ('LOG' lert) ('LOG' 10.D0) ;
      evert = 'EVOL' 'MANU' 'Iteration' xevert 'Log Err L2 T' yevert ;
      tituap = 'CHAINE' 'Conv. température' titglob ;
      'DESSIN' evert '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 ;
      xevern = lit ;
      yevern = '/' ('LOG' lern) ('LOG' 10.D0) ;
      evern = 'EVOL' 'MANU' 'Iteration' xevern 'Log Err L2 Nu' yevern ;
      tituap = 'CHAINE' 'Conv. Visc.' titglob ;
      'DESSIN' evern 'TITR' tituap ;
   'FINSI' ;   
   tituap = 'CHAINE' 'Vitesse' ;
   TRACVIT un tituap ;
   tituap = 'CHAINE' 'Température' ;
   TRACCHPO tn tituap ;
   tituap = 'CHAINE' 'Pression' ;
   TRACCHPO (ELNOPRES pn) tituap ;
   tituap = 'CHAINE' 'Viscosite (nu)' ;
   TRACCHML nu tituap ;
   'SI' interact ;
      FILM rf ;
   'FINSI' ;
'FINSI' ;      
*
*'SI' ('OU' post misaup) ;
'FINSI' ;
*
* On ne sait pas trop quoi faire comme test...
*
tmax = 'MAXIMUM' tn ;
tmin = 'MINIMUM' tn ;
u = 'EXCO' un 'UX' ;
v = 'EXCO' un 'UY' ;
umax = 'MAXIMUM' u ;
umin = 'MINIMUM' u ;
vmax = 'MAXIMUM' v ;
vmin = 'MINIMUM' v ;
*
tmaxref = 5.084D+3 ;
tminref = 3.000D+2 ;
umaxref = 8.301D-1 ;
uminref =-2.007D-1 ;
vmaxref = 1.118D-1 ;
vminref =-2.002D-1 ;
*
errtmax = ERRREL tmax tmaxref ;
errtmin = ERRREL tmin tminref ;
errumax = ERRREL umax umaxref ;
errumin = ERRREL umin uminref ;
errvmax = ERRREL vmax vmaxref ;
errvmin = ERRREL vmin vminref ;
*
tsttmax = '>' errtmax 1.D-3 ; 
tsttmin = '>' errtmin 1.D-3 ; 
tstumax = '>' errumax 1.D-3 ; 
tstumin = '>' errumin 1.D-3 ; 
tstvmax = '>' errvmax 1.D-3 ; 
tstvmin = '>' errvmin 1.D-3 ; 


test = (tsttmax 'OU' tsttmin 'OU' tstumax 'OU' tstumin
                             'OU' tstvmax 'OU' tstvmin) ;
                             
'MESSAGE' ('CHAINE'  'Tmax =' tmax ' K') ;
'MESSAGE' ('CHAINE'  'Tmin =' tmin ' K') ;
'MESSAGE' ('CHAINE'  'Umax =' umax ' m.s-1') ;
'MESSAGE' ('CHAINE'  'Umin =' umin ' m.s-1') ;
'MESSAGE' ('CHAINE'  'Vmax =' vmax ' m.s-1') ;
'MESSAGE' ('CHAINE'  'Vmin =' vmin ' m.s-1') ;
'SI' test ;
   'MESSAGE' ('CHAINE'  'Tmaxref =' tmaxref ' K') ;
   'MESSAGE' ('CHAINE'  'Tminref =' tminref ' K') ;
   'MESSAGE' ('CHAINE'  'Umaxref =' umaxref ' m.s-1') ;
   'MESSAGE' ('CHAINE'  'Uminref =' uminref ' m.s-1') ;
   'MESSAGE' ('CHAINE'  'Vmaxref =' vmaxref ' m.s-1') ;
   'MESSAGE' ('CHAINE'  'Vminref =' vminref ' m.s-1') ;
'FINSI' ;
*
'MESSAGE' ('CHAINE'  'Errtmax =' errtmax) ;
'MESSAGE' ('CHAINE'  'Errtmin =' errtmin) ;
'MESSAGE' ('CHAINE'  'Errumax =' errumax) ;
'MESSAGE' ('CHAINE'  'Errumin =' errumin) ;
'MESSAGE' ('CHAINE'  'Errvmax =' errvmax) ;
'MESSAGE' ('CHAINE'  'Errvmin =' errvmin) ;

'SI' interact ;
   'OPTION' 'DONN' 5 ;
'SINON' ;
   'SI' test ;
      'ERREUR' 5 ;
   'SINON' ;
      'ERREUR' 0 ;
   'FINSI' ;
'FINSI' ;     
*
* End of dgibi file SOUDAGE2
*
'FIN' ;

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer