Download pret3D_dem.dgibi

Back to the list

* fichier :  pret3D_dem.dgibi
**********************************************************************
**** APPROCHE VF "Cell-Centred Formulation" pour la  solution des ****
**** Equations d'Euler pour un gaz parfait.                       ****
**** "Discrete Equation Method".                                  ****
****                                                              ****
**** OPERATEUR PRET                                               ****
**** Operateur qui 'recontruit les variables primitives aux faces ****
**** "Discrete Equation Method".                                  ****
**** Deuxieme ordre en espace, premier ordre en temps             ****
**** Interieur et murs                                            ****
**** Cas 3D                                                       ****
****                                                              ****
**** A. BECCANTINI DEN/DM2S/SFME/LTMF       DECEMBRE 2010         ****
**********************************************************************

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

*
*** GRAPH
*

GRAPH = VRAI ;
GRAPH = FAUX ;

*
*************************** 
***** DOMAINE SPATIAL  ****
***************************
*
**** Deux carre
*

A1 = 0.0D0 0.0D0 0.0D0;
A2 = 1.0D0 0.0D0 0.0D0;
A3 = 2.0D0 0.0D0 0.0D0;
A4 = 2.0D0 1.0D0 0.0D0;
A5 = 1.0D0 1.0D0 0.0D0;
A6 = 0.0D0 1.0D0 0.0D0;

L12 = A1 'DROIT' 1 A2;
L23 = A2 'DROIT' 1 A3;
L34 = A3 'DROIT' 1 A4;
L45 = A4 'DROIT' 1 A5;
L56 = A5 'DROIT' 1 A6;
L61 = A6 'DROIT' 1 A1;
L25 = A2 'DROIT' 1 A5;


DOM100  = 'DALL' L12 L25 L56 L61
        'PLANE';
DOM200  = 'DALL' L23 L34 L45 ('INVERSE' L25)
        'PLANE';
DOM10   = DOM100 'VOLU' 1 'TRAN' (0.0 0.0 1.0);
DOM20   = DOM200 'VOLU' 1 'TRAN' (0.0 0.0 1.0);

*
*** Point face entre le deux carre, ou on fait les controlles
*

P10 = 1.0 0.5 0.5;
P20 = 0.5 0.0 0.0 ;

DOM1 =  DOM10 ;
DOM2 =  DOM20 ;

 CHPF = 'MANUEL' 'CHPO' A2 'UX' 0.11 'UY' 0.13 'UZ' 0.15 ;
 FORM CHPF ;

'ELIMINATION' (DOM1 ET DOM2) 1D-6;

 DOM1 = 'TOURNER' DOM1 33. (-1.0 -1.0 0.0) (-1.0 -1.0 1.0) ;
 DOM2 = 'TOURNER' DOM2 33. (-1.0 -1.0 0.0) (-1.0 -1.0 1.0) ;
 DOM1 = 'TOURNER' DOM1 33. (-1.0 -1.0 -1.0) (1.0 -1.0 -1.0) ;
 DOM2 = 'TOURNER' DOM2 33. (-1.0 -1.0 -1.0) (1.0 -1.0 -1.0) ;
 'ELIMINATION' (DOM1 ET DOM2) 1D-6;
 P10 = 'TOURNER' P10 33. (-1.0 -1.0 0.0) (-1.0 -1.0 1.0) ;
 P20 = 'TOURNER' P20 33. (-1.0 -1.0 0.0) (-1.0 -1.0 1.0) ;
 P10 = 'TOURNER' P10 33. (-1.0 -1.0 -1.0) (1.0 -1.0 -1.0) ;
 P20 = 'TOURNER' P20 33. (-1.0 -1.0 -1.0) (1.0 -1.0 -1.0) ;

 DOMTOT = DOM1 ET DOM2;
 
 $DOMTOT = 'MODELISER' DOMTOT 'EULER';

 $DOM1 = 'MODELISER'  DOM1 'EULER';
 $DOM2 = 'MODELISER'  DOM2 'EULER';

 TDOMTOT = 'DOMA'  $DOMTOT 'VF';
 
 TDOM1 = 'DOMA'  $DOM1 'VF';
 TDOM2 = 'DOMA'  $DOM2 'VF';

 MDOM1 = TDOM1 . 'QUAF' ;
 MDOM2 = TDOM2 . 'QUAF' ;
 MDOMTOT = TDOMTOT . 'QUAF' ;

 'ELIMINATION'  (MDOMTOT ET MDOM1) 0.0001 ;
 'ELIMINATION'  (MDOMTOT ET MDOM2) 0.0001 ;

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



*
*** Etats a gauche et a droite
*  
*   

al1g = 0.9     ; limgal1 = 0.11 ;
rn1g = 1.10    ; limgrn1 = 0.21 ;
ux1g = 130.    ; limgux1 = 0.31 ;
uy1g = 111.    ; limguy1 = 0.41 ;
uz1g = 121.    ; limguz1 = 0.21 ;
pn1g = 1.13E5  ; limgpn1 = 0.51 ;
al2g = 0.1     ; limgal2 = 0.61 ;
rn2g = 1.21    ; limgrn2 = 0.71 ;
ux2g = 120.    ; limgux2 = 0.81 ;
uy2g = 211.    ; limguy2 = 0.13 ;
uz2g = 121.    ; limguz2 = 0.12 ;
pn2g = 2.13E5  ; limgpn2 = 0.15 ;

xgragal1 = 11.0D-2 ; ygragal1 = 12.0D-2 ; zgragal1 = 13.0D-2 ; 
xgragrn1 = 13.0D-1 ; ygragrn1 = 11.0D-1 ; zgragrn1 = 10.0D-1 ; 
xgragux1 = 15.0    ; ygragux1 = 12.0    ; zgragux1 = 13.0    ; 
xgraguy1 = 17.0    ; ygraguy1 = 19.0    ; zgraguy1 = 18.0    ; 
xgraguz1 = 17.5    ; ygraguz1 = 19.3    ; zgraguz1 = 18.0    ; 
xgragpn1 = 21.0D2  ; ygragpn1 = 21.2D2  ; zgragpn1 = 20.2D2  ; 
xgragal2 = 31.0D-2 ; ygragal2 = 31.3D-2 ; zgragal2 = 32.3D-2 ; 
xgragrn2 = 23.0D-1 ; ygragrn2 = 23.4D-1 ; zgragrn2 = 21.4D-1 ; 
xgragux2 = 43.0    ; ygragux2 = 47.0    ; zgragux2 = 47.0    ; 
xgraguy2 = 21.3    ; ygraguy2 = 24.3    ; zgraguy2 = 24.3    ; 
xgraguz2 = 22.3    ; ygraguz2 = 14.3    ; zgraguz2 = 11.3    ; 
xgragpn2 = 13.3D1  ; ygragpn2 = 15.3D1  ; zgragpn2 = 11.3D1  ; 

al1d = 0.8       ; limdal1 = 0.17 ;
rn1d = 1.31      ; limdrn1 = 0.19 ;
ux1d = 230.      ; limdux1 = 0.22 ;
uy1d = 431.      ; limduy1 = 0.32 ;
uz1d = 331.      ; limduz1 = 0.31 ;
pn1d = 1.31E5    ; limdpn1 = 0.42 ;
al2d = 0.2       ; limdal2 = 0.43 ;
rn2d = 1.11      ; limdrn2 = 0.44 ;
ux2d = 320.      ; limdux2 = 0.56 ;
uy2d = 111.      ; limduy2 = 0.57 ;
uz2d = 131.      ; limduz2 = 0.53 ;
pn2d = 1.43E5    ; limdpn2 = 0.58 ;

xgradal1 = 11.0D-2 ; ygradal1 = 11.2D-2 ;  zgradal1 = 21.2D-2 ; 
xgradrn1 = 21.0D-1 ; ygradrn1 = 21.2D-1 ;  zgradrn1 = 31.2D-1 ; 
xgradux1 = 31.0    ; ygradux1 = 31.2    ;  zgradux1 = 41.2    ; 
xgraduy1 = 41.0    ; ygraduy1 = 41.3    ;  zgraduy1 = 21.3    ; 
xgraduz1 = 51.0    ; ygraduz1 = 21.3    ;  zgraduz1 = 31.3    ; 
xgradpn1 = 51.0D1  ; ygradpn1 = 51.2D1  ;  zgradpn1 = 31.2D1  ; 
xgradal2 = 12.0D-2 ; ygradal2 = 12.4D-2 ;  zgradal2 = 11.4D-2 ; 
xgradrn2 = 22.0D-1 ; ygradrn2 = 22.1D-1 ;  zgradrn2 = 12.1D-1 ; 
xgradux2 = 32.0    ; ygradux2 = 32.1    ;  zgradux2 = 22.1    ; 
xgraduy2 = 43.0    ; ygraduy2 = 43.3    ;  zgraduy2 = 23.3    ; 
xgraduz2 = 41.0    ; ygraduz2 = 43.3    ;  zgraduz2 = 42.3    ; 
xgradpn2 = 53.0D1  ; ygradpn2 = 53.3D1  ;  zgradpn2 = 33.3D1  ; 

ETATG = 'PROG' al1g rn1g ux1g uy1g uz1g pn1g
         al2g rn2g ux2g uy2g uz2g pn2g ;
         
ETATD = 'PROG' al1d rn1d ux1d uy1d uz1d pn1d
         al2d rn2d ux2d uy2d uz2d pn2d ;

P1 = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' P10;
P2 = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' P20;


'SI' GRAPH;
   'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET'
     ('MANUEL' 'POI1' P1 'COULEUR' 'ROUG') 'ET'
     ('MANUEL' 'POI1' P2 'COULEUR' 'ROUG'))
     'TITRE' 'Domaine et points';
'FINSI' ;
GEOP1    = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
GEOP2    = ('DOMA' $DOMTOT 'FACE')  'ELEM' 'APPUYE' 'LARGEMENT' P1;

**** La densité, la pression, la vitesse

AL1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' al1g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' al1d) ;
AL2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' al2g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' al2d) ;
GRADAL1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P1DX' xgragal1 'P1DY' ygragal1 'P1DZ' zgragal1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P1DX' xgradal1 'P1DY' ygradal1 'P1DZ' zgradal1)
  ; 
GRADAL2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P1DX' xgragal2 'P1DY' ygragal2 'P1DZ' zgragal2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P1DX' xgradal2 'P1DY' ygradal2 'P1DZ' zgradal2)
  ; 
LIMAL1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgal1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdal1) ;
LIMAL2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgal2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdal2) ;

RN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' rn1g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' rn1d) ;
RN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' rn2g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' rn2d) ;
GRADRN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P1DX' xgragrn1 'P1DY' ygragrn1 'P1DZ' zgragrn1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P1DX' xgradrn1 'P1DY' ygradrn1 'P1DZ' zgradrn1)
  ; 
GRADRN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P1DX' xgragrn2 'P1DY' ygragrn2 'P1DZ' zgragrn2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P1DX' xgradrn2 'P1DY' ygradrn2 'P1DZ' zgradrn2)
  ; 
LIMRN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgrn1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdrn1) ;
LIMRN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgrn2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdrn2) ;
  
PN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' pn1g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' pn1d) ;
PN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'SCAL' pn2g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'SCAL' pn2d) ;
GRADPN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P1DX' xgragpn1 'P1DY' ygragpn1 'P1DZ' zgragpn1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P1DX' xgradpn1 'P1DY' ygradpn1 'P1DZ' zgradpn1)
  ; 
GRADPN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P1DX' xgragpn2 'P1DY' ygragpn2 'P1DZ' zgragpn2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P1DX' xgradpn2 'P1DY' ygradpn2 'P1DZ' zgradpn2)
  ; 
LIMPN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgpn1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdpn1) ;
LIMPN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgpn2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdpn2) ;
  

UXN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UX' ux1g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UX' ux1d) ;
UXN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UX' ux2g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UX' ux2d) ;
GRADUX1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P1DX' xgragux1 'P1DY' ygragux1 'P1DZ' zgragux1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P1DX' xgradux1 'P1DY' ygradux1 'P1DZ' zgradux1)
  ; 
GRADUX2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P1DX' xgragux2 'P1DY' ygragux2 'P1DZ' zgragux2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P1DX' xgradux2 'P1DY' ygradux2 'P1DZ' zgradux2)
  ; 
LIMUX1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgux1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdux1) ;
LIMUX2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P1' limgux2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P1' limdux2) ;

    
UYN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UY' uy1g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UY' uy1d) ;
UYN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UY' uy2g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UY' uy2d) ;
GRADUY1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P2DX' xgraguy1 'P2DY' ygraguy1 'P2DZ' zgraguy1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P2DX' xgraduy1 'P2DY' ygraduy1 'P2DZ' zgraduy1)
  ; 
GRADUY2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P2DX' xgraguy2 'P2DY' ygraguy2 'P2DZ' ygraguy2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P2DX' xgraduy2 'P2DY' ygraduy2 'P2DZ' zgraduy2)
  ; 
LIMUY1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P2' limguy1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P2' limduy1) ;
LIMUY2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P2' limguy2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P2' limduy2) ;

UZN1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UZ' uz1g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UZ' uz1d) ;
UZN2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'UZ' uz2g) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'UZ' uz2d) ;
GRADUZ1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P3DX' xgraguz1 'P3DY' ygraguz1 'P3DZ' zgraguz1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P3DX' xgraduz1 'P3DY' ygraduz1 'P3DZ' zgraduz1)
  ; 
GRADUZ2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 3
  'P3DX' xgraguz2 'P3DY' ygraguz2 'P3DZ' ygraguz2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 3
  'P3DX' xgraduz2 'P3DY' ygraduz2 'P3DZ' zgraduz2)
  ; 
LIMUZ1 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P3' limguz1) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P3' limduz1) ;
LIMUZ2 = ('MANU' 'CHPO' (TDOM1 . 'CENTRE') 1 'P3' limguz2) '+'
  ('MANU' 'CHPO' (TDOM2 . 'CENTRE') 1 'P3' limduz2) ;

VN1 = UXN1 '+' UYN1 '+' UZN1 ;
VN2 = UXN2 '+' UYN2 '+' UZN2 ;
GRADVN1 = GRADUX1 '+' GRADUY1 '+' GRADUZ1 ;
GRADVN2 = GRADUX2 '+' GRADUY2 '+' GRADUZ2 ;
LIMVN1 = LIMUX1 '+' LIMUY1 '+' LIMUZ1 ;
LIMVN2 = LIMUX2 '+' LIMUY2 '+' LIMUZ2 ;

*************************************************************************
*** We check if the reconstruction degenerates to first order as the ****
*** gradients or the limiters are zero                               ****
*************************************************************************

AL1G0 AL2G0 RN1G0 RN2G0 VN1G0 VN2G0 PN1G0 PN2G0 =
  'PRET' 'DEM'  $DOMTOT
   AL1    (0.0 * GRADAL1)  LIMAL1
   AL2    (0.0 * GRADAL2)  LIMAL2
   RN1    (0.0 * GRADRN1)  LIMRN1
   RN2    (0.0 * GRADRN2)  LIMRN2
   VN1    (0.0 * GRADVN1)  LIMVN1
   VN2    (0.0 * GRADVN2)  LIMVN2
   PN1    (0.0 * GRADPN1)  LIMPN1
   PN2    (0.0 * GRADPN2)  LIMPN2
     ;

AL1L0 AL2L0 RN1L0 RN2L0 VN1L0 VN2L0 PN1L0 PN2L0 =
  'PRET' 'DEM'  $DOMTOT
   AL1    GRADAL1  (0.0 * LIMAL1)
   AL2    GRADAL2  (0.0 * LIMAL2)
   RN1    GRADRN1  (0.0 * LIMRN1)
   RN2    GRADRN2  (0.0 * LIMRN2)
   VN1    GRADVN1  (0.0 * LIMVN1)
   VN2    GRADVN2  (0.0 * LIMVN2)
   PN1    GRADPN1  (0.0 * LIMPN1)
   PN2    GRADPN2  (0.0 * LIMPN2)
     ;
     
ERRO = 'PROG' ;
ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (AL1G0 '-' AL1L0) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (AL2G0 '-' AL2L0) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (RN1G0 '-' RN1L0) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (RN2G0 '-' RN2L0) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (VN1G0 '-' VN1L0) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (VN2G0 '-' VN2L0) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (PN1G0 '-' PN1L0) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (PN2G0 '-' PN2L0) 'ABS'));


ERRO = 'MAXIMUM' ERRO 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
   'MESSAGE' 'Limiteur et gradients zero' ;
   'MESSAGE' 'Erreur trop importante' ;
   'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
   'ERREUR' 5 ;
'FINSI' ;
*
*** Control des etats sur la surface qui contient P1
*

GEOP1    = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
GEP1F    = ('DOMA' $DOMTOT 'FACE')  'ELEM' 'APPUYE' 'LARGEMENT' P1;

AL1GEOP1 = 'REDU' AL1G0 GEOP1;
AL2GEOP1 = 'REDU' AL2G0 GEOP1;
RN1GEOP1 = 'REDU' RN1G0 GEOP1;
RN2GEOP1 = 'REDU' RN2G0 GEOP1;
PN1GEOP1 = 'REDU' PN1G0 GEOP1;
PN2GEOP1 = 'REDU' PN2G0 GEOP1;
VN1GEOP1 = 'REDU' VN1G0 GEOP1;
VN2GEOP1 = 'REDU' VN2G0 GEOP1;
TN1GEP1F = 'REDU' VN1G0 GEP1F;
TN2GEP1F = 'REDU' VN2G0 GEP1F;

al1gp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 1 ;
al1dp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 3 ;
al2gp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 1 ;
al2dp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 3 ;
rn1gp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 1 ;
rn1dp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 3 ;
rn2gp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 1 ;
rn2dp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 3 ;
pn1gp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 1 ;
pn1dp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 3 ;
pn2gp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 1 ;
pn2dp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 3 ;
un1gp1 = 'EXTRAIRE' VN1GEOP1 'UN  ' 1 1 1 ;
un1dp1 = 'EXTRAIRE' VN1GEOP1 'UN  ' 1 1 3 ;
un2gp1 = 'EXTRAIRE' VN2GEOP1 'UN  ' 1 1 1 ;
un2dp1 = 'EXTRAIRE' VN2GEOP1 'UN  ' 1 1 3 ;
ut1gp1 = 'EXTRAIRE' VN1GEOP1 'UT  ' 1 1 1 ;
ut1dp1 = 'EXTRAIRE' VN1GEOP1 'UT  ' 1 1 3 ;
ut2gp1 = 'EXTRAIRE' VN2GEOP1 'UT  ' 1 1 1 ;
ut2dp1 = 'EXTRAIRE' VN2GEOP1 'UT  ' 1 1 3 ;
uv1gp1 = 'EXTRAIRE' VN1GEOP1 'UV  ' 1 1 1 ;
uv1dp1 = 'EXTRAIRE' VN1GEOP1 'UV  ' 1 1 3 ;
uv2gp1 = 'EXTRAIRE' VN2GEOP1 'UV  ' 1 1 1 ;
uv2dp1 = 'EXTRAIRE' VN2GEOP1 'UV  ' 1 1 3 ;
nxp1 = 'EXTRAIRE' TN1GEP1F 'NX  ' 1 1 1 ;
nyp1 = 'EXTRAIRE' TN1GEP1F 'NY  ' 1 1 1 ;
nzp1 = 'EXTRAIRE' TN1GEP1F 'NZ  ' 1 1 1 ;
txp1 = 'EXTRAIRE' TN1GEP1F 'TX  ' 1 1 1 ;
typ1 = 'EXTRAIRE' TN1GEP1F 'TY  ' 1 1 1 ;
tzp1 = 'EXTRAIRE' TN1GEP1F 'TZ  ' 1 1 1 ;
vxp1 = 'EXTRAIRE' TN1GEP1F 'VX  ' 1 1 1 ;
vyp1 = 'EXTRAIRE' TN1GEP1F 'VY  ' 1 1 1 ;
vzp1 = 'EXTRAIRE' TN1GEP1F 'VZ  ' 1 1 1 ;

ux1gp1 = (un1gp1 * nxp1) '+' (ut1gp1 * txp1)
  '+' (uv1gp1 * vxp1) ;
uy1gp1 = (un1gp1 * nyp1) '+' (ut1gp1 * typ1)
  '+' (uv1gp1 * vyp1) ;
uz1gp1 = (un1gp1 * nzp1) '+' (ut1gp1 * tzp1)
  '+' (uv1gp1 * vzp1) ;
ux1dp1 = (un1dp1 * nxp1) '+' (ut1dp1 * txp1)
  '+' (uv1dp1 * vxp1) ;
uy1dp1 = (un1dp1 * nyp1) '+' (ut1dp1 * typ1)
  '+' (uv1dp1 * vyp1) ;
uz1dp1 = (un1dp1 * nzp1) '+' (ut1dp1 * tzp1)
  '+' (uv1dp1 * vzp1) ;
ux2gp1 = (un2gp1 * nxp1) '+' (ut2gp1 * txp1)
  '+' (uv2gp1 * vxp1) ;
uy2gp1 = (un2gp1 * nyp1) '+' (ut2gp1 * typ1)
  '+' (uv2gp1 * vyp1)  ;
uz2gp1 = (un2gp1 * nzp1) '+' (ut2gp1 * tzp1)
  '+' (uv2gp1 * vzp1)  ;
ux2dp1 = (un2dp1 * nxp1) '+' (ut2dp1 * txp1)
  '+' (uv2dp1 * vxp1) ;
uy2dp1 = (un2dp1 * nyp1) '+' (ut2dp1 * typ1)
  '+' (uv2dp1 * vyp1) ;
uz2dp1 = (un2dp1 * nzp1) '+' (ut2dp1 * tzp1)
  '+' (uv2dp1 * vzp1) ;

ERRO = 'PROG' ;
ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (TN1GEP1F '-' TN2GEP1F) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((al1gp1 '-' al1g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((al1dp1 '-' al1d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((al2gp1 '-' al2g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((al2dp1 '-' al2d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn1gp1 '-' rn1g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn1dp1 '-' rn1d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn2gp1 '-' rn2g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn2dp1 '-' rn2d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn1gp1 '-' pn1g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn1dp1 '-' pn1d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn2gp1 '-' pn2g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn2dp1 '-' pn2d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ux1gp1 '-' ux1g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ux1dp1 '-' ux1d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ux2gp1 '-' ux2g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ux2dp1 '-' ux2d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uy1gp1 '-' uy1g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uy1dp1 '-' uy1d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uy2gp1 '-' uy2g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uy2dp1 '-' uy2d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uz1gp1 '-' uz1g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uz1dp1 '-' uz1d) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uz2gp1 '-' uz2g) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uz2dp1 '-' uz2d) 'ABS'));

ERRO = 'MAXIMUM' ERRO 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
   'MESSAGE' 'Limiteur et gradients zero' ;
   'MESSAGE' 'Les etats' ;
   'MESSAGE' 'Erreur trop importante' ;
   'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
   'ERREUR' 5 ;
'FINSI' ;

*
**** Wall
*

GEOP2    = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P2;
GEP2F    = ('DOMA' $DOMTOT 'FACE')  'ELEM' 'APPUYE' 'LARGEMENT' P2;

AL1GEOP2 = 'REDU' AL1G0 GEOP2;
AL2GEOP2 = 'REDU' AL2G0 GEOP2;
RN1GEOP2 = 'REDU' RN1G0 GEOP2;
RN2GEOP2 = 'REDU' RN2G0 GEOP2;
PN1GEOP2 = 'REDU' PN1G0 GEOP2;
PN2GEOP2 = 'REDU' PN2G0 GEOP2;
VN1GEOP2 = 'REDU' VN1G0 GEOP2;
VN2GEOP2 = 'REDU' VN2G0 GEOP2;
TN1GEP2F = 'REDU' VN1G0 GEP2F;
TN2GEP2F = 'REDU' VN2G0 GEP2F;

al1gp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 1 ;
al1dp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 3 ;
al2gp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 1 ;
al2dp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 3 ;
rn1gp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 1 ;
rn1dp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 3 ;
rn2gp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 1 ;
rn2dp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 3 ;
pn1gp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 1 ;
pn1dp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 3 ;
pn2gp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 1 ;
pn2dp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 3 ;
un1gp2 = 'EXTRAIRE' VN1GEOP2 'UN  ' 1 1 1 ;
un1dp2 = 'EXTRAIRE' VN1GEOP2 'UN  ' 1 1 3 ;
un2gp2 = 'EXTRAIRE' VN2GEOP2 'UN  ' 1 1 1 ;
un2dp2 = 'EXTRAIRE' VN2GEOP2 'UN  ' 1 1 3 ;
ut1gp2 = 'EXTRAIRE' VN1GEOP2 'UT  ' 1 1 1 ;
ut1dp2 = 'EXTRAIRE' VN1GEOP2 'UT  ' 1 1 3 ;
ut2gp2 = 'EXTRAIRE' VN2GEOP2 'UT  ' 1 1 1 ;
ut2dp2 = 'EXTRAIRE' VN2GEOP2 'UT  ' 1 1 3 ;
uv1gp2 = 'EXTRAIRE' VN1GEOP2 'UV  ' 1 1 1 ;
uv1dp2 = 'EXTRAIRE' VN1GEOP2 'UV  ' 1 1 3 ;
uv2gp2 = 'EXTRAIRE' VN2GEOP2 'UV  ' 1 1 1 ;
uv2dp2 = 'EXTRAIRE' VN2GEOP2 'UV  ' 1 1 3 ;

ERRO = 'PROG' ;
ERRO = ERRO 'ET' ('PROG' ('MAXIMUM' (TN1GEP2F '-' TN2GEP2F) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((al1gp2 '-' al1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((al2gp2 '-' al2dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn1gp2 '-' rn1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn2gp2 '-' rn2dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn1gp2 '-' pn1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn2gp2 '-' pn2dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ut1gp2 '-' ut1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ut2gp2 '-' ut2dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uv1gp2 '-' uv1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uv2gp2 '-' uv2dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((un1gp2 '+' un1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((un2gp2 '+' un2dp2) 'ABS'));

ERRO = 'MAXIMUM' ERRO 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
   'MESSAGE' 'Limiteur et gradients zero' ;
   'MESSAGE' 'Les etats (mur)' ;
   'MESSAGE' 'Erreur trop importante' ;
   'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
   'ERREUR' 5 ;
'FINSI' ;

*****************************************************
*** We check if the second order reconstruction. ****
*****************************************************

AL1F AL2F RN1F RN2F VN1F VN2F PN1F PN2F =
  'PRET' 'DEM'  $DOMTOT
   AL1    GRADAL1  LIMAL1
   AL2    GRADAL2  LIMAL2
   RN1    GRADRN1  LIMRN1
   RN2    GRADRN2  LIMRN2
   VN1    GRADVN1  LIMVN1
   VN2    GRADVN2  LIMVN2
   PN1    GRADPN1  LIMPN1
   PN2    GRADPN2  LIMPN2
     ;

*** Internal point
          
GEOP1    = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
GEP1F    = ('DOMA' $DOMTOT 'FACE')  'ELEM' 'APPUYE' 'LARGEMENT' P1;

AL1GEOP1 = 'REDU' AL1F GEOP1;
AL2GEOP1 = 'REDU' AL2F GEOP1;
RN1GEOP1 = 'REDU' RN1F GEOP1;
RN2GEOP1 = 'REDU' RN2F GEOP1;
PN1GEOP1 = 'REDU' PN1F GEOP1;
PN2GEOP1 = 'REDU' PN2F GEOP1;
VN1GEOP1 = 'REDU' VN1F GEOP1;
VN2GEOP1 = 'REDU' VN2F GEOP1;
TN1GEP1F = 'REDU' VN1F GEP1F;
TN2GEP1F = 'REDU' VN2F GEP1F;

al1gp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 1 ;
al1dp1 = 'EXTRAIRE' AL1GEOP1 'SCAL' 1 1 3 ;
al2gp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 1 ;
al2dp1 = 'EXTRAIRE' AL2GEOP1 'SCAL' 1 1 3 ;
rn1gp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 1 ;
rn1dp1 = 'EXTRAIRE' RN1GEOP1 'SCAL' 1 1 3 ;
rn2gp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 1 ;
rn2dp1 = 'EXTRAIRE' RN2GEOP1 'SCAL' 1 1 3 ;
pn1gp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 1 ;
pn1dp1 = 'EXTRAIRE' PN1GEOP1 'SCAL' 1 1 3 ;
pn2gp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 1 ;
pn2dp1 = 'EXTRAIRE' PN2GEOP1 'SCAL' 1 1 3 ;
un1gp1 = 'EXTRAIRE' VN1GEOP1 'UN  ' 1 1 1 ;
un1dp1 = 'EXTRAIRE' VN1GEOP1 'UN  ' 1 1 3 ;
un2gp1 = 'EXTRAIRE' VN2GEOP1 'UN  ' 1 1 1 ;
un2dp1 = 'EXTRAIRE' VN2GEOP1 'UN  ' 1 1 3 ;
ut1gp1 = 'EXTRAIRE' VN1GEOP1 'UT  ' 1 1 1 ;
ut1dp1 = 'EXTRAIRE' VN1GEOP1 'UT  ' 1 1 3 ;
ut2gp1 = 'EXTRAIRE' VN2GEOP1 'UT  ' 1 1 1 ;
ut2dp1 = 'EXTRAIRE' VN2GEOP1 'UT  ' 1 1 3 ;
uv1gp1 = 'EXTRAIRE' VN1GEOP1 'UV  ' 1 1 1 ;
uv1dp1 = 'EXTRAIRE' VN1GEOP1 'UV  ' 1 1 3 ;
uv2gp1 = 'EXTRAIRE' VN2GEOP1 'UV  ' 1 1 1 ;
uv2dp1 = 'EXTRAIRE' VN2GEOP1 'UV  ' 1 1 3 ;
nxp1 = 'EXTRAIRE' TN1GEP1F 'NX  ' 1 1 1 ;
nyp1 = 'EXTRAIRE' TN1GEP1F 'NY  ' 1 1 1 ;
nzp1 = 'EXTRAIRE' TN1GEP1F 'NZ  ' 1 1 1 ;
txp1 = 'EXTRAIRE' TN1GEP1F 'TX  ' 1 1 1 ;
typ1 = 'EXTRAIRE' TN1GEP1F 'TY  ' 1 1 1 ;
tzp1 = 'EXTRAIRE' TN1GEP1F 'TZ  ' 1 1 1 ;
vxp1 = 'EXTRAIRE' TN1GEP1F 'VX  ' 1 1 1 ;
vyp1 = 'EXTRAIRE' TN1GEP1F 'VY  ' 1 1 1 ;
vzp1 = 'EXTRAIRE' TN1GEP1F 'VZ  ' 1 1 1 ;
ux1gp1 = (un1gp1 * nxp1) '+' (ut1gp1 * txp1) '+' (uv1gp1 * vxp1) ;
uy1gp1 = (un1gp1 * nyp1) '+' (ut1gp1 * typ1) '+' (uv1gp1 * vyp1) ;
uz1gp1 = (un1gp1 * nzp1) '+' (ut1gp1 * tzp1) '+' (uv1gp1 * vzp1) ;
ux1dp1 = (un1dp1 * nxp1) '+' (ut1dp1 * txp1) '+' (uv1dp1 * vxp1) ;
uy1dp1 = (un1dp1 * nyp1) '+' (ut1dp1 * typ1) '+' (uv1dp1 * vyp1) ;
uz1dp1 = (un1dp1 * nzp1) '+' (ut1dp1 * tzp1) '+' (uv1dp1 * vzp1) ;
ux2gp1 = (un2gp1 * nxp1) '+' (ut2gp1 * txp1) '+' (uv2gp1 * vxp1) ;
uy2gp1 = (un2gp1 * nyp1) '+' (ut2gp1 * typ1) '+' (uv2gp1 * vyp1) ;
uz2gp1 = (un2gp1 * nzp1) '+' (ut2gp1 * tzp1) '+' (uv2gp1 * vzp1) ;
ux2dp1 = (un2dp1 * nxp1) '+' (ut2dp1 * txp1) '+' (uv2dp1 * vxp1) ;
uy2dp1 = (un2dp1 * nyp1) '+' (ut2dp1 * typ1) '+' (uv2dp1 * vyp1) ;
uz2dp1 = (un2dp1 * nzp1) '+' (ut2dp1 * tzp1) '+' (uv2dp1 * vzp1) ;

* Selection of the left and the right state

MAICEN = 'DIFF' ('CHANGER' 'POI1' GEOP1) GEP1F ;
'SI' (('NBNO' MAICEN) 'NEG' 2) ;
   'MESSAGE' 'Probleme en maicen' ;
   'ERREUR' 5 ;
'FINSI' ;
   
PC1 = 'POIN' 1 MAICEN ;
PC2 = 'POIN' 2 MAICEN ;
DXPC1 = ('COORDONNEE' 1 P1) '-' ('COORDONNEE' 1 PC1) ;
DYPC1 = ('COORDONNEE' 2 P1) '-' ('COORDONNEE' 2 PC1) ;
DZPC1 = ('COORDONNEE' 3 P1) '-' ('COORDONNEE' 3 PC1) ;
DXPC2 = ('COORDONNEE' 1 P1) '-' ('COORDONNEE' 1 PC2) ;
DYPC2 = ('COORDONNEE' 2 P1) '-' ('COORDONNEE' 2 PC2) ;
DZPC2 = ('COORDONNEE' 3 P1) '-' ('COORDONNEE' 3 PC2) ;
PSPC1 = (DXPC1 * nxp1) '+' (DYPC1 * nyp1) '+' (DZPC1 * nzp1) ;
PSPC2 = (DXPC2 * nxp1) '+' (DYPC2 * nyp1) '+' (DZPC2 * nzp1) ;
LOG1 = (PSPC1 > 0.0) 'ET' (PSPC2 < 0.0) ;
'SI' LOG1 ;
   PG = PC1 ;
   DXG = DXPC1 ;
   DYG = DYPC1 ;
   DZG = DZPC1 ;
   PD = PC2 ;
   DXD = DXPC2 ;
   DYD = DYPC2 ;
   DZD = DZPC2 ;
'FINSI' ;
LOG2 = (PSPC1 < 0.0) 'ET' (PSPC2 > 0.0) ;
'SI' LOG2 ;
   PG = PC2 ;
   DXG = DXPC2 ;
   DYG = DYPC2 ;
   DZG = DZPC2 ;
   PD = PC1 ;
   DXD = DXPC1 ;
   DYD = DYPC1 ;
   DZD = DZPC1 ;
'FINSI' ;
'SI' (('NON' LOG1) 'ET' ('NON' LOG2)) ;
   'MESSAGE' 'Probleme en facel' ;
   'ERREUR' 5 ;
'FINSI' ;

al1gn = ('EXTRAIRE' AL1 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADAL1 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADAL1 'P1DY' PG) * DYG)'+'
   (('EXTRAIRE' GRADAL1 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMAL1 'P1' PG)) ;
al2gn = ('EXTRAIRE' AL2 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADAL2 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADAL2 'P1DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADAL2 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMAL2 'P1' PG)) ;
rn1gn = ('EXTRAIRE' RN1 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADRN1 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADRN1 'P1DY' PG) * DYG)'+'
   (('EXTRAIRE' GRADRN1 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMRN1 'P1' PG)) ;
rn2gn = ('EXTRAIRE' RN2 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADRN2 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADRN2 'P1DY' PG) * DYG)'+'
   (('EXTRAIRE' GRADRN2 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMRN2 'P1' PG)) ;
pn1gn = ('EXTRAIRE' PN1 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADPN1 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADPN1 'P1DY' PG) * DYG)'+'
   (('EXTRAIRE' GRADPN1 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMPN1 'P1' PG)) ;
pn2gn = ('EXTRAIRE' PN2 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADPN2 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADPN2 'P1DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADPN2 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMPN2 'P1' PG)) ;
ux1gn = ('EXTRAIRE' VN1 'UX  ' PG) '+' (
   (
   (('EXTRAIRE' GRADUX1 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADUX1 'P1DY' PG) * DYG)'+'
   (('EXTRAIRE' GRADUX1 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMUX1 'P1' PG)) ;
ux2gn = ('EXTRAIRE' VN2 'UX  ' PG) '+' (
   (
   (('EXTRAIRE' GRADUX2 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADUX2 'P1DY' PG) * DYG)'+'
   (('EXTRAIRE' GRADUX2 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMUX2 'P1' PG)) ;
uy1gn = ('EXTRAIRE' VN1 'UY  ' PG) '+' (
   (
   (('EXTRAIRE' GRADUY1 'P2DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADUY1 'P2DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADUY1 'P2DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMUY1 'P2' PG)) ;
uy2gn = ('EXTRAIRE' VN2 'UY  ' PG) '+' (
   (
   (('EXTRAIRE' GRADUY2 'P2DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADUY2 'P2DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADUY2 'P2DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMUY2 'P2' PG)) ;
uz1gn = ('EXTRAIRE' VN1 'UZ  ' PG) '+' (
   (
   (('EXTRAIRE' GRADUZ1 'P3DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADUZ1 'P3DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADUZ1 'P3DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMUZ1 'P3' PG)) ;
uz2gn = ('EXTRAIRE' VN2 'UZ  ' PG) '+' (
   (
   (('EXTRAIRE' GRADUZ2 'P3DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADUZ2 'P3DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADUZ2 'P3DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMUZ2 'P3' PG)) ;
   
ERRO = 'PROG' ;
ERRO = ERRO 'ET' ('PROG' ((al1gp1 '-' al1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((al2gp1 '-' al2gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn1gp1 '-' rn1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn2gp1 '-' rn2gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn1gp1 '-' pn1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn2gp1 '-' pn2gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ux1gp1 '-' ux1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ux2gp1 '-' ux2gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uy1gp1 '-' uy1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uy2gp1 '-' uy2gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uz1gp1 '-' uz1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uz2gp1 '-' uz2gn) 'ABS'));
ERRO = 'MAXIMUM' ERRO 'ABS' ;

'SI' (ERRO > 1.0D-12) ;
   'MESSAGE' 'Deuxieme ordre' ;
   'MESSAGE' 'Les etats gauches' ;
   'MESSAGE' 'Erreur trop importante' ;
   'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
   'ERREUR' 5 ;
'FINSI' ;



al1dn = ('EXTRAIRE' AL1 'SCAL' PD) '+' (
   (
   (('EXTRAIRE' GRADAL1 'P1DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADAL1 'P1DY' PD) * DYD)'+'
   (('EXTRAIRE' GRADAL1 'P1DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMAL1 'P1' PD)) ;
al2dn = ('EXTRAIRE' AL2 'SCAL' PD) '+' (
   (
   (('EXTRAIRE' GRADAL2 'P1DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADAL2 'P1DY' PD) * DYD) '+'
   (('EXTRAIRE' GRADAL2 'P1DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMAL2 'P1' PD)) ;
rn1dn = ('EXTRAIRE' RN1 'SCAL' PD) '+' (
   (
   (('EXTRAIRE' GRADRN1 'P1DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADRN1 'P1DY' PD) * DYD)'+'
   (('EXTRAIRE' GRADRN1 'P1DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMRN1 'P1' PD)) ;
rn2dn = ('EXTRAIRE' RN2 'SCAL' PD) '+' (
   (
   (('EXTRAIRE' GRADRN2 'P1DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADRN2 'P1DY' PD) * DYD) '+'
   (('EXTRAIRE' GRADRN2 'P1DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMRN2 'P1' PD)) ;
pn1dn = ('EXTRAIRE' PN1 'SCAL' PD) '+' (
   (
   (('EXTRAIRE' GRADPN1 'P1DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADPN1 'P1DY' PD) * DYD) '+'
   (('EXTRAIRE' GRADPN1 'P1DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMPN1 'P1' PD)) ;
pn2dn = ('EXTRAIRE' PN2 'SCAL' PD) '+' (
   (
   (('EXTRAIRE' GRADPN2 'P1DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADPN2 'P1DY' PD) * DYD) '+'
   (('EXTRAIRE' GRADPN2 'P1DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMPN2 'P1' PD)) ;
ux1dn = ('EXTRAIRE' VN1 'UX  ' PD) '+' (
   (
   (('EXTRAIRE' GRADUX1 'P1DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADUX1 'P1DY' PD) * DYD) '+'
   (('EXTRAIRE' GRADUX1 'P1DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMUX1 'P1' PD)) ;
ux2dn = ('EXTRAIRE' VN2 'UX  ' PD) '+' (
   (
   (('EXTRAIRE' GRADUX2 'P1DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADUX2 'P1DY' PD) * DYD) '+'
   (('EXTRAIRE' GRADUX2 'P1DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMUX2 'P1' PD)) ;
uy1dn = ('EXTRAIRE' VN1 'UY  ' PD) '+' (
   (
   (('EXTRAIRE' GRADUY1 'P2DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADUY1 'P2DY' PD) * DYD) '+'
   (('EXTRAIRE' GRADUY1 'P2DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMUY1 'P2' PD)) ;
uy2dn = ('EXTRAIRE' VN2 'UY  ' PD) '+' (
   (
   (('EXTRAIRE' GRADUY2 'P2DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADUY2 'P2DY' PD) * DYD) '+'
   (('EXTRAIRE' GRADUY2 'P2DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMUY2 'P2' PD)) ;
uz1dn = ('EXTRAIRE' VN1 'UZ  ' PD) '+' (
   (
   (('EXTRAIRE' GRADUZ1 'P3DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADUZ1 'P3DY' PD) * DYD) '+'
   (('EXTRAIRE' GRADUZ1 'P3DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMUZ1 'P3' PD)) ;
uz2dn = ('EXTRAIRE' VN2 'UZ  ' PD) '+' (
   (
   (('EXTRAIRE' GRADUZ2 'P3DX' PD) * DXD) '+'
   (('EXTRAIRE' GRADUZ2 'P3DY' PD) * DYD) '+'
   (('EXTRAIRE' GRADUZ2 'P3DZ' PD) * DZD)
   ) * ('EXTRAIRE' LIMUZ2 'P3' PD)) ;
   
ERRO = 'PROG' ;
ERRO = ERRO 'ET' ('PROG' ((al1dp1 '-' al1dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((al2dp1 '-' al2dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn1dp1 '-' rn1dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn2dp1 '-' rn2dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn1dp1 '-' pn1dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn2dp1 '-' pn2dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ux1dp1 '-' ux1dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ux2dp1 '-' ux2dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uy1dp1 '-' uy1dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uy2dp1 '-' uy2dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uz1dp1 '-' uz1dn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uz2dp1 '-' uz2dn) 'ABS'));
ERRO = 'MAXIMUM' ERRO 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
   'MESSAGE' 'Deuxieme ordre' ;
   'MESSAGE' 'Les etats droites' ;
   'MESSAGE' 'Erreur trop importante' ;
   'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
   'ERREUR' 5 ;
'FINSI' ;

*** Wall point

GEOP2    = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P2;
GEP2F    = ('DOMA' $DOMTOT 'FACE')  'ELEM' 'APPUYE' 'LARGEMENT' P2;

'SI' GRAPH ;
   'TRACER' (DOMTOT 'ET' ('MANUEL' 'POI1' P2 'COULEUR' 'ROUG'))
      'TITRE' 'Wall' ;
'FINSI' ;

AL1GEOP2 = 'REDU' AL1F GEOP2;
AL2GEOP2 = 'REDU' AL2F GEOP2;
RN1GEOP2 = 'REDU' RN1F GEOP2;
RN2GEOP2 = 'REDU' RN2F GEOP2;
PN1GEOP2 = 'REDU' PN1F GEOP2;
PN2GEOP2 = 'REDU' PN2F GEOP2;
VN1GEOP2 = 'REDU' VN1F GEOP2;
VN2GEOP2 = 'REDU' VN2F GEOP2;
TN1GEP2F = 'REDU' VN1F GEP2F;
TN2GEP2F = 'REDU' VN2F GEP2F;

al1gp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 1 ;
al1dp2 = 'EXTRAIRE' AL1GEOP2 'SCAL' 1 1 3 ;
al2gp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 1 ;
al2dp2 = 'EXTRAIRE' AL2GEOP2 'SCAL' 1 1 3 ;
rn1gp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 1 ;
rn1dp2 = 'EXTRAIRE' RN1GEOP2 'SCAL' 1 1 3 ;
rn2gp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 1 ;
rn2dp2 = 'EXTRAIRE' RN2GEOP2 'SCAL' 1 1 3 ;
pn1gp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 1 ;
pn1dp2 = 'EXTRAIRE' PN1GEOP2 'SCAL' 1 1 3 ;
pn2gp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 1 ;
pn2dp2 = 'EXTRAIRE' PN2GEOP2 'SCAL' 1 1 3 ;
un1gp2 = 'EXTRAIRE' VN1GEOP2 'UN  ' 1 1 1 ;
un1dp2 = 'EXTRAIRE' VN1GEOP2 'UN  ' 1 1 3 ;
un2gp2 = 'EXTRAIRE' VN2GEOP2 'UN  ' 1 1 1 ;
un2dp2 = 'EXTRAIRE' VN2GEOP2 'UN  ' 1 1 3 ;
ut1gp2 = 'EXTRAIRE' VN1GEOP2 'UT  ' 1 1 1 ;
ut1dp2 = 'EXTRAIRE' VN1GEOP2 'UT  ' 1 1 3 ;
ut2gp2 = 'EXTRAIRE' VN2GEOP2 'UT  ' 1 1 1 ;
ut2dp2 = 'EXTRAIRE' VN2GEOP2 'UT  ' 1 1 3 ;
uv1gp2 = 'EXTRAIRE' VN1GEOP2 'UV  ' 1 1 1 ;
uv1dp2 = 'EXTRAIRE' VN1GEOP2 'UV  ' 1 1 3 ;
uv2gp2 = 'EXTRAIRE' VN2GEOP2 'UV  ' 1 1 1 ;
uv2dp2 = 'EXTRAIRE' VN2GEOP2 'UV  ' 1 1 3 ;
nxp2 = 'EXTRAIRE' TN1GEP2F 'NX  ' 1 1 1 ;
nyp2 = 'EXTRAIRE' TN1GEP2F 'NY  ' 1 1 1 ;
nzp2 = 'EXTRAIRE' TN1GEP2F 'NZ  ' 1 1 1 ;
txp2 = 'EXTRAIRE' TN1GEP2F 'TX  ' 1 1 1 ;
typ2 = 'EXTRAIRE' TN1GEP2F 'TY  ' 1 1 1 ;
tzp2 = 'EXTRAIRE' TN1GEP2F 'TZ  ' 1 1 1 ;
vxp2 = 'EXTRAIRE' TN1GEP2F 'VX  ' 1 1 1 ;
vyp2 = 'EXTRAIRE' TN1GEP2F 'VY  ' 1 1 1 ;
vzp2 = 'EXTRAIRE' TN1GEP2F 'VZ  ' 1 1 1 ;
ux1gp2 = (un1gp2 * nxp2) '+' (ut1gp2 * txp2) '+' (uv1gp2 * vxp2) ;
uy1gp2 = (un1gp2 * nyp2) '+' (ut1gp2 * typ2) '+' (uv1gp2 * vyp2) ;
uz1gp2 = (un1gp2 * nzp2) '+' (ut1gp2 * tzp2) '+' (uv1gp2 * vzp2) ;
ux2gp2 = (un2gp2 * nxp2) '+' (ut2gp2 * txp2) '+' (uv2gp2 * vxp2) ;
uy2gp2 = (un2gp2 * nyp2) '+' (ut2gp2 * typ2) '+' (uv2gp2 * vyp2) ;
uz2gp2 = (un2gp2 * nzp2) '+' (ut2gp2 * tzp2) '+' (uv2gp2 * vzp2) ;

* Selection of the left and the right state

MAICEN = 'DIFF' ('CHANGER' 'POI1' GEOP2) GEP2F ;
'SI' (('NBNO' MAICEN) 'NEG' 1) ;
   'MESSAGE' 'Probleme en maicen' ;
   'ERREUR' 5 ;
'FINSI' ;
   
PC1 = 'POIN' 1 MAICEN ;
DXPC1 = ('COORDONNEE' 1 P2) '-' ('COORDONNEE' 1 PC1) ;
DYPC1 = ('COORDONNEE' 2 P2) '-' ('COORDONNEE' 2 PC1) ;
DZPC1 = ('COORDONNEE' 3 P2) '-' ('COORDONNEE' 3 PC1) ;
PSPC1 = (DXPC1 * nxp2) '+' (DYPC1 * nyp2)
   '+' (DZPC1 * nzp2) ;
LOG1 = (PSPC1 > 0.0) ;
'SI' LOG1 ;
   PG = PC1 ;
   DXG = DXPC1 ;
   DYG = DYPC1 ;
   DZG = DZPC1 ;
'FINSI' ;
'SI' (('NON' LOG1)) ;
   'MESSAGE' 'Probleme en facel' ;
   'ERREUR' 5 ;
'FINSI' ;

al1gn = ('EXTRAIRE' AL1 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADAL1 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADAL1 'P1DY' PG) * DYG)'+'
   (('EXTRAIRE' GRADAL1 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMAL1 'P1' PG)) ;
al2gn = ('EXTRAIRE' AL2 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADAL2 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADAL2 'P1DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADAL2 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMAL2 'P1' PG)) ;
rn1gn = ('EXTRAIRE' RN1 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADRN1 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADRN1 'P1DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADRN1 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMRN1 'P1' PG)) ;
rn2gn = ('EXTRAIRE' RN2 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADRN2 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADRN2 'P1DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADRN2 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMRN2 'P1' PG)) ;
pn1gn = ('EXTRAIRE' PN1 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADPN1 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADPN1 'P1DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADPN1 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMPN1 'P1' PG)) ;
pn2gn = ('EXTRAIRE' PN2 'SCAL' PG) '+' (
   (
   (('EXTRAIRE' GRADPN2 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADPN2 'P1DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADPN2 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMPN2 'P1' PG)) ;
ux1gn = ('EXTRAIRE' VN1 'UX  ' PG) '+' (
   (
   (('EXTRAIRE' GRADUX1 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADUX1 'P1DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADUX1 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMUX1 'P1' PG)) ;
ux2gn = ('EXTRAIRE' VN2 'UX  ' PG) '+' (
   (
   (('EXTRAIRE' GRADUX2 'P1DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADUX2 'P1DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADUX2 'P1DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMUX2 'P1' PG)) ;
uy1gn = ('EXTRAIRE' VN1 'UY  ' PG) '+' (
   (
   (('EXTRAIRE' GRADUY1 'P2DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADUY1 'P2DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADUY1 'P2DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMUY1 'P2' PG)) ;
uy2gn = ('EXTRAIRE' VN2 'UY  ' PG) '+' (
   (
   (('EXTRAIRE' GRADUY2 'P2DX' PG) * DXG) '+'
   (('EXTRAIRE' GRADUY2 'P2DY' PG) * DYG) '+'
   (('EXTRAIRE' GRADUY2 'P2DZ' PG) * DZG)
   ) * ('EXTRAIRE' LIMUY2 'P2' PG)) ;
   
ERRO = 'PROG' ;
ERRO = ERRO 'ET' ('PROG' ((al1gp2 '-' al1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((al2gp2 '-' al2gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn1gp2 '-' rn1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn2gp2 '-' rn2gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn1gp2 '-' pn1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn2gp2 '-' pn2gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ux1gp2 '-' ux1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ux2gp2 '-' ux2gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uy1gp2 '-' uy1gn) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((uy2gp2 '-' uy2gn) 'ABS'));
ERRO = 'MAXIMUM' ERRO 'ABS' ;

'SI' (ERRO > 1.0D-12) ;
   'MESSAGE' 'Deuxieme ordre' ;
   'MESSAGE' 'Les etats gauches au mur' ;
   'MESSAGE' 'Erreur trop importante' ;
   'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
   'ERREUR' 5 ;
'FINSI' ;

ERRO = 'PROG' ;
ERRO = ERRO 'ET' ('PROG' ((al1gp2 '-' al1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((al2gp2 '-' al2dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn1gp2 '-' rn1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((rn2gp2 '-' rn2dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn1gp2 '-' pn1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((pn2gp2 '-' pn2dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((un1gp2 '+' un1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((un2gp2 '+' un2dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ut1gp2 '-' ut1dp2) 'ABS'));
ERRO = ERRO 'ET' ('PROG' ((ut2gp2 '-' ut2dp2) 'ABS'));
ERRO = 'MAXIMUM' ERRO 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
   'MESSAGE' 'Deuxieme ordre' ;
   'MESSAGE' 'Les etats gauches au mur' ;
   'MESSAGE' 'Erreur trop importante' ;
   'MESSAGE' ('CHAINE' 'erro = ' ERRO) ;
   'ERREUR' 5 ;
'FINSI' ;
'FIN' ;
 

© Cast3M 2003 - All rights reserved.
Disclaimer