* fichier : couplage_TH1D_Th3D_1.dgibi ************************************************************************ * Section : Fluides Thermique ************************************************************************ ************************************************************************ * 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' (' 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' ;