* fichier : pente3.dgibi
***********************************************************
**** APPROCHE VF "Cell-Centred Formulation". ****
**** OPÉRATEUR PENT, pour le calcul des gradients et ****
**** des limiteurs ****
**** Cas test: calcul du gradient avec conditions de ****
**** typr mur ****
**** ****
**** A. BECCANTINI, TTMF JUILLET 2003 ****
***********************************************************
'OPTION' 'ECHO' 1 'DIME' 2 'ELEM' 'TRI3' 'TRAC' 'X' ;
GRAPH = VRAI ;
GRAPH = FAUX ;
P1 = 0.0 0.0 ;
P2 = 1.0 0.0 ;
P3 = 1.0 1.0 ;
P1P2 = P1 'DROIT' 5 P2 ;
P2P3 = P2 'DROIT' 7 P3 ;
P3P1 = P3 'DROIT' 9 P1 ;
DOMINT = 'SURFACE' (P1P2 'ET' P2P3 'ET' P3P1) ;
$DOMINT = 'MODE' DOMINT 'EULER' ;
TDOMINT = 'DOMA' $DOMINT 'VF' ;
MDOMINT = TDOMINT . 'QUAF' ;
*
DOMSYM = DOMINT 'SYMETRIE' 'DROI' P1 P3 ;
'ELIMINATION' DOMINT DOMSYM 0.0001 ;
$DOMSYM = 'MODE' DOMSYM 'EULER' ;
TDOMSYM = 'DOMA' $DOMSYM 'VF' ;
MDOMSYM = TDOMSYM . 'QUAF' ;
*
DOMTOT = DOMSYM 'ET' DOMINT ;
$DOMTOT = 'MODE' DOMTOT 'EULER' ;
TDOMTOT = 'DOMA' $DOMTOT 'VF' ;
MDOMTOT = TDOMTOT . 'QUAF' ;
*
'ELIMINATION' MDOMTOT MDOMSYM 0.0001 ;
'ELIMINATION' MDOMTOT MDOMINT 0.0001 ;
*
*** Calcul du gradient
*
* Gradient sur DOMTOT reduit sur DOMINT =
* gradient sur DOMSYM
*
XX YY = 'COORDONNEE' ('DOMA' $DOMINT 'CENTRE') ;
CHP1 = (3.0 '*' XX '*' XX) '+' (2.11 '*' YY '*' YY) ;
CHP1 = 'NOMC' 'UX' CHP1 'NATU' 'DISCRET' ;
CHP2 = (4.0 '*' XX) '+' (7.0 '*' YY) ;
CHP2 = 'NOMC' 'UY' CHP2 'NATU' 'DISCRET' ;
CHP = CHP1 'ET' CHP2 ;
*
**** Eulescal
*
GRCHP0 ALCHP0 COEF = 'PENT' $DOMINT 'CENTRE' 'EULESCAL'
'LIMITEUR' ('MOTS' 'UX' 'UY') CHP;
* AB: 'SYMETRIE' ne marche pas pour un CHAMPOIN
*
AA = 'EXTRAIRE' GRCHP0 MAIL ;
NN = 'NBNO' AA ;
CHPSYM CACCA = 'KOPS' 'MATRIK' ;
'REPETER' BL1 NN ;
BB = 'POIN' &BL1 AA ;
CC = 'MANUEL' 'POI1' BB ;
DD = CC 'SYMETRIE' 'DROI' P1 P3 ;
VAL1 = 'EXTRAIRE' CHP 'UX' BB ;
VAL2 = 'EXTRAIRE' CHP 'UY' BB ;
CHPSYM = CHPSYM '+' ('MANUEL' 'CHPO' DD 2 'UX' VAL1
'UY' VAL2) ;
'FIN' BL1 ;
*
AA = 'EXTRAIRE' CHPSYM 'MAIL' ;
'ELIMINATION' AA (TDOMTOT . 'CENTRE') 0.0001 ;
CHPTOT = CHP '+' CHPSYM ;
*
GRCHPT ALCHPT COEFT = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL'
'LIMITEUR' ('MOTS' 'UX' 'UY') CHPTOT ;
GRCHP1 = 'REDU' GRCHPT (TDOMINT . 'CENTRE') ;
ERRO = (GRCHP1 '-' GRCHP0) 'ABS' ;
'SI' GRAPH ;
MODT = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
CHM_CHP = 'KCHA' $DOMTOT 'CHAM' CHPTOT ;
'TRACER' CHM_CHP MODT 'TITR' ('CHAINE' 'EULESCAL: champ');
MOD1 = 'MODELISER' ('DOMA' $DOMINT 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' $DOMINT 'CHAM' ERRO ;
'TRACER' CHM_MER MOD1 'TITR' ('CHAINE' 'EULESCAL: erreur');
'FINSI' ;
'SI' (('MAXIMUM' ERRO 'ABS') > 1.0D-8) ;
'ERREUR' 5 ;
'FINSI' ;
*
*
**** Eulevect (NB. angle = 45)
*
GRCHP0 ALCHP0 COEF = 'PENT' $DOMINT 'CENTRE' 'EULEVECT'
'LIMITEUR' ('MOTS' 'UX' 'UY') CHP;
* AB: 'SYMETRIE' ne marche pas pour un CHAMPOIN
*
AA = 'EXTRAIRE' GRCHP0 MAIL ;
NN = 'NBNO' AA ;
CHPSYM CACCA = 'KOPS' 'MATRIK' ;
'REPETER' BL1 NN ;
BB = 'POIN' &BL1 AA ;
CC = 'MANUEL' 'POI1' BB ;
DD = CC 'SYMETRIE' 'DROI' P1 P3 ;
VAL1 = 'EXTRAIRE' CHP 'UX' BB ;
VAL2 = 'EXTRAIRE' CHP 'UY' BB ;
VALT = (VAL1 '+' VAL2) '/' (2.0 '**' 0.5) ;
VALN = -1 '*' ((VAL1 '-' VAL2) '/' (2.0 '**' 0.5)) ;
VALX = (VALN '+' VALT) '/' (2.0 '**' 0.5) ;
VALY = (VALT '-' VALN) '/' (2.0 '**' 0.5) ;
CHPSYM = CHPSYM '+' ('MANUEL' 'CHPO' DD 2 'UX' VALX
'UY' VALY) ;
'FIN' BL1 ;
*
AA = 'EXTRAIRE' CHPSYM 'MAIL' ;
'ELIMINATION' AA (TDOMTOT . 'CENTRE') 0.0001 ;
CHPTOT = CHP '+' CHPSYM ;
*
GRCHPT ALCHPT COEFT = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT'
'LIMITEUR' ('MOTS' 'UX' 'UY') CHPTOT ;
GRCHP1 = 'REDU' GRCHPT (TDOMINT . 'CENTRE') ;
ERRO = (GRCHP1 '-' GRCHP0) 'ABS' ;
'SI' GRAPH ;
MODT = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
CHM_CHP = 'KCHA' $DOMTOT 'CHAM' CHPTOT ;
'TRACER' CHM_CHP MODT 'TITR' ('CHAINE' 'EULESCAL: champ');
MOD1 = 'MODELISER' ('DOMA' $DOMINT 'MAILLAGE') 'THERMIQUE' ;
CHM_MER = 'KCHA' $DOMINT 'CHAM' ERRO ;
'TRACER' CHM_MER MOD1 'TITR' ('CHAINE' 'EULESCAL: erreur');
'FINSI' ;
'SI' (('MAXIMUM' ERRO 'ABS') > 1.0D-8) ;
'ERREUR' 5 ;
'FINSI' ;
'FIN' ;
*
© Cast3M 2003 - All rights reserved.
Disclaimer