Download konv_implbm.dgibi

Back to the list

* fichier :  konv_implbm.dgibi
***********************************************************
***********************************************************
**** APPROCHE VF "Cell-Centred Formulation" pour la    ****
**** solution des                                      **** 
**** Equations d'Euler pour un gaz parfait             ****
**** OPERATEURS PRIM, PRET, KONV                       ****
**** Implicit: calcul du jacobien du residu            ****
****                                                   ****
**** Cas gaz monoespece, "calorically perfect"         ****
****                                                   ****
**** Methodes: AUSMLM                                  ****
****                                                   ****
**** S.V. KUDRIAKOV  DM2S/SFME/LTMF    JUNE 2002       ****
***********************************************************
***********************************************************

 'OPTION'  'DIME' 2 ;
 'OPTION'  'ELEM' QUA4 ;
 'OPTION'  'ECHO'  0 ;
 'OPTION'  'TRAC' 'X' ;

*
*** GRAPH
*

 GRAPH = FAUX ;
* GRAPH = VRAI ;

 ERRTOL = 1.0D-4 ;

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


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

 
 DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5 'ET'
          DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 'ELIMINATION' 0.0001 ;
 
 $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 ;

***************************************************
***** Densité, pression, vitesse, gamma ***********
***************************************************

 RN0 = 'BRUI' 'BLAN' 'UNIF' 1.11 0.5 ('DOMA '$DOMTOT 'CENTRE') ;
 PN0 = 'BRUI' 'BLAN' 'UNIF' 1234.1 800 ('DOMA '$DOMTOT 'CENTRE') ;
 GAMMAN = 'MANUEL' 'CHPO' ('DOMA '$DOMTOT 'CENTRE') 1 'SCAL' 1.4
   'NATU' 'DISCRET' ;
 CSONN = (GAMMAN '*' PN0) '/' RN0 ;
 CSONN = 'KOPS' CSONN '**' 0.5 ;
 UXN0  = 0.05 *  CSONN ;
 UYN0  = 0.01  * CSONN ;
***************************************************
 UINF = 'MANUEL' 'CHPO' ('DOMA '$DOMTOT 'CENTRE') 1 'SCAL' 0.01
   'NATU' 'DISCRET' ;
 UPRI = 'MANUEL' 'CHPO' ('DOMA '$DOMTOT 'CENTRE') 1 'SCAL' 0.0001
   'NATU' 'DISCRET' ;   
*************************************************** 
 GN0 = ('NOMC' (RN0 '*' UXN0) 'UX' 'NATU' 'DISCRET') 'ET'
       ('NOMC' (RN0 '*' UYN0) 'UY' 'NATU' 'DISCRET') ;

 ECIN = 0.5D0 '*' RN0 '*' ((UXN0  '*' UXN0) '+' (UYN0  '*' UYN0)) ;
 RETN0  = 'NOMC' 'SCAL' ((PN0  '/' (GAMMAN  '-' 1.0)) '+' ECIN)
   'NATU' 'DISCRET' ;

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

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

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

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

*
**** Les variables conservative
*
*    RN0 (densité)
*    GN0 (quantité de mouvement)
*    RETN0 (énergie totale par unité de volume)
*
*    sont definiés
*

****************************************************
* Creating a mesh WITHOUT mesh 
**************************************************** 
  P1 = 0.5 0.5 ;
  ELP1 = 'MANU' 'POI1' P1 ;
  MELLIM = 'DIFF' ELP1 ELP1 ;
****************************************************
****************************************************
******* Calcul du jacobien et du residu   **********
****************************************************
****************************************************
*
* JACO est le jacobien
*
* DEBRN0 le residu concernant la densité
* DEBGNX0 le residu concernant la quantité de mouvement (axe x)
* DEBGNY0 le residu concernant la quantité de mouvement (axe y)
* DEBRETN0 le residu concernant l'enrgie totale par unité de volume
*

* Noms des variables

 NOMDEN = 'RN  ' ;
 NOMMOX = 'RUXN' ;
 NOMMOY = 'RUYN' ;
 NOMRET = 'RETN' ;

* Metode
 
 METO = 'AUSMPLM' ;
 
  
 LISTINCO = 'MOTS'  NOMDEN  NOMMOX  NOMMOY  NOMRET ;

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

 ROF VITF PF GAMF   =  'PRET' 'PERFMONO'  1 1
                           $DOMTOT RN0 VITESSE PRES GAMMAN ;
    
 CHPRES0 DT = 'KONV' 'VF' 'PERFMONO' 'RESI' METO
          $DOMTOT ROF VITF PF GAMF LISTINCO
          MELLIM UINF UPRI ;

 JACO = 'KONV' 'VF' 'PERFMONO' 'JACOCONS'
         $DOMTOT LISTINCO MELLIM 
         METO  RN0 VITESSE PRES GAMMAN
          UINF UPRI ;

           
 DEBRN0   = 'EXCO' NOMDEN CHPRES0 ;
 DEBGNX0  = 'EXCO' NOMMOX CHPRES0 ;
 DEBGNY0  = 'EXCO' NOMMOY CHPRES0 ;
 DEBRETN0 = 'EXCO' NOMRET CHPRES0 ;

*****************************************************
*****************************************************
******** PROCEDURES *********************************
*****************************************************
*****************************************************

*
* Derivé partielle du residu en un point par rapport
* aux variable en un autre point
*

 'DEBPROC' JACOVA JACO*'MATRIK' $MODE*'MMODEL' LISTINCO*'LISTMOTS'
    PPRIM*'POINT' PDUAL*'POINT' MOTPRI*'MOT' MOTDUA*'MOT';
    
*   PPRIM = point ou est localisé la variable primale
*   PDUAL = point ou est localisé la variable duale
*   MOTPRI = nom de la composante concernante la variable primale
*   MOTDUA = nom de la composante concernante la variable duale

    ELT1 = 'MANUEL' 'POI1' PPRIM ;
    NDIM = 'DIME' LISTINCO ;
    CHPUN = 'MANUEL' 'CHPO' ELT1 1 MOTPRI 1.0 'NATURE' 'DISCRET' ;
    'REPETER' BL1 NDIM ;
       MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ;
       CHPUN = CHPUN 'ET' ('MANUEL' 'CHPO' ('DOMA' $MODE 'CENTRE')
          1 MOTCEL 0.0 'NATURE' 'DISCRET') ;
    'FIN' BL1 ;
    D_DMOT = 'KOPS' JACO 'MULT' CHPUN ;
    SCAL = 'EXTRAIRE' D_DMOT PDUAL MOTDUA ;

 'FINPROC' SCAL  ;


 
 'DEBPROC' JACNUM $MODE*'MMODEL' NOMMET*'MOT' RN*'CHPOINT' GN*'CHPOINT'
    RETN*'CHPOINT' GAMN*'CHPOINT'
    LISTINCO*'LISTMOTS' MELLIM*'MAILLAGE' UINF*'CHPOINT' UPRI*'CHPOINT'
    PPRIM*'POINT' PDUAL*'POINT'
    MOTPRI*'MOT' MOTDUA*'MOT' EPSILON*'FLOTTANT';

*   PPRIM = point ou est localisé la variable primale
*   PDUAL = point ou est localisé la variable duale
*   MOTPRI = nom de la composante concernante la variable primale
*   MOTDUA = nom de la composante concernante la variable duale

*   Le valeur dans l'état non-perturbé en PDUAL ;
    
    RNCEL   = 'COPIER'  RN ;
    GNCEL   = 'COPIER'  GN ;
    RETNCEL = 'COPIER'  RETN ;

    VITESSE PRES   = 'PRIM' 'PERFMONO'  RNCEL GNCEL RETNCEL GAMN ;
    
    ROF VITF PF GAMF   =  'PRET' 'PERFMONO'  1 1
                           $MODE RNCEL VITESSE PRES GAMN ;
    
    CHPRES0 DT = 'KONV' 'VF' 'PERFMONO' 'RESI' NOMMET
          $MODE ROF VITF PF GAMF LISTINCO MELLIM UINF UPRI ;

*    'LISTE' DT ;      
          
    VAL0 = 'EXTRAIRE' CHPRES0 PDUAL MOTDUA ;
    
*   EPSILON = perturbation

*   Adimensionalisation

    dens0 = 'EXTRAIRE' RN PPRIM 'SCAL' ;
    
    VN PN = 'PRIM' 'PERFMONO' RN GN RETN GAMN ;
    CN2 = GAMN '*' (PN '/' RN) ;
    cson0 = ('EXTRAIRE' CN2 PPRIM 'SCAL') '**' 0.5 ;

    ret0 = ('EXTRAIRE' RETN PPRIM 'SCAL') '**' 0.5 ;

*   On etabli la variable à perturber

    NDIM = 'DIME' LISTINCO ;
    'REPETER' BL1 NDIM ;
       MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ;
       'SI' ('EGA' MOTCEL MOTPRI) ;
          ICEL = &BL1 ;
          'QUITTER' BL1 ;
       'FINSI' ;
    'FIN' BL1 ;
    
    'SI' (ICEL > NDIM) ;
       'MESSAGE' 'Procedure JACNUM' ;
       'MESSAGE' 'MOTPRI = ??? ';
       'ERREUR' 21 ;
    'FINSI' ;
    
    ELT1 = 'MANUEL' 'POI1' PPRIM ;
    
*   ICEL = 1 -> On perturbe la densité

    'SI' ('EGA' ICEL 1) ;
       DELTATOT = (EPSILON * dens0) ;
       RNCEL = ('MANUEL' 'CHPO' ELT1 1 'SCAL' DELTATOT
          'NATURE' 'DISCRET') 'ET' RN ;
       GNCEL = 'COPIER' GN ;
       RETNCEL = 'COPIER' RETN ;
    'FINSI' ;

*   ICEL = 2 -> On perturbe la q.d.m. long  l'ax x

    'SI' ('EGA' ICEL 2) ;
       DELTATOT = (EPSILON * dens0 * cson0) ;
       GNCEL = ('MANUEL' 'CHPO' ELT1 1 'UX' DELTATOT
          'NATURE' 'DISCRET') 'ET' GN ;
       RNCEL = 'COPIER' RN ;
       RETNCEL = 'COPIER' RETN ;
    'FINSI' ;

*   ICEL = 3 -> On perturbe la q.d.m. long  l'ax y

    'SI' ('EGA' ICEL 3) ;
       DELTATOT = (EPSILON * dens0 * cson0) ;
       GNCEL = ('MANUEL' 'CHPO' ELT1 1 'UY' DELTATOT
          'NATURE' 'DISCRET') 'ET' GN ;
       RNCEL = 'COPIER' RN ;
       RETNCEL = 'COPIER' RETN ;
    'FINSI' ;

*   ICEL = 4 -> On perturbe l'énergie totale

    'SI' ('EGA' ICEL 4) ;
       DELTATOT = (EPSILON * ret0) ;
       RETNCEL = ('MANUEL' 'CHPO' ELT1 1 'SCAL' DELTATOT
          'NATURE' 'DISCRET') 'ET' RETN ;
       RNCEL = 'COPIER' RN ;
       GNCEL = 'COPIER' GN ;
    'FINSI' ;

    VITESSE PRES   = 'PRIM' 'PERFMONO'  RNCEL GNCEL RETNCEL GAMN ;
    
    ROF VITF PF GAMF   =  'PRET' 'PERFMONO'  1 1
                           $MODE RNCEL VITESSE PRES GAMN ;
    
    CHPRES1 DT = 'KONV' 'VF' 'PERFMONO' 'RESI' NOMMET
          $MODE ROF VITF PF GAMF LISTINCO MELLIM UINF UPRI;

    VAL1 = 'EXTRAIRE' CHPRES1 PDUAL MOTDUA ;

 'FINPROC' ((VAL1 '-' VAL0) '/' DELTATOT)  ;

*****************************************************
*****************************************************
******** FIN PROCEDURES *****************************
*****************************************************
*****************************************************
*****************************************************


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

 PCEN9 = 'POIN' 1 ('DOMA' $DOM9 'CENTRE') ;

* Les grandeurs pour adimesionner les erreurs

 ro0 = 'EXTRAIRE' RN0 PCEN9 'SCAL' ;
    
 VN0 PN0 = 'PRIM' 'PERFMONO' RN0 GN0 RETN0 GAMMAN ;
 CN20 = GAMMAN '*' (PN0 '/' RN0) ;
 cson0 = ('EXTRAIRE' CN20 PCEN9 'SCAL') '**' 0.5 ;

 ret0 = ('EXTRAIRE' RETN0 PCEN9 'SCAL') '**' 0.5 ;

*
* Le jacobien exact. 
* DRR  = d(RES_ro)/dro (variable primale en PCEN9, variable duale en PCEN9) ;
* DGXR = d(RES_gx)/dro (variable primale en PCEN9, variable duale en PCEN9) ;
* ...

 DRR   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMDEN NOMDEN ;
 DGXR  = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMDEN NOMMOX ;
 DGYR  = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMDEN NOMMOY ;
 DRETR = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMDEN NOMRET ;

 DRGX   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMMOX NOMDEN ;
 DGXGX  = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMMOX NOMMOX ;
 DGYGX  = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMMOX NOMMOY ;
 DRETGX = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMMOX NOMRET ;

 DRGY   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMMOY NOMDEN ;
 DGXGY  = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMMOY NOMMOX ;
 DGYGY  = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMMOY NOMMOY ;
 DRETGY = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMMOY NOMRET ;

 DRRET   = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMRET NOMDEN ;
 DGXRET  = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMRET NOMMOX ;
 DGYRET  = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMRET NOMMOY ;
 DRETRET = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 NOMRET NOMRET ;

* Le jacobien numerique


 DELTA = 1.0D-6 ;
 
 DRRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMDEN NOMDEN DELTA ;
 DGXRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMDEN NOMMOX DELTA ;
 DGYRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMDEN NOMMOY DELTA ;
 DRETRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMDEN NOMRET DELTA ;
   
 DRGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMMOX NOMDEN DELTA ;
 DGXGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMMOX NOMMOX DELTA ;
 DGYGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMMOX NOMMOY DELTA ;
 DRETGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMMOX NOMRET DELTA ;

 DRGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMMOY NOMDEN DELTA ;
 DGXGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMMOY NOMMOX DELTA ;
 DGYGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMMOY NOMMOY DELTA ;
 DRETGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMMOY NOMRET DELTA ;

 DRRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMRET NOMDEN DELTA ;
 DGXRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMRET NOMMOX DELTA ;
 DGYRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
        UPRI PCEN9 PCEN9 NOMRET NOMMOY DELTA ;
 DRETRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM
 UINF UPRI PCEN9 PCEN9 NOMRET NOMRET DELTA ;

* Test des comparaisons jacobien exact-jacobien numerique
**************************************************************
 'SI' (('ABS'(DRR)) < DELTA) ;
    ERR1 = ('ABS' (DRRN '-' DRR)) ;
 'SINON' ;  
    ERR1 = ('ABS' (DRRN '-' DRR)) '/' ('ABS' (DRR)) ;
 'FINSI' ; 
***********************
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 1';
      'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DGXR)) < DELTA) ;
    ERR1 = ('ABS' (DGXRN '-' DGXR)) ;
 'SINON' ;  
    ERR1 = ('ABS' (DGXRN '-' DGXR)) '/' ('ABS' (DGXR)) ;
 'FINSI' ; 
***********************
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 2';
      'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DGYR)) < DELTA) ;
    ERR1 = ('ABS' (DGYRN '-' DGYR)) ;
 'SINON' ;  
    ERR1 = ('ABS' (DGYRN '-' DGYR)) '/' ('ABS' (DGYR)) ;
 'FINSI' ; 
************************
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 3';
       'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DRETR)) < DELTA) ;
    ERR1 = ('ABS' (DRETRN '-' DRETR)) ;
 'SINON' ;  
    ERR1 = ('ABS' (DRETRN '-' DRETR)) '/' ('ABS' (DRETR)) ;
 'FINSI' ;
**************************
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 4';
      'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DRGX)) < DELTA) ;
    ERR1 = ('ABS' (DRGXN '-' DRGX)) ;
 'SINON' ;   
    ERR1 = ('ABS' (DRGXN '-' DRGX)) '/' ('ABS' (DRGX))  ;
 'FINSI' ;
***************************
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 5';
      'ERREUR' 5 ;
 'FINSI' ;

*************************************************************
 'SI' (('ABS'(DGXGX)) < DELTA) ;
   ERR1 = ('ABS' (DGXGXN '-' DGXGX)) ;
 'SINON' ;
   ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' ('ABS' (DGXGX)) ;
 'FINSI' ;
*****************************   
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 6';
        'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DGYGX)) < DELTA) ;
    ERR1 = ('ABS' (DGYGXN '-' DGYGX)) ;
 'SINON' ;
    ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' ('ABS' (DGYGX)) ;
 'FINSI' ;
******************************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 7';
        'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DRETGX)) < DELTA) ;
    ERR1 = ('ABS' (DRETGXN '-' DRETGX)) ;
 'SINON' ;
    ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '/' ('ABS' (DRETGX)) ;
 'FINSI' ;
*******************************    
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 8';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DRGY)) < DELTA) ;
    ERR1 = ('ABS' (DRGYN '-' DRGY)) ;
 'SINON' ;
    ERR1 = ('ABS' (DRGYN '-' DRGY)) '/' ('ABS' (DRGY)) ;
 'FINSI' ;
*******************************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 9';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DGXGY)) < DELTA) ;
    ERR1 = ('ABS' (DGXGYN '-' DGXGY)) ;
 'SINON' ;
    ERR1 = ('ABS' (DGXGYN '-' DGXGY))  '/' ('ABS' (DGXGY)) ;
 'FINSI' ;
********************************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 10';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DGYGY)) < DELTA) ;
    ERR1 = ('ABS' (DGYGYN '-' DGYGY)) ;
 'SINON' ;
    ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' ('ABS' (DGYGY)) ;
 'FINSI' ;
***************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 11';
        'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DRETGY)) < DELTA) ;
    ERR1 = ('ABS' (DRETGYN '-' DRETGY)) ;
 'SINON' ;
    ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '/' ('ABS' (DRETGY)) ;
 'FINSI' ;
****************     
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 12';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DRRET)) < DELTA) ;
    ERR1 = ('ABS' (DRRETN '-' DRRET)) ;
 'SINON' ;
    ERR1 = ('ABS' (DRRETN '-' DRRET)) '/' ('ABS' (DRRET)) ;
 'FINSI' ;
*****************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 13';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DGXRET)) < DELTA) ;
    ERR1 = ('ABS' (DGXRETN '-' DGXRET)) ;
 'SINON' ;
    ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '/' ('ABS' (DGXRET)) ;
 'FINSI' ;
*****************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 14';
        'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DGYRET)) < DELTA) ;
    ERR1 = ('ABS' (DGYRETN '-' DGYRET)) ; 
 'SINON' ;
    ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '/' ('ABS' (DGYRET)) ;
 'FINSI' ;
*****************    
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 15';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DRETRET)) < DELTA) ;
    ERR1 = ('ABS' (DRETRETN '-' DRETRET)) ;
 'SINON' ;
    ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' ('ABS' (DRETRET)) ;
 'FINSI' ;
*****************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 16';
        'ERREUR' 5 ;
 'FINSI' ;

*****************************************************
*****************************************************
******* TEST2 ***************************************
*****************************************************
*****************************************************
*
* On compare le jacobien et la variation du residu
* en $DOM9 'CENTRE' par rapport à une variation
* infinitésimal en $DOM6 'CENTRE'
*

 PCEN6 = ('DOMA' $DOM6 'CENTRE') 'POIN' 1 ;
 
 ro0 = 'EXTRAIRE' RN0 PCEN6 'SCAL' ;
 cson0 = ('EXTRAIRE' CN20 PCEN6 'SCAL') '**' 0.5 ;
 ret0 = 'EXTRAIRE' RETN0 PCEN6 'SCAL' ;

*
* Le jacobien exact. 
*

 DRR   = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMDEN NOMDEN ;
 DGXR  = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMDEN NOMMOX ;
 DGYR  = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMDEN NOMMOY ;
 DRETR = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMDEN NOMRET ;

 DRGX   = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMMOX NOMDEN ;
 DGXGX  = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMMOX NOMMOX ;
 DGYGX  = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMMOX NOMMOY ;
 DRETGX = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMMOX NOMRET ;

 DRGY   = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMMOY NOMDEN ;
 DGXGY  = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMMOY NOMMOX ;
 DGYGY  = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMMOY NOMMOY ;
 DRETGY = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMMOY NOMRET ;

 DRRET   = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMRET NOMDEN ;
 DGXRET  = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMRET NOMMOX ;
 DGYRET  = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMRET NOMMOY ;
 DRETRET = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 NOMRET NOMRET ;

* Le jacobien numerique


 DELTA = 1.0D-6 ;
 
 DRRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMDEN NOMDEN DELTA ;
 DGXRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9 NOMDEN NOMMOX DELTA ;
 DGYRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMDEN NOMMOY DELTA ;
 DRETRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMDEN NOMRET DELTA ;
   
 DRGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMMOX NOMDEN DELTA ;
 DGXGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMMOX NOMMOX DELTA ;
 DGYGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMMOX NOMMOY DELTA ;
 DRETGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMMOX NOMRET DELTA ;

 DRGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMMOY NOMDEN DELTA ;
 DGXGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMMOY NOMMOX DELTA ;
 DGYGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMMOY NOMMOY DELTA ;
 DRETGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMMOY NOMRET DELTA ;

 DRRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMRET NOMDEN DELTA ;
 DGXRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMRET NOMMOX DELTA ;
 DGYRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF
   UPRI PCEN6 PCEN9  NOMRET NOMMOY DELTA ;
 DRETRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM
   UINF UPRI PCEN6   PCEN9  NOMRET NOMRET DELTA ;

* Test des comparaisons jacobien exact-jacobien numerique
**************************************************************
 'SI' (('ABS'(DRR)) < DELTA) ;
    ERR1 = ('ABS' (DRRN '-' DRR)) ;
 'SINON' ;  
    ERR1 = ('ABS' (DRRN '-' DRR)) '/' ('ABS' (DRR)) ;
 'FINSI' ; 
***********************
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 1';
      'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DGXR)) < DELTA) ;
    ERR1 = ('ABS' (DGXRN '-' DGXR)) ;
 'SINON' ;  
    ERR1 = ('ABS' (DGXRN '-' DGXR)) '/' ('ABS' (DGXR)) ;
 'FINSI' ; 
***********************
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 2';
      'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DGYR)) < DELTA) ;
    ERR1 = ('ABS' (DGYRN '-' DGYR)) ;
 'SINON' ;  
    ERR1 = ('ABS' (DGYRN '-' DGYR)) '/' ('ABS' (DGYR)) ;
 'FINSI' ; 
************************
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 3';
       'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DRETR)) < DELTA) ;
    ERR1 = ('ABS' (DRETRN '-' DRETR)) ;
 'SINON' ;  
    ERR1 = ('ABS' (DRETRN '-' DRETR)) '/' ('ABS' (DRETR)) ;
 'FINSI' ;
**************************
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 4';
      'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DRGX)) < DELTA) ;
    ERR1 = ('ABS' (DRGXN '-' DRGX)) ;
 'SINON' ;   
    ERR1 = ('ABS' (DRGXN '-' DRGX)) '/' ('ABS' (DRGX))  ;
 'FINSI' ;
***************************
 'SI' (ERR1 > ERRTOL) ;
      'MESSAGE' 'Problem 5';
      'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DGXGX)) < DELTA) ;
   ERR1 = ('ABS' (DGXGXN '-' DGXGX)) ;
 'SINON' ;
   ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' ('ABS' (DGXGX)) ;
 'FINSI' ;  
*****************************   
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 6';
        'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DGYGX)) < DELTA) ;
    ERR1 = ('ABS' (DGYGXN '-' DGYGX)) ;
 'SINON' ;
    ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' ('ABS' (DGYGX)) ;
 'FINSI' ;
******************************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 7';
        'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DRETGX)) < DELTA) ;
    ERR1 = ('ABS' (DRETGXN '-' DRETGX)) ;
 'SINON' ;
    ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '/' ('ABS' (DRETGX)) ;
 'FINSI' ;
*******************************    
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 8';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DRGY)) < DELTA) ;
    ERR1 = ('ABS' (DRGYN '-' DRGY)) ;
 'SINON' ;
    ERR1 = ('ABS' (DRGYN '-' DRGY)) '/' ('ABS' (DRGY)) ;
 'FINSI' ;
*******************************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 9';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DGXGY)) < DELTA) ;
    ERR1 = ('ABS' (DGXGYN '-' DGXGY)) ;
 'SINON' ;
    ERR1 = ('ABS' (DGXGYN '-' DGXGY))  '/' ('ABS' (DGXGY)) ;
 'FINSI' ;
********************************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 10';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DGYGY)) < DELTA) ;
    ERR1 = ('ABS' (DGYGYN '-' DGYGY)) ;
 'SINON' ;
    ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' ('ABS' (DGYGY)) ;
 'FINSI' ;
***************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 11';
        'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DRETGY)) < DELTA) ;
    ERR1 = ('ABS' (DRETGYN '-' DRETGY)) ;
 'SINON' ;
    ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '/' ('ABS' (DRETGY)) ;
 'FINSI' ;
****************     
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 12';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DRRET)) < DELTA) ;
    ERR1 = ('ABS' (DRRETN '-' DRRET)) ;
 'SINON' ;
    ERR1 = ('ABS' (DRRETN '-' DRRET)) '/' ('ABS' (DRRET)) ;
 'FINSI' ;
*****************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 13';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DGXRET)) < DELTA) ;
    ERR1 = ('ABS' (DGXRETN '-' DGXRET)) ;
 'SINON' ;
    ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '/' ('ABS' (DGXRET)) ;
 'FINSI' ;
*****************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 14';
        'ERREUR' 5 ;
 'FINSI' ;
*************************************************************
 'SI' (('ABS'(DGYRET)) < DELTA) ;
    ERR1 = ('ABS' (DGYRETN '-' DGYRET)) ; 
 'SINON' ;
    ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '/' ('ABS' (DGYRET)) ;
 'FINSI' ;
*****************    
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 15';
        'ERREUR' 5 ;
 'FINSI' ;
**************************************************************
 'SI' (('ABS'(DRETRET)) < DELTA) ;
    ERR1 = ('ABS' (DRETRETN '-' DRETRET)) ;
 'SINON' ;
    ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' ('ABS' (DRETRET)) ;
 'FINSI' ;
*****************
 'SI' (ERR1 > ERRTOL) ;
        'MESSAGE' 'Problem 16';
        'ERREUR' 5 ;
 'FINSI' ;

 
  
*****************************************************
*****************************************************
******* TEST3 ***************************************
*****************************************************
*****************************************************
*
* On observe que la variation du residu
* en $DOM9 'CENTRE' par rapport à une variation
* infinitésimal en $DOM7 'CENTRE' doit etre nulle.
* 

 PCEN7 = ('DOMA' $DOM7 'CENTRE') 'POIN' 1 ;
 
 ro0 = 'EXTRAIRE' RN0 PCEN7 'SCAL' ;
 cson0 = ('EXTRAIRE' CN20 PCEN7 'SCAL') '**' 0.5 ;
 ret0 = 'EXTRAIRE' RETN0 PCEN7 'SCAL' ;

*
* Le jacobien exact. 
*

 DRR   = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMDEN NOMDEN ;
 DGXR  = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMDEN NOMMOX ;
 DGYR  = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMDEN NOMMOY ;
 DRETR = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMDEN NOMRET ;

 DRGX   = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMMOX NOMDEN ;
 DGXGX  = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMMOX NOMMOX ;
 DGYGX  = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMMOX NOMMOY ;
 DRETGX = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMMOX NOMRET ;

 DRGY   = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMMOY NOMDEN ;
 DGXGY  = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMMOY NOMMOX ;
 DGYGY  = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMMOY NOMMOY ;
 DRETGY = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMMOY NOMRET ;

 DRRET   = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMRET NOMDEN ;
 DGXRET  = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMRET NOMMOX ;
 DGYRET  = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMRET NOMMOY ;
 DRETRET = JACOVA JACO $DOMTOT LISTINCO PCEN7 PCEN9 NOMRET NOMRET ;


 'SI' (('MAXIMUM'
    ('PROG'  DRR  DGXR  DGYR  DRETR
             DRGX DGXGX DGYGX DRETGX
             DRGY DGXGY DGYGY DRETGY
             DRRET DGXRET DGYRET DRETRET ) 'ABS' )
      > ERRTOL) ;
      'MESSAGE' 'Problem final' ;
      'ERREUR' 5 ;
 'FINSI' ;    

