* fichier : pret1.dgibi
**********************************************************************
**** APPROCHE VF "Cell-Centred Formulation" pour la solution des ****
**** Equations d'Euler pour un gaz parfait. ****
**** ****
**** OPERATEUR PRET ****
**** Operateur qui 'recontruit les variables primitives aux faces ****
**** Cas gaz monoespece "thermally perfect" ****
**** Differents cas tests ****
**** ****
**** A. BECCANTINI DRN/DMT/SEMT/TTMF AOUT 1998 ****
**********************************************************************
'OPTION' 'DIME' 2 ;
'OPTION' 'ELEM' QUA4 ;
'OPTION' 'ECHO' 1 ;
'OPTION' 'TRAC' 'PS' ;
*
*** GRAPH
*
* GRAPH = VRAI ;
GRAPH = FAUX ;
***************************
*** PROCEDURE RUO1 ****
***************************
*
*** Precedure pour la rotation d'un tenseur de premier
* ordre
*
'DEBPROC' RUO1 ;
'ARGUMENT' ALPHA*'FLOTTANT' UN*'FLOTTANT' UT*'FLOTTANT';
SINA = 'SIN' ALPHA ;
COSA = 'COS' ALPHA ;
UX = (UN * COSA ) '-' (UT * SINA) ;
UY = (UN * SINA ) '+' (UT * COSA) ;
'FINPROC' UX UY;
***************************
*** PROCEDURE RUO2 ****
***************************
*
*** Precedure pour la rotation d'un tenseur de deuxieme
* ordre
*
'DEBPROC' RUO2 ;
'ARGUMENT' ALPHA*'FLOTTANT' UNN*'FLOTTANT' UNT*'FLOTTANT'
UTN*'FLOTTANT' UTT*'FLOTTANT';
*
**** (n,t) -> (x,y)
*
* n = CA x '+' SA y ;
* t = -SA x '+' CA y ;
*
* UNT = DUN/DT
*
SA = 'SIN' ALPHA ;
CA = 'COS' ALPHA ;
CA2 = CA * CA ;
CASA = CA * SA ;
SA2 = SA * SA;
UXX = (CA2 * UNN) '-' (CASA * (UNT '+' UTN)) '+' (SA2 *UTT) ;
UYX = (CASA * (UNN '-' UTT)) '-' (SA2 * UNT) '+' (CA2 * UTN ) ;
UXY = (CASA * (UNN '-' UTT)) '+' (CA2 * UNT) '-' (SA2 * UTN ) ;
UYY = (SA2 * UNN) '+' (CASA * (UNT '+' UTN)) '+' (CA2 *UTT) ;
'FINPROC' UXX UXY UYX UYY;
***************************
***** DOMAINE SPATIAL ****
***************************
*
**** Deux carre
*
A1 = 0.0D0 0.0D0;
A2 = 1.0D0 0.0D0;
A3 = 2.0D0 0.0D0;
A4 = 2.0D0 1.0D0;
A5 = 1.0D0 1.0D0;
A6 = 0.0D0 1.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;
DOM10 = 'DALL' L12 L25 L56 L61
'PLANE';
DOM20 = 'DALL' L23 L34 L45 ('INVERSE' L25)
'PLANE';
*
*** Point face entre le deux carre, ou on fait les controlles
*
P10 = 1.0 0.5;
DOM1 = DOM10 ;
DOM2 = DOM20 ;
'ELIMINATION' (DOM1 ET DOM2) 1D-6;
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 ;
FACTOT = 'DOMA' $DOMTOT 'FACEL' ;
'SI' GRAPH;
'TRACER' (DOMTOT 'ET' FACTOT
'ET' P10) 'TITRE' 'Domaine et FACEL';
'FINSI' ;
*
**** TEST1: si les limiteurs sont nuls ou les gradients son nuls
* le deuxieme ordre en espace 'et premier ordre
* en temps degenere en premier ordre en espace
*
RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 1.0D0;
PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 2.0D0;
VIT = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (4.0 5.0);
GAMMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 1.5D0;
*
**** Limiteurs nuls, gradients non-nuls
*
GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(1.0D0 1.0D0);
GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(1.0D0 1.0D0);
GRADVX = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(1.0D0 1.0D0);
GRADVY = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY'
(1.0D0 1.0D0);
GRADV = GRADVX 'ET' GRADVY ;
ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.0D0 ;
ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.0D0 ;
ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2'
(0.0 0.0D0) ;
*
ORDESP = 1;
ORDTEM = 1;
ROF1 VITF1 PF1 GAMF1 = 'PRET' 'PERFMONO' ORDESP ORDTEM
$DOMTOT RN
VIT
PN
GAMMA ;
ORDESP = 2;
ORDTEM = 1;
ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM
$DOMTOT RN GRADR ALR
VIT GRADV ALV
PN GRADP ALP
GAMMA ;
ERRO = 'MAXIMUM' ('PROG'
('MAXIMUM' (ROF '-' ROF1) 'ABS')
('MAXIMUM' (PF '-' PF1) 'ABS')
('MAXIMUM' (VITF '-' VITF1) 'ABS')
) 'ABS' ;
'SI' (ERRO > 1.0D-15);
'ERREUR' 5;
'FINSI' ;
*
**** Limiteurs non-nuls, gradients nuls
*
GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(0.0D0 0.0D0);
GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(0.0D0 0.0D0);
GRADVX = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(0.0D0 0.0D0);
GRADVY = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY'
(0.0D0 0.0D0);
GRADV = GRADVX 'ET' GRADVY ;
ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.4D0 ;
ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.8D0 ;
ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2'
(0.9 0.9D0) ;
ORDESP = 1;
ORDTEM = 1;
ROF1 VITF1 PF1 GAMF1 = 'PRET' 'PERFMONO' ORDESP ORDTEM
$DOMTOT RN
VIT
PN
GAMMA ;
ORDESP = 2;
ORDTEM = 1;
ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM
$DOMTOT RN GRADR ALR
VIT GRADV ALV
PN GRADP ALP
GAMMA ;
ERRO = 'MAXIMUM' ('PROG'
('MAXIMUM' (ROF '-' ROF1) 'ABS')
('MAXIMUM' (PF '-' PF1) 'ABS')
('MAXIMUM' (VITF '-' VITF1) 'ABS')
) 'ABS' ;
'SI' (ERRO > 1.0D-15);
'ERREUR' 5;
'FINSI' ;
*
**** TEST2 : Deuxieme ordre en espace, premiere ordre en
* temps: invariance par rotation
*
* Il faut remarquer que:
* densite, pression sont des tenseurs d'ordre 0,
* donc leurs gradients sont des tenseurs d'ordre 1
* la vitesse est un tenseur d'ordre 1,
* donc sont gradient est un tenseur d'ordre 2
*
**** On considere un repere solidal avec la surface, (n,t),
* et un repere (x,y)
*
*** Etats gauche et droite
*
gam = 1.4D0;
rog = 1.00 ;
grong = 1.0D0 ;
grotg = 2.0D0;
pg = 2.0D0 ;
gpng = 3.0D0 ;
gptg = 4.0D0;
ung = 3.0D0 ;
gunng = 5.0D0 ;
guntg = 6.0D0 ;
utg = 4.0D0 ;
gutng = 7.0D0 ;
guttg = 8.0D0;
rod = 1.50 ;
grond = 1.5D0 ;
grotd = 2.5D0 ;
pd = 2.5D0 ;
gpnd = 3.5D0 ;
gptd = 4.5D0 ;
und = 3.5D0 ;
gunnd = 5.5D0 ;
guntd = 6.5D0 ;
utd = 4.5D0 ;
gutnd = 7.5D0 ;
guttd = 8.5D0;
*
*** Etats a gauche et a droite du point face P10
*
* ro, un, ut, p
ETATG = 'PROG' 1.25000 3.625 4.875 2.1875;
ETATD = 'PROG' 1.12500 2.8125 3.5625 2.28125;
*
*** Rotation
*
ANGLE = 7.0D0;
DANGLE = 85;
ORIG = 0.0D0 0.0D0;
'REPETER' BL1 5;
ANGLE = ANGLE '+' DANGLE ;
uxg uyg = RUO1 ANGLE UNG UTG ;
uxd uyd = RUO1 ANGLE UND UTD ;
groxg groyg = RUO1 ANGLE grong grotg;
groxd groyd = RUO1 ANGLE grond grotd;
gpxg gpyg = RUO1 ANGLE gpng gptg;
gpxd gpyd = RUO1 ANGLE gpnd gptd;
guxxg guxyg guyxg guyyg = RUO2 ANGLE gunng guntg gutng guttg;
guxxd guxyd guyxd guyyd = RUO2 ANGLE gunnd guntd gutnd guttd;
'MESSAGE' ;
'MESSAGE' (CHAIN 'Angle de rotation= ' ANGLE);
'MESSAGE' ;
DOM1 = DOM10 'TOURNER' ANGLE ORIG;
DOM2 = DOM20 'TOURNER' ANGLE ORIG;
P1 = P10 'TOURNER' ANGLE ORIG;
'ELIMINATION' (DOM1 ET DOM2) 1D-6;
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 ;
FACTOT = 'DOMA' $DOMTOT 'FACEL' ;
'SI' GRAPH;
'TRACER' (DOMTOT 'ET' FACTOT
'ET' P1) 'TITRE' 'Domaine et FACEL';
'FINSI' ;
*
**** Redefinition de P1 dans $DOMTOT . 'FACE'
*
P1 = (TDOMTOT . 'FACE') 'POIN' 'PROC' P1;
***********************
**** Les CHPOINTs ****
***********************
GAMMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' gam;
RN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rog;
RN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rod;;
RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RN1 'ET' RN2);
VIT1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (uxg uyg);
VIT2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (uxd uyd);
VIT = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (VIT1 'ET' VIT2);
PN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' pg;
PN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' pd;
PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (PN1 'ET' PN2);
*
**** On impose les gradients et le limiteurs
*
ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.5D0 ;
ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.125D0 ;
ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2'
(0.25 0.25D0) ;
GRADR1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(groxg groyg) ;
GRADR2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(groxd groyd) ;
GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(GRADR1 'ET' GRADR2);
GRADP1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(gpxg gpyg) ;
GRADP2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(gpxd gpyd) ;
GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(GRADP1 'ET' GRADP2);
GRADVX1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(guxxg guxyg);
GRADVX2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(guxxd guxyd);
GRADVY1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY'
(guyxg guyyg);
GRADVY2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY'
(guyxd guyyd);
GRADVX = GRADVX1 'ET' GRADVX2 ;
GRADVY = GRADVY1 'ET' GRADVY2 ;
GRADV = GRADVX 'ET' GRADVY ;
ORDESP = 2;
ORDTEM = 1;
ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM
$DOMTOT RN GRADR ALR
VIT GRADV ALV
PN GRADP ALP
GAMMA ;
*********************************************************
*** Control des etats sur la surface qui contient P1 ****
*********************************************************
GEOP1 = (TDOMTOT. 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
GEOP2 = (TDOMTOT. 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
ROGEOP1 = 'REDU' ROF GEOP1;
VGEOP1 = 'REDU' VITF GEOP1;
PGEOP1 = 'REDU' PF GEOP1;
GAMGEOP1 = 'REDU' GAMF GEOP1;
REFGEOP1 = 'REDU' VITF GEOP2;
rofag = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 1;
rofad = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 3;
unfag = 'EXTRAIRE' VGEOP1 'UN ' 1 1 1;
unfad = 'EXTRAIRE' VGEOP1 'UN ' 1 1 3;
utfag = 'EXTRAIRE' VGEOP1 'UT ' 1 1 1;
utfad = 'EXTRAIRE' VGEOP1 'UT ' 1 1 3;
pfag = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 1;
pfad = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 3;
*
**** Orientation de la normal n de castem par raport a la
* notre; t est par consequence
*
NCOS = 'EXTRAIRE' REFGEOP1 'NX' 1 1 1;
NSIN = 'EXTRAIRE' REFGEOP1 'NY' 1 1 1;
'SI' (('ABS' NCOS) > ('ABS' NSIN));
ORIENT = ('COS' ANGLE) '/' NCOS;
'SINON';
ORIENT = ('SIN' ANGLE) '/' NSIN;
'FINSI' ;
ORIENT = 'SIGNE' 'FLOTTANT' ORIENT;
*
**** ORIENT = -1 -> Mon etat gauche est son etat droite
*
'SI' (ORIENT > 0);
ERRLIG = 'PROG' rofag (unfag '*' ORIENT)
(utfag '*' ORIENT) pfag ;
ERRLID = 'PROG' rofad (unfad '*' ORIENT)
(utfad '*' ORIENT) pfad ;
'SINON' ;
ERRLID = 'PROG' rofag (unfag '*' ORIENT)
(utfag '*' ORIENT) pfag ;
ERRLIG = 'PROG' rofad (unfad '*' ORIENT)
(utfad '*' ORIENT) pfad ;
'FINSI' ;
ERRO = 'MAXIMUM' ('PROG'
('MAXIMUM' (ETATG '-' ERRLIG) 'ABS')
('MAXIMUM' (ETATD '-' ERRLID) 'ABS')
);
'SI' (ERRO > 1.0D-14)
'MESSAGE' 'Ordre en espace = 2';
'MESSAGE' 'Ordre en temps = 1';
'ERREUR' 5 ;
'FINSI' ;
'FIN' BL1;
*
**** TEST3: deuxieme ordre en espace et en temps
* Invariance par rotation
*
*
**** On considere un repere solidal avec la surface, (n,t),
* et un repere (x,y)
*
*** Etats gauche et droite
*
gam = 1.4D0;
rog = 1.00 ;
grong = 1.0D0 ;
grotg = 2.0D0;
pg = 2.0D0 ;
gpng = 3.0D0 ;
gptg = 4.0D0;
ung = 3.0D0 ;
gunng = 5.0D0 ;
guntg = 6.0D0 ;
utg = 4.0D0 ;
gutng = 7.0D0 ;
guttg = 8.0D0;
rod = 1.50 ;
grond = 1.5D0 ;
grotd = 2.5D0 ;
pd = 2.5D0 ;
gpnd = 3.5D0 ;
gptd = 4.5D0 ;
und = 3.5D0 ;
gunnd = 5.5D0 ;
guntd = 6.5D0 ;
utd = 4.5D0 ;
gutnd = 7.5D0 ;
guttd = 8.5D0;
*
*** Rotation
*
ANGLE = 7.0D0;
DANGLE = 85;
ORIG = 0.0D0 0.0D0;
'REPETER' BL1 5;
ANGLE = ANGLE '+' DANGLE ;
uxg uyg = RUO1 ANGLE UNG UTG ;
uxd uyd = RUO1 ANGLE UND UTD ;
groxg groyg = RUO1 ANGLE grong grotg;
groxd groyd = RUO1 ANGLE grond grotd;
gpxg gpyg = RUO1 ANGLE gpng gptg;
gpxd gpyd = RUO1 ANGLE gpnd gptd;
guxxg guxyg guyxg guyyg = RUO2 ANGLE gunng guntg gutng guttg;
guxxd guxyd guyxd guyyd = RUO2 ANGLE gunnd guntd gutnd guttd;
'MESSAGE' ;
'MESSAGE' (CHAIN 'Angle de rotation= ' ANGLE);
'MESSAGE' ;
DOM1 = DOM10 'TOURNER' ANGLE ORIG;
DOM2 = DOM20 'TOURNER' ANGLE ORIG;
P1 = P10 'TOURNER' ANGLE ORIG;
'ELIMINATION' (DOM1 ET DOM2) 1D-6;
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 ;
FACTOT = 'DOMA' $DOMTOT 'FACEL' ;
'SI' GRAPH;
'TRACER' (DOMTOT 'ET' FACTOT
'ET' P1) 'TITRE' 'Domaine et FACEL';
'FINSI' ;
*
**** Redefinition de P1 dans $DOMTOT . 'FACE'
*
P1 = (TDOMTOT . 'FACE') 'POIN' 'PROC' P1;
***********************
**** Les CHPOINTs ****
***********************
GAMMA = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' gam;
RN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rog;
RN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rod;;
RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RN1 'ET' RN2);
VIT1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (uxg uyg);
VIT2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (uxd uyd);
VIT = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (VIT1 'ET' VIT2);
PN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' pg;
PN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' pd;
PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (PN1 'ET' PN2);
*
**** On impose les gradients et le limiteurs
*
ALR = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.5D0 ;
ALP = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'P1' 0.125D0 ;
ALV = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1' 'P2'
(0.25 0.25D0) ;
GRADR1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(groxg groyg) ;
GRADR2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(groxd groyd) ;
GRADR = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(GRADR1 'ET' GRADR2);
GRADP1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(gpxg gpyg) ;
GRADP2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(gpxd gpyd) ;
GRADP = 'KCHT' $DOMTOT 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(GRADP1 'ET' GRADP2);
GRADVX1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(guxxg guxyg);
GRADVX2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P1DX' 'P1DY'
(guxxd guxyd);
GRADVY1 = 'KCHT' $DOM1 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY'
(guyxg guyyg);
GRADVY2 = 'KCHT' $DOM2 'VECT' 'CENTRE' 'COMP' 'P2DX' 'P2DY'
(guyxd guyyd);
GRADVX = GRADVX1 'ET' GRADVX2 ;
GRADVY = GRADVY1 'ET' GRADVY2 ;
GRADV = GRADVX 'ET' GRADVY ;
ORDESP = 2;
ORDTEM = 2;
*
*** L = 1
*
DTCFLG = (gam '*' pg) '/' rog ;
DTCFLG = DTCFLG '**' 0.5 ;
DTCFLG = DTCFLG '+' ung ;
DTCFLG = 1 '/' DTCFLG ;
DTCFLD = (gam '*' pd) '/' rod ;
DTCFLD = DTCFLD '**' 0.5 ;
DTCFLD = DTCFLD '+' und ;
DTCFLD = 1 '/' DTCFLD ;
DTCFLD = 'MINIMUM' ('PROG' DTCFLD DTCFLG);
ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM
$DOMTOT RN GRADR ALR
VIT GRADV ALV
PN GRADP ALP
GAMMA (1D-3 '*' DTCFLD) ;
*********************************************************
*** Control des etats sur la surface qui contient P1 ****
*********************************************************
GEOP1 = (TDOMTOT. 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
GEOP2 = (TDOMTOT. 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
ROGEOP1 = 'REDU' ROF GEOP1;
VGEOP1 = 'REDU' VITF GEOP1;
PGEOP1 = 'REDU' PF GEOP1;
GAMGEOP1 = 'REDU' GAMF GEOP1;
REFGEOP1 = 'REDU' VITF GEOP2;
rofag = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 1;
rofad = 'EXTRAIRE' ROGEOP1 'SCAL' 1 1 3;
unfag = 'EXTRAIRE' VGEOP1 'UN ' 1 1 1;
unfad = 'EXTRAIRE' VGEOP1 'UN ' 1 1 3;
utfag = 'EXTRAIRE' VGEOP1 'UT ' 1 1 1;
utfad = 'EXTRAIRE' VGEOP1 'UT ' 1 1 3;
pfag = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 1;
pfad = 'EXTRAIRE' PGEOP1 'SCAL' 1 1 3;
*
**** Orientation de la normal n de castem par raport a la
* notre; t est par consequence
*
NCOS = 'EXTRAIRE' REFGEOP1 'NX' 1 1 1;
NSIN = 'EXTRAIRE' REFGEOP1 'NY' 1 1 1;
'SI' (('ABS' NCOS) > ('ABS' NSIN));
ORIENT = ('COS' ANGLE) '/' NCOS;
'SINON';
ORIENT = ('SIN' ANGLE) '/' NSIN;
'FINSI' ;
ORIENT = 'SIGNE' 'FLOTTANT' ORIENT;
*
**** ORIENT = -1 -> Mon etat gauche est son etat droite
*
'SI' (ORIENT > 0);
ERRLIG = 'PROG' rofag (unfag '*' ORIENT)
(utfag '*' ORIENT) pfag ;
ERRLID = 'PROG' rofad (unfad '*' ORIENT)
(utfad '*' ORIENT) pfad ;
'SINON' ;
ERRLID = 'PROG' rofag (unfag '*' ORIENT)
(utfag '*' ORIENT) pfag ;
ERRLIG = 'PROG' rofad (unfad '*' ORIENT)
(utfad '*' ORIENT) pfad ;
'FINSI' ;
*
**** 'SI' &BL1 > 1, on controle qui rien n'a change!
*
'SI' (&BL1 > 1);
ERRO = 'MAXIMUM' ('PROG'
('MAXIMUM' (ETATG '-' ERRLIG) 'ABS')
('MAXIMUM' (ETATD '-' ERRLID) 'ABS')
);
'SI' (ERRO > 1.0D-14)
'MESSAGE' 'Ordre en espace = 2';
'MESSAGE' 'Ordre en temps = 2';
'ERREUR' 5 ;
'FINSI' ;
'FINSI' ;
ETATG = ERRLIG ;
ETATD = ERRLID ;
'FIN' BL1;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer