Download lapn_impl3D_mel.dgibi

Back to the list

* fichier :  lapn_impl3D_mel.dgibi
*; Préambule                           
*;; Description du cas-test
***********************************************************
***********************************************************
**** APPROCHE VF "Cell-Centred Formulation" pour la    ****
**** solution des                                      **** 
**** Equations de Navier-Stokes pour un gaz parfait    ****
**** OPERATEURS PRIM, PENT, LAPN                       ****
**** Implicit: calcul du jacobien du residu            ****
****                                                   ****
**** Cas multiespeces avec 3 esp. différentes (O2, N2, H2) ****
**** 3D                                                ****
****                                                   ****
**** Methodes: DIAMANT                                 ****
****                                                   ****
**** A. BECCANTINI DRN/DMT/SEMT/LTMF    AOUT  2000     ****
**** S. GOUNAND    DEN/DM2S/SFME/LTMF   MARS  2002     ****
***********************************************************
***********************************************************
*;; Options
 'OPTION'  'DIME' 3 ;
 'OPTION'  'ELEM' CUB8 ;
 'OPTION'  'ECHO'  0 ;
 'OPTION'  'TRAC' 'X' ;
 GRAPH = FAUX ;
*  GRAPH = VRAI ;
*;; Procédures perso
'DEBPROC' CALCERR rcalc*'FLOTTANT' rref*'FLOTTANT' ;
toto = 'MINIMUM' ('PROG' ('ABS' rref) ('ABS' rcalc)) ;
'SI' ('<EG' ('ABS' toto) 1.D-12) ;
   fref = 1.D0 ;
'SINON' ;
   fref = 'ABS' toto ;   
'FINSI' ;
'FINPROC' ('/' ('ABS' ('-' rcalc rref)) fref) ;
 DELTA = 1.0D-6 ;
 ERRZER  = 1.0D-11 ;
 ERRNIV0 = 1.0D-4 ;
 ERRNIV1 = 2.0D0 ;
 ERRNIV2 = 1.0D+4 ;
* CHPUNIF=Vrai si les champs de variables sont constants en espace
* CSTUNIQ=Vrai si les constituants sont identiques
'REPETER' bcl 4 ;
'SI' ('EGA' &bcl 1) ;
  CHPUNIF = VRAI ;
  CSTUNIQ = VRAI ;
  ERRTOL  = ERRNIV0 ;
  ERRTO2  = ERRNIV0 ;
  ERRTO3  = ERRNIV0 ;
'FINSI' ;  
'SI' ('EGA' &bcl 2) ;
  CHPUNIF = FAUX ;
  CSTUNIQ = VRAI ;
  ERRTOL  = ERRNIV0 ;
  ERRTO2  = ERRNIV1 ;
  ERRTO3  = ERRNIV0 ;
'FINSI' ;
'SI' ('EGA' &bcl 3) ;
  CHPUNIF = VRAI ;
  CSTUNIQ = FAUX ;
  ERRTOL  = ERRNIV0 ;
  ERRTO2  = ERRNIV1 ;
  ERRTO3  = ERRNIV1 ;
'FINSI' ;
'SI' ('EGA' &bcl 4) ;
  CHPUNIF = FAUX ;
  CSTUNIQ = FAUX ;
  ERRTOL  = ERRNIV0 ;
  ERRTO2  = ERRNIV1 ;
  ERRTO3  = ERRNIV2 ;
'FINSI' ;  
'SI' ('>EG' &bcl 5) ;
  'MESSAGE' 'Erreur de programmation' ;
  'ERREUR' 5 ;
'FINSI' ;
'MESSAGE' ('CHAINE' '****************************************') ;
 'SI' (CHPUNIF) ;
   'MESSAGE' 'Champoints constants en espace' ;
 'SINON' ;
   'MESSAGE' 'Champoints bruites en espace' ;
 'FINSI' ;
 'SI' (CSTUNIQ) ;
   'MESSAGE' 'Les constituants sont identiques (=hydrogene)' ;
 'SINON' ;
   'MESSAGE' 'Les constituants sont distincts (H2,O2,N2)' ;
 'FINSI' ;
'MESSAGE' ('CHAINE' '****************************************') ;
*;; Géométrie
 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 ;
 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 au 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 ;
 
*;; Physique
*
* Valeurs physiques pour l'oxygène (O), l'azote (N) et l'hydrogène (H)
*  vitesse du mélange
 UXN0 = 1.1 ;
 UYN0 = 1.2 ;
 UZN0 = 1.3 ;
*  température
 TN0 = 573.15 ;
*  capacités calorifiques, masses molaires et constantes des gaz parfaits
*(Raloc)
'SI' ('NON' CSTUNIQ) ;
   CPH   = 14.53E3 ;
   CPO   = 0.962E3 ;
   CPN   = 1.089E3 ;
   MMH   = 0.2E-2 ;
   MMO   = 3.2E-2 ;
   MMN   = 2.8E-2 ;
*  conductivité thermique, diffusivité thermique et viscosité dynamique
   LAMBDAH = 2.86E-1 ;
   LAMBDAO = 4.57E-2 ;
   LAMBDAN = 4.06E-2 ;
   MUH     = 1.38E-5 ;
   MUO     = 3.29E-5 ;
   MUN     = 2.83E-5 ;
'SINON' ;
   CPH   = 14.53E3 ;
   CPO   = CPH ;
   CPN   = CPH ;
   MMH   = 0.2E-2 ;
   MMO   = MMH ;
   MMN   = MMH ;
   LAMBDAH = 2.86E-1 ;
   LAMBDAO = LAMBDAH ;
   LAMBDAN = LAMBDAH ;
   MUH     = 1.38E-5 ;
   MUO     = MUH ;
   MUN     = MUH ;
'FINSI' ;
 RGP  = 8.314 ;
*  fractions massiques
 YH20  = 0.13D0 ;
 YO20  = 0.19D0 ;
*
* Fin de définition des propriétés physiques
*
* Conneries de champoints...
*
RN0 = 1.5D0 ;
'SI' (CHPUNIF) ;
  RN0  = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 ;
  UXN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' UXN0 ;
  UYN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' UYN0 ;
  UZN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' UZN0 ;
  TN0  = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' TN0 ;
  YH20    = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' YH20 ;
  YO20    = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' YO20 ;
'SINON' ;
  RN0 = 'BRUI' 'BLAN' 'UNIF' RN0 (RN0 '/' 10.D0)
         ('DOMA' $DOMTOT 'CENTRE') ;
 UXN0 = 'BRUI' 'BLAN' 'UNIF' UXN0 (UXN0 '/' 10.D0)
         ('DOMA' $DOMTOT 'CENTRE');
 UYN0 = 'BRUI' 'BLAN' 'UNIF' UYN0 (UYN0 '/' 10.D0)
         ('DOMA' $DOMTOT 'CENTRE');
 UZN0 = 'BRUI' 'BLAN' 'UNIF' UZN0 (UZN0 '/' 10.D0)
         ('DOMA' $DOMTOT 'CENTRE');
  TN0 = 'BRUI' 'BLAN' 'UNIF' TN0 (TN0 '/' 10.D0)
         ('DOMA' $DOMTOT 'CENTRE') ;
 YH20 = 'BRUI' 'BLAN' 'UNIF' YH20 (YH20 '/' 10.D0)
         ('DOMA' $DOMTOT 'CENTRE');
 YO20 = 'BRUI' 'BLAN' 'UNIF' YO20 (YO20 '/' 10.D0)
         ('DOMA' $DOMTOT 'CENTRE');
'FINSI' ;
*;
 YN20   = '*' (-1.D0) ('-' ('+' YH20 YO20) 1.D0) ;
 CP = '+' ('+' ('*' YH20 CPH) ('*' YO20 CPO)) ('*' YN20 CPN) ;
 LAMBDA = '+' ('+' ('*' YH20 LAMBDAH) ('*' YO20 LAMBDAO))
              ('*' YN20 LAMBDAN) ;
 MU = '+' ('+' ('*' YH20 MUH) ('*' YO20 MUO)) ('*' YN20 MUN) ;
 MMG = 'INVERSE' ('+' ('+' ('*' YH20 ('/' 1.D0 MMH))
                           ('*' YO20 ('/' 1.D0 MMO)))
                      ('*' YN20 ('/' 1.D0 MMN)) ) ;
 CPG     = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' CP ;
 LAMBDAG = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' LAMBDA ;
 MUH     = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' MUH ;
 MUO     = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' MUO ;
 MUN     = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' MUN ;
 MUG     = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' MU ;
*
* Propriétés déduites des autres
*
*  capa. calo. à volume constant et constante Gamma
 CVH  = '-' CPH ('/' RGP MMH) ;
 CVO  = '-' CPO ('/' RGP MMO) ;
 CVN  = '-' CPN ('/' RGP MMN) ;
 CVG   = '-' CPG ('*' RGP ('INVERSE' MMG)) ;
 GAMMAG  = '/' CPG CVG ;
*  diffusivité thermique et enthalpie de formation à 0K
 KAPPAG  = '/' LAMBDAG ('*' RN0 CPG) ;
 H0KH    = -4.195D6 ;
 H0KO    = -2.634D5 ;
 H0KN    = -2.953D5 ;
*  fractions volumiques
 RYH20 = '*' RN0 YH20 ;
 RYH20  = 'NOMC' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' RYH20) 'H2  ' ;
 RYO20 = '*' RN0 YO20 ;
 RYO20  = 'NOMC' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' RYO20) 'O2  ' ;
*  pression
 PRESG = '*' RN0 ('*' ('*' RGP ('INVERSE' MMG)) TN0) ;
*
 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')) ;
*;; Test 0 (Opérateur PRIM)
 ETHE = RN0 '*' CVG '*' TN0 ;     
 ECIN = 0.5D0 '*' RN0 '*' ((UXN0  '*' UXN0) '+' (UYN0  '*' UYN0)
                       '+' (UZN0  '*' UZN0)) ;
* ECCC = RN0 '*' (   ('*' (TGAZ  .  'H2  ' . 'H0K') YH20)
*                '+' ('*' (TGAZ  .  'N2  ' . 'H0K') YN20)
*                ) ;
 RETN0  = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
*        (ETHE '+' ECIN '+' ECCC) ;
        (ETHE '+' ECIN) ;
*
* Propriétés physiques demandées par les opérateurs 
* stockées dans la table TGAZ
*
 TGAZ = 'TABLE' ;
 TGAZ . 'ESPNEULE' = 'N2  ' ;
 TGAZ . 'ESPEULE'  = 'MOTS' 'H2  ' 'O2  ' ;
 TGAZ . 'NORD' = 0 ;
 TGAZ . 'N2  ' = 'TABLE' ;
 TGAZ . 'H2  ' = 'TABLE' ;
 TGAZ . 'O2  ' = 'TABLE' ;
 TGAZ . 'CP  ' = 'TABLE' ;
 TGAZ . 'CV  ' = 'TABLE' ;
**** Regressions polynomials
 TGAZ .  'H2  ' . 'A' = 'PROG' CVH ; 
 TGAZ .  'O2  ' . 'A' = 'PROG' CVO ; 
 TGAZ .  'N2  ' . 'A' = 'PROG' CVN ; 
 TGAZ .  'CV' . 'H2  ' = CVH ; 
 TGAZ .  'CV' . 'O2  ' = CVO ; 
 TGAZ .  'CV' . 'N2  ' = CVN ; 
**** R (J/Kg/K)
 TGAZ .  'H2  ' . 'R' = ('/' RGP MMH) ;
 TGAZ .  'O2  ' . 'R' = ('/' RGP MMO) ;
 TGAZ .  'N2  ' . 'R' = ('/' RGP MMN) ;
 TGAZ .  'CP' . 'H2  ' = CPH ;
 TGAZ .  'CP' . 'O2  ' = CPO ;
 TGAZ .  'CP' . 'N2  ' = CPN ;
**** "Enthalpies" (ou energies) de formations a OK (J/Kg)
 TGAZ .  'H2  ' . 'H0K' = H0KH ;
 TGAZ .  'O2  ' . 'H0K' = H0KO ;
 TGAZ .  'N2  ' . 'H0K' = H0KN ;
**** Coeff diffusion
 TGAZ .  'H2  ' . 'CDIFF' = MUH ;
 TGAZ .  'O2  ' . 'CDIFF' = MUO ;
 TGAZ .  'N2  ' . 'CDIFF' = MUN ;
*
 VN0 PRES TMPR FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN0 GN0 RETN0
   ('+' RYH20 RYO20) ;
 ERR1 = '/' ('MAXIMUM' (PRES '-' PRESG) 'ABS')
            ('MAXIMUM' PRESG) ;
 ERR2 = '/' ('MAXIMUM' (GN0 '-' (RN0 '*' VN0
             ('MOTS' 'SCAL' 'SCAL' 'SCAL')
             ('MOTS' 'UX' 'UY' 'UZ') ('MOTS' 'UX' 'UY' 'UZ'))) 'ABS')
            ('MAXIMUM' GN0) ;
 ERR3 = '/' ('MAXIMUM' (TMPR '-' TN0) 'ABS')
            ('MAXIMUM' TN0) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 ERR4  = '/' ('MAXIMUM' (FMH2 '-' YH20) 'ABS')
             ('MAXIMUM' YH20) ;
 ERR4B = '/' ('MAXIMUM' (FMO2 '-' YO20) 'ABS')
             ('MAXIMUM' YO20) ;
 ERR5 = '/' ('MAXIMUM' (GAM2 '-' GAMMAG) 'ABS')
            ('MAXIMUM' GAMMAG) ;
 'MESSAGE' ('CHAINE' 'ERR1=' ERR1) ;
 'MESSAGE' ('CHAINE' 'ERR2=' ERR2) ;
 'MESSAGE' ('CHAINE' 'ERR3=' ERR3) ;
 'MESSAGE' ('CHAINE' 'ERR4=' ERR4) ;
 'MESSAGE' ('CHAINE' 'ERR4B=' ERR4B) ;
 'MESSAGE' ('CHAINE' 'ERR5=' ERR5) ;
 'SI' (('MAXIMUM' ('PROG' ERR1 ERR2 ERR3 ERR4 ERR4B ERR5) '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' ;
*; Calcul du résidu et du jacobien de référence
* Les valeurs en $DOM1 'CENTRE'
 PCON = ('DOMA' $DOM1 'CENTRE') 'POIN' 1 ;
 ro0 = 'EXTRAIRE' RN0 PCON 'SCAL' ;
 gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
 gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
 ryh0 = 'EXTRAIRE' RYH20 PCON 'H2  ' ;
 ryo0 = 'EXTRAIRE' RYO20 PCON 'O2  ' ;
 ret0 = 'EXTRAIRE' RETN0 PCON 'SCAL' ;
 RN  =  'COPIER' RN0 ;
 GN  =  'COPIER' GN0  ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
   ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRYH20 CGRYH20 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRYO20 CGRYO20 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRYN20 CGRYN20 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRYH20 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRYH20 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRYO20 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRYO20 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRYN20 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRYN20 ;
*
 JACO CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
***********************
***** Le residu *******
***********************

 DEBRN0   = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
 DEBGNX0  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
 DEBGNY0  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
 DEBGNZ0  = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRETN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYHN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*; Test1 : J(DOM1->DOM1)
'MESSAGE' '************************' ;
'MESSAGE' ' Test1 : J(DOM1->DOM1)  ' ;
'MESSAGE' '************************' ;
* On compare le jacobien et la variation du residu
* en $DOM1 'CENTRE' par rapport à une variation
* infinitésimal en $DOM1 'CENTRE'
*
*;; Extraction des valeurs du jacobien de référence
 UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
       'RYO2' 0.0 'NATURE' 'DISCRET') 'ET' 
      ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 7 'RN' 1.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0 'NATURE' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 7 'RN' 0.0
      'RUXN' 1.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 7 'RN' 0.0
      'RUXN' 0.0 'RUYN' 1.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET')  ;
 UNGZ = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 7 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 1.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET')  ;
 UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 7 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 1.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNRYH = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 7 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 1.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNRYO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 7 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 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 ;
 DDRYH = 'KOPS' JACO 'MULT' UNRYH ;
 DDRYO = 'KOPS' JACO 'MULT' UNRYO ;

 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' ;
 DRYHR = 'EXTRAIRE' DDRHO PCON 'RYH2' ;
 DRYOR = 'EXTRAIRE' DDRHO PCON 'RYO2' ;

 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' ;
 DRYHGX = 'EXTRAIRE' DDGX PCON 'RYH2' ;
 DRYOGX = 'EXTRAIRE' DDGX PCON 'RYO2' ;

 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' ;
 DRYHGY = 'EXTRAIRE' DDGY PCON 'RYH2' ;
 DRYOGY = 'EXTRAIRE' DDGY PCON 'RYO2' ;

 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' ;
 DRYHGZ = 'EXTRAIRE' DDGZ PCON 'RYH2' ;
 DRYOGZ = 'EXTRAIRE' DDGZ PCON 'RYO2' ;

 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' ;
 DRYHRET = 'EXTRAIRE' DDRET PCON 'RYH2' ;
 DRYORET = 'EXTRAIRE' DDRET PCON 'RYO2' ;

 DRRYO   = 'EXTRAIRE' DDRYO PCON  'RN' ;
 DGXRYO = 'EXTRAIRE' DDRYO PCON 'RUXN' ;
 DGYRYO = 'EXTRAIRE' DDRYO PCON 'RUYN' ;
 DGZRYO = 'EXTRAIRE' DDRYO PCON 'RUZN' ;
 DRETRYO = 'EXTRAIRE' DDRYO PCON 'RETN' ;
 DRYHRYO = 'EXTRAIRE' DDRYO PCON 'RYH2' ;
 DRYORYO = 'EXTRAIRE' DDRYO PCON 'RYO2' ;

 DRRYH   = 'EXTRAIRE' DDRYH PCON  'RN' ;
 DGXRYH = 'EXTRAIRE' DDRYH PCON 'RUXN' ;
 DGYRYH = 'EXTRAIRE' DDRYH PCON 'RUYN' ;
 DGZRYH = 'EXTRAIRE' DDRYH PCON 'RUZN' ;
 DRETRYH = 'EXTRAIRE' DDRYH PCON 'RETN' ;
 DRYHRYH = 'EXTRAIRE' DDRYH PCON 'RYH2' ;
 DRYORYH = 'EXTRAIRE' DDRYH PCON 'RYO2' ;
*;; Test 1.1 J(ref) et J(appr) pour ro1 = ro0 * (1.'+' DELTA)
'MESSAGE' 'Test 1.1 ro1 = ro0 + delta ' ;
*;;; Calcul du residu pour ro1 = ro0 * (1.'+' DELTA)
 ro1 = ro0 '*' (1 '+' DELTA) ;
 RNDOM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' ro1 ;
 RN  = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RN0 RNDOM1 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 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) ;
 DRYHRN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ro0) ;
 DRYORN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ro0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRR DRRN ;
 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 1';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXR DGXRN ;
 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 2';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYR DGYRN ;
 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 3';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZR DGZRN ;
 'MESSAGE' ('CHAINE' 'DGZRN=' DGZRN ' DGZR=' DGZR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 4';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETR DRETRN ;
 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 5';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHR DRYHRN ;
 'MESSAGE' ('CHAINE' 'DRYHRN=' DRYHRN ' DRYHR=' DRYHR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 6';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYOR DRYORN ;
 'MESSAGE' ('CHAINE' 'DRYORN=' DRYORN ' DRYOR=' DRYOR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 7';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 1.2 J(ref) et J(appr) pour gnx1 = gnx0 * (1.'+' DELTA)
'MESSAGE' 'Test 1.2 gnx1 = gnx0 + delta ' ;
*;;; Calcul du residu pour gnx1 = gnx0 * (1.'+' DELTA)
 gnx1 = gnx0 '*' (1 '+' DELTA) ;
 GNDOM1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (gnx1 gny0 gnz0) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM1 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gnx0) ;
 DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gnx0) ;
 DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gnx0) ;
 DGZGXN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' gnx0) ;
 DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gnx0) ;
 DRYHGXN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gnx0) ;
 DRYOGXN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gnx0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRGX DRGXN ;
 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 8';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXGX DGXGXN ;
 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 9';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYGX DGYGXN ;
 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 10';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZGX DGZGXN ;
 'MESSAGE' ('CHAINE' 'DGZGXN=' DGZGXN ' DGZGX=' DGZGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 11';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETGX DRETGXN ;
 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX ' ERR=' ERR1);
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 12';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHGX DRYHGXN ;
 'MESSAGE' ('CHAINE' 'DRYHGXN=' DRYHGXN ' DRYHGX=' DRYHGX ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 13';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYOGX DRYOGXN ;
 'MESSAGE' ('CHAINE' 'DRYOGXN=' DRYOGXN ' DRYOGX=' DRYOGX ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 14';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 1.3 J(ref) et J(appr) pour gny1 = gny0 * (1.'+' DELTA)
'MESSAGE' 'Test 1.3 gny1 = gny0 + delta ' ;
*;;; Calcul du residu pour gny1 = gny0 * (1.'+' DELTA)
 gny1 = gny0 '*' (1 '+' DELTA) ;
 GNDOM1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (gnx0 gny1 gnz0) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM1 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gny0) ;
 DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gny0) ;
 DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gny0) ;
 DGZGYN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' gny0) ;
 DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gny0) ;
 DRYHGYN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gny0) ;
 DRYOGYN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gny0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRGY DRGYN ;
 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 15';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXGY DGXGYN ;
 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 16';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYGY DGYGYN ;
 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 17';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZGY DGZGYN ;
 'MESSAGE' ('CHAINE' 'DGZGYN=' DGZGYN ' DGZGY=' DGZGY ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 18';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETGY DRETGYN ;
 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY ' ERR=' ERR1);
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 19';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHGY DRYHGYN ;
 'MESSAGE' ('CHAINE' 'DRYHGYN=' DRYHGYN ' DRYHGY=' DRYHGY ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 20';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYOGY DRYOGYN ;
 'MESSAGE' ('CHAINE' 'DRYOGYN=' DRYOGYN ' DRYOGY=' DRYOGY ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 21';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 1.4 J(ref) et J(appr) pour gnz1 = gnz0 * (1.'+' DELTA)
'MESSAGE' 'Test 1.4 gnz1 = gnz0 + delta ' ;
*;;; Calcul du residu pour gnz1 = gnz0 * (1.'+' DELTA)
 gnz1 = gnz0 '*' (1 '+' DELTA) ;
 GNDOM1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (gnx0 gny0 gnz1) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM1 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 DRGZN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gnz0) ;
 DGXGZN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gnz0) ;
 DGYGZN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gnz0) ;
 DGZGZN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' gnz0) ;
 DRETGZN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gnz0) ;
 DRYHGZN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gnz0) ;
 DRYOGZN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gnz0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRGZ DRGZN ;
 'MESSAGE' ('CHAINE' 'DRGZN=' DRGZN ' DRGZ=' DRGZ ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 22';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXGZ DGXGZN ;
 'MESSAGE' ('CHAINE' 'DGXGZN=' DGXGZN ' DGXGZ=' DGXGZ ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 23';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYGZ DGYGZN ;
 'MESSAGE' ('CHAINE' 'DGYGZN=' DGYGZN ' DGYGZ=' DGYGZ ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 24';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZGZ DGZGZN ;
 'MESSAGE' ('CHAINE' 'DGZGZN=' DGZGZN ' DGZGZ=' DGZGZ ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 25';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETGZ DRETGZN ;
 'MESSAGE' ('CHAINE' 'DRETGZN=' DRETGZN ' DRETGZ=' DRETGZ ' ERR=' ERR1);
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 26';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHGZ DRYHGZN ;
 'MESSAGE' ('CHAINE' 'DRYHGZN=' DRYHGZN ' DRYHGZ=' DRYHGZ ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 27';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYOGZ DRYOGZN ;
 'MESSAGE' ('CHAINE' 'DRYOGZN=' DRYOGZN ' DRYOGZ=' DRYOGZ ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 28';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 1.5 J(ref) et J(appr) pour ret1 = ret0 * (1.'+' DELTA)
'MESSAGE' 'Test 1.5 ret1 = ret0 + delta ' ;
*;;; Calcul du residu pour ret1 = ret0 * (1.'+' DELTA)
 ret1 = ret0 '*' (1 '+' DELTA) ;
 RETNDOM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' ret1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM1 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 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) ;
 DRYHRETN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ret0) ;
 DRYORETN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ret0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRRET DRRETN ;
 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 29';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXRET DGXRETN ;
 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 30';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYRET DGYRETN ;
 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 31';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZRET DGZRETN ;
 'MESSAGE' ('CHAINE' 'DGZRETN=' DGZRETN ' DGZRET=' DGZRET ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 32';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETRET DRETRETN ;
 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET
     ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO3) ;
      'MESSAGE' 'Problem 33';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHRET DRYHRETN ;
 'MESSAGE' ('CHAINE' 'DRYHRETN=' DRYHRETN ' DRYHRET=' DRYHRET
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 34';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYORET DRYORETN ;
 'MESSAGE' ('CHAINE' 'DRYORETN=' DRYORETN ' DRYORET=' DRYORET
     ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 35';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 1.6 J(ref) et J(appr) pour ryh1 = ryh0 * (1.'+' DELTA)
'MESSAGE' 'Test 1.6 ryh1 = ryh0 + delta ' ;
*;;; Calcul du residu pour ryh1 = ryh0 * (1.'+' DELTA)
 ryh1 = ryh0 '*' (1 '+' DELTA) ;
 RYHDOM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' ryh1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'NOMC' ('KCHT' $DOMTOT  'SCAL' 'CENTRE' ('NOMC' RYH20 'SCAL')
                       RYHDOM1) 'H2  ' ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 DRRYHN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryh0) ;
 DGXRYHN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryh0) ;
 DGYRYHN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ryh0) ;
 DGZRYHN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ryh0) ;
 DRETRYHN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ryh0) ;
 DRYHRYHN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ryh0) ;
 DRYORYHN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ryh0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRRYH DRRYHN ;
 'MESSAGE' ('CHAINE' 'DRRYHN=' DRRYHN ' DRRYH=' DRRYH ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 36';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXRYH DGXRYHN ;
 'MESSAGE' ('CHAINE' 'DGXRYHN=' DGXRYHN ' DGXRYH=' DGXRYH ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 37';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYRYH DGYRYHN ;
 'MESSAGE' ('CHAINE' 'DGYRYHN=' DGYRYHN ' DGYRYH=' DGYRYH ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 38';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZRYH DGZRYHN ;
 'MESSAGE' ('CHAINE' 'DGZRYHN=' DGZRYHN ' DGZRYH=' DGZRYH ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 39';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETRYH DRETRYHN ;
 'MESSAGE' ('CHAINE' 'DRETRYHN=' DRETRYHN ' DRETRYH=' DRETRYH
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO3) ;
      'MESSAGE' 'Problem 40';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHRYH DRYHRYHN ;
 'MESSAGE' ('CHAINE' 'DRYHRYHN=' DRYHRYHN ' DRYHRYH=' DRYHRYH
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 41';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYORYH DRYORYHN ;
 'MESSAGE' ('CHAINE' 'DRYORYHN=' DRYORYHN ' DRYORYH=' DRYORYH
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 42';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 1.7 J(ref) et J(appr) pour ryo1 = ryo0 * (1.'+' DELTA)
'MESSAGE' 'Test 1.7 ryo1 = ryo0 + delta ' ;
*;;; Calcul du residu pour ryo1 = ryo0 * (1.'+' DELTA)
 ryo1 = ryo0 '*' (1 '+' DELTA) ;
 RYODOM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' ryo1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'NOMC' ('KCHT' $DOMTOT  'SCAL' 'CENTRE' ('NOMC' RYO20 'SCAL')
                       RYODOM1) 'O2  ' ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 DRRYON = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryo0) ;
 DGXRYON = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryo0) ;
 DGYRYON = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ryo0) ;
 DGZRYON = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ryo0) ;
 DRETRYON = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ryo0) ;
 DRYHRYON = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ryo0) ;
 DRYORYON = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ryo0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRRYO DRRYON ;
 'MESSAGE' ('CHAINE' 'DRRYON=' DRRYON ' DRRYO=' DRRYO ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 43';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXRYO DGXRYON ;
 'MESSAGE' ('CHAINE' 'DGXRYON=' DGXRYON ' DGXRYO=' DGXRYO ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 44';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYRYO DGYRYON ;
 'MESSAGE' ('CHAINE' 'DGYRYON=' DGYRYON ' DGYRYO=' DGYRYO ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 45';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZRYO DGZRYON ;
 'MESSAGE' ('CHAINE' 'DGZRYON=' DGZRYON ' DGZRYO=' DGZRYO ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 46';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETRYO DRETRYON ;
 'MESSAGE' ('CHAINE' 'DRETRYON=' DRETRYON ' DRETRYO=' DRETRYO
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO3) ;
      'MESSAGE' 'Problem 47';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHRYO DRYHRYON ;
 'MESSAGE' ('CHAINE' 'DRYHRYON=' DRYHRYON ' DRYHRYO=' DRYHRYO
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 48';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYORYO DRYORYON ;
 'MESSAGE' ('CHAINE' 'DRYORYON=' DRYORYON ' DRYORYO=' DRYORYO
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 49';
      'ERREUR' 5 ;
 'FINSI' ;
*; Test2: J(DOM27->DOM1)
'MESSAGE' '************************' ;
'MESSAGE' ' Test2 : J(DOM27->DOM1)  ' ;
'MESSAGE' '************************' ;
* On compare le jacobien et la variation du residu
* en $DOM1 'CENTRE' par rapport à une variation
* infinitésimal en $DOM27 'CENTRE'
*
*;; Extraction des valeurs du jacobien de référence
* Les valeurs en $DOM27 'CENTRE'
 PCELL = ('DOMA' $DOM27 'CENTRE') 'POIN' 1 ;
 ro0 = 'EXTRAIRE' RN0 PCELL 'SCAL' ;
 gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
 gnz0 = 'EXTRAIRE' GN0 PCELL 'UZ' ;
 ryh0 = 'EXTRAIRE' RYH20 PCELL 'H2  ' ;
 ryo0 = 'EXTRAIRE' RYO20 PCELL 'O2  ' ;
 ret0 = 'EXTRAIRE' RETN0 PCELL 'SCAL' ;
 UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
       'RYO2' 0.0 'NATURE' 'DISCRET') 'ET' 
      ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 7 'RN' 1.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0 'NATURE' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 7 'RN' 0.0
      'RUXN' 1.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 7 'RN' 0.0
      'RUXN' 0.0 'RUYN' 1.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET')  ;
 UNGZ = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 7 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 1.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET')  ;
 UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 7 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 1.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNRYH = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 7 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 1.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNRYO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       7 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0
         'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 7 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 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 ;
 DDRYH = 'KOPS' JACO 'MULT' UNRYH ;
 DDRYO = 'KOPS' JACO 'MULT' UNRYO ;

 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' ;
 DRYHR = 'EXTRAIRE' DDRHO PCON 'RYH2' ;
 DRYOR = 'EXTRAIRE' DDRHO PCON 'RYO2' ;

 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' ;
 DRYHGX = 'EXTRAIRE' DDGX PCON 'RYH2' ;
 DRYOGX = 'EXTRAIRE' DDGX PCON 'RYO2' ;

 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' ;
 DRYHGY = 'EXTRAIRE' DDGY PCON 'RYH2' ;
 DRYOGY = 'EXTRAIRE' DDGY PCON 'RYO2' ;

 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' ;
 DRYHGZ = 'EXTRAIRE' DDGZ PCON 'RYH2' ;
 DRYOGZ = 'EXTRAIRE' DDGZ PCON 'RYO2' ;

 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' ;
 DRYHRET = 'EXTRAIRE' DDRET PCON 'RYH2' ;
 DRYORET = 'EXTRAIRE' DDRET PCON 'RYO2' ;

 DRRYO   = 'EXTRAIRE' DDRYO PCON  'RN' ;
 DGXRYO = 'EXTRAIRE' DDRYO PCON 'RUXN' ;
 DGYRYO = 'EXTRAIRE' DDRYO PCON 'RUYN' ;
 DGZRYO = 'EXTRAIRE' DDRYO PCON 'RUZN' ;
 DRETRYO = 'EXTRAIRE' DDRYO PCON 'RETN' ;
 DRYHRYO = 'EXTRAIRE' DDRYO PCON 'RYH2' ;
 DRYORYO = 'EXTRAIRE' DDRYO PCON 'RYO2' ;

 DRRYH   = 'EXTRAIRE' DDRYH PCON  'RN' ;
 DGXRYH = 'EXTRAIRE' DDRYH PCON 'RUXN' ;
 DGYRYH = 'EXTRAIRE' DDRYH PCON 'RUYN' ;
 DGZRYH = 'EXTRAIRE' DDRYH PCON 'RUZN' ;
 DRETRYH = 'EXTRAIRE' DDRYH PCON 'RETN' ;
 DRYHRYH = 'EXTRAIRE' DDRYH PCON 'RYH2' ;
 DRYORYH = 'EXTRAIRE' DDRYH PCON 'RYO2' ;
*;; Test 2.1 J(ref) et J(appr) pour ro1 = ro0 * (1.'+' DELTA)
'MESSAGE' 'Test 2.1 ro1 = ro0 + delta ' ;
*;;; Calcul du residu pour ro1 = ro0 * (1.'+' DELTA)
 ro1 = ro0 '*' (1 '+' DELTA) ;
 RNDOM27 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ro1 ;
 RN  = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RN0 RNDOM27 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 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) ;
 DRYHRN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ro0) ;
 DRYORN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ro0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRR DRRN ;
 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 1';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXR DGXRN ;
 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 2';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYR DGYRN ;
 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 3';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZR DGZRN ;
 'MESSAGE' ('CHAINE' 'DGZRN=' DGZRN ' DGZR=' DGZR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 4';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETR DRETRN ;
 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 5';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHR DRYHRN ;
 'MESSAGE' ('CHAINE' 'DRYHRN=' DRYHRN ' DRYHR=' DRYHR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 6';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYOR DRYORN ;
 'MESSAGE' ('CHAINE' 'DRYORN=' DRYORN ' DRYOR=' DRYOR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 7';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 2.2 J(ref) et J(appr) pour gnx1 = gnx0 * (1.'+' DELTA)
'MESSAGE' 'Test 2.2 gnx1 = gnx0 + delta ' ;
*;;; Calcul du residu pour gnx1 = gnx0 * (1.'+' DELTA)
 gnx1 = gnx0 '*' (1 '+' DELTA) ;
 GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx1 gny0 gnz0) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gnx0) ;
 DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gnx0) ;
 DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gnx0) ;
 DGZGXN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' gnx0) ;
 DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gnx0) ;
 DRYHGXN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gnx0) ;
 DRYOGXN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gnx0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRGX DRGXN ;
 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 8';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXGX DGXGXN ;
 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 9';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYGX DGYGXN ;
 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 10';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZGX DGZGXN ;
 'MESSAGE' ('CHAINE' 'DGZGXN=' DGZGXN ' DGZGX=' DGZGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 11';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETGX DRETGXN ;
 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX ' ERR=' ERR1);
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 12';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHGX DRYHGXN ;
 'MESSAGE' ('CHAINE' 'DRYHGXN=' DRYHGXN ' DRYHGX=' DRYHGX ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 13';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYOGX DRYOGXN ;
 'MESSAGE' ('CHAINE' 'DRYOGXN=' DRYOGXN ' DRYOGX=' DRYOGX ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 14';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 2.3 J(ref) et J(appr) pour gny1 = gny0 * (1.'+' DELTA)
'MESSAGE' 'Test 2.3 gny1 = gny0 + delta ' ;
*;;; Calcul du residu pour gny1 = gny0 * (1.'+' DELTA)
 gny1 = gny0 '*' (1 '+' DELTA) ;
 GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx0 gny1 gnz0) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gny0) ;
 DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gny0) ;
 DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gny0) ;
 DGZGYN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' gny0) ;
 DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gny0) ;
 DRYHGYN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gny0) ;
 DRYOGYN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gny0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRGY DRGYN ;
 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 15';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXGY DGXGYN ;
 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 16';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYGY DGYGYN ;
 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 17';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZGY DGZGYN ;
 'MESSAGE' ('CHAINE' 'DGZGYN=' DGZGYN ' DGZGY=' DGZGY ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 18';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETGY DRETGYN ;
 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY ' ERR=' ERR1);
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 19';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHGY DRYHGYN ;
 'MESSAGE' ('CHAINE' 'DRYHGYN=' DRYHGYN ' DRYHGY=' DRYHGY ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 20';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYOGY DRYOGYN ;
 'MESSAGE' ('CHAINE' 'DRYOGYN=' DRYOGYN ' DRYOGY=' DRYOGY ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 21';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 2.4 J(ref) et J(appr) pour gnz1 = gnz0 * (1.'+' DELTA)
'MESSAGE' 'Test 2.4 gnz1 = gnz0 + delta ' ;
*;;; Calcul du residu pour gnz1 = gnz0 * (1.'+' DELTA)
 gnz1 = gnz0 '*' (1 '+' DELTA) ;
 GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx0 gny0 gnz1) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 DRGZN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gnz0) ;
 DGXGZN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gnz0) ;
 DGYGZN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gnz0) ;
 DGZGZN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' gnz0) ;
 DRETGZN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gnz0) ;
 DRYHGZN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gnz0) ;
 DRYOGZN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gnz0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRGZ DRGZN ;
 'MESSAGE' ('CHAINE' 'DRGZN=' DRGZN ' DRGZ=' DRGZ ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 22';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXGZ DGXGZN ;
 'MESSAGE' ('CHAINE' 'DGXGZN=' DGXGZN ' DGXGZ=' DGXGZ ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 23';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYGZ DGYGZN ;
 'MESSAGE' ('CHAINE' 'DGYGZN=' DGYGZN ' DGYGZ=' DGYGZ ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 24';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZGZ DGZGZN ;
 'MESSAGE' ('CHAINE' 'DGZGZN=' DGZGZN ' DGZGZ=' DGZGZ ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 25';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETGZ DRETGZN ;
 'MESSAGE' ('CHAINE' 'DRETGZN=' DRETGZN ' DRETGZ=' DRETGZ ' ERR=' ERR1);
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 26';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHGZ DRYHGZN ;
 'MESSAGE' ('CHAINE' 'DRYHGZN=' DRYHGZN ' DRYHGZ=' DRYHGZ ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 27';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYOGZ DRYOGZN ;
 'MESSAGE' ('CHAINE' 'DRYOGZN=' DRYOGZN ' DRYOGZ=' DRYOGZ ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 28';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 2.5 J(ref) et J(appr) pour ret1 = ret0 * (1.'+' DELTA)
'MESSAGE' 'Test 2.5 ret1 = ret0 + delta ' ;
*;;; Calcul du residu pour ret1 = ret0 * (1.'+' DELTA)
 ret1 = ret0 '*' (1 '+' DELTA) ;
 RETDOM27 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ret1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETDOM27 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 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) ;
 DRYHRETN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ret0) ;
 DRYORETN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ret0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRRET DRRETN ;
 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 29';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXRET DGXRETN ;
 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 30';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYRET DGYRETN ;
 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 31';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZRET DGZRETN ;
 'MESSAGE' ('CHAINE' 'DGZRETN=' DGZRETN ' DGZRET=' DGZRET ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 32';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETRET DRETRETN ;
 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET
     ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO3) ;
      'MESSAGE' 'Problem 33';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHRET DRYHRETN ;
 'MESSAGE' ('CHAINE' 'DRYHRETN=' DRYHRETN ' DRYHRET=' DRYHRET
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 34';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYORET DRYORETN ;
 'MESSAGE' ('CHAINE' 'DRYORETN=' DRYORETN ' DRYORET=' DRYORET
     ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 35';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 2.6 J(ref) et J(appr) pour ryh1 = ryh0 * (1.'+' DELTA)
'MESSAGE' 'Test 2.6 ryh1 = ryh0 + delta ' ;
*;;; Calcul du residu pour ryh1 = ryh0 * (1.'+' DELTA)
 ryh1 = ryh0 '*' (1 '+' DELTA) ;
 RYHDOM27 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ryh1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'NOMC' ('KCHT' $DOMTOT  'SCAL' 'CENTRE' ('NOMC' RYH20 'SCAL')
                       RYHDOM27) 'H2  ' ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 DRRYHN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryh0) ;
 DGXRYHN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryh0) ;
 DGYRYHN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ryh0) ;
 DGZRYHN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ryh0) ;
 DRETRYHN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ryh0) ;
 DRYHRYHN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ryh0) ;
 DRYORYHN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ryh0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRRYH DRRYHN ;
 'MESSAGE' ('CHAINE' 'DRRYHN=' DRRYHN ' DRRYH=' DRRYH ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 36';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXRYH DGXRYHN ;
 'MESSAGE' ('CHAINE' 'DGXRYHN=' DGXRYHN ' DGXRYH=' DGXRYH ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 37';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYRYH DGYRYHN ;
 'MESSAGE' ('CHAINE' 'DGYRYHN=' DGYRYHN ' DGYRYH=' DGYRYH ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 38';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZRYH DGZRYHN ;
 'MESSAGE' ('CHAINE' 'DGZRYHN=' DGZRYHN ' DGZRYH=' DGZRYH ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 39';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETRYH DRETRYHN ;
 'MESSAGE' ('CHAINE' 'DRETRYHN=' DRETRYHN ' DRETRYH=' DRETRYH
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO3) ;
      'MESSAGE' 'Problem 40';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHRYH DRYHRYHN ;
 'MESSAGE' ('CHAINE' 'DRYHRYHN=' DRYHRYHN ' DRYHRYH=' DRYHRYH
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 41';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYORYH DRYORYHN ;
 'MESSAGE' ('CHAINE' 'DRYORYHN=' DRYORYHN ' DRYORYH=' DRYORYH
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 42';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 2.7 J(ref) et J(appr) pour ryo1 = ryo0 * (1.'+' DELTA)
'MESSAGE' 'Test 2.7 ryo1 = ryo0 + delta ' ;
*;;; Calcul du residu pour ryo1 = ryo0 * (1.'+' DELTA)
 ryo1 = ryo0 '*' (1 '+' DELTA) ;
 RYODOM27 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ryo1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'NOMC' ('KCHT' $DOMTOT  'SCAL' 'CENTRE' ('NOMC' RYO20 'SCAL')
                       RYODOM27) 'O2  ' ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' 'RYH2' 'RYO2' ;
 V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
    ('+' RYH2 RYO2) ;
 FMH2 = 'EXCO' 'H2' FMHO2 ;
 FMO2 = 'EXCO' 'O2' FMHO2 ;
 FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
 GRADT0 MCHAMT = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' T0 ;
 GRADV0 MCHAMV = 'PENT'  $DOMTOT  'FACE' 'DIAMANT' V0  ;
 GRFMH2 CGRFMH2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
 GRFMO2 CGRFMO2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
 GRFMN2 CGRFMN2 = 'PENT'  $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
 TGAZ .  'H2  ' . 'YK' =  FMH2 ;
 TGAZ .  'H2  ' . 'GRADYK' =  GRFMH2 ;
 TGAZ .  'H2  ' . 'CGRYK'  =  CGRFMH2 ;
 TGAZ .  'O2  ' . 'YK' =  FMO2 ;
 TGAZ .  'O2  ' . 'GRADYK' =  GRFMO2 ;
 TGAZ .  'O2  ' . 'CGRYK'  =  CGRFMO2 ;
 TGAZ .  'N2  ' . 'YK' =  FMN2 ;
 TGAZ .  'N2  ' . 'GRADYK' =  GRFMN2 ;
 TGAZ .  'N2  ' . 'CGRYK'  =  CGRFMN2 ;
*
 IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
    $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0  GRADT0 MCHAMV MCHAMT
    LISTINCO  ;
*;;; Extraction des composantes du résidu
***********************
***** 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) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 7) ;
*;;; Jacobien approché
 DRRYON = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryo0) ;
 DGXRYON = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryo0) ;
 DGYRYON = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ryo0) ;
 DGZRYON = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ryo0) ;
 DRETRYON = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ryo0) ;
 DRYHRYON = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ryo0) ;
 DRYORYON = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ryo0) ;
*;;; Comparaison Jacobien référence et approché
 ERR1 = CALCERR DRRYO DRRYON ;
 'MESSAGE' ('CHAINE' 'DRRYON=' DRRYON ' DRRYO=' DRRYO ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 43';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGXRYO DGXRYON ;
 'MESSAGE' ('CHAINE' 'DGXRYON=' DGXRYON ' DGXRYO=' DGXRYO ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 44';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGYRYO DGYRYON ;
 'MESSAGE' ('CHAINE' 'DGYRYON=' DGYRYON ' DGYRYO=' DGYRYO ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 45';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DGZRYO DGZRYON ;
 'MESSAGE' ('CHAINE' 'DGZRYON=' DGZRYON ' DGZRYO=' DGZRYO ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 46';
       'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRETRYO DRETRYON ;
 'MESSAGE' ('CHAINE' 'DRETRYON=' DRETRYON ' DRETRYO=' DRETRYO
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO3) ;
      'MESSAGE' 'Problem 47';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYHRYO DRYHRYON ;
 'MESSAGE' ('CHAINE' 'DRYHRYON=' DRYHRYON ' DRYHRYO=' DRYHRYO
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 48';
      'ERREUR' 5 ;
 'FINSI' ;

 ERR1 = CALCERR DRYORYO DRYORYON ;
 'MESSAGE' ('CHAINE' 'DRYORYON=' DRYORYON ' DRYORYO=' DRYORYO
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 49';
      'ERREUR' 5 ;
 'FINSI' ;
'FIN' bcl ; 
'MESSAGE' ('CHAINE' 'Tout sest bien passe') ;
'FIN' ;
 

 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer