Download couplage_TH1D_Th3D_1.dgibi
* fichier : couplage_TH1D_Th3D_1.dgibi
************************************************************************
* NOM : couplage_TH1D_Th3D_1.dgibi
* DESCRIPTION :
*
* Voir rapport DM2S/SFME/LTMF/RT/03-012/B
* Modélisation couplée thermique 3D-thermohydraulique 1D d'un coeur de
* réacteur à caloporteur gaz.
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 22/10/2003, version initiale
* HISTORIQUE : v1, 22/10/2003, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
* Prière de PRENDRE LE TEMPS de compléter les commentaires
* en cas de modification de ce sous-programme afin de faciliter
* la maintenance !
************************************************************************
*
* interact = VRAI : pour une utilisation interactive
* graph = VRAI : pour tracer des choses
* irrad = VRAI : si le combustible est irradié
* pvar = VRAI : si la puissance dégagée dans le combustible à un
* profil sinusoïdale (en fonction de z)
* discr = LINE ou QUAF : discrétisation linéaire (suffisante)
* ou quadratique
interact= FAUX ;
graph = FAUX ;
irrad = VRAI ;
pvar = VRAI ;
discr = 'LINE' ;
*discr = 'QUAF' ;
************************************************************************
*
* Début des procédures
*
'OPTION' 'ECHO' 0 ;
* NOM : ERRREL
* DESCRIPTION : Calcul d'une erreur relative
'DEBPROC' ERRREL ;
'ARGUMENT' val*'FLOTTANT' ;
'ARGUMENT' valref*'FLOTTANT' ;
*
'SI' ('<' ('ABS' valref) 1.D-10) ;
echref = 1.D0 ;
'SINON' ;
echref = valref ;
'FINSI' ;
*
errabs = 'ABS' ('/' ('-' val valref) echref);
*
'RESPRO' errabs ;
'FINPROC' ;
* NOM : TRACCHPO
* DESCRIPTION : Tracé d'un chpoint avec titre optionnel.
'DEBPROC' TRACCHPO ;
'ARGUMENT' pn*'CHPOINT ' ;
'ARGUMENT' mt*'MAILLAGE' ;
'ARGUMENT' mt2/'MAILLAGE' ;
'ARGUMENT' oeil/'POINT ' ;
'ARGUMENT' tit/'MOT ' ;
'SI' ('EXISTE' tit) ;
titpn = 'CHAINE' 'FORMAT' formflot tit titglob ;
'SINON' ;
titpn = 'CHAINE' 'FORMAT' formflot titglob ;
'FINSI' ;
rescal = pn ;
'SI' ('EXISTE' oeil) ;
'SI' ('EXISTE' mt2) ;
'TRACER' 'CACH' oeil rescal mt mt2 'TITR' titpn nbisov ;
'SINON' ;
'TRACER' 'CACH' oeil rescal mt mt 'TITR' titpn nbisov ;
'FINSI' ;
'SINON' ;
'SI' ('EXISTE' mt2) ;
'TRACER' 'CACH' rescal mt mt2 'TITR' titpn nbisov ;
'SINON' ;
'TRACER' 'CACH' rescal mt mt 'TITR' titpn nbisov ;
'FINSI' ;
'FINSI' ;
'FINPROC' ;
* NOM : TRACCHML
* DESCRIPTION : Trace un CHPOINT défini sur les centres des éléments
* (valeur constante par élément) avec titre optionnel
'DEBPROC' TRACCHML ;
'ARGUMENT' chml*'CHPOINT ' ;
'ARGUMENT' $mt*'MMODEL ' ;
'ARGUMENT' mt2/'MAILLAGE' ;
'ARGUMENT' oeil/'POINT ' ;
'ARGUMENT' tit/'MOT ' ;
'SI' ('EXISTE' tit) ;
titpn = 'CHAINE' 'FORMAT' formflot tit titglob ;
'SINON' ;
titpn = 'CHAINE' 'FORMAT' formflot titglob ;
'FINSI' ;
rescal = 'KCHA' $mt chml 'CHAM' ;
modbid = 'MODELISER' ('DOMA' $mt 'MAILLAGE') 'THERMIQUE' ;
'SI' ('EXISTE' oeil) ;
'SI' ('EXISTE' mt2) ;
'TRACER' 'CACH' oeil rescal modbid mt2 'TITR' titpn nbisov ;
'SINON' ;
'TRACER' 'CACH' oeil rescal modbid mt 'TITR' titpn nbisov ;
'FINSI' ;
'SINON' ;
'SI' ('EXISTE' mt2) ;
'TRACER' 'CACH' rescal modbid mt2 'TITR' titpn nbisov ;
'SINON' ;
'TRACER' 'CACH' rescal modbid mt 'TITR' titpn nbisov ;
'FINSI' ;
'FINSI' ;
'FINPROC' ;
* NOM : PRPHE
* Proprietes thermiques de l Helium 4
* Input : PTOT : pression en Pa ou en bars
* T ou TS : temperature sous forme de CHPOINT ou FLOTTANT
*
* Output : RHOHE : densite de l helium (USI) de meme type que T ou TS
* MUHE : viscosite
* LHE : conductivite thermique
* CPHE : capacité calorifique a pression constante
'DEBPROC' PRPHE PTOT*'FLOTTANT' T/'CHPOINT' TS/'FLOTTANT' ;
PREF = 101325. ;
'SI' ('<EG' PTOT PREF) ;
P = PTOT '*' PREF ;
'FINSI' ;
RHE = 2077.22 ;
CPHE = 5193. ;
C1 = 9.489433E-04 ;
C2 = 9.528079E-04 ;
C3 = 3.420680E-02 ;
C4 = 2.739470E-03 ;
C5 = 9.409120E-04 ;
'SI' ('EXIST' T ) ;
B = 'INVE' (T '*' C5 '+' 1.0) ;
B = B '*' C4 '-' (( 'INVE' (T '*' C3 '-' 1.0)) '*' C2);
B = B '+' C1 ;
RHOHE = ('INVE' (T '*' RHE '+' (B '*' P))) '*' P ;
MUHE = ( T '**' 0.687) '*' 3.953E-07 ;
LHE = ( T '**' 0.701 ) '*' 2.774E-03 ;
'RESPROC' RHOHE MUHE LHE CPHE ;
'FINSI' ;
'SI' ('EXIST' TS ) ;
B = 1.0 '/' (TS '*' C5 '+' 1.0) ;
B = B '*' C4 '-' (C2 '/' (TS '*' C3 '-' 1.0)) ;
B = B '+' C1 ;
RHOHE = (P '/' (TS '*' RHE '+' (B '*' P)));
MUHE = ( TS '**' 0.687) '*' 3.953E-07 ;
LHE = ( TS '**' 0.701 ) '*' 2.774E-03 ;
'RESPROC' RHOHE MUHE LHE CPHE ;
'FINSI' ;
'FINPROC' ;
* NOM : PRPCB
* Conductivité thermique d'un combustible CerCer
* Input : T ou TS : temperature sous forme de CHPOINT ou FLOTTANT
* (en K)
* Domaine de validité : 500 a 1300 degres C
* PORO : Porosité de taille contrôlée
* BETA : Coefficient pour la prise en compte de la porosité
* dans la loi de Maxwell-Eucken
* IRRAD : Combustible irradié ou pas ?
* Si irradié, on choisit un taux de combustion de 10 at%
* pour le (U,PU)C et une température d'irradiation
* égale à 1125°C pour le SiC .
* FVOL : Fraction volumique d'inclusions (U,Pu)C
* Le reste est de la matrice (SiC)
* Output : LUPU : conductivité thermique du (U,Pu) de meme type que T
* LSIC : conductivité thermique du Sic de meme type que T
* LCB : conductivité thermique du combustible CerCer
'DEBPROC' PRPCB PORO*'FLOTTANT' BETA*'FLOTTANT'
IRRAD*'LOGIQUE' FVOL*'FLOTTANT'
T/'CHPOINT' TS/'FLOTTANT' ;
* (U,Pu)C
C1 = 12.76D0 ;
C2 = 8.71D-3 ;
C3 = -1.88D-6 ;
* SiC
A = 42.58D0 ;
B = -1.5564D4 ;
C = 1.2977D7 ;
D = -1.8458D9 ;
* SiC irradié
E = 3.91112D-2 ;
F = 2.24732D-3 ;
TIRRADC = 1125.D0 ;
'SI' ('EXISTE' T) ;
TC = '-' T 273.15D0 ;
TC2 = '**' TC 2 ;
* (U,Pu)C non irradie et 100% dense
LUPU1 = '+' ('+' ('*' TC C2) ('*' TC2 C3))
C1 ;
* (U,Pu)C non irradie poreux
CPOR = '/' ('-' 1.D0 PORO) ('+' 1.D0 ('*' BETA PORO)) ;
LUPU2 = '*' LUPU1 CPOR ;
* (U,Pu)C irradie poreux
'SI' IRRAD ;
CIRRAD = ('-' 1.D0 ('*' 0.02D0 10.D0)) ;
LUPU = '*' LUPU2 CIRRAD ;
'SINON' ;
LUPU = LUPU2 ;
'FINSI' ;
* SiC non irradie et 100% dense
IT = 'INVERSE' T ;
IT2 = '**' IT 2 ;
IT3 = '*' IT2 IT ;
LSIC1 = '+' ('+' ('*' IT B)
('+' ('*' IT2 C) ('*' IT3 D)))
A ;
* SiC irradie
'SI' IRRAD ;
CIRRAD = '*' ('EXP' ('*' TIRRADC F))
E ;
LSIC = '*' LSIC1 CIRRAD ;
'SINON' ;
LSIC = LSIC1 ;
'FINSI' ;
* CerCer
LMAT = LSIC ;
LINCL = LUPU ;
LMAT2 = '*' LMAT 2.D0 ;
LMI = '-' LMAT LINCL ;
NUMER = '+' LINCL
('+' LMAT2
('*' LMI ('*' -2.D0 FVOL))) ;
DENOM = '+' LINCL
('+' LMAT2
('*' LMI FVOL)) ;
LCB = '*' LMAT ('*' NUMER ('INVERSE' DENOM)) ;
'RESPROC' LUPU LSIC LCB ;
'FINSI' ;
'SI' ('EXISTE' TS) ;
TSC = '-' TS 273.15D0 ;
TSC2 = '**' TSC 2 ;
* (U,Pu)C non irradie et 100% dense
LUPU1 = '+' ('+' ('*' TSC C2) ('*' TSC2 C3))
C1 ;
* (U,Pu)C non irradie poreux
CPOR = '/' ('-' 1.D0 PORO) ('+' 1.D0 ('*' BETA PORO)) ;
LUPU2 = '*' LUPU1 CPOR ;
* (U,Pu)C irradie poreux
'SI' IRRAD ;
CIRRAD = ('-' 1.D0 ('*' 0.02D0 10.D0)) ;
LUPU = '*' LUPU2 CIRRAD ;
'SINON' ;
LUPU = LUPU2 ;
'FINSI' ;
* SiC non irradie et 100% dense
ITS = '/' 1.D0 TS ;
ITS2 = '**' ITS 2 ;
ITS3 = '*' ITS2 ITS ;
LSIC1 = '+' ('+' ('*' ITS B)
('+' ('*' ITS2 C) ('*' ITS3 D)))
A ;
* SiC irradie
'SI' IRRAD ;
CIRRAD = '*' ('EXP' ('*' TIRRADC F))
E ;
LSIC = '*' LSIC1 CIRRAD ;
'SINON' ;
LSIC = LSIC1 ;
'FINSI' ;
* CerCer
LMAT = LSIC ;
LINCL = LUPU ;
LMAT2 = '*' LMAT 2.D0 ;
LMI = '-' LMAT LINCL ;
NUMER = '+' LINCL
('+' LMAT2
('*' LMI ('*' -2.D0 FVOL))) ;
DENOM = '+' LINCL
('+' LMAT2
('*' LMI FVOL)) ;
LCB = '*' LMAT ('*' NUMER ('/' 1.D0 DENOM)) ;
'RESPROC' LUPU LSIC LCB ;
'FINSI' ;
'FINPROC' ;
* NOM : CALCUL
* DESCRIPTION : Boucle de calcul
'DEBPROC' CALCUL ;
*
* Puissance volumique dans le combustible
*
voltot = haut '*' ('/' 1.D0 8.D0) '*' pas '*' pas '*' t30 ;
volcb = 'MAXIMUM' ('RESULT' ('DOMA' $mtcb 'VOLUME')) ;
pmoy = '*' pvol ('/' voltot volcb) ;
'SI' ('NON' pvar) ;
pcb = pmoy ;
'SINON' ;
gamma = 1.5D0 ;
raddeg = '/' 180.D0 PI ;
zcb = 'COORDONNEE' 3 ('DOMA' $mtcb 'CENTRE') ;
zmoy = '/' haut 2.D0 ;
zcb = '+' zcb ('*' zmoy -1.D0) ;
pmax = '*' pmoy ('/' gamma ('SIN' ('*' raddeg gamma))) ;
fccos = '/' (2.D0 '*' gamma '*' raddeg) haut ;
pcb1 = '*' ('COS' ('*' zcb fccos)) pmax ;
chvol = 'DOMA' $mtcb 'VOLUME' ;
puis1 = 'MAXIMUM' ('RESULT' ('*' chvol pmoy)) ;
puis2 = 'MAXIMUM' ('RESULT' ('*' chvol pcb1)) ;
'SI' ('NON' ('EGA' puis1 puis2 ('*' 0.01 ('ABS' puis2)))) ;
'MESSAGE' ('CHAINE' 'puis1 = ' puis1 ) ;
'MESSAGE' ('CHAINE' 'puis2 = ' puis2 ) ;
'ERREUR' 'Les deux puissances devraient etre a peu pres egales' ;
'FINSI' ;
* Correction
facor = '/' puis1 puis2 ;
pcb2 = '*' pcb1 facor ;
pcb = 'KCHT' $mtcb 'SCAL' 'CENTRE' pcb2 ;
'FINSI' ;
*
* Débit d'hélium
*
qhe = qhenom ;
'MESSAGE' ('CHAINE' 'Débit=' qhe ' kg.m-2.s-1') ;
*
* Initialisation des tables pour les calculs thermiques
* dans le combustible et dans l'hélium
*
rvcb = 'EQEX' 'ITMA' 1 'NITER' 1 'FIDT' 1000 ;
rvcb = 'EQEX' rvcb
'OPTI' 'EF' 'IMPL'
'ZONE' $mtcb 'OPER' 'LAPN' 'LCB' 'INCO' 'TCB'
;
rvcb = 'EQEX' rvcb
'OPTI' 'EF' 'IMPL'
'ZONE' $mtcb 'OPER' 'FIMP' 'PCB' 'INCO' 'TCB'
;
rvcb = 'EQEX' rvcb
'OPTI' 'EF' 'IMPL'
'ZONE' $mtif 'OPER' 'ECHI' 'H' 'T0' 'INCO' 'TCB' 'TCB'
;
rvhe = 'EQEX' 'ITMA' 1 'NITER' 1 'FIDT' 1000 ;
rvhe = 'EQEX' rvhe
'OPTI' 'EF' 'IMPL' 'CENTREE' 'NOCONS'
'ZONE' $mthe 'OPER' 'KONV' 'RCPHE' 'UHE' 'LHE' 'INCO' 'THE'
;
rvhe = 'EQEX' rvhe
'OPTI' 'EF' 'IMPL'
'ZONE' $mthe 'OPER' 'LAPN' 'LHE' 'INCO' 'THE'
;
rvhe = 'EQEX' rvhe
'OPTI' 'EF' 'IMPL'
'ZONE' $mthe 'OPER' 'FIMP' 'PHE' 'INCO' 'THE'
;
rvhe = 'EQEX' rvhe
'CLIM' 'THE' 'TIMP' ('DOMA' $bahe 'MAILLAGE') theek ;
rvi = 'TABLE' 'INCO' ;
rvcb . 'INCO' = rvi ;
rvhe . 'INCO' = rvi ;
rvi . 'TCB' = 'KCHT' $mtcb 'SCAL' 'SOMMET' theek ;
lupu lsic lcb = PRPCB por bet irrad fvo theek ;
rvi . 'LCB' = 'KCHT' $mtcb 'SCAL' 'CENTRE' lcb ;
rvi . 'PCB' = pcb ;
rvi . 'T0' = 'KCHT' $mtif 'SCAL' 'CENTRE' 0.D0 ;
rvi . 'F0' = 'KCHT' $mtif 'SCAL' 'CENTRE' 0.D0 ;
rvi . 'H' = 'KCHT' $mtif 'SCAL' 'CENTRE' 0.D0 ;
rvi . 'THE' = 'KCHT' $mthe 'SCAL' 'SOMMET' theek ;
rvi . 'PHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' 0.D0 ;
*
* Initialisation des propriétés physiques de l'hélium
*
rhe muhe lhe cphe = PRPHE prhe theek ;
uhe = '/' qhe rhe ;
rvi . 'RCPHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' ('*' rhe cphe) ;
rvi . 'LHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' lhe ;
rvi . 'UHE' = 'KCHT' $mthe 'VECT' 'SOMMET' (0.D0 0.D0 uhe) ;
rvi . 'QHE' = qhe ;
*'OPTION' 'DONN' 5 ;
***************************************
*
* BOUCLE DE CALCUL
*
***************************************
'REPETER' bouc 10 ;
* 1) Calcul de la température moyenne dans l'hélium
tmoyhe = 'NOEL' $mthe (rvi . 'THE') ;
'MESSAGE' 'Maxi Temperature moyenne helium (degres C) : '
('-' ('MAXIMUM' tmoyhe) 273.15D0) ;
* 2) Transfert sur l'interface
tmtif = '*' mcf tmoyhe ;
rvi . 'T0' = 'KCHT' $mtif 'SCAL' 'CENTRE' tmtif ;
* 3) Calcul du coefficient d'échange à l'interface
* et des propriétés physiques du combustible
* à partir des températures à l'instant précédent.
* Température de mélange
tm = rvi . 'T0' ;
* Température à la paroi
tp = 'NOEL' $mtif (rvi . 'TCB') ;
t0 = '*' ('+' tm tp) 0.5D0 ;
* t0 = rvi . 'T0' ;
rho0 mu0 l0 cp0 = PRPHE prhe t0 ;
pran0 = '*' ('*' mu0 cp0) ('INVERSE' l0) ;
reyn0 = '*' ('*' qhe diam) ('INVERSE' mu0) ;
* Corrélation de Colburn
nuss0 = 0.023 '*' ('**' reyn0 0.8D0)
'*' ('**' pran0 ('/' 1.D0 3.D0)) ;
h0 = '/' ('*' nuss0 l0) diam ;
rvi . 'H' = 'KCHT' $mtif 'SCAL' 'CENTRE' h0 ;
* Propriétés physiques du combustible
tcbck = 'NOEL' $mtcb (rvi . 'TCB') ;
lupu lsic lcb = PRPCB por bet irrad fvo tcbck ;
rvi . 'LCB' = 'KCHT' $mtcb 'SCAL' 'CENTRE' lcb ;
* 4) Résolution de la thermique dans le combustible
EXEC rvcb ;
* 5) Calcul du flux de chaleur à la surface du combustible
rvmdia1 = 'EQEX' 'OPTI' 'VF' 'IMPL'
'ZONE' $mtif 'OPER' 'MDIA' 'H' 'INCO' 'TCB' 'F0' ;
rvmdia1 . 'INCO' = rvi ;
smdia1 mmdia1 = 'MDIA' (rvmdia1 . '1MDIA') ;
rvmdia2 = 'EQEX' 'OPTI' 'VF' 'IMPL'
'ZONE' $mtif 'OPER' 'MDIA' 'H' 'INCO' 'T0' 'F0' ;
rvmdia2 . 'INCO' = rvi ;
smdia2 mmdia2 = 'MDIA' (rvmdia2 . '1MDIA') ;
f0 = 'NOMC' 'SCAL' ('-' ('KOPS' mmdia1 '*'
('NOMC' 'TCB' (rvi . 'TCB')))
('KOPS' mmdia2 '*'
('NOMC' 'T0' (rvi . 'T0'))))
;
'MESSAGE' 'Flux integre sur la paroi (W) : '
('MAXIMUM' ('RESULT' f0)) ;
* 6) Transfert en une puissance volumique dans l'hélium
rvi . 'F0' = f0 ;
phe = '*' mfc f0 ;
rvi . 'PHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' phe ;
*
* 7) Calcul des propriétés de physiques de l'hélium
* a partir des propriétés à l'instant précédent.
*
theck = 'NOEL' $mthe (rvi . 'THE') ;
thesk = rvi . 'THE' ;
rhec muhec lhec cphec = PRPHE prhe theck ;
rhes muhes lhes cphes = PRPHE prhe thesk ;
uhes = 'NOMC' 'UZ' ('*' qhe ('INVERSE' rhes)) ;
rvi . 'RCPHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' ('*' rhec cphec) ;
rvi . 'LHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' lhec ;
rvi . 'UHE' = 'KCHT' $mthe 'VECT' 'SOMMET' uhes ;
* 8) Calcul de la température dans l'hélium
EXEC rvhe ;
'FIN' bouc ;
'RESPRO' rvi ;
'FINPROC' ;
*
* Fin des procédures
*
************************************************************************
'OPTION' 'ECHO' 1 ;
'TEMPS' 'ZERO' ;
'OPTION' 'DIME' 3 ;
'OPTION' 'ISOV' 'SULI' ;
nbisov = 25 ;
'SI' ('NON' interact) ;
'OPTION' 'TRAC' 'PSC' ;
'OPTION' 'ECHO' 0 ;
'SINON' ;
'OPTION' 'TRAC' 'X' ;
'FINSI' ;
formflot ='(1PE9.2)' ;
***************************************
*
* MAILLAGE
*
***************************************
* géométrie
pas = 21.1D-3 ;
diam = 16.5D-3 ;
haut = 2.D0 ;
*nbase = 10 ;
*nhaut = 20 ;
*nbase = 7 ;
nbase = 5 ;
nhaut = 15 ;
*
* Physique
*
* gaz
prhe = 90.D0 ;
* débit d'hélium (kg.m-2.s-1)
qhenom = 210.D0 ;
** en K !
theec = 480.D0 ;
theek = '+' theec 273.15D0 ;
*
* Combustible
*
*
* Porosité (15%) et coefficient beta (2)
*
por = 0.15D0 ;
bet = 2.D0 ;
*
* Fraction volumique d'inclusions (U,Pu)C (70% pour
* le combustible performant)
*
fvo = 0.7D0 ;
*
* Attention a la définition de la puissance volumique.
* Ici, c'est la puissance totale dégagée par le combustible
* divisée par le volume total (combustible+refroidissement)
* Donc, il y a une correction pour avoir la puissance générée par unité
* de volume de combustible (cf. variable pvol)
*
pvol = 1.D+8 ;
titglob = 'CHAINE' ' Nominal' ;
'SI' irrad ;
titglob = 'CHAINE' titglob ' Cb irradie' ;
'SINON' ;
titglob = 'CHAINE' titglob ' Cb neuf' ;
'FINSI' ;
q = '/' pas 2.D0 ;
R = '/' diam 2.D0 ;
s30 = 'SIN' 30.D0 ;
c30 = 'COS' 30.D0 ;
t30 = '/' s30 c30 ;
* longueurs de chaque ligne
lcer = ('*' ('/' PI 6.D0) R) ;
lpdia = '-' q R ;
lgdia = '-' ('/' q c30) R ;
lhex = ('*' q t30) ;
* On choisit comme échelle la plus petite des longueurs
lbase = 'MINIMUM' ('PROG' lcer lpdia lgdia lhex) ;
* On calcule les facteurs qui permettent d'avoir un maillage
* a peu près régulier en longueurs
fcer = '/' lcer lbase ;
fpdia = '/' lpdia lbase ;
fgdia = '/' lgdia lbase ;
fhex = '/' lhex lbase ;
* maillage
rbase = 'FLOTTANT' nbase ;
ncer = '*' rbase fcer ;
nhex = '*' rbase fhex ;
npdia = '*' rbase fpdia ;
ngdia = '*' rbase fgdia ;
*
ncer = 'ENTIER' ('+' ncer 0.99D0) ;
nhex = 'ENTIER' ('+' nhex 0.99D0) ;
npdia = 'ENTIER' ('+' npdia 0.99D0) ;
ngdia = 'ENTIER' ('+' ngdia 0.99D0) ;
'SI' ('EGA' discr 'LINE') ;
'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
'SINON' ;
'OPTION' 'DIME' 2 'ELEM' 'QUA8' ;
'FINSI' ;
* définition des points pour le combustible
p0 = 0.D0 0.D0 ;
p1 = R 0.D0 ;
p2 = q 0.D0 ;
p3 = q ('*' q t30) ;
p4 = ('*' R c30) ('*' R s30) ;
* définition des lignes pour le combustible
l1 = 'DROIT' npdia p1 p2 ;
l2 = 'DROIT' nhex p2 p3 ;
l3 = 'DROIT' ngdia p3 p4 ;
l4 = 'CERCLE' ncer p4 p0 p1 ;
* définition des surfaces pour le combustible
ctn = l1 'ET' l2 'ET' l3 'ET' l4 ;
stcb = 'SURFACE' ctn 'PLANE' ;
* définition des points pour l'hélium (un triangle isocèle de surface
* égale au secteur circulaire)
Rp = '*' R ('**' ('/' PI 3.D0) 0.5D0) ;
p5 = Rp 0.D0 ;
p6 = ('*' Rp c30) ('*' Rp s30) ;
sthe = 'MANUEL' 'TRI3' p0 p5 p6 ;
'SI' ('NON' ('EGA' discr 'LINE')) ;
sthe = 'CHANGER' 'QUADRATIQUE' sthe ;
'FINSI' ;
*'TRACER' (stcb 'ET' sthe) ;
*
'SI' ('EGA' discr 'LINE') ;
'OPTION' 'DIME' 3 'ELEM' 'CUB8' ;
'SINON' ;
'OPTION' 'DIME' 3 'ELEM' 'CU20' ;
'FINSI' ;
hnh = '/' haut ('FLOTTANT' nhaut) ;
vechau = 0.D0 0.D0 hnh ;
* définition des éléments dans une hauteur élémentaire
bahe = sthe ;
mthe1 = 'VOLUME' sthe 1 'TRAN' vechau ;
mtif1 = 'TRANSLATION' l4 1 vechau ;
mtcb1 = 'VOLUME' stcb 1 'TRAN' vechau ;
mthe = mthe1 ;
mtif = mtif1 ;
mtcb = mtcb1 ;
tabfac = 'TABLE' ;
tabele = 'TABLE' ;
icpt = 1 ;
nmtif1 = 'NBEL' mtif1 ;
'REPETER' imtif1 nmtif1 ;
lmtif1 = 'ELEM' mtif1 &imtif1 ;
tabfac . icpt = lmtif1 ;
tabele . icpt = mthe1 ;
icpt = '+' icpt 1 ;
'FIN' imtif1 ;
* Génération par translation de la hauteur
'REPETER' ihaut ('-' nhaut 1) ;
vectran = 0.D0 0.D0 ('*' hnh ('FLOTTANT' &ihaut)) ;
mthe2 mtif2 mtcb2 = 'PLUS' mthe1 mtif1 mtcb1 vectran ;
nmtif2 = 'NBEL' mtif2 ;
'REPETER' imtif2 nmtif2 ;
lmtif2 = 'ELEM' mtif2 &imtif2 ;
tabfac . icpt = lmtif2 ;
tabele . icpt = mthe2 ;
icpt = '+' icpt 1 ;
'FIN' imtif2 ;
mthe = 'ET' mthe2 mthe ;
mtif = 'ET' mtif2 mtif ;
mtcb = 'ET' mtcb2 mtcb ;
'FIN' ihaut ;
* Génération des lignes dans l'hélium
vechaut = 0.D0 0.D0 haut ;
lighe1 = p0 'DROIT' nhaut ('PLUS' p0 vechaut) ;
lighe2 = p5 'DROIT' nhaut ('PLUS' p5 vechaut) ;
lighe3 = p6 'DROIT' nhaut ('PLUS' p6 vechaut) ;
mt = ('ET' mthe mtcb) ;
pelim = '*' ('**' ('/' ('MESURE' mt) ('NBEL' mt))
('/' 1.D0 ('VALEUR' 'DIME')))
1.D-3 ;
'ELIMINATION' (mtif 'ET' mtcb) pelim ;
'ELIMINATION' (mthe 'ET' bahe 'ET' lighe1
'ET' lighe2 'ET' lighe3)
pelim ;
*
* Génération des QUAFs
*
_bahe = 'CHANGER' bahe 'QUAF' ;
_mthe = 'CHANGER' mthe 'QUAF' ;
_mtif = 'CHANGER' mtif 'QUAF' ;
_mtcb = 'CHANGER' mtcb 'QUAF' ;
***************************************
*
* CREATION DE LA MATRICE DE COUPLAGE
*
***************************************
*
* Génération de connectivites face-centre cfc
* et des matrices de passage centre-face pour projeter T0
* et face-centre pour ramener une intégrale de flux
* a une puissance volumique
*
nitab = 'DIME' tabfac ;
'REPETER' iitab nitab ;
ifac = tabfac . &iitab ;
iqfac = 'CHANGER' ifac 'QUAF' ;
miqfac = 'MODELISER' iqfac 'NAVIER_STOKES' 'QUAF';
ciqfac = ('DOMA' miqfac 'CENTRE') 'POIN' 1 ;
iele = tabele . &iitab ;
iqele = 'CHANGER' iele 'QUAF' ;
miqele = 'MODELISER' iqele 'NAVIER_STOKES' 'QUAF';
ciqele = ('DOMA' miqele 'CENTRE') 'POIN' 1 ;
* Attention ('MESU' iele) ne fonctionne pas en axisymetrique
volele = 'MAXIMUM' ('DOMA' miqele 'VOLUME') ;
clfc = 'MANUEL' 'SEG2' ciqfac ciqele ;
mlcf = 'MANUEL' 'RIGIDITE' clfc ('MOTS' 'T') 'QUEL'
('PROG' 0.D0 1.D0) ('PROG' 0.D0 0.D0) ;
mlfc = 'MANUEL' 'RIGIDITE' clfc ('MOTS' 'T') 'QUEL'
('PROG' 0.D0 0.D0)
('PROG' ('/' 1.D0 volele) 0.D0) ;
'SI' ('EGA' &iitab 1) ;
cfc = clfc ;
mcf = mlcf ;
mfc = mlfc ;
'SINON' ;
cfc = 'ET' cfc clfc ;
mcf = 'ET' mcf mlcf ;
mfc = 'ET' mfc mlfc ;
'FINSI' ;
'FIN' iitab ;
'ELIMINATION' (_bahe 'ET' _mthe 'ET' cfc) pelim ;
'ELIMINATION' (_mtcb 'ET' _mtif 'ET' cfc) pelim ;
mcf = 'CHANGER' mcf 'INCO' ('MOTS' 'T') ('MOTS' 'SCAL')
('MOTS' 'Q') ('MOTS' 'SCAL') ;
mfc = 'CHANGER' mfc 'INCO' ('MOTS' 'T') ('MOTS' 'SCAL')
('MOTS' 'Q') ('MOTS' 'SCAL') ;
***************************************
*
* PREPARATION DU CALCUL
*
***************************************
*
* Modèles Navier-Stokes
*
$bahe = 'MODELISER' _bahe 'NAVIER_STOKES' discr ;
$mthe = 'MODELISER' _mthe 'NAVIER_STOKES' discr ;
$mtif = 'MODELISER' _mtif 'NAVIER_STOKES' discr ;
$mtcb = 'MODELISER' _mtcb 'NAVIER_STOKES' discr ;
rvi = CALCUL ;
tcpu = 'TEMPS' 'NOEC' ;
tcpus = '/' ('FLOTTANT' tcpu) 100.D0 ;
'MESSAGE' ('CHAINE' 'tcpus=' tcpus) ;
***************************************
*
* POST-TRAITEMENT
*
***************************************
'SI' graph ;
*
* Maillage (+ changement d'échelle adéquat)
*
_mt = 'ET' _mthe _mtcb ;
mt = 'ET' mthe mtcb ;
zmt = 'COORDONNEE' 3 _mt ;
factech = ('-' ('/' 1.D0 75.D0) 1.D0) ;
dxmt = 'NOMC' 'UZ' ('*' zmt factech) 'NATURE' 'DISCRET' ;
orig = 'FORME' ;
'FORME' dxmt ;
xmthe ymthe zmthe = 'COORDONNEE' mthe ;
factech = ('-' ('/' 1.D0 4.D0) 1.D0) ;
dxmt = 'ET'
('NOMC' 'UX' ('*' xmthe factech) 'NATURE' 'DISCRET')
('NOMC' 'UY' ('*' ymthe factech) 'NATURE' 'DISCRET')
;
* manipulation maillage et champ de temperature
tcbc = ('-' (rvi . 'TCB') 273.15D0) ;
tcbc2 mtcb2 = tcbc mtcb 'TOURNER' 150.D0
(0.D0 0.D0 0.D0) (0.D0 0.D0 1.D0) ;
thec = ('-' (rvi . 'THE') 273.15D0) ;
thec2 mthe2 = thec mthe 'PLUS' dxmt ;
xmt ymt zmt = 'COORDONNEE' _mt ;
mxmt = 'MAXIMUM' xmt ;
mymt = 'MAXIMUM' ymt ;
mzmt = 'MAXIMUM' zmt ;
oeil = (('*' mxmt 3.D0) ('*' mymt -4.D0) ('*' mzmt 2.85D0)) ;
oeil2 = (('*' mxmt 3.D0) ('*' mymt 4.D0) ('*' mzmt 1.85D0)) ;
mail = 'ET' mtcb mthe2 ;
npomail = 'NBNO' mail ;
nelmail = 'NBEL' mail ;
titmail = 'CHAINE' 'Maillage ' 'NBPO=' npomail
' NBELEM=' nelmail titglob ;
'TRACER' oeil 'CACH' mail 'TITR' titmail ;
*
* Tracé des températures, du coefficient d'échange et de la
* composante verticale des vitesses
*
tit = 'CHAINE' 'Temp. (°C)' ;
tracchpo oeil (tcbc 'ET' tcbc2 'ET' thec2)
(mtcb 'ET' mtcb2 'ET' mthe2)
tit ;
tit = 'CHAINE' 'Temp. Comb. (°C)' ;
*tracchpo oeil tcbc mtcb tit ;
*tracchpo oeil tcbc2 mtcb2 tit ;
tracchpo oeil (tcbc 'ET' tcbc2) (mtcb 'ET' mtcb2) tit ;
* Coefficient d'echange
tit = 'CHAINE' 'Coeff. echange (W.m-2.K-1)' ;
tracchml oeil $mtif (rvi . 'H') mtif tit ;
tit = 'CHAINE' 'Temp. He (°C)' ;
tracchpo oeil ('-' (rvi . 'THE') 273.15D0) mthe tit ;
tit = 'CHAINE' 'Uz He (m.s-1)' ;
tracchpo oeil ('EXCO' 'UZ' (rvi . 'UHE')) mthe tit ;
'FORME' orig ;
*
* Evolutions temperature et vitesse
* dans les deux tubes d'hélium nominal et bouche
*
evthe1 = 'EVOL' 'CHPO' thec lighe1 ;
titthe = 'CHAINE' 'Température Helium' ;
titxthe = 'CHAINE' 's (m)' ;
titythe = 'CHAINE' 'T (°C)' ;
tthe = 'TABLE' ;
tthe . 1 = 'CHAINE' 'MARQ CROI' ;
*tthe . 'TITRE' = 'TABLE' ;
*tthe . 'TITRE' . 1 = 'CHAINE' 'Theda(T) kg.m-3(°C)' ;
'DESSIN' evthe1 'TITR' titthe 'TITX' titxthe 'TITY' titythe
'MIMA' tthe ;
*
rviuhe = rvi . 'UHE' ;
evuzhe1 = 'EVOL' 'CHPO' (rvi . 'UHE') 'UZ' lighe1 ;
tituzhe = 'CHAINE' 'Vitesse verticale Helium' ;
titxuzhe = 'CHAINE' 's (m)' ;
tityuzhe = 'CHAINE' 'uz (m.s-1)' ;
tuzhe = 'TABLE' ;
tuzhe . 1 = 'CHAINE' 'MARQ CROI' ;
*tuzhe . 'TITRE' = 'TABLE' ;
*tuzhe . 'TITRE' . 1 = 'CHAINE' 'Uzheda(T) kg.m-3(°C)' ;
'DESSIN' evuzhe1 'TITR' tituzhe 'TITX' titxuzhe 'TITY' tityuzhe
'MIMA' tuzhe ;
'FINSI' ;
*
* Tableau recapitulatif et vérifications diverses
*
optecho = 'VALEUR' 'ECHO' ;
'OPTION' 'ECHO' 0 ;
'MESSAGE' '**************' ;
'MESSAGE' ('CHAINE' 'couplage_TH1D_Th3D_1 :' titglob) ;
mail = mtcb 'ET' mthe ;
npomail = 'NBNO' mail ;
nelmail = 'NBEL' mail ;
'MESSAGE' ('CHAINE' 'nb. points=' npomail ' ; nb. elem=' nelmail) ;
'MESSAGE' ('CHAINE' 'Temps CPU (s)=' tcpus) ;
'MESSAGE' '-----------' ;
'MESSAGE' 'Verifications :' ;
thek = rvi . 'THE' ;
uhe = rvi . 'UHE' ;
* Symétrie température dans lhélium
evthe1 = 'EVOL' 'CHPO' thek lighe1 ;
evthe2 = 'EVOL' 'CHPO' thek lighe2 ;
evthe3 = 'EVOL' 'CHPO' thek lighe3 ;
the1 = 'EXTRAIRE' evthe1 'ORDO' ;
the2 = 'EXTRAIRE' evthe2 'ORDO' ;
the3 = 'EXTRAIRE' evthe3 'ORDO' ;
the2m1 = 'MAXIMUM' ('-' the2 the1) 'ABS' ;
the3m1 = 'MAXIMUM' ('-' the3 the1) 'ABS' ;
testsym1 = > the2m1 1.D-5 ;
testsym2 = > the3m1 1.D-5 ;
'MESSAGE' 'Symétrie température dans lhélium :' ;
'MESSAGE' ('CHAINE' 'the2m1=' the2m1) ;
'MESSAGE' ('CHAINE' 'the3m1=' the3m1) ;
'SI' ('OU' testsym1 testsym2) ;
'MESSAGE' '!! Temperature non symetrique dans lhelium' ;
'FINSI' ;
* Symétrie Uz dans lhélium
evuzhe1 = 'EVOL' 'CHPO' uhe 'UZ' lighe1 ;
evuzhe2 = 'EVOL' 'CHPO' uhe 'UZ' lighe2 ;
evuzhe3 = 'EVOL' 'CHPO' uhe 'UZ' lighe3 ;
uzhe1 = 'EXTRAIRE' evuzhe1 'ORDO' ;
uzhe2 = 'EXTRAIRE' evuzhe2 'ORDO' ;
uzhe3 = 'EXTRAIRE' evuzhe3 'ORDO' ;
uzhe2m1 = 'MAXIMUM' ('-' uzhe2 uzhe1) 'ABS' ;
uzhe3m1 = 'MAXIMUM' ('-' uzhe3 uzhe1) 'ABS' ;
testsym3 = > uzhe2m1 1.D-5 ;
testsym4 = > uzhe3m1 1.D-5 ;
'MESSAGE' 'Symétrie Uz dans lhélium :' ;
'MESSAGE' ('CHAINE' 'uzhe2m1=' uzhe2m1) ;
'MESSAGE' ('CHAINE' 'uzhe3m1=' uzhe3m1) ;
'SI' ('OU' testsym3 testsym4) ;
'MESSAGE' '!! Uz non symetrique dans lhelium' ;
'FINSI' ;
* Nullité Vitesse horizontale dans lhélium
uhex = 'EXCO' uhe 'UX' ;
uhey = 'EXCO' uhe 'UY' ;
muhex = 'MAXIMUM' uhex 'ABS' ;
muhey = 'MAXIMUM' uhey 'ABS' ;
testsymx = > muhex 1.D-5 ;
testsymy = > muhey 1.D-5 ;
'MESSAGE' 'Nullité Vitesse horizontale dans lhélium :' ;
'MESSAGE' ('CHAINE' 'maxuhex=' muhex) ;
'MESSAGE' ('CHAINE' 'maxuhey=' muhey) ;
'SI' ('OU' testsymx testsymy) ;
'MESSAGE' '!! Composante UX ou UY non nulle dans lhelium' ;
'FINSI' ;
* Verification des bilans d'énergie
* Puissance dégagée dans le combustible
pcb = rvi . 'PCB' ;
chvolcb = 'DOMA' $mtcb 'VOLUME' ;
pdegcb = 'MAXIMUM' ('RESULT' ('*' chvolcb pcb)) ;
* Flux intégré sur la paroi
f0 = rvi . 'F0' ;
pdegif = 'MAXIMUM' ('RESULT' f0) ;
errpif = '*' (ERRREL pdegif pdegcb) 100.D0 ;
* Puissance acquise par l'hélium
* Température en sortie
the = rvi . 'THE' ;
evthe = 'EVOL' 'CHPO' the lighe1 ;
the = 'EXTRAIRE' evthe 'ORDO' ;
tsor = 'EXTRAIRE' the ('DIME' the) ;
tent = 'EXTRAIRE' the 1 ;
she = 'MAXIMUM' ('RESULT' ('DOMA' $bahe 'VOLUME')) ;
* On utilise le fait que le cp de l'hélium
* est à peu près constant
rhes muhes lhes cphes = PRPHE prhe tent ;
qhe = rvi . 'QHE' ;
pdeghe = qhe '*' she '*' cphes '*' ('-' tsor tent) ;
errphe = '*' (ERRREL pdeghe pdegcb) 100.D0 ;
'MESSAGE' 'Bilan energie :' ;
'MESSAGE' ('CHAINE' 'pdegcb=' pdegcb) ;
'MESSAGE' ('CHAINE' 'pdegif=' pdegif
' ; errpif=' errpif ' %') ;
'MESSAGE' ('CHAINE' 'pdeghe=' pdeghe
' ; errphe=' errphe ' %') ;
* Ce sont des erreurs en % (i.e. limite à 0.1%)
testene1 = > errpif 1.D-1 ;
testene2 = > errphe 1.D-1 ;
'SI' ('OU' testene1 testene2) ;
'MESSAGE' '!! Pb. conservation de lenergie' ;
'FINSI' ;
* Verification du péclet de maille dans l'helium
vmoyhe = 'NOEL' $mthe ('EXCO' 'UZ' (rvi . 'UHE')) ;
lmoyhe = '/' ('DOMA' $mthe 'VOLUME') she ;
alphhe = '/' (rvi. 'LHE') (rvi . 'RCPHE') ;
peclhe = '/' ('*' vmoyhe lmoyhe) alphhe ;
pemin = 'MINIMUM' peclhe ;
pemax = 'MAXIMUM' peclhe ;
'MESSAGE' 'Peclet de maille helium :' ;
'MESSAGE' ('CHAINE' 'pemin=' pemin) ;
'MESSAGE' ('CHAINE' 'pemax=' pemax) ;
* Temperature de sortie helium et temp. max combustible
'MESSAGE' '-----------' ;
'MESSAGE' 'Resultats Helium :' ;
the = rvi . 'THE' ;
uhe = 'EXCO' 'UZ' (rvi . 'UHE') ;
evthe = 'EVOL' 'CHPO' the lighe1 ;
evuhe = 'EVOL' 'CHPO' uhe lighe1 ;
othe = 'EXTRAIRE' evthe 'ORDO' ;
ouhe = 'EXTRAIRE' evuhe 'ORDO' ;
thee = 'EXTRAIRE' othe 1 ;
thes = 'EXTRAIRE' othe ('DIME' othe) ;
uhee = 'EXTRAIRE' ouhe 1 ;
uhes = 'EXTRAIRE' ouhe ('DIME' ouhe) ;
'MESSAGE' ('CHAINE' 'Vit. entree helium =' uhee ' m.s-1') ;
'MESSAGE' ('CHAINE' 'Vit. sortie helium =' uhes ' m.s-1') ;
'MESSAGE' ('CHAINE' 'Temp. entree helium =' ('-' thee 273.15D0)
' degres C') ;
'MESSAGE' ('CHAINE' 'Temp. sortie helium =' ('-' thes 273.15D0)
' degres C') ;
'MESSAGE' '-----------' ;
'MESSAGE' 'Resultats Combustible :' ;
tcb = rvi . 'TCB' ;
tmincbc = '-' ('MINIMUM' tcb) 273.15D0 ;
amincbc = 'MAXIMUM' ('COORDONNEE' 3 (tcb 'POIN' 'MINI' 'ABS')) ;
tmaxcbc = '-' ('MAXIMUM' tcb) 273.15D0 ;
amaxcbc = 'MAXIMUM' ('COORDONNEE' 3 (tcb 'POIN' 'MAXI' 'ABS')) ;
'MESSAGE' ('CHAINE' 'Temp. min combustible=' tmincbc ' degres C') ;
'MESSAGE' ('CHAINE' ' altitude =' amincbc ' m') ;
'MESSAGE' ('CHAINE' 'Temp. max combustible=' tmaxcbc ' degres C') ;
'MESSAGE' ('CHAINE' ' altitude =' amaxcbc ' m') ;
* Tests sur Tmax (02/12/03)
* On utilise une discrétisation linéaire et une puissance variable
'SI' ('ET' ('EGA' discr 'LINE') pvar) ;
'SI' irrad ;
tmref = 1.15458D3 ; altref = 1.2D0 ;
'SINON' ;
tmref = 1.10135D3 ; altref = 1.2D0 ;
'FINSI' ;
errtm = '*' (ERRREL tmaxcbc tmref) 100.D0 ;
erral = '*' (ERRREL amaxcbc altref) 100.D0 ;
'MESSAGE' ('CHAINE' 'Temp. max cb ref =' tmref ' degres C') ;
'MESSAGE' ('CHAINE' ' alt. ref =' altref ' m') ;
testtmax = 'OU' (> errtm 1.D-1) (> erral 1.D-1) ;
'SI' testtmax ;
'MESSAGE' '!! Pb. sur Tmax' ;
'FINSI' ;
'MESSAGE' '**************' ;
'SINON' ;
testmax = FAUX ;
'FINSI' ;
'OPTION' 'ECHO' optecho ;
*!
*! Error checking
*!
testerr = testsym1 'OU' testsym2 'OU' testsym3 'OU' testsym4
'OU' testsymx 'OU' testsymy 'OU' testene1 'OU' testene2
'OU' testtmax ;
'SI' testerr ;
'MESSAGE' 'Il y a eu des erreurs' ;
'ERREUR' 5 ;
'FINSI' ;
'SI' interact ;
'OPTION' 'DONN' 5 ;
'FINSI' ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer