* fichier :  clmult2D.dgibi
*********************************************************************
* VF, Condition Limites en 2D pour les Equations d'Euler            *
*     multiespeces                                                  *
* Kudriakov S., DM2S/SFME/LTMF,  FEVRIER 2003                       *
*                                                                   *
* Beccantini A., DM2S/SFME/LTMF,  FEVRIER 2006:                     *
*     BC of RESErvoir type                                          *
*********************************************************************

 TYEL = 'QUA8' ;
* TYEL = 'TRI6' ;

 'OPTION'  'DIME' 2  'ELEM' TYEL  'ISOV' 'SULI'
    'ECHO' 1 'TRAC' 'X' ;


 GRAPH = VRAI ;
 GRAPH = FAUX ;

******************
**** MAILLAGE ****
******************
*
*  P2    P3
*

 DX = 0.5 ;
 P2 = 0.0 0.0 ;
 P3 = DX DX ;
 P2P3 = P2 'DROIT' 1 P3 ;

 LIGHAU = (P2P3) 'PLUS' (4 '*' ((-1*DX) DX)) ;

 DOMINT = P2P3 'REGLER' 4 LIGHAU ;

 DOMINT = 'CHANGER' DOMINT 'QUAF' ;

*
**** Creation of DOMAINE tables via the MODEL object
*

 MDOMINT  = 'MODELISER' DOMINT 'NAVIER_STOKES' 'LINE' ;
 MP2P3    = 'MODELISER' P2P3 'NAVIER_STOKES' 'LINE' ;

 $DOMINT = 'DOMA' MDOMINT 'TABLE' ;
 $P2P3   = 'DOMA' MP2P3   'TABLE' ;

 DOMINT = 'DOMA' MDOMINT 'MAILLAGE' ;
 P2P3   = 'DOMA' MP2P3 'MAILLAGE' ;

 PCEN = ($DOMINT . 'CENTRE') 'POIN' 'PROC'  ((DX '/' 2) (DX /2)) ;

 MDICEN = $DOMINT . 'CENTRE' ;
 MFCEN = $P2P3 . 'CENTRE' ;

 'SI' GRAPH ;
    'TRACER' (DOMINT 'ET' PCEN) ;
 'FINSI' ;

**********************************************************************************
**********************************************************************************
***************************  Riemann invariants, inlet ***************************
**********************************************************************************
**********************************************************************************
 NESP = 4 ;

*-----------------------------------------------------
*** GAS: H_2, O_2, H_2O, N_2
*
*   CP, CV en J/Kg/K @ T = 3000
*-----------------------------------------------------

 PGAS = 'TABLE' ;

 PGAS . 'CP' = 'TABLE' ;
 PGAS . 'CP' . 'H2  '  = .18729066D+05 ;
 PGAS . 'CP' . 'O2  '  = .11886820D+04 ;
 PGAS . 'CP' . 'H2O '  = .31209047D+04 ;
 PGAS . 'CP' . 'N2  '  = .12993995D+04 ;



 PGAS . 'CV' = 'TABLE' ;
 PGAS . 'CV' . 'H2  '  = .14571861D+05 ;
 PGAS . 'CV' . 'O2  '  = .92885670D+03 ;
 PGAS . 'CV' . 'H2O '  = .26589930D+04 ;
 PGAS . 'CV' . 'N2  '  =  .10024563D+04;

*----------------------------------------------------
**** Especes qui sont dans les equations d'Euler
*----------------------------------------------------

PGAS . 'ESPEULE' = 'MOTS' 'H2  ' 'O2  ' 'H2O ' ;

*----------------------------------------------------
**** Espece qui n'y est pas
*----------------------------------------------------


 PGAS . 'ESPNEULE' = 'N2  ' ;

*-----------------
***  CP  ****
*-----------------
 CP = ('MANUEL' 'CHPO' MDICEN 1 'H2'
       (PGAS . 'CP' . 'H2  ') 'NATU' 'DISCRET') 'ET'
      ('MANUEL' 'CHPO' MDICEN 1 'O2'
      (PGAS . 'CP' . 'O2  ') 'NATU' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' MDICEN  1 'H2O'
       (PGAS . 'CP' . 'H2O ') 'NATU' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' MDICEN  1 'N2'
       (PGAS . 'CP' . 'N2  ') 'NATU' 'DISCRET') ;
***************************
  CPCEL = ('MANUEL' 'CHPO' MFCEN 1 'H2'
       (PGAS . 'CP' . 'H2  ') 'NATU' 'DISCRET') 'ET'
      ('MANUEL' 'CHPO' MFCEN 1 'O2'
      (PGAS . 'CP' . 'O2  ') 'NATU' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' MFCEN  1 'H2O'
       (PGAS . 'CP' . 'H2O ') 'NATU' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' MFCEN  1 'N2'
       (PGAS . 'CP' . 'N2  ') 'NATU' 'DISCRET') ;
*-----------------
***  CV ****
*-----------------
 CV = ('MANUEL' 'CHPO' MDICEN 1 'H2'
       (PGAS . 'CV' . 'H2  ') 'NATU' 'DISCRET') 'ET'
      ('MANUEL' 'CHPO' MDICEN 1 'O2'
      (PGAS . 'CV' . 'O2  ') 'NATU' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' MDICEN  1 'H2O'
       (PGAS . 'CV' . 'H2O ') 'NATU' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' MDICEN  1 'N2'
       (PGAS . 'CV' . 'N2  ') 'NATU' 'DISCRET') ;
*****************************
 CVCEL = ('MANUEL' 'CHPO' MFCEN 1 'H2'
       (PGAS . 'CV' . 'H2  ') 'NATU' 'DISCRET') 'ET'
      ('MANUEL' 'CHPO' MFCEN 1 'O2'
      (PGAS . 'CV' . 'O2  ') 'NATU' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' MFCEN  1 'H2O'
       (PGAS . 'CV' . 'H2O ') 'NATU' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' MFCEN  1 'N2'
       (PGAS . 'CV' . 'N2  ') 'NATU' 'DISCRET') ;
***********************************************************
***********************************************************

 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.110 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.41 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 0.1 'UX' 1.65 ;
 YN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 3 'H2' 0.3 'O2' 0.5
   'H2O' 0.1  ;
 YN1 = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 3 'H2' 0.3 'O2' 0.5
   'H2O' 0.1  'NATU' 'DISCRET'  ;
**********************************************************
 UNCH =  'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.0 ;
 YNESP = UNCH '-' ('PSCAL' UNCH YN ('MOTS' 'SCAL' 'SCAL' 'SCAL')
         (PGAS . 'ESPEULE')) ;
 YNESP = 'NOMC' 'N2  ' YNESP 'NATU' 'DISCRET' ;
 YNTOT = YN1 'ET' YNESP ;
 LMOT1 = (PGAS . 'ESPEULE') 'ET' ('MOTS' (PGAS . 'ESPNEULE')) ;
 CVTOT = 'PSCAL' YNTOT CV LMOT1 LMOT1 ;
 CPTOT = 'PSCAL' YNTOT CP LMOT1 LMOT1 ;
 GAMN = CPTOT '/' CVTOT ;
**********************************************************

 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 7 'RN' 2.11 'PN' 111.4
         'UX' 2.0 'UY' 1.0 'H2' 0.1 'O2' 0.7 'H2O' 0.05 ;


 LISTC = 'MOTS' 'VAR1' 'VAR2' 'VAR3' 'VAR4' 'VAR5' 'VAR6' 'VAR7' ;
 LISTP = 'MOTS' 'RN  ' 'UX  ' 'UY  ' 'PN  ' 'H2  ' 'O2  ' 'H2O ' ;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS  LISTC LISTP
                 RN VN PN YN CHPLI 'INRI'  ;
************************************************************
****  On calcule les variables conservatives  **************
************************************************************
 RAZM = NESP '+' 3 ;

 GN =  RN '*' VN ('MOTS' 'SCAL' 'SCAL')
       ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY') ;
 LMOT1 = 'MOTS' 'UX' 'UY' ;
 VVV = 'PSCAL'  VN  VN LMOT1 LMOT1 ;
 ECIN = 0.5D0 '*' RN '*' VVV ;

 RETN  = 'NOMC' 'SCAL' ((PN  '/' (GAMN  '-' 1.0)) '+' ECIN)
    'NATU' 'DISCRET' ;

 LMOT1 = (PGAS . 'ESPEULE') ;
 LMOT2 = 'MOTS' 'SCAL' 'SCAL' 'SCAL' ;
 LMOT3 = (PGAS . 'ESPEULE') ;

 RYN = YN '*' RN  LMOT1 LMOT2 LMOT3 ;

 VIT PRES TTEMP FRAM GAMM  = 'PRIM' 'PERFMULT' PGAS RN GN RETN RYN ;


 ERR1 = 'MAXIMUM' (PRES '-' PN) 'ABS' ;
 ERR2 = 'MAXIMUM' (GN '-' (RN '*' VIT ('MOTS' 'SCAL' 'SCAL' )
         ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) 'ABS' ;
 XXTOL = 1.D-12;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 1 : ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

'SI' (ERR2 > XXTOL) ;
   CHAI2 = CHAI 'ERREUR NUMERO 2 : ' ERR2 'POUR ' XXTOL;
   'MESS' CHAI2;
  'ERREUR' 5 ;
'FINSI' ;

*****************************************
**** On calcule RCHLIM en gibiane
*****************************************

 UNC   = (('EXCO' VN 'UY' 'SCAL') '-' ('EXCO' VN 'UX' 'SCAL')) '/' (2
 '**' 0.5) ;

 GAMMA = 'MAXIMUM' GAMN ;
 GM1 = '-' GAMMA 1. ;
 USGM1 = 1. '/' GM1 ;
 DSGM1 = 2. '*' USGM1 ;

 ASONC = GAMMA * (PN '/' RN) ;
 ASONC = ASONC '**' 0.5 ;

 G1 = UNC '-' (DSGM1 * ASONC) ;
 G1 = 'EXTRAIRE' G1 PCEN 'SCAL' ;
*******************************************************
 RNCEL= 'EXCO' CHPLI 'RN' ;
 PNCEL = 'EXCO' CHPLI 'PN' ;
 UNCELC = (('EXCO' CHPLI 'UY' 'SCAL') '-' ('EXCO' CHPLI 'UX' 'SCAL'))
  '/' (2 '**' 0.5) ;
 UTCELC = (('EXCO' CHPLI 'UY' 'SCAL') '+' ('EXCO' CHPLI 'UX' 'SCAL'))
  '/' (-1*(2 '**' 0.5)) ;
 YH2CEL = 'EXCO' CHPLI 'H2' 'NATU' 'DISCRET' ;
 YO2CEL = 'EXCO' CHPLI 'O2' 'NATU' 'DISCRET' ;
 YHOCEL = 'EXCO' CHPLI 'H2O' 'NATU' 'DISCRET' ;
 YNCEL = YH2CEL 'ET' YO2CEL ;
 YNCEL = YNCEL 'ET' YHOCEL ;
**********************************************************
 YNTCEL = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 4 'H2' 0.1 'O2' 0.7
   'H2O' 0.05 'N2' 0.15 'NATU' 'DISCRET'  ;
 LMOT1 = (PGAS . 'ESPEULE') 'ET' ('MOTS' (PGAS . 'ESPNEULE')) ;
 CVTOT = 'PSCAL' YNTCEL CVCEL LMOT1 LMOT1 ;
 CPTOT = 'PSCAL' YNTCEL CPCEL LMOT1 LMOT1 ;
 GAMCEL = CPTOT '/' CVTOT ;
***********************************************************
 GAMF = 'MAXIMUM' GAMCEL ;
 GM1F = '-' GAMF 1. ;
 USGM1F = 1. '/' GM1F ;
 DSGM1F = 2. '*' USGM1F ;

 ASONF = GAMF * (PNCEL '/' RNCEL) ;
 ASONF = ASONF '**' 0.5 ;

 G3 = UNCELC '+' (DSGM1F * ASONF) ;
 G3 = 'EXTRAIRE' G3 ('POIN' 1 ($P2P3 . 'CENTRE')) 'SCAL' ;
 S = PNCEL '/' (RNCEL** GAMF) ;
 S = 'EXTRAIRE' S  ('POIN' 1 ($P2P3 . 'CENTRE')) 'SCAL' ;

 GAMID = (GAMMA '+' GAMF) '/' 2.0D0 ;
 GM1M = '-' GAMID 1. ;
 USGM1M = 1. '/' GM1M ;
 DSGM1M = 2. '*' USGM1M ;

 ASON2=(0.5D0*(G3-G1)) ;
 ASON2=ASON2/DSGM1F ;
 ASON2=ASON2*ASON2 ;
 RHO=ASON2/(GAMF*S) ;
 RHO=RHO**USGM1F ;
 P=(RHO*ASON2)/GAMF ;
 UNCEL = 0.5 '*' (G3 '+' G1) ;
 UTCEL = 'EXTRAIRE' UTCELC ('POIN' 1 ($P2P3 . 'CENTRE')) 'SCAL' ;

 UX = (UNCEL '+' UTCEL) '/' (-1*(2 '**' 0.5)) ;
 UY = (UNCEL '-' UTCEL) '/' (2 '**' 0.5) ;


 CHLIM2 = 'MANU' 'CHPO' ($P2P3 . 'CENTRE') 7 'RN' RHO 'UX'
    UX 'UY' UY 'PN' P 'H2' 0.1 'O2' 0.7 'H2O' 0.05  ;

 ERRO = 'MAXIMUM' (CHLIM2 '-' RCHLIM) ;

 XXTOL = 1.D-12;
'SI' (ERRO > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 3 : ' ERRO 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 'FINSI' ;

******************************************************************
**** Jacobian with respect to primitive variable
******************************************************************

 RJACO = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN PN YN CHPLI 'INRI'  ;
 EPS=1.0D-6 ;
 ERROM = 1.0D-3 ;
* RN ****************** RN *******  RN *********************

 DRSCAL = EPS '*'  ('EXTRAIRE' RN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                  PGAS LISTC LISTP
                 (RN '+' DR) VN PN YN CHPLI 'INRI'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 1.0
   'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;
 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 4 : ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


* UX ***** UX ****** UX ****** UX ************************

 DUXSCAL = EPS '*'  ('EXTRAIRE' VN 'UX' PCEN) ;
 DUX = ('MANUEL' 'CHPO' ELE1 1 'UX' DUXSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                   PGAS LISTC LISTP
                 RN (VN '+' DUX) PN YN CHPLI 'INRI'  ;

 DRESDUXN = ( RCHRES1 '-'  RCHRES) '/' DUXSCAL ;
 DRESDUX  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
           'UX' 1.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0) ;
 MMM = 'MAXIMUM' DRESDUX 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDUX '-' DRESDUXN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 5 : ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*** UY *************** UY ************* UY *******************

 DUYSCAL = EPS '*'  ('EXTRAIRE' VN 'UY' PCEN) ;
 DUY = ('MANUEL' 'CHPO' ELE1 1 'UY' DUYSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN '+' DUY) PN YN CHPLI 'INRI'  ;

 DRESDUYN = ( RCHRES1 '-'  RCHRES) '/' DUYSCAL ;
 DRESDUY  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
       'UX' 0.0 'UY' 1.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDUY 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDUY '-' DRESDUYN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 6 : ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


**** PN ********** PN ************ PN ***********************

 DPSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DP = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DPSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                  PGAS   LISTC LISTP
                 RN  VN (PN '+' DP) YN CHPLI 'INRI'  ;

 DRESDPN = ( RCHRES1 '-'  RCHRES) '/' DPSCAL ;
 DRESDP  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
           'UX' 0.0 'UY' 0.0 'PN' 1.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDP 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDP '-' DRESDPN)'/' MMM) 'ABS' ;


 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 7 : ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


**** YH2 ********** YH2 ************ YH2 ***********************

 DYH2SCAL = EPS '*'  ('EXTRAIRE' YN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DYH2 = ('MANUEL' 'CHPO' ELE1 1 'H2' DYH2SCAL ) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                  PGAS   LISTC LISTP
                 RN  VN PN (YN1 '+' DYH2)  CHPLI 'INRI'  ;

 DRESDYN = ( RCHRES1 '-'  RCHRES) '/' DYH2SCAL ;
 DRESDY  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
           'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 1.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDY 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDY '-' DRESDYN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 8 : ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***** YO2  ******  YO2  ***********  YO2 ******************

 DYO2SCAL = EPS '*'  ('EXTRAIRE' YN 'O2' PCEN) ;

 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DYO2 = ('MANUEL' 'CHPO' ELE1 1 'O2' DYO2SCAL ) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                  PGAS   LISTC LISTP
                 RN  VN PN (YN1 '+' DYO2)  CHPLI 'INRI'  ;

 DRESDYN = ( RCHRES1 '-'  RCHRES) '/' DYO2SCAL ;
 DRESDY  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
           'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 1.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDY 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDY '-' DRESDYN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 9 : ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***** YHO  ******  YHO  ***********  YHO ******************

 DYHOSCAL = EPS '*'  ('EXTRAIRE' YN 'H2O' PCEN) ;

 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DYHO = ('MANUEL' 'CHPO' ELE1 1 'H2O' DYHOSCAL ) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                  PGAS   LISTC LISTP
                 RN  VN PN (YN1 '+' DYHO)  CHPLI 'INRI'  ;

 DRESDYN = ( RCHRES1 '-'  RCHRES) '/' DYHOSCAL ;
 DRESDY  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
           'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 1.0 ) ;

 MMM = 'MAXIMUM' DRESDY 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDY '-' DRESDYN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 10: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


**************************************************************
**** Jacobian with respect to conservative variables
**************************************************************

 RJACO = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN PN YN CHPLI 'INRI'  ;

******** RN  *************  RN  **********  RN  **************

 DRSCAL = EPS '*'  ('EXTRAIRE' RN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RN1 = RN '+' DR ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INRI'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 1.0
     'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0
     'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 11: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

***** RUX ******* RUX  ********  RUX *******************

 DUXSCAL = EPS '*'  ('EXTRAIRE' GN 'UX' PCEN) ;
 DUX = ('MANUEL' 'CHPO' ELE1 1 'UX' DUXSCAL) ;

 RN1 = 'COPIER' RN ;
 GN1 = GN '+' DUX ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INRI'  ;

 DRESDUXN = ( RCHRES1 '-'  RCHRES) '/' DUXSCAL ;
 DRESDUX  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
     'VAR2' 1.0 'VAR3' 0.0 'VAR4' 0.0
     'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDUX 'ABS' ;
 ERRO = 'MAXIMUM' ((DRESDUX '-' DRESDUXN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 12: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

***** RUY ******* RUY  ********  RUY *******************

 DUYSCAL = EPS '*'  ('EXTRAIRE' GN 'UY' PCEN) ;
 DUY = ('MANUEL' 'CHPO' ELE1 1 'UY' DUYSCAL) ;

 RN1 = 'COPIER' RN ;
 GN1 = GN '+' DUY ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INRI'  ;

 DRESDUYN = ( RCHRES1 '-'  RCHRES) '/' DUYSCAL ;
 DRESDUY  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
     'VAR2' 0.0 'VAR3' 1.0 'VAR4' 0.0
     'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDUY 'ABS' ;
 ERRO = 'MAXIMUM' ((DRESDUY '-' DRESDUYN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 13: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

******** RETN ************ RETN ************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RETN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RN1 = 'COPIER' RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = RETN '+' DR ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INRI'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
     'VAR2' 0.0 'VAR3' 0.0 'VAR4' 1.0
     'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 14: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

******** RYN ************ RYN ************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RN1 = 'COPIER' RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = RETN  ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INRI'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
     'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0
     'VAR5' 1.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 15: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

******** RYN ************ RYN ************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RN1 = 'COPIER' RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = RETN  ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INRI'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
     'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0
     'VAR5' 1.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 16: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

******** RYNH2 ************ RYNH2 ************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RN1 = 'COPIER' RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = RETN  ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INRI'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
     'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0
     'VAR5' 1.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 17: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

******** RYNO2 ************ RYNO2 ************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'O2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'O2' DRSCAL) ;

 RN1 = 'COPIER' RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = RETN  ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INRI'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
     'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0
     'VAR5' 0.0 'VAR6' 1.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 18: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


******** RYNH20 ************ RYNH20 ************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2O' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2O' DRSCAL) ;

 RN1 = 'COPIER' RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = RETN  ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INRI'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
     'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0
     'VAR5' 0.0 'VAR6' 0.0 'VAR7' 1.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 19: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

******************************************************************************
******************************************************************************
***************************  INJE ********************************************
******************************************************************************
******************************************************************************
*
* We impose RT and the normal momentum at the inlet.
* (les fractions massiques sont impsees aussi)
***** Calcul du residu dans le cas particulier UF = UC
*****************************************************************************
 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 15. 'UX' -15. ;
 YN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 3 'H2' 0.3 'O2' 0.5
   'H2O' 0.1  ;

 GN = RN '*' VN ;
 MOME = (15 '*' (2. '**' 0.5)) * 1.1 ;
 RT   = 2.1 '/' 1.1 ;

 UXC = ('EXTRAIRE' VN 'UX' PCEN) ;
 UYC = ('EXTRAIRE' VN 'UY' PCEN) ;
 PC  = ('EXTRAIRE' PN 'SCAL' PCEN) ;
 RC  = ('EXTRAIRE' RN 'SCAL' PCEN) ;
 YH2 = ('EXTRAIRE' YN 'H2' PCEN) ;
 YO2 = ('EXTRAIRE' YN 'O2' PCEN) ;
 YH2O = ('EXTRAIRE' YN 'H2O' PCEN) ;

  CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 5 'RT' RT
    'MOME' MOME  'H2' 0.3 'O2' 0.5 'H2O' 0.1 ;


  LISTC = 'MOTS' 'VAR1' 'VAR2' 'VAR3' 'VAR4' 'VAR5' 'VAR6' 'VAR7' ;
  LISTP = 'MOTS' 'RN  ' 'UX  ' 'UY  ' 'PN  ' 'H2  ' 'O2  ' 'H2O ' ;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN YN CHPLI 'INJE'  ;
*---------------------------------------
**   Testing RCHLIM  !!!!!
*---------------------------------------
 RCHLIM1 = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 7 'RN' RC 'PN' PC 'UX' UXC
   'UY' UYC 'H2' 0.3 'O2' 0.5 'H2O' 0.1 ;

 ERRO = 'MAXIMUM' (RCHLIM1 '-' RCHLIM) 'ABS' ;

 XXTOL = 1.D-12;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 20: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

*-------------------------------------
**   Testing RCHRES  !!!!!
*-------------------------------------
 'SI' ('EGA' TYEL 'QUA8') ;
     SURSVOL = 1. '/' ((2 '**' 0.5) * 0.5)  ;
 'SINON' ;
     SURSVOL = 2. '/' ((2 '**' 0.5) * 0.5)  ;
 'FINSI' ;
*-------------------------------------------------------------
 YN2 = 1.0D0 '-' (YH2 '+' YO2 '+' YH2O) ;
 YNTOT = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 4 'H2' YH2 'O2' YO2
   'H2O' YH2O 'N2' YN2  ;
 LMOT1 = (PGAS . 'ESPEULE') 'ET' ('MOTS' (PGAS . 'ESPNEULE')) ;
 CVTOT = 'PSCAL' YNTOT CV LMOT1 LMOT1 ;
 CPTOT = 'PSCAL' YNTOT CP LMOT1 LMOT1 ;
 GAMN = CPTOT '/' CVTOT ;
 GAMC = ('EXTRAIRE' GAMN 'SCAL' PCEN) ;
*--------------------------------------------------------------
 FMASS = MOME ;
 FUX   = (MOME * UXC) '-' (PC '/' (2. '**' 0.5)) ;
 FUY   = (MOME * UYC) '+' (PC '/' (2. '**' 0.5)) ;
 HIN   = (GAMC/(GAMC-1)) '*' (PC '/' RC) ;
 ECIN = 0.5 '*' ((UXC '*' UXC) '+' (UYC '*' UYC)) ;
 FEN   = MOME '*' (HIN '+' ECIN)
          ;
 RCHRES1 = 'MANUEL' 'CHPO' ('MANUEL' 'POI1' PCEN) 7
   'VAR1' (SURSVOL '*' FMASS) 'VAR2' (FUX '*' SURSVOL) 'VAR3' (FUY '*'
   SURSVOL) 'VAR4' (FEN '*' SURSVOL) 'VAR5' (FMASS '*' YH2 '*' SURSVOL)
   'VAR6' (FMASS '*' YO2'*'SURSVOL) 'VAR7' (FMASS '*' YH2O'*'SURSVOL);

 ERRO = 'MAXIMUM' (RCHRES1 '-' RCHRES) 'ABS' ;

 XXTOL = 1.D-10;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 21: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

****************************************************************
************* JACOBIANS  ***************************************
****************************************************************

 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 1.11 'UX' -1.3 ;
 YN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 3 'H2' 0.3 'O2' 0.5
   'H2O' 0.1  ;
 YH2 = ('EXTRAIRE' YN 'H2' PCEN) ;
 YO2 = ('EXTRAIRE' YN 'O2' PCEN) ;
 YH2O = ('EXTRAIRE' YN 'H2O' PCEN) ;
 YN2 = 1.0D0 '-' (YH2 '+' YO2 '+' YH2O) ;
 YNTOT = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 4 'H2' YH2 'O2' YO2
   'H2O' YH2O 'N2' YN2  ;
 LMOT1 = (PGAS . 'ESPEULE') 'ET' ('MOTS' (PGAS . 'ESPNEULE')) ;
 CVTOT = 'PSCAL' YNTOT CV LMOT1 LMOT1 ;
 CPTOT = 'PSCAL' YNTOT CP LMOT1 LMOT1 ;
 GAMN = CPTOT '/' CVTOT ;
 GAMC = ('EXTRAIRE' GAMN 'SCAL' PCEN) ;

 LMOT1 = (PGAS . 'ESPEULE') ;
 LMOT2 = 'MOTS' 'SCAL' 'SCAL' 'SCAL' ;
 LMOT3 = (PGAS . 'ESPEULE') ;

 RYN = YN '*' RN  LMOT1 LMOT2 LMOT3 ;

************************************************

 GN = RN '*' VN ;
 RETN = (('INVERSE' (GAMN '-' 1)) '*' PN)  '+' (0.5 '*' ('PSCAL' VN GN
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;
 MOME = 0.111 ;
 RT   = 4.1 ;

 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 5 'RT' RT
    'MOME' MOME  'H2' 0.1 'O2' 0.5 'H2O' 0.3 ;


 LISTC = 'MOTS' 'VAR1' 'VAR2' 'VAR3' 'VAR4' 'VAR5' 'VAR6' 'VAR7' ;
 LISTP = 'MOTS' 'RN  ' 'UX  ' 'UY  ' 'PN  ' 'H2  ' 'O2  ' 'H2O ' ;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN YN CHPLI 'INJE'  ;

***************************************************************
***** Jacobian with respect to the primitive variables ********
***************************************************************

 RJACO = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN PN YN CHPLI 'INJE'  ;

* EPS=1.0D-6 ;
* ERROM = 1.0D-5 ;

************ RN  ***************  RN *****************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 (RN '+' DR) VN PN YN CHPLI 'INJE'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 1.0
    'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 22: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************ UX  ***************  UX *****************************

 DRSCAL = EPS '*'  ('EXTRAIRE' VN 'UX' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UX' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN '+' DR) PN YN CHPLI 'INJE'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
    'UX' 1.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 23: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

************ UY  ***************  UY *****************************

 DRSCAL = EPS '*'  ('EXTRAIRE' VN 'UY' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UY' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN '+' DR) PN YN CHPLI 'INJE'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
    'UX' 0.0 'UY' 1.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 24: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

************ PN  ***************  PN *****************************

 DRSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN (PN '+' DR) YN CHPLI 'INJE'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
    'UX' 0.0 'UY' 0.0 'PN' 1.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 25: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

************ H2  ***************  H2 *****************************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'INJE'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
    'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 1.0 'O2' 0.0 'H2O' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 26: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

************ O2  ***************  O2 *****************************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'O2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'O2' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'INJE'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
    'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 1.0 'H2O' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 27: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

************ H2O  ***************  H2O *****************************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'H2O' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2O' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'INJE'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
    'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 1.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 28: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

************************************************************
**** Jacobian with respect to conservative variables  ******
************************************************************

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN  VN PN  YN CHPLI 'INJE'  ;

 RJACO = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN PN YN CHPLI 'INJE'  ;

***************** RN ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RN1 = RN '+' DR ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INJE'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 1.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 29: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

***************** RUX ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' GN 'UX' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UX' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = GN '+' DR ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INJE'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 1.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 30: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

***************** RUY ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' GN 'UY' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UY' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = GN '+' DR ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INJE'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 1.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 31: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RETN ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RETN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN  ;
 RETN1 = RETN '+' DR ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INJE'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 1.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 32: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RYH2 ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INJE'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 1.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 33: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RYO2 ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'O2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'O2' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INJE'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 1.0 'VAR7' 0.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 34: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RYH2O ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2O' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2O' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INJE'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 1.0 ) ;

 ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 35: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************************************************************************
************************************************************************
***************************  Pressure at the outlet ********************
************************************************************************
************************************************************************
*
* We solve a Riemann probleme between the state in the center and
* the same state but the pressure equal to the pressure at the outlet
* We use AUSMPLUS
*
*
***** Calcul du residu dans le cas particulier PF = PC

 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' -15. 'UX' 1. ;
 YN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 3 'H2' 0.3 'O2' 0.5
   'H2O' 0.1  ;

 GN = RN '*' VN ;
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 1 'PN' 2.1 ;
*----------------------------------------------------------
 YH2 = ('EXTRAIRE' YN 'H2' PCEN) ;
 YO2 = ('EXTRAIRE' YN 'O2' PCEN) ;
 YH2O = ('EXTRAIRE' YN 'H2O' PCEN) ;
 YN2 = 1.0D0 '-' (YH2 '+' YO2 '+' YH2O) ;
 YNTOT = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 4 'H2' YH2 'O2' YO2
   'H2O' YH2O 'N2' YN2  ;
 LMOT1 = (PGAS . 'ESPEULE') 'ET' ('MOTS' (PGAS . 'ESPNEULE')) ;
 CVTOT = 'PSCAL' YNTOT CV LMOT1 LMOT1 ;
 CPTOT = 'PSCAL' YNTOT CP LMOT1 LMOT1 ;
 GAMN = CPTOT '/' CVTOT ;
 GAMC = ('EXTRAIRE' GAMN 'SCAL' PCEN) ;
*----------------------------------------------------------
 LMOT1 = (PGAS . 'ESPEULE') ;
 LMOT2 = 'MOTS' 'SCAL' 'SCAL' 'SCAL' ;
 LMOT3 = (PGAS . 'ESPEULE') ;

 RYN = YN '*' RN  LMOT1 LMOT2 LMOT3 ;

************************************************

 RETN = (('INVERSE' (GAMN '-' 1)) '*' PN)  '+' (0.5 '*' ('PSCAL' VN GN
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;

 LISTC = 'MOTS' 'VAR1' 'VAR2' 'VAR3' 'VAR4' 'VAR5' 'VAR6' 'VAR7' ;
 LISTP = 'MOTS' 'RN  ' 'UX  ' 'UY  ' 'PN  ' 'H2  ' 'O2  ' 'H2O ' ;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN YN CHPLI 'OUTP'  ;

*-----------------------------------------------
 'SI' ('EGA' TYEL 'QUA8') ;
    SURSVOL = -1. '/' ((2 '**' 0.5) * 0.5)  ;
 'SINON' ;
    SURSVOL = -2. '/' ((2 '**' 0.5) * 0.5)  ;
 'FINSI' ;
 UXC = ('EXTRAIRE' VN 'UX' PCEN) ;
 UYC = ('EXTRAIRE' VN 'UY' PCEN) ;
 UNORM = (UXC '-' UYC) '/' (2. '**' 0.5) ;
 UT    = (UXC '+' UYC) '/' (2. '**' 0.5) ;
 PC =  'EXTRAIRE' PN PCEN 'SCAL' ;
 RC = 'EXTRAIRE' RN PCEN 'SCAL' ;

 FMASS = RC '*' UNORM ;
 FUN   = (RC '*' UNORM '*' UNORM) '+' PC ;
 FUT   = (RC '*' UNORM '*' UT) ;
 FUX   = (FUN '+' FUT) '/' (2. '**' 0.5) ;
 FUY   = (FUT '-' FUN) '/' (2. '**' 0.5) ;
 FEN   = (UNORM '*' ((GAMC/(GAMC-1)) '*' PC)) '+'
          (0.5 '*' UNORM '*' RC '*' ((UNORM '*' UNORM) '+' (UT '*' UT)))
          ;
 FYH2  = YH2 '*' RC '*' UNORM ;
 FYO2  = YO2 '*' RC '*' UNORM ;
 FYH2O  = YH2O '*' RC '*' UNORM ;

 RCHRES1 = 'MANUEL' 'CHPO' ('MANUEL' 'POI1' PCEN) 7
   'VAR1' (SURSVOL '*' FMASS) 'VAR2' (FUX '*' SURSVOL) 'VAR3' (FUY '*'
   SURSVOL) 'VAR4' (FEN '*' SURSVOL)  'VAR5' (FYH2 '*' SURSVOL)
    'VAR6' (FYO2 '*' SURSVOL) 'VAR7' (FYH2O '*' SURSVOL) ;

 ERRO = 'MAXIMUM' (RCHRES1 '-' RCHRES) 'ABS' ;

 XXTOL = 1.D-12;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 36: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*------------------------------------------------------------
***** Jacobian with respect to the primitive variables ******
*------------------------------------------------------------
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 1 'PN' 4.1 ;
 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN YN CHPLI 'OUTP'  ;

 RJACO = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN PN YN CHPLI 'OUTP'  ;


************* RN *********** RN ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' RN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 (RN '+' DR) VN PN YN CHPLI 'OUTP'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 1.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 37: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* UX *********** UX ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' VN 'UX' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UX' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN '+' DR) PN YN CHPLI 'OUTP'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 1.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 38: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* UY *********** UY ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' VN 'UY' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UY' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN '+' DR) PN YN CHPLI 'OUTP'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 1.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 39: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* PN *********** PN ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN (PN '+' DR) YN CHPLI 'OUTP'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 1.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 40: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* H2 *********** H2 ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'OUTP'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 1.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 41: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* O2 *********** O2 ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'O2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'O2' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'OUTP'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 1.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 42: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;



************* H2O *********** H2O ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'H2O' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2O' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'OUTP'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 1.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 43: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*----------------------------------------------------------
**** Jacobian with respect to conservative variables
*---------------------------------------------------------

 RJACO = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN PN YN CHPLI 'OUTP'  ;

*************** RN **************** RN *******************

 DRSCAL = EPS '*'  ('EXTRAIRE' RN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RN1 = RN '+' DR ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER' RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'OUTP'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 1.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN)'/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 44: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RUX ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' GN 'UX' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UX' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = GN '+' DR ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'OUTP'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 1.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

  MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 45: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RUY ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' GN 'UY' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UY' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = GN '+' DR ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'OUTP'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 1.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 46: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RETN ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RETN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN  ;
 RETN1 = RETN '+' DR ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'OUTP'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 1.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 47: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RYH2 ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'OUTP'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 1.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

  MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 48: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RYO2 ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'O2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'O2' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'OUTP'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 1.0 'VAR7' 0.0 ) ;

  MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 49: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RYH2O ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2O' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2O' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'OUTP'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 1.0 ) ;

  MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 50: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*******************************************************************
*******************************************************************
***************************  INSU *********************************
*******************************************************************
*******************************************************************
* Total enthalpy, entropy, tangential velocity at the inlet
* Normal velocity inside
*
* We solve a Riemann probleme between the state at the interface thus
* reconstructed and the state at the center
*
***** Calcul du residu dans le cas particulier UF = UC
*

 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 15. 'UX' -15. ;
 YN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 3 'H2' 0.3 'O2' 0.5
   'H2O' 0.1  ;

 GN = RN '*' VN ;
*----------------------------------------------------------
 YH2 = ('EXTRAIRE' YN 'H2' PCEN) ;
 YO2 = ('EXTRAIRE' YN 'O2' PCEN) ;
 YH2O = ('EXTRAIRE' YN 'H2O' PCEN) ;
 YN2 = 1.0D0 '-' (YH2 '+' YO2 '+' YH2O) ;
 YNTOT = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 4 'H2' YH2 'O2' YO2
   'H2O' YH2O 'N2' YN2  ;
 LMOT1 = (PGAS . 'ESPEULE') 'ET' ('MOTS' (PGAS . 'ESPNEULE')) ;
 CVTOT = 'PSCAL' YNTOT CV LMOT1 LMOT1 ;
 CPTOT = 'PSCAL' YNTOT CP LMOT1 LMOT1 ;
 GAMN = CPTOT '/' CVTOT ;
 GAMC = ('EXTRAIRE' GAMN 'SCAL' PCEN) ;
*----------------------------------------------------------
 RETN = (('INVERSE' (GAMN '-' 1)) '*' PN)  '+' (0.5 '*' ('PSCAL' VN GN
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;
 RHTN = RETN '+' PN ;
 HTN = RHTN '/' RN ;
 UXC = ('EXTRAIRE' VN 'UX' PCEN) ;
 UYC = ('EXTRAIRE' VN 'UY' PCEN) ;
 UTC    = -1 '*' (UXC '+' UYC) '/' (2. '**' 0.5) ;

 SN = PN '/' (RN '**' ('MAXI' GAMN)) ;

 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 5 'HT' ('MAXIMUM' HTN)
    'S' ('MAXIMUM' SN)  'H2' 0.3 'O2' 0.5 'H2O' 0.1;

 LISTC = 'MOTS' 'VAR1' 'VAR2' 'VAR3' 'VAR4' 'VAR5' 'VAR6' 'VAR7' ;
 LISTP = 'MOTS' 'RN  ' 'UX  ' 'UY  ' 'PN  ' 'H2  ' 'O2  ' 'H2O ' ;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN YN CHPLI 'INSU'  ;

*-------------------------------------------------------------

 'SI' ('EGA' TYEL 'QUA8') ;
    SURSVOL = -1. '/' ((2 '**' 0.5) * 0.5)  ;
 'SINON' ;
    SURSVOL = -2. '/' ((2 '**' 0.5) * 0.5)  ;
 'FINSI' ;

 UXC = ('EXTRAIRE' VN 'UX' PCEN) ;
 UYC = ('EXTRAIRE' VN 'UY' PCEN) ;
 UNORM = (UXC '-' UYC) '/' (2. '**' 0.5) ;
 UT    = (UXC '+' UYC) '/' (2. '**' 0.5) ;
 PC =  'EXTRAIRE' PN PCEN 'SCAL' ;
 RC = 'EXTRAIRE' RN PCEN 'SCAL' ;
 GAMC = 'EXTRAIRE' GAMN PCEN 'SCAL' ;

 RCHLIM2 = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 7 'RN' RC 'PN' PC 'UX'
   UXC 'UY' UYC 'H2' YH2 'O2' YO2 'H2O' YH2O ;

 ERRO = 'MAXIMUM' (RCHLIM '-' RCHLIM2) 'ABS' ;

 XXTOL = 1.D-6;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 51: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


 FMASS = RC '*' UNORM ;
 FUN   = (RC '*' UNORM '*' UNORM) '+' PC ;
 FUT   = (RC '*' UNORM '*' UT) ;
 FUX   = (FUN '+' FUT) '/' (2. '**' 0.5) ;
 FUY   = (FUT '-' FUN) '/' (2. '**' 0.5) ;
 FEN   = (UNORM '*' ((GAMC/(GAMC-1)) '*' PC)) '+'
          (0.5 '*' UNORM '*' RC '*' ((UNORM '*' UNORM) '+'
          (UT '*' UT))) ;
 FH2   = RC '*' UNORM  '*' YH2 ;
 FO2   = RC '*' UNORM  '*' YO2 ;
 FHO   = RC '*' UNORM  '*' YH2O ;
 RCHRES1 = 'MANUEL' 'CHPO' ('MANUEL' 'POI1' PCEN) 7
   'VAR1' (SURSVOL '*' FMASS) 'VAR2' (FUX '*' SURSVOL)
   'VAR3' (FUY '*' SURSVOL) 'VAR4' (FEN '*' SURSVOL)
   'VAR5' (FH2 '*' SURSVOL) 'VAR6' (FO2 '*' SURSVOL)
   'VAR7' (FHO '*' SURSVOL) ;

 ERRO = 'MAXIMUM' (RCHRES1 '-' RCHRES) 'ABS' ;


 XXTOL = 1.D-6;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 52: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

*------------------------------------------------------------
***** Jacobian with respect to the primitive variables ******
*------------------------------------------------------------
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 5 'HT' 250.0
    'S' 2.0  'H2' 0.1 'O2' 0.7 'H2O' 0.2;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN YN CHPLI 'INSU'  ;

 RJACO = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN PN YN CHPLI 'INSU'  ;

************* RN *********** RN ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' RN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 (RN '+' DR) VN PN YN CHPLI 'INSU'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 1.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;


 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 53: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* UX *********** UX ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' VN 'UX' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UX' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN '+' DR) PN YN CHPLI 'INSU'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 1.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;


 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 54: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* UY *********** UY ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' VN 'UY' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UY' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN '+' DR) PN YN CHPLI 'INSU'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 1.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 55: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* PN *********** PN ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN (PN '+' DR) YN CHPLI 'INSU'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 1.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 56: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* H2 *********** H2 ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'INSU'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 1.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 57: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

************* O2 *********** O2 ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'O2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'O2' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'INSU'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 1.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 58: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;



************* H2O *********** H2O ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'H2O' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2O' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'INSU'  ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 1.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;


 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 59: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*----------------------------------------------------------
**** Jacobian with respect to conservative variables
*---------------------------------------------------------

 RJACO = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN PN YN CHPLI 'INSU'  ;


*************** RN **************** RN *******************

 DRSCAL = EPS '*'  ('EXTRAIRE' RN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RN1 = RN '+' DR ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER' RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INSU'  ;

 NNN = 'MAXIMUM' RCHRES 'ABS' ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL   ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 1.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

* 'OPTION' DONN 5 ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 60: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RUX ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' GN 'UX' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UX' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = GN '+' DR ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INSU'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 1.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

  MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

* 'OPTION' DONN 5 ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 61: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RUY ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' GN 'UY' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UY' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = GN '+' DR ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INSU'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 1.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 62: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RETN ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RETN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN  ;
 RETN1 = RETN '+' DR ;
 RYN1 = 'COPIER'  RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INSU'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 1.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 63: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

***************** RYH2 ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INSU'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 1.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

  MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 64: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RYO2 ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'O2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'O2' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INSU'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 1.0 'VAR7' 0.0 ) ;

  MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 65: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


***************** RYH2O ************************************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2O' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2O' DRSCAL) ;

 RN1 = 'COPIER'  RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INSU'  ;

 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 1.0 ) ;

  MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 66: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*************************************************************
*************************************************************
*-------             'INOU'                          -------*
*************************************************************
*************************************************************
 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 15. 'UX' -15. ;
 VN1 = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' -15. 'UX' 25. ;
 VN2 = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' -15. 'UX' 25. ;
 YN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 3 'H2' 0.3 'O2' 0.5
   'H2O' 0.1  ;

 GN = RN '*' VN ;
 GN2 = RN '*' VN1 ;
*---------------------------------------------------------
 YH2 = ('EXTRAIRE' YN 'H2' PCEN) ;
 YO2 = ('EXTRAIRE' YN 'O2' PCEN) ;
 YH2O = ('EXTRAIRE' YN 'H2O' PCEN) ;
 YN2 = 1.0D0 '-' (YH2 '+' YO2 '+' YH2O) ;
 YNTOT = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 4 'H2' YH2 'O2' YO2
   'H2O' YH2O 'N2' YN2  ;
 LMOT1 = (PGAS . 'ESPEULE') 'ET' ('MOTS' (PGAS . 'ESPNEULE')) ;
 CVTOT = 'PSCAL' YNTOT CV LMOT1 LMOT1 ;
 CPTOT = 'PSCAL' YNTOT CP LMOT1 LMOT1 ;
 GAMN = CPTOT '/' CVTOT ;
 GAMC = ('EXTRAIRE' GAMN 'SCAL' PCEN) ;
*----------------------------------------------------------
 RETN = (('INVERSE' (GAMN '-' 1)) '*' PN)  '+' (0.5 '*' ('PSCAL' VN GN
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;
 RETN2 =(('INVERSE' (GAMN '-' 1)) '*' PN)  '+'
    (0.5 '*' ('PSCAL' VN1 GN2
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;

 RHTN = RETN '+' PN ;
 HTN = RHTN '/' RN ;
 UXC = ('EXTRAIRE' VN 'UX' PCEN) ;
 UYC = ('EXTRAIRE' VN 'UY' PCEN) ;
 UTC    = -1 '*' (UXC '+' UYC) '/' (2. '**' 0.5) ;

 SN = PN '/' (RN '**' ('MAXI' GAMN)) ;

 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 6 'HT' ('MAXIMUM' HTN)
    'S' ('MAXIMUM' SN)  'H2' 0.3 'O2' 0.5 'H2O' 0.1 'PN' 50.0 ;

 CHPLI1 = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 5 'HT' ('MAXIMUM' HTN)
    'S' ('MAXIMUM' SN)  'H2' 0.3 'O2' 0.5 'H2O' 0.1 ;

 CHPLI2 = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 1 'PN' 50.0 ;

 LISTC = 'MOTS' 'VAR1' 'VAR2' 'VAR3' 'VAR4' 'VAR5' 'VAR6' 'VAR7' ;
 LISTP = 'MOTS' 'RN  ' 'UX  ' 'UY  ' 'PN  ' 'H2  ' 'O2  ' 'H2O ' ;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN YN CHPLI 'INOU'  ;

 RCHLIM1 RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM' 'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN YN CHPLI1 'INSU'  ;

 ERRO = 'MAXIMUM' (RCHRES1 '-' RCHRES) 'ABS' ;
 ERRO1 = 'MAXIMUM'  (RCHLIM1 '-' RCHLIM) 'ABS' ;

* 'OPTION' DONN 5 ;
 
 XXTOL = 1.D-9;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 67: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = 1.D-12;
 ERR1  = ERRO1;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 68: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;
*--------------------------------------------------------------
 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN1 PN YN CHPLI 'INOU'  ;


 RCHLIM2 RCHRES2 = 'KONV' 'VF' 'PERFMULT' 'CLIM' 'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN1 PN YN CHPLI2 'OUTP'  ;

 ERRO = 'MAXIMUM' (RCHRES2 '-' RCHRES) 'ABS' ;
 ERRO1 = 'MAXIMUM'  (RCHLIM2 '-' RCHLIM) 'ABS' ;

 XXTOL = 1.D-12;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 69: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = 1.D-12;
 ERR1  = ERRO1;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 70: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

*------------------------------------------------------------
***** Jacobian with respect to the primitive variables ******
*------------------------------------------------------------
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 6 'HT' 250.0
    'S' 2.0  'H2' 0.1 'O2' 0.7 'H2O' 0.2 'PN' 50.0 ;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN YN CHPLI 'INOU'  ;

 RCHLIM2 RCHRES2 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN1 PN YN CHPLI 'INOU'  ;

 RJACO = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN PN YN CHPLI 'INOU'  ;


 RJACO2 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN1 PN YN CHPLI 'INOU'  ;
************* RN *********** RN ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' RN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 (RN '+' DR) VN PN YN CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 (RN '+' DR) VN1 PN YN CHPLI 'INOU'  ;

 DRESDRN2 = ( RCHRES3 '-'  RCHRES2) '/' DRSCAL ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 1.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 1.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON' ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;
 
 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 71: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 72: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* UX *********** UX ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' VN 'UX' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UX' DRSCAL) ;
*-------------------------------------------
 DRSCAL2 = EPS '*'  ('EXTRAIRE' VN2 'UX' PCEN) ;
 DR2 = ('MANUEL' 'CHPO' ELE1 1 'UX' DRSCAL2) ;
*-------------------------------------------

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN '+' DR) PN YN CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN1 '+' DR2) PN YN CHPLI 'INOU'  ;

 DRESDRN2 = ( RCHRES3 '-'  RCHRES2) '/' DRSCAL2 ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 1.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 1.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON' ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;
 
 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 73: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 74: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

************* UY *********** UY ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' VN 'UY' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UY' DRSCAL) ;
*-------------------------------------------
 DRSCAL2 = EPS '*'  ('EXTRAIRE' VN2 'UY' PCEN) ;
 DR2 = ('MANUEL' 'CHPO' ELE1 1 'UY' DRSCAL2) ;
*-------------------------------------------

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN '+' DR) PN YN CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN (VN1 '+' DR2) PN YN CHPLI 'INOU'  ;

 DRESDRN2 = ( RCHRES3 '-'  RCHRES2) '/' DRSCAL2 ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 1.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 1.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON' ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;
 
 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 75: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 76: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* PN *********** PN ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN (PN '+' DR) YN CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN1 (PN '+' DR) YN CHPLI 'INOU'  ;

 DRESDRN2 = ( RCHRES3 '-'  RCHRES2) '/' DRSCAL ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 1.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 1.0 'H2' 0.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON' ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;
 
 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 77: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 78: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* H2 *********** H2 ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN1 PN (YN '+' DR) CHPLI 'INOU'  ;

 DRESDRN2 = ( RCHRES3 '-'  RCHRES2) '/' DRSCAL ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 1.0 'O2' 0.0 'H2O' 0.0 ) ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 1.0 'O2' 0.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON' ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;
 
 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 79: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 80: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* O2 *********** O2 ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'O2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'O2' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN1 PN (YN '+' DR) CHPLI 'INOU'  ;

 DRESDRN2 = ( RCHRES3 '-'  RCHRES2) '/' DRSCAL ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 1.0 'H2O' 0.0 ) ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 1.0 'H2O' 0.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON' ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;


 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 81: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 82: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


************* H20 *********** H20 ***********************

 DRSCAL = EPS '*'  ('EXTRAIRE' YN 'H2O' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2O' DRSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN PN (YN '+' DR) CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN VN1 PN (YN '+' DR) CHPLI 'INOU'  ;

 DRESDRN2 = ( RCHRES3 '-'  RCHRES2) '/' DRSCAL ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 1.0 ) ;

 DRESDRN = ( RCHRES1 '-'  RCHRES) '/' DRSCAL ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'RN' 0.0
     'UX' 0.0 'UY' 0.0 'PN' 0.0 'H2' 0.0 'O2' 0.0 'H2O' 1.0 ) ;

 MMM = 'MAXIMUM' DRESDR 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON' ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 83: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 84: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

*----------------------------------------------------------
**** Jacobian with respect to conservative variables
*---------------------------------------------------------

 RJACO = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN PN YN CHPLI 'INOU'  ;


 RJACO2 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          PGAS LISTC LISTP
          RN VN1 PN YN CHPLI 'INOU'  ;

*************** RN **************** RN *******************

 DRSCAL = EPS '*'  ('EXTRAIRE' RN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;

 RN1 = RN '+' DR ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER' RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;
 VN2 PN2 TTEMP YN2 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN2 RETN2 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN2 PN2 YN2 CHPLI 'INOU'  ;


 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL   ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 1.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 DRESDRN2 = (RCHRES3 '-'  RCHRES2) '/' DRSCAL   ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 1.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 85: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 86: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*************** RUX **************** RUX *******************

 DRSCAL = EPS '*'  ('EXTRAIRE' GN 'UX' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UX' DRSCAL) ;
*---------------------------------------------
 DRSCAL2 = EPS '*'  ('EXTRAIRE' GN2 'UX' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR2 = ('MANUEL' 'CHPO' ELE1 1 'UX' DRSCAL2) ;

 RN1 = 'COPIER' RN ;
 GN1 = GN '+' DR ;
 GN3 = GN2 '+' DR2 ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER' RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;
 VN2 PN2 TTEMP YN2 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN3 RETN2 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN2 PN2 YN2 CHPLI 'INOU'  ;


 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL   ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 1.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 DRESDRN2 = (RCHRES3 '-'  RCHRES2) '/' DRSCAL2   ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 1.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 87: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 88: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*************** RUY **************** RUY *******************

 DRSCAL = EPS '*'  ('EXTRAIRE' GN 'UY' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'UY' DRSCAL) ;
*---------------------------------------------
 DRSCAL2 = EPS '*'  ('EXTRAIRE' GN2 'UY' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR2 = ('MANUEL' 'CHPO' ELE1 1 'UY' DRSCAL2) ;

 RN1 = 'COPIER' RN ;
 GN1 = GN '+' DR ;
 GN3 = GN2 '+' DR2 ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = 'COPIER' RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;
 VN2 PN2 TTEMP YN2 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN3 RETN2 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN2 PN2 YN2 CHPLI 'INOU'  ;


 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL   ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 1.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 DRESDRN2 = (RCHRES3 '-'  RCHRES2) '/' DRSCAL2   ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 1.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 89: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 90: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*************** RETN **************** RETN *******************

 DRSCAL = EPS '*'  ('EXTRAIRE' RETN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL) ;
*---------------------------------------------
 DRSCAL2 = EPS '*'  ('EXTRAIRE' RETN2 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR2 = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DRSCAL2) ;

 RN1 = 'COPIER' RN ;
 GN1 = 'COPIER' GN ;
 RETN1 = (RETN '+' DR) ;
 RETN3 = (RETN2 '+' DR2) ;
 RYN1 = 'COPIER' RYN ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;
 VN2 PN2 TTEMP YN2 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN2 RETN3 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN2 PN2 YN2 CHPLI 'INOU'  ;


 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL   ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 1.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 DRESDRN2 = (RCHRES3 '-'  RCHRES2) '/' DRSCAL2   ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 1.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 91: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 92: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*************** RH2 **************** RH2 *******************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2' DRSCAL) ;

 RN1 =  'COPIER'  RN  ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;
 VN2 PN2 TTEMP YN2 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN2 RETN2 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN2 PN2 YN2 CHPLI 'INOU'  ;


 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL   ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 1.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 DRESDRN2 = (RCHRES3 '-'  RCHRES2) '/' DRSCAL   ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 1.0 'VAR6' 0.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;

*----------------------------
* 'OPTION' DONN 5 ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 93: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 94: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*************** RO2 **************** RO2 *******************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'O2' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'O2' DRSCAL) ;

 RN1 =  'COPIER'  RN  ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;
 VN2 PN2 TTEMP YN2 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN2 RETN2 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN2 PN2 YN2 CHPLI 'INOU'  ;

 NNN = 'MAXIMUM'  RCHRES 'ABS' ;
 VERH = (RCHRES1 '-'  RCHRES) '/' NNN ;
 DRESDRN = VERH '/' DRSCAL   ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 1.0 'VAR7' 0.0 ) ;

 DRESDRN2 = (RCHRES3 '-'  RCHRES2) '/' DRSCAL   ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 1.0 'VAR7' 0.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;

* 'OPTION' DONN 5 ;
 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 95: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 96: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*************** RH2O **************** RH2O *******************

 DRSCAL = EPS '*'  ('EXTRAIRE' RYN 'H2O' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DR = ('MANUEL' 'CHPO' ELE1 1 'H2O' DRSCAL) ;

 RN1 =  'COPIER'  RN  ;
 GN1 = 'COPIER' GN ;
 RETN1 = 'COPIER' RETN ;
 RYN1 = RYN '+' DR ;

 VN1 PN1 TTEMP YN1 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN1 RETN1 RYN1 ;
 VN2 PN2 TTEMP YN2 GAMM =
  'PRIM' 'PERFMULT' PGAS RN1 GN2 RETN2 RYN1 ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN1 PN1 YN1 CHPLI 'INOU'  ;

 RCHLIM RCHRES3 = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS LISTC LISTP
                 RN1 VN2 PN2 YN2 CHPLI 'INOU'  ;


 DRESDRN = (RCHRES1 '-'  RCHRES) '/' DRSCAL   ;
 DRESDR  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 1.0 ) ;

 DRESDRN2 = (RCHRES3 '-'  RCHRES2) '/' DRSCAL   ;
 DRESDR2  = 'KOPS' RJACO2 '*' ('MANUEL' 'CHPO' ELE1 7 'VAR1' 0.0
  'VAR2' 0.0 'VAR3' 0.0 'VAR4' 0.0 'VAR5' 0.0 'VAR6' 0.0 'VAR7' 1.0 ) ;

 MMM = 'MAXIMUM'  DRESDR 'ABS' ;

 'SI' (MMM < ERROM) ;
    ERRO = 'MAXIMUM' (DRESDR '-' DRESDRN) 'ABS' ;
 'SINON'  ;
    ERRO = 'MAXIMUM' ((DRESDR '-' DRESDRN) '/' MMM) 'ABS' ;
 'FINSI'  ;
*---------------------------
  MMM = 'MAXIMUM' DRESDR2 'ABS' ;
 'SI' (MMM < ERROM) ;
    ERRO2 = 'MAXIMUM' (DRESDR2 '-' DRESDRN2) 'ABS' ;
 'SINON' ;
    ERRO2 = 'MAXIMUM' ((DRESDR2 '-' DRESDRN2) '/' MMM) 'ABS' ;
 'FINSI'  ;

*----------------------------
* 'OPTION' DONN 5 ;

 XXTOL = ERROM;
 ERR1  = ERRO;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 97: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;

 XXTOL = ERROM;
 ERR1  = ERRO2;
'SI' (ERR1 > XXTOL) ;
    CHAI1 = CHAI 'ERREUR NUMERO 98: ' ERR1 'POUR ' XXTOL;
   'MESS' CHAI1;
   'ERREUR' 5 ;
'FINSI' ;


*
* BC of 'RESE'rvoir type
*
 SURSVOL = ('MAXIMUM' ('DOMA' MP2P3  'VOLUME')) '/'
    ('MAXIMUM' ('DOMA' MDOMINT . 'VOLUME')) ;
*
* We give the pressure of the reservoir, the density, the homogeneous
* composition. We suppose that the tangential velocity is zero.
* We compute the inlet boundary conditions by supposing that the inlet
* is at the throat, namely the inlet pressure is equal to the maximum
* between the critical and the inlet pressure.
* The inlet density and velocity are found using the Riemann invariant.
*
* Two species
* HELIUM
* AIR
*
 PGAS = 'TABLE' ;

 PGAS . 'CP' = 'TABLE' ;
 PGAS . 'CP' . 'AIR '  = 1.00D+03 ;
 PGAS . 'CP' . 'HE  '  = 5.18D+03 ;



 PGAS . 'CV' = 'TABLE' ;
 PGAS . 'CV' . 'AIR '  = .717D+03 ;
 PGAS . 'CV' . 'HE  '  = 3.10D+03 ;

*----------------------------------------------------
**** Especes qui sont dans les equations d'Euler
*----------------------------------------------------

 PGAS . 'ESPEULE' = 'MOTS' 'AIR ' ;

*----------------------------------------------------
**** Espece qui n'y est pas
*----------------------------------------------------


 PGAS . 'ESPNEULE' = 'HE  ' ;

*
* Reservoir conditions
*

 P0 = 200.0D5 ;
 RHO0 = 32.1D0 ;
 Y0 = 1.0D-5 ;
 gamf = ((PGAS . 'CP' . 'HE  ') '*' (1. '-' Y0)) '+'
  ((PGAS . 'CP' . 'AIR ') '*' (Y0)) ;
 gamf = gamf '/'
   (((PGAS . 'CV' . 'HE  ') '*' (1. '-' Y0)) '+'
  ((PGAS . 'CV' . 'AIR ') '*' (Y0))) ;
 PCR = (2. '/' (gamf '+' 1.)) ;
 PCR = PCR '**' (gamf '/' (gamf '-' 1.)) ;
 PCR = PCR '*' P0 ;
 RCR = (PCR '/' P0) '**' (1. '/' gamf) ;
 RCR = RCR '*' RHO0 ;
 UCR = (2 '*' gamf '/' (gamf '-' 1.0D0)) '*' ((P0 '/' RHO0) '-'
    (PCR '/' RCR)) ;
 UCR = UCR '**' 0.5 ;
 'SI' ('NEG' (ucr * ucr) (gamf * pcr '/' rcr) (1.0D-12 *ucr)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;

*
* Case 1: internal pressure lower than critical pressure
*
 P1 = 1.0D5 ;
 RHO1 = 0.954D0 ;
 Y1 = 0.99999 ;

*

 YN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'AIR'  Y1 ;
 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' RHO1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' P1 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2  'UX' 0.0 'UY' 0.0 ;

 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 3 'RN' RHO0 'PN' P0
         'AIR ' y0 ;

 LISTC = 'MOTS' 'VAR1' 'VAR2' 'VAR3' 'VAR4' 'VAR5' ;
 LISTP = 'MOTS' 'RN  ' 'UX  ' 'UY  ' 'PN  ' 'AIR ' ;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS  LISTC LISTP
                 RN VN PN YN CHPLI 'RESE'  ;

 aa = 'MAXIMUM' ('EXCO' RCHLIM 'RN') ;
 'SI' ('NEG' (rcr) (aa) (1.0D-12 * aa)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;
 bb = 'MAXIMUM' ('EXCO' RCHLIM 'PN') ;
 'SI' ('NEG' (pcr) (bb) (1.0D-12 * bb)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;
 cc = 'MAXIMUM' ('EXCO' RCHLIM 'UX') ;
 dd = 'MAXIMUM' ('EXCO' RCHLIM 'UY') ;
 ee = (cc * cc) '+' (dd * dd) ;
 ee = ee '**' 0.5 ;
 'SI' ('NEG' (ee) (ucr) (1.0D-12 * ee)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;
*
 aa = 'MAXIMUM' ('EXCO' RCHRES 'VAR1') ;
 bb = SURSVOL '*' rcr * ucr ;
 'SI' ('NEG' (bb) (aa) (1.0D-12 * aa)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;
*
 htot = (gamf '/' (gamf '-' 1.0)) '*'  p0 '/' rho0 ;
 aa = htot * rcr * ucr * sursvol ;
 bb = 'MAXIMUM' ('EXCO' RCHRES 'VAR4') ;
 'SI' ('NEG' (bb) (aa) (1.0D-12 * aa)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;
*
* Case 2: internal pressure larger than critical pressure
*
 P1 = 1.0D7 ;
*
 R1 = (P1 '/' P0) '**' (1. '/' gamf) ;
 R1 = R1 '*' RHO0 ;
 U1 = (2 '*' gamf '/' (gamf '-' 1.0D0)) '*' ((P0 '/' RHO0) '-'
    (P1 '/' R1)) ;
 U1 = U1 '**' 0.5 ;
*
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' P1 ;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS  LISTC LISTP
                 RN VN PN YN CHPLI 'RESE'  ;


 aa = 'MAXIMUM' ('EXCO' RCHLIM 'RN') ;
 'SI' ('NEG' (r1) (aa) (1.0D-12 * aa)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;

 bb = 'MAXIMUM' ('EXCO' RCHLIM 'PN') ;
 'SI' ('NEG' (p1) (bb) (1.0D-12 * bb)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;

 cc = 'MAXIMUM' ('EXCO' RCHLIM 'UX') ;
 dd = 'MAXIMUM' ('EXCO' RCHLIM 'UY') ;
 ee = (cc * cc) '+' (dd * dd) ;
 ee = ee '**' 0.5 ;
 'SI' ('NEG' (ee) (u1) (1.0D-12 * ee)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;

*
 aa = 'MAXIMUM' ('EXCO' RCHRES 'VAR1') ;
 bb = SURSVOL '*' r1 * u1 ;
 'SI' ('NEG' (bb) (aa) (1.0D-12 * aa)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;
*
 aa = htot * r1 * u1 * sursvol ;
 bb = 'MAXIMUM' ('EXCO' RCHRES 'VAR4') ;
 'SI' ('NEG' (bb) (aa) (1.0D-12 * aa)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;

*
* Case 3: internal pressure larger than reservoir pressure
*

 P1 = 210.0D5 ;
*
*
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' P1 ;

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMULT' 'CLIM'  'RESI' MDOMINT MP2P3
                 PGAS  LISTC LISTP
                 RN VN PN YN CHPLI 'RESE'  ;


 aa = 'MAXIMUM' ('EXCO' RCHLIM 'RN') ;
 'SI' ('NEG' (rho0) (aa) (1.0D-12 * aa)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;

 bb = 'MAXIMUM' ('EXCO' RCHLIM 'PN') ;
 'SI' ('NEG' (p0) (bb) (1.0D-12 * bb)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;
 cc = 'MAXIMUM' ('EXCO' RCHLIM 'UX') ;
 dd = 'MAXIMUM' ('EXCO' RCHLIM 'UY') ;
 ee = (cc * cc) '+' (dd * dd) ;
 ee = ee '**' 0.5 ;
 'SI' ('NEG' (ee) (0.0) (1.0D-12 * ucr)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;

*
 aa = 'MAXIMUM' ('EXCO' RCHRES 'VAR1') ;
 bb = 0.0 ;
 'SI' ('NEG' (bb) (aa) (1.0D-12 * rcr * ucr)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;
*
 aa = 0.0 ;
 bb = 'MAXIMUM' ('EXCO' RCHRES 'VAR4') ;
 'SI' ('NEG' (bb) (aa) (1.0D-12 *  rcr * (ucr ** 3))) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;
*
 cc = 'MAXIMUM' ('EXCO' RCHRES 'VAR2') ;
 dd = 'MAXIMUM' ('EXCO' RCHRES 'VAR3') ;
 ee = (cc * cc) '+' (dd * dd) ;
 ee = ee '**' 0.5 ;
 ff = SURSVOL * p1 ;
 'SI' ('NEG' (ee) (ff) (1.0D-12 * ee)) ;
    'MESSAGE' 'RESE BC' ;
    'ERREUR' 5 ;
 'FINSI' ;

 'FIN' ;




 