*****************************************************
*****************************************************
******* TEST4 ***************************************
*****************************************************
*****************************************************
* AUSMPLUS = AUSMPBM in the following cases:
*            1) VN0 > CN
*            2) UINF1 > CN
*            3) UINF2 > CN
*
* Let us start from RN0, VN0, PN0, GAMMAN
*

 ROF VITF PF GAMF   =  'PRET' 'PERFMONO'  1 1
                           $DOMTOT RN0 VN0 PN0 GAMMAN ;

 ECIN = 0.5D0 * RN0 * ('PSCAL' VN0 VN0 ('MOTS' 'UX' 'UY')
        ('MOTS' 'UX' 'UY')) ;
 RETN0  = 'NOMC' 'SCAL' ((PN0  '/' (GAMMAN  '-' 1.0)) '+' ECIN)
   'NATU' 'DISCRET' ;
 GN0 = VN0 '*' RN0 ('MOTS' 'UX' 'UY') ('MOTS' 'SCAL' 'SCAL')
    ('MOTS' 'UX' 'UY');
 CN0 = (GAMMAN '*' (PN0 '/' RN0)) '**' 0.5 ;

 UINF2 = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' 0.0 ;
 UINF1 = CN0 * 1.17 ;

 CHPRES DT = 'KONV' 'VF' 'PERFMONO' 'RESI' 'AUSMPLM'
          $DOMTOT ROF VITF PF GAMF LISTINCO
          MELLIM UINF1 UINF2 ;

 JACO = 'KONV' 'VF' 'PERFMONO' 'JACOCONS'
         $DOMTOT LISTINCO MELLIM 
         'AUSMPLM'  RN0 VN0 PN0 GAMMAN
         UINF2 UINF1 ;

 CHPRES1 DT = 'KONV' 'VF' 'PERFMONO' 'RESI' 'AUSMPLUS'
          $DOMTOT ROF VITF PF GAMF LISTINCO
          MELLIM ;

 JACO1 = 'KONV' 'VF' 'PERFMONO' 'JACOCONS'
         $DOMTOT LISTINCO MELLIM 
         'AUSMPLUS' RN0 VN0 PN0 GAMMAN ;

 ERRO = 'MAXIMUM' (CHPRES1 '-' CHPRES) 'ABS' ;

 'SI' (ERRO > ERRTOL) ;
      'MESSAGE' 'Problem final 2' ;
      'ERREUR' 5 ;
 'FINSI' ;

 UNTEST = ('NOMC' RN0 NOMDEN 'NATU' 'DISCRET') 'ET'
          ('NOMC' GN0 ('MOTS' 'UX' 'UY') ('MOTS' NOMMOX NOMMOY)
           'NATU' 'DISCRET') 'ET'
          ('NOMC' RETN0 NOMRET 'NATU' 'DISCRET') ;

 ERRO = 'MAXIMUM' (('KOPS' 'MULT' JACO UNTEST) '-'
                   ('KOPS' 'MULT' JACO1 UNTEST)) 'ABS' ;

 SI (ERRO > ERRTOL) ;           
      'MESSAGE' 'Problem final 2' ;
      'ERREUR' 5 ;
 'FINSI' ;

* Redefinition of VN0  
 
 CN0 = (GAMMAN '*' (PN0 '/' RN0)) '**' 0.5 ;
 VN0 = ('NOMC' (CN0 * 1.11) 'UX' 'NATU' 'DISCRET') 'ET'
       ('NOMC' (CN0 * 2.11) 'UY' 'NATU' 'DISCRET') ;
 
 ROF VITF PF GAMF   =  'PRET' 'PERFMONO'  1 1
                           $DOMTOT RN0 VN0 PN0 GAMMAN ;

 UINF2 = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' 0.0 ;
 UINF1 = UINF2 ;

 CHPRES DT = 'KONV' 'VF' 'PERFMONO' 'RESI' 'AUSMPLM'
          $DOMTOT ROF VITF PF GAMF LISTINCO
          MELLIM UINF1 UINF2 ;

 JACO = 'KONV' 'VF' 'PERFMONO' 'JACOCONS'
         $DOMTOT LISTINCO MELLIM 
         'AUSMPLM'  RN0 VN0 PN0 GAMMAN
         UINF2 UINF1 ;

 CHPRES1 DT = 'KONV' 'VF' 'PERFMONO' 'RESI' 'AUSMPLUS'
          $DOMTOT ROF VITF PF GAMF LISTINCO
          MELLIM ;

 JACO1 = 'KONV' 'VF' 'PERFMONO' 'JACOCONS'
         $DOMTOT LISTINCO MELLIM 
         'AUSMPLUS' RN0 VN0 PN0 GAMMAN ;

 ERRO = 'MAXIMUM' (CHPRES1 '-' CHPRES) 'ABS' ;

 'SI' (ERRO > ERRTOL) ;
      'MESSAGE' 'Problem final 2' ;
      'ERREUR' 5 ;
 'FINSI' ;

 UNTEST = ('NOMC' RN0 NOMDEN 'NATU' 'DISCRET') 'ET'
          ('NOMC' GN0 ('MOTS' 'UX' 'UY') ('MOTS' NOMMOX NOMMOY)
           'NATU' 'DISCRET') 'ET'
          ('NOMC' RETN0 NOMRET 'NATU' 'DISCRET') ;

 ERRO = 'MAXIMUM' (('KOPS' 'MULT' JACO UNTEST) '-'
                   ('KOPS' 'MULT' JACO1 UNTEST)) 'ABS' ;

 SI (ERRO > ERRTOL) ;           
      'MESSAGE' 'Problem final 3' ;
      'ERREUR' 5 ;
 'FINSI' ;

*****************************************************
*****************************************************
******* TEST5 ***************************************
*****************************************************
*****************************************************
* Primitive variables
* Redefinition of VN0  
*
 UINF2 = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' 0.0 ;
 UINF1 = UINF2 ;

 RN0 = 'BRUI' 'BLAN' 'UNIF' 1.11 0.5 ('DOMA' $DOMTOT 'CENTRE') ;
 PN0 = 'BRUI' 'BLAN' 'UNIF' 1234.1 800 ('DOMA' $DOMTOT 'CENTRE') ;
 GAMMAN = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' 1.4
   'NATU' 'DISCRET' ;
 CN0 = (GAMMAN '*' PN0) '/' RN0 ;
 CN0 = 'KOPS' CSONN '**' 0.5 ;
 VN0 = ('NOMC' (CN0 * 0.11) 'UX' 'NATU' 'DISCRET') 'ET'
       ('NOMC' (CN0 * 2.11) 'UY' 'NATU' 'DISCRET') ;

 LISTCONS = 'MOTS' 'RN' 'RUX' 'RUY' 'RETN' ;
 
 JACO  = 'KONV' 'VF' 'PERFMONO' 'JACOCONS'
          $DOMTOT LISTCONS METO RN0 VN0 PN0 GAMMAN
          UINF1 UINF2;
 
 LISTPRIM = 'MOTS' 'RN' 'UX' 'UY' 'PN' ;

 DUDV = 'PRIM' 'CONSPRIM' ('DOMA' $DOMTOT 'CENTRE')
         LISTCONS LISTPRIM RN0 VN0 PN0 GAMMAN ;

 JACOP = 'KONV' 'VF' 'PERFMONO' 'JACOPRIM'
         $DOMTOT LISTCONS LISTPRIM METO RN0 VN0 PN0 GAMMAN
         UINF1 UINF2; 

 UNP = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 4  'RN' 0.11
       'UX' 0.15 'UY' 0.19 'PN' 0.21 ;

*  JACOP * UNP = JACO * DUDV * UNP, \forall UNP       
         
 ERRO = 'MAXIMUM' (
     ('KOPS' 'MULT'  JACOP  UNP) '-' 
     ('KOPS' 'MULT'  JACO  ('KOPS' 'MULT' DUDV  UNP))
     ) ;

 'SI' (ERRO > ERRTOL) ;
      'MESSAGE' 'Problem final' ;
      'ERREUR' 5 ;
 'FINSI' ;

*

 UINF2 = CN0 ;
 UINF1 = UINF2 ;

 JACO  = 'KONV' 'VF' 'PERFMONO' 'JACOCONS'
          $DOMTOT LISTCONS METO RN0 VN0 PN0 GAMMAN
          UINF1 UINF2;
 
 JACOP = 'KONV' 'VF' 'PERFMONO' 'JACOPRIM'
         $DOMTOT LISTCONS LISTPRIM METO RN0 VN0 PN0 GAMMAN
         UINF1 UINF2; 

*  JACOP * UNP = JACO * DUDV * UNP, \forall UNP       
         
 ERRO = 'MAXIMUM' (
     ('KOPS' 'MULT'  JACOP  UNP) '-' 
     ('KOPS' 'MULT'  JACO  ('KOPS' 'MULT' DUDV  UNP))
     ) ;

 'SI' (ERRO > ERRTOL) ;
      'MESSAGE' 'Problem final' ;
      'ERREUR' 5 ;
 'FINSI' ;


 'FIN' ;
 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer