Download lapn_impl3D.dgibi

Back to the list

* fichier :  lapn_impl3D.dgibi
***********************************************************
***********************************************************
**** APPROCHE VF "Cell-Centered Formulation" pour la   ****
**** solution des                                      **** 
**** Equations d'Euler pour un gaz parfait             ****
**** OPERATEURS PRIM, PRET, LAPN                       ****
**** Implicit: calcul du jacobien du residu            ****
****                                                   ****
**** Cas gaz monoespece, "calorically perfect"         ****
**** 3D                                                ****
****                                                   ****
**** Methodes: DIAMANT                                 ****
****                                                   ****
**** A. BECCANTINI SFME/LTMF            AOUT  2001     ****
**** S. GOUNAND    DEN/DM2S/SFME/LTMF   AOUT  2001     ****
***********************************************************
***********************************************************

 'OPTION'  'DIME' 3 
     'ELEM' 'CUB8' 
     'ECHO'  0 
     'TRAC' 'X' ;

*
*** GRAPH
*

 GRAPH = FAUX ;
*  GRAPH = VRAI ;

 ERRTOL = 1.0D-3 ;

***************************
***** DOMAINE SPATIAL  ****
***************************


 A0 = 0.0D0 0.0D0 0.0D0;
 A1 = 1.0D0 0.0D0 0.0D0;
 A2 = 1.0D0 1.0D0 0.0D0;
 A3 = 0.0D0 1.0D0 0.0D0;

 SUR1 = 'MANUEL' 'QUA4' A0 A1 A2 A3 ;
 DOM1 = SUR1 'VOLUME' 'TRAN' 1 (0.0 0.0 1.0) ;
 
 DOM2 = DOM1 'PLUS' (1.0 0.0 0.0) ;
 DOM3 = DOM1 'PLUS' (-1.0 0.0 0.0) ;
 DOM4 = DOM1 'PLUS' (0.0 1.0 0.0) ;
 DOM5 = DOM1 'PLUS' (0.0 -1.0 0.0) ;
 DOM6 = DOM1 'PLUS' (1.0 1.0 0.0) ;
 DOM7 = DOM1 'PLUS' (-1.0 -1.0 0.0) ;
 DOM8 = DOM1 'PLUS' (1.0 -1.0 0.0) ;
 DOM9 = DOM1 'PLUS' (-1.0 1.0 0.0) ;

 DOM10 = DOM1 'PLUS' (0.0 0.0 1.0) ;
 DOM11 = DOM1 'PLUS' (1.0 0.0 1.0) ;
 DOM12 = DOM1 'PLUS' (-1.0 0.0 1.0) ;
 DOM13 = DOM1 'PLUS' (0.0 1.0 1.0) ;
 DOM14 = DOM1 'PLUS' (0.0 -1.0 1.0) ;
 DOM15 = DOM1 'PLUS' (1.0 1.0 1.0) ;
 DOM16 = DOM1 'PLUS' (-1.0 -1.0 1.0) ;
 DOM17 = DOM1 'PLUS' (1.0 -1.0 1.0) ;
 DOM18 = DOM1 'PLUS' (-1.0 1.0 1.0) ;

 DOM19 = DOM1 'PLUS' (0.0 0.0 -1.0) ;
 DOM20 = DOM1 'PLUS' (1.0 0.0 -1.0) ;
 DOM21 = DOM1 'PLUS' (-1.0 0.0 -1.0) ;
 DOM22 = DOM1 'PLUS' (0.0 1.0 -1.0) ;
 DOM23 = DOM1 'PLUS' (0.0 -1.0 -1.0) ;
 DOM24 = DOM1 'PLUS' (1.0 1.0 -1.0) ;
 DOM25 = DOM1 'PLUS' (-1.0 -1.0 -1.0) ;
 DOM26 = DOM1 'PLUS' (1.0 -1.0 -1.0) ;
 DOM27 = DOM1 'PLUS' (-1.0 1.0 -1.0) ;

 DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5
   'ET' DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 'ET' DOM10
   'ET' DOM11 'ET' DOM12 'ET' DOM13 'ET' DOM14 'ET' DOM15
   'ET' DOM16 'ET' DOM17 'ET' DOM18 'ET' DOM19 'ET' DOM20
   'ET' DOM21 'ET' DOM22 'ET' DOM23 'ET' DOM24 'ET' DOM25
   'ET' DOM26 'ET' DOM27 ;

 'ELIMINATION' DOMTOT 0.0001 ;

*
**** Perturbation du domaine
*

 CHPBRU = ('NOMC' 'UX' ('BRUI' 'BLAN' 'UNIF' 0.0  0.4 DOMTOT)
            'NATU' 'DISCRET') 'ET'
            ('NOMC' 'UY' ('BRUI' 'BLAN' 'UNIF' 0.0  0.2 DOMTOT)
            'NATU' 'DISCRET') 'ET'
            ('NOMC' 'UZ' ('BRUI' 'BLAN' 'UNIF' 0.0  0.3 DOMTOT)
            'NATU' 'DISCRET');
            
 'FORME' CHPBRU ;
  
 
*
**** On calcule le JACOBIAN dans le centre de DOM27;
*


 $DOMTOT = 'MODELISER' DOMTOT 'EULER';
 $DOM1 = 'MODELISER'  DOM1 'EULER';
 $DOM27 = 'MODELISER'  DOM27 'EULER';

 TDOMTOT = 'DOMA'  $DOMTOT 'VF';
 TDOM1 = 'DOMA'  $DOM1 'VF';
 TDOM27 = 'DOMA'  $DOM27 'VF';

 MDOM1 = TDOM1 . 'QUAF' ;
 MDOM27 = TDOM27 . 'QUAF' ;
 MDOMTOT = TDOMTOT . 'QUAF' ;

 'ELIMINATION'  (MDOMTOT ET MDOM1) 0.0001 ;
 'ELIMINATION'  (MDOMTOT ET MDOM27) 0.0001 ;
 
 RN0 = 'BRUI' 'BLAN' 'UNIF' 1.11 0.5 ('DOMA' $DOMTOT 'CENTRE') ;
 RN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 ;
 PN0 = 'BRUI' 'BLAN' 'UNIF' 1234.1 800 ('DOMA' $DOMTOT 'CENTRE') ;
 GAMMAN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 1.4 ;

 CSONN = (GAMMAN '*' PN0) '/' RN0 ;
 CSONN = 'KOPS' CSONN '**' 0.5 ;
 UXN0  = 0.2 *  CSONN ;
 UYN0  = 0.3  * CSONN ;
 UZN0  = 0.4  * CSONN ;
 
 GN0 = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (
   ('NOMC' (RN0 '*' UXN0) 'UX' 'NATU' 'DISCRET') 'ET'
   ('NOMC' (RN0 '*' UYN0) 'UY' 'NATU' 'DISCRET') 'ET'
   ('NOMC' (RN0 '*' UZN0) 'UZ' 'NATU' 'DISCRET') ) ;

vitimp = 'KCHT' $DOMTOT 'VECT' 'FACE' (0.D0 0.D0 0.D0) ;
tauimp = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'FACE') 6
   'TXX' 0.D0 'TYY' 0.D0 'TZZ' 0.D0
   'TXY' 0.D0 'TXZ' 0.D0 'TYZ' 0.D0 ;
fchimp = 'KCHT' $DOMTOT 'VECT' 'FACE' (1.D0 1.D0 1.D0) ;
*
*** retgd
*

 ECIN = 0.5D0 '*' RN0 '*' ((UXN0  '*' UXN0) '+' (UYN0  '*' UYN0) '+'
      (UZN0 * UZN0)) ;
 RETN0  = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PN0  '/' (GAMMAN  '-' 1.0)) '+' ECIN) ;

 CV=PI ;
 TN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PN0  '/' (GAMMAN  '-' 1.0)) '/' (RN0 '*' CV)) ;

 VIT PRES = PRIM 'PERFMONO' RN0 GN0 RETN0 GAMMAN ;

 ERR1 = 'MAXIMUM' (PRES '-' PN0) 'ABS' ;
 ERR2 = 'MAXIMUM' (GN0 '-' (RN0 '*' VIT ('MOTS' 'SCAL' 'SCAL' 'SCAL')
         ('MOTS' 'UX' 'UY' 'UZ') ('MOTS' 'UX' 'UY' 'UZ'))) 'ABS' ;

 'SI' (('MAXIMUM' ('PROG' ERR1 ERR2 ) 'ABS' ) > 1.0D-6) ;
      'MESSAGE' 'Problem 0' ;
      'ERREUR' 5 ;
 'FINSI' ;
 

 'SI' GRAPH;
      'TRACER' (('DOMA' $DOMTOT 'MAILLAGE' ) 'ET' 
         ('DOMA' $DOMTOT 'CENTRE')) 'TITRE' 'Domaine et centre' ;
 'FINSI' ;

 
*
***** Les valeurs en $DOM1 'CENTRE'
*

 PCON = ('DOMA' $DOM1 'CENTRE') 'POIN' 1 ;
 ro0 = 'EXTRAIRE' RN0 PCON 'SCAL' ;
 cson0 = 'EXTRAIRE' CSONN PCON 'SCAL' ;
 ret0 = 'EXTRAIRE' RETN0 PCON 'SCAL' ;
 

