* fichier : shearfmm.dgibi
*********************************************************************
* *
* Shear layer. *
* *
* Methode implicite sans matrice *
* *
* BECCANTINI A., SFME/LTMF, Juin 2006 *
* *
*********************************************************************
*
* This file is divided into several parts
*
* I) PROCEDURES
* II) MESH
* III) INITIAL CONDITIONS
* IV) COMPUTATION OF THE SOLUTIONS
* V) POST-TREATMENT
* VI) COMPARISON WITH A NUMERICAL SOLUTION ON A FINER MESH
* (AND WITH A LIKE-PRANDTL ANALYTICAL SOLUTION)
*
'OPTION' 'DIME' 2
'ECHO' 1
'ELEM' 'QUA4'
'ISOV' 'SULI'
'TRAC' 'X';
*************************************************************************
*************************************************************************
* I) PROCEDURES *********************************************************
*************************************************************************
*************************************************************************
*************************************************************************
******PROCEDURE PROCPT **************************************************
*************************************************************************
*
*
'DEBPROC' PROCPT ;
'FINPROC' ;
*************************************************************************
*********** PROCEDURE PNSSM : ********************
*********** SOLUTION OF THE NAVIER-STOKES EQUATIONS ********************
*********** FMM ********************
*************************************************************************
*
* RVX . 'RESULTS' : table containing the results
*
* RVX . 'FREQI' : frequency of presenting the results
*
* RVX . 'MODEL' : model object
* RVX . 'RN0' : density
* RVX . 'GN0' : qdm
* RVX . 'RET0' : total energy
*
* RVX . 'PGAS' : table containing the gas model
* RVX . 'PGAS' . 'GAMN' : gamma
* RVX . 'PGAS' . 'MU' : dynamic viscosity (kg/m^3 x m^2/s)
* RVX . 'PGAS' . 'LAMBDA' : heat diffusion (W/K/m)
*
*
* RVX . 'GRAVITY' : gravity
*
* RVX . 'LISTCONS' : name of the conservative variables
* RVX . 'LISTPRIM' : name of the primitive variables
*
* RVX . 'LISTERR' : name of the error variables
*
* RVX . 'METHOD' : numerical scheme
* RVX . 'CUTOFF' : cut off speed
*
* RVX . 'SPACEA' : space accuracy
* RVX . 'LIMITER' : limiter type
* RVX . 'TIMEA' : time accuracy
*
* RVX . 'T0' : initial time
* RVX . 'TFINAL' : final time
* RVX . 'DTPS' ('CFL') : time step or CFL number
*
* RVX . 'DCFL' : CFL number for dual time
*
* Error criteria for dual time loop:
* RVX . 'NDTITER' : number of iterations
* RVX . 'RELERR' : Logical (Relative error or absolute error)
* RVX . 'EPSDT' : error at which dual time iterations are stopped
*
* RVX . 'NJAC' : Jacobi iterations
*
* RVX . 'PROLIM' : table called by the procedure PROLIM,
* procedure to compute boundary conditions
*
* RVX . 'DIFTIMP' : boundary condition on temperature
* RVX . 'DIFGTIMP' : boundary condition on gradient of temperature
* RVX . 'MDIFCT' : mesh in which we impose the temperature
* arising from the convective BC
* RVX . 'DIFVIMP' : boundary condition on speed
* RVX . 'DIFGVIMP' : boundary condition on gradient of speed
* RVX . 'MDIFCV' : mesh in which we impose the velocity
* arising from the convective BC
* RVX . 'DIFTAUI' : boundary condition on constraint tensor
* RVX . 'DIFQIMP' : boundary condition on heat flux
*
*
'DEBPROC' PNSSM ;
'ARGUMENT' RVX*TABLE ;
*
*
'SI' ('EXISTE' RVX 'RESULTS') ;
'MESS' 'Table RESULTS already exists' ;
'SINON' ;
RVX . 'RESULTS' = 'TABLE' ;
RVX . 'RESULTS' . 'TPS' = RVX . 'T0' ;
RVX . 'RESULTS' . 'RN' = 'COPIER' (RVX . 'RN0') ;
RVX . 'RESULTS' . 'GN' = 'COPIER' (RVX . 'GN0') ;
RVX . 'RESULTS' . 'RET' = 'COPIER' (RVX . 'RET0') ;
RVX . 'RESULTS' . 'LISTLINF' = 'PROG' ;
RVX . 'RESULTS' . 'LISTITDT' = 'LECT' ;
RVX . 'RESULTS' . 'LISTITER' = 'LECT' ;
RVX . 'RESULTS' . 'NITER' = 0 ;
'FINSI' ;
MDOMINT = RVX . 'MODEL' ;
NELT = 'NBEL' ('DOMA' MDOMINT 'CENTRE') ;
*
***** Physical properties
*
GAMN = RVX . 'PGAS' . 'GAMN' ;
GAMSCA1 = 'MAXIMUM' GAMN ;
GAMSCA2 = 'MINIMUM' GAMN ;
'SI' ('EGA' GAMSCA2 GAMSCA1 0.0001) ;
GAMSCAL = GAMSCA1 ;
'SINON' ;
'MESSAGE' ;
'MESSAGE' 'Gamma is not constant' ;
'ERREUR' 21 ;
'FINSI' ;
*
MU = (RVX . 'PGAS' . 'MU') ;
LAMBDA = (RVX . 'PGAS' . 'LAMBDA') ;
R = (RVX . 'PGAS' . 'R') ;
CV = R '/' (GAMSCAL '-' 1.) ;
*
LISTINCO = RVX . 'LISTCONS' ;
LISTPRIM = RVX . 'LISTPRIM' ;
LISTERR = RVX . 'LISTERR' ;
* Names of the gradient of temperature
LMGTEMP = 'MOTS' 'P1DX' 'P1DY' ;
* Names of the gradient of speed
LMGVIT = 'MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY' ;
*
* Upwind scheme
*
METO = RVX . 'METHOD' ;
* Space accuracy (1 or 2) and limiter
* Time accuracy (1 or 2)
ORDESP = RVX . 'SPACEA' ;
TYPELIM = RVX . 'LIMITER' ;
ORDTPS = RVX . 'TIMEA' ;
* Initial/final time
* Deltat or CFL
TPS = RVX . 'RESULTS' . 'TPS' ;
TFINAL = RVX . 'TFINAL' ;
'SI' ('EXISTE' RVX 'DTPS') ;
'SI' ('EXISTE' RVX 'CFL') ;
'MESSAGE' 'DTPS or CFL ???' ;
'ERREUR' 21 ;
'FINSI' ;
DTPS = RVX . 'DTPS' ;
'SINON' ;
CFL = RVX . 'CFL' ;
'FINSI' ;
* Dual time iterations
NDT = RVX . 'NDTITER' ;
* Relative error
EPSDT = RVX . 'EPSDT' ;
* Jacobi iterations
* NJAC = RVX . 'NJAC' ;
* Cut off speed
ICO = RVX . 'CUTOFF' ;
* To compute the diffusive cut-off
DELTAX = 'DOMA' MDOMINT 'XXDIEMIN' ;
USDELTAX = 'INVERSE' DELTAX ;
*
**** Conservative variables
*
*
MOT1 = 'EXTRAIRE' LISTINCO 1 ;
'SI' ('EGA' ('VALE' 'DIME') 2) ;
NOMMOM = 'EXTRAIRE' LISTINCO
('LECT' 2 3 ) ;
NOMVEL = 'MOTS' 'UX' 'UY' ;
MOT2 = 'EXTRAIRE' LISTINCO 4 ;
'SINON' ;
NOMMOM = 'EXTRAIRE' LISTINCO
('LECT' 2 3 4) ;
NOMVEL = 'MOTS' 'UX' 'UY' 'UZ' ;
MOT2 = 'EXTRAIRE' LISTINCO 5 ;
'FINSI' ;
RN0 = 'REDU' (RVX . 'RESULTS' . 'RN') ('DOMA' MDOMINT 'CENTRE') ;
GN0 = 'REDU' (RVX . 'RESULTS' . 'GN') ('DOMA' MDOMINT 'CENTRE') ;
RET0 = 'REDU' (RVX . 'RESULTS' . 'RET') ('DOMA' MDOMINT 'CENTRE') ;
*
**** Primitive variables
*
VN0 PN0 = 'PRIM' 'PERFMONO' RN0 GN0 RET0 GAMN ;
TN0 = PN0 '/' (R '*' RN0) ;
MOTRN = 'EXTRAIRE' LISTPRIM 1 ;
'SI' ('EGA' ('VALE' 'DIME') 2) ;
MOTVN = 'EXTRAIRE' LISTPRIM
('LECT' 2 3 ) ;
MOTPN = 'EXTRAIRE' LISTPRIM 4 ;
'SINON' ;
MOTVN = 'EXTRAIRE' LISTPRIM
('LECT' 2 3 4) ;
MOTPN = 'EXTRAIRE' LISTPRIM 5 ;
'FINSI' ;
*
********************************************************************
**** Coeff to compute gradients for convective term (MCHSCA, MCHVEC)
**** and for diffusive terms (MCHDIT, MCHVEC)
********************************************************************
*
* Boundary conditions have to be taken into account
*
RCHLIM RESLIM = PROLIM (RVX . 'PROLIM') MDOMINT LISTINCO LISTPRIM
RN0 VN0 PN0 GAMN ;
MAILLIM = 'EXTRAIRE' RCHLIM 'MAILLAGE' ;
*
* If only wall conditions (Maillim is then empty)
*
'SI' (MAILLIM 'EGA' 0) ;
CHPVID PIPI = 'KOPS' 'MATRIK' ;
MAILLIM = 'DIFF' ('DOMA' MDOMINT 'CENTRE')
('DOMA' MDOMINT 'CENTRE') ;
* Convective geometric coefficients
GRADRN ALRN MCHSCA = 'PENT' MDOMINT 'CENTRE' 'EULESCAL' 'NOLIMITE'
('MOTS' 'SCAL') RN0 ;
GRADVN ALVN MCHVEC = 'PENT' MDOMINT 'CENTRE' 'EULEVECT' 'NOLIMITE'
NOMVEL GN0 'CLIM' (RVX . 'DIFVIMP') ;
* Diffusive geometric coefficients
GRADTN MCHDIT = 'PENT' MDOMINT 'FACE' 'DIAMAN2' ('MOTS' 'SCAL')
LMGTEMP TN0 (RVX . 'DIFTIMP') (RVX . 'DIFGTIMP') ;
GRADVN MCHDIV = 'PENT' MDOMINT 'FACE' 'DIAMAN2' NOMVEL LMGVIT
VN0 (RVX . 'DIFVIMP') (RVX . 'DIFGVIMP') ;
*
* If other imposed Boudary conditions we create false Chpoints
*
'SINON' ;
* Convective false champoints
SCALBC = 'MANUEL' 'CHPO' MAILLIM 1 'SCAL' 1.0
'NATU' 'DISCRET' ;
'SI' (('VALEUR' 'DIME') 'EGA' 2) ;
VECTBC = 'MANUEL' 'CHPO' MAILLIM
2 'UX' 0.0 'UY' 0.0 'NATU' 'DISCRET' ;
* Same name as NOMVEL
'SINON' ;
VECTBC = 'MANUEL' 'CHPO' MAILLIM
3 'UX' 0.0 'UY' 0.0 'UZ' 0.0 'NATU' 'DISCRET' ;
'FINSI' ;
VECTBC = VECTBC '+' (RVX . 'DIFVIMP') ;
* Convective geometric coefficients
GRADRN ALRN MCHSCA = 'PENT' MDOMINT 'CENTRE' 'EULESCAL' 'NOLIMITE'
('MOTS' 'SCAL') RN0 'CLIM' SCALBC ;
GRADVN ALVN MCHVEC = 'PENT' MDOMINT 'CENTRE' 'EULEVECT' 'NOLIMITE'
NOMVEL VN0 'CLIM' VECTBC ;
'FINSI' ;
*
* Diffusive false champoints
*
* We have several possibility
* We decide to impose the temperature given by the convective boundary
* condition on (RVX . 'MDIFCT') and the velocity given by the
* convective boundary condition on (RVX . 'MDIFCV')
*
* We check that (RVX . 'MDIFCT') belongs to MAILLIM
*
NN1 = 'NBEL' MAILLIM ;
NN2 = 'NBEL' (RVX . 'MDIFCT') ;
'SI' (('NEG' NN1 0) 'ET' ('NEG' NN2 0)) ;
*
*** If both meshes contain at least one element NN1 is equal
* to the number of elements belonging to the intersection.
* Otherwise NN1 = 0
*
NN1 = 'NBEL' ('INTERSECTION' (RVX . 'MDIFCT') MAILLIM) ;
'FINSI' ;
'SI' ('NEG' NN1 NN2) ;
'MESSAGE' 'Problem in MDIFCT' ;
'ERREUR' 21 ;
'FINSI' ;
SCALBC = 'MANUEL' 'CHPO' (RVX . 'MDIFCT') 1 'SCAL' 1.0
'NATU' 'DISCRET' ;
SCALBC = SCALBC '+' (RVX . 'DIFTIMP') ;
NN2 = 'NBEL' (RVX . 'MDIFCV') ;
'SI' (('NEG' NN1 0) 'ET' ('NEG' NN2 0)) ;
NN1 = 'NBEL' ('INTERSECTION' (RVX . 'MDIFCV') MAILLIM) ;
'FINSI' ;
'SI' ('NEG' NN1 NN2) ;
'MESSAGE' 'Problem in MDIFCV' ;
'ERREUR' 21 ;
'FINSI' ;
'SI' (('VALEUR' 'DIME') 'EGA' 2) ;
VECTBC = 'MANUEL' 'CHPO' (RVX . 'MDIFCV')
2 'UX' 0.0 'UY' 0.0 'NATU' 'DISCRET' ;
'SINON' ;
VECTBC = 'MANUEL' 'CHPO' (RVX . 'MDIFCV')
3 'UX' 0.0 'UY' 0.0 'UZ' 0.0 'NATU' 'DISCRET' ;
'FINSI' ;
*
VECTBC = VECTBC '+' (RVX . 'DIFVIMP') ;
*
* Diffusive geometric coefficients
GRADTN MCHDIT = 'PENT' MDOMINT 'FACE' 'DIAMAN2' ('MOTS' 'SCAL')
LMGTEMP TN0 SCALBC (RVX . 'DIFGTIMP') ;
*
GRADVN MCHDIV = 'PENT' MDOMINT 'FACE' 'DIAMAN2' NOMVEL LMGVIT
VN0 VECTBC (RVX . 'DIFGVIMP') ;
*
***************************************************************
*** After each dual time loop, we could display
* the evolution of the error in the dual time loop
* the evolution of the dual time step (the safety factor)
***************************************************************
*
LISTLINF = RVX . 'RESULTS' . 'LISTLINF' ;
LISTITDT = RVX . 'RESULTS' . 'LISTITDT' ;
LISTITER = RVX . 'RESULTS' . 'LISTITER' ;
*
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Methode = ' METO) ;
'MESSAGE' ;
*
'TEMPS' 'ZERO' ;
*
************************************************************************
************************************************************************
**** Temporal loop *****************************************************
************************************************************************
************************************************************************
RN_N1M1 = 'COPIER' RN0 ;
GN_N1M1 = 'COPIER' GN0 ;
RET_N1M1 = 'COPIER' RET0 ;
AA = 'DIME' LISTITER ;
'SI' (AA > 0) ;
PTITER = 'EXTRAIRE' LISTITER AA ;
'SINON' ;
PTITER = 0 ;
'FINSI' ;
DUSDT = 0.0D0 ;
'REPETER' BLITER (RVX . 'NITER') ;
PTITER = PTITER '+' 1 ;
*
**** Personal procedure
*
PROCPT RVX ;
*
*
**** _N1M = (t^n,\tau^m)
* _N1M1 = (t^n,\tau^{m+1})
*
*
************************************************************************
****** Loop on dual time***********************************************
************************************************************************
*
*
*** DUSDT0 is the increment of DUSDT in the previous (physical) time
* iteration.
*
DUSDT0 = DUSDT ;
DUSDT = 0.0D0 ;
'REPETER' BLDT NDT ;
RN_N1M = RN_N1M1 ;
GN_N1M = GN_N1M1 ;
RET_N1M = RET_N1M1 ;
*
**** Primitive variables
*
VN_N1M PN_N1M = 'PRIM' 'PERFMONO' RN_N1M GN_N1M RET_N1M GAMN ;
*
*** Boundary conditions
*
RCHLIM RESLIM = PROLIM (RVX . 'PROLIM') MDOMINT LISTINCO LISTPRIM
RN_N1M VN_N1M PN_N1M GAMN ;
*
****** First/second order reconstruction
*
'SI' (ORDESP 'EGA' 2) ;
*
NNLIM = 'NBNO' MAILLIM ;
'SI' (NNLIM 'EGA' 0) ;
RNLIM = CHPVID ;
PNLIM = CHPVID ;
VNLIM = RVX . 'DIFVIMP' ;
'SINON' ;
RNLIM = ('EXCO' MOTRN RCHLIM 'SCAL') ;
PNLIM = ('EXCO' MOTPN RCHLIM 'SCAL') ;
VNLIM = ('EXCO' MOTVN RCHLIM MOTVN)
'+' (RVX . 'DIFVIMP') ;
'FINSI' ;
GRADRN ALRN0 = 'PENT' MDOMINT 'CENTRE' 'EULESCAL' TYPELIM
('MOTS' 'SCAL') RN_N1M
'CLIM' RNLIM 'GRADGEO' MCHSCA ;
GRADPN ALPN0 = 'PENT' MDOMINT 'CENTRE' 'EULESCAL' TYPELIM
('MOTS' 'SCAL') PN_N1M
'CLIM' PNLIM 'GRADGEO' MCHSCA ;
GRADVN ALVN0 = 'PENT' MDOMINT 'CENTRE' 'EULEVECT' TYPELIM
('MOTS' 'UX' 'UY') VN_N1M
'CLIM' VNLIM 'GRADGEO' MCHVEC ;
* 'SI' (&BLDT < NLCB) ;
* ALRN0 = 'COPIER' ALRN ;
* ALPN0 = 'COPIER' ALPN ;
* ALVN0 = 'COPIER' ALVN ;
* 'SINON' ;
* 'SI' (&BLDT 'EGA' NLCB) ;
* 'MESSAGE' ;
* 'MESSAGE' 'On gele les limiteurs!!!' ;
* 'MESSAGE' ;
* 'FINSI' ;
* 'FINSI' ;
ROF VITF PF GAMF = 'PRET' 'PERFMONO' 2 1
MDOMINT
RN_N1M GRADRN ALRN0
VN_N1M GRADVN ALVN0
PN_N1M GRADPN ALPN0
GAMN ;
'SINON' ;
ROF VITF PF GAMF = 'PRET' 'PERFMONO' 1 1
MDOMINT
RN_N1M VN_N1M PN_N1M GAMN ;
'FINSI' ;
RESIDU DELTAT = 'KONV' 'VF' 'PERFMONO' 'RESI' METO
MDOMINT LISTINCO ROF VITF PF GAMF MAILLIM
* ICO (MU '*' ('INVERSE' RN_N1M) '*' USDELTAX) ;
ICO ICO ;
RESIDU = RESIDU '+' RESLIM ;
*
**** La gravite
*
RESGRA = 'FIMP' 'VF' 'GRAVMONO' 'RESI' LISTINCO
RN_N1M GN_N1M1 (RVX . 'GRAVITY') ;
RESIDU = RESIDU '+' RESGRA ;
*
**************************************
**** Diffusive terms *****************
**************************************
*
TN_N1M = PN_N1M '/' (R '*' RN_N1M) ;
*
* Computation of the CHPOINTS at the boundary of the domain
*
NN1 = 'NBEL' MAILLIM ;
'SI' (NN1 > 0) ;
RNLIM = 'EXCO' MOTRN RCHLIM 'SCAL' 'NATU' 'DISCRET' ;
PNLIM = 'EXCO' MOTPN RCHLIM 'SCAL' 'NATU' 'DISCRET' ;
VNLIM = ('EXCO' MOTVN RCHLIM MOTVN 'NATU' 'DISCRET') ;
TNLIM = (PNLIM '/' (RNLIM '*' R) ) ;
VNLIM = ('REDU' VNLIM (RVX . 'MDIFCV')) '+'
(RVX . 'DIFVIMP') ;
TNLIM = ('REDU' TNLIM (RVX . 'MDIFCV')) '+'
(RVX . 'DIFTIMP') ;
'SINON' ;
VNLIM = (RVX . 'DIFVIMP') ;
TNLIM = (RVX . 'DIFVIMP') ;
'FINSI' ;
*
GRADTN = 'PENT' MDOMINT 'FACE' 'DIAMAN2' ('MOTS' 'SCAL')
LMGTEMP TN_N1M TNLIM (RVX . 'DIFGTIMP')
'GRADGEO' MCHDIT ;
*
* 'LIST' (RVX . 'DIFGVIMP') ;
GRADVN = 'PENT' MDOMINT 'FACE' 'DIAMAN2' NOMVEL
LMGVIT VN_N1M VNLIM (RVX . 'DIFGVIMP')
'GRADGEO' MCHDIV ;
*
* NOMVEL = 'MOTS' 'UX' 'UY' ;
*
ICACCA RESIDI DTCACCA = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'EXPL'
MDOMINT MU LAMBDA CV RN_N1M VN_N1M TN_N1M GRADVN GRADTN
LISTINCO 'VIMP' VNLIM 'TAUI' (RVX . 'DIFTAUI')
'QIMP' (RVX . 'DIFQIMP') ;
RESIDU = RESIDU '+' RESIDI ;
*
***** Spectral radious of the viscosity matrix
*
COEFV1 = (0.0 '*' RN_N1M) '+' 1.0 ;
COEFV1 = COEFV1 '*' (lambda '*' (gamscal '-' 1.)) ;
COEFV1 = COEFV1 '/' (R '*' RN_N1M) ;
COEFV2 = (0.0 '*' RN_N1M) '+' ((4. '/' 3.) '*' MU) ;
COEFV2 = COEFV2 '/' RN_N1M ;
COEFV = 0.5 '*' (COEFV1 '+' COEFV2) ;
COEFV = COEFV '+' (0.5 '*' ((COEFV1 '-' COEFV2) 'ABS')) ;
* 'MESSAGE' ;
* 'MESSAGE' 'Je fais n importe' ;
* COEFV = COEFV '*' 0.25 ;
*
****** Residuum for dual tims stepping also involved the
* variation of the conserved variables with respect
* to time
'SI' ((&BLITER 'EGA' 1) 'OU' (ORDTPS 'EGA' 1)) ;
RESIDU = RESIDU '-' DUSDT ;
'SINON' ;
RESIDU = RESIDU '-' ((1.5 '*' DUSDT) '-' (0.5 '*' DUSDT0)) ;
'FINSI' ;
*
*** Time step at the first iteration/jacobi iteration
*
'SI' (&BLDT 'EGA' 1) ;
'SI' ('EXISTE' RVX 'CFL') ;
DTPS = (RVX . 'CFL') '*' 2.0D0 '*' DELTAT ;
'SINON' ;
DTPS = RVX . 'DTPS' ;
'FINSI' ;
DTPS = 'MINIMUM' ('PROG' DTPS ((TFINAL '-' TPS) '*' 1.001)) ;
TPS = TPS '+' DTPS ;
*
NJAC = 'ENTIER' ('MINIMUM' (RVX . 'NJACITER')) ;
NJAC0 = NJAC ;
'SINON' ;
NJAC = 'IPOL' (('LOG' ERRINF) '/' ('LOG' 10))
(RVX . 'NJACLERR') (RVX . 'NJACITER') ;
NJAC = 'MAXIMUM' ('PROG' NJAC0 NJAC) ;
NJAC = 'ENTIER' NJAC ;
NJAC0 = NJAC ;
'FINSI' ;
*
*** JACOBI
*
*
**** CFL dual
*
'SI' (&BLDT 'EGA' 1) ;
SAFFACD = ('MINIMUM' (RVX . 'DCFL')) '*' 2 ;
'SINON' ;
SAFFACD = ('IPOL' (('LOG' ERRINF) '/' ('LOG' 10))
(RVX . 'DCFLERR') (RVX . 'DCFL')) '*' 2 ;
'FINSI' ;
'SI' ((&BLITER 'EGA' 1) 'OU' (ORDTPS 'EGA' 1)) ;
* DUN IPRO = 'DETO' (RVX . 'TYPEJAC')
DUN IPRO = 'KONV' 'VF' 'PMON1FMM' (RVX . 'TYPEJAC')
LISTINCO MDOMINT RESIDU RN_N1M GN_N1M RET_N1M GAMN ICO
DTPS SAFFACD
NJAC 'CLIM' LISTPRIM RCHLIM COEFV ;
'SINON' ;
* DUN IPRO = 'DETO' (RVX . 'TYPEJAC')
DUN IPRO = 'KONV' 'VF' 'PMON1FMM' (RVX . 'TYPEJAC')
LISTINCO MDOMINT RESIDU RN_N1M GN_N1M RET_N1M GAMN ICO
(DTPS '/' 1.5)
SAFFACD NJAC 'CLIM' LISTPRIM RCHLIM COEFV ;
'FINSI' ;
* 'FINSI' ;
'SI' (IPRO 'NEG' 0) ;
'MESSAGE' ;
'MESSAGE' 'Probleme dans FMM' ;
'MESSAGE' ;
'ERREUR' 21 ;
'FINSI' ;
*
**** We compute DUSDT for the future loop
*
DUSDT = DUSDT '+' (DUN '/' DTPS) ;
*
**** We evaluate the conservative variables at t^{n+1}, \tau^{m+1}
*
DRN = 'EXCO' MOT1 DUN 'SCAL' ;
DGN = 'EXCO' NOMMOM DUN NOMVEL ;
DRET = 'EXCO' MOT2 DUN 'SCAL' ;
RN_N1M1 = RN_N1M '+' DRN ;
GN_N1M1 = GN_N1M '+' DGN ;
RET_N1M1 = RET_N1M '+' DRET ;
ERRINF = 'MAXIMUM' DUN 'ABS' LISTERR ;
LISTLINF = LISTLINF 'ET' ('PROG' ERRINF) ;
LISTITDT = LISTITDT 'ET' ('LECT' &BLDT) ;
LISTITER = LISTITER 'ET' ('LECT' PTITER) ;
'SI' ((&BLDT 'EGA' 1) 'OU'
(((&BLDT '/' (RVX . 'FREQI')) '*' (RVX . 'FREQI'))
'EGA' &BLDT)) ;
'MESSAGE' ;
'MESSAGE'
('CHAINE' 'ITER =' PTITER ' TPS =' TPS
' DTITER =' &BLDT ' LINF =' ERRINF
' DCFL =' SAFFACD ' NJAC =' NJAC) ;
'MESSAGE' ;
'FINSI' ;
*
*
*** Update of RVX . 'RESULTS'
*
RVX . 'RESULTS' . 'RN' = RN_N1M1 ;
RVX . 'RESULTS' . 'GN' = GN_N1M1 ;
RVX . 'RESULTS' . 'RET' = RET_N1M1 ;
RVX . 'RESULTS' . 'LISTITDT' = LISTITDT ;
RVX . 'RESULTS' . 'LISTITER' = LISTITER ;
RVX . 'RESULTS' . 'LISTLINF' = LISTLINF ;
*
'SI' (RVX . 'RELERR') ;
* Relative error
'SI' (&BLDT 'EGA' 1) ;
ERRINF0 = ERRINF ;
'SINON' ;
'SI' (ERRINF < (EPSDT '*' ERRINF0)) ;
'QUITTER' BLDT ;
'FINSI' ;
'FINSI' ;
'SINON' ;
'SI' (ERRINF < EPSDT) ;
'QUITTER' BLDT ;
'FINSI' ;
'FINSI' ;
'FIN' BLDT ;
************************************************************************
****** End of the loop on dual time*************************************
************************************************************************
*
*** Update of RVX . 'RESULTS'
*
RVX . 'RESULTS' . 'TPS' = TPS ;
RVX . 'RESULTS' . 'NITER' = (RVX . 'RESULTS' . 'NITER') '+' 1 ;
*
'SI' (TPS '>EG' TFINAL) ;
'QUITTER' BLITER ;
'FINSI' ;
'FIN' BLITER ;
TCPU = 'TEMPS' 'NOEC' ;
RVX . 'RESULTS' . 'TCPU' = TCPU ;
'FINPROC' ;
*************************************************************************
****** FIN PROCEDURE PNSSM **********************************************
*************************************************************************
*************************************************************************
******PROCEDURE PROLIM **************************************************
*************************************************************************
*
'DEBPROC' PROLIM ;
'ARGUMENT' RVX*'TABLE' MDOMINT*'MMODEL' LISTINCO*'LISTMOTS'
LISTPRIM*'LISTMOTS'
RN*'CHPOINT' VN*'CHPOINT' PN*'CHPOINT' GAMN*'CHPOINT' ;
*
* Récupération du nombres de CL imposées
*
NCL = RVX . 'N' ;
*
* Initialisation de RESLIM et de RCHLIM
*
RESLIM VIDE = 'KOPS' MATRIK ;
RCHLIM VIDE = 'KOPS' MATRIK ;
*
* Boucle d'évaluation des résidus et des CHPOINTS aux limites
*
'REPETER' BCLIM NCL ;
MOTCLI = 'EXTRAIRE' (RVX . 'CLN' . &BCLIM) 1 ;
MODELI = RVX . 'MODELN' . &BCLIM ;
CHPOLI = RVX . 'CHPOLN' . &BCLIM ;
RCHLI RESLI = 'KONV' 'VF' 'PERFMONO' 'CLIM' 'RESI'
MDOMINT MODELI LISTINCO LISTPRIM
RN VN PN GAMN
CHPOLI MOTCLI ;
RCHLIM = RCHLIM '+' RCHLI ;
RESLIM = RESLIM '+' RESLI ;
'FIN' BCLIM ;
'RESPRO' RCHLIM RESLIM ;
'FINPROC' ;
*************************************************************************
****** FIN PROCEDURE PROLIM *********************************************
*************************************************************************
*************************************************************************
*************************************************************************
***************FIN PROCEDURES *******************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
* II) MESH *************************************************************
*************************************************************************
*************************************************************************
GRAPH = FAUX ;
NRAFF = 20 ;
L1 = 0.5 ;
L2 = 2.;
H1= 1.;
H2 = 1. ;
DX1 = 2.0 '/' NRAFF ;
DX2 = 0.5 '/' NRAFF ;
DY1 = 0.5 '*' DX2 ;
DY2 = 2.0 '*' DX1 ;
*
* P6 P5 P4
* DX1 DY2
*
* DOM1 DOM2
*
*
* DX1 DY1 DX2 DX2 DX1
* P1 ---------------------|
* wall P2 P3
* P1A---------------------|
* DX1 DY1
*
*
* DOM1A DOM2A
*
*
* DX1 DY2
* P6A P5A P4A
*
*
P1 = (0.0 '-' L1) 0.0 ;
P2 = (L1 '-' L1) 0.0 ;
P3 = (L1 '+' L2 '-' L1) 0.0 ;
P4 = (L1 '+' L2 '-' L1) H1 ;
P5 = (L1 '-' L1) H1 ;
P6 = (0.0 '-' L1) H1 ;
P1A = (0.0 '-' L1) 0.0 ;
P4A = (L1 '+' L2 '-' L1) (-1 * H2) ;
P5A = (L1 '-' L1) (-1 * H2) ;
P6A = (0.0 '-' L1) (-1 * H2) ;
* Top
P1P2 = P1 'DROIT' P2 'DINI' DX1 'DFIN' DX2 ;
P2P3 = P2 'DROIT' P3 'DINI' DX2 'DFIN' DX1 ;
P6P5 = P6 'DROIT' P5 'DINI' DX1 'DFIN' DX2 ;
P5P4 = P5 'DROIT' P4 'DINI' DX2 'DFIN' DX1 ;
P6P4 = P6P5 'ET' P5P4 ;
DOM1 = 'REGLER' P1P2 P6P5 'DINI' DY1 'DFIN' DY2 ;
DOM2 = 'REGLER' P2P3 P5P4 'DINI' DY1 'DFIN' DY2 ;
'ELIMINATION' DOM1 (DY1 '/' 100) DOM2 ;
CONT1 = 'CONTOUR' DOM1 ;
P6P1 = 'ELEM' CONT1 'COMP' P6 P1 ;
CONT2 = 'CONTOUR' DOM2 ;
P3P4 = 'ELEM' CONT2 'COMP' P3 P4 ;
* Bottom
P1AP2 = P1A 'DROIT' P2 'DINI' DX1 'DFIN' DX2 ;
P6AP5A = P6A 'DROIT' P5A 'DINI' DX1 'DFIN' DX2 ;
P5AP4A = P5A 'DROIT' P4A 'DINI' DX2 'DFIN' DX1 ;
P6AP4A = P6AP5A 'ET' P5AP4A ;
DOM1A = 'REGLER' P1AP2 P6AP5A 'DINI' DY1 'DFIN' DY2 ;
DOM2A = 'REGLER' P2P3 P5AP4A 'DINI' DY1 'DFIN' DY2 ;
'ELIMINATION' DOM1A (DY1 '/' 100) DOM2A ;
CONT1 = 'CONTOUR' DOM1A ;
P1AP6A = 'ELEM' CONT1 'COMP' P6A P1A ;
CONT2 = 'CONTOUR' DOM2A ;
P3P4A = 'ELEM' CONT2 'COMP' P3 P4A ;
*
DOMINT = DOM1 'ET' DOM2 'ET' DOM1A 'ET' DOM2A ;
'SI' GRAPH ;
'TRACER' (DOMINT 'ET' (P6P1 'COULEUR' 'ROUG'))
'TITRE' 'P6P1' ;
'TRACER' (DOMINT 'ET' (P3P4 'COULEUR' 'ROUG'))
'TITRE' 'P3P4' ;
'TRACER' (DOMINT 'ET' (P1AP6A 'COULEUR' 'ROUG'))
'TITRE' 'P1AP6A' ;
'TRACER' (DOMINT 'ET' (P3P4A 'COULEUR' 'ROUG'))
'TITRE' 'P3P4A' ;
aa = 'CONTOUR' DOMINT 'COULEUR' ROUG ;
'TRACER' (DOMINT 'ET' aa) 'TITRE'
('CHAINE' 'nbel = ' ('NBEL' DOMINT)) ;
'FINSI' ;
*
**** Model objs
*
MDOMINT = 'MODELISER' DOMINT 'EULER' ;
MDOM1 = 'MODELISER' DOM1 'EULER' ;
MDOM2 = 'MODELISER' DOM2 'EULER' ;
MDOM1A = 'MODELISER' DOM1A 'EULER' ;
MDOM2A = 'MODELISER' DOM2A 'EULER' ;
*
* P1P6, P1AP6A = inlet (on the left)
* P1P2, P12P2 = separating (infinitely thin) slip wall
* P3P4, P3P4A = outlet (on the left)
* P6P4, P6AP4A = inlet/outlet (top/bottom)
*
MP1P6 = 'MODELISER' P6P1 'EULER' ;
MP1P2 = 'MODELISER' P1P2 'EULER' ;
MP3P4 = 'MODELISER' P3P4 'EULER' ;
MP6P4 = 'MODELISER' P6P4 'EULER' ;
*
MP1AP6A = 'MODELISER' P1AP6A 'EULER' ;
MP1AP2 = 'MODELISER' P1AP2 'EULER' ;
MP3P4A = 'MODELISER' P3P4A 'EULER' ;
MP6AP4A = 'MODELISER' P6AP4A 'EULER' ;
*
TDOMINT = 'DOMA' MDOMINT 'VF' ;
TDOM1 = 'DOMA' MDOM1 'VF' ;
TDOM2 = 'DOMA' MDOM2 'VF' ;
TDOM1A = 'DOMA' MDOM1A 'VF' ;
TDOM2A = 'DOMA' MDOM2A 'VF' ;
*
TP1P6 = 'DOMA' MP1P6 'VF' ;
TP1P2 = 'DOMA' MP1P2 'VF' ;
TP3P4 = 'DOMA' MP3P4 'VF' ;
TP6P4 = 'DOMA' MP6P4 'VF' ;
TP1AP6A = 'DOMA' MP1AP6A 'VF' ;
TP1AP2 = 'DOMA' MP1AP2 'VF' ;
TP3P4A = 'DOMA' MP3P4A 'VF' ;
TP6AP4A = 'DOMA' MP6AP4A 'VF' ;
*
QDOMINT = 'DOMA' MDOMINT 'QUAF' ;
QDOM1 = 'DOMA' MDOM1 'QUAF' ;
QDOM2 = 'DOMA' MDOM2 'QUAF' ;
QDOM1A = 'DOMA' MDOM1A 'QUAF' ;
QDOM2A = 'DOMA' MDOM2A 'QUAF' ;
*
QP1P6 = 'DOMA' MP1P6 'QUAF' ;
QP1P2 = 'DOMA' MP1P2 'QUAF' ;
QP3P4 = 'DOMA' MP3P4 'QUAF' ;
QP6P4 = 'DOMA' MP6P4 'QUAF' ;
QP1AP6A = 'DOMA' MP1AP6A 'QUAF' ;
QP1AP2 = 'DOMA' MP1AP2 'QUAF' ;
QP3P4A = 'DOMA' MP3P4A 'QUAF' ;
QP6AP4A = 'DOMA' MP6AP4A 'QUAF' ;
*
**** Elimination of QUAF points slightly difficult
*
'ELIMINATION' (TDOMINT . 'CENTRE') (DY1 '/' 100) (TDOM1 .'CENTRE') ;
'ELIMINATION' (TDOMINT . 'CENTRE') (DY1 '/' 100) (TDOM2 .'CENTRE') ;
'ELIMINATION' (TDOMINT . 'CENTRE') (DY1 '/' 100) (TDOM1A .'CENTRE') ;
'ELIMINATION' (TDOMINT . 'CENTRE') (DY1 '/' 100) (TDOM2A .'CENTRE') ;
*
QQDOM1 = QDOMINT 'INCL' QDOM1 'BARY' ;
QQDOM1B = QDOMINT 'ELEM' 'APPU' 'LARG' (TDOM1 .'CENTRE') ;
NEL = 'NBEL' ('DIFF' QQDOM1 QQDOM1B) ;
'SI' ((('NBEL' QDOM1) 'NEG' ('NBEL' QQDOM1)) 'OU' (NEL 'NEG' 0)) ;
'ERREUR' 21 ;
'FINSI' ;
QQDOM2 = QDOMINT 'INCL' QDOM2 'BARY' ;
QQDOM2B = QDOMINT 'ELEM' 'APPU' 'LARG' (TDOM2 .'CENTRE') ;
NEL = 'NBEL' ('DIFF' QQDOM2 QQDOM2B) ;
'SI' ((('NBEL' QDOM2) 'NEG' ('NBEL' QQDOM2)) 'OU' (NEL 'NEG' 0)) ;
'ERREUR' 21 ;
'FINSI' ;
QQDOM1A = QDOMINT 'INCL' QDOM1A 'BARY' ;
QQDOM1AB = QDOMINT 'ELEM' 'APPU' 'LARG' (TDOM1A .'CENTRE') ;
NEL = 'NBEL' ('DIFF' QQDOM1A QQDOM1AB) ;
'SI' ((('NBEL' QDOM1A) 'NEG' ('NBEL' QQDOM1A)) 'OU' (NEL 'NEG' 0)) ;
'ERREUR' 21 ;
'FINSI' ;
QQDOM2A = QDOMINT 'INCL' QDOM2A 'BARY' ;
QQDOM2AB = QDOMINT 'ELEM' 'APPU' 'LARG' (TDOM2A .'CENTRE') ;
NEL = 'NBEL' ('DIFF' QQDOM2A QQDOM2AB) ;
'SI' ((('NBEL' QDOM2A) 'NEG' ('NBEL' QQDOM2A)) 'OU' (NEL 'NEG' 0)) ;
'ERREUR' 21 ;
'FINSI' ;
'ELIMINATION' QQDOM1 (DY1 '/' 100) QDOM1 ;
'ELIMINATION' QQDOM2 (DY1 '/' 100) QDOM2 ;
'ELIMINATION' QQDOM1A (DY1 '/' 100) QDOM1A ;
'ELIMINATION' QQDOM2A (DY1 '/' 100) QDOM2A ;
'ELIMINATION' (QQDOM1 'ET' QQDOM2) (DY1 '/' 100)
(QP1P6 'ET' QP6P4 'ET' QP3P4) ;
'ELIMINATION' (QQDOM1A 'ET' QQDOM2A) (DY1 '/' 100)
(QP1AP6A 'ET' QP6AP4A 'ET' QP3P4A);
'ELIMINATION' QP1P2 (DY1 '/' 100) QDOM1 ;
'ELIMINATION' QP1AP2 (DY1 '/' 100) QDOM1A ;
* 'OPTION' 'SAUV' ('CHAINE' './Dsauv/mail' NRAFF '.sauv') ;
* 'SAUVER' ;
'SI' VRAI ;
*
**** We check how the mesh of infinetely thin wall is
*
ELTCOM = 'MANUEL' 'POI1' P2 ;
AA = QDOM1 'ELEM' 'APPU' 'LARG' (QP1P2 'ET' QP1AP2) ;
BB = QDOM1A 'ELEM' 'APPU' 'LARG' (QP1P2 'ET' QP1AP2) ;
EE = 'INTE' ('CHANGER' AA 'POI1') ('CHANGER' BB 'POI1') ;
FF = 'DIFF' EE ELTCOM ;
'SI' (('NBEL' FF) 'NEG' 0) ;
'ERREUR' 21 ;
'FINSI' ;
'SI' GRAPH ;
'TRACER' ((QP1P2 'ET' QP1AP2) 'ET' (AA 'COULEUR' 'ROUG') 'ET'
(BB 'COULEUR' 'VERT')) 'TITR' 'Wall' ;
'FINSI' ;
EE = 'INTE' ('CHANGER' QP1P2 'POI1') ('CHANGER' QP1AP2 'POI1') ;
FF = 'DIFF' EE ELTCOM ;
'SI' (('NBEL' FF) 'NEG' 0) ;
'ERREUR' 21 ;
'FINSI' ;
'FINS' ;
*
*************************************************************************
*************************************************************************
* III) INITIAL CONDITIONS **********************************************
*************************************************************************
*************************************************************************
*
* 'OPTION' 'RESTITUER' ('CHAINE' './Dsauv/mail' NRAFF '.sauv') ;
* 'RESTITUER' ;
*
******************************************
**** Non-dimensional numbers *************
******************************************
*
* 2
*
* ---------------------
*
* 1
*
* We take as reference scales
*
* l_{ref} = \frac{\nu_1}{u_1}
* u_{ref} = u_1
* \rho_{\ref} = \rho_1
* T_{ref} = T_1
*
* It can be shown that the non-dimensional solution depends on
*
* x^*,y^*,u_2/u_1,T_2/T_1,\gamma,Ma,Pr
*
* Note that, with this adimensional variables,
*
* x^* = Re_x
* y^* = Re_y
*
* and Re_x(max) = L2
* Re_y(max) = H1
*
*
gamscal = 1.4 ;
T2ST1 = 0.5 ;
MACH = 1.0D-3 ;
U2SU1 = 1.1 ;
Pr = 0.7 ;
*
* We fix 4 arbitrary physical quantities
*
RAIR = 288. ;
p12 = 1.0D5 ;
T1 = 600 ;
* and L1 = 2 already considered!
Remax = 200. ;
*
ro1 = P12 '/' (RAIR * T1) ;
T2 = T2ST1 * T1 ;
ro2 = P12 '/' (RAIR * T2) ;
c1 = (gamscal * P12 '/' ro1) '**' 0.5 ;
u1 = Mach * c1 ;
u2 = u2su1 * u1 ;
*
* Remax = ro1 * u1 * L1 '/' mu1 ;
*
mu = (ro1 * u1 * L1) '/' Remax ;
*
Pr = 0.72 ;
* lambda = mu * cp '/' pr ;
lambda = mu '*' (gamscal '*' RAIR '/' (gamscal '-' 1.0))
'/' Pr ;
* Names of conserved variables
MOTRN = 'RN' ;
MOTGNX = 'RUX' ;
MOTGNY = 'RUY' ;
MOTVNX = 'UX' ;
MOTVNY = 'UY' ;
MOTVN = 'MOTS' 'UX' 'UY' ;
NOMMOM = 'MOTS' MOTGNX MOTGNY ;
MOTRET = 'RETN' ;
MOTPN = 'PN' ;
LISTCONS = 'MOTS' MOTRN MOTGNX MOTGNY MOTRET ;
LISTP = 'MOTS' MOTRN MOTVNX MOTVNY MOTPN ;
*
* Non-dimensional
GAMN = 'MANU' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'SCAL' gamscal;
*
*
*
s1 = p12 '/' (ro1 '**' gamscal) ;
s2 = p12 '/' (ro2 '**' gamscal) ;
*
gsgm1 = gamscal '/' (gamscal '-' 1.0) ;
ht1 = (gsgm1 '*' (p12 '/' ro1)) '+' (0.5D0 '*' u1 '*' u1) ;
ht2 = (gsgm1 '*' (p12 '/' ro2)) '+' (0.5D0 '*' u2 '*' u2) ;
*
uco = 0.01 '*' ('MINIMUM' ('PROG' u1 u2)) ;
*
*** Gravity
*
GRAVITE = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 2 'UX' 0.0
'UY' 0.0 ;
*
PN0 = ('MANUEL' 'CHPO' ('DOMA' MDOM1 'CENTRE') 1 'SCAL' p12 'NATU'
'DISCRET') 'ET'
('MANUEL' 'CHPO' ('DOMA' MDOM2 'CENTRE') 1 'SCAL' p12 'NATU'
'DISCRET') 'ET'
('MANUEL' 'CHPO' ('DOMA' MDOM1A 'CENTRE') 1 'SCAL' p12 'NATU'
'DISCRET') 'ET'
('MANUEL' 'CHPO' ('DOMA' MDOM2A 'CENTRE') 1 'SCAL' p12 'NATU'
'DISCRET') ;
RN0 = ('MANUEL' 'CHPO' ('DOMA' MDOM1 'CENTRE') 1 'SCAL' ro1 'NATU'
'DISCRET') 'ET'
('MANUEL' 'CHPO' ('DOMA' MDOM2 'CENTRE') 1 'SCAL' ro1 'NATU'
'DISCRET') 'ET'
('MANUEL' 'CHPO' ('DOMA' MDOM1A 'CENTRE') 1 'SCAL' ro2 'NATU'
'DISCRET') 'ET'
('MANUEL' 'CHPO' ('DOMA' MDOM2A 'CENTRE') 1 'SCAL' ro2 'NATU'
'DISCRET') ;
TN0 = PN0 '/' (Rair * RN0) ;
VN0 = ('MANUEL' 'CHPO' ('DOMA' MDOM1 'CENTRE') 1 'UX' u1 'NATU'
'DISCRET') 'ET'
('MANUEL' 'CHPO' ('DOMA' MDOM2 'CENTRE') 1 'UX' u1 'NATU'
'DISCRET') 'ET'
('MANUEL' 'CHPO' ('DOMA' MDOM1A 'CENTRE') 1 'UX' u2 'NATU'
'DISCRET') 'ET'
('MANUEL' 'CHPO' ('DOMA' MDOM2A 'CENTRE') 1 'UX' u2 'NATU'
'DISCRET') 'ET'
('MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'UY' 0.0 'NATU'
'DISCRET') ;
*
RECIN = 0.5 '*' RN0 '*' ('PSCAL' VN0 VN0 MOTVN MOTVN) ;
GN0 = RN0 '*' VN0 ;
*
RET0 = ((1. '/' (gamscal '-' 1)) '*' PN0) '+' RECIN ;
UNCONS = ('NOMC' 'RN' RN0 'NATU' 'DISCRET') 'ET' ('NOMC'
('MOTS' 'UX' 'UY') GN0 ('MOTS' 'RUX' 'RUY') 'NATU' 'DISCRET') 'ET'
('NOMC' 'RETN' RET0 'NATU' 'DISCRET') ;
*
VN0 PN0 = 'PRIM' 'PERFMONO' RN0 GN0 RET0 GAMN ;
CN0 = (GAMN * PN0 '/' RN0) '**' 0.5 ;
MACHN0 = VN0 '/' CN0 ;
*
* We create an empty CHPOINT
CHPVID MATVID = 'KOPS' 'MATRIK' ;
* 'OPTION' 'SAUVER'
* ('CHAINE' './Dsauv/icns' NRAFF '.sauv') ;
* 'SAUV' ;
*
********************************************************
*** IC plot *******************************************
********************************************************
'SI' GRAPH ;
* 'SI' FAUX ;
CHM_RN = 'KCHA' MDOMINT 'CHAM' RN0 ;
CHM_MN = 'KCHA' MDOMINT 'CHAM' MACHN0 ;
CHM_TN = 'KCHA' MDOMINT 'CHAM' TN0 ;
CHM_PN = 'KCHA' MDOMINT 'CHAM' PN0 ;
CHM_VN = 'KCHA' MDOMINT 'CHAM' VN0 ;
'TRACER' CHM_RN MDOMINT
'TITR' ('CHAINE' 'RN at t=' 0.0) ;
'TRACER' CHM_MN MDOMINT
'TITR' ('CHAINE' 'MN at t=' 0.0) ;
'TRACER' CHM_TN MDOMINT
'TITR' ('CHAINE' 'TN at t=' 0.0) ;
'TRACER' CHM_PN MDOMINT
'TITR' ('CHAINE' 'PN at t=' 0.0) ;
'TRACER' CHM_VN MDOMINT
'TITR' ('CHAINE' 'VN at t=' 0.0) ;
'FINSI' ;
*************************************************************************
*************************************************************************
* IV) COMPUTATION OF THE SOLUTION ***************************************
*************************************************************************
*************************************************************************
* 'OPTION' 'RESTITUER' ('./Dsauv/icns150.sauv') ;
* 'RESTITUER' ;
RV = 'TABLE' ;
RV . 'FREQI' = 1 ;
RV . 'MODEL' = MDOMINT ;
*
**** Conservative variables / primitive variables
*
*
RV . 'LISTCONS' = LISTCONS ;
RV . 'LISTPRIM' = LISTP ;
*
RV . 'RN0' = RN0 ;
RV . 'GN0' = GN0 ;
RV . 'RET0' = RET0 ;
*
**** Gas property/gravity
*
RV . 'PGAS' = 'TABLE' ;
RV . 'PGAS' . 'GAMN' = GAMN ;
RV . 'PGAS' . 'MU' = mu ;
RV . 'PGAS' . 'R' = RAIR ;
RV . 'PGAS' . 'LAMBDA' = lambda ;
RV . 'GRAVITY' = GRAVITE ;
*
* Table for BC
*
RV . 'PROLIM' = 'TABLE' ;
RV . 'PROLIM' . 'N' = 6 ;
RV . 'PROLIM' . 'CLN' = 'TABLE' ;
RV . 'PROLIM' . 'CLN' . 1 = 'MOTS' INSU ;
RV . 'PROLIM' . 'CLN' . 2 = 'MOTS' INSU ;
RV . 'PROLIM' . 'CLN' . 3 = 'MOTS' OUTP ;
RV . 'PROLIM' . 'CLN' . 4 = 'MOTS' OUTP ;
RV . 'PROLIM' . 'CLN' . 5 = 'MOTS' OUTP ;
RV . 'PROLIM' . 'CLN' . 6 = 'MOTS' OUTP ;
RV . 'PROLIM' . 'MODELN' = 'TABLE' ;
RV . 'PROLIM' . 'MODELN' . 1 = MP1P6 ;
RV . 'PROLIM' . 'MODELN' . 2 = MP1AP6A ;
RV . 'PROLIM' . 'MODELN' . 3 = MP6P4 ;
RV . 'PROLIM' . 'MODELN' . 4 = MP6AP4A ;
RV . 'PROLIM' . 'MODELN' . 5 = MP3P4 ;
RV . 'PROLIM' . 'MODELN' . 6 = MP3P4A ;
RV . 'PROLIM' . 'CHPOLN' = 'TABLE' ;
RV . 'PROLIM' . 'CHPOLN' . 1 = 'MANUEL' 'CHPO' ('DOMA' MP1P6
'CENTRE') 2 'HT' ht1 'S' s1 ; ;
RV . 'PROLIM' . 'CHPOLN' . 2 = 'MANUEL' 'CHPO' ('DOMA' MP1AP6A
'CENTRE') 2 'HT' ht2 'S' s2 ;
RV . 'PROLIM' . 'CHPOLN' . 3 = 'MANUEL' 'CHPO' ('DOMA' MP6P4
'CENTRE') 1 'PN' p12 ;
RV . 'PROLIM' . 'CHPOLN' . 4 = 'MANUEL' 'CHPO' ('DOMA' MP6AP4A
'CENTRE') 1 'PN' p12 ;
RV . 'PROLIM' . 'CHPOLN' . 5 = 'MANUEL' 'CHPO' ('DOMA' MP3P4
'CENTRE') 1 'PN' p12 ;
RV . 'PROLIM' . 'CHPOLN' . 6 = 'MANUEL' 'CHPO' ('DOMA' MP3P4A
'CENTRE') 1 'PN' p12 ;
*
* Table for BC
*
* RVX . 'DIFTIMP' : boundary condition on temperature
* RVX . 'MDIFCT' : mesh in which we impose the temperature
* arising from the convective BC
* RVX . 'DIFGTIMP' : boundary condition on gradient of temperature
* RVX . 'DIFVIMP' : boundary condition on speed
* RVX . 'MDIFCV' : mesh in which we impose the velocity
* arising from the convective BC
* RVX . 'DIFGVIMP' : boundary condition on gradient of speed
* RVX . 'DIFTAUI' : boundary condition on constraint tensor
* RVX . 'DIFQIMP' : boundary condition on heat flux
*
CHPVID MATVID = 'KOPS' 'MATRIK' ;
MAILBC = ('DOMA' MP1P6 'CENTRE') 'ET' ('DOMA' MP1AP6A 'CENTRE') 'ET'
('DOMA' MP6P4 'CENTRE') 'ET' ('DOMA' MP6AP4A 'CENTRE') 'ET'
('DOMA' MP3P4 'CENTRE') 'ET' ('DOMA' MP3P4A 'CENTRE') ;
MAILG0 = ('DOMA' MP1P2 'CENTRE') 'ET' ('DOMA' MP1AP2 'CENTRE') ;
*
RV . 'DIFTIMP' = CHPVID ;
RV . 'MDIFCT' = MAILBC ;
RV . 'DIFGTIMP' = 'MANUEL' 'CHPO' MAILG0 2 'P1DX' 0.0 'P1DY' 0.0 ;
RV . 'DIFVIMP' = CHPVID ;
RV . 'MDIFCV' = MAILBC ;
RV . 'DIFGVIMP' = 'MANUEL' 'CHPO' MAILG0 4 'P1DX' 0.0 'P1DY' 0.0
'P2DX' 0.0 'P2DY' 0.0 ;
RV . 'DIFTAUI' = 'MANUEL' 'CHPO' MAILBC 3 'TXX' 0.0 'TXY' 0.0
'TYY' 0.0 ;
RV . 'DIFQIMP' = 'MANUEL' 'CHPO' MAILBC 2 'UX' 0.0 'UY' 0.0 ;
*
**** Numerical parameters
*
*
* Variable to compute Linf error
*
RV . 'LISTERR' = 'MOTS' MOTGNX MOTGNY ;
* RV . 'LISTERR' = 'MOTS' MOTRET ;
*
* Upwind scheme
*
* RV . 'METHOD' = 'RUSANOLM' ;
RV . 'METHOD' = 'ROELM' ;
*
* Low-Mach Cut off
*
CO = u1 '*' 10.D-1 ;
RV . 'CUTOFF' = 'MANU' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'SCAL' CO
'NATURE' 'DISCRET' ;
*
* Reconstruction/limiter
* Time accuracy (1 or 2)
* Iterations
* Final time
RV . 'SPACEA' = 2 ;
RV . 'LIMITER' = 'NOLIMITE' ;
* RV . 'LIMITER' = 'LIMITEUR' ;
RV . 'TIMEA' = 1 ;
*
**** Physical time
*
RV . 'T0' = 0 ;
RV . 'TFINAL' = 20. '*' (L1 '/' u1) ;
RV . 'NITER' = -1 ;
RV . 'CFL' = (2. '/' MACH) ;
* RV . 'DTPS' = (L1 '/' u1) ;
*
**** Dual time
*
* Safety factor for the dual time step
* Max. Dual time iterations
* Relative error
*
RV . 'DCFLERR' = 'PROG' 16. -16. ;
RV . 'DCFL' = 'PROG' 1.d6 1.d6 ;
RV . 'NDTITER' = 1 ;
RV . 'RELERR' = FAUX ;
RV . 'EPSDT' = 1.0D-30 ;
*
**** Jacobi iterations
*
* RV . 'TYPEJAC' = 'PJACO' ;
* RV . 'TYPEJAC' = 'LJACOB' ;
* RV . 'TYPEJAC' = 'LJACOF' ;
RV . 'TYPEJAC' = 'LJACOFB' ;
RV . 'NJACLERR' = 'PROG' 16 -16 ;
RV . 'NJACITER' = 'PROG' 15 15 ;
*
**** Parameters for PROCPT
*
RV . 'PROCPT' = 'TABLE' ;
*
PNSSM RV ;
*************************************************************************
*************************************************************************
* V) POST TREATMENT ****************************************************
*************************************************************************
*************************************************************************
* 'OPTION' 'REST'
* ('CHAINE' './fmm_mono' 150 '.sauv') ;
* 'REST' ;
*
RN = RV . 'RESULTS' . 'RN' ;
GN = RV . 'RESULTS' . 'GN' ;
RET = RV . 'RESULTS' . 'RET' ;
GAMN = RV . 'PGAS' . 'GAMN' ;
*
*** Convergence evolution inside of each iteration
*
LISTITER = RV . 'RESULTS' . 'LISTITER' ;
LISTITDT = RV . 'RESULTS' . 'LISTITDT' ;
LISTLINF = RV . 'RESULTS' . 'LISTLINF' ;
*
TAB1 = 'TABLE' ;
TAB1 . 1 = 'MOT' 'MARQ CROI NOLI';
TAB1 . 'TITRE' = 'TABLE' ;
TAB1 . 'TITRE' . 1 = 'MOT' 'Convergence';
'SI' GRAPH ;
NITERE = 'DIME' LISTITER ;
LISTTOT = 'PROG' 1.0 'PAS' 1.0 (NITERE '*' 1.00001) ;
everr = 'EVOL' 'MANU' 'niter' LISTTOT 'Log(Linf)'
(('LOG' (LISTLINF '+'
('PROG' ('DIME' LISTLINF) '*' 1.0D-20)))
'/' ('LOG' 10.)) ;
'DESSIN' everr 'TITRE' ('CHAINE' 'Convergence') 'MIMA'
'LEGE' TAB1 ;
'FINSI' ;
erfin = 'MINIMUM' (LISTLINF) ;
'SI' (erfin > 1.0D-6) ;
'ERREUR' 'Probleme de convergence' ;
'FINSI' ;
*
**** The mesh
*
'SI' GRAPH ;
'TRACER' DOMINT 'TITR' 'Maillage' ;
'FINSI' ;
*
**** Initial conditions
*
RN0 = RV . 'RN0' ;
GN0 = RV . 'GN0' ;
RET0 = RV . 'RET0' ;
VN PN0 = 'PRIM' 'PERFMONO'
RN0 GN0 RET0 GAMN 'TRICHE' ;
* 'SI' GRAPH ;
'SI' FAUX ;
CHM_RN = 'KCHA' MDOMINT 'CHAM' RN0 ;
CHM_VN = 'KCHA' MDOMINT 'CHAM' VN ;
CHM_PN = 'KCHA' MDOMINT 'CHAM' PN0 ;
'TRAC' CHM_RN MDOMINT ('CONTOUR' DOMINT)
'TITR' ('CHAINE' 'rho at t=' 0.0) ;
'TRAC' CHM_VN MDOMINT ('CONTOUR' DOMINT)
'TITR' ('CHAINE' 'v at t= ' 0.0) ;
'TRAC' CHM_PN MDOMINT ('CONTOUR' DOMINT)
'TITR' ('CHAINE' 'p at t= ' 0.0) ;
'FINSI' ;
*
**** The 2D graphics
*
NOMVEL = 'MOTS' 'UX' 'UY' ;
VN PN = 'PRIM' 'PERFMONO' RN GN RET GAMN 'TRICHE' ;
CN2 = GAMN '*' (PN '/' RN) ;
VN2 = 'PSCAL' VN VN NOMVEL NOMVEL ;
MACHN2 = VN2 '/' CN2 ;
MACHN = MACHN2 '**' 0.5 ;
*
HTN = (GAMN '/' (GAMN '-' 1.0)) '*' (PN '/' RN) ;
ECIN = 0.5 '*' ('PSCAL' VN VN NOMVEL NOMVEL) ;
HTN = HTN '+' ECIN ;
*
SN = PN '/' (RN '**' 1.4) ;
*
TPS = RV . 'RESULTS' . 'TPS' ;
CHM_RN = 'KCHA' MDOMINT 'CHAM' RN ;
CHM_VN = 'KCHA' MDOMINT 'CHAM' VN ;
CHM_PN = 'KCHA' MDOMINT 'CHAM' PN ;
CHM_MN = 'KCHA' MDOMINT 'CHAM' MACHN ;
CHM_HTN = 'KCHA' MDOMINT 'CHAM' HTN ;
CHM_SN = 'KCHA' MDOMINT 'CHAM' SN ;
*
'SI' FAUX ;
'TRAC' CHM_RN MDOMINT ('CONTOUR' DOMINT)
'TITR' ('CHAINE' 'rho at t=' TPS) ;
'TRAC' CHM_VN MDOMINT ('CONTOUR' DOMINT)
'TITR' ('CHAINE' 'v at t= ' TPS) ;
'TRAC' CHM_PN MDOMINT ('CONTOUR' DOMINT)
'TITR' ('CHAINE' 'p at t= ' TPS) ;
'TRAC' CHM_MN MDOMINT ('CONTOUR' DOMINT)
'TITR' ('CHAINE' 'Mach at t= ' TPS) ;
'TRAC' CHM_HTN MDOMINT ('CONTOUR' DOMINT)
'TITR' ('CHAINE' 'ht at t= ' TPS ' hl =' HTL) ;
'TRAC' CHM_SN MDOMINT ('CONTOUR' DOMINT)
'TITR' ('CHAINE' 'sn at t= ' TPS ' hl =' SL) ;
VECN = 'VECTEUR' VN (1. '/' NRAFF) 'UX' 'UY' 'JAUNE' ;
'TRACER' DOMINT VECN ('CONTOUR' DOMINT) 'TITR'
('CHAINE' 'v at t= ' TPS) ;
'FINSI' ;
*
GRADRN ALRN MCHSCA = 'PENT' MDOMINT 'CENTRE' 'EULESCAL' 'NOLIMITE'
('MOTS' 'SCAL') RN ;
GRADPN ALPN MCHSCA = 'PENT' MDOMINT 'CENTRE' 'EULESCAL' 'NOLIMITE'
('MOTS' 'SCAL') PN ;
RNV = 'ELNO' 'VF' TDOMINT RN GRADRN ALRN ;
PNV = 'ELNO' 'VF' TDOMINT PN GRADPN ALPN ;
TNV = PNV '/' (RAIR * RNV) ;
VNX = 'EXCO' VN 'UX' ;
VNY = 'EXCO' VN 'UY' ;
VNXV = 'ELNO' 'VF' TDOMINT VNX GRADRN (ALRN '*' 0.0) ;
VNYV = 'ELNO' 'VF' TDOMINT VNY GRADRN (ALRN '*' 0.0) ;
'SI' GRAPH ;
'TRACER' DOMINT RNV ('CONTOUR' DOMINT) 15 'TITRE' 'ro';
'TRACER' DOMINT PNV ('CONTOUR' DOMINT) 15 'TITRE' 'p' ;
'TRACER' DOMINT TNV ('CONTOUR' DOMINT) 15 'TITRE' 'T' ;
'TRACER' DOMINT VNXV ('CONTOUR' DOMINT) 15 'TITRE' 'vx' ;
'TRACER' DOMINT VNYV ('CONTOUR' DOMINT) 15 'TITRE' 'vy' ;
'FINSI' ;
*
xl = (L2 * 0.8) ;
PL1 = xl -0.4 ;
PL2 = xl 0.0 ;
PL3 = xl 0.4 ;
LIGPOST = (PL1 'DROIT' PL2 'DINI' DY2 'DFIN' DY1) 'ET'
(PL2 'DROIT' PL3 'DINI' DY1 'DFIN' DY2) ;
CHM_RNV = 'CHANGER' 'CHAM' RNV DOMINT ;
CHLRN = PROI LIGPOST CHM_RNV ;
EVOLRN = 'EVOL' CHPO CHLRN LIGPOST ;
YY = 'COORDONNEE' 2 LIGPOST ;
EVOLYY = 'EVOL' 'CHPO' YY LIGPOST ;
LYY = 'EXTRAIRE' EVOLYY 'ORDO' ;
EVOLRN = 'EVOL' 'MANU' 'y' LYY 'SCAL' ('EXTRAIRE' EVOLRN 'ORDO') ;
'SI' GRAPH ;
'DESSIN' EVOLRN 'TITR' 'Rho' 'GRIL' 'MIMA' ;
'FINSI' ;
*
CHM_TNV = 'CHANGER' 'CHAM' TNV DOMINT ;
CHLTN = PROI LIGPOST CHM_TNV ;
EVOLTN = 'EVOL' CHPO CHLTN LIGPOST ;
EVOLTN = 'EVOL' 'MANU' 'y' LYY 'SCAL' ('EXTRAIRE' EVOLTN 'ORDO') ;
'SI' GRAPH ;
'DESSIN' EVOLTN 'TITR' 'T' 'GRIL' 'MIMA' ;
'FINSI' ;
*
CHM_PNV = 'CHANGER' 'CHAM' PNV DOMINT ;
CHLPN = PROI LIGPOST CHM_PNV ;
EVOLPN = 'EVOL' CHPO CHLPN LIGPOST ;
EVOLPN = 'EVOL' 'MANU' 'y' LYY 'SCAL' ('EXTRAIRE' EVOLPN 'ORDO') ;
'SI' GRAPH ;
'DESSIN' EVOLPN 'TITR' 'P' 'GRIL' 'MIMA' ;
'FINSI' ;
*
CHM_VNXV = 'CHANGER' 'CHAM' VNXV DOMINT ;
CHLVNX = PROI LIGPOST CHM_VNXV ;
EVOLVNX = 'EVOL' CHPO CHLVNX LIGPOST ;
EVOLVNX = 'EVOL' 'MANU' 'y' LYY 'SCAL' ('EXTRAIRE' EVOLVNX 'ORDO') ;
'SI' GRAPH ;
'DESSIN' EVOLVNX 'TITR' 'vx' 'GRIL' 'MIMA' ;
'FINSI' ;
*
CHM_VNYV = 'CHANGER' 'CHAM' VNYV DOMINT ;
CHLVNY = PROI LIGPOST CHM_VNYV ;
EVOLVNY = 'EVOL' CHPO CHLVNY LIGPOST ;
EVOLVNY = 'EVOL' 'MANU' 'y' LYY 'SCAL' ('EXTRAIRE' EVOLVNY 'ORDO') ;
'SI' GRAPH ;
'DESSIN' EVOLVNY 'TITR' 'vy' 'GRIL' 'MIMA' ;
'FINSI' ;
*
'SI' FAUX ;
*
* File for gnuplot
*
'OPTION' 'ECHO' 0 'IMPR' 10 'IMPR' ('CHAINE' 'Ty' NRAFF '.txt') ;
aa = 'EXTRAIRE' EVOLTN 'ABSC' ;
bb = 'EXTRAIRE' EVOLTN 'ORDO' ;
*
nn = 'DIME' aa ;
'REPETER' BL1 nn ;
xx = 'CHAINE' 'FORMAT' '(E12.6)' ('EXTRAIRE' aa &bl1) ;
yy = 'CHAINE' 'FORMAT' '(E12.6)' ('EXTRAIRE' bb &bl1) ;
'MESSAGE' ('CHAINE' yy ' ' xx ) ;
'FIN' BL1 ;
*
'OPTION' IMPR 6 ;
'OPTION' ECHO 1 ;
'FINSI' ;
*************************************************************************
*************************************************************************
* VI) TEST **************************************************************
*************************************************************************
*************************************************************************
LISTY = 'PROG' -1.0 ;
LISTY = LISTY ET (PROG
-.2854E+00 -.2839E+00 -.2825E+00 -.2810E+00 -.2796E+00 -.2781E+00
-.2767E+00 -.2752E+00 -.2737E+00 -.2723E+00 -.2708E+00 -.2694E+00
-.2679E+00 -.2665E+00 -.2650E+00 -.2635E+00 -.2621E+00 -.2606E+00
-.2592E+00 -.2577E+00 -.2562E+00 -.2548E+00 -.2533E+00 -.2519E+00
-.2504E+00 -.2490E+00 -.2475E+00 -.2460E+00 -.2446E+00 -.2431E+00
) ;
LISTY = LISTY ET (PROG
-.2417E+00 -.2402E+00 -.2387E+00 -.2373E+00 -.2358E+00 -.2344E+00
-.2329E+00 -.2315E+00 -.2300E+00 -.2285E+00 -.2271E+00 -.2256E+00
-.2242E+00 -.2227E+00 -.2212E+00 -.2198E+00 -.2183E+00 -.2169E+00
-.2154E+00 -.2139E+00 -.2125E+00 -.2110E+00 -.2096E+00 -.2081E+00
-.2066E+00 -.2052E+00 -.2037E+00 -.2023E+00 -.2008E+00 -.1993E+00
) ;
LISTY = LISTY ET (PROG
-.1979E+00 -.1964E+00 -.1949E+00 -.1935E+00 -.1920E+00 -.1905E+00
-.1891E+00 -.1876E+00 -.1861E+00 -.1847E+00 -.1832E+00 -.1817E+00
-.1802E+00 -.1788E+00 -.1773E+00 -.1758E+00 -.1744E+00 -.1729E+00
-.1714E+00 -.1699E+00 -.1685E+00 -.1670E+00 -.1655E+00 -.1640E+00
-.1625E+00 -.1611E+00 -.1596E+00 -.1581E+00 -.1566E+00 -.1551E+00
) ;
LISTY = LISTY ET (PROG
-.1536E+00 -.1521E+00 -.1506E+00 -.1492E+00 -.1477E+00 -.1462E+00
-.1447E+00 -.1431E+00 -.1416E+00 -.1401E+00 -.1386E+00 -.1371E+00
-.1356E+00 -.1341E+00 -.1326E+00 -.1311E+00 -.1295E+00 -.1280E+00
-.1265E+00 -.1250E+00 -.1234E+00 -.1219E+00 -.1203E+00 -.1188E+00
-.1172E+00 -.1157E+00 -.1141E+00 -.1126E+00 -.1110E+00 -.1095E+00
) ;
LISTY = LISTY ET (PROG
-.1079E+00 -.1063E+00 -.1047E+00 -.1031E+00 -.1016E+00 -.9996E-01
-.9836E-01 -.9676E-01 -.9515E-01 -.9353E-01 -.9191E-01 -.9029E-01
-.8866E-01 -.8702E-01 -.8537E-01 -.8372E-01 -.8207E-01 -.8040E-01
-.7873E-01 -.7705E-01 -.7537E-01 -.7368E-01 -.7198E-01 -.7027E-01
-.6855E-01 -.6683E-01 -.6510E-01 -.6336E-01 -.6161E-01 -.5985E-01
) ;
LISTY = LISTY ET (PROG
-.5809E-01 -.5631E-01 -.5453E-01 -.5273E-01 -.5093E-01 -.4911E-01
-.4729E-01 -.4545E-01 -.4361E-01 -.4175E-01 -.3988E-01 -.3801E-01
-.3612E-01 -.3422E-01 -.3230E-01 -.3038E-01 -.2845E-01 -.2650E-01
-.2454E-01 -.2256E-01 -.2058E-01 -.1858E-01 -.1657E-01 -.1455E-01
-.1251E-01 -.1046E-01 -.8394E-02 -.6316E-02 -.4225E-02 -.2119E-02
) ;
LISTY = LISTY ET (PROG
.0000E+00 .2148E-02 .4309E-02 .6485E-02 .8676E-02 .1088E-01
.1310E-01 .1533E-01 .1758E-01 .1985E-01 .2212E-01 .2442E-01
.2672E-01 .2904E-01 .3138E-01 .3373E-01 .3610E-01 .3848E-01
.4087E-01 .4328E-01 .4570E-01 .4814E-01 .5059E-01 .5305E-01
.5553E-01 .5802E-01 .6052E-01 .6304E-01 .6557E-01 .6812E-01
) ;
LISTY = LISTY ET (PROG
.7067E-01 .7324E-01 .7582E-01 .7842E-01 .8102E-01 .8364E-01
.8627E-01 .8890E-01 .9155E-01 .9421E-01 .9689E-01 .9957E-01
.1023E+00 .1050E+00 .1077E+00 .1104E+00 .1131E+00 .1158E+00
.1186E+00 .1213E+00 .1241E+00 .1269E+00 .1296E+00 .1324E+00
.1352E+00 .1380E+00 .1408E+00 .1436E+00 .1464E+00 .1492E+00
) ;
LISTY = LISTY ET (PROG
.1521E+00 .1549E+00 .1577E+00 .1606E+00 .1634E+00 .1663E+00
.1691E+00 .1720E+00 .1748E+00 .1777E+00 .1805E+00 .1834E+00
.1863E+00 .1892E+00 .1920E+00 .1949E+00 .1978E+00 .2007E+00
.2036E+00 .2065E+00 .2093E+00 .2122E+00 .2151E+00 .2180E+00
.2209E+00 .2238E+00 .2267E+00 .2296E+00 .2325E+00 .2354E+00
) ;
LISTY = LISTY ET (PROG
.2383E+00 .2412E+00 .2441E+00 .2470E+00 .2499E+00 .2528E+00
.2557E+00 .2586E+00 .2616E+00 .2645E+00 .2674E+00 .2703E+00
.2732E+00 .2761E+00 .2790E+00 .2819E+00 .2848E+00 .2878E+00
.2907E+00 .2936E+00 .2965E+00 .2994E+00 .3023E+00 .3052E+00
.3081E+00 .3110E+00 .3140E+00 .3169E+00 .3198E+00 .3227E+00
) ;
LISTY = LISTY ET (PROG
.3256E+00 .3285E+00 .3315E+00 .3344E+00 .3373E+00 .3402E+00
.3431E+00 .3460E+00 .3489E+00 .3518E+00 .3548E+00 .3577E+00
.3606E+00 .3635E+00 .3664E+00 .3693E+00 .3722E+00 .3752E+00
.3781E+00 .3810E+00 .3839E+00 .3868E+00 .3897E+00 .3926E+00
.3956E+00 .3985E+00 .4014E+00 .4043E+00 .4072E+00 .4101E+00
) ;
LISTY = LISTY ET ('PROG' 1.0) ;
LISTT = 'PROG' .3000E+03 ;
LISTT = LISTT 'ET' (PROG
.3000E+03 .3000E+03 .3000E+03 .3000E+03 .3000E+03 .3000E+03
.3000E+03 .3000E+03 .3001E+03 .3001E+03 .3001E+03 .3001E+03
.3001E+03 .3001E+03 .3001E+03 .3001E+03 .3001E+03 .3001E+03
.3001E+03 .3001E+03 .3001E+03 .3001E+03 .3001E+03 .3001E+03
.3001E+03 .3002E+03 .3002E+03 .3002E+03 .3002E+03 .3002E+03
) ;
LISTT = LISTT ET (PROG
.3002E+03 .3002E+03 .3003E+03 .3003E+03 .3003E+03 .3003E+03
.3003E+03 .3004E+03 .3004E+03 .3004E+03 .3004E+03 .3005E+03
.3005E+03 .3005E+03 .3006E+03 .3006E+03 .3006E+03 .3007E+03
.3007E+03 .3008E+03 .3008E+03 .3009E+03 .3009E+03 .3010E+03
.3011E+03 .3011E+03 .3012E+03 .3012E+03 .3013E+03 .3014E+03
) ;
LISTT = LISTT ET (PROG
.3015E+03 .3016E+03 .3017E+03 .3018E+03 .3019E+03 .3020E+03
.3021E+03 .3022E+03 .3023E+03 .3024E+03 .3026E+03 .3027E+03
.3029E+03 .3030E+03 .3032E+03 .3034E+03 .3035E+03 .3037E+03
.3039E+03 .3041E+03 .3043E+03 .3045E+03 .3048E+03 .3050E+03
.3052E+03 .3055E+03 .3058E+03 .3061E+03 .3064E+03 .3066E+03
) ;
LISTT = LISTT ET (PROG
.3070E+03 .3073E+03 .3076E+03 .3080E+03 .3084E+03 .3088E+03
.3091E+03 .3096E+03 .3100E+03 .3104E+03 .3109E+03 .3114E+03
.3119E+03 .3124E+03 .3129E+03 .3135E+03 .3140E+03 .3146E+03
.3152E+03 .3159E+03 .3165E+03 .3172E+03 .3179E+03 .3186E+03
.3194E+03 .3201E+03 .3209E+03 .3217E+03 .3226E+03 .3234E+03
) ;
LISTT = LISTT ET (PROG
.3243E+03 .3252E+03 .3262E+03 .3271E+03 .3281E+03 .3292E+03
.3302E+03 .3313E+03 .3324E+03 .3336E+03 .3348E+03 .3360E+03
.3372E+03 .3385E+03 .3398E+03 .3411E+03 .3425E+03 .3439E+03
.3454E+03 .3469E+03 .3484E+03 .3499E+03 .3515E+03 .3531E+03
.3548E+03 .3565E+03 .3583E+03 .3600E+03 .3619E+03 .3637E+03
) ;
LISTT = LISTT ET (PROG
.3656E+03 .3675E+03 .3695E+03 .3715E+03 .3735E+03 .3756E+03
.3777E+03 .3799E+03 .3821E+03 .3843E+03 .3866E+03 .3889E+03
.3913E+03 .3937E+03 .3961E+03 .3985E+03 .4010E+03 .4036E+03
.4061E+03 .4087E+03 .4114E+03 .4140E+03 .4167E+03 .4194E+03
.4222E+03 .4250E+03 .4278E+03 .4306E+03 .4334E+03 .4363E+03
) ;
LISTT = LISTT ET (PROG
.4392E+03 .4421E+03 .4451E+03 .4480E+03 .4510E+03 .4539E+03
.4569E+03 .4599E+03 .4629E+03 .4659E+03 .4689E+03 .4719E+03
.4749E+03 .4780E+03 .4809E+03 .4839E+03 .4869E+03 .4899E+03
.4928E+03 .4958E+03 .4987E+03 .5016E+03 .5044E+03 .5073E+03
.5101E+03 .5129E+03 .5156E+03 .5184E+03 .5210E+03 .5237E+03
) ;
LISTT = LISTT ET (PROG
.5263E+03 .5289E+03 .5314E+03 .5339E+03 .5363E+03 .5387E+03
.5410E+03 .5433E+03 .5455E+03 .5477E+03 .5499E+03 .5519E+03
.5540E+03 .5559E+03 .5579E+03 .5597E+03 .5615E+03 .5633E+03
.5650E+03 .5666E+03 .5682E+03 .5698E+03 .5712E+03 .5727E+03
.5741E+03 .5754E+03 .5767E+03 .5779E+03 .5791E+03 .5802E+03
) ;
LISTT = LISTT ET (PROG
.5813E+03 .5823E+03 .5833E+03 .5843E+03 .5852E+03 .5860E+03
.5869E+03 .5876E+03 .5884E+03 .5891E+03 .5898E+03 .5904E+03
.5910E+03 .5916E+03 .5921E+03 .5926E+03 .5931E+03 .5936E+03
.5940E+03 .5944E+03 .5948E+03 .5951E+03 .5955E+03 .5958E+03
.5961E+03 .5964E+03 .5966E+03 .5969E+03 .5971E+03 .5973E+03
) ;
LISTT = LISTT ET (PROG
.5975E+03 .5977E+03 .5979E+03 .5981E+03 .5982E+03 .5984E+03
.5985E+03 .5986E+03 .5987E+03 .5988E+03 .5989E+03 .5990E+03
.5991E+03 .5992E+03 .5992E+03 .5993E+03 .5994E+03 .5994E+03
.5995E+03 .5995E+03 .5996E+03 .5996E+03 .5996E+03 .5997E+03
.5997E+03 .5997E+03 .5998E+03 .5998E+03 .5998E+03 .5998E+03
) ;
LISTT = LISTT ET (PROG
.5998E+03 .5999E+03 .5999E+03 .5999E+03 .5999E+03 .5999E+03
.5999E+03 .5999E+03 .5999E+03 .5999E+03 .5999E+03 .6000E+03
.6000E+03 .6000E+03 .6000E+03 .6000E+03 .6000E+03 .6000E+03
.6000E+03 .6000E+03 .6000E+03 .6000E+03 .6000E+03 .6000E+03
.6000E+03 .6000E+03 .6000E+03 .6000E+03 .6000E+03 .6000E+03
) ;
LISTT = LISTT 'ET' ('PROG' 0.600) ;
EVANA = 'EVOL' 'MANU' 'y' LISTY 'SCAL' LISTT ;
LYTN = 'PROG' -.40000 -.37411 -.34980 -.32695 -.30549 -.28533
-.26639 -.24859 -.23188 -.21618 -.20143 -.18757 -.17455
-.16232 -.15083 -.14004 -.12990 -.12038 -.11143 -.10302
-9.51266E-2 -8.77085E-2 -8.07397E-2 -7.41931E-2 -6.80431E-2
-6.22656E-2 -5.68381E-2 -5.17394E-2 -4.69495E-2 -4.24498E-2 ;
LYTN = LYTN 'ET' ('PROG' -3.82227E-2 -3.42517E-2 -3.05212E-2
-2.70167E-2 -2.37245E-2 -2.06317E-2 -1.77262E-2 -1.49968E-2
-1.24327E-2 -1.00240E-2 -7.76114E-3 -5.63538E-3 -3.63839E-3
-1.76237E-3 0.0000 1.76237E-3 3.63839E-3 5.63538E-3
7.76114E-3 1.00240E-2) ;
LYTN = LYTN 'ET' ('PROG' 1.24327E-2 1.49968E-2 1.77262E-2
2.06317E-2 2.37245E-2 2.70167E-2 3.05212E-2 3.42517E-2
3.82227E-2 4.24498E-2 4.69495E-2 5.17394E-2 5.68381E-2
6.22656E-2 6.80431E-2 7.41931E-2 8.07397E-2 8.77085E-2
9.51266E-2 .10302 .11143 .12038 .12990 .14004 .15083 .16232) ;
LYTN = LYTN 'ET' ('PROG' .17455 .18757 .20143 .21618
.23188 .24859 .26639 .28533 .30549
.32695 .34980 .37411 .40000) ;
LTTN = 'PROG' 300.00 300.00 300.00 300.00
300.01 300.03 300.08 300.19 300.39
300.75 301.34 302.23 303.51 305.24
307.48 310.26 313.57 317.40 321.71
326.44 331.51 336.85 342.39 348.04
353.77 359.49 365.15 370.71 376.15 ;
LTTN = LTTN 'ET' ('PROG' 381.42 386.51 391.41
396.09 400.57 404.83 408.88 412.73
416.36 419.79 423.04 426.10 428.98
431.69 434.24 436.64 439.04 441.59
444.31 447.20 450.27 453.54 457.00
460.66 464.54 468.65 472.97 477.53 ) ;
LTTN = LTTN 'ET' ('PROG' 482.32 487.34 492.59
498.05 503.73 509.59 515.62 521.79
528.06 534.38 540.71 546.99 553.16
559.15 564.90 570.32 575.36 579.96
584.07 587.66 590.71 593.23
595.24 596.79 597.92 598.72 599.26
599.60 599.80 599.90 599.96 599.98) ;
EVREF = 'EVOL' 'MANU' 'y' LYTN 'SCAL' LTTN ;
'SI' GRAPH ;
TAB1 = 'TABLE' ;
TAB1 . 1 = 'MOT' 'TIRR ';
TAB1 . 2 = 'MOT' 'TIRL';
TAB1 . 3 = 'MOT' 'TIRM';
TAB1 . 'TITRE' = 'TABLE' ;
TAB1 . 'TITRE' . 1 = 'MOT' 'Le resultat';
TAB1 . 'TITRE' . 2 = 'MOT' 'La reference' ;
TAB1 . 'TITRE' . 3 = 'MOT' 'L analytique' ;
'DESS' (EVOLTN 'ET' EVREF ET EVANA) TITRE 'Temperature'
'GRIL' 'MIMA' 'LEGE' TAB1 'XBOR' -0.3 0.3 ;
'FINSI' ;
EVOLTN1 = 'IPOL' LYTN ('EXTRAIRE' EVOLTN 'ABSC')
('EXTRAIRE' EVOLTN 'ORDO') ;
EVOLTN1 = 'EVOL' 'MANU' 'y' LYTN 'SCAL' EVOLTN1 ;
ERRO = ('EXTRAIRE' EVOLTN1 'ORDO') '-' ('EXTRAIRE' EVREF 'ORDO') ;
ERRO = 'ABS' ERRO ;
EVERRO = 'EVOL' 'MANU' 'y' LYTN 'SCAL' ERRO ;
'SI' GRAPH ;
'DESSIN' EVERRO 'TITR' 'Error on temperature' ;
'FINSI' ;
*
ERRL1 = 'MAXIMUM' ('EXTRAIRE' ('PRIM' EVERRO) 'ORDO') ;
CAC = 'EVOL' 'MANU' 'y' LYTN 'SCAL' ('PROG' ('DIME' LYTN) '*' 1) ;
CAC = 'MAXIMUM' ('EXTRAIRE' ('PRIM' CAC) 'ORDO') ;
ERRL1 = ERRL1 '/' CAC ;
*
* ERRL1 in degree
*
'SI' (ERRL1 > 10) ;
'ERREUR' 5 ;
'FINSI' ;
*
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer