* fichier :  clim.dgibi
*********************************************************************
* VF, CLIM 2D                                                       *
*                                                                   *
* BECCANTINI A., DM2S/SFME/LTMF,  JANVIER 2002                      *
*********************************************************************

 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)) ;

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

**********************************************************************************
**********************************************************************************
***************************  Riemann invariants, inlet ***************************
**********************************************************************************
**********************************************************************************

 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.110 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.41 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 0.1 'UX' 1.65 ;

 GN = RN '*' VN ;
 RETN = (('INVERSE' (GAMN '-' 1)) '*' PN)  '+' (0.5 '*' ('PSCAL' VN GN
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;
   
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 4 'RN' 2.11 'PN' 111.4
         'UX' 2.0 'UY' 1.0 ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'INRI'  ;

*
**** 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)) ;

 ASONC = GAMMA * (PNCEL '/' RNCEL) ;
 ASONC = ASONC '**' 0.5 ;

 G3 = UNCELC '+' (DSGM1 * ASONC) ;
 G3 = 'EXTRAIRE' G3 ('POIN' 1 ($P2P3 . 'CENTRE')) 'SCAL' ;
 S = PNCEL '/' (RNCEL** GAMMA) ;
 S = 'EXTRAIRE' S  ('POIN' 1 ($P2P3 . 'CENTRE')) 'SCAL' ;

 ASON2=(0.5D0*(G3-G1)) ;
 ASON2=ASON2/DSGM1 ;
 ASON2=ASON2*ASON2 ;
 RHO=ASON2/(GAMMA*S) ;
 RHO=RHO**USGM1 ;
 P=(RHO*ASON2)/GAMMA ;
 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') 4 'RN' RHO 'UX'
    UX 'UY' UY 'PN' P ;

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

 'SI' (ERRO > 1.0D-12) ;
    'ERREUR' 5 ;
 'FINSI' ;
 'FINSI' ;
 
*
**** Jacobian with respect to primitive variable
*

 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'INRI'  ;

 EPS=1.0D-6 ;

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

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

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* UX

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

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

 DRESDUXN = ( RCHRES1 '-'  RCHRES) '/' DUXSCAL ;
 DRESDUX  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 4 'RN' 0.0
           'UX' 1.0 'UY' 0.0 'PN' 0.0) ;

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* UY

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

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

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;
 
* PN
 
 DPSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DP = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DPSCAL) ;

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

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

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

 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'INRI'  ;

 EPS=1.0D-6 ;

* 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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUX

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUY

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     '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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

**********************************************************************************
**********************************************************************************
***************************  Riemann invariants, outlet **************************
**********************************************************************************
**********************************************************************************


 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' -0.1 'UX' 1. ;

 GN = RN '*' VN ;
 RETN = (('INVERSE' (GAMN '-' 1)) '*' PN)  '+' (0.5 '*' ('PSCAL' VN GN
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;
   
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 4 'RN' 1.11 'PN' 2.13
         'UX' 1.1 'UY' -0.1 ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'OUTRI'  ;

*
**** On calcule RCHLIM en gibiane
*

 UNC   = (('EXCO' VN 'UY' 'SCAL') '-' ('EXCO' VN 'UX' 'SCAL')) '/'
 (-1*(2 '**' 0.5)) ;
 UTC = (('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 ;

 G3 = UNC '+' (DSGM1 * ASONC) ;
 G3 = 'EXTRAIRE' G3 PCEN 'SCAL' ;
 S = PN '/' (RN** GAMMA) ;
 S = 'EXTRAIRE' S  PCEN 'SCAL' ;

 RNCEL= 'EXCO' CHPLI 'RN' ;
 PNCEL = 'EXCO' CHPLI 'PN' ;
 UNCELC = -1 * (('EXCO' CHPLI 'UY' 'SCAL') '-'
   ('EXCO' CHPLI 'UX' 'SCAL')) '/' (2 '**' 0.5) ;

 ASONC = GAMMA * (PNCEL '/' RNCEL) ;
 ASONC = ASONC '**' 0.5 ;

 G1 = UNCELC '-' (DSGM1 * ASONC) ;
 G1 = 'EXTRAIRE' G1 ('POIN' 1 ($P2P3 . 'CENTRE')) 'SCAL' ;

 ASON2=(0.5D0*(G3-G1)) ;
 ASON2=ASON2/DSGM1 ;
 ASON2=ASON2*ASON2 ;
 RHO=ASON2/(GAMMA*S) ;
 RHO=RHO**USGM1 ;
 P=(RHO*ASON2)/GAMMA ;
 UNCEL = 0.5 '*' (G3 '+' G1) ;
 UTCEL = 'EXTR' UTC 'SCAL' PCEN ;
 
 UX = (UNCEL '+' UTCEL) '/' ((2 '**' 0.5)) ;
 UY = (UNCEL '-' UTCEL) '/' (-1*(2 '**' 0.5)) ;

 CHLIM2 = 'MANU' 'CHPO' ($P2P3 . 'CENTRE') 4 'RN' RHO 'UX'
    UX 'UY' UY 'PN' P ;

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

 'SI' (ERRO > 1.0D-12) ;
    'ERREUR' 5 ;
 'FINSI' ;

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

 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'OUTRI'  ;

 EPS=1.0D-6 ;

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 (RN '+' DR) VN PN GAMN CHPLI 'OUTRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

 
* UX

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUX) PN GAMN CHPLI 'OUTRI'  ;

 DRESDUXN = ( RCHRES1 '-'  RCHRES) '/' DUXSCAL ;
 DRESDUX  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 4 'RN' 0.0
           'UX' 1.0 'UY' 0.0 'PN' 0.0) ;

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;


* UY

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUY) PN GAMN CHPLI 'OUTRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;
 
* PN
 
 DPSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DP = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DPSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN  VN (PN '+' DP) GAMN CHPLI 'OUTRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

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

 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'OUTRI'  ;

 EPS=1.0D-6 ;

* 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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUX

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUY

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     '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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTRI'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

**********************************************************************************
**********************************************************************************
***************************  Supersonic inlet ************************************
**********************************************************************************
**********************************************************************************

 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 15. 'UX' 1. ;

 GN = RN '*' VN ;
 RETN = (('INVERSE' (GAMN '-' 1)) '*' PN)  '+' (0.5 '*' ('PSCAL' VN GN
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;
   
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 4 'RN' 1.11 'PN' 2.13
         'UX' -11. 'UY' 2. ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'INSS'  ;

 ERRO = 'MAXIMUM' (RCHLIM '-' CHPLI) 'ABS' ;
 
 'SI' (ERRO > 1.0D-12) ;
     'ERREUR' 5 ;
 'FINSI' ;

 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'INSS'  ;

 AA = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 4 'VAR1' 1.11 'VAR2' 1.13
 'VAR3' 1.15 'VAR4' 1.17 ;
 
 ERRO = 'MAXIMUM' ('KOPS' 'MULT' RJACO AA) 'ABS' ;
 
 'SI' (ERRO > 1.0D-12) ;
     'ERREUR' 5 ;
 'FINSI' ;

 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'INSS'  ;

 AA = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 4 'RN' 1.11 'UX' 1.13
 'UY' 1.15 'PN' 1.17 ;
 
 ERRO = 'MAXIMUM' ('KOPS' 'MULT' RJACO AA) 'ABS' ;
 
 'SI' (ERRO > 1.0D-12) ;
     'ERREUR' 5 ;
 'FINSI' ;

**********************************************************************************
**********************************************************************************
***************************  Supersonic outlet ***********************************
**********************************************************************************
**********************************************************************************

 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' -15. 'UX' 1. ;

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

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'OUTSS'  ;

* Calcul de RCHLIM en gibiane

 RC = 'EXTRAIRE' RN PCEN 'SCAL' ;
 UXC = 'EXTRAIRE' VN PCEN 'UX' ;
 UYC = 'EXTRAIRE' VN PCEN 'UY' ;
 PC = 'EXTRAIRE' PN PCEN 'SCAL' ;

 CHLIM2 = 'MANU' 'CHPO' ($P2P3 . 'CENTRE') 4 'RN' RC 'UX'
    UXC 'UY' UYC 'PN' PC ;

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

 'SI' (ERRO > 1.0D-12) ;
    'ERREUR' 5 ;
 'FINSI' ;

 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'OUTSS'  ;

 EPS=1.0D-6 ;

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 (RN '+' DR) VN PN GAMN CHPLI 'OUTSS'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

 
* UX

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUX) PN GAMN CHPLI 'OUTSS'  ;

 DRESDUXN = ( RCHRES1 '-'  RCHRES) '/' DUXSCAL ;
 DRESDUX  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 4 'RN' 0.0
           'UX' 1.0 'UY' 0.0 'PN' 0.0) ;

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;


* UY

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUY) PN GAMN CHPLI 'OUTSS'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;
 
* PN
 
 DPSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DP = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DPSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN  VN (PN '+' DP) GAMN CHPLI 'OUTSS'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;
 

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

 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'OUTSS'  ;

 EPS=1.0D-6 ;

* 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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTSS'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUX

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTSS'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUY

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTSS'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     '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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTSS'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     '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 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' -15. 'UX' 1. ;

 GN = RN '*' VN ;
 RETN = (('INVERSE' (GAMN '-' 1)) '*' PN)  '+' (0.5 '*' ('PSCAL' VN GN
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;
   
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 1 'PN' 2.1 ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'OUTP'  ;

 SURSVOL = -1. '/' ((2 '**' 0.5) * 0.5)  ;
 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' ;
 
 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)))
          ;
 RCHRES1 = 'MANUEL' 'CHPO' ('MANUEL' 'POI1' PCEN) 4
   'VAR1' (SURSVOL '*' FMASS) 'VAR2' (FUX '*' SURSVOL) 'VAR3' (FUY '*'
   SURSVOL) 'VAR4' (FEN '*' SURSVOL) ;
   
 ERRO = 'MAXIMUM' (RCHRES1 '-' RCHRES) 'ABS' ;
 
 'SI' (ERRO > 1.0D-12) ;
    'ERREUR' 5 ;
 'FINSI' ;

* Calcul de RCHLIM en gibiane

 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' -15. 'UX' 1. ;

 GN = RN '*' VN ;
 RETN = (('INVERSE' (GAMN '-' 1)) '*' PN)  '+' (0.5 '*' ('PSCAL' VN GN
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;
   
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 1 'PN' 4.1 ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'OUTP'  ;

* Calcul de RCHLIM en gibiane

 RC = 'EXTRAIRE' RN PCEN 'SCAL' ;
 UXC = 'EXTRAIRE' VN PCEN 'UX' ;
 UYC = 'EXTRAIRE' VN PCEN 'UY' ;
 PF = 'MAXIMUM' CHPLI ;

 CHLIM2 = 'MANU' 'CHPO' ($P2P3 . 'CENTRE') 4 'RN' RC 'UX'
    UXC 'UY' UYC 'PN' PF ;

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

 'SI' (ERRO > 1.0D-12) ;
    'ERREUR' 5 ;
 'FINSI' ;

*
***** Jacobian with respect to the primitive variables
*
  
 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'OUTP'  ;

 EPS=1.0D-6 ;

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

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

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

 
* UX

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUX) PN GAMN CHPLI 'OUTP'  ;

 DRESDUXN = ( RCHRES1 '-'  RCHRES) '/' DUXSCAL ;
 DRESDUX  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 4 'RN' 0.0
           'UX' 1.0 'UY' 0.0 'PN' 0.0) ;

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;


* UY

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUY) PN GAMN CHPLI 'OUTP'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;
 
* PN
 
 DPSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DP = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DPSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN  VN (PN '+' DP) GAMN CHPLI 'OUTP'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;
 

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

 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'OUTP'  ;

 EPS=1.0D-6 ;

* 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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTP'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUX

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTP'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUY

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTP'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     '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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'OUTP'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     '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 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' -15. 'UX' 15. ;

 GN = RN '*' VN ;
 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') 2 'HT' ('MAXIMUM' HTN)
    'S' ('MAXIMUM' SN) ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'INSU'  ;

 SURSVOL = -1. '/' ((2 '**' 0.5) * 0.5)  ;
 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') 4 'RN' RC 'PN' PC 'UX'
   UXC 'UY' UYC ;

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

 'SI' (ERRO > 1.0D-6) ;
    '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)))
          ;
 RCHRES1 = 'MANUEL' 'CHPO' ('MANUEL' 'POI1' PCEN) 4
   'VAR1' (SURSVOL '*' FMASS) 'VAR2' (FUX '*' SURSVOL) 'VAR3' (FUY '*'
   SURSVOL) 'VAR4' (FEN '*' SURSVOL) ;

 ERRO = 'MAXIMUM' (RCHRES1 '-' RCHRES) 'ABS' ;
 
 'SI' (ERRO > 1.0D-6) ;
    'ERREUR' 5 ;
 'FINSI' ;

* JACOBIANS 


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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'INSU'  ;
*
***** Jacobian with respect to the primitive variables
*
  
 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'INSU'  ;

 EPS=1.0D-8 ;

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

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

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

 
* UX

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUX) PN GAMN CHPLI 'INSU'  ;

 DRESDUXN = ( RCHRES1 '-'  RCHRES) '/' DUXSCAL ;
 DRESDUX  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 4 'RN' 0.0
           'UX' 1.0 'UY' 0.0 'PN' 0.0) ;

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;


* UY

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUY) PN GAMN CHPLI 'INSU'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;
 
* PN
 
 DPSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DP = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DPSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN  VN (PN '+' DP) GAMN CHPLI 'INSU'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;
 

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

 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'INSU'  ;


* 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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 
 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INSU'  ;


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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUX

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INSU'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUY

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INSU'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     '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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INSU'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

**********************************************************************************
**********************************************************************************
***************************  INJELM **********************************************
**********************************************************************************
**********************************************************************************
* Injection at low Mach regime
*
* We impose RT and the normal momentum at the inlet.
*
***** 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 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 15. 'UX' -15. ;

 GN = RN '*' VN ;
 RETN = (('INVERSE' (GAMN '-' 1)) '*' PN)  '+' (0.5 '*' ('PSCAL' VN GN
   ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) ;
 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) ;

 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 2 'RT' RT
    'MOME' MOME ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'INJELM'  ;

 RCHLIM1 = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 4 'RN' RC 'PN' PC 'UX' UXC
   'UY' UYC ;

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

 'SI' (ERRO > 1.0D-6) ;
    'ERREUR' 5 ;
 'FINSI' ;

 SURSVOL = 1. '/' ((2 '**' 0.5) * 0.5)  ;
 GAMC = 'EXTRAIRE' GAMN PCEN 'SCAL' ;

 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) 4
   'VAR1' (SURSVOL '*' FMASS) 'VAR2' (FUX '*' SURSVOL) 'VAR3' (FUY '*'
   SURSVOL) 'VAR4' (FEN '*' SURSVOL) ;

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

 'SI' (ERRO > 1.0D-6) ;
    'ERREUR' 5 ;
 'FINSI' ;

* JACOBIANS 

 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 1.11 'UX' -1.3 ;

 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') 2 'RT' RT
    'MOME' MOME ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'INJELM'  ;
                 
*
***** Jacobian with respect to the primitive variables
*
  
 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'INJELM'  ;

 EPS=1.0D-6 ;

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 (RN '+' DR) VN PN GAMN CHPLI 'INJELM'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

 
* UX

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUX) PN GAMN CHPLI 'INJELM'  ;

 DRESDUXN = ( RCHRES1 '-'  RCHRES) '/' DUXSCAL ;
 DRESDUX  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 4 'RN' 0.0
           'UX' 1.0 'UY' 0.0 'PN' 0.0) ;

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;


* UY

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUY) PN GAMN CHPLI 'INJELM'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;
 
* PN
 
 DPSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DP = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DPSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN  VN (PN '+' DP) GAMN CHPLI 'INJELM'  ;

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

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

 'SI' (ERRO > 1.0D-3 ) ;
     'ERREUR' 5 ;
 'FINSI' ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN  VN PN  GAMN CHPLI 'INJELM'  ;
                 
 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'INJELM'  ;

 EPS=1.0D-6 ;

* 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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INJELM'  ;

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

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

* 'SI' (ERRO > 1.0D-3) ;
*     'ERREUR' 5 ;
* 'FINSI' ;

* RUX

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INJELM'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUY

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INJELM'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     '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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM1 RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INJELM'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

**********************************************************************************
**********************************************************************************
***************************  INJE   **********************************************
**********************************************************************************
**********************************************************************************
*
* We impose RT and the normal momentum at the inlet.
*

*********************************************************
 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 4. 'UX' -4. ;

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

 UXC = ('EXTRAIRE' VN 'UX' PCEN) ;
 UYC = ('EXTRAIRE' VN 'UY' PCEN) ;
 PC  = ('EXTRAIRE' PN 'SCAL' PCEN) ;
 RC  = ('EXTRAIRE' RN 'SCAL' PCEN) ;
 GAMC = ('EXTRAIRE' GAMN 'SCAL' PCEN) ;
 UNC = 4. '*' (2. '**' 0.5) ;
 CC = GAMC * (PC '/' RC) ;
 CC = CC '**' 0.5 ;
 ACEL = CC '/' GAMC ;
 BCEL = ACEL '-' UNC ;
 CCEL = (MOME '/' PC) '*' RT ;
 PF = BCEL '+' (((BCEL * BCEL) '+' (4 '*' ACEL '*' CCEL)) '**' 0.5) ;
 PF = PC '*' (PF '/' (2 '*' ACEL)) ;
 RF = PF '/' RT ;
 UNF = MOME '/' RF ;
 UXF = UNF '/' (-1 '*' (2 '**' 0.5)) ;
 UYF = UNF '/' (2 '**' 0.5) ;
 
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 2 'RT' RT
    'MOME' MOME ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'INJE'  ;

 RCHLIM1 = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 4 'RN' RF 'PN' PF 'UX' UXF
   'UY' UYF ;

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

 'SI' (ERRO > 1.0D-6) ;
    'ERREUR' 5 ;
 'FINSI' ;

 SURSVOL = 1. '/' ((2 '**' 0.5) * 0.5)  ;
 GAMC = 'EXTRAIRE' GAMN PCEN 'SCAL' ;

 FMASS = MOME ;
 FUX   = (MOME * UXF) '-' (PF '/' (2. '**' 0.5)) ;
 FUY   = (MOME * UYF) '+' (PF '/' (2. '**' 0.5)) ;
 HIN   = (GAMC/(GAMC-1)) '*' (PF '/' RF) ;
 ECIN = 0.5 '*' ((UXF '*' UXF) '+' (UYF '*' UYF)) ;
 FEN   = MOME '*' (HIN '+' ECIN)
          ;
 RCHRES1 = 'MANUEL' 'CHPO' ('MANUEL' 'POI1' PCEN) 4
   'VAR1' (SURSVOL '*' FMASS) 'VAR2' (FUX '*' SURSVOL) 'VAR3' (FUY '*'
   SURSVOL) 'VAR4' (FEN '*' SURSVOL) ;

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

 'SI' (ERRO > 1.0D-6) ;
    'ERREUR' 5 ;
 'FINSI' ;

* JACOBIANS 
  
 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 2.1 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.37 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 1.11 'UX' -1.3 ;

 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') 2 'RT' RT
    'MOME' MOME ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'INJE'  ;
                 
*
***** Jacobian with respect to the primitive variables
*
  
 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOPRIM' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'INJE'  ;

 EPS=1.0D-6 ;

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

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

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

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

 'SI' (ERRO > 1.0D-4) ;
     'ERREUR' 5 ;
 'FINSI' ;

 
* UX

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUX) PN GAMN CHPLI 'INJE'  ;

 DRESDUXN = ( RCHRES1 '-'  RCHRES) '/' DUXSCAL ;
 DRESDUX  = 'KOPS' RJACO '*' ('MANUEL' 'CHPO' ELE1 4 'RN' 0.0
           'UX' 1.0 'UY' 0.0 'PN' 0.0) ;

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;


* UY

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

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN (VN '+' DUY) PN GAMN CHPLI 'INJE'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;
 
* PN
 
 DPSCAL = EPS '*'  ('EXTRAIRE' PN 'SCAL' PCEN) ;
 ELE1 = 'MANUEL' 'POI1' PCEN ;
 DP = ('MANUEL' 'CHPO' ELE1 1 'SCAL' DPSCAL) ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN  VN (PN '+' DP) GAMN CHPLI 'INJE'  ;

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

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

 'SI' (ERRO > 1.0D-3 ) ;
     'ERREUR' 5 ;
 'FINSI' ;

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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN  VN PN  GAMN CHPLI 'INJE'  ;
                 
 RJACO = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'JACOCONS' MDOMINT MP2P3
          LISTC LISTP
          RN VN PN GAMN CHPLI 'INJE'  ;

 EPS=1.0D-6 ;

* 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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INJE'  ;

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

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

* 'SI' (ERRO > 1.0D-3) ;
*     'ERREUR' 5 ;
* 'FINSI' ;

* RUX

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INJE'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

* RUY

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

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

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INJE'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     '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 ;

 VN1 PN1 = 'PRIM' 'PERFMONO' RN1 GN1 RETN1 GAMN ;

 RCHLIM1 RCHRES1 = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN1 VN1 PN1 GAMN CHPLI 'INJE'  ;

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

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

 'SI' (ERRO > 1.0D-3) ;
     'ERREUR' 5 ;
 'FINSI' ;

**********************************************************************************
**********************************************************************************
***************************  INSO   **********************************************
**********************************************************************************
**********************************************************************************
*
* We impose the stagnation pressure and density in the tank
* and assume the sonic flow at the boundary.
* The values at the boundary are found using three conditions:
*              1) entropy in the tank and at the inlet are equal
*              2) enthalpy in the tank and at the inlet are equal
*              3) fluid velocity at the inlet equal to sonic velocity at
*                 the inlet
**********************************************************************************  
 RN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.1 ;
 PN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.D5 ;
 GAMN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 1 'SCAL' 1.4 ;
 VN = 'MANUEL' 'CHPO' ($DOMINT . 'CENTRE') 2 'UY' 0. 'UX' 0.0 ; 
****** stagnation values
 RAIR = 288.2944D0 ;
 P_ST = 100.0D5 ;
 T_ST = 300.0D0 ;
 R_ST = P_ST '/' (RAIR '*' T_ST) ;
  
 CHPLI = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 2 'PSTA' P_ST
    'RSTA' R_ST ;

 S0 = P_ST '/' (R_ST '**' 1.4) ;    
 RF = (2.0D0 '/' (1.4 '+' 1.0D0)) '**' (1.0D0 '/' (1.4 '-' 1.0D0))
            '*' R_ST  ;            
 PF = S0 '*' (RF '**' 1.4) ;
 PF1 = (2.0D0 '/' (1.4 '+' 1.0D0)) '**' (1.4D0 '/' (1.4 '-' 1.0D0)) ;
 PF1 = PF1 '*' P_ST ;

 UNF = (1.4D0 '*' PF '/' RF) '**' 0.5D0 ;
 UXF = UNF '/' (-1.0D0 '*' (2.0D0 '**' 0.5D0)) ;
 UYF = UNF '/' (2.0D0 '**' 0.5D0) ;


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

 RCHLIM RCHRES = 'KONV' 'VF' 'PERFMONO' 'CLIM'  'RESI' MDOMINT MP2P3
                 LISTC LISTP
                 RN VN PN GAMN CHPLI 'INSO'  ;
************** checking the boundary conditions
 RCHLIM1 = 'MANUEL' 'CHPO' ($P2P3 . 'CENTRE') 4 'RN' RF 'PN' PF 'UX' UXF
   'UY' UYF ;

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

 'SI' (ERRO > 3.0D-6) ;
    'ERREUR' 5 ;
 'FINSI' ;
************** checking the residual
  SURSVOL = 1. '/' ((2.0D0 '**' 0.5D0) * 0.5D0)  ;
  GAMC = 'EXTRAIRE' GAMN PCEN 'SCAL' ;

  FMASS = RF '*' UNF ;
  FUX   = (FMASS * UXF) '-' (PF '/' (2. '**' 0.5)) ;
  FUY   = (FMASS * UYF) '+' (PF '/' (2. '**' 0.5)) ;
  HIN   = (GAMC/(GAMC-1.0)) '*' (PF '/' RF) ;
  ECIN = 0.5 '*' ((UXF '*' UXF) '+' (UYF '*' UYF)) ;
  FEN   = FMASS '*' (HIN '+' ECIN)
          ;
  RCHRES1 = 'MANUEL' 'CHPO' ('MANUEL' 'POI1' PCEN) 4
   'VAR1' (SURSVOL '*' FMASS) 'VAR2' (FUX '*' SURSVOL) 'VAR3' (FUY '*'
   SURSVOL) 'VAR4' (FEN '*' SURSVOL) ;

  TVAR1 = 'EXCO' RCHRES 'VAR1' ;
  TV1 = 'MAXIMUM' TVAR1 ;
*---------------------------  
  TVAR2 = 'EXCO' RCHRES 'VAR2' ;
  TV2 = 'MAXIMUM' TVAR2 ;
*---------------------------
  TVAR3 = 'EXCO' RCHRES 'VAR3' ;
  TV3 = 'MAXIMUM' TVAR3 ;
*---------------------------
  TVAR4 = 'EXCO' RCHRES 'VAR4' ;
  TV4 = 'MAXIMUM' TVAR4 ;
*---------------------------  
  ERRV1 = 'ABS' ((TV1 '-' (SURSVOL '*' FMASS)) '/' TV1) ;
  ERRV2 = 'ABS' ((TV2 '-' (FUX '*' SURSVOL)) '/' TV2) ;
  ERRV3 = 'ABS' ((TV3 '-' (FUY '*' SURSVOL)) '/' TV3) ;
  ERRV4 = 'ABS' ((TV4 '-' (FEN '*' SURSVOL)) '/' TV4) ; 

  LERRV = 'PROG'  ERRV1 ERRV2 ERRV3 ERRV4 ;
  
  ERRO = 'MAXIMUM' LERRV  ;
 'SI' (ERRO > 1.0D-6) ;
    'ERREUR' 5 ;
 'FINSI' ;


 
 'FIN' ;
 

 

 