***********************
**** Les CHPOINTs  ****
***********************

 RN  =  'COPIER' RN0 ;

 GN  =  'COPIER' GN0  ;

 RETN = 'COPIER' RETN0 ;

 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;

 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
 JACO CHPRES0 DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
 
***********************
***** Le residu *******
***********************

 DEBRN0   = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX0  = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY0  = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ0  = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 5) ;

*****************************************************
*****************************************************
******* TEST1 ***************************************
*****************************************************
*****************************************************
'MESSAGE' '**************' ;
'MESSAGE' '   TEST 1     ' ;
'MESSAGE' '**************' ;
*
* On compare le jacobien et la variation du residu
* en $DOM1 'CENTRE' par rapport à une variation
* infinitésimal en $DOM1 'CENTRE'
*
 
 UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET' 
      ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 5 'RN' 1.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') ;
 UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 5 'RN' 0.0
      'RUXN' 1.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 
        'NATURE' 'DISCRET') ;
 UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 5 'RN' 0.0
      'RUXN' 0.0 'RUYN' 1.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET')  ;
 UNGZ = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 5 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 1.0 'RETN' 0.0
        'NATURE' 'DISCRET')  ;
 UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 5 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 1.0
        'NATURE' 'DISCRET') ;

 DDRHO = 'KOPS' JACO 'MULT' UNRO ;

*   
*
***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
*                     dRES_GXN '/' dRN ('RUXN') ; 
*                     dRES_GYN '/' dRN ('RUYN') ;
*                     dRES_RETN '/' dRN ('RETN') ;
*    DDGX contient ...
*
*
   
 DDGX = 'KOPS' JACO 'MULT' UNGX ;
 DDGY = 'KOPS' JACO 'MULT' UNGY ;    
 DDGZ = 'KOPS' JACO 'MULT' UNGZ ;    
 DDRET = 'KOPS' JACO 'MULT' UNRET ;

 DRR  = 'EXTRAIRE' DDRHO PCON  'RN' ;
 DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
 DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
 DGZR = 'EXTRAIRE' DDRHO PCON 'RUZN' ;
 DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;

 DRGX   = 'EXTRAIRE' DDGX PCON  'RN' ;
 DGXGX  = 'EXTRAIRE' DDGX PCON 'RUXN' ;
 DGYGX  = 'EXTRAIRE' DDGX PCON 'RUYN' ;
 DGZGX  = 'EXTRAIRE' DDGX PCON 'RUZN' ;
 DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;

 DRGY   = 'EXTRAIRE' DDGY PCON  'RN' ;
 DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
 DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
 DGZGY = 'EXTRAIRE' DDGY PCON 'RUZN' ;
 DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;

 DRGZ   = 'EXTRAIRE' DDGZ PCON  'RN' ;
 DGXGZ = 'EXTRAIRE' DDGZ PCON 'RUXN' ;
 DGYGZ = 'EXTRAIRE' DDGZ PCON 'RUYN' ;
 DGZGZ = 'EXTRAIRE' DDGZ PCON 'RUZN' ;
 DRETGZ = 'EXTRAIRE' DDGZ PCON 'RETN' ;

 DRRET   = 'EXTRAIRE' DDRET PCON  'RN' ;
 DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
 DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
 DGZRET = 'EXTRAIRE' DDRET PCON 'RUZN' ;
 DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;


*********************************************************************
*********************************************************************
***** On calcule les residues pour ro1 = ro0 * (1.'+' DELTA)  *******
*********************************************************************
*********************************************************************

 DELTA = 1.0D-6 ;
 ro1 = ro0 '*' (1 '+' DELTA) ;
 RNDOM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' ro1 ;
    
 RN  = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RN0 RNDOM1 ;

 GN  = 'COPIER' GN0 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
*    'VIMP' vitimp 
*    'TAUI' tauimp
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
 DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
 DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
 DGZRN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0) ;
 DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;


 
 ERR1 = ('ABS' (DRRN '-' DRR)) '*' (ro0 '/' (ro0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 1';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXRN '-' DGXR)) '*'
          (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 2';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYRN '-' DGYR)) '*'
          (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 3';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZRN '-' DGZR)) '*'
          (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DGZRN=' DGZRN ' DGZR=' DGZR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 4';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DRETRN '-' DRETR)) '*'
        (ro0 '/' (ret0 '*' cson0)) ; 
 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 5';
      'ERREUR' 5 ;
 'FINSI' ;
  
***************************************************************************
***************************************************************************
***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson0)  ******
***************************************************************************
***************************************************************************

 DELTA = 1.0D-6 ;
 gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
 gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
 gnx1 = gnx0 '+' (ro0 '*' cson0 '*'  DELTA) ; 
 GNDOM1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (gnx1 gny0 gnz0) ;

    
 RN  = 'COPIER' RN0 ;

 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM1 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
*    'VIMP' vitimp 
*    'TAUI' tauimp
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGYGXN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DGZGXN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DRETGXN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ro0 '*' cson0) ;

 ERR1 = ('ABS' (DRGXN '-' DRGX))  ;
 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 6';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 7';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 8';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZGXN '-' DGZGX)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGZGXN=' DGZGXN ' DGZGX=' DGZGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 9';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*'
        (ro0  / ret0) ;
 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 10';
        'ERREUR' 5 ;
 'FINSI' ;


***************************************************************************
***************************************************************************
***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson0)  ******
***************************************************************************
***************************************************************************


 DELTA = 1.0D-6 ;
 gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
 gny1 = gny0 '+' (ro0 '*' cson0 '*'  DELTA) ; 
 gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
 GNDOM1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (gnx0 gny1 gnz0) ;

    
 RN  = 'COPIER' RN0 ;

 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM1 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
*    'VIMP' vitimp 
*    'TAUI' tauimp
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGYGYN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DGZGYN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DRETGYN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ro0 '*' cson0) ;

 ERR1 = ('ABS' (DRGYN '-' DRGY))  ;
 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 11';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXGYN '-' DGXGY))  '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 12';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 13';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZGYN '-' DGZGY)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGZGYN=' DGZGYN ' DGZGY=' DGZGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 14';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETGYN '-' DRETGY))  '*'
        (ro0 / ret0)  ;
 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 15';
        'ERREUR' 5 ;
 'FINSI' ;


***************************************************************************
***************************************************************************
***** On calcule les residues pour gnz1 = gnz0 '+' (DELTA ro0 cson0)  ******
***************************************************************************
***************************************************************************


 DELTA = 1.0D-6 ;
    
 gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
 gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
 gnz1 = gnz0 '+' (ro0 '*' cson0 '*'  DELTA) ; 
 gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
 GNDOM1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (gnx0 gny0 gnz1) ;

    
 RN  = 'COPIER' RN0 ;

 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM1 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
*    'VIMP' vitimp 
*    'TAUI' tauimp
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRGZN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGXGZN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGYGZN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DGZGZN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DRETGZN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ro0 '*' cson0) ;

 ERR1 = ('ABS' (DRGZN '-' DRGZ))  ;
 'MESSAGE' ('CHAINE' 'DRGZN=' DRGZN ' DRGZ=' DRGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 16';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXGZN '-' DGXGZ))  '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGXGZN=' DGXGZN ' DGXGZ=' DGXGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 17';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGYGZN=' DGYGZN ' DGYGZ=' DGYGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 18';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGZGZN=' DGZGZN ' DGZGZ=' DGZGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 19';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETGZN '-' DRETGZ))  '*'
        (ro0 / ret0)  ;
 'MESSAGE' ('CHAINE' 'DRETGZN=' DRETGZN ' DRETGZ=' DRETGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 20';
        'ERREUR' 5 ;
 'FINSI' ;

 
***************************************************************************
***************************************************************************
***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA)    ******
***************************************************************************
***************************************************************************


 DELTA = 1.0D-6 ;
 ret1 = ret0 '*' (1. '+' DELTA) ;
 RETNDOM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' ret1 ;

 RN  = 'COPIER' RN0 ;

 GN  = 'COPIER' GN0 ;

 RETN = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RETN0 RETNDOM1 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
*    'VIMP' vitimp 
*    'TAUI' tauimp
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
 DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
 DGYRETN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ret0) ;
 DGZRETN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ret0) ;
 DRETRETN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ret0) ;

 ERR1 = ('ABS' (DRRETN '-' DRRET)) '*' (ret0 '/' (ro0 '*' cson0))   ;
 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 21';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*'
          (ret0 '/' (ro0 '*' cson0 * cson0))   ;
 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 22';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*' 
             (ret0 '/' (ro0 '*' cson0 * cson0)) ;
 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 23';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZRETN '-' DGZRET)) '*' 
             (ret0 '/' (ro0 '*' cson0 * cson0)) ;
 'MESSAGE' ('CHAINE' 'DGZRETN=' DGZRETN ' DGZRET=' DGZRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 24';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 25';
        'ERREUR' 5 ;
 'FINSI' ;


*****************************************************
*****************************************************
******* TEST2 ***************************************
*****************************************************
*****************************************************
'MESSAGE' '**************' ;
'MESSAGE' '   TEST 2     ' ;
'MESSAGE' '**************' ;

*
* On compare le jacobien et la variation du residu
* en $DOM1 . 'CENTRE' par rapport à une variation
* infinitésimal en $DOM27 'CENTRE'
*

 PCELL = ('DOMA' $DOM27 'CENTRE') 'POIN' 1 ;
 ro0 = 'EXTRAIRE' RN0 PCELL 'SCAL' ;
 cson0 = 'EXTRAIRE' CSONN PCELL 'SCAL' ;
 ret0 = 'EXTRAIRE' RETN0 PCELL 'SCAL' ;

 
 UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET' 
      ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 1.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') ;
 UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
      'RUXN' 1.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 
        'NATURE' 'DISCRET') ;
 UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
      'RUXN' 0.0 'RUYN' 1.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET')  ;
 UNGZ = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 1.0 'RETN' 0.0
        'NATURE' 'DISCRET')  ;
 UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 1.0
        'NATURE' 'DISCRET') ;

 DDRHO = 'KOPS' JACO 'MULT' UNRO ;

*   
*
***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
*                     dRES_GXN '/' dRN ('RUXN') ; 
*                     dRES_GYN '/' dRN ('RUYN') ;
*                     dRES_RETN '/' dRN ('RETN') ;
*    DDGX contient ...
*
*
   
 DDGX = 'KOPS' JACO 'MULT' UNGX ;
 DDGY = 'KOPS' JACO 'MULT' UNGY ;    
 DDGZ = 'KOPS' JACO 'MULT' UNGZ ;    
 DDRET = 'KOPS' JACO 'MULT' UNRET ;

 DRR  = 'EXTRAIRE' DDRHO PCON  'RN' ;
 DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
 DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
 DGZR = 'EXTRAIRE' DDRHO PCON 'RUZN' ;
 DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;

 DRGX   = 'EXTRAIRE' DDGX PCON  'RN' ;
 DGXGX  = 'EXTRAIRE' DDGX PCON 'RUXN' ;
 DGYGX  = 'EXTRAIRE' DDGX PCON 'RUYN' ;
 DGZGX  = 'EXTRAIRE' DDGX PCON 'RUZN' ;
 DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;

 DRGY   = 'EXTRAIRE' DDGY PCON  'RN' ;
 DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
 DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
 DGZGY = 'EXTRAIRE' DDGY PCON 'RUZN' ;
 DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;

 DRGZ   = 'EXTRAIRE' DDGZ PCON  'RN' ;
 DGXGZ = 'EXTRAIRE' DDGZ PCON 'RUXN' ;
 DGYGZ = 'EXTRAIRE' DDGZ PCON 'RUYN' ;
 DGZGZ = 'EXTRAIRE' DDGZ PCON 'RUZN' ;
 DRETGZ = 'EXTRAIRE' DDGZ PCON 'RETN' ;

 DRRET   = 'EXTRAIRE' DDRET PCON  'RN' ;
 DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
 DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
 DGZRET = 'EXTRAIRE' DDRET PCON 'RUZN' ;
 DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;


*********************************************************************
*********************************************************************
***** On calcule les residues pour ro1 = ro0 * (1.'+' DELTA)  *******
*********************************************************************
*********************************************************************

 DELTA = 1.0D-8 ;
 ro1 = ro0 '*' (1 '+' DELTA) ;
 RNDOM27 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ro1 ;
    
 RN  = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RN0 RNDOM27 ;

 GN  = 'COPIER' GN0 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
*
**** On calcule le jacobien numeriquement
*
   
 DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
 DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
 DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
 DGZRN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0) ;
 DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;


 
 ERR1 = ('ABS' (DRRN '-' DRR)) '*' (ro0 '/' (ro0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 1';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXRN '-' DGXR)) '*'
          (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 2';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYRN '-' DGYR)) '*'
          (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 3';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZRN '-' DGZR)) '*'
          (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DGZRN=' DGZRN ' DGZR=' DGZR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 4';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DRETRN '-' DRETR)) '*'
        (ro0 '/' (ret0 '*' cson0)) ; 
 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 5';
      'ERREUR' 5 ;
 'FINSI' ;
***************************************************************************
***************************************************************************
***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson0)  *****
***************************************************************************
***************************************************************************

 DELTA = 1.0D-8 ;
 gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
 gnz0 = 'EXTRAIRE' GN0 PCELL 'UZ' ;
 gnx1 = gnx0 '+' (ro0 '*' cson0 '*'  DELTA) ; 
 GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx1 gny0 gnz0) ;

    
 RN  = 'COPIER' RN0 ;

 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGYGXN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DGZGXN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DRETGXN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ro0 '*' cson0) ;

 ERR1 = ('ABS' (DRGXN '-' DRGX))  ;
 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 6';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 7';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 8';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZGXN '-' DGZGX)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGZGXN=' DGZGXN ' DGZGX=' DGZGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 9';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*'
        (ro0  / ret0) ;
 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 10';
        'ERREUR' 5 ;
 'FINSI' ;


***************************************************************************
***************************************************************************
***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson0)  *****
***************************************************************************
***************************************************************************


 DELTA = 1.0D-8 ;
    
 gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
 gny1 = gny0 '+' (ro0 '*' cson0 '*'  DELTA) ; 
 gnz0 = 'EXTRAIRE' GN0 PCELL 'UZ' ;
 GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx0 gny1 gnz0) ;

    
 RN  = 'COPIER' RN0 ;

 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGYGYN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DGZGYN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DRETGYN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ro0 '*' cson0) ;

 ERR1 = ('ABS' (DRGYN '-' DRGY))  ;
 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 11';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXGYN '-' DGXGY))  '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 12';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 13';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZGYN '-' DGZGY)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGZGYN=' DGZGYN ' DGZGY=' DGZGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 14';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETGYN '-' DRETGY))  '*'
        (ro0 / ret0)  ;
 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 15';
        'ERREUR' 5 ;
 'FINSI' ;


***************************************************************************
***************************************************************************
***** On calcule les residues pour gnz1 = gnz0 '+' (DELTA ro0 cson0)  *****
***************************************************************************
***************************************************************************


 DELTA = 1.0D-8 ;
    
 gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
 gnz0 = 'EXTRAIRE' GN0 PCELL 'UZ' ;
 gnz1 = gnz0 '+' (ro0 '*' cson0 '*'  DELTA) ; 
 gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
 GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx0 gny0 gnz1) ;

    
 RN  = 'COPIER' RN0 ;

 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRGZN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGXGZN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGYGZN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DGZGZN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DRETGZN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ro0 '*' cson0) ;

 ERR1 = ('ABS' (DRGZN '-' DRGZ))  ;
 'MESSAGE' ('CHAINE' 'DRGZN=' DRGZN ' DRGZ=' DRGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 16';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXGZN '-' DGXGZ))  '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGXGZN=' DGXGZN ' DGXGZ=' DGXGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 17';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGYGZN=' DGYGZN ' DGYGZ=' DGYGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 18';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGZGZN=' DGZGZN ' DGZGZ=' DGZGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 19';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETGZN '-' DRETGZ))  '*'
        (ro0 / ret0)  ;
 'MESSAGE' ('CHAINE' 'DRETGZN=' DRETGZN ' DRETGZ=' DRETGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 20';
        'ERREUR' 5 ;
 'FINSI' ;

 
***************************************************************************
***************************************************************************
***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA)    ******
***************************************************************************
***************************************************************************


 DELTA = 1.0D-8 ;
 ret1 = ret0 '*' (1. '+' DELTA) ;
 RETDOM27 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ret1 ;

 RN  = 'COPIER' RN0 ;

 GN  = 'COPIER' GN0 ;

 RETN = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RETN0 RETDOM27 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
 DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
 DGYRETN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ret0) ;
 DGZRETN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ret0) ;
 DRETRETN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ret0) ;

 ERR1 = ('ABS' (DRRETN '-' DRRET)) '*' (ret0 '/' (ro0 '*' cson0))   ;
 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 21';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*'
          (ret0 '/' (ro0 '*' cson0 * cson0))   ;
 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 22';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*' 
             (ret0 '/' (ro0 '*' cson0 * cson0)) ;
 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 23';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZRETN '-' DGZRET)) '*' 
             (ret0 '/' (ro0 '*' cson0 * cson0)) ;
 'MESSAGE' ('CHAINE' 'DGZRETN=' DGZRETN ' DGZRET=' DGZRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 24';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 25';
        'ERREUR' 5 ;
 'FINSI' ;
*****************************************************
*****************************************************
******* TEST3 ***************************************
*****************************************************
*****************************************************
'MESSAGE' '**************' ;
'MESSAGE' '   TEST 3     ' ;
'MESSAGE' '**************' ;
*
* On observe la variation du residu en $DOM27 'CENTRE'
* par rapport à une variation infinitésimal en
* $DOM27 'CENTRE' (NB : DOM27 est sur le bord!).
*

*
***** Les valeurs en $DOM1 . 'CENTRE'
*

 PCON = ('DOMA' $DOM27 'CENTRE') 'POIN' 1 ;
 ro0 = 'EXTRAIRE' RN0 PCON 'SCAL' ;
 cson0 = 'EXTRAIRE' CSONN PCON 'SCAL' ;
 ret0 = 'EXTRAIRE' RETN0 PCON 'SCAL' ;
 
***********************
***** Le residu *******
***********************

 DEBRN0   = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX0  = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 5) ;

 
 
 UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET' 
      ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 1.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') ;
 UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
      'RUXN' 1.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 
        'NATURE' 'DISCRET') ;
 UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
      'RUXN' 0.0 'RUYN' 1.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET')  ;
 UNGZ = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 1.0 'RETN' 0.0
        'NATURE' 'DISCRET')  ;
 UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 1.0
        'NATURE' 'DISCRET') ;

 DDRHO = 'KOPS' JACO 'MULT' UNRO ;

*   
*
***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
*                     dRES_GXN '/' dRN ('RUXN') ; 
*                     dRES_GYN '/' dRN ('RUYN') ;
*                     dRES_RETN '/' dRN ('RETN') ;
*    DDGX contient ...
*
*
   
 DDGX = 'KOPS' JACO 'MULT' UNGX ;
 DDGY = 'KOPS' JACO 'MULT' UNGY ;
 DDGZ = 'KOPS' JACO 'MULT' UNGZ ;
 DDRET = 'KOPS' JACO 'MULT' UNRET ;

 DRR  = 'EXTRAIRE' DDRHO PCON  'RN' ;
 DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
 DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
 DGZR = 'EXTRAIRE' DDRHO PCON 'RUZN' ;
 DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;

 DRGX   = 'EXTRAIRE' DDGX PCON  'RN' ;
 DGXGX  = 'EXTRAIRE' DDGX PCON 'RUXN' ;
 DGYGX  = 'EXTRAIRE' DDGX PCON 'RUYN' ;
 DGZGX  = 'EXTRAIRE' DDGX PCON 'RUZN' ;
 DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;

 DRGY   = 'EXTRAIRE' DDGY PCON  'RN' ;
 DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
 DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
 DGZGY = 'EXTRAIRE' DDGY PCON 'RUZN' ;
 DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;

 DRGZ   = 'EXTRAIRE' DDGZ PCON  'RN' ;
 DGXGZ = 'EXTRAIRE' DDGZ PCON 'RUXN' ;
 DGYGZ = 'EXTRAIRE' DDGZ PCON 'RUYN' ;
 DGZGZ = 'EXTRAIRE' DDGZ PCON 'RUZN' ;
 DRETGZ = 'EXTRAIRE' DDGZ PCON 'RETN' ;

 DRRET   = 'EXTRAIRE' DDRET PCON  'RN' ;
 DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
 DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
 DGZRET = 'EXTRAIRE' DDRET PCON 'RUZN' ;
 DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;


*********************************************************************
*********************************************************************
***** On calcule les residues pour ro1 = ro0 * (1.'+' DELTA)  *******
*********************************************************************
*********************************************************************

 DELTA = 1.0D-8 ;
 ro1 = ro0 '*' (1 '+' DELTA) ;
 RNDOM27 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ro1 ;
    
 RN  = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RN0 RNDOM27 ;

 GN  = 'COPIER' GN0 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
 DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
 DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
 DGZRN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0) ;
 DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;

 ERR1 = ('ABS' (DRRN '-' DRR)) '*' (ro0 '/' (ro0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 1';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXRN '-' DGXR)) '*'
          (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 2';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYRN '-' DGYR)) '*'
          (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 3';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZRN '-' DGZR)) '*'
          (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
 'MESSAGE' ('CHAINE' 'DGZRN=' DGZRN ' DGZR=' DGZR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 4';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DRETRN '-' DRETR)) '*'
        (ro0 '/' (ret0 '*' cson0)) ; 
 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 5';
      'ERREUR' 5 ;
 'FINSI' ;

  
***************************************************************************
***************************************************************************
***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson0)  *****
***************************************************************************
***************************************************************************

 DELTA = 1.0D-8 ;
 gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
 gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
 gnx1 = gnx0 '+' (ro0 '*' cson0 '*'  DELTA) ; 
 GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx1 gny0 gnz0) ;

    
 RN  = 'COPIER' RN0 ;

 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGYGXN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DGZGXN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DRETGXN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ro0 '*' cson0) ;

 ERR1 = ('ABS' (DRGXN '-' DRGX))  ;
 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 6';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 7';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 8';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZGXN '-' DGZGX)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGZGXN=' DGZGXN ' DGZGX=' DGZGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 9';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*'
        (ro0  / ret0) ;
 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 10';
        'ERREUR' 5 ;
 'FINSI' ;


***************************************************************************
***************************************************************************
***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson0)  *****
***************************************************************************
***************************************************************************


 DELTA = 1.0D-8 ;
    
 gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
 gny1 = gny0 '+' (ro0 '*' cson0 '*'  DELTA) ; 
 gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
 GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx0 gny1 gnz0) ;

    
 RN  = 'COPIER' RN0 ;

 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGYGYN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DGZGYN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DRETGYN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ro0 '*' cson0) ;

 ERR1 = ('ABS' (DRGYN '-' DRGY))  ;
 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 11';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXGYN '-' DGXGY))  '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 12';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 13';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZGYN '-' DGZGY)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGZGYN=' DGZGYN ' DGZGY=' DGZGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 14';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETGYN '-' DRETGY))  '*'
        (ro0 / ret0)  ;
 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 15';
        'ERREUR' 5 ;
 'FINSI' ;


***************************************************************************
***************************************************************************
***** On calcule les residues pour gnz1 = gnz0 '+' (DELTA ro0 cson0)  *****
***************************************************************************
***************************************************************************


 DELTA = 1.0D-8 ;
    
 gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
 gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
 gnz1 = gnz0 '+' (ro0 '*' cson0 '*'  DELTA) ; 
 gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
 GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx0 gny0 gnz1) ;

    
 RN  = 'COPIER' RN0 ;

 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;

 RETN = 'COPIER' RETN0 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRGZN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGXGZN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
 DGYGZN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DGZGZN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ro0 '*' cson0) ;
 DRETGZN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ro0 '*' cson0) ;

 ERR1 = ('ABS' (DRGZN '-' DRGZ))  ;
 'MESSAGE' ('CHAINE' 'DRGZN=' DRGZN ' DRGZ=' DRGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 16';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXGZN '-' DGXGZ))  '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGXGZN=' DGXGZN ' DGXGZ=' DGXGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 17';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGYGZN=' DGYGZN ' DGYGZ=' DGYGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 18';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DGZGZN=' DGZGZN ' DGZGZ=' DGZGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 19';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETGZN '-' DRETGZ))  '*'
        (ro0 / ret0)  ;
 'MESSAGE' ('CHAINE' 'DRETGZN=' DRETGZN ' DRETGZ=' DRETGZ) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 20';
        'ERREUR' 5 ;
 'FINSI' ;

 
***************************************************************************
***************************************************************************
***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA)    ******
***************************************************************************
***************************************************************************


 DELTA = 1.0D-8 ;
 ret1 = ret0 '*' (1. '+' DELTA) ;
 RETNDOM1 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ret1 ;

 RN  = 'COPIER' RN0 ;

 GN  = 'COPIER' GN0 ;

 RETN = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RETN0 RETNDOM1 ;

 V0 PRES   = 'PRIM' 'PERFMONO'  RN GN RETN GAMMAN ;
 CV     = PI ;
 MU     = '*' PI PI ;
 KAPPA  = '*' ('*' PI PI) PI ;
 T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
        ((PRES  '/' (GAMMAN  '-' 1.0)) '/' (RN '*' CV)) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
*
*
*
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
    $DOMTOT  MU KAPPA CV RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;

***********************
***** Le residu *******
***********************

 DEBRN1   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ1  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;

*
**** On calcule le jacobien numeriquement
*
   
 DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
 DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
 DGYRETN = (DEBGNY1 '-' DEBGNY0) '/'  (DELTA '*' ret0) ;
 DGZRETN = (DEBGNZ1 '-' DEBGNZ0) '/'  (DELTA '*' ret0) ;
 DRETRETN = (DEBRETN1 '-' DEBRETN0) '/'  (DELTA '*' ret0) ;

 ERR1 = ('ABS' (DRRETN '-' DRRET)) '*' (ret0 '/' (ro0 '*' cson0))   ;
 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 21';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*'
          (ret0 '/' (ro0 '*' cson0 * cson0))   ;
 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 22';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*' 
             (ret0 '/' (ro0 '*' cson0 * cson0)) ;
 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 23';
        'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = ('ABS' (DGZRETN '-' DGZRET)) '*' 
             (ret0 '/' (ro0 '*' cson0 * cson0)) ;
 'MESSAGE' ('CHAINE' 'DGZRETN=' DGZRETN ' DGZRET=' DGZRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 24';
        'ERREUR' 5 ;
 'FINSI' ;


 ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' cson0 ;
 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET) ;
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 25';
        'ERREUR' 5 ;
 'FINSI' ;

 
 'FIN' ;
 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer