* fichier : grad_01.dgibi
************************************************************************
************************************************************************
************************************************************************
* Cas-test de l'operateur GRADient pour les elements finis *
* 'BARR' *
* 'TUY2' *
* 'TUY3' *
* *
* Avec les formulations : *
* 'DIFFUSION' *
* 'THERMIQUE' *
* *
* *
* Verification & Validation (non analytique) *
* - Calcul d'un profil a partir d'une equation de diffusion *
* - Calcul des gradients des solutions de chaque modele *
* - Comparaison des gradients 'projetes' entre les differents modeles*
* *
*----------------------------------------------------------------------*
* Options generales
* Initialisations
TAB_Mod
= '
TABL' 'ESCLAVE'
; TAB_Mat
= '
TABL' 'ESCLAVE'
; TAB_Cha
= '
TABL' 'ESCLAVE'
;
* Parametrage du maillage
H0 = 0. ;
H1 = 6. ;
H2 = 7. ;
H3 = 8. ;
R0 = 1. ;
R3 = 1.2;
* Description du rayon en fonction de l'altitude
LS = PI * (LR ** 2) ;
EV_S_Z
='
EVOL' 'BRIQ' '
MANU' 'Z' LZ 'SECT' LS
;
* MAILLAGE
P0 = 0. H0 ;
P1 = 0. H1 ;
P2 = 0. H2 ;
P3 = 0. H3 ;
MAIL2
= MAIL1 '
PLUS'
(1.
0.
) ; MAIL3
='
CHAN'
(MAIL1 '
PLUS'
(2.
0.
)) 'QUAD'
; MAIL4
= MAIL1 '
PLUS'
(3.
0.
) ; MAIL5
= MAIL1 '
PLUS'
(4.
0.
) ; MAIL6
='
CHAN'
(MAIL1 '
PLUS'
(5.
0.
)) 'QUAD'
;
'
TRAC' 'QUAL'
(MAIL1 '
ET' MAIL2 '
ET' MAIL3 '
ET' MAIL4 '
ET' MAIL5 '
ET' MAIL6
);
* Points et MAILLAGES particulers a NOMMER
P01
='
POIN' MAIL1 'PROC'
(P0 '
PLUS'
(1.
0.
)); P02
='
POIN' MAIL2 'PROC'
(P0 '
PLUS'
(2.
0.
)); P03
='
POIN' MAIL3 'PROC'
(P0 '
PLUS'
(3.
0.
)); P04
='
POIN' MAIL4 'PROC'
(P0 '
PLUS'
(4.
0.
)); P05
='
POIN' MAIL5 'PROC'
(P0 '
PLUS'
(5.
0.
)); P06
='
POIN' MAIL6 'PROC'
(P0 '
PLUS'
(6.
0.
));
P21
='
POIN' MAIL1 'PROC'
(P2 '
PLUS'
(1.
0.
)); P22
='
POIN' MAIL2 'PROC'
(P2 '
PLUS'
(2.
0.
)); P23
='
POIN' MAIL3 'PROC'
(P2 '
PLUS'
(3.
0.
)); P24
='
POIN' MAIL4 'PROC'
(P2 '
PLUS'
(4.
0.
)); P25
='
POIN' MAIL5 'PROC'
(P2 '
PLUS'
(5.
0.
)); P26
='
POIN' MAIL6 'PROC'
(P2 '
PLUS'
(6.
0.
));
P31
='
POIN' MAIL1 'PROC'
(P3 '
PLUS'
(1.
0.
)); P32
='
POIN' MAIL2 'PROC'
(P3 '
PLUS'
(2.
0.
)); P33
='
POIN' MAIL3 'PROC'
(P3 '
PLUS'
(3.
0.
)); P34
='
POIN' MAIL4 'PROC'
(P3 '
PLUS'
(4.
0.
)); P35
='
POIN' MAIL5 'PROC'
(P3 '
PLUS'
(5.
0.
)); P36
='
POIN' MAIL6 'PROC'
(P3 '
PLUS'
(6.
0.
));
MAILDIF = MAIL1 'ET' MAIL2 'ET' MAIL3 ;
MAILTHE = MAIL4 'ET' MAIL5 'ET' MAIL6 ;
* MODELE
TAB_Mod .
1 ='
MODE' MAIL1 'DIFFUSION' 'TUY2' 'INCO' 'V1' 'Q1'
; TAB_Mod .
2 ='
MODE' MAIL2 'DIFFUSION' 'BARR' 'INCO' 'V2' 'Q2'
; TAB_Mod .
3 ='
MODE' MAIL3 'DIFFUSION' 'TUY3' 'INCO' 'V3' 'Q3'
; TAB_Mod .
4 ='
MODE' MAIL4 'THERMIQUE' 'TUY2'
; TAB_Mod .
5 ='
MODE' MAIL5 'THERMIQUE' 'BARR'
; TAB_Mod .
6 ='
MODE' MAIL6 'THERMIQUE' 'TUY3'
;
* Extraction des inconnues
*ITHER='EXIS' MOD1 'FORM' 'THERMIQUE';
* Flux generalise injecte a l'altitude de P2 et CHARGEMENT constant
CHPinj1
='
MANU' '
CHPO' P21
1 DUA1
1.2 'NATURE' 'DISCRET'
; CHPinj2
='
MANU' '
CHPO' P22
1 DUA2
1.2 'NATURE' 'DISCRET'
; CHPinj3
='
MANU' '
CHPO' P23
1 DUA3
1.2 'NATURE' 'DISCRET'
; CHPinj4
='
MANU' '
CHPO' P24
1 DUA4
1.2 'NATURE' 'DISCRET'
; CHPinj5
='
MANU' '
CHPO' P25
1 DUA5
1.2 'NATURE' 'DISCRET'
; CHPinj6
='
MANU' '
CHPO' P26
1 DUA6
1.2 'NATURE' 'DISCRET'
;
id_Cha
=('
DIME' TAB_Cha
) - 2 ; TAB_Cha .
(1 + id_Cha
) = '
CHAR' DUA1 CHPinj1
; TAB_Cha .
(2 + id_Cha
) = '
CHAR' DUA2 CHPinj2
; TAB_Cha .
(3 + id_Cha
) = '
CHAR' DUA3 CHPinj3
; TAB_Cha .
(4 + id_Cha
) = '
CHAR' DUA4 CHPinj4
; TAB_Cha .
(5 + id_Cha
) = '
CHAR' DUA5 CHPinj5
; TAB_Cha .
(6 + id_Cha
) = '
CHAR' DUA6 CHPinj6
;
* Flux generalise de soutirage en bas
CHPsou1
='
MANU' '
CHPO' P01
1 DUA1
-0.5 'NATURE' 'DISCRET'
; CHPsou2
='
MANU' '
CHPO' P02
1 DUA2
-0.5 'NATURE' 'DISCRET'
; CHPsou3
='
MANU' '
CHPO' P03
1 DUA3
-0.5 'NATURE' 'DISCRET'
; CHPsou4
='
MANU' '
CHPO' P04
1 DUA4
-0.5 'NATURE' 'DISCRET'
; CHPsou5
='
MANU' '
CHPO' P05
1 DUA5
-0.5 'NATURE' 'DISCRET'
; CHPsou6
='
MANU' '
CHPO' P06
1 DUA6
-0.5 'NATURE' 'DISCRET'
;
id_Cha
=('
DIME' TAB_Cha
) - 2 ; TAB_Cha .
(1 + id_Cha
) = '
CHAR' DUA1 CHPsou1
; TAB_Cha .
(2 + id_Cha
) = '
CHAR' DUA2 CHPsou2
; TAB_Cha .
(3 + id_Cha
) = '
CHAR' DUA3 CHPsou3
; TAB_Cha .
(4 + id_Cha
) = '
CHAR' DUA4 CHPsou4
; TAB_Cha .
(5 + id_Cha
) = '
CHAR' DUA5 CHPsou5
; TAB_Cha .
(6 + id_Cha
) = '
CHAR' DUA6 CHPsou6
;
* MATERIAU
CooZ1
='
NOMC'
('
COOR'
2 ('
MANU' 'CHML'
(TAB_Mod .
1) 'SCAL'
1. 'STRESSES'
)) 'Z'
; CooZ2
='
NOMC'
('
COOR'
2 ('
MANU' 'CHML'
(TAB_Mod .
2) 'SCAL'
1. 'STRESSES'
)) 'Z'
; CooZ3
='
NOMC'
('
COOR'
2 ('
MANU' 'CHML'
(TAB_Mod .
3) 'SCAL'
1. 'STRESSES'
)) 'Z'
; CooZ4
='
NOMC'
('
COOR'
2 ('
MANU' 'CHML'
(TAB_Mod .
4) 'SCAL'
1. 'STRESSES'
)) 'Z'
; CooZ5
='
NOMC'
('
COOR'
2 ('
MANU' 'CHML'
(TAB_Mod .
5) 'SCAL'
1. 'STRESSES'
)) 'Z'
; CooZ6
='
NOMC'
('
COOR'
2 ('
MANU' 'CHML'
(TAB_Mod .
6) 'SCAL'
1. 'STRESSES'
)) 'Z'
;
Sect1
='
IPOL' CooZ1 EV_S_Z
; Sect2
='
IPOL' CooZ2 EV_S_Z
; Sect3
='
IPOL' CooZ3 EV_S_Z
; Sect4
='
IPOL' CooZ4 EV_S_Z
; Sect5
='
IPOL' CooZ5 EV_S_Z
; Sect6
='
IPOL' CooZ6 EV_S_Z
;
TAB_Mat .
1 ='
MATE'
(TAB_Mod .
1) 'KD'
1. 'SECT' Sect1
; TAB_Mat .
2 ='
MATE'
(TAB_Mod .
2) 'KD'
1. 'SECT' Sect2
; TAB_Mat .
3 ='
MATE'
(TAB_Mod .
3) 'KD'
1. 'SECT' Sect3
; TAB_Mat .
4 ='
MATE'
(TAB_Mod .
4) 'KD'
1. 'SECT' Sect4
; TAB_Mat .
5 ='
MATE'
(TAB_Mod .
5) 'KD'
1. 'SECT' Sect5
; TAB_Mat .
6 ='
MATE'
(TAB_Mod .
6) 'KD'
1. 'SECT' Sect6
;
* BLOCAGES, et VALEURS_IMPOSEES ;
id_Cha
=('
DIME' TAB_Cha
) - 2 ; TAB_Cha .
(1 + id_Cha
) = '
CHAR' 'CIMP' DEPI1
; TAB_Cha .
(2 + id_Cha
) = '
CHAR' 'CIMP' DEPI2
; TAB_Cha .
(3 + id_Cha
) = '
CHAR' 'CIMP' DEPI3
; TAB_Cha .
(4 + id_Cha
) = '
CHAR' 'TIMP' DEPI4
; TAB_Cha .
(5 + id_Cha
) = '
CHAR' 'TIMP' DEPI5
; TAB_Cha .
(6 + id_Cha
) = '
CHAR' 'TIMP' DEPI6
;
* Calcul PASAPAS
TAB1.'TEMPS_CALCULES'
='
PROG'
0.
PAS 1.
1.
; TAB1.'MODELE' = MODTOT ;
TAB1.'CARACTERISTIQUES' = MATTOT ;
TAB1.'BLOCAGES_DIFFUSIONS' = BLO1 'ET' BLO2 'ET' BLO3 ;
TAB1.'BLOCAGES_THERMIQUES' = BLO4 'ET' BLO5 'ET' BLO6 ;
TAB1.'CHARGEMENT' =CHATOT ;
* Post-Traitement
Dim1
=('
DIME'
(TAB1 . 'TEMPS'
)) - 1 ; Solfin = (TAB1.'CONCENTRATIONS'. Dim1) 'ET' (TAB1.'TEMPERATURES'. Dim1) ;
Soltrac
=('
EXCO' Solfin INC1
) '
ET'
('
EXCO' Solfin INC2
) '
ET'
('
EXCO' Solfin INC3
) '
ET'
('
EXCO' Solfin INC4
) ; '
TRAC' Soltrac
(MAILDIF '
ET' MAILTHE
) ;
* Calcul du gradient sur le modele complet
Gradfin1
='
GRAD' MODTOT Solfin
; Gradfin2
='
CHAN' 'NOEUD' Gradfin1 MODTOT
; CHPgrad
='
CHAN' '
CHPO' Gradfin1 MODTOT
;
* Pour tracer l'évolution du gradient
EVgrad1
='
EVOL' 'BLEU' '
CHPO' CHPgrad 'V1,S' MAIL1
; EVgrad2
='
EVOL' 'ROUG' '
CHPO' CHPgrad 'V2,S' MAIL2
; EVgrad3
='
EVOL' 'ROSE' '
CHPO' CHPgrad 'V3,S' MAIL3
; EVgrad4
='
EVOL' 'VERT' '
CHPO' CHPgrad 'T,S' MAIL4
; EVgrad5
='
EVOL' 'TURQ' '
CHPO' CHPgrad 'T,S' MAIL5
; EVgrad6
='
EVOL' 'JAUN' '
CHPO' CHPgrad 'T,S' MAIL6
;
'
DESS'
(EVgrad1 '
ET' EVgrad2 '
ET' EVgrad3 '
ET' EVgrad4 '
ET' EVgrad5 '
ET' EVgrad6
) ;
* VERIFICATION du resultat de GRAD
* On utilise le MAILLAGE lineaire pour la comparaison ==> Interpolation sur le maillage LINEAIRE
Absc1
='
EXTR' EVgrad1 'ABSC'
1 ;
* Les valeurs du gradient 'CHPOINT' doivent être identiques (a epsilon pres entre les LINEAIRES et QUADRATIQUES)
Maxi1
='
MAXI' '
ABS' Ordo1
; Maxi3
='
MAXI' '
ABS' Ordo3
;
* Lineaires ensembles
Maxi21
='
MAXI' '
ABS'
(Ordo2
- Ordo1
) ; Maxi41
='
MAXI' '
ABS'
(Ordo4
- Ordo1
) ; Maxi51
='
MAXI' '
ABS'
(Ordo5
- Ordo1
) ; Maxtot1
=('
MAXI' Maxi21 Maxi41 Maxi51
) / Maxi1
;
* Quadratiques ensembles
Maxi63
='
MAXI' '
ABS'
(Ordo6
- Ordo3
) ; Maxtot2 = Maxi63 / Maxi3 ;
* Erreur entre LINEAIRE et QUADRATIQUES (attention au saut proche de l'injection)
Maxi31
='
MAXI' '
ABS'
(Ordo3
- Ordo1
) ; Maxtot3 = Maxi31 / Maxi1 ;
'
MESS' 'Erreur relative entre les LINEAIRES :' Maxtot1
;'
MESS' 'Erreur relative entre les QUADRATIQUES :' Maxtot2
;'
MESS' 'Erreur relative entre LINEAIRE
et QUADRATIQUE :' Maxtot3
;
****************************
* Erreur dans certains cas
****************************
Prec1 =9.6E-12 ;
'SI' (Maxtot1 '>' Prec1);
'
MESS' 'A
-Erreur trop grande lors de la comparaison des GRADIENTS'
;'FINS';
Prec2 =3.1E-11 ;
'SI' (Maxtot2 '>' Prec2);
'
MESS' 'B
-Erreur trop grande lors de la comparaison des GRADIENTS'
;'FINS';
Prec3 =1.37D-4 ;
'SI' (Maxtot3 '>' Prec3);
'
MESS' 'C
-Erreur trop grande lors de la comparaison des GRADIENTS'
;'FINS';
'FIN';