Download sudden_expansion.dgibi
* fichier : sudden_expansion.dgibi
*
'OPTI' 'ECHO' 0 ;
*
'SAUTER' 2 'LIGNE' ;
'MESSAGE' ' Execution de sudden_expansion.dgibi' ;
'SAUTER' 2 'LIGNE' ;
*
graph = faux ;
complet = faux ;
interact = faux ;
************************************************************************
* NOM : SUDDEN_EXPANSION
* DESCRIPTION : Ecoulement dans un tube débouchant dans un autre de plus
* gros diamètre en 2D plan et en 2D axisymétrique.
*
* Références :
*@article{Oliveira1998655,
*author = "P. J. Oliveira and F. T. Pinho and A. Schulte",
*title = "A general correlation for the local loss coefficient in Newtonian axisymmetric sudden expansions",
*journal = "International Journal of Heat and Fluid Flow",
*year = "1998",
*volume = "19",
*number = "6",
*pages = "655 - 660"}
*
*@Article{scott_mirza,
* author = {P.S. Scott and F.A. Mirza and J. Vlachopoulos},
* title = {A Finite Element Analysis of Laminar Flows through Planar and Axisymmetric abrupt expansions},
* journal = {Computers & Fluids},
* year = {1986},
* volume = {14},
* number = {4},
* pages = {423 - 432}}
*
*@Article{fletcher_maskell,
* author = {D.F. Fletcher and S.J. Maskell and M.A. Patrick},
* title = {Heat and Mass Transfer computations for laminar flows in an axisymmetric sudden expansion},
* journal = {Computers and Fluids},
* year = {1985},
* volume = {13},
* number = {2},
* pages = {207-221}}
*
*@Article{macagno_hung,
* author = {Enzo O. Macagno and Tin-Kan Hung},
* title = {Computational and experimental study of a captive annular eddy},
* journal = {Journal of Fluid Mechanics},
* year = {1967},
* volume = {28},
* number = {1},
* pages = {43-64}}
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 04/01/2011, version initiale
* HISTORIQUE : v1, 04/01/2011, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
'SI' ('NON' interact) ;
'OPTION' 'TRAC' 'PS' ;
'SINON' ;
'OPTION' 'TRAC' 'X' ;
'FINSI' ;
*
******************************************
* *
* Procédures utilitaires *
* *
******************************************
*BEGINPROCEDUR errrel
************************************************************************
* 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' ;
*ENDPROCEDUR errrel
*BEGINPROCEDUR exmomod
************************************************************************
* NOM : EXMOMOD
* DESCRIPTION : Extraction d'un mot d'un listmots
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 23/06/2003, version initiale
* HISTORIQUE : v1, 23/06/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' EXMOMOD ;
'ARGUMENT' lm*'LISTMOTS' i*'ENTIER' ;
j = 'DIME' lm ;
k = '+' (MODULO ('-' i 1) j) 1 ;
lemot = 'EXTRAIRE' lm k ;
* Usage de l'opérateur text pour éviter que lemot
* ne soit interprété comme un opérateur
'RESPRO' 'TEXTE' lemot ;
*
* End of procedure file EXMOMOD
*
'FINPROC' ;
*ENDPROCEDUR exmomod
*BEGINPROCEDUR fcourant
* FCOURANT PROCEDUR GOUNAND 07/12/21 21:15:01 6010
************************************************************************
* NOM : FCOURANT
* DESCRIPTION : Calcul la fonction de courant en 2D et 2D Axi
* par une méthode d'éléments finis moindres carrés
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 22/11/2007, version initiale
* HISTORIQUE : v1, 22/11/2007, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
*
* Procedure fonction de courant 2D et 2D axi
* - modns : modele Navier-Stokes
* - disc : discretisation des champs au sommet (QUAF ou LINE)
* - un : champ de vitesses
* - clphi : conditions de Dirichlet sur phi
* (nom de composante 'SCAL')
*
* en 2D, on résout : dpsi/dx = u_y
* dpsi/dy = -u_x
* en 2D axi , on résout : dpsi/dr = 2pi r u_z
* dpsi/dz = - 2 pi r u_r
*
*
*
'DEBPROC' FCOURANT ;
*
'ARGUMENT' mquaf*'MAILLAGE' ;
'ARGUMENT' disc*'MOT' ;
'ARGUMENT' un*'CHPOINT' ;
'ARGUMENT' clphi/'CHPOINT' ;
*
'SI' ('NON' ('EXISTE' clphi)) ;
pref = 'POIN' ('CHANGER' mquaf 'POI1') 1 ;
clphi = 'MANUEL' 'CHPO' pref 1 'SCAL' 0.D0 ;
'FINSI' ;
*
'ARGUMENT' rvm/'TABLE' ;
'SI' ('NON' ('EXISTE' rvm)) ;
rv = 'EQEX' ;
rvm = rv . 'METHINV' ;
'FINSI' ;
*
dim = 'VALEUR' 'DIME' ;
*
'SI' ('NEG' dim 2) ;
'ERREUR' 219 ;
'FINSI' ;
*
laxi = 'EGA' ('VALEUR' 'MODE') 'AXIS' ;
ncx = 'MOTS' 'UX' ; ncy = 'MOTS' 'UY' ;
*
'SI' laxi ;
ncx = 'MOTS' 'UR' ; ncy = 'MOTS' 'UZ' ;
cdpr = '*' ('COORDONNEE' 1 mquaf) ('*' PI 2.D0) ;
ur = 'EXCO' ncx un ;
uz = 'EXCO' ncy un ;
*
numop = 2 ; numvar = 1 ; numdat = 0 ;
numcof = 0 ; numder = 2 ;
*
A = ININLIN numop numvar numdat numcof numder ;
A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'VAR' . 1 . 'DISC' = disc ;
A . 1 . 1 . 1 = 'LECT' ;
A . 2 . 1 . 2 = 'LECT' ;
*
numdat = 1 ; numcof = 1 ;
B = ININLIN numop numvar numdat numcof numder ;
B . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'VAR' . 1 . 'DISC' = disc ;
B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 1 . 'DISC' = disc ;
B . 'DAT' . 1 . 'VALEUR' = cdpr ;
B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
*
B . 1 . 1 . 1 = 'LECT' 1 ;
B . 2 . 1 . 2 = 'LECT' 1 ;
*
numvar = 2 ;
C = ININLIN numop numvar numdat numcof numder ;
C . 'VAR' . 1 . 'NOMDDL' = ncx ;
C . 'VAR' . 1 . 'DISC' = disc ;
C . 'VAR' . 1 . 'VALEUR' = '*' ur -1. ;
C . 'VAR' . 2 . 'NOMDDL' = ncy ;
C . 'VAR' . 2 . 'DISC' = disc ;
C . 'VAR' . 2 . 'VALEUR' = uz ;
C . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
C . 'DAT' . 1 . 'DISC' = disc ;
C . 'DAT' . 1 . 'VALEUR' = cdpr ;
C . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
C . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
*
C . 1 . 2 . 0 = 'LECT' 1 ;
C . 2 . 1 . 0 = 'LECT' 1 ;
*
mat = NLIN mquaf disc A B 'GAU7' ;
mat = 'KOPS' 'RIMA' mat ;
smb = NLIN mquaf disc C B 'GAU7' ;
*
'SINON' ;
*
ux = 'EXCO' ncx un ;
uy = 'EXCO' ncy un ;
*
numop = 2 ; numvar = 1 ; numdat = 0 ;
numcof = 0 ; numder = 2 ;
*
A = ININLIN numop numvar numdat numcof numder ;
A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'VAR' . 1 . 'DISC' = disc ;
A . 1 . 1 . 1 = 'LECT' ;
A . 2 . 1 . 2 = 'LECT' ;
*
numvar = 2 ;
B = ININLIN numop numvar numdat numcof numder ;
B . 'VAR' . 1 . 'NOMDDL' = ncx ;
B . 'VAR' . 1 . 'DISC' = disc ;
B . 'VAR' . 1 . 'VALEUR' = '*' ux -1. ;
B . 'VAR' . 2 . 'NOMDDL' = ncy ;
B . 'VAR' . 2 . 'DISC' = disc ;
B . 'VAR' . 2 . 'VALEUR' = uy ;
*
B . 1 . 2 . 0 = 'LECT' ;
B . 2 . 1 . 0 = 'LECT' ;
*
mat = NLIN mquaf disc A A 'GAU7' ;
mat = 'KOPS' 'RIMA' mat ;
smb = NLIN mquaf disc B A 'GAU7' ;
'FINSI' ;
*
psi = 'KRES' mat 'TYPI' rvm 'CLIM' clphi 'SMBR' smb ;
'RESPRO' psi ;
*
'FINPROC' ;
*ENDPROCEDUR fcourant
*BEGINPROCEDUR formar
************************************************************************
* NOM : FORMAR
* DESCRIPTION : formate un réel de facon courte
* pratique pour les noms de
* sauvegarde
* Exemples :
* 'MESSAGE' ('CHAINE' (formar 2.9e5 1)) ;
* 2.9E5
* 'MESSAGE' ('CHAINE' (formar -2.9e5 1)) ;
* -2.9E5
* 'MESSAGE' ('CHAINE' (formar 2.9e-5 1)) ;
* 2.9E-5
* 'MESSAGE' ('CHAINE' (formar -2.9e-5 1)) ;
* -2.9E-5
* 'MESSAGE' ('CHAINE' (formar 2.9 1)) ;
* 2.9
* 'MESSAGE' ('CHAINE' (formar -2.9 1)) ;
* -2.9
* 'MESSAGE' ('CHAINE' (formar 0 1)) ;
* 0
* 'MESSAGE' ('CHAINE' (formar 0 1)) ;
* 0
* 'MESSAGE' ('CHAINE' (formar 2.9e5 0)) ;
* 3E5
* 'MESSAGE' ('CHAINE' (formar -2.9e5 0)) ;
* -3E5
* 'MESSAGE' ('CHAINE' (formar 2.9e-5 0)) ;
* 3E-5
* 'MESSAGE' ('CHAINE' (formar -2.9e-5 0)) ;
* -3E-5
* 'MESSAGE' ('CHAINE' (formar 2.9 0)) ;
* 3
* 'MESSAGE' ('CHAINE' (formar -2.9 0)) ;
* -3
* 'MESSAGE' ('CHAINE' (formar 0 0)) ;
* 0
* 'MESSAGE' ('CHAINE' (formar 0 0)) ;
* 0
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 18/02/2003, version initiale
* HISTORIQUE : v1, 18/02/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' FORMAR ;
'ARGUMENT' fl*'FLOTTANT' ;
'ARGUMENT' vir/'ENTIER ' ;
'SI' ('NON' ('EXISTE' vir)) ;
vir = 1 ;
'SINON' ;
'SI' ('<' vir 0) ;
'ERREUR' 'fournir un entier positif' ;
'FINSI' ;
'FINSI' ;
'SI' ('<' ('ABS' fl) 10.D-100) ;
chfl = 'CHAINE' '0' ;
'SINON' ;
*! sans le 1.D-10, ca ne fonctionne pas
*! qd on entre pile poil une puissance de 10
lfl = LOG10 ('ABS' fl) ;
* lfl = '+' (LOG10 ('ABS' fl)) 1.D-10 ;
slfl = 'SIGNE' ('ENTIER' lfl) ;
'SI' ('EGA' slfl 1) ;
elfl = 'ENTIER' lfl ;
'SINON' ;
elfl = '-' ('ENTIER' lfl) 1 ;
'FINSI' ;
man = '/' fl ('**' 10.D0 elfl) ;
*
* Une verrue pour des histoires de précision...
*
'SI' ('EGA' man 10.D0 ('**' 10.D0 ('*' vir -1.D0))) ;
man = '/' man 10.D0 ;
elfl = '+' elfl 1 ;
'FINSI' ;
*
sman = 'SIGNE' man ;
'SI' ('EGA' sman 1) ;
fman = 'CHAINE' '(F' ('+' vir 2) '.0' vir ')' ;
'SINON' ;
fman = 'CHAINE' '(F' ('+' vir 3) '.0' vir ')' ;
'FINSI' ;
'SI' ('NEG' vir 0) ;
'SI' ('NEG' elfl 0) ;
chfl = 'CHAINE' 'FORMAT' fman man 'E' elfl ;
'SINON' ;
chfl = 'CHAINE' 'FORMAT' fman man ;
'FINSI' ;
'SINON' ;
man2 = 'ENTIER' ('+' man ('*' 0.5D0 sman)) ;
'SI' ('NEG' elfl 0) ;
chfl = 'CHAINE' man2 'E' elfl ;
'SINON' ;
chfl = 'CHAINE' man2 ;
'FINSI' ;
'FINSI' ;
'FINSI' ;
'RESPRO' chfl ;
*
* End of procedure file FORMAR
*
'FINPROC' ;
*ENDPROCEDUR formar
*BEGINPROCEDUR gdiv2
************************************************************************
* NOM : GDIV2
* DESCRIPTION : Une matrice de masse
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v2, 14/03/2006, mise à jour NLIN évolué
* VERSION : v1, 13/05/2004, version initiale
* HISTORIQUE : v1, 13/05/2004, 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' GDIV2 ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' _smt/'MAILLAGE' ;
'ARGUMENT' tdisc*'TABLE' ;
*
* Lectures
*
debug = FAUX ;
lmotcle = 'MOTS' 'NPRI' 'FPRI' 'CPRI' 'NDUA' 'FDUA' 'CDUA'
'NCOF' 'FCOF' 'CCOF' 'GBBT' 'GMBT' ;
* Il faut initialiser valt et valq, sinon on peut capturer ceux de
* la procédure appelante
valt = 'valt' ; valq = 'valq' ;
lbbt = 0 ;
*
'REPETER' imotcle 0 ;
'ARGUMENT' motcle/'MOT' ;
'SI' ('NON' ('EXISTE' motcle)) ; 'QUITTER' imotcle ; 'FINSI' ;
'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
cherr = 'CHAINE' 'Keyword ' motcle ' unknown.' ; 'ERREUR' cherr ;
'FINSI' ;
'SI' ('EGA' motcle 'NPRI') ; 'ARGUMENT' nomt*'MOT' ; 'FINSI' ;
'SI' ('EGA' motcle 'NDUA') ; 'ARGUMENT' nomq*'MOT' ; 'FINSI' ;
'SI' ('EGA' motcle 'NCOF') ; 'ARGUMENT' nomo*'MOT' ; 'FINSI' ;
'SI' ('EGA' motcle 'FPRI') ; 'ARGUMENT' valt*'LISTREEL' ; 'FINSI' ;
'SI' ('EGA' motcle 'FDUA') ; 'ARGUMENT' valq*'FLOTTANT' ; 'FINSI' ;
'SI' ('EGA' motcle 'FCOF') ; 'ARGUMENT' valo*'FLOTTANT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CPRI') ; 'ARGUMENT' valt*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CDUA') ; 'ARGUMENT' valq*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CCOF') ; 'ARGUMENT' valo*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'GBBT') ; lbbt = 1 ; 'FINSI' ;
'SI' ('EGA' motcle 'GMBT') ; lbbt = 2 ; 'FINSI' ;
'FIN' imotcle ;
*
* Tests
*
discg = TDISC . 'GEOM' . 'DISC' ;
methgau = 'GAU7' ;
tnomt = TDISC . nomt ;
lvalt = 'NEG' ('TYPE' valt) 'MOT' ;
tnomq = TDISC . nomq ;
lvalq = 'NEG' ('TYPE' valq) 'MOT' ;
*
lcof = 'EXISTE' TDISC nomo ;
'SI' lcof ; ncof = 1 ; tcof = TDISC . nomo ;
'SINON' ; ncof = 0 ;
'FINSI' ;
*
'SI' debug ;
'SI' lcof ; 'MESSAGE' 'Un coef a ete detecte' ;
'SINON' ; 'MESSAGE' 'pas de coef detecte' ;
'FINSI' ;
'FINSI' ;
*
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
idim = 0 ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
idim = 2 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
idim = 2 ;
iaxi = VRAI ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
idim = 3 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('EGA' vdim 1) ;
idim = 1 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('EGA' idim 0) ;
'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
'FINSI' ;
'SI' iaxi ;
dp = ('*' PI 2.D0) ;
rmt = 'COORDONNEE' 1 _mt ;
ncof = ncof '+' 2 ;
'FINSI' ;
* Scalaire ou vecteur
ninct = 'DIME' (tnomt . 'NOMINC') ;
nincq = 'DIME' (tnomq . 'NOMINC') ;
'SI' ('NEG' ninct idim) ;
cherr = 'CHAINE'
'la primale doit etre un vecteur' ;
'ERREUR' cherr ;
'FINSI' ;
'SI' ('NEG' nincq 1) ;
cherr = 'CHAINE'
'la duale doit etre un scalaire' ;
'ERREUR' cherr ;
'FINSI' ;
*
numop = 1 ; numder = idim ; numvar = ninct ;
numdat = ncof ; numcof = ncof ;
A = ININLIN numop numvar numdat numcof numder ;
*
lvt = 'EGA' ('TYPE' valt) 'LISTREEL' ;
'REPETER' iiinct ninct ;
iinct = &iiinct ;
A . 'VAR' . iinct . 'NOMDDL' = tnomt . 'NOMINC' . iinct ;
A . 'VAR' . iinct . 'DISC' = tnomt . 'DISC' ;
'SI' lvalt ;
'SI' lvt ;
A . 'VAR' . iinct . 'VALEUR' = 'EXTRAIRE' valt iinct ;
'SINON' ;
A . 'VAR' . iinct . 'VALEUR' = valt ;
'FINSI' ;
'FINSI' ;
'FIN' iiinct ;
*
icof = 0 ;
'SI' lcof ;
icof = '+' icof 1 ;
A . 'DAT' . icof . 'NOMDDL' = tcof . 'NOMINC' . 1 ;
A . 'DAT' . icof . 'DISC' = tcof . 'DISC' ;
A . 'DAT' . icof . 'VALEUR' = valo ;
A . 'COF' . icof . 'COMPOR' = 'IDEN' ;
A . 'COF' . icof . 'LDAT' = 'LECT' icof ;
ll = 'LECT' 1 ;
'SINON' ;
ll = 'LECT' ;
'FINSI' ;
*
'SI' iaxi ;
icof = '+' icof 1 ;
A . 'DAT' . icof . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . icof . 'DISC' = 'CSTE' ;
A . 'DAT' . icof . 'VALEUR' = dp ;
A . 'COF' . icof . 'COMPOR' = 'IDEN' ;
A . 'COF' . icof . 'LDAT' = 'LECT' icof ;
icof = '+' icof 1 ;
A . 'DAT' . icof . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . icof . 'DISC' = discg ;
A . 'DAT' . icof . 'VALEUR' = rmt ;
A . 'COF' . icof . 'COMPOR' = 'IDEN' ;
A . 'COF' . icof . 'LDAT' = 'LECT' icof ;
lldpr = ll 'ET' ('LECT' ('-' icof 1) icof) ;
lldp = ll 'ET' ('LECT' ('-' icof 1)) ;
'FINSI' ;
*
'SI' iaxi ;
'REPETER' iidim idim ;
A . 1 . &iidim . &iidim = lldpr ;
'FIN' iidim ;
A . 1 . 1 . 0 = lldp ;
'SINON' ;
'REPETER' iidim idim ;
A . 1 . &iidim . &iidim = ll ;
'FIN' iidim ;
'FINSI' ;
*
numvar = 1 ;
numdat = 0 ;
numcof = 0 ;
*
B = ININLIN numop numvar numdat numcof numder ;
B . 'VAR' . 1 . 'NOMDDL' = tnomq . 'NOMINC' . 1 ;
B . 'VAR' . 1 . 'DISC' = tnomq . 'DISC' ;
'SI' lvalq ;
B . 'VAR' . 1 . 'VALEUR' = valq ;
'FINSI' ;
B . 1 . 1 . 0 = 'LECT' ;
*
'SI' ('OU' ('EGA' lbbt 0) ('EGA' lbbt 1)) ;
'SI' ('EXISTE' _smt) ;
mgdiv2 = 'NLIN' discg _mt _smt A B methgau ;
'SINON' ;
mgdiv2 = NLINP discg _mt A B methgau ;
'FINSI' ;
'SI' ('EGA' lbbt 1) ;
'SI' ('EXISTE' _smt) ;
mgdiv3 = 'NLIN' discg _mt _smt B A methgau ;
'SINON' ;
mgdiv3 = NLINP discg _mt B A methgau ;
'FINSI' ;
mgdiv2 = 'ET' mgdiv2 mgdiv3 ;
'FINSI' ;
'FINSI' ;
'SI' ('EGA' lbbt 2) ;
'SI' ('EXISTE' _smt) ;
mgdiv2 = 'NLIN' discg _mt _smt B A methgau ;
'SINON' ;
mgdiv2 = NLINP discg _mt B A methgau ;
'FINSI' ;
'FINSI' ;
*
'RESPRO' mgdiv2 ;
'FINPROC' ;
*
* End of procedure file GDIV2
*
*ENDPROCEDUR gdiv2
*BEGINPROCEDUR glno
************************************************************************
* NOM : GLNO
* DESCRIPTION : Une matrice de masse
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v2, 14/03/2006, mise à jour NLIN évolué
* VERSION : v1, 13/05/2004, version initiale
* HISTORIQUE : v1, 13/05/2004, 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' GLNO ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' tdisc*'TABLE' ;
*
'ARGUMENT' nomt*'MOT' ;
'ARGUMENT' valt*'CHPOINT' ;
'ARGUMENT' nomq/'MOT' ;
*
'SI' ('NON' ('EXISTE' nomq)) ;
nomq = 'QUAF' ;
'FINSI' ;
*
* Second membre
*
smb = GMASS2 _mt tdisc 'NPRI' nomt 'CPRI' valt 'NDUA' nomq ;
mat = GMASS2 _mt tdisc 'NPRI' nomq 'NDUA' nomq ;
cpro = 'KRES' mat smb ;
*
'RESPRO' cpro ;
'FINPROC' ;
*
* End of procedure file GLNO
*
*ENDPROCEDUR glno
*BEGINPROCEDUR gmass2
************************************************************************
* NOM : GMASS2
* DESCRIPTION : Une matrice de masse
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v2, 14/03/2006, mise à jour NLIN évolué
* VERSION : v1, 13/05/2004, version initiale
* HISTORIQUE : v1, 13/05/2004, 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' GMASS2 ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' _smt/'MAILLAGE' ;
'ARGUMENT' tdisc*'TABLE' ;
*
* Lectures
*
debug = FAUX ;
lmotcle = 'MOTS' 'NPRI' 'FPRI' 'CPRI' 'NDUA' 'FDUA' 'CDUA'
'NCOF' 'FCOF' 'CCOF' ;
* Il faut initialiser valt et valq, sinon on peut capturer ceux de
* la procédure appelante
valt = 'valt' ; valq = 'valq' ;
'REPETER' imotcle 0 ;
'ARGUMENT' motcle/'MOT' ;
'SI' ('NON' ('EXISTE' motcle)) ; 'QUITTER' imotcle ; 'FINSI' ;
'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
cherr = 'CHAINE' 'Keyword ' motcle ' unknown.' ; 'ERREUR' cherr ;
'FINSI' ;
'SI' ('EGA' motcle 'NPRI') ; 'ARGUMENT' nomt*'MOT' ; 'FINSI' ;
'SI' ('EGA' motcle 'NDUA') ; 'ARGUMENT' nomq*'MOT' ; 'FINSI' ;
'SI' ('EGA' motcle 'NCOF') ; 'ARGUMENT' nomo*'MOT' ; 'FINSI' ;
tst1 = 'EGA' motcle 'FPRI' ; tst2 = 'EGA' motcle 'FDUA' ;
tst = tst1 'OU' tst2 ;
'SI' tst ;
'SI' tst1 ; tt = TDISC . nomt ; 'FINSI' ;
'SI' tst2 ; tt = TDISC . nomq ; 'FINSI' ;
isvec = ('>' ('DIME' (tt. 'NOMINC')) 1) ;
'SI' isvec ; 'ARGUMENT' valv*'LISTREEL' ; 'SINON' ;
'ARGUMENT' valv*'FLOTTANT' ;
'FINSI' ;
'SI' tst1 ; valt = valv ; 'FINSI' ;
'SI' tst2 ; valq = valv ; 'FINSI' ;
'FINSI' ;
'SI' ('EGA' motcle 'FCOF') ; 'ARGUMENT' valo*'FLOTTANT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CPRI') ; 'ARGUMENT' valt*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CDUA') ; 'ARGUMENT' valq*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CCOF') ; 'ARGUMENT' valo*'CHPOINT' ; 'FINSI' ;
'FIN' imotcle ;
*
* Tests
*
discg = TDISC . 'GEOM' . 'DISC' ;
methgau = 'GAU7' ;
tnomt = TDISC . nomt ;
lvalt = 'NEG' ('TYPE' valt) 'MOT' ;
tnomq = TDISC . nomq ;
lvalq = 'NEG' ('TYPE' valq) 'MOT' ;
* Scalaire ou vecteur
ninct = 'DIME' (tnomt . 'NOMINC') ;
nincq = 'DIME' (tnomq . 'NOMINC') ;
'SI' ('NEG' ninct nincq) ;
cherr = 'CHAINE'
'les primales et duales nont pas le meme nombre de composantes' ;
'ERREUR' cherr ;
'FINSI' ;
ninc = ninct ;
*
lcof = 'EXISTE' TDISC nomo ;
'SI' lcof ; ncof = 1 ; tcof = TDISC . nomo ;
'SINON' ; ncof = 0 ;
'FINSI' ;
*
'SI' debug ;
'SI' lcof ; 'MESSAGE' 'Un coef a ete detecte' ;
'SINON' ; 'MESSAGE' 'pas de coef detecte' ;
'FINSI' ;
'FINSI' ;
*
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
idim = 0 ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
idim = 2 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
idim = 2 ;
iaxi = VRAI ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
idim = 3 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('EGA' vdim 1) ;
idim = 1 ;
iaxi = FAUX ;
'FINSI' ;
* 'MESSAGE' ('CHAINE' 'iaxi=' iaxi );
'SI' ('EGA' idim 0) ;
'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
'FINSI' ;
'SI' iaxi ;
dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
'FINSI' ;
*
* Optimisation possible : construire la matrice par blocs
* qd valt et valq ne sont pas donnés
*
numop = ninc ; numder = idim ; numvar = ninc ;
numdat = ncof ; numcof = ncof ;
A = ININLIN numop numvar numdat numcof numder ;
'SI' lcof ;
A . 'DAT' . 1 . 'NOMDDL' = tcof . 'NOMINC' . 1 ;
A . 'DAT' . 1 . 'DISC' = tcof . 'DISC' ;
A . 'DAT' . 1 . 'VALEUR' = valo ;
A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
ll = 'LECT' 1 ;
'SINON' ;
ll = 'LECT' ;
'FINSI' ;
lvt = 'EGA' ('TYPE' valt) 'LISTREEL' ;
'REPETER' iiinc ninc ;
iinc = &iiinc ;
A . 'VAR' . iinc . 'NOMDDL' = tnomt . 'NOMINC' . iinc ;
A . 'VAR' . iinc . 'DISC' = tnomt . 'DISC' ;
'SI' lvalt ;
'SI' lvt ;
A . 'VAR' . iinc . 'VALEUR' = 'EXTRAIRE' valt iinc ;
'SINON' ;
A . 'VAR' . iinc . 'VALEUR' = valt ;
'FINSI' ;
'FINSI' ;
A . iinc . iinc . 0 = ll ;
'FIN' iiinc ;
*
'SI' iaxi ;
numdat = 1 ;
numcof = 1 ;
'SINON' ;
numdat = 0 ;
numcof = 0 ;
'FINSI' ;
B = ININLIN numop numvar numdat numcof numder ;
'SI' iaxi ;
B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 1 . 'DISC' = discg ;
B . 'DAT' . 1 . 'VALEUR' = dprmt ;
B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
ll = 'LECT' 1 ;
'SINON' ;
ll = 'LECT' ;
'FINSI' ;
lvq = 'EGA' ('TYPE' valq) 'LISTREEL' ;
'REPETER' iiinc ninc ;
iinc = &iiinc ;
B . 'VAR' . iinc . 'NOMDDL' = tnomq . 'NOMINC' . iinc ;
B . 'VAR' . iinc . 'DISC' = tnomq . 'DISC' ;
'SI' lvalq ;
'SI' lvq ;
B . 'VAR' . iinc . 'VALEUR' = 'EXTRAIRE' valq iinc ;
'SINON' ;
B . 'VAR' . iinc . 'VALEUR' = valq ;
'FINSI' ;
'FINSI' ;
B . iinc . iinc . 0 = ll ;
'FIN' iiinc ;
*
'SI' ('EXISTE' _smt) ;
mgmass2 = 'NLIN' discg _mt _smt A B methgau ;
'SINON' ;
mgmass2 = NLINP discg _mt A B methgau ;
'FINSI' ;
*
'RESPRO' mgmass2 ;
'FINPROC' ;
*
* End of procedure file GMASS2
*
*ENDPROCEDUR gmass2
*BEGINPROCEDUR grig
************************************************************************
* NOM : GRIG
* DESCRIPTION :
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, ??/??/2007, version initiale
* HISTORIQUE : v1, ??/??/2007, 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' GRIG ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' tdisc*'TABLE' ;
*
* Lectures
*
debug = FAUX ;
lmotcle = 'MOTS' 'NPRI' 'FPRI' 'CPRI' 'NDUA' 'FDUA' 'CDUA'
'NCOF' 'FCOF' 'CCOF' 'LAPN' 'GMBT' ;
* Il faut initialiser valt et valq, sinon on peut capturer ceux de
* la procédure appelante
valt = 'valt' ; valq = 'valq' ;
llapn = 0 ;
'REPETER' imotcle 0 ;
'ARGUMENT' motcle/'MOT' ;
'SI' ('NON' ('EXISTE' motcle)) ; 'QUITTER' imotcle ; 'FINSI' ;
'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
cherr = 'CHAINE' 'Keyword ' motcle ' unknown.' ; 'ERREUR' cherr ;
'FINSI' ;
'SI' ('EGA' motcle 'NPRI') ; 'ARGUMENT' nomt*'MOT' ; 'FINSI' ;
'SI' ('EGA' motcle 'NDUA') ; 'ARGUMENT' nomq*'MOT' ; 'FINSI' ;
'SI' ('EGA' motcle 'NCOF') ; 'ARGUMENT' nomo*'MOT' ; 'FINSI' ;
tst1 = 'EGA' motcle 'FPRI' ; tst2 = 'EGA' motcle 'FDUA' ;
tst = tst1 'OU' tst2 ;
'SI' tst ;
'SI' tst1 ; tt = TDISC . nomt ; 'FINSI' ;
'SI' tst2 ; tt = TDISC . nomq ; 'FINSI' ;
isvec = ('>' ('DIME' (tt. 'NOMINC')) 1) ;
'SI' isvec ; 'ARGUMENT' valv*'LISTREEL' ; 'SINON' ;
'ARGUMENT' valv*'FLOTTANT' ;
'FINSI' ;
'SI' tst1 ; valt = valv ; 'FINSI' ;
'SI' tst2 ; valq = valv ; 'FINSI' ;
'FINSI' ;
'SI' ('EGA' motcle 'FCOF') ; 'ARGUMENT' valo*'FLOTTANT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CPRI') ; 'ARGUMENT' valt*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CDUA') ; 'ARGUMENT' valq*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CCOF') ; 'ARGUMENT' valo*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'LAPN') ; llapn = 1 ; 'FINSI' ;
'SI' ('EGA' motcle 'GMBT') ; llapn = 2 ; 'FINSI' ;
'FIN' imotcle ;
*
* Tests
*
discg = TDISC . 'GEOM' . 'DISC' ;
methgau = 'GAU7' ;
tnomt = TDISC . nomt ;
lvalt = 'NEG' ('TYPE' valt) 'MOT' ;
tnomq = TDISC . nomq ;
lvalq = 'NEG' ('TYPE' valq) 'MOT' ;
* Scalaire ou vecteur
ninct = 'DIME' (tnomt . 'NOMINC') ;
nincq = 'DIME' (tnomq . 'NOMINC') ;
'SI' ('NEG' ninct nincq) ;
cherr = 'CHAINE'
'les primales et duales nont pas le meme nombre de composantes' ;
'ERREUR' cherr ;
'FINSI' ;
'SI' ('NEG' ninct ('VALEUR' 'DIME')) ;
cherr = 'CHAINE'
'les inconnues doivent etre vectorielles' ;
'ERREUR' cherr ;
'FINSI' ;
*
ninc = ninct ;
*
lcof = 'EXISTE' TDISC nomo ;
'SI' lcof ; ncof = 1 ; tcof = TDISC . nomo ;
'SINON' ; ncof = 0 ;
'FINSI' ;
*
'SI' debug ;
'SI' lcof ; 'MESSAGE' 'Un coef a ete detecte' ;
'SINON' ; 'MESSAGE' 'pas de coef detecte' ;
'FINSI' ;
'FINSI' ;
*
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
idim = 0 ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
idim = 2 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
idim = 2 ;
iaxi = VRAI ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
idim = 3 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('EGA' vdim 1) ;
idim = 1 ;
iaxi = FAUX ;
'FINSI' ;
* 'MESSAGE' ('CHAINE' 'iaxi=' iaxi );
'SI' ('EGA' idim 0) ;
'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
'FINSI' ;
'SI' iaxi ;
rmt = 'COORDONNEE' 1 _mt ;
deupi = '*' PI 2.D0 ;
'FINSI' ;
*
* Optimisation possible : construire la matrice par blocs
* qd valt et valq ne sont pas donnés
*
*
*Bug ? numop = ('**' ninc 2) '+' 1 ;
numop = '**' ninc 2 ;
'SI' iaxi ; numop = '+' numop 1 ; 'FINSI' ;
numder = idim ;
numvar = ninc ;
ncof = '+' ncof 1 ;
*delete 'SI' iaxi ; ncof = '+' ncof 1 ; 'FINSI' ;
numdat = ncof ;
numcof = ncof ;
*
A = ININLIN numop numvar numdat numcof numder ;
*
lvt = 'EGA' ('TYPE' valt) 'LISTREEL' ;
'REPETER' iiinc ninc ;
iinc = &iiinc ;
A . 'VAR' . iinc . 'NOMDDL' = tnomt . 'NOMINC' . iinc ;
A . 'VAR' . iinc . 'DISC' = tnomt . 'DISC' ;
'SI' lvalt ;
'SI' lvt ;
A . 'VAR' . iinc . 'VALEUR' = 'EXTRAIRE' valt iinc ;
'SINON' ;
A . 'VAR' . iinc . 'VALEUR' = valt ;
'FINSI' ;
'FINSI' ;
'FIN' iiinc ;
*
icof = 0 ;
ll = 'LECT' ;
icof = '+' icof 1 ;
A . 'DAT' . icof . 'NOMDDL' = 'MOTS' 'SCAL' ;
A . 'DAT' . icof . 'DISC' = 'CSTE' ;
A . 'DAT' . icof . 'VALEUR' = 2.D0 ;
A . 'COF' . icof . 'COMPOR' = 'IDEN' ;
A . 'COF' . icof . 'LDAT' = 'LECT' icof ;
ll = 'LECT' ;
ll2 = 'LECT' icof ;
'SI' lcof ;
icof = '+' icof 1 ;
A . 'DAT' . icof . 'NOMDDL' = tcof . 'NOMINC' . 1 ;
A . 'DAT' . icof . 'DISC' = tcof . 'DISC' ;
A . 'DAT' . icof . 'VALEUR' = valo ;
A . 'COF' . icof . 'COMPOR' = 'IDEN' ;
A . 'COF' . icof . 'LDAT' = 'LECT' icof ;
ll = 'ET' ll ('LECT' icof) ;
ll2 = 'ET' ll2 ('LECT' icof) ;
'FINSI' ;
*
iop = 0 ;
'REPETER' iidim idim ;
'REPETER' jidim idim ;
iop = '+' iop 1 ;
'SI' ('EGA' &iidim &jidim) ;
'SI' ('EGA' llapn 0) ;
A . iop . &iidim . &jidim = ll2 ;
'SINON' ;
A . iop . &iidim . &jidim = ll ;
'FINSI' ;
'SINON' ;
'SI' ('NEG' llapn 2) ;
A . iop . &iidim . &jidim = ll ;
'FINSI' ;
'SI' ('NEG' llapn 1) ;
A . iop . &jidim . &iidim = ll ;
'FINSI' ;
'FINSI' ;
'FIN' jidim ;
'FIN' iidim ;
'SI' iaxi ;
iop = '+' iop 1 ;
'SI' ('EGA' llapn 0) ;
A . iop . 1 . 0 = ll2 ;
'SINON' ;
A . iop . 1 . 0 = ll ;
'FINSI' ;
'FINSI' ;
*
'SI' iaxi ;
numdat = 2 ;
numcof = 2 ;
'SINON' ;
numdat = 0 ;
numcof = 0 ;
'FINSI' ;
*
B = ININLIN numop numvar numdat numcof numder ;
*
icof = 0 ;
*
'SI' iaxi ;
icof = '+' icof 1 ;
B . 'DAT' . icof . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . icof . 'DISC' = discg ;
B . 'DAT' . icof . 'VALEUR' = rmt ;
B . 'COF' . icof . 'COMPOR' = 'IDEN' ;
B . 'COF' . icof . 'LDAT' = 'LECT' icof ;
icof = '+' icof 1 ;
B . 'DAT' . icof . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . icof . 'DISC' = 'CSTE' ;
B . 'DAT' . icof . 'VALEUR' = deupi ;
B . 'COF' . icof . 'COMPOR' = 'IDEN' ;
B . 'COF' . icof . 'LDAT' = 'LECT' icof ;
ll = 'LECT' ('-' icof 1) icof ;
mic = '*' ('-' icof 1) -1 ;
llb = 'LECT' mic icof ;
'FINSI' ;
*
lvq = 'EGA' ('TYPE' valq) 'LISTREEL' ;
'REPETER' iiinc ninc ;
iinc = &iiinc ;
B . 'VAR' . iinc . 'NOMDDL' = tnomq . 'NOMINC' . iinc ;
B . 'VAR' . iinc . 'DISC' = tnomq . 'DISC' ;
'SI' lvalq ;
'SI' lvq ;
B . 'VAR' . iinc . 'VALEUR' = 'EXTRAIRE' valq iinc ;
'SINON' ;
B . 'VAR' . iinc . 'VALEUR' = valq ;
'FINSI' ;
'FINSI' ;
'FIN' iiinc ;
*
iop = 0 ;
'REPETER' iidim idim ;
'REPETER' jidim idim ;
iop = '+' iop 1 ;
B . iop . &iidim . &jidim = ll ;
'FIN' jidim ;
'FIN' iidim ;
'SI' iaxi ;
iop = '+' iop 1 ;
B . iop . 1 . 0 = llb ;
* B . iop . 1 . 0 = ll ;
'FINSI' ;
*
mgrig = NLINP discg _mt A B methgau ;
* Integration par parties
* mgrig = '*' mgrig -1.D0 ;
*
'RESPRO' mgrig ;
'FINPROC' ;
*
* End of procedure file GRIG
*
*ENDPROCEDUR grig
*BEGINPROCEDUR gugrad2
************************************************************************
* NOM : GUGRAD2
* DESCRIPTION : Une matrice de convection
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v2, 14/03/2006, mise à jour NLIN évolué
* VERSION : v1, 13/05/2004, version initiale
* HISTORIQUE : v1, 13/05/2004, 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' GUGRAD2 ;
'ARGUMENT' _mt*'MAILLAGE' ;
'ARGUMENT' _smt/'MAILLAGE' ;
'ARGUMENT' tdisc*'TABLE' ;
*
* Lectures
*
debug = FAUX ;
lmotcle = 'MOTS' 'NPRI' 'FPRI' 'CPRI' 'NDUA' 'FDUA' 'CDUA'
'NVIT' 'FVIT' 'CVIT' 'NCOF' 'FCOF' 'CCOF' ;
'REPETER' imotcle 0 ;
'ARGUMENT' motcle/'MOT' ;
'SI' ('NON' ('EXISTE' motcle)) ; 'QUITTER' imotcle ; 'FINSI' ;
'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
cherr = 'CHAINE' 'Keyword ' motcle ' unknown.' ; 'ERREUR' cherr ;
'FINSI' ;
'SI' ('EGA' motcle 'NPRI') ; 'ARGUMENT' nomt*'MOT' ; 'FINSI' ;
'SI' ('EGA' motcle 'NDUA') ; 'ARGUMENT' nomq*'MOT' ; 'FINSI' ;
'SI' ('EGA' motcle 'NCOF') ; 'ARGUMENT' nomo*'MOT' ; 'FINSI' ;
'SI' ('EGA' motcle 'NVIT') ; 'ARGUMENT' nomu*'MOT' ; 'FINSI' ;
tst1 = 'EGA' motcle 'FPRI' ; tst2 = 'EGA' motcle 'FDUA' ;
tst = tst1 'OU' tst2 ;
'SI' tst ;
'SI' tst1 ; tt = TDISC . nomt ; 'FINSI' ;
'SI' tst2 ; tt = TDISC . nomq ; 'FINSI' ;
isvec = ('>' ('DIME' (tt. 'NOMINC')) 1) ;
'SI' isvec ; 'ARGUMENT' valv*'LISTREEL' ; 'SINON' ;
'ARGUMENT' valv*'FLOTTANT' ;
'FINSI' ;
'SI' tst1 ; valt = valv ; 'FINSI' ;
'SI' tst2 ; valq = valv ; 'FINSI' ;
'FINSI' ;
'SI' ('EGA' motcle 'FCOF') ; 'ARGUMENT' valo*'FLOTTANT' ; 'FINSI' ;
'SI' ('EGA' motcle 'FVIT') ; 'ARGUMENT' valu*'LISTREEL' ; 'FINSI' ;
'SI' ('EGA' motcle 'CPRI') ; 'ARGUMENT' valt*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CDUA') ; 'ARGUMENT' valq*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CCOF') ; 'ARGUMENT' valo*'CHPOINT' ; 'FINSI' ;
'SI' ('EGA' motcle 'CVIT') ; 'ARGUMENT' valu*'CHPOINT' ; 'FINSI' ;
'FIN' imotcle ;
*
* Tests
*
discg = TDISC . 'GEOM' . 'DISC' ;
methgau = 'GAU7' ;
tnomt = TDISC . nomt ;
lvalt = 'NEG' ('TYPE' valt) 'MOT' ;
tnomq = TDISC . nomq ;
lvalq = 'NEG' ('TYPE' valq) 'MOT' ;
tnomu = TDISC . nomu ;
* Scalaire ou vecteur
ninct = 'DIME' (tnomt . 'NOMINC') ;
nincq = 'DIME' (tnomq . 'NOMINC') ;
'SI' ('NEG' ninct nincq) ;
cherr = 'CHAINE'
'les primales et duales nont pas le meme nombre de composantes' ;
'ERREUR' cherr ;
'FINSI' ;
ninc = ninct ;
*
lcof = 'EXISTE' TDISC nomo ;
'SI' lcof ; ncof = 1 ; tcof = TDISC . nomo ;
'SINON' ; ncof = 0 ;
'FINSI' ;
*
'SI' debug ;
'SI' lcof ; 'MESSAGE' 'Un coef a ete detecte' ;
'SINON' ; 'MESSAGE' 'pas de coef detecte' ;
'FINSI' ;
'FINSI' ;
*
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
idim = 0 ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
idim = 2 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
idim = 2 ;
iaxi = VRAI ;
'FINSI' ;
'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
idim = 3 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('EGA' vdim 1) ;
idim = 1 ;
iaxi = FAUX ;
'FINSI' ;
'SI' ('EGA' idim 0) ;
'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
'FINSI' ;
'SI' iaxi ;
dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
'FINSI' ;
* Scalaire ou vecteur
nincu = 'DIME' (tnomu . 'NOMINC') ;
'SI' ('NEG' nincu idim) ;
cherr = 'CHAINE'
'la vitesse doit etre un vecteur' ;
'ERREUR' cherr ;
'FINSI' ;
ncof = '+' ncof nincu ;
*
* Optimisation possible : construire la matrice par blocs
* qd valt et valq ne sont pas donnés
*
numop = ninc ; numder = idim ; numvar = ninc ;
numdat = ncof ; numcof = ncof ;
A = ININLIN numop numvar numdat numcof numder ;
*
lvt = 'EGA' ('TYPE' valt) 'LISTREEL' ;
'REPETER' iiinc ninc ;
iinc = &iiinc ;
A . 'VAR' . iinc . 'NOMDDL' = tnomt . 'NOMINC' . iinc ;
A . 'VAR' . iinc . 'DISC' = tnomt . 'DISC' ;
'SI' lvalt ;
'SI' lvt ;
A . 'VAR' . iinc . 'VALEUR' = 'EXTRAIRE' valt iinc ;
'SINON' ;
A . 'VAR' . iinc . 'VALEUR' = valt ;
'FINSI' ;
'FINSI' ;
'FIN' iiinc ;
*
lvu = 'EGA' ('TYPE' valu) 'LISTREEL' ;
icof = 0 ;
'REPETER' iiincu nincu ;
iincu = &iiincu ;
icof = icof '+' 1 ;
A . 'DAT' . icof . 'NOMDDL' = tnomu . 'NOMINC' . iincu ;
A . 'DAT' . icof . 'DISC' = tnomu . 'DISC' ;
'SI' lvu ;
A . 'DAT' . icof . 'VALEUR' = 'EXTRAIRE' valu iincu ;
'SINON' ;
A . 'DAT' . icof . 'VALEUR' = valu ;
'FINSI' ;
A . 'COF' . icof . 'COMPOR' = 'IDEN' ;
A . 'COF' . icof . 'LDAT' = 'LECT' icof ;
'FIN' iiincu ;
'SI' lcof ;
icof = icof '+' 1 ;
A . 'DAT' . icof . 'NOMDDL' = tcof . 'NOMINC' . 1 ;
A . 'DAT' . icof . 'DISC' = tcof . 'DISC' ;
A . 'DAT' . icof . 'VALEUR' = valo ;
A . 'COF' . icof . 'COMPOR' = 'IDEN' ;
A . 'COF' . icof . 'LDAT' = 'LECT' icof ;
ll = 'LECT' icof ;
'SINON' ;
ll = 'LECT' ;
'FINSI' ;
*
'REPETER' iiinc ninc ;
iinc = &iiinc ;
'REPETER' iiidim idim ;
iidim = &iiidim ;
A . iinc . iinc . iidim = ('ET' ('LECT' iidim) ll) ;
'FIN' iiidim ;
'FIN' iiinc ;
*
'SI' iaxi ;
numdat = 1 ;
numcof = 1 ;
'SINON' ;
numdat = 0 ;
numcof = 0 ;
'FINSI' ;
B = ININLIN numop numvar numdat numcof numder ;
'SI' iaxi ;
B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
B . 'DAT' . 1 . 'DISC' = discg ;
B . 'DAT' . 1 . 'VALEUR' = dprmt ;
B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
ll = 'LECT' 1 ;
'SINON' ;
ll = 'LECT' ;
'FINSI' ;
lvq = 'EGA' ('TYPE' valq) 'LISTREEL' ;
'REPETER' iiinc ninc ;
iinc = &iiinc ;
B . 'VAR' . iinc . 'NOMDDL' = tnomq . 'NOMINC' . iinc ;
B . 'VAR' . iinc . 'DISC' = tnomq . 'DISC' ;
'SI' lvalq ;
'SI' lvq ;
B . 'VAR' . iinc . 'VALEUR' = 'EXTRAIRE' valq iinc ;
'SINON' ;
B . 'VAR' . iinc . 'VALEUR' = valq ;
'FINSI' ;
'FINSI' ;
B . iinc . iinc . 0 = ll ;
'FIN' iiinc ;
*
'SI' ('EXISTE' _smt) ;
mgugrad2 = 'NLIN' discg _mt _smt A B methgau ;
'SINON' ;
mgugrad2 = NLINP discg _mt A B methgau ;
'FINSI' ;
*
'RESPRO' mgugrad2 ;
'FINPROC' ;
*
* End of procedure file GUGRAD2
*
*ENDPROCEDUR gugrad2
*BEGINPROCEDUR log10
************************************************************************
* NOM : LOG10
* DESCRIPTION : Log_10
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 18/02/2003, version initiale
* HISTORIQUE : v1, 18/02/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' LOG10 ;
'REPETER' bouc ;
ok = FAUX ;
'ARGUMENT' fl/'FLOTTANT' ;
'ARGUMENT' lr/'LISTREEL' ;
'ARGUMENT' cp/'CHPOINT ' ;
'ARGUMENT' cm/'MCHAML ' ;
'SI' ('EXISTE' fl) ;
ok = VRAI ;
'RESPRO' ('/' ('LOG' fl) ('LOG' 10.D0)) ;
'FINSI' ;
'SI' ('EXISTE' lr) ;
ok = VRAI ;
'RESPRO' ('/' ('LOG' lr) ('LOG' 10.D0)) ;
'FINSI' ;
'SI' ('EXISTE' cp) ;
ok = VRAI ;
'RESPRO' ('/' ('LOG' cp) ('LOG' 10.D0)) ;
'FINSI' ;
'SI' ('EXISTE' cm) ;
ok = VRAI ;
'RESPRO' ('/' ('LOG' cm) ('LOG' 10.D0)) ;
'FINSI' ;
'SI' ('NON' ok) ;
'QUITTER' bouc ;
'FINSI' ;
'FIN' bouc ;
*
* End of procedure file LOG10
*
'FINPROC' ;
*ENDPROCEDUR log10
*BEGINPROCEDUR modulo
************************************************************************
* 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' ;
*ENDPROCEDUR modulo
*BEGINPROCEDUR mydal
************************************************************************
* NOM : MYDAL
* DESCRIPTION :
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, ??/??/2007, version initiale
* HISTORIQUE : v1, ??/??/2007, 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' MYDAL ;
'ARGUMENT' p1*'POINT' p2*'POINT' p3*'POINT' p4*'POINT' ;
lden = 'PROG' ;
'REPETER' bcl 0 ;
'ARGUMENT' den/'FLOTTANT' ;
'SI' ('EXISTE' den) ;
lden = 'ET' lden den ;
'SINON' ;
'QUITTER' bcl ;
'FINSI' ;
'FIN' bcl ;
dlden = 'DIME' lden ;
'SI' ('EGA' dlden 1) ;
den = 'EXTRAIRE' lden 1 ;
denxg = den ; denxd = den ;
denyb = den ; denyh = den ;
'FINSI' ;
'SI' ('EGA' dlden 2) ;
denx = 'EXTRAIRE' lden 1 ;
denxg = denx ; denxd = denx ;
deny = 'EXTRAIRE' lden 2 ;
denyb = deny ; denyh = deny ;
'FINSI' ;
'SI' ('EGA' dlden 4) ;
denxg = 'EXTRAIRE' lden 1 ;
denxd = 'EXTRAIRE' lden 2 ;
denyb = 'EXTRAIRE' lden 3 ;
denyh = 'EXTRAIRE' lden 4 ;
'FINSI' ;
l1 = 'DROIT' p1 p2 'DINI' denxg 'DFIN' denxd ;
l2 = 'DROIT' p2 p3 'DINI' denyb 'DFIN' denyh ;
l3 = 'DROIT' p3 p4 'DINI' denxd 'DFIN' denxg ;
l4 = 'DROIT' p4 p1 'DINI' denyh 'DFIN' denyb ;
mt = 'DALLER' l1 l2 l3 l4 ;
'RESPRO' mt ;
*
* End of procedure file MYDAL
*
'FINPROC' ;
*ENDPROCEDUR mydal
*BEGINPROCEDUR quafme
************************************************************************
* NOM : QUAFME
* DESCRIPTION :
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 01/12/2004, version initiale
* HISTORIQUE : v1, 01/12/2004, 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' QUAFME ;
'REPETER' bcl ;
'ARGUMENT' mquad/'MAILLAGE' ;
'SI' ('EXISTE' mquad) ;
mquaf = 'CHANGER' mquad 'QUAF' ;
* mlin = 'CHANGER' mquad 'LINEAIRE' ;
'RESPRO' mquaf ;
'SINON' ;
'QUITTER' bcl ;
'FINSI' ;
'FIN' bcl ;
'FINPROC' ;
*
* End of procedure file QUAFME
*
*ENDPROCEDUR quafme
*BEGINPROCEDUR redus
************************************************************************
* NOM : REDUS
* DESCRIPTION :
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 01/12/2004, version initiale
* HISTORIQUE : v1, 01/12/2004, 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' REDUS ;
'ARGUMENT' mred*'MAILLAGE' ;
'REPETER' bcl ;
'ARGUMENT' chpo/'CHPOINT' ;
'SI' ('EXISTE' chpo) ;
chpor = 'REDU' chpo mred ;
'RESPRO' chpor ;
'SINON' ;
'QUITTER' bcl ;
'FINSI' ;
'FIN' bcl ;
'FINPROC' ;
*
* End of procedure file REDUS
*
*ENDPROCEDUR redus
*BEGINPROCEDUR scottm
************************************************************************
* NOM : SCOTTM
* DESCRIPTION :
* Corrélations issues de
*@Article{scottmirza,
* author = {P.S. Scott and F.A. Mirza and J. Vlachopoulos},
* title = {A Finite Element Analysis of Laminar Flows through Planar and Axisymmetric abrupt expansions},
* journal = {Computers & Fluids},
* year = {1986},
* volume = {14},
* number = {4},
* pages = {423 - 432},
*}
* donnant respectivement : Lr : longueur de la recirculation
* Lc : centre de la recirculation
* Rei : intensité relative de la recirculation
* en fonction de : exprat (expansion ratio)
* Re (Reynolds basé sur le diamètre d'entrée)
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : stephane.gounand@cea.fr
**********************************************************************
* VERSION : v1, 13/01/2011, version initiale
* HISTORIQUE : v1, 13/01/2011, 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' SCOTTM ;
'ARGUMENT' exprat*'FLOTTANT' ;
'ARGUMENT' Re*'FLOTTANT' ;
vmod = 'VALEUR' 'MODE' ;
alpha = 'alpha' ;
'SI' ('EGA' vmod 'AXIS') ;
'SI' ('EGA' exprat 1.5 1.D-6) ;
alpha = 0.0125 ;
beta = 0.1695e-2 ;
lambda = 0.085 ;
theta = 0.0374 ;
epsilon = 0.0117 ;
'FINSI' ;
'SI' ('EGA' exprat 2. 1.D-6) ;
alpha = 0.0455 ;
beta = 0.552e-2 ;
lambda = 0.325 ;
theta = 0.126 ;
epsilon = 0.0229 ;
'FINSI' ;
'SI' ('EGA' exprat 3. 1.D-6) ;
alpha = 0.11 ;
beta = 2.65e-2 ;
lambda = 0.105 ;
theta = 0.378 ;
epsilon = 0.0354 ;
'FINSI' ;
'SI' ('EGA' exprat 4. 1.D-6) ;
alpha = 0.17 ;
beta = 4.93e-2 ;
lambda = 0.0 ;
theta = 0.65 ;
epsilon = 0.0455 ;
'FINSI' ;
'SINON' ;
'SI' ('EGA' exprat 1.5 1.D-6) ;
alpha = 0.0093 ;
beta = 0.133e-2 ;
lambda = 0.08 ;
theta = 0.006 ;
epsilon = 0.011 ;
'FINSI' ;
'SI' ('EGA' exprat 2. 1.D-6) ;
alpha = 0.0347 ;
beta = 0.58e-2 ;
lambda = 0.125 ;
theta = 0.025 ;
epsilon = 0.0171 ;
'FINSI' ;
'SI' ('EGA' exprat 3. 1.D-6) ;
alpha = 0.101 ;
beta = 2.73e-2 ;
lambda = -0.05 ;
theta = 0.0735 ;
epsilon = 0.0311 ;
'FINSI' ;
'SI' ('EGA' exprat 4. 1.D-6) ;
alpha = 0.178 ;
beta = 5.78e-2 ;
lambda = -0.398 ;
theta = 0.125 ;
epsilon = 0.039 ;
'FINSI' ;
'FINSI' ;
'SI' ('NEG' ('TYPE' alpha) 'FLOTTANT') ;
cherr = 'CHAINE' 'exprat=' exprat ' incorrect' ;
'ERREUR' cherr ;
'FINS' ;
Lr = '*' alpha Re ;
Lc = '+' ('*' beta Re) lambda ;
rei = '*' ('-' 1. ('EXP' ('*' ('*' Re epsilon) -1.)))
theta ;
'RESPRO' rei Lc Lr ;
*
* End of procedure file SCOTTM
*
'FINPROC' ;
*ENDPROCEDUR scottm
*BEGINPROCEDUR trvec
************************************************************************
* NOM : TRVEC
* DESCRIPTION : Trace des champs de vecteurs
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, ??/??/2007, version initiale
* HISTORIQUE : v1, ??/??/2007, 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' TRVEC ;
*'ARGUMENT' tdisc*'TABLE' ;
*'ARGUMENT' motdom*'MOT' ;
'ARGUMENT' tdom*'MAILLAGE' ;
*
tvec = 'TABLE' ; ttit = 'TABLE' ;
i = 0 ;
lcoul = 'MOTS' 'JAUN' 'ROUG' 'BLAN' 'TURQ' 'VERT' 'OLIV'
'AZUR' 'ORAN' 'VIOL' 'GRIS' 'OCEA' ;
*
'REPETER' livec 0 ;
'SI' ('EGA' i 0) ;
'ARGUMENT' ccvec*'CHPOINT' ;
'SINON' ;
'ARGUMENT' ccvec/'CHPOINT' ;
'FINSI' ;
'SI' ('EXISTE' ccvec) ;
'ARGUMENT' ttvec*'MOT' ;
'SINON' ;
'QUITTER' livec ;
'FINSI' ;
i = '+' i 1 ;
* 'MESSAGE' ('CHAINE' 'i=' i) ;
* 'LISTE' ccvec ;
* 'LISTE' tvec ;
tvec . i = ccvec ;
ttit . i = ttvec ;
'FIN' livec ;
'ARGUMENT' echv/'FLOTTANT' ;
'ARGUMENT' lnclk/'LOGIQUE' ;
'SI' ('NON' ('EXISTE' lnclk)) ;
lnclk = faux ;
'FINSI' ;
*
lmax = 'PROG' ;
'REPETER' ii i ;
mm = 'MAXIMUM' (tvec . &ii) 'ABS' ;
lmax = 'ET' lmax ('PROG' mm) ;
'FIN' ii ;
mm = '+' ('MAXIMUM' lmax) 1.D-60 ;
'SI' ('NON' ('EXISTE' echv)) ;
vmodo = 'EGA' ('VALEUR' 'MODE') 'AXIS' ;
'SI' vmodo ; 'OPTI' 'MODE' 'PLAN' ; 'FINSI' ;
ctail = gmass2 ('CHANGER' tdom 'QUAF') tdisc
'NPRI' 'CSTE' 'FPRI' 1. 'NDUA' 'CSTE' 'FDUA' 1. ;
* 'LISTE' ctail ;
'SI' vmodo ; 'OPTI' 'MODE' 'AXIS' ; 'FINSI' ;
vdim = 'VALEUR' 'DIME' ;
dimm = DEADUTIL 'DIMM' tdom ;
* ctail = '**' ctail ('/' 1. ('-' vdim 1)) ;
ctail = '**' ctail ('/' 1. dimm) ;
tail = '**' ('*' ('MAXIMUM' ctail) ('MINIMUM' ctail)) 0.5 ;
*'LISTE' tail ;
*'LISTE' mm ;
echv = '/' ('*' 0.9 tail) mm ;
'FINSI' ;
tit = 'CHAINE' 'Max. =' (formar mm 2) ;
'REPETER' ii i ;
cou = EXMOMOD lcoul &ii ;
tvec . &ii = 'VECT' (tvec . &ii) echv 'DEPL' cou ;
tit = 'CHAINE' tit ' ' cou '=' (ttit . &ii) ;
'FIN' ii ;
'SI' lnclk ;
'TRACER' (@stbl tvec) tdom 'TITR' tit 'NCLK' ;
'SINON' ;
'TRACER' (@stbl tvec) tdom 'TITR' tit ;
'FINSI' ;
*
* End of procedure file TRVEC
*
'FINPROC' ;
*ENDPROCEDUR trvec
*BEGINPROCEDUR vide
************************************************************************
* NOM : VIDE
* DESCRIPTION : Construit un objet vide
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 14/09/2004, version initiale
* HISTORIQUE : v1, 14/09/2004, 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' VIDE ;
'REPETER' bcl 0 ;
'ARGUMENT' typ/'MOT' ;
'SI' ('NON' ('EXISTE' typ)) ;
'QUITTER' bcl ;
'FINSI' ;
vdim = 'VALEUR' 'DIME' ;
'SI' ('EGA' vdim 1) ;
p1 = 'POIN' 0. ;
'FINSI' ;
'SI' ('EGA' vdim 2) ;
p1 = 'POIN' 0. 0. ;
'FINSI' ;
'SI' ('EGA' vdim 3) ;
p1 = 'POIN' 0. 0. 0.;
'FINSI' ;
p2 = 'PLUS' p1 p1 ;
mp1 = 'MANUEL' 'POI1' p1 ;
mp2 = 'MANUEL' 'POI1' p2 ;
'SI' ('EGA' typ 'MAIL') ;
mailvid = mp1 'ELEM' 'APPUYE' 'STRICTEMENT' mp2 'NOVERIF' ;
'RESPRO' mailvid ;
'FINSI' ;
'SI' ('EGA' typ 'CHPO') ;
chp1 = 'MANUEL' 'CHPO' mp1 1 'T' 0.D0 'NATURE' 'DISCRET' ;
chpvid = 'EXCO' 'Q' chp1 'NOID' ;
'RESPRO' chpvid ;
'FINSI' ;
'SI' ('EGA' typ 'RIGI') ;
rig1 = 'MANUEL' 'RIGIDITE' mp1 ('MOTS' 'T') ('PROG' 0.D0) ;
rigvid = 'EXTRAIRE' rig1 'RIGI' 'MULT' ;
'RESPRO' rigvid ;
'FINSI' ;
'FIN' bcl ;
*
* End of procedure file VIDE
*
'FINPROC' ;
*ENDPROCEDUR vide
*
******************************************
* *
* Procédure principale de CALCUL *
* *
******************************************
*
'DEBPROC' CALCUL ;
'ARGUMENT' exprat*'FLOTTANT' ;
'ARGUMENT' nr*'ENTIER' ;
'ARGUMENT' Re*'FLOTTANT' ;
'ARGUMENT' iaxi*'LOGIQUE' ;
*
'SAUTER' 2 'LIGNE' ;
'MESSAGE' ('CHAINE' '************ Sudden expansion ***********') ;
'MESSAGE' ('CHAINE' 'expansion ratio =' (formar exprat 2)) ;
'MESSAGE' ('CHAINE' 'nr =' (formar nr 2)) ;
'MESSAGE' ('CHAINE' 'Re =' (formar Re 2)) ;
'MESSAGE' ('CHAINE' 'iaxi =' iaxi) ;
*
titg = 'CHAINE' 'xr=' (formar exprat 1) ';Re='(formar Re 2) ;
'SI' iaxi ;
titg = 'CHAINE' ' Axi;' titg ;
'SINON' ;
titg = 'CHAINE' ' Plan;' titg ;
'FINSI' ;
*
'OPTION' 'DIME' 2 'ISOV' 'SULI' ;
'SI' iaxi ; 'OPTI' 'MODE' 'AXIS' ; 'FINSI' ;
*
'OPTI' 'ELEM' 'QUA8' ;
methgau = 'GAU7' ;
nitermax = 40 ;
'SI' ('<' Re 10.) ; omeg = 1.0 ; 'SINON' ; omeg = 0.75 ; 'FINSI' ;
mdvquit = 1.D-4 ;
*
**************************************
* Modèle *
**************************************
*
discg = 'LINE' ; discv = 'QUAF' ; discp = 'LINM' ;
vdim = 'VALEUR' 'DIME' ;
vmod = 'VALEUR' 'MODE' ;
laxi = 'EGA' vmod 'AXIS' ;
'SI' laxi ;
nomvit = 'MOTS' 'UR' 'UZ' ;
nomfor = 'MOTS' 'FR' 'FZ' ;
'SINON' ;
nomvit = 'MOTS' 'UX' 'UY' ;
nomfor = 'MOTS' 'FX' 'FY' ;
'FINSI' ;
nv1 = 'EXTRAIRE' nomvit 1 ;
nv2 = 'EXTRAIRE' nomvit 2 ;
nomul = 'MOTS' 'LX' ;
nomuld = 'MOTS' 'FLX' ;
'SI' ('EGA' discp 'LINM') ;
nompre = 'MOTS' 'LX1' 'LX2' 'LX3' ;
nomprd = 'MOTS' 'FLX1' 'FLX2' 'FLX3' ;
'SINON' ;
nompre = 'MOTS' 'LXP' ;
nomprd = 'MOTS' 'FLXP' ;
'FINSI' ;
nomsca = 'MOTS' 'SCAL' ;
mpri = nomvit 'ET' nomul 'ET' nompre ;
mdua = nomfor 'ET' nomuld 'ET' nomprd ;
*
TDISC = 'TABLE' ;
TDISC . 'GEOM' = 'TABLE' ;
TDISC . 'GEOM' . 'DISC' = discg ;
TDISC . 'UN' = 'TABLE' ;
TDISC . 'UN' . 'DISC' = discv ;
TDISC . 'UN' . 'NOMINC' = 'TABLE' ;
'REPETER' idim vdim ;
TDISC . 'UN' . 'NOMINC' . &idim = 'MOTS' ('EXTRAIRE' nomvit &idim) ;
'FIN' idim ;
TDISC . 'PN' = 'TABLE' ;
TDISC . 'PN' . 'DISC' = discp ;
TDISC . 'PN' . 'NOMINC' = 'TABLE' ;
TDISC . 'PN' . 'NOMINC' . 1 = nompre ;
lmdisc = 'MOTS' 'CSTE' 'LINE' 'LINB' 'QUAF' ;
'REPETER' iidisc ('DIME' lmdisc) ;
mdisc = 'EXTRAIRE' lmdisc &iidisc ;
tdisc . mdisc = 'TABLE' ;
tdisc . mdisc . 'DISC' = mdisc ;
tdisc . mdisc . 'NOMINC' = 'TABLE' ;
tdisc . mdisc . 'NOMINC' . 1 = nomsca ;
mdiscv = 'CHAINE' mdisc 'V' ;
tdisc . mdiscv = 'TABLE' ;
tdisc . mdiscv . 'DISC' = mdisc ;
tdisc . mdiscv . 'NOMINC' = 'TABLE' ;
'REPETER' idim vdim ;
TDISC . mdiscv. 'NOMINC' . &idim =
'MOTS' ('EXTRAIRE' nomvit &idim) ;
'FIN' idim ;
'FIN' iidisc ;
*
**************************************
* Maillage *
**************************************
*
D1 = 1. ; D2 = exprat ;
L1 = 2. ; mL1 = '*' L1 -1. ;
* Estimation de la longueur d'après Scott et Mirza
'SI' complet ;
ree = 'MAXIMUM' ('PROG' 200. Re) ;
'SINON' ;
ree = 'MAXIMUM' ('PROG' 100. Re) ;
'FINSI' ;
L2 = 0.044 '*' exprat '*' ree ;
R2 = '/' D2 2. ;
R1 = '/' D1 2. ;
R12 = '-' R2 R1 ;
reia Lca Lra = SCOTTM exprat Re ;
'MESSAGE' ('CHAINE' 'Channel length =' (formar L2 2)) ;
'MESSAGE' ('CHAINE' 'Predicted Rel. eddy int. =' (formar reia 3)) ;
'MESSAGE' ('CHAINE' 'Predicted eddy center =' (formar Lca 3)) ;
'MESSAGE' ('CHAINE' 'Predicted Reatt. length =' (formar Lra 3)) ;
yc = 'MAXIMUM' ('PROG' Lra 0.4) ;
*
lr = 'PROG' R1 R12 ;
milr = 'MINIMUM' lr ;
dx = '/' milr nr ;
dyp = dx ; dyg1 = '/' L1 nr ; dyg2 = '/' L2 nr ;
*
pA = 0. mL1 ; pB = R1 mL1 ;
pC = 0. 0. ; pD = R1 0. ; pE = R2 0. ;
pF = 0. yc ; pG = R1 yc ; pH = R2 yc ;
poI = 0. L2 ; pJ = R1 L2 ; pK = R2 L2 ;
*
mt1 = MYDAL pA pB pD pC dx dx dyg1 dyp ;
mt2 = MYDAL pC pD pG pF dx dx dyp dyp ;
mt3 = MYDAL pD pE pH pG dx dx dyp dyp ;
mt4 = MYDAL pF pG pJ poI dx dx dyp dyg2 ;
mt5 = MYDAL pG pH pK pJ dx dx dyp dyg2 ;
*
mt = mt1 'ET' mt2 'ET' mt3 'ET' mt4 'ET' mt5 ;
'ELIMINATION' mt 1.D-6 ;
'SI' graph ;
tit = 'CHAINE' 'Maillage : ' ('NBEL' mt) ' elements' ;
'TRACER' mt 'TITR' tit ;
'FINSI' ;
cmt = 'CONTOUR' mt ;
*
bas = 'ELEM' cmt 'COMPRIS' pA pB ;
dro = 'ELEM' cmt 'COMPRIS' pB pK ;
dror = 'ELEM' cmt 'COMPRIS' pE pK ;
hau = 'ELEM' cmt 'COMPRIS' pK poI ;
gau = 'ELEM' cmt 'COMPRIS' poI pA ;
*
'SI' graph ;
tit = 'CHAINE' 'Bords du Maillage ' ;
'TRACER' (bas 'ET' hau 'ET' dro 'ET' gau) 'TITR' tit ;
'FINSI' ;
*
'SI' ('EGA' discv 'LINB') ;
'ERREUR' 5 ;
'FINSI' ;
_bas _dro _dror _hau _gau _mt = QUAFME bas dro dror hau gau mt ;
*'ELIMINATION' (_bas 'ET' _dro 'ET' _hau 'ET' _gau 'ET' _cmt 'ET' _mt)
* 1.D-5 ;
_cmt = 'CONTOUR' _mt ;
_zmt = 'COORDONNEE' 2 _mt ;
_ptmt = 'POIN' _zmt 'COMPRIS' -1. ('*' yc 1.5) ;
_tmt = 'ELEM' _mt 'APPUYE' _ptmt ;
_ctmt = 'CONTOUR' _tmt ;
*
*
**************************************
* Matrices des opérateurs linéaires *
**************************************
*
*
* Rigidité
*
gri = GRIG _mt tdisc 'NPRI' 'UN' 'NDUA' 'UN' ;
* gri = GRIG _mt tdisc 'NPRI' 'UN' 'NDUA' 'UN' 'LAPN' ;
gri = 'CHANGER' 'INCO' gri mpri mpri mpri mdua ;
*gri = '*' gri ('/' 1. Re) ;
*
* Contrainte de divergence nulle
*
gdiv = GDIV2 _mt tdisc 'NPRI' 'UN' 'NDUA' 'PN' 'GBBT' ;
gdiv = 'CHANGER' 'INCO' gdiv mpri mpri mpri mdua ;
gdiv = '*' gdiv -1. ;
*
**************************************
* Conditions aux limites *
**************************************
*
*
* Blocages :
mur = _cmt ;
muz = _bas 'ET' _dro ;
rbas = 'COORDONNEE' 1 _bas ;
'SI' laxi ; alpha = 2. ; 'SINON' ; alpha = 1.5 ; 'FINSI' ;
fuz = '/' rbas R1 ;
*fuz = rbas ;
fuz = '*' fuz fuz ;
fuz = '-' fuz 1. ;
fuz = '*' fuz ('*' -1. alpha) ;
* Vérification du débit
cdeb = GMASS2 _bas tdisc 'NPRI' discv 'CPRI' fuz 'NDUA' discv ;
deb = 'MAXIMUM' ('RESULT' cdeb) ;
csinj = GMASS2 _bas tdisc 'NPRI' 'CSTE' 'FPRI' 1.
'NDUA' 'CSTE' 'FDUA' 1. ;
sinj = 'MAXIMUM' ('RESULT' csinj) ;
'MESSAGE' ('CHAINE' 'deb=' deb) ;
'MESSAGE' ('CHAINE' 'sinj=' sinj) ;
'SI' ('NEG' deb sinj ('*' sinj 1.D-6)) ;
'ERREUR' 'Erreur dans le calcul du profil de vitesse entrant' ;
'FINSI' ;
cuz = 'NOMC' nv2 fuz ;
vcuz = 'VECT' cuz 'DEPL' 'JAUN' ;
tit = 'CHAINE' 'Profil dentree' ;
'SI' graph ;
'TRACER' vcuz bas 'TITR' tit ;
'FINSI' ;
cuzt = '+' cuz ('MANUEL' 'CHPO' muz 1 nv2 0.) ;
*
mblor = 'BLOQUE' nv1 mur ;
mbloz = 'BLOQUE' nv2 muz ;
fbloz = 'DEPIMPOSE' mbloz cuzt ;
*
mblot = mblor 'ET' mbloz ;
fblot = fbloz ;
* Champ de conditions aux limites pour la fonction de courant
clfcou = 'MANUEL' 'CHPO' pB 1 'SCAL' 0. ;
* Matrice masse pour calculer la force non intégrée sur le bord
* droit
mdro = 'KOPS' 'RIMA'
(GMASS2 _dro tdisc 'NPRI' 'QUAF' 'NDUA' 'QUAF') ;
*
**************************************
* Boucle d'itérations non linéaires *
* Méthode incrémentale *
**************************************
*
*
sol = 'COPIER' cuzt ;
*
'REPETER' it nitermax ;
*
* Convection (dans la boucle car non-linéaire)
*
gugr = gugrad2 _mt tdisc 'NPRI' 'UN' 'NDUA' 'UN'
'NCOF' 'CSTE' 'FCOF' Re
'NVIT' 'UN' 'CVIT' sol ;
gugr = 'CHANGER' 'INCO' gugr mpri mpri mpri mdua ;
*
* Assemblage des matrices et second membres
*
ktot = gugr 'ET' gri 'ET' gdiv 'ET' mblot ;
ktg = ('*' (gugr 'ET' gri) ('/' 1. omeg))
'ET' gdiv 'ET' mblot ;
ftot = fblot '-' ('*' ktot sol) ;
* ftot = '*' ('*' ktot -1.) sol ;
ktgk = 'CHANGER' 'INCO' ('KOPS' 'RIMA' ktg) mpri mpri mdua mpri ;
ftot = 'NOMC' mdua mpri ftot ;
* Résolution
dsol = 'KRES' ktgk ftot ;
sol = '+' sol dsol ;
* Solution
dvit = 'EXCO' nomvit dsol ;
vit = 'EXCO' nomvit sol ;
pre = 'EXCO' nompre sol ;
prep = GLNO _mt tdisc 'PN' pre discv ;
* prep = '-' prep ('MINIMUM' prep) ;
mdv = 'MAXIMUM' dsol 'ABS' 'AVEC' nomvit ;
*
* Calcul des quantités pour comparaison avec les références
*
fcou = FCOURANT _mt 'QUAF' vit clfcou ;
mifcou = 'MINIMUM' fcou ;
mafcou = 'MAXIMUM' fcou ;
rei = '*' (mafcou '/' mifcou) -1. ;
Lc = 'MAXIMUM' ('COORDONNEE' 2 (fcou 'POIN' 'MAXI')) ;
* Frottement sur dror
fblo = 'EXCO' nomfor nomvit ('*' ('*' mblot -1.) sol) 'NOID' ;
fzi = 'EXCO' nv2 ('REDU' fblo _dro) ;
fz = 'KRES' mdro fzi ;
evf = 'EVOL' 'CHPO' fz _dror ;
'SI' graph ;
chtit = 'CHAINE' 'Force de frottement sur _dror' titg ;
'DESSIN' evf 'XBOR' 0. ('*' yc 2.) 'TITR' chtit 'AXES' 'NCLK' ;
'FINSI' ;
evf = 'EXTRAIRE' evf 'APRE' ('*' yc 0.5) ;
evf = 'EXTRAIRE' evf 'AVAN' ('*' yc 1.5) ;
xevf = 'EXTRAIRE' evf 'ABSC' ;
yevf = 'EXTRAIRE' evf 'ORDO' ;
evv = 'EVOL' 'MANU' yevf xevf ;
* 'DESSIN' evv ;
yevf2 xevf2 = 'ORDONNER' 'DECROISSANT' yevf xevf ;
'SI' ('>' ('MAXIMUM' ('-' yevf2 yevf) 'ABS') 0.) ;
Lr = -10000. ;
'SINON' ;
Lr = 'IPOL' 0. yevf xevf ;
'FINSI' ;
*
'MESSAGE' ('CHAINE' ' It=' &it
' mdv=' (formar mdv 2)
' rei=' (formar rei 3)
' Lc=' (formar Lc 3)
' Lr=' (formar Lr 3)
) ;
'SI' ('<' mdv mdvquit) ;
*
* Graphiques
*
'SI' graph ;
* Vitesse
TRVEC cmt vit ('CHAINE' 'Vitesse' titg) ;
* Pression
'TRACER' mt prep _cmt 'TITR' ('CHAINE' 'Pression' titg) ;
* Fonction de courant
* TRVEC _mt dvit ('CHAINE' 'Increm. Vitesse') ;
TRVEC _ctmt ('REDU' vit _tmt)
('CHAINE' 'Vitesse' titg) ;
'TRACER' _tmt ('REDU' fcou _tmt) _ctmt
'TITR' ('CHAINE' 'Fonction de courant' titg) ;
lprg = 'PROG' mifcou ('/' mifcou 2.) 0. ('/' mafcou 2.) mafcou
;
'TRACER' _tmt ('REDU' fcou _tmt) _ctmt lprg
'TITR' ('CHAINE' 'Fonction de courant' titg) ;
* Bilan des forces sur le contour et interne
fpre = 'EXCO' nomfor nomvit ('*' ('*' gdiv -1.) sol) ;
fblo = 'EXCO' nomfor nomvit ('*' ('*' mblot -1.) sol) 'NOID' ;
frig = 'EXCO' nomfor nomvit ('*' ('*' gri -1.) sol) ;
fugr = 'EXCO' nomfor nomvit ('*' ('*' gugr -1.) sol) 'NOID' ;
desf = fpre '+' frig '+' fugr '+' fblo ;
*
fprec frigc desfc fugrc fbloc =
REDUS _cmt
fpre frig desf fugr fblo ;
* TRVEC cmt fprec 'Bord pr' frigc 'ri' desfc 'des' fugrc 'co'
* fbloc 'bl' ;
TRVEC cmt fpre 'Bord pr' frig 'ri' desf 'des' fugr 'co'
fblo 'bl' ;
mint = 'DIFF' ('CHANGER' _mt 'POI1')
('CHANGER' _cmt 'POI1') ;
* 'TRACER' ('ET' mint mt) ;
fprei frigi desfi fugri fbloi = REDUS mint
fpre frig desf fugr fblo ;
TRVEC cmt fprei 'Int pr' frigi 'ri' desfi 'des' fugri 'co'
fbloi 'bl' ;
* TRVEC cmt frigi ' Int ri' desfi 'des' ;
'FINSI' ;
'QUITTER' it ;
'FINSI' ;
'FIN' it ;
*
tres = 'TABLE' ;
tres . '_mt' = _mt ;
tres . 'vit' = vit ;
tres . 'fcou' = fcou ;
tres . 'prep' = prep ;
tres . 'rei' = rei ; tres . 'reia' = reia ;
tres . 'Lc' = Lc ; tres . 'Lca' = Lca ;
tres . 'Lr' = Lr ; tres . 'Lra' = Lra ;
'RESPRO' tres ;
'FINPROC' ;
*
******************************************
* *
* Les tests *
* *
******************************************
'OPTI' echo 0 ;
lok = VRAI ;
* Macagno Hung fexp = 2 Re = 0 Axi ; Lr = 0.27
'SI' complet ;
nr = 12 ; errv = 5.D-4 ;
'SINON' ;
nr = 7 ; errv = 5.D-2 ;
'FINSI' ;
t1 = calcul 2 nr 0. vrai ;
Lr = t1 . 'Lr' ;
err = errrel Lr 0.266 ; tst = '<' err errv ;
'SI' tst ;
'MESSAGE' 'Test 1 : err = ' err ' ok ' ;
'SINON' ;
'MESSAGE' '!!! Test 1 : err = ' err ' PAS BIEN ! ' ;
'FINSI' ;
lok = lok 'ET' tst ;
* Scott Mirza fexp = 1.5 Re = 200 Plan
'SI' complet ;
nr = 6 ; errv1 = 3.D-2 ; errv2 = 7.D-2 ; errv3 = 2.D-3 ;
'SINON' ;
nr = 3 ; errv1 = 4.D-2 ; errv2 = 0.2 ; errv3 = 2.D-2 ;
'FINSI' ;
t2 = calcul 1.5 nr 200. faux ;
Lr = t2 . 'Lr' ; Lc = t2 . 'Lc' ; rei = t2 . 'rei' ;
Lra = t2 . 'Lra' ; Lca = t2 . 'Lca' ; reia = t2 . 'reia' ;
err1 = errrel Lr Lra ; tst1 = '<' err1 errv1 ;
err2 = errrel Lc Lca ; tst2 = '<' err2 errv2 ;
err3 = errrel rei reia ; tst3 = '<' err3 errv3 ;
tst = tst1 'ET' tst2 'ET' tst3 ;
'SI' tst ;
'MESSAGE' 'Test 2 : err1 = ' err1 ;
'MESSAGE' ' err2 = ' err2 ;
'MESSAGE' ' err3 = ' err3 ' ok ' ;
'SINON' ;
'MESSAGE' '!!! Test 2 : err1 = ' err1 ;
'MESSAGE' '!!! err2 = ' err2 ;
'MESSAGE' '!!! err3 = ' err3 ' PAS BIEN ! ' ;
'FINSI' ;
lok = lok 'ET' tst ;
* Oliveira fexp = 3. Re = 50 Axis ; Lr = 5.33
'SI' complet ;
nr = 6 ; errv1 = 6.D-2 ; errv2 = 5.D-2 ; errv3 = 2.D-2 ;
'SINON' ;
nr = 3 ; errv1 = 1.D-3 ; errv2 = 5.D-2 ; errv3 = 3.D-2 ;
'FINSI' ;
t3 = calcul 3. nr 50. vrai ;
Lr = t3 . 'Lr' ; Lc = t3 . 'Lc' ; rei = t3 . 'rei' ;
Lra = 5.33 ; Lca = t3 . 'Lca' ; reia = t3 . 'reia' ;
err1 = errrel Lr Lra ; tst1 = '<' err1 errv1 ;
err2 = errrel Lc Lca ; tst2 = '<' err2 errv2 ;
err3 = errrel rei reia ; tst3 = '<' err3 errv3 ;
tst = tst1 'ET' tst2 'ET' tst3 ;
'SI' tst ;
'MESSAGE' 'Test 3 : err1 = ' err1 ;
'MESSAGE' ' err2 = ' err2 ;
'MESSAGE' ' err3 = ' err3 ' ok ' ;
'SINON' ;
'MESSAGE' '!!! Test 3 : err1 = ' err1 ;
'MESSAGE' '!!! err2 = ' err2 ;
'MESSAGE' '!!! err3 = ' err3 ' PAS BIEN ! ' ;
'FINSI' ;
lok = lok 'ET' tst ;
*
* Fin du jeu de donnees
*
'SAUTER' 2 'LIGNE' ;
'SI' lok ;
'MESSAGE' 'Tout sest bien passe' ;
'SINON' ;
'MESSAGE' 'Il y a eu des erreurs' ;
'FINSI' ;
'SAUTER' 2 'LIGNE' ;
'SI' interact ;
'OPTION' 'DONN' 5 'ECHO' 1 ;
'FINSI' ;
'SI' ('NON' lok) ;
'ERREUR' 5 ;
'FINSI' ;
*
* End of dgibi file SUDDEN_EXPANSION
*
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer