Download lapn_impl_mel.dgibi

Back to the list

* fichier :  lapn_impl_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) ****
****                                                   ****
**** Methodes: DIAMANT                                 ****
****                                                   ****
**** A. BECCANTINI DRN/DMT/SEMT/LTMF    AOUT  2000     ****
**** S. GOUNAND    DEN/DM2S/SFME/LTMF   FEVRIER  2002  ****
***********************************************************
***********************************************************
*;; Options
 'OPTION'  'DIME' 2 ;
 'OPTION'  'ELEM' QUA4 ;
 '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;
 A1 = 1.0D0 0.0D0;
 A2 = 2.0D0 0.0D0;
 A3 = 3.0D0 0.0D0;
 A0A1 = A0 'DROIT' 1 A1;
 A1A2 = A1 'DROIT' 1 A2;
 A2A3 = A2 'DROIT'  1 A3;
 DOM1 = 'TRANSLATION' A0A1 1 (0.0 1.0) ;
 DOM2 = DOM1 'PLUS' (0.0 1.0) ;
 DOM3 = DOM2 'PLUS' (0.0 1.0) ;
 DOM4 = 'TRANSLATION' A1A2 1 (0.0 1.0) ;
 DOM5 = DOM4 'PLUS' (0.0 1.0) ;
 DOM6 = DOM5 'PLUS' (0.0 1.0) ;
 DOM7 = 'TRANSLATION' A2A3 1 (0.0 1.0) ; 
 DOM8 = DOM7 'PLUS' (0.0 1.0) ;
 DOM9 = DOM8 'PLUS' (0.0 1.0) ;
 DOM9 = DOM9 'COULEUR' 'ROUG ' ;
 DOM6 = DOM6 'COULEUR' 'VERT' ;
 DOM7 = DOM7 'COULEUR' 'JAUN' ;
 DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5 'ET'
          DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 ;
 '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') ;
 'FORME' CHPBRU ;

* DOM9 et DOM6 ont un point en commun
* DOM9 et DOM  n ont pas de points en commun

 $DOMTOT = 'MODELISER' DOMTOT 'EULER';

 $DOM6 = 'MODELISER'  DOM6 'EULER';
 $DOM7 = 'MODELISER'  DOM7 'EULER';
 $DOM9 = 'MODELISER'  DOM9 'EULER';

 TDOMTOT = 'DOMA'  $DOMTOT 'VF';
 
 TDOM6 = 'DOMA'  $DOM6 'VF';
 TDOM7 = 'DOMA'  $DOM7 'VF';
 TDOM9 = 'DOMA'  $DOM9 'VF';

 MDOM6 = TDOM6 . 'QUAF' ;
 MDOM7 = TDOM7 . 'QUAF' ;
 MDOM9 = TDOM9 . 'QUAF' ;          
 
**** old stuff  $DOMTOT = 'DOMA' DOMTOT ;

 MDOMTOT = TDOMTOT . 'QUAF' ;

 'ELIMINATION'  (MDOMTOT ET MDOM6) 0.0001 ;
 'ELIMINATION'  (MDOMTOT ET MDOM7) 0.0001 ;
 'ELIMINATION'  (MDOMTOT ET MDOM9) 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 ;
*  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 ;
  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');
 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')) ;
*;; Test 0 (Opérateur PRIM)
 ETHE = RN0 '*' CVG '*' TN0 ;     
 ECIN = 0.5D0 '*' RN0 '*' ((UXN0  '*' UXN0) '+' (UYN0  '*' UYN0)) ;
* 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')
             ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) '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 $DOM9 'CENTRE'
 PCON = ('DOMA' $DOM9 'CENTRE') 'POIN' 1 ;
 ro0 = 'EXTRAIRE' RN0 PCON 'SCAL' ;
 gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
 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' '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) ;
 DEBRETN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*; Test1 : J(DOM9->DOM9)
'MESSAGE' '************************' ;
'MESSAGE' ' Test1 : J(DOM9->DOM9)  ' ;
'MESSAGE' '************************' ;
* On compare le jacobien et la variation du residu
* en $DOM9 'CENTRE' par rapport à une variation
* infinitésimal en $DOM9 'CENTRE'
*
*;; Extraction des valeurs du jacobien de référence
 UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0
       'RYO2' 0.0 'NATURE' 'DISCRET') 'ET' 
      ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 1.0
      'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 0.0
      'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET')  ;
 UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNRYH = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 1.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNRYO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 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 ;    
 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' ;
 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' ;
 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' ;
 DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
 DRYHGY = 'EXTRAIRE' DDGY PCON 'RYH2' ;
 DRYOGY = 'EXTRAIRE' DDGY PCON 'RYO2' ;

 DRRET   = 'EXTRAIRE' DDRET PCON  'RN' ;
 DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
 DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
 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' ;
 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' ;
 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) ;
 RNDOM9 = 'KCHT' $DOM9 'SCAL' 'CENTRE' ro1 ;
 RN  = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RN0 RNDOM9 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
 DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
 DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (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 DRETR DRETRN ;
 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 4';
      'ERREUR' 5 ;
 'FINSI' ;

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

 ERR1 = CALCERR DRYOR DRYORN ;
 'MESSAGE' ('CHAINE' 'DRYORN=' DRYORN ' DRYOR=' DRYOR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 6';
      '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.D0 '+' DELTA) ; 
 GNDOM9 = 'KCHT' $DOM9 'VECT' 'CENTRE' (gnx1 gny0) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM9 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gnx0) ;
 DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gnx0) ;
 DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (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 ' DRR=' DRGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 7';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYOGX DRYOGXN ;
 'MESSAGE' ('CHAINE' 'DRYOGXN=' DRYOGXN ' DRYOGX=' DRYOGX ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 12';
      '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.D0 '+' DELTA) ; 
 GNDOM9 = 'KCHT' $DOM9 'VECT' 'CENTRE' (gnx0 gny1) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM9 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gny0) ;
 DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gny0) ;
 DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (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 13';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYOGY DRYOGYN ;
 'MESSAGE' ('CHAINE' 'DRYOGYN=' DRYOGYN ' DRYOGY=' DRYOGY ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 18';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 1.4 J(ref) et J(appr) pour ret1 = ret0 * (1.'+' DELTA)
'MESSAGE' 'Test 1.4 ret1 = ret0 + delta ' ;
*;;; Calcul du residu pour ret1 = ret0 * (1.'+' DELTA)
 ret1 = ret0 '*' (1.D0 '+' DELTA) ; 
 RETNDOM9 = 'KCHT' $DOM9 'SCAL' 'CENTRE' ret1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM9 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
 DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
 DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (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 19';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYORET DRYORETN ;
 'MESSAGE' ('CHAINE' 'DRYORETN=' DRYORETN ' DRYORET=' DRYORET
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 24';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 1.5 J(ref) et J(appr) pour ryh1 = ryh0 * (1.'+' DELTA)
'MESSAGE' 'Test 1.5 ryh1 = ryh0 + delta ' ;
*;;; Calcul du residu pour ryh1 = ryh0 * (1.'+' DELTA)
 ryh1 = ryh0 '*' (1 '+' DELTA) ;
 RYHDOM9 = 'KCHT' $DOM9 'SCAL' 'CENTRE' ryh1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'NOMC' ('KCHT' $DOMTOT  'SCAL' 'CENTRE' ('NOMC' RYH20 'SCAL')
                       RYHDOM9) 'H2  ' ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRYHN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryh0) ;
 DGXRYHN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryh0) ;
 DGYRYHN = (DEBGNY1 '-' DEBGNY0) '/' (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 25';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYORYH DRYORYHN ;
 'MESSAGE' ('CHAINE' 'DRYORYHN=' DRYORYHN ' DRYORYH=' DRYORYH
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 30';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 1.6 J(ref) et J(appr) pour ryo1 = ryo0 * (1.'+' DELTA)
'MESSAGE' 'Test 1.6 ryo1 = ryo0 + delta ' ;
*;;; Calcul du residu pour ryo1 = ryo0 * (1.'+' DELTA)
 ryo1 = ryo0 '*' (1 '+' DELTA) ;
 RYODOM9 = 'KCHT' $DOM9 'SCAL' 'CENTRE' ryo1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'NOMC' ('KCHT' $DOMTOT  'SCAL' 'CENTRE' ('NOMC' RYO20 'SCAL')
                       RYODOM9) 'O2  ' ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRYON = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryo0) ;
 DGXRYON = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryo0) ;
 DGYRYON = (DEBGNY1 '-' DEBGNY0) '/' (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 31';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYORYO DRYORYON ;
 'MESSAGE' ('CHAINE' 'DRYORYON=' DRYORYON ' DRYORYO=' DRYORYO
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 36';
      'ERREUR' 5 ;
 'FINSI' ;
*; Test2 : J(DOM6->DOM9)
'MESSAGE' '************************' ;
'MESSAGE' ' Test2 : J(DOM6->DOM9)  ' ;
'MESSAGE' '************************' ;
* On compare le jacobien et la variation du residu
* en $DOM9 . 'CENTRE' par rapport à une variation
* infinitésimal en $DOM6 . 'CENTRE'
*
*;; Extraction des valeurs du jacobien de référence
* Les valeurs en $DOM6 'CENTRE'
 PCELL = ('DOMA' $DOM6 'CENTRE') 'POIN' 1 ;
 ro0 = 'EXTRAIRE' RN0 PCELL 'SCAL' ;
 gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
 ryh0 = 'EXTRAIRE' RYH20 PCELL 'H2  ' ;
 ryo0 = 'EXTRAIRE' RYO20 PCELL 'O2  ' ;
 ret0 = 'EXTRAIRE' RETN0 PCELL 'SCAL' ;

 UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0
       'RYO2' 0.0 'NATURE' 'DISCRET') 'ET' 
      ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 1.0
      'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 0.0
      'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET')  ;
 UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNRYH = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 1.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNRYO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 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 ;    
 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' ;
 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' ;
 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' ;
 DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
 DRYHGY = 'EXTRAIRE' DDGY PCON 'RYH2' ;
 DRYOGY = 'EXTRAIRE' DDGY PCON 'RYO2' ;

 DRRET   = 'EXTRAIRE' DDRET PCON  'RN' ;
 DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
 DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
 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' ;
 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' ;
 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) ;
 RNDOM6 = 'KCHT' $DOM6 'SCAL' 'CENTRE' ro1 ;
 RN  = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RN0 RNDOM6 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
 DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
 DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (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 DRETR DRETRN ;
 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 4';
      'ERREUR' 5 ;
 'FINSI' ;

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

 ERR1 = CALCERR DRYOR DRYORN ;
 'MESSAGE' ('CHAINE' 'DRYORN=' DRYORN ' DRYOR=' DRYOR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTO2) ;
      'MESSAGE' 'Problem 6';
      '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.D0 '+' DELTA) ; 
 GNDOM6 = 'KCHT' $DOM6 'VECT' 'CENTRE' (gnx1 gny0) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM6 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gnx0) ;
 DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gnx0) ;
 DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (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 ' DRR=' DRGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 7';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYOGX DRYOGXN ;
 'MESSAGE' ('CHAINE' 'DRYOGXN=' DRYOGXN ' DRYOGX=' DRYOGX ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 12';
      '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.D0 '+' DELTA) ; 
 GNDOM6 = 'KCHT' $DOM6 'VECT' 'CENTRE' (gnx0 gny1) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM6 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gny0) ;
 DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gny0) ;
 DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (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 13';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYOGY DRYOGYN ;
 'MESSAGE' ('CHAINE' 'DRYOGYN=' DRYOGYN ' DRYOGY=' DRYOGY ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 18';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 2.4 J(ref) et J(appr) pour ret1 = ret0 * (1.'+' DELTA)
'MESSAGE' 'Test 2.4 ret1 = ret0 + delta ' ;
*;;; Calcul du residu pour ret1 = ret0 * (1.'+' DELTA)
 ret1 = ret0 '*' (1.D0 '+' DELTA) ; 
 RETNDOM6 = 'KCHT' $DOM6 'SCAL' 'CENTRE' ret1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM6 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
 DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
 DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (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 19';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYORET DRYORETN ;
 'MESSAGE' ('CHAINE' 'DRYORETN=' DRYORETN ' DRYORET=' DRYORET
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 24';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 2.5 J(ref) et J(appr) pour ryh1 = ryh0 * (1.'+' DELTA)
'MESSAGE' 'Test 2.5 ryh1 = ryh0 + delta ' ;
*;;; Calcul du residu pour ryh1 = ryh0 * (1.'+' DELTA)
 ryh1 = ryh0 '*' (1 '+' DELTA) ;
 RYHDOM6 = 'KCHT' $DOM6 'SCAL' 'CENTRE' ryh1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'NOMC' ('KCHT' $DOMTOT  'SCAL' 'CENTRE' ('NOMC' RYH20 'SCAL')
                       RYHDOM6) 'H2  ' ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRYHN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryh0) ;
 DGXRYHN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryh0) ;
 DGYRYHN = (DEBGNY1 '-' DEBGNY0) '/' (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 25';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYORYH DRYORYHN ;
 'MESSAGE' ('CHAINE' 'DRYORYHN=' DRYORYHN ' DRYORYH=' DRYORYH
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 30';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 2.6 J(ref) et J(appr) pour ryo1 = ryo0 * (1.'+' DELTA)
'MESSAGE' 'Test 2.6 ryo1 = ryo0 + delta ' ;
*;;; Calcul du residu pour ryo1 = ryo0 * (1.'+' DELTA)
 ryo1 = ryo0 '*' (1 '+' DELTA) ;
 RYODOM6 = 'KCHT' $DOM6 'SCAL' 'CENTRE' ryo1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'NOMC' ('KCHT' $DOMTOT  'SCAL' 'CENTRE' ('NOMC' RYO20 'SCAL')
                       RYODOM6) 'O2  ' ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRYON = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryo0) ;
 DGXRYON = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryo0) ;
 DGYRYON = (DEBGNY1 '-' DEBGNY0) '/' (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 31';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYORYO DRYORYON ;
 'MESSAGE' ('CHAINE' 'DRYORYON=' DRYORYON ' DRYORYO=' DRYORYO
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 36';
      'ERREUR' 5 ;
 'FINSI' ;
*; Test3 : J(DOM7->DOM9)
'MESSAGE' '************************' ;
'MESSAGE' ' Test3 : J(DOM7->DOM9)  ' ;
'MESSAGE' '************************' ;
* On compare le jacobien et la variation du residu
* en $DOM9 'CENTRE' par rapport à une variation
* infinitésimal en $DOM7 'CENTRE'
* Elle doit etre nulle car les deux cellules ne se touchent pas
*
*;; Extraction des valeurs du jacobien de référence
* Les valeurs en $DOM7 'CENTRE'
 PCELL = ('DOMA' $DOM7 'CENTRE') 'POIN' 1 ;
 ro0 = 'EXTRAIRE' RN0 PCELL 'SCAL' ;
 gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
 gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
 ryh0 = 'EXTRAIRE' RYH20 PCELL 'H2  ' ;
 ryo0 = 'EXTRAIRE' RYO20 PCELL 'O2  ' ;
 ret0 = 'EXTRAIRE' RETN0 PCELL 'SCAL' ;

 UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0
       'RYO2' 0.0 'NATURE' 'DISCRET') 'ET' 
      ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 1.0
      'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
       ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 0.0
      'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
          ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET')  ;
 UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNRYH = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 1.0 'RYO2' 0.0
        'NATURE' 'DISCRET') ;
 UNRYO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 
       6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
        'NATURE' 'DISCRET') 'ET'
        ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 0.0
      'RUXN' 0.0 'RUYN' 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 ;    
 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' ;
 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' ;
 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' ;
 DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
 DRYHGY = 'EXTRAIRE' DDGY PCON 'RYH2' ;
 DRYOGY = 'EXTRAIRE' DDGY PCON 'RYO2' ;

 DRRET   = 'EXTRAIRE' DDRET PCON  'RN' ;
 DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
 DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
 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' ;
 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' ;
 DRETRYH = 'EXTRAIRE' DDRYH PCON 'RETN' ;
 DRYHRYH = 'EXTRAIRE' DDRYH PCON 'RYH2' ;
 DRYORYH = 'EXTRAIRE' DDRYH PCON 'RYO2' ;
*;; Test 3.1 J(ref) et J(appr) pour ro1 = ro0 * (1.'+' DELTA)
'MESSAGE' 'Test 3.1 ro1 = ro0 + delta ' ;
*;;; Calcul du residu pour ro1 = ro0 * (1.'+' DELTA)
 ro1 = ro0 '*' (1 '+' DELTA) ;
 RNDOM7 = 'KCHT' $DOM7 'SCAL' 'CENTRE' ro1 ;
 RN  = 'KCHT' $DOMTOT   'SCAL' 'CENTRE' RN0 RNDOM7 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
 DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
 DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (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 > ERRZER) ;
      'MESSAGE' 'Problem 2';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

 ERR1 = CALCERR DRYOR DRYORN ;
 'MESSAGE' ('CHAINE' 'DRYORN=' DRYORN ' DRYOR=' DRYOR ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 6';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 3.2 J(ref) et J(appr) pour gnx1 = gnx0 * (1.'+' DELTA)
'MESSAGE' 'Test 3.2 gnx1 = gnx0 + delta ' ;
*;;; Calcul du residu pour gnx1 = gnx0 * (1.'+' DELTA)
 gnx1 = gnx0 '*' (1.D0 '+' DELTA) ; 
 GNDOM7 = 'KCHT' $DOM7 'VECT' 'CENTRE' (gnx1 gny0) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM7 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gnx0) ;
 DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gnx0) ;
 DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (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 ' DRR=' DRGX ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 7';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYOGX DRYOGXN ;
 'MESSAGE' ('CHAINE' 'DRYOGXN=' DRYOGXN ' DRYOGX=' DRYOGX ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 12';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 3.3 J(ref) et J(appr) pour gny1 = gny0 * (1.'+' DELTA)
'MESSAGE' 'Test 3.3 gny1 = gny0 + delta ' ;
*;;; Calcul du residu pour gny1 = gny0 * (1.'+' DELTA)
 gny1 = gny0 '*' (1.D0 '+' DELTA) ; 
 GNDOM7 = 'KCHT' $DOM7 'VECT' 'CENTRE' (gnx0 gny1) ;
 RN  = 'COPIER' RN0 ;
 GN  = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM7 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gny0) ;
 DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gny0) ;
 DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (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 13';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYOGY DRYOGYN ;
 'MESSAGE' ('CHAINE' 'DRYOGYN=' DRYOGYN ' DRYOGY=' DRYOGY ' ERR=' ERR1);
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 18';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 3.4 J(ref) et J(appr) pour ret1 = ret0 * (1.'+' DELTA)
'MESSAGE' 'Test 3.4 ret1 = ret0 + delta ' ;
*;;; Calcul du residu pour ret1 = ret0 * (1.'+' DELTA)
 ret1 = ret0 '*' (1.D0 '+' DELTA) ; 
 RETNDOM7 = 'KCHT' $DOM7 'SCAL' 'CENTRE' ret1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM7 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
 DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
 DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (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 19';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYORET DRYORETN ;
 'MESSAGE' ('CHAINE' 'DRYORETN=' DRYORETN ' DRYORET=' DRYORET
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 24';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 3.5 J(ref) et J(appr) pour ryh1 = ryh0 * (1.'+' DELTA)
'MESSAGE' 'Test 3.5 ryh1 = ryh0 + delta ' ;
*;;; Calcul du residu pour ryh1 = ryh0 * (1.'+' DELTA)
 ryh1 = ryh0 '*' (1 '+' DELTA) ;
 RYHDOM7 = 'KCHT' $DOM7 'SCAL' 'CENTRE' ryh1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'NOMC' ('KCHT' $DOMTOT  'SCAL' 'CENTRE' ('NOMC' RYH20 'SCAL')
                       RYHDOM7) 'H2  ' ;
 RYO2 = 'COPIER' RYO20 ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRYHN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryh0) ;
 DGXRYHN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryh0) ;
 DGYRYHN = (DEBGNY1 '-' DEBGNY0) '/' (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 25';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

 ERR1 = CALCERR DRYORYH DRYORYHN ;
 'MESSAGE' ('CHAINE' 'DRYORYHN=' DRYORYHN ' DRYORYH=' DRYORYH
    ' ERR=' ERR1) ;
 'SI' (ERR1 > ERRZER) ;
      'MESSAGE' 'Problem 30';
      'ERREUR' 5 ;
 'FINSI' ;
*;; Test 3.6 J(ref) et J(appr) pour ryo1 = ryo0 * (1.'+' DELTA)
'MESSAGE' 'Test 3.6 ryo1 = ryo0 + delta ' ;
*;;; Calcul du residu pour ryo1 = ryo0 * (1.'+' DELTA)
 ryo1 = ryo0 '*' (1 '+' DELTA) ;
 RYODOM7 = 'KCHT' $DOM7 'SCAL' 'CENTRE' ryo1 ;
 RN  = 'COPIER' RN0 ;
 GN  = 'COPIER' GN0 ;
 RETN = 'COPIER' RETN0 ;
 RYH2 = 'COPIER' RYH20 ;
 RYO2 = 'NOMC' ('KCHT' $DOMTOT  'SCAL' 'CENTRE' ('NOMC' RYO20 'SCAL')
                       RYODOM7) 'O2  ' ;
 LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' '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) ;
 DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
 DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
 DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
*;;; Jacobien approché
 DRRYON = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryo0) ;
 DGXRYON = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryo0) ;
 DGYRYON = (DEBGNY1 '-' DEBGNY0) '/' (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 31';
      'ERREUR' 5 ;
 'FINSI' ;

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

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

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

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

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

 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer