Télécharger couplage_TH1D_Th3D.dgibi
* fichier : couplage_TH1D_Th3D.dgibi ************************************************************************ ************************************************************************ 'OPTION' 'ECHO' 0 ; * From ~/nlin/sources_dev_new/util_proc : *BEGINPROCEDUR append ************************************************************************ * NOM : APPEND * DESCRIPTION : Rajoute : * - un entier à un listentier * - un réel à un listreel * - un objet (liste, evolution, matrice ou chpoint) * à un indice de table ('MOT' ou 'ENTIER') * * si l'indice n'existe pas * * 'ET' si l'indice existe * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 10/09/2004, version initiale * HISTORIQUE : v1, 10/09/2004, 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 ! ************************************************************************ * * 'DEBPROC' APPEND ; 'ARGUMENT' tab/'TABLE' ; 'SI' ('EXISTE' tab) ; 'SI' ('NON' ('EXISTE' itab)) ; 'ARGUMENT' itab*'ENTIER' ; 'FINSI' ; lobj = FAUX ; 'SI' ('NON' lobj) ; 'ARGUMENT' lr/'LISTREEL' ; 'SI' ('EXISTE' lr) ; obj = lr ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'ARGUMENT' le/'LISTENTI' ; 'SI' ('EXISTE' le) ; obj = le ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'ARGUMENT' lev/'EVOLUTION' ; 'SI' ('EXISTE' lev) ; obj = lev ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'ARGUMENT' lm/'MAILLAGE' ; 'SI' ('EXISTE' lm) ; obj = lm ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'ARGUMENT' rig/'RIGIDITE' ; 'SI' ('EXISTE' rig) ; obj = rig ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'ARGUMENT' matk/'MATRIK' ; 'SI' ('EXISTE' matk) ; obj = matk ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; cherr = 'CHAINE' 'Il faut fournir un objet liste, evolution, matrice ou chpoint.' ; 'ERREUR' cherr ; 'FINSI' ; 'SI' ('EXISTE' tab itab) ; tab . itab = 'ET' (tab . itab) obj ; 'SINON' ; tab . itab = obj ; 'FINSI' ; 'RESPRO' tab ; 'FINSI' ; 'ARGUMENT' lenti/'LISTENTI' ; 'ARGUMENT' lreel/'LISTREEL' ; 'SI' ('EXISTE' lenti) ; 'ARGUMENT' enti*'ENTIER' ; 'RESPRO' lenti ; 'FINSI' ; 'SI' ('EXISTE' lreel) ; 'ARGUMENT' reel*'FLOTTANT' ; 'RESPRO' lreel ; 'FINSI' ; * * End of procedure file APPEND * 'FINPROC' ; *ENDPROCEDUR append *BEGINPROCEDUR errrel ************************************************************************ * NOM : ERRREL * DESCRIPTION : Calcul d'une erreur relative * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/04/2003, version initiale * HISTORIQUE : v1, 23/04/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 ! ************************************************************************ * * '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 ; * * End of procedure file ERRREL * 'FINPROC' ; *ENDPROCEDUR errrel *BEGINPROCEDUR exmomod ************************************************************************ * NOM : EXMOMOD * DESCRIPTION : Extraction d'un mot d'un listmots * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/06/2003, version initiale * HISTORIQUE : v1, 23/06/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 ! ************************************************************************ * * 'DEBPROC' EXMOMOD ; 'ARGUMENT' lm*'LISTMOTS' i*'ENTIER' ; k = '+' (MODULO ('-' i 1) j) 1 ; lemot = 'EXTRAIRE' lm k ; * Usage de l'opérateur text pour éviter que lemot * ne soit interprété comme un opérateur 'RESPRO' 'TEXTE' lemot ; * * End of procedure file EXMOMOD * 'FINPROC' ; *ENDPROCEDUR exmomod *BEGINPROCEDUR formar ************************************************************************ * NOM : FORMAR * DESCRIPTION : formate un réel de facon courte * pratique pour les noms de * sauvegarde * Exemples : * 'MESSAGE' ('CHAINE' (formar 2.9e5 1)) ; * 2.9E5 * 'MESSAGE' ('CHAINE' (formar -2.9e5 1)) ; * -2.9E5 * 'MESSAGE' ('CHAINE' (formar 2.9e-5 1)) ; * 2.9E-5 * 'MESSAGE' ('CHAINE' (formar -2.9e-5 1)) ; * -2.9E-5 * 'MESSAGE' ('CHAINE' (formar 2.9 1)) ; * 2.9 * 'MESSAGE' ('CHAINE' (formar -2.9 1)) ; * -2.9 * 'MESSAGE' ('CHAINE' (formar 0 1)) ; * 0 * 'MESSAGE' ('CHAINE' (formar 0 1)) ; * 0 * 'MESSAGE' ('CHAINE' (formar 2.9e5 0)) ; * 3E5 * 'MESSAGE' ('CHAINE' (formar -2.9e5 0)) ; * -3E5 * 'MESSAGE' ('CHAINE' (formar 2.9e-5 0)) ; * 3E-5 * 'MESSAGE' ('CHAINE' (formar -2.9e-5 0)) ; * -3E-5 * 'MESSAGE' ('CHAINE' (formar 2.9 0)) ; * 3 * 'MESSAGE' ('CHAINE' (formar -2.9 0)) ; * -3 * 'MESSAGE' ('CHAINE' (formar 0 0)) ; * 0 * 'MESSAGE' ('CHAINE' (formar 0 0)) ; * 0 * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 18/02/2003, version initiale * HISTORIQUE : v1, 18/02/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 ! ************************************************************************ * * 'DEBPROC' FORMAR ; 'ARGUMENT' fl*'FLOTTANT' ; 'ARGUMENT' vir/'ENTIER ' ; 'SI' ('NON' ('EXISTE' vir)) ; vir = 1 ; 'SINON' ; 'SI' ('<' vir 0) ; 'ERREUR' 'fournir un entier positif' ; 'FINSI' ; 'FINSI' ; 'SI' ('<' ('ABS' fl) 10.D-100) ; chfl = 'CHAINE' '0' ; 'SINON' ; *! sans le 1.D-10, ca ne fonctionne pas *! qd on entre pile poil une puissance de 10 lfl = LOG10 ('ABS' fl) ; * lfl = '+' (LOG10 ('ABS' fl)) 1.D-10 ; slfl = 'SIGNE' ('ENTIER' lfl) ; 'SI' ('EGA' slfl 1) ; elfl = 'ENTIER' lfl ; 'SINON' ; elfl = '-' ('ENTIER' lfl) 1 ; 'FINSI' ; man = '/' fl ('**' 10.D0 elfl) ; * * Une verrue pour des histoires de précision... * 'SI' ('EGA' man 10.D0 ('**' 10.D0 ('*' vir -1.D0))) ; man = '/' man 10.D0 ; elfl = '+' elfl 1 ; 'FINSI' ; * sman = 'SIGNE' man ; 'SI' ('EGA' sman 1) ; fman = 'CHAINE' '(F' ('+' vir 2) '.0' vir ')' ; 'SINON' ; fman = 'CHAINE' '(F' ('+' vir 3) '.0' vir ')' ; 'FINSI' ; 'SI' ('NEG' vir 0) ; 'SI' ('NEG' elfl 0) ; chfl = 'CHAINE' 'FORMAT' fman man 'E' elfl ; 'SINON' ; chfl = 'CHAINE' 'FORMAT' fman man ; 'FINSI' ; 'SINON' ; man2 = 'ENTIER' ('+' man ('*' 0.5D0 sman)) ; 'SI' ('NEG' elfl 0) ; chfl = 'CHAINE' man2 'E' elfl ; 'SINON' ; chfl = 'CHAINE' man2 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'RESPRO' chfl ; * * End of procedure file FORMAR * 'FINPROC' ; *ENDPROCEDUR formar *BEGINPROCEDUR log10 ************************************************************************ * NOM : LOG10 * DESCRIPTION : Log_10 * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 18/02/2003, version initiale * HISTORIQUE : v1, 18/02/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 ! ************************************************************************ * * 'DEBPROC' LOG10 ; 'ARGUMENT' fl/'FLOTTANT' ; 'ARGUMENT' lr/'LISTREEL' ; 'ARGUMENT' cp/'CHPOINT ' ; 'ARGUMENT' cm/'MCHAML ' ; 'SI' ('EXISTE' fl) ; 'RESPRO' ('/' ('LOG' fl) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('EXISTE' lr) ; 'RESPRO' ('/' ('LOG' lr) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('EXISTE' cp) ; 'RESPRO' ('/' ('LOG' cp) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('EXISTE' cm) ; 'RESPRO' ('/' ('LOG' cm) ('LOG' 10.D0)) ; 'FINSI' ; * * End of procedure file LOG10 * 'FINPROC' ; *ENDPROCEDUR log10 *BEGINPROCEDUR modulo ************************************************************************ * NOM : MODULO * DESCRIPTION : Calcule un entier modulo un autre... * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 15/10/2002, version initiale * HISTORIQUE : v1, 15/10/2002, 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 ! ************************************************************************ * * 'DEBPROC' MODULO ; 'ARGUMENT' i*'ENTIER' j*'ENTIER' ; 'SI' ('EGA' j 0) ; 'MESSAGE' 'Impossible de faire modulo 0' ; 'ERREUR' 5 ; 'SINON' ; k=i '/' j ; mod=i '-' ( k '*'j ) ; 'RESPRO' mod ; 'FINSI' ; * * End of procedure file MODULO * 'FINPROC' ; *ENDPROCEDUR modulo * From . : *BEGINPROCEDUR calcoeil ************************************************************************ * NOM : CALCOEIL * DESCRIPTION : Calcul un oeil absolu convenable pour les tracés * en donnant un oeil relatif et un maillage * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 16/11/2004, version initiale * HISTORIQUE : v1, 16/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' CALCOEIL ; 'ARGUMENT' mt*'MAILLAGE' ; 'ARGUMENT' foeil*'POINT' ; foeilx foeily foeilz = 'COORDONNEE' foeil ; xmt ymt zmt = 'COORDONNEE' mt ; maxmt = 'MAXIMUM' xmt ; maymt = 'MAXIMUM' ymt ; mazmt = 'MAXIMUM' zmt ; dx = '-' ('MAXIMUM' xmt) ('MINIMUM' xmt) ; dy = '-' ('MAXIMUM' ymt) ('MINIMUM' ymt) ; dz = '-' ('MAXIMUM' zmt) ('MINIMUM' zmt) ; xoeil = '+' maxmt ('*' dxy foeilx) ; yoeil = '+' maymt ('*' dxy foeily) ; zoeil = '+' mazmt ('*' dz foeilz) ; oeil = xoeil yoeil zoeil ; 'RESPRO' oeil ; * * End of procedure file CALCOEIL * 'FINPROC' ; *ENDPROCEDUR calcoeil *BEGINPROCEDUR compute ************************************************************************ * NOM : COMPUTE * DESCRIPTION : Do the computations of the stationnary fields * in the reactor * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 09/11/2004, version initiale * HISTORIQUE : v1, 09/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' COMPUTE ; * 'ARGUMENT' tabdat*'TABLE' ; * * First store all the parameters to make tabres self-contained * tabres = 'TABLE' 'INCO' ; tabres . 'tabdat' = tabdat ; * * Second, retrieve parameters from tables * tabgeo = tabdat . 'tabgeo' ; tabphy = tabdat . 'tabphy' ; tabnum = tabdat . 'tabnum' ; * H = tabgeo . 'H' ; nh = tabgeo . 'nh' ; $mtcbst = tabgeo . '$mtcbst' ; $mtcb = tabgeo . '$mtcb' ; $mthe = tabgeo . '$mthe' ; $sthe = tabgeo . '$sthe' ; $mtif = tabgeo . '$mtif' ; *'SI' logb ; * $mtifb = tabgeo . '$mtifb' ; *'FINSI' ; mcf = tabgeo . 'mcf' ; mfc = tabgeo . 'mfc' ; * Dh = tabphy . 'Dh' ; chblock= tabphy . 'chblock' ; *vhe = tabphy . 'vhe' ; qhe = tabphy . 'qhe' ; prhe = tabphy . 'prhe' ; theek = tabphy . 'theek' ; pvol = tabphy . 'pvol' ; pvar = tabphy . 'pvar' ; gamma = tabphy . 'gamma' ; irrad = tabphy . 'irrad' ; pcb = tabphy . 'pcb' ; * maxit = tabnum . 'maxit' ; rescvg = tabnum . 'rescvg' ; solvit = tabnum . 'solvit' ; omcbst = tabnum . 'omcbst' ; omhe = tabnum . 'omhe' ; * * Initialization of the tables for the thermal * computation in the fuel+structure (rvcbst) * and in the helium (rvhe) * rvcbst = 'EQEX' rvcbst 'OPTI' 'EF' 'IMPL' 'ZONE' $mtcbst 'OPER' 'LAPN' 'LCBST' 'INCO' 'TCBS' ; rvcbst = 'EQEX' rvcbst 'OPTI' 'EF' 'IMPL' 'ZONE' $mtcb 'OPER' 'FIMP' 'PCB' 'INCO' 'TCBS' ; rvcbst = 'EQEX' rvcbst 'OPTI' 'EF' 'IMPL' 'ZONE' $mtif 'OPER' 'ECHI' 'H' 'T0' 'INCO' 'TCBS' 'TCBS' ; * * Iterative solver for the fuel+structure part * * 1 : direct solver, more robust, slower * 3 : iterative solver, less robust, faster 'SI' solvit ; rvcbst . 'METHINV' . 'TYPINV' = 3 ; 'SINON' ; rvcbst . 'METHINV' . 'TYPINV' = 1 ; 'FINSI' ; * 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 rvcbst . 'INCO' = tabres ; rvhe . 'INCO' = tabres ; lupu lsic lcb okcb = PRPCB irrad theek ; tabres . 'LCBST' = 'KCHT' $mtcbst 'SCAL' 'CENTRE' lsic tabres . 'PCB' = pcb ; thep = 'COPIER' (tabres . 'THE') ; tcbsp = 'COPIER' (tabres . 'TCBS') ; * * Initialization of the physical properties of helium * rhe muhe lhe cphe okhe = PRPHE prhe theek ; *qhe = '*' rhe vhe ; qheb = '*' qhe chblock ; * Ce KCHT est indispensable car '*' supprimme les valeurs nulles... *tabres . 'UHE' = 'KCHT' $mthe 'VECT' 'SOMMET' (0.D0 0.D0 uhe) ; *tabres . 'QHE' = qhe ; tabres . 'QHE' = qheb ; *************************************** * * COMPUTATIONAL LOOP * *************************************** * Number of non-linearity iterations maxiter = vrai ; * 'REPETER' bouc maxit ; * 1) Compute a mean temperature in helium 'MESSAGE' 'Maximum mean helium temperature (degrees C) : ' ('-' ('MAXIMUM' tmoyhe) 273.15D0) ; * 2) Transfer this temperature on the interfaces tmtif = '*' mcf tmoyhe ; * Ce KCHT est indispensable car '*' supprimme les valeurs nulles... * 3) Compute the exchange coefficient at the interface * and the physical properties of the fuel and the * structure with the temperature from the * previous iteration * Mixing temperature tm = tabres . 'T0' ; * Wall temperature t0 = '*' ('+' tm tp) 0.5D0 ; * t0 = tabres . 'T0' ; rho0 mu0 l0 cp0 okhe = PRPHE prhe t0 ; pran0 = '*' ('*' mu0 cp0) ('INVERSE' l0) ; * reyn0 = '*' ('*' qhe Dh) ('INVERSE' mu0) ; reyn0 = '*' ('*' qhebi Dh) ('INVERSE' mu0) ; * Colburn correlation nuss0 = 0.023 '*' ('**' reyn0 0.8D0) '*' ('**' pran0 ('/' 1.D0 3.D0)) ; h0 = '/' ('*' nuss0 l0) Dh ; * Tests * asp = '/' H Dh ; minasp = 60. ; minreyn = 1.D4 ; minpran = 0.65 ; maxpran = 160. ; asp = '/' H ('MAXIMUM' Dh) ; mireyn = 'MINIMUM' reyn0 ; mareyn = 'MAXIMUM' reyn0 ; okreyn = '>' mireyn minreyn ; mipran = 'MINIMUM' pran0 ; mapran = 'MAXIMUM' pran0 ; * okpr = 'ET' ('>' mipran 0.7) ('<' mapran 160.) ; okipr = '>' mipran minpran ; okapr = '<' mapran maxpran ; okpr = 'ET' okipr okapr ; okasp = '>' asp minasp ; oknuss = okreyn 'ET' okpr 'ET' okasp ; 'SI' ('NON' oknuss) ; cherr = 'CHAINE' '!! Correlation de Colburn non valide' ; 'MESSAGE' cherr ; 'SI' ('NON' okreyn) ; cherr = 'CHAINE' ' min Re=' (formar mireyn 2) ' (should be ' (formar minreyn 2) ')' ; 'MESSAGE' cherr ; cherr = 'CHAINE' ' (Note : max Re=' (formar mareyn 2) ')' ; 'MESSAGE' cherr ; 'FINSI' ; 'SI' ('NON' okipr) ; cherr = 'CHAINE' ' min Pr=' (formar mipran 2) ' (should be ' (formar minpran 2) ')' ; 'MESSAGE' cherr ; 'FINSI' ; 'SI' ('NON' okapr) ; cherr = 'CHAINE' ' max Pr=' (formar mapran 2) ' (should be ' (formar maxpran 2) ')' ; 'MESSAGE' cherr ; 'FINSI' ; 'SI' ('NON' okasp) ; cherr = 'CHAINE' ' min H/Dh=' (formar asp 2) ' (should be ' (formar minasp 2) ')' ; 'MESSAGE' cherr ; 'FINSI' ; 'FINSI' ; * tabres . 'H' = 'KCHT' $mtif 'SCAL' 'CENTRE' ('*' h0 chblock) ; * Physical properties of fuel and structure lupu lsic lcb okcb = PRPCB irrad tcbck ; tabres . 'LCBST' = 'KCHT' $mtcbst 'SCAL' 'CENTRE' lsic * 4) Thermal computation in fuel + structure EXEC rvcbst ; * 5) Flux computation on the surface of the fuel 'ZONE' $mtif 'OPER' 'MDIA' 'H' 'INCO' 'TCBS' 'F0' ; rvmdia1 . 'INCO' = tabres ; 'ZONE' $mtif 'OPER' 'MDIA' 'H' 'INCO' 'T0' 'F0' ; rvmdia2 . 'INCO' = tabres ; ; ('MAXIMUM' ('RESULT' f0)) ; * 6) Transfer it to a volume power in the helium tabres . 'F0' = f0 ; phe = '*' mfc f0 ; * * 7) Compute the physical properties of helium with temperature and * pressure from the previous iteration * thesk = tabres . 'THE' ; rhec muhec lhec cphec okhe = PRPHE prhe theck ; rhes muhes lhes cphes okhe = PRPHE prhe thesk ; * uhes = 'NOMC' 'UZ' ('*' qhe ('INVERSE' rhes)) ; * 8) Thermal computation in the helium EXEC rvhe ; * * Convergence check * then = 'COPIER' (tabres . 'THE') ; tcbsn = 'COPIER' (tabres . 'TCBS') ; errhe = '/' ('MAXIMUM' ('-' then thep) 'ABS') ('MAXIMUM' thep 'ABS') ; errcbs = '/' ('MAXIMUM' ('-' tcbsn tcbsp) 'ABS') ('MAXIMUM' tcbsp 'ABS') ; 'MESSAGE' ('CHAINE' 'Iteration ' &bouc) ; 'MESSAGE' ('CHAINE' ' errhe = ' errhe) ; 'MESSAGE' ('CHAINE' ' errcbs = ' errcbs) ; thep = then ; tcbsp = tcbsn ; testcvg = 'ET' (errhe '<' rescvg) (errcbs '<' rescvg) ; * * Plots * * explores tabres ; 'SI' testcvg ; maxiter = faux ; 'QUITTER' bouc ; 'FINSI' ; 'FIN' bouc ; 'SI' ('EGA' maxiter vrai) ; 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ; 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ; 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ; 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ; 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ; 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ; 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ; 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ; 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ; 'MESSAGE' ('CHAINE' 'The computation has not converged') ; 'ERREUR' 'Check compute.procedur !' ; 'FINSI' ; 'RESPRO' tabres ; * * End of procedure file COMPUTE * 'FINPROC' ; *ENDPROCEDUR compute *BEGINPROCEDUR cpowdis ************************************************************************ * NOM : CPOWDIS * DESCRIPTION : Compute cos (z) power distribution * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 09/11/2004, version initiale * HISTORIQUE : v1, 09/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' CPOWDIS ; 'ARGUMENT' tabgeo*'TABLE' ; 'ARGUMENT' pvol*'FLOTTANT' ; 'ARGUMENT' gamma*'FLOTTANT' ; 'ARGUMENT' pvar*'LOGIQUE' ; * $mtcbst = tabgeo . '$mtcbst' ; $mtcb = tabgeo . '$mtcb' ; $mthe = tabgeo . '$mthe' ; * vcoeur = '+' vcbst vhe ; * pmoy = pvol '*' ('/' vcoeur vcb) ; 'SI' ('NON' pvar) ; 'SINON' ; raddeg = '/' 180.D0 PI ; zmoy = '/' H 2.D0 ; zcb = '+' zcb ('*' zmoy -1.D0) ; pmax = '*' pmoy ('/' gamma ('SIN' ('*' raddeg gamma))) ; 'MESSAGE' ('CHAINE' 'gamma=' gamma) ; 'MESSAGE' ('CHAINE' 'pmax=' pmax) ; fccos = '/' (2.D0 '*' gamma '*' raddeg) H ; pcb1 = '*' ('COS' ('*' zcb fccos)) pmax ; puis1 = 'MAXIMUM' ('RESULT' ('*' chvol pmoy)) ; puis2 = 'MAXIMUM' ('RESULT' ('*' chvol pcb1)) ; 'SI' ('NON' ('EGA' puis1 puis2 ('*' 0.1 ('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 ; 'FINSI' ; 'RESPRO' pcb ; * * End of procedure file CPOWDIS * 'FINPROC' ; *ENDPROCEDUR cpowdis *BEGINPROCEDUR dessevol ************************************************************************ * NOM : DESSEVOL * DESCRIPTION : Dessine des évolutions : choisit automatiquement * les options, marqueurs, couleurs... * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 16/11/2004, version initiale * HISTORIQUE : v1, 16/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' DESSEVOL ; 'ARGUMENT' evtot*'EVOLUTION' ; 'ARGUMENT' tabt*'TABLE' ; 'ARGUMENT' lnclk*'LOGIQUE' ; 'ARGUMENT' nb/'LOGIQUE' ; * 'SI' ('NON' ('EXISTE' nb)) ; nb = FAUX ; 'FINSI' ; * * * Attention, dans evtot, il y a une évolution avec des noms de points ? * *'SI' ('NEG' nev nt) ; * cherr = 'CHAINE' 'Evolution and title table : not same dim.' ; * 'ERREUR' cherr ; *'FINSI' ; * tev = 'TABLE' ; tev . 'TITRE' = tabt ; * toto = 'TABLE' ; * * 'SI' nb ; ev2 = evtot ; 'SINON' ; icou = 0 ; 'REPETER' iev nev ; ii = &iev ; icou = '+' icou 1 ; 'FINSI' ; * ii2 = '/' ('+' ii 1) 2 ; * ci = EXMOMOD lcoul ii2 ; * ci = EXMOMOD lcoul ii ; ci = EXMOMOD lcoul icou ; APPEND toto 'EVOLUTION' ('COULEUR' evi ci) ; 'FIN' iev ; ev2 = toto . 'EVOLUTION' ; 'FINSI' ; * 'REPETER' iev nev ; ii = &iev ; mi = EXMOMOD lmarq ii ; ti = EXMOMOD ltirr ii ; 'SI' nb ; tev . ii = 'CHAINE' 'MARQ ' mi ' ' ti ; 'SINON' ; tev . ii = 'CHAINE' 'MARQ ' mi ; 'FINSI' ; 'FIN' iev ; * 'SI' lnclk ; 'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev 'NCLK' ; 'SINON' ; 'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev ; 'FINSI' ; * * End of procedure file DESSEVOL * 'FINPROC' ; *ENDPROCEDUR dessevol *BEGINPROCEDUR explodat ************************************************************************ * NOM : EXPLODAT * DESCRIPTION : Explore the data interactively or not. * * - first argument (mandatory) : the tables with data * - second argument (optional) : VRAI (default) interactive use * (mouse clicks) * FAUX batch use * - third argument (mandatory if 2ndarg = FAUX) : a list of integer or * an integer * an integer corresponds to a particular view * View 1 : the base mesh * View 2 : the mesh * View 3 : the blocked channels * View 4 : the power distribution * View 5 : fuel and structure thermal conductivity (T) * View 6 : Helium density * View 7 : Helium thermal conductivity * View 8 : Helium heat capacity * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 17/11/2004, version initiale * HISTORIQUE : v1, 17/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' EXPLODAT ; 'ARGUMENT' tabdat*'TABLE'; 'ARGUMENT' interact/'LOGIQUE' ; 'SI' ('NON' ('EXISTE' interact)) ; interact = VRAI ; 'FINSI' ; * 'SI' ('NON' interact) ; 'ARGUMENT' liview/'LISTENTI' ; 'SI' ('NON' ('EXISTE' liview)) ; 'ARGUMENT' iview*'ENTIER' ; 'FINSI' ; 'SI' ('<' niview 1) ; 'QUITTER' EXPLODAT ; 'FINSI' ; iiview = 1 ; 'FINSI' ; * * Retrieve parameters from tables * tabgeo = tabdat . 'tabgeo' ; tabphy = tabdat . 'tabphy' ; tabin = tabgeo . 'tabin' ; logst = 'EXISTE' tabin 'STRUCTURE' ; * H = tabgeo . 'H' ; nh = tabgeo . 'nh' ; $mtcbst = tabgeo . '$mtcbst' ; $mtcb = tabgeo . '$mtcb' ; $mthe = tabgeo . '$mthe' ; $sthe = tabgeo . '$sthe' ; $mtif = tabgeo . '$mtif' ; cfc = tabgeo . 'cfc' ; amtcb = tabgeo . 'amtcb' ; amthe = tabgeo . 'amthe' ; * QUAF meshes 'SI' logst ; 'FINSI' ; * Dh = tabphy . 'Dh' ; chblock= tabphy . 'chblock' ; *vhe = tabphy . 'vhe' ; qhe = tabphy . 'qhe' ; prhe = tabphy . 'prhe' ; theek = tabphy . 'theek' ; pvol = tabphy . 'pvol' ; pvar = tabphy . 'pvar' ; gamma = tabphy . 'gamma' ; irrad = tabphy . 'irrad' ; pcb = tabphy . 'pcb' ; * compute bottom He speed rhohe muhe lhe cphe dum = PRPHE prhe theek ; vhe = '/' qhe rhohe ; * * Precomputations * * One wants the height (z) not to be more than four times x or y dimension * targetz = 4.D0 ; targetz = 1.5D0 ; * targetz = 0.5D0 ; ftour = 0.1D0 ; _mtot = 'ET' _mtcbst _mthe ; xmt ymt zmt = 'COORDONNEE' _mtot ; dx = '-' ('MAXIMUM' xmt) ('MINIMUM' xmt) ; dy = '-' ('MAXIMUM' ymt) ('MINIMUM' ymt) ; dz = '-' ('MAXIMUM' zmt) ('MINIMUM' zmt) ; dzdx = '/' dz dx ; chzscale = '>' dzdx targetz ; 'SI' chzscale ; zfactor = '/' dzdx targetz ; factech = ('-' ('/' 1.D0 zfactor) 1.D0) ; orig = 'FORME' ; defrm = 'FORME' dzmt ; 'FINSI' ; * 'SI' interact ; mail = ('COULEUR' mtcb 'ROUG') 'ET' ('COULEUR' mthe 'BLEU') ; 'SI' (logst) ; mail = 'ET' mail ('COULEUR' mtst 'BLANC') ; 'FINSI' ; titmail = 'CHAINE' 'Mesh ' 'NBPO=' npomail ' NBELEM=' nelmail ; TRACMESH mail titmail VRAI ; 'FINSI' ; * * Precomp of physical properties * * Temperature evolutions (in °C !!!) Tmin = 500.D0 ; Tmax = 1600.D0 ; npasT = 10.D0 ; pasT = '/' ('-' Tmax Tmin) npasT ; 'REPETER' ibc nbc ; T = 'EXTRAIRE' pRT &ibc ; T = '+' T 273.15D0 ; lupu lsic lcb dum = PRPCB FAUX T ; 'FIN' ibc ; * Helium prop * Temperature evolutions (in °C !!!) Tmin = 450.D0 ; Tmax = 1150.D0 ; npasT = 10.D0 ; pasT = '/' ('-' Tmax Tmin) npasT ; 'REPETER' ibc nbc ; T = 'EXTRAIRE' pRT &ibc ; T = '+' T 273.15D0 ; rho mu lamb cp dum = PRPHE prhe T ; 'FIN' ibc ; * * Arete precomp * *amtcb = 'ARETE' mtcb ; * tcha = 'TABLE' ; tcha . 1 = 'BMesh' ; tcha . 2 = 'Mesh' ; tcha . 3 = 'BChan' ; tcha . 4 = 'FuelT2' ; tcha . 5 = 'LFuel' ; tcha . 6 = 'RhoHe' ; tcha . 7 = 'LamHe' ; tcha . 8 = 'CpHe' ; 'SI' interact ; itcha = 1 ; noclic = VRAI ; 'SINON' ; itcha = 'EXTRAIRE' liview iiview ; noclic = FAUX ; 'FINSI' ; * 'REPETER' bouc2 ; 'SI' interact ; 'MESSAGE' 'Noclic allows not to click between each view' ; 'MESSAGE' 'However, one will deactivate it in order to zoom or save' ; 'FINSI' ; * 'REPETER' bouc1; * 'SI' ('EGA' itcha 1) ; bmesh = ('COULEUR' (tabin . 'FUEL') 'ROUG') 'ET' 'SI' logst ; bmesh = 'ET' bmesh (tabin . 'STRUCTURE') ; 'FINSI' ; oeil = (0. 0. 1000.) ; ' NBELEM=' nelmail ; 'SI' noclic ; TRAC oeil bmesh 'TITRE' tit 'NCLK' ; 'SINON' ; TRAC oeil bmesh 'TITRE' tit ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' itcha 2) ; mail = ('COULEUR' mtcb 'ROUG') 'ET' ('COULEUR' mthe 'BLEU') ; 'SI' (logst) ; mail = 'ET' mail ('COULEUR' mtst 'BLANC') ; 'FINSI' ; tit = 'CHAINE' 'Mesh ' 'NBPO=' npomail ' NBELEM=' nelmail ; TRACMESH mail tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 3) ; * tit = 'CHAINE' 'Blocked channels' ; * tracchml $mtif chblock tit noclic ; tit = 'CHAINE' 'Blocked channels' ; tracchpo chblock mthe amthe tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 4) ; tit = 'CHAINE' 'Power Distribution (W.m-3)' ; tracchml $mtcb pcb amtcb tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 5) ; evt = evlupu 'ET' evlsic 'ET' evlcb ; tt = 'TABLE' ; 'SI' irrad ; tt . 1 = 'CHAINE' '(U,Pu)C irr.' ; tt . 2 = 'CHAINE' 'SiC irr.' ; tt . 3 = 'CHAINE' 'CerCer irr.' ; 'SINON' ; tt . 1 = 'CHAINE' '(U,Pu)C' ; tt . 2 = 'CHAINE' 'SiC' ; tt . 3 = 'CHAINE' 'CerCer' ; 'FINSI' ; tit = 'CHAINE' 'Lambda(Temperature)' ; titx = 'CHAINE' 'T (°C)' ; tity = 'CHAINE' 'Lambda (W.m-1.K-1)' ; DESSEVOL evt tt tit titx tity noclic ; 'FINSI' ; 'SI' ('EGA' itcha 6) ; tt = 'TABLE' ; tt . 1 = 'CHAINE' 'Helium' ; tit = 'CHAINE' 'Density(Temperature)' titx = 'CHAINE' 'T (°C)' ; tity = 'CHAINE' 'Rho (kg.m-3)' ; DESSEVOL evrho tt tit titx tity noclic ; 'FINSI' ; 'SI' ('EGA' itcha 7) ; tt = 'TABLE' ; tt . 1 = 'CHAINE' 'Helium' ; tit = 'CHAINE' 'Thermal Conductivity (Temperature)' titx = 'CHAINE' 'T (°C)' ; tity = 'CHAINE' 'Lambda (W.m-1.K-1)' ; DESSEVOL evlamb tt tit titx tity noclic ; 'FINSI' ; * 'SI' ('EGA' itcha 8) ; tt = 'TABLE' ; tt . 1 = 'CHAINE' 'Helium' ; tit = 'CHAINE' 'Specific Heat (Temperature)' titx = 'CHAINE' 'T (°C)' ; tity = 'CHAINE' 'Cp (J.kg-1.K-1)' ; DESSEVOL evcp tt tit titx tity noclic ; 'FINSI' ; * 'SI' interact ; cha = tit ; 'SI' ('EGA' ret 'Options') ; 'QUITTER' bouc1 ; 'FINSI'; 'SI' ('EGA' ret 'Quitter') ; 'QUITTER' bouc2; 'FINSI'; 'SI' ('EGA' ret 'Next') ; itcha = '+' itcha 1 ; 'FINSI' ; 'SI' ('EGA' ret 'Previous') ; itcha = '-' itcha 1 ; 'FINSI' ; 'SI' (itcha > ntcha); itcha = 1 ; 'FINSI'; 'SI' (itcha < 1); itcha = ntcha ; 'FINSI'; 'SINON' ; iiview = '+' iiview 1 ; 'SI' ('>' iiview niview) ; 'QUITTER' bouc2 ; 'SINON' ; itcha = 'EXTRAIRE' liview iiview ; 'FINSI' ; 'FINSI' ; * 'FIN' bouc1; 'FIN' bouc2 ; * 'SI' chzscale ; 'FORME' orig ; 'FINSI' ; * * End of procedure file EXPLODAT * 'FINPROC' ; *ENDPROCEDUR explodat *BEGINPROCEDUR explores ************************************************************************ * NOM : EXPLORES * DESCRIPTION : Explore the Results interactively or not. * * EXPLORES does graphical output of results * - first argument (mandatory) : the table with the fields * - second argument (optional) : VRAI (default) interactive use * (mouse clicks) * FAUX batch use * - third argument (mandatory if 2ndarg = FAUX) : a list of integer or * an integer * an integer corresponds to a particular view * View 1 : temperature (fuel + He) * View 2 : temperature (fuel) * View 3 : temperature (fuel : 2 viewpoints) * View 4 : exchange coefficient * View 5 : temperature (helium) * View 6 : vertical speed (helium) * View 7 : temperature profiles per channel (helium) * View 8 : vertical speed profiles per channel (helium) * View 9 : Nusselt number * View 10 : Reynolds number * View 11 : Prandtl number * View 12 : Lambda Helium * View 13 : Hydraulic diameter * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 17/11/2004, version initiale * HISTORIQUE : v1, 17/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' EXPLORES ; 'ARGUMENT' tabres*'TABLE' ; 'ARGUMENT' interact/'LOGIQUE' ; 'SI' ('NON' ('EXISTE' interact)) ; interact = VRAI ; 'FINSI' ; * 'SI' ('NON' interact) ; 'ARGUMENT' liview/'LISTENTI' ; 'SI' ('NON' ('EXISTE' liview)) ; 'ARGUMENT' iview*'ENTIER' ; 'FINSI' ; 'SI' ('<' niview 1) ; 'QUITTER' EXPLORES ; 'FINSI' ; iiview = 1 ; 'FINSI' ; * * Retrieve parameters from tables * tabdat = tabres . 'tabdat' ; tabgeo = tabdat . 'tabgeo' ; tabin = tabgeo . 'tabin' ; logst = 'EXISTE' tabin 'STRUCTURE' ; * H = tabgeo . 'H' ; nh = tabgeo . 'nh' ; $mtcbst = tabgeo . '$mtcbst' ; $mtcb = tabgeo . '$mtcb' ; $mthe = tabgeo . '$mthe' ; $sthe = tabgeo . '$sthe' ; $mtif = tabgeo . '$mtif' ; cfc = tabgeo . 'cfc' ; amtcbst = tabgeo . 'amtcbst' ; amthe = tabgeo . 'amthe' ; * QUAF meshes 'SI' logst ; 'FINSI' ; * * Precomputations * * One wants the height (z) not to be more than four times x or y dimension * targetz = 4.D0 ; targetz = 1.5D0 ; ftour = 0.1D0 ; _mtot = 'ET' _mtcbst _mthe ; xmt ymt zmt = 'COORDONNEE' _mtot ; dx = '-' ('MAXIMUM' xmt) ('MINIMUM' xmt) ; dy = '-' ('MAXIMUM' ymt) ('MINIMUM' ymt) ; dz = '-' ('MAXIMUM' zmt) ('MINIMUM' zmt) ; dzdx = '/' dz dx ; chzscale = '>' dzdx targetz ; 'SI' chzscale ; zfactor = '/' dzdx targetz ; factech = ('-' ('/' 1.D0 zfactor) 1.D0) ; orig = 'FORME' ; defrm = 'FORME' dzmt ; 'FINSI' ; * * manipulation maillage et champ de temperature tcbsc = ('-' (tabres . 'TCBS') 273.15D0) ; thec = ('-' (tabres . 'THE') 273.15D0) ; cech = tabres . 'H' ; nuss0 = tabres . 'nuss0' ; reyn0 = tabres . 'reyn0' ; pran0 = tabres . 'pran0' ; l0 = tabres . 'l0' ; Dh = tabres . 'Dh' ; * tournage mtot = 'ET' mtcbst mthe ; xmt ymt zmt = 'COORDONNEE' mtot ; mixmt = 'MINIMUM' xmt ; miymt = 'MINIMUM' ymt ; mizmt = 'MINIMUM' zmt ; dx = '-' ('MAXIMUM' xmt) ('MINIMUM' xmt) ; dy = '-' ('MAXIMUM' ymt) ('MINIMUM' ymt) ; dz = '-' ('MAXIMUM' zmt) ('MINIMUM' zmt) ; p1 = ('-' mixmt ('*' dx ftour)) ('-' miymt ('*' dy ftour)) mizmt ; p2 = ('-' mixmt ('*' dx ftour)) ('-' miymt ('*' dy ftour)) ('+' mizmt 1.D0) ; * amtcbst = 'ARETE' mtcbst ; * amthe = 'ARETE' mthe ; tcbsc2 thec2 mtcbst2 mthe2 amtcbst2 amthe2 = 'TOURNER' tcbsc thec mtcbst mthe amtcbst amthe 180. p1 p2 ; tcbsct = 'ET' tcbsc tcbsc2 ; thect = 'ET' thec thec2 ; mtcbstt = 'ET' mtcbst mtcbst2 ; mthet = 'ET' mthe mthe2 ; amtcbstt = 'ET' amtcbst amtcbst2 ; amthet = 'ET' amthe amthe2 ; * 'SI' interact ; mail = ('COULEUR' mtcb 'ROUG') 'ET' ('COULEUR' mthe 'BLEU') ; 'SI' (logst) ; mail = 'ET' mail ('COULEUR' mtst 'BLANC') ; 'FINSI' ; titmail = 'CHAINE' 'Mesh ' 'NBPO=' npomail ' NBELEM=' nelmail ; TRACMESH mail titmail VRAI ; 'FINSI' ; * * Evol precalc * 'SI' chzscale ; 'FORME' orig ; 'FINSI' ; tt = 'TABLE' ; tev = 'TABLE' ; 'REPETER' ichan nchan ; lighe = tabgeo . 'tlchan' . &ichan ; APPEND tev 'TEMPERATURE' evthec ; APPEND tev 'VITESSE' evuhe ; tt . &ichan = 'CHAINE' 'Canal ' &ichan ; 'FIN' ichan ; 'SI' chzscale ; 'FORME' defrm ; 'FINSI' ; * tcha = 'TABLE' ; tcha . 1 = 'T' ; tcha . 2 = 'FuelT' ; tcha . 3 = 'FuelT2' ; tcha . 4 = 'Excoef' ; tcha . 5 = 'HeT' ; tcha . 6 = 'HeUz' ; tcha . 7 = 'HeevT' ; tcha . 8 = 'HeevUz' ; tcha . 9 = 'Nuss' ; tcha . 10 = 'Reyn' ; tcha . 11 = 'Prand' ; tcha . 12 = 'LamHe' ; tcha . 13 = 'Dh' ; 'SI' interact ; itcha = 1 ; noclic = VRAI ; 'SINON' ; itcha = 'EXTRAIRE' liview iiview ; noclic = FAUX ; 'FINSI' ; * 'REPETER' bouc2 ; 'SI' interact ; 'MESSAGE' 'Noclic allows not to click between each view' ; 'MESSAGE' 'However, one will deactivate it in order to zoom or save' ; 'FINSI' ; * 'REPETER' bouc1; * 'SI' ('EGA' itcha 1) ; tracchpo (tcbsct 'ET' thect) (mtcbstt 'ET' mthet) (amtcbstt 'ET' amthet) tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 2) ; tracchpo tcbsc mtcbst amtcbst tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 3) ; tracchpo tcbsct mtcbstt amtcbstt tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 4) ; tit = 'CHAINE' 'Exchange coeff. (W.m-2.K-1)' ; tracchml $mtif cech ('CONTOUR' mtif) tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 5) ; tracchpo thect mthe amthe tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 6) ; tit = 'CHAINE' 'Uz He (m.s-1)' ; tracchpo uz mthe amthe tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 7) ; tit = 'CHAINE' 'Helium Temperature' ; titxthe = 'CHAINE' 's (m)' ; titythe = 'CHAINE' 'T (°C)' ; DESSEVOL (tev . 'TEMPERATURE') tt tit titxthe titythe noclic ; 'FINSI' ; 'SI' ('EGA' itcha 8) ; tit = 'CHAINE' 'Helium Vertical Speed' ; titxuhe = 'CHAINE' 's (m)' ; tityuhe = 'CHAINE' 'uz (m.s-1)' ; DESSEVOL (tev . 'VITESSE') tt tit titxuhe tityuhe noclic ; 'FINSI' ; 'SI' ('EGA' itcha 9) ; tit = 'CHAINE' 'Nusselt number' ; tracchml $mtif nuss0 ('CONTOUR' mtif) tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 10) ; tit = 'CHAINE' 'Reynolds number' ; tracchml $mtif reyn0 ('CONTOUR' mtif) tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 11) ; tit = 'CHAINE' 'Prandtl number' ; tracchml $mtif pran0 ('CONTOUR' mtif) tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 12) ; tit = 'CHAINE' 'Lambda (He)' ; tracchml $mtif l0 ('CONTOUR' mtif) tit noclic ; 'FINSI' ; 'SI' ('EGA' itcha 13) ; tit = 'CHAINE' 'Hydraulic diameter (m)' ; tracchml $mtif Dh ('CONTOUR' mtif) tit noclic ; 'FINSI' ; * 'SI' interact ; cha = tit ; 'SI' ('EGA' ret 'Options') ; 'QUITTER' bouc1 ; 'FINSI'; 'SI' ('EGA' ret 'Quitter') ; 'QUITTER' bouc2; 'FINSI'; 'SI' ('EGA' ret 'Next') ; itcha = '+' itcha 1 ; 'FINSI' ; 'SI' ('EGA' ret 'Previous') ; itcha = '-' itcha 1 ; 'FINSI' ; 'SI' (itcha > ntcha); itcha = 1 ; 'FINSI'; 'SI' (itcha < 1); itcha = ntcha ; 'FINSI'; 'SINON' ; iiview = '+' iiview 1 ; 'SI' ('>' iiview niview) ; 'QUITTER' bouc2 ; 'SINON' ; itcha = 'EXTRAIRE' liview iiview ; 'FINSI' ; 'FINSI' ; * 'FIN' bouc1; 'FIN' bouc2 ; * 'SI' chzscale ; 'FORME' orig ; 'FINSI' ; * * End of procedure file EXPLORES * 'FINPROC' ; *ENDPROCEDUR explores *BEGINPROCEDUR genmema ************************************************************************ * NOM : GENMEMA * DESCRIPTION : Generate meshes and coupling matrix given base surface * mesh * * Input for GENMEMA procedure * tabin . 'INTERFACE' . i : i-th interface (line mesh) * tabin . 'CHANNEL' . i : i-th helium channel (surface mesh) * tabin . 'FUEL' : fuel mesh (surface mesh) * tabin . 'STRUCTURE' : structure mesh (surface mesh) (optional) * H : height (m) and nh : number of elements in the height * (regular meshing in z direction) * * Temporary table for GENMEMA procedure * tabout . 'INTERFACE' . i : i-th interface (surface mesh) * tabout . 'CHANNEL' . i : i-th helium channel (volume mesh) * tabout . 'CCONINCH' . i : i-th coupling connectivity intreface <-> channel * tabout . 'CMATCHIN' . i : i-th coupling matrix channel -> interface * tabout . 'CMATINCH' . i : i-th coupling matrix interface -> channel * tabin . 'FUEL' : fuel mesh (volume mesh) * tabin . 'STRUCTURE' : structure mesh (volume mesh) (optional) * * Output table for GENMEMA procedure * * output tabgeo should contain all the necessary geometric information * needed further * tabgeo . 'tabin' = tabin * tabgeo . 'H' = H : height * tabgeo . 'nh' = nh : number of elements in the height * tabgeo . '$mtcbst' = NS model objet (fuel+structure) * tabgeo . '$mtcb' = NS model objet (fuel only) * tabgeo . '$mthe' = NS model objet (helium channels) * tabgeo . '$sthe' = NS model objet (bottom of the helium channels) * tabgeo . '$mtif' = NS model objet (interfaces) * tabgeo . '$mtifb' = NS model objet (blocked interfaces) * tabgeo . 'mcf' = coupling matrix helium -> fuel * tabgeo . 'mfc' = coupling matrix fuel -> helium * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 09/11/2004, version initiale * HISTORIQUE : v1, 09/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' GENMEMA ; 'ARGUMENT' tabin*'TABLE' ; 'ARGUMENT' H*'FLOTTANT' ; 'ARGUMENT' nh*'ENTIER' ; * tabout = 'TABLE' ; tabout . 'INTERFACE' = 'TABLE' ; tabout . 'CHANNEL' = 'TABLE' ; tabout . 'CCONINCH' = 'TABLE' ; tabout . 'CMATCHIN' = 'TABLE' ; tabout . 'CMATINCH' = 'TABLE' ; * hnh = '/' H ('FLOTTANT' nh) ; vechnh = (0. 0. hnh) ; * * Treatment of everything except 'OTHER' * 'SI' ('NEG' ninterf nchanne) ; 'ERREUR' cherr ; 'FINSI' ; * * Loop on interfaces * * Préconditionnement * * 'REPETER' iinterf ninterf ; lpreums = vrai ; linterf = tabin . 'INTERFACE' . &iinterf ; scan = tabin . 'CHANNEL' . &iinterf ; * Loop on height 'REPETER' ih nh ; vectran = (0. 0. ('*' hnh ('FLOTTANT' ('-' &ih 1)))) ; sli = 'TRANSLATION' tli 1 vechnh ; cvsc = 'BARYCENTRE' vsc ; vvsc = 'MESURE' vsc ; ivvsc = '/' 1.D0 vvsc ; * 'LISTE' cvsc ; 'LISTE' cvsc2 ; APPEND (tabout . 'CHANNEL') &iinterf vsc ; * Loop on interface elements 'REPETER' isli nsli ; cesli = 'BARYCENTRE' esli ; cco = 'MANUEL' 'SEG2' cesli cvsc ; * ('PROG' 0.D0 1.D0) ('PROG' 0.D0 0.D0) ; 'SI' lpreums ; tabout . 'INTERFACE' . &iinterf = esli ; tabout . 'CCONINCH' . &iinterf = cco ; tabout . 'CMATCHIN' . &iinterf = mci ; tabout . 'CMATINCH' . &iinterf = mic ; lpreums = faux ; 'SINON' ; tabout . 'INTERFACE' . &iinterf = 'ET' (tabout . 'INTERFACE' . &iinterf) esli ; tabout . 'CCONINCH' . &iinterf = 'ET' (tabout . 'CCONINCH' . &iinterf) cco ; tabout . 'CMATCHIN' . &iinterf = 'ET' (tabout . 'CMATCHIN' . &iinterf) mci ; tabout . 'CMATINCH' . &iinterf = 'ET' (tabout . 'CMATINCH' . &iinterf) mic ; 'FINSI' ; 'FIN' isli ; 'FIN' ih ; 'FIN' iinterf ; * * Treatment of 'FUEL' and 'STRUCTURE' * sother = tabin . 'FUEL' ; tabout . 'FUEL' = vother ; 'SI' ('EXISTE' tabin 'STRUCTURE') ; sother = tabin . 'STRUCTURE' ; tabout . 'STRUCTURE' = vother ; 'FINSI' ; * * Some eliminations * tother = tabout . 'FUEL' ; 'SI' ('EXISTE' tabout 'STRUCTURE') ; tother = 'ET' tother (tabout . 'STRUCTURE') ; 'FINSI' ; 'ELIMINATION' ('ET' tinter tother) 1.D-6 ; * * Second part : tabgeo * tabgeo = 'TABLE' ; * * Build the global meshes * * Structure & Combustible mtcb = tabout . 'FUEL' ; amtcb = 'ARETE' (tabout . 'FUEL2') ; 'SI' ('EXISTE' tabout 'STRUCTURE') ; mtcbst = 'ET' mtcb (tabout . 'STRUCTURE') ; amtcbst = 'ET' amtcb ('ARETE' (tabout . 'STRUCT2')) ; 'SINON' ; mtcbst = mtcb ; amtcbst = amtcb ; 'FINSI' ; * Channels *mthe = @STBL (tabout . 'CHANNEL') ; tmthe = tabout . 'CHANNEL' ; amthe = 'TRANSLATION' ('CONTOUR' sthe) 1 (0. 0. H) ; * Line in channels tlchan = 'TABLE' ; tpechan = 'TABLE' ; tpschan = 'TABLE' ; 'REPETER' ichan nchan ; lighe = 'DROIT' nh po1 po2 ; tlchan . &ichan = lighe ; tpechan . &ichan = po1 ; tpschan . &ichan = po2 ; 'FIN' ichan ; * Interfaces tmtif = tabout . 'INTERFACE' ; * Blocked interfaces lblock = tabin . 'BLOCKED' ; logb = ('>' dblock 0) ; 'SI' logb ; tchan = 'TABLE' ; 'REPETER' iblock dblock ; iib = 'EXTRAIRE' lblock &iblock ; APPEND tchan 'mtifb' (tabout . 'INTERFACE' . iib) ; 'FIN' iblock ; mtifb = tchan . 'mtifb' ; 'FINSI' ; * Coupling * Generate the QUAF meshes * Channels _tmthe = 'TABLE' ; 'REPETER' ihe nhe ; _tmthe . &ihe = QUAFME (tmthe . &ihe) ; 'FIN' ihe ; * Interface _tmtif = 'TABLE' ; 'REPETER' iif nif ; _tmtif . &iif = QUAFME (tmtif . &iif) ; 'FIN' iif ; * Other _mtcbst _mtcb _sthe = QUAFME mtcbst mtcb sthe ; mcbt = _mtcbst 'ET' _mtcb 'ET' _mtif 'ET' cfc 'ET' amtcb 'ET' amtcbst ; 'SI' logb ; _mtifb = QUAFME mtifb ; mcbt = 'ET' mcbt _mtifb ; 'FINSI' ; * Elimination of points with same coordinates 'ELIMINATION' mcbt 1.D-6 ; 'ELIMINATION' (_mthe 'ET' _sthe 'ET' cfc 'ET' amthe 'ET' ttlchan) 1.D-6 ; * Create the Navier-Stokes model objects * Channels $tmthe = 'TABLE' ; 'REPETER' ihe nhe ; $tmthe . &ihe = MODNAV 'LINE' (_tmthe . &ihe) ; 'FIN' ihe ; * Interface $tmtif = 'TABLE' ; 'REPETER' iif nif ; $tmtif . &iif = MODNAV 'LINE' (_tmtif . &iif) ; 'FIN' iif ; $mtcbst $mtcb $mthe $mtif $sthe = MODNAV 'LINE' _mtcbst _mtcb _mthe _mtif _sthe ; * Create the hydraulic diameter table tdhif = 'TABLE' ; 'REPETER' iif nif ; (tabin . 'DH' .&iif) ; 'FIN' iif ; * * Store results * tabgeo . 'tabin' = tabin ; tabgeo . 'H' = H ; tabgeo . 'nh' = nh ; tabgeo . '$mtcbst' = $mtcbst ; tabgeo . '$mtcb' = $mtcb ; tabgeo . '$tmthe' = $tmthe ; tabgeo . '$mthe' = $mthe ; tabgeo . '$sthe' = $sthe ; tabgeo . '$mtif' = $mtif ; tabgeo . 'amtcb' = amtcb ; tabgeo . 'amtcbst' = amtcbst ; tabgeo . 'amthe' = amthe ; tabgeo . 'mcf' = mcf ; tabgeo . 'mfc' = mfc ; tabgeo . 'cfc' = cfc ; 'SI' logb ; $mtifb = MODNAV 'LINE' _mtifb ; tabgeo . '$mtifb' = $mtifb ; 'FINSI' ; tabgeo . 'Dh' = dh ; tabgeo . 'tlchan' = tlchan ; tabgeo . 'tpechan' = tpechan ; tabgeo . 'tpschan' = tpschan ; 'RESPRO' tabgeo ; * * End of procedure file GENMEMA * 'FINPROC' ; *ENDPROCEDUR genmema *BEGINPROCEDUR geomhex1 ************************************************************************ * NOM : GEOMHEX1 * DESCRIPTION : 30° symmetry cell of an hexagonal geometry * in the x-y plane * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, ??/??/2004, version initiale * HISTORIQUE : v1, ??/??/2004, 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 ! ************************************************************************ * * 'DEBPROC' GEOMHEX1 ; 'ARGUMENT' Dh*'FLOTTANT' ; 'ARGUMENT' pas*'FLOTTANT' ; * * Geometric quantities deduced from the one given above * q = '/' pas 2.D0 ; R = '/' Dh 2.D0 ; * * Geometric discretization parameters * (number of elements) * nb (base) : number of elements for the line in (x-y) plane * with smallest length * nb = 7 ; s30 = 'SIN' 30.D0 ; c30 = 'COS' 30.D0 ; t30 = '/' s30 c30 ; * length of each line lcer = ('*' ('/' PI 6.D0) R) ; lpdia = '-' q R ; lgdia = '-' ('/' q c30) R ; lhex = ('*' q t30) ; * scaling based on shortest line * factors in order to have an almost regular mesh fcer = '/' lcer lbase ; fpdia = '/' lpdia lbase ; fgdia = '/' lgdia lbase ; fhex = '/' lhex lbase ; * mesh rbase = 'FLOTTANT' nb ; 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) ; * Points definition for fuel p0 = 0.D0 0.D0 0.D0 ; p1 = R 0.D0 0.D0 ; p2 = q 0.D0 0.D0 ; p3 = q ('*' q t30) 0.D0 ; p4 = ('*' R c30) ('*' R s30) 0.D0 ; * Lines definition for fuel l1 = 'DROIT' npdia p1 p2 ; l2 = 'DROIT' nhex p2 p3 ; l3 = 'DROIT' ngdia p3 p4 ; l4 = 'CERCLE' ncer p4 p0 p1 ; * Surfaces definition for fuel ctn = l1 'ET' l2 'ET' l3 'ET' l4 ; stcb = 'SURFACE' ctn 'PLANE' ; * Points and surface definitions for helium (an isocele triangle with * surface equal to the corresponding circular sector Rp = '*' R ('**' ('/' PI 3.D0) 0.5D0) ; p5 = Rp 0.D0 0.D0 ; p6 = ('*' Rp c30) ('*' Rp s30) 0.D0 ; sthe = 'MANUEL' 'TRI3' p0 p5 p6 ; * * Output results in a table suitable for GENMEMA * tabin = 'TABLE' ; tabin . 'INTERFACE' = 'TABLE' ; tabin . 'CHANNEL' = 'TABLE' ; * tabin . 'INTERFACE' . 1 = l4 ; tabin . 'CHANNEL' . 1 = sthe ; tabin . 'FUEL' = stcb ; 'RESPRO' tabin ; * * End of procedure file GEOMHEX1 * 'FINPROC' ; *ENDPROCEDUR geomhex1 *BEGINPROCEDUR geomhex2 ************************************************************************ * NOM : GEOMHEX2 * DESCRIPTION : Same as GEOMHEX1 but larger symmetry cell * in the x-y plane * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 18/11/2004, version initiale * HISTORIQUE : v1, 18/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' GEOMHEX2 ; 'ARGUMENT' Dh*'FLOTTANT' ; 'ARGUMENT' pas*'FLOTTANT' ; * * Geometric quantities deduced from the one given above * q = '/' pas 2.D0 ; R = '/' Dh 2.D0 ; * * Geometric discretization parameters * (number of elements) * nb (base) : number of elements for the line in (x-y) plane * with smallest length * nb = 7 ; s30 = 'SIN' 30.D0 ; c30 = 'COS' 30.D0 ; t30 = '/' s30 c30 ; * length of each line lcera = ('*' ('/' PI 6.D0) R) ; lcerb = ('*' ('/' PI 2.D0) R) ; lpdia = '-' pas Dh ; lgdia = '-' ('/' pas c30) R ; lhex = '-' ('*' pas t30) R ; * scaling based on shortest line * factors in order to have an almost regular mesh fcera = '/' lcera lbase ; fcerb = '/' lcerb lbase ; fpdia = '/' lpdia lbase ; fgdia = '/' lgdia lbase ; fhex = '/' lhex lbase ; * mesh rbase = 'FLOTTANT' nb ; ncera = '*' rbase fcera ; ncerb = '*' rbase fcerb ; nhex = '*' rbase fhex ; npdia = '*' rbase fpdia ; ngdia = '*' rbase fgdia ; * ncera = 'ENTIER' ('+' ncera 0.99D0) ; ncerb = 'ENTIER' ('+' ncerb 0.99D0) ; nhex = 'ENTIER' ('+' nhex 0.99D0) ; npdia = 'ENTIER' ('+' npdia 0.99D0) ; ngdia = 'ENTIER' ('+' ngdia 0.99D0) ; * Points definition for fuel p0 = 0.D0 0.D0 0.D0 ; p1 = R 0.D0 0.D0 ; p2 = ('-' pas R) 0.D0 0.D0 ; p3 = pas 0.D0 0.D0 ; p4 = pas R 0.D0 ; p5 = pas ('*' pas t30) 0.D0 ; p6 = ('*' R c30) ('*' R s30) 0.D0 ; * Lines definition for fuel l1 = 'DROIT' npdia p1 p2 ; l2 = 'CERCLE' ncerb p2 p3 p4 ; l3 = 'DROIT' nhex p4 p5 ; l4 = 'DROIT' ngdia p5 p6 ; l5 = 'CERCLE' ncera p6 p0 p1 ; * Surfaces definition for fuel ctn = l1 'ET' l2 'ET' l3 'ET' l4 'ET' l5 ; stcb = 'SURFACE' ctn 'PLANE' ; * Points and surface definitions for helium (two isocele triangles with * surface equal to the corresponding circular sector Rpa = '*' R ('**' ('/' PI 3.D0) 0.5D0) ; p7 = Rpa 0.D0 0.D0 ; p8 = ('*' Rpa c30) ('*' Rpa s30) 0.D0 ; sthea = 'MANUEL' 'TRI3' p0 p7 p8 ; Rpb = '*' R ('**' ('/' PI 2.D0) 0.5D0) ; p9 = ('-' pas Rpb) 0.D0 0.D0 ; p10 = pas Rpb 0.D0 ; stheb = 'MANUEL' 'TRI3' p9 p3 p10 ; * * Output results in a table suitable for GENMEMA * tabin = 'TABLE' ; tabin . 'INTERFACE' = 'TABLE' ; tabin . 'CHANNEL' = 'TABLE' ; * tabin . 'INTERFACE' . 1 = l5 ; tabin . 'CHANNEL' . 1 = sthea ; tabin . 'INTERFACE' . 2 = l2 ; tabin . 'CHANNEL' . 2 = stheb ; tabin . 'FUEL' = stcb ; 'RESPRO' tabin ; * * End of procedure file GEOMHEX2 * 'FINPROC' ; *ENDPROCEDUR geomhex2 *BEGINPROCEDUR geompl21 ************************************************************************ * NOM : GEOMPL21 * DESCRIPTION : Type 1 symmetry cell for GEOMPLA2 * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/11/2004, version initiale * HISTORIQUE : v1, 23/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' GEOMPL21 ; 'ARGUMENT' Dh*'FLOTTANT' ; 'ARGUMENT' ef*'FLOTTANT' ; 'ARGUMENT' ep*'FLOTTANT' ; 'ARGUMENT' nchan*'ENTIER' ; 'ARGUMENT' nc2*'ENTIER' ; 'ARGUMENT' nf*'ENTIER' ; 'ARGUMENT' np*'ENTIER' ; * 'SI' ('NEG' (MODULO nchan 2) 1) ; cherr = 'CHAINE' 'nchan should be odd' ; 'FINSI' ; * * Geometric quantities deduced from the one given above * ec = '/' Dh 2.D0 ; ec2 = '/' ec 2 ; nplate = '+' nchan 1 ; L2 = '+' ('*' nplate ep) ('*' nchan ec) '+' ('*' ef 2) ; L4 = '/' L2 2.D0 ; * * Discretisation * nplate2 = '/' nplate 2 ; nc = '*' nc2 2 ; * tabin = 'TABLE' ; tabin . 'INTERFACE' = 'TABLE' ; tabin . 'CHANNEL' = 'TABLE' ; iitf = 1 ; * * Part1 : Lines * p0 = 0. 0. 0. ; p1 = 0. ('*' ef -1.D0) 0. ; lcor = 'DROIT' nf p0 p1 ; tablig = 'TABLE' ; bp = p1 ; 'REPETER' ipl nplate2 ; APPEND tablig 'LIG' ('DROIT' bp p2 np) ; bp = p2 ; * The last one is an half channel 'SI' ('NEG' &ipl nplate2) ; APPEND tablig 'LIG' ('DROIT' bp p2 nc) ; bp = p2 ; 'SINON' ; APPEND tablig 'LIG' ('DROIT' bp p2 nc2) ; bp = p2 ; 'FINSI' ; 'FIN' ipl ; lcb = tablig . 'LIG' ; lch = 'DROIT' p1 p2 1 ; * * Part1 : left structure * bp = 0. 0. 0. ; vt = ef 0. 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' (lcor 'ET' lcb) nf vt) ; * * Loop on plates * 'REPETER' iplate nplate ; * Structure part vt = ep 0. 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort np vt) ; * Fuel part APPEND tabin 'FUEL' ('TRANSLATION' lcbt np vt) ; 'SI' ('>' &iplate 1) ; APPEND (tabin . 'INTERFACE') ('-' iitf 1) lcbt ; 'FINSI' ; 'SI' ('<' &iplate nplate) ; APPEND (tabin . 'INTERFACE') iitf lcbtt ; 'FINSI' ; 'SI' ('<' &iplate nplate) ; * Structure part vt = ec 0. 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort nc vt) ; APPEND (tabin . 'INTERFACE') iitf ('DROIT' p1t p2t nc) ; * Channel part APPEND (tabin . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ; iitf = '+' iitf 1 ; 'FINSI' ; 'FIN' iplate ; * Part1 : right structure vt = ef 0. 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' lcct nf vt) ; * 'RESPRO' tabin ; * * End of procedure file GEOMPL21 * 'FINPROC' ; *ENDPROCEDUR geompl21 *BEGINPROCEDUR geompl22 ************************************************************************ * NOM : GEOMPL22 * DESCRIPTION : Type 2 symmetry cell for GEOMPLA2 * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/11/2004, version initiale * HISTORIQUE : v1, 23/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' GEOMPL22 ; 'ARGUMENT' Dh*'FLOTTANT' ; 'ARGUMENT' ef*'FLOTTANT' ; 'ARGUMENT' ep*'FLOTTANT' ; 'ARGUMENT' nchan*'ENTIER' ; 'ARGUMENT' nc2*'ENTIER' ; 'ARGUMENT' nf*'ENTIER' ; 'ARGUMENT' np*'ENTIER' ; * 'SI' ('NEG' (MODULO nchan 2) 1) ; cherr = 'CHAINE' 'nchan should be odd' ; 'FINSI' ; * * Geometric quantities deduced from the one given above * ec = '/' Dh 2.D0 ; ec2 = '/' ec 2 ; nplate = '+' nchan 1 ; L2 = '+' ('*' nplate ep) ('*' nchan ec) '+' ('*' ef 2) ; L4 = '/' L2 2.D0 ; * * Discretisation * nplate2 = '/' nplate 2 ; nc = '*' nc2 2 ; * tabin = 'TABLE' ; tabin . 'INTERFACE' = 'TABLE' ; tabin . 'CHANNEL' = 'TABLE' ; iitf = 1 ; * * Part1 : Lines * p0 = 0. 0. 0. ; p1 = 0. ('*' ef -1.D0) 0. ; lcor = 'DROIT' nf p0 p1 ; tablig = 'TABLE' ; bp = p1 ; 'REPETER' ipl nplate2 ; APPEND tablig 'LIG' ('DROIT' bp p2 np) ; bp = p2 ; * The last one is an half channel 'SI' ('NEG' &ipl nplate2) ; APPEND tablig 'LIG' ('DROIT' bp p2 nc) ; bp = p2 ; 'SINON' ; APPEND tablig 'LIG' ('DROIT' bp p2 nc2) ; bp = p2 ; 'FINSI' ; 'FIN' ipl ; lcb = tablig . 'LIG' ; lch = 'DROIT' p1 p2 1 ; * * Part1 : left structure * bp = 0. 0. 0. ; vt = ef 0. 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' (lcor 'ET' lcb) nf vt) ; * * Loop on plates * 'REPETER' iplate nplate2 ; * Structure part vt = ep 0. 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort np vt) ; * Fuel part APPEND tabin 'FUEL' ('TRANSLATION' lcbt np vt) ; 'SI' ('>' &iplate 1) ; APPEND (tabin . 'INTERFACE') ('-' iitf 1) lcbt ; 'FINSI' ; APPEND (tabin . 'INTERFACE') iitf lcbtt ; 'SI' ('<' &iplate nplate2) ; * Structure part vt = ec 0. 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort nc vt) ; APPEND (tabin . 'INTERFACE') iitf ('DROIT' p1t p2t nc) ; * Channel part APPEND (tabin . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ; iitf = '+' iitf 1 ; * The last one is a half channel 'SINON' ; * Structure part vt = ec2 0. 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort nc2 vt) ; APPEND (tabin . 'INTERFACE') iitf ('DROIT' p1t p2t nc2) ; * Channel part APPEND (tabin . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ; iitf = '+' iitf 1 ; 'FINSI' ; 'FIN' iplate ; * 'RESPRO' tabin ; * * End of procedure file GEOMPL22 * 'FINPROC' ; *ENDPROCEDUR geompl22 *BEGINPROCEDUR geompl23 ************************************************************************ * NOM : GEOMPL23 * DESCRIPTION : Type 3 symmetry cell for GEOMPLA2 * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/11/2004, version initiale * HISTORIQUE : v1, 23/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' GEOMPL23 ; 'ARGUMENT' Dh*'FLOTTANT' ; 'ARGUMENT' ef*'FLOTTANT' ; 'ARGUMENT' ep*'FLOTTANT' ; 'ARGUMENT' nchan*'ENTIER' ; 'ARGUMENT' nc2*'ENTIER' ; 'ARGUMENT' nf*'ENTIER' ; 'ARGUMENT' np*'ENTIER' ; * 'SI' ('NEG' (MODULO nchan 2) 1) ; cherr = 'CHAINE' 'nchan should be odd' ; 'FINSI' ; * * Geometric quantities deduced from the one given above * ec = '/' Dh 2.D0 ; ec2 = '/' ec 2 ; nplate = '+' nchan 1 ; L2 = '+' ('*' nplate ep) ('*' nchan ec) '+' ('*' ef 2) ; L4 = '/' L2 2.D0 ; * * Discretisation * nplate2 = '/' nplate 2 ; nc = '*' nc2 2 ; * tabin = 'TABLE' ; tabin . 'INTERFACE' = 'TABLE' ; tabin . 'CHANNEL' = 'TABLE' ; iitf = 1 ; * * Part1 : Lines * p0 = 0. 0. 0. ; p1 = ef 0. 0. ; lcorg = 'DROIT' nf p0 p1 ; tablig = 'TABLE' ; bp = p1 ; 'REPETER' iplate nplate ; APPEND tablig 'LIG' ('DROIT' bp p2 np) ; bp = p2 ; 'SI' ('<' &iplate nplate) ; APPEND tablig 'LIG' ('DROIT' bp p2 nc) ; bp = p2 ; 'FINSI' ; 'FIN' iplate ; lcb = tablig . 'LIG' ; lch = 'DROIT' p1 p2 1 ; bp = p2 ; lcord = 'DROIT' nf p2 p3 ; lcor = 'ET' lcorg lcord ; * * Part1 : bottom structure * bp = 0. 0. 0. ; vt = 0. ef 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' (lcor 'ET' lcb) nf vt) ; * * Loop on plates * 'REPETER' iplate nplate2 ; * Structure part vt = 0. ep 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort np vt) ; * Fuel part APPEND tabin 'FUEL' ('TRANSLATION' lcbt np vt) ; 'SI' ('>' &iplate 1) ; APPEND (tabin . 'INTERFACE') ('-' iitf 1) lcbt ; 'FINSI' ; APPEND (tabin . 'INTERFACE') iitf lcbtt ; 'SI' ('<' &iplate nplate2) ; * Structure part vt = 0. ec 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort nc vt) ; APPEND (tabin . 'INTERFACE') iitf ('DROIT' p1t p1tt nc) ; APPEND (tabin . 'INTERFACE') iitf ('DROIT' p2t p2tt nc) ; * Channel part APPEND (tabin . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ; iitf = '+' iitf 1 ; * The last one is a half channel 'SINON' ; * Structure part vt = 0. ec2 0. ; APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort nc2 vt) ; APPEND (tabin . 'INTERFACE') iitf ('DROIT' p1t p1tt nc2) ; APPEND (tabin . 'INTERFACE') iitf ('DROIT' p2t p2tt nc2) ; * Channel part APPEND (tabin . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ; iitf = '+' iitf 1 ; 'FINSI' ; 'FIN' iplate ; * 'RESPRO' tabin ; * * End of procedure file GEOMPL23 * 'FINPROC' ; *ENDPROCEDUR geompl23 *BEGINPROCEDUR geompla1 ************************************************************************ * NOM : GEOMPLA1 * DESCRIPTION : Mesh of a plate geometry : small symmetry cell * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 22/11/2004, version initiale * HISTORIQUE : v1, 22/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' GEOMPLA1 ; 'ARGUMENT' Dh*'FLOTTANT' ; 'ARGUMENT' ef*'FLOTTANT' ; 'ARGUMENT' ep*'FLOTTANT' ; 'ARGUMENT' nchan*'ENTIER' ; * 'SI' ('NEG' (MODULO nchan 2) 1) ; cherr = 'CHAINE' 'nchan should be odd' ; 'FINSI' ; * * Geometric quantities deduced from the one given above * ec = '/' Dh 2.D0 ; ec2 = '/' ec 2 ; nplate = '+' nchan 1 ; L2 = '+' ('*' nplate ep) ('*' nchan ec) '+' ('*' ef 2) ; L4 = '/' L2 2.D0 ; * * Discretisation * nplate2 = '/' nplate 2 ; nc2 = 1 ; nc = '*' nc2 2 ; nf = 2 ; np = 2 ; * * Tables * tabin1 = 'TABLE' ; tabin1 . 'INTERFACE' = 'TABLE' ; tabin1 . 'CHANNEL' = 'TABLE' ; iitf = 1 ; * * Part1 : Lines * p0 = 0. 0. 0. ; p1 = 0. ('*' ef -1.D0) 0. ; lcor = 'DROIT' nf p0 p1 ; tablig = 'TABLE' ; bp = p1 ; 'REPETER' ipl nplate2 ; APPEND tablig 'LIG' ('DROIT' bp p2 np) ; bp = p2 ; * The last one is an half channel 'SI' ('NEG' &ipl nplate2) ; APPEND tablig 'LIG' ('DROIT' bp p2 nc) ; bp = p2 ; 'SINON' ; APPEND tablig 'LIG' ('DROIT' bp p2 nc2) ; bp = p2 ; 'FINSI' ; 'FIN' ipl ; lcb = tablig . 'LIG' ; lch = 'DROIT' p1 p2 1 ; * * Part1 : left structure * bp = 0. 0. 0. ; vt = ef 0. 0. ; APPEND tabin1 'STRUCTURE' ('TRANSLATION' (lcor 'ET' lcb) nf vt) ; * * Loop on plates * 'REPETER' iplate nplate2 ; * Structure part vt = ep 0. 0. ; APPEND tabin1 'STRUCTURE' ('TRANSLATION' lcort np vt) ; * Fuel part APPEND tabin1 'FUEL' ('TRANSLATION' lcbt np vt) ; 'SI' ('>' &iplate 1) ; APPEND (tabin1 . 'INTERFACE') ('-' iitf 1) lcbt ; 'FINSI' ; APPEND (tabin1 . 'INTERFACE') iitf lcbtt ; 'SI' ('<' &iplate nplate2) ; * Structure part vt = ec 0. 0. ; APPEND tabin1 'STRUCTURE' ('TRANSLATION' lcort nc vt) ; APPEND (tabin1 . 'INTERFACE') iitf ('DROIT' p1t p2t nc) ; * Channel part APPEND (tabin1 . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ; iitf = '+' iitf 1 ; * The last one is a half channel 'SINON' ; * Structure part vt = ec2 0. 0. ; APPEND tabin1 'STRUCTURE' ('TRANSLATION' lcort nc2 vt) ; APPEND (tabin1 . 'INTERFACE') iitf ('DROIT' p1t p2t nc2) ; * Channel part APPEND (tabin1 . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ; iitf = '+' iitf 1 ; 'FINSI' ; 'FIN' iplate ; nitf = ('-' iitf 1) ; * * Perform rotations * tabin = 'TABLE' ; tabin . 'INTERFACE' = 'TABLE' ; tabin . 'CHANNEL' = 'TABLE' ; iitf = 1 ; pr = 0. 0. 1. ; 'REPETER' bclrot 4 ; arot = '*' 90. ('-' &bclrot 1) ; append tabin 'STRUCTURE' ('TOURNER' (tabin1 . 'STRUCTURE') arot p0 pr) ; append tabin 'FUEL' ('TOURNER' (tabin1 . 'FUEL') arot p0 pr) ; 'REPETER' bitf nitf ; append (tabin . 'INTERFACE') iitf ('TOURNER' (tabin1 . 'INTERFACE' . &bitf) arot p0 pr) ; append (tabin . 'CHANNEL') iitf ('TOURNER' (tabin1 . 'CHANNEL' . &bitf) arot p0 pr) ; iitf = '+' iitf 1 ; 'FIN' bitf ; 'FIN' bclrot ; * 'RESPRO' tabin ; * * End of procedure file GEOMPLA1 * 'FINPROC' ; *ENDPROCEDUR geompla1 *BEGINPROCEDUR geompla2 ************************************************************************ * NOM : GEOMPLA2 * DESCRIPTION : Mesh of a plate geometry * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 22/11/2004, version initiale * HISTORIQUE : v1, 22/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' GEOMPLA2 ; 'ARGUMENT' Dh*'FLOTTANT' ; 'ARGUMENT' ef*'FLOTTANT' ; 'ARGUMENT' ep*'FLOTTANT' ; 'ARGUMENT' nchan*'ENTIER' ; * 'SI' ('NEG' (MODULO nchan 2) 1) ; cherr = 'CHAINE' 'nchan should be odd' ; 'FINSI' ; * * Geometric quantities deduced from the one given above * ec = '/' Dh 2.D0 ; ec2 = '/' ec 2 ; nplate = '+' nchan 1 ; L2 = '+' ('*' nplate ep) ('*' nchan ec) '+' ('*' ef 2) ; mL2 = '*' L2 -1.D0 ; L4 = '/' L2 2.D0 ; * * Discretization * nc2 = 1 ; nf = 2 ; np = 2 ; * * Type 1 cells * tabin1 = GEOMPL21 Dh ef ep nchan nc2 nf np ; * * Type 2 cells * tabin2 = GEOMPL22 Dh ef ep nchan nc2 nf np ; * * Type 3 cells * tabin3 = GEOMPL23 Dh ef ep nchan nc2 nf np ; * * Perform rotations and translations to generate total mesh * tabin = 'TABLE' ; tabin . 'INTERFACE' = 'TABLE' ; tabin . 'CHANNEL' = 'TABLE' ; iitf = 1 ; * * part1 : Type 1 cells * append tabin 'STRUCTURE' (tabin1 . 'STRUCTURE') ; append tabin 'FUEL' (tabin1 . 'FUEL') ; 'REPETER' bitf nitf ; append (tabin . 'INTERFACE') iitf (tabin1 . 'INTERFACE' . &bitf) ; append (tabin . 'CHANNEL') iitf (tabin1 . 'CHANNEL' . &bitf) ; iitf = '+' iitf 1 ; 'FIN' bitf ; * * part2 : two Type2 cells * 'REPETER' btype2 2 ; 'SI' ('EGA' &btype2 1) ; arot = 90.D0 ; vtra = (L2 0.D0 0.D0) ; lsym = VRAI ; 'FINSI' ; 'SI' ('EGA' &btype2 2) ; arot = 180.D0 ; vtra = (L2 0.D0 0.D0) ; lsym = VRAI ; 'FINSI' ; append tabin 'STRUCTURE' (SYTOPL (tabin2 . 'STRUCTURE') arot vtra lsym) ; append tabin 'FUEL' (SYTOPL (tabin2 . 'FUEL') arot vtra lsym) ; 'REPETER' bitf nitf ; append (tabin . 'INTERFACE') iitf (SYTOPL (tabin2 . 'INTERFACE' . &bitf) arot vtra lsym) ; append (tabin . 'CHANNEL') iitf (SYTOPL (tabin2 . 'CHANNEL' . &bitf) arot vtra lsym) ; iitf = '+' iitf 1 ; 'FIN' bitf ; 'FIN' btype2 ; * * part3 : Type 1 cells * append tabin 'STRUCTURE' (tabin3 . 'STRUCTURE') ; append tabin 'FUEL' (tabin3 . 'FUEL') ; 'REPETER' bitf nitf ; append (tabin . 'INTERFACE') iitf (tabin3 . 'INTERFACE' . &bitf) ; append (tabin . 'CHANNEL') iitf (tabin3 . 'CHANNEL' . &bitf) ; iitf = '+' iitf 1 ; 'FIN' bitf ; * * part4 : two Type2 cells * 'REPETER' btype2 2 ; 'SI' ('EGA' &btype2 1) ; arot = 180.D0 ; vtra = (0.D0 0.D0 0.D0) ; lsym = FAUX ; 'FINSI' ; 'SI' ('EGA' &btype2 2) ; arot = 270.D0 ; vtra = (0.D0 0.D0 0.D0) ; lsym = FAUX ; 'FINSI' ; append tabin 'STRUCTURE' (SYTOPL (tabin2 . 'STRUCTURE') arot vtra lsym) ; append tabin 'FUEL' (SYTOPL (tabin2 . 'FUEL') arot vtra lsym) ; 'REPETER' bitf nitf ; append (tabin . 'INTERFACE') iitf (SYTOPL (tabin2 . 'INTERFACE' . &bitf) arot vtra lsym) ; append (tabin . 'CHANNEL') iitf (SYTOPL (tabin2 . 'CHANNEL' . &bitf) arot vtra lsym) ; iitf = '+' iitf 1 ; 'FIN' bitf ; 'FIN' btype2 ; * 'RESPRO' tabin ; * * End of procedure file GEOMPLA2 * 'FINPROC' ; *ENDPROCEDUR geompla2 *BEGINPROCEDUR geomplh1 ************************************************************************ * NOM : GEOMPLH1 * DESCRIPTION : Géométrie hexagonale à plaques * Technical report DM2S/SFME/LTMF/RT/05-050/A * typgeo = 1 small losange cell * typgeo = 2 normal hexagonal cell * typgeo = 3 large two hexagonal cells * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 21/03/2005, version initiale * HISTORIQUE : v1, 21/03/2005, 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 ! ************************************************************************ * * 'DEBPROC' GEOMPLH1 ; 'ARGUMENT' ept*'FLOTTANT' ; 'ARGUMENT' eps*'FLOTTANT' ; 'ARGUMENT' epp*'FLOTTANT' ; 'ARGUMENT' epg*'FLOTTANT' ; 'ARGUMENT' npp*'ENTIER' ; 'ARGUMENT' typgeo*'ENTIER' ; * * On commence par projeter toutes les quantités sur une génératrice * ff = '/' 2.D0 ('**' 3.D0 0.5D0) ; l = '*' ('/' ept 2.D0) ff ; eps = '*' eps ff ; epp = '*' epp ff ; epg = '*' epg ff ; eps2 = '/' eps 2.D0 ; * res = '-' l (eps2 '+' ('*' epp npp) '+' ('*' epg ('-' npp 1)) '+' eps) ; epg2 = '/' res 2.D0 ; * * Discrétisation * ns2 = 1 ; *ns2 = 2 ; ng = 2 ; ng2 = 'ENTIER' ('+' ('*' ng ('/' epg2 epg)) 0.5D0) ; *'MESSAGE' ('CHAINE' 'ng2 = ' ng2) ; *'MESSAGE' ('CHAINE' 'epg = ' epg) ; *'MESSAGE' ('CHAINE' 'epg2 = ' epg2) ; *'MESSAGE' ('CHAINE' 'epg '-' epg2 = ' ('-' epg epg2)) ; *ng2 = 1 ; *ng2 = 2 ; np = 3 ; *ns2 = 3 ; *ns = 3 ; *ng = 3 ; *ng2 = 3 ; *np = 3 ; * * Build the horizontal generator * itg = 0 ; tabgen = 'TABLE' ; bp = 0.D0 0.D0 0.D0 ; * left structure ss = 'DROIT' bp ns2 bpp ; bp = bpp ; itg = '+' itg 1 ; tabgen . itg = 'TABLE' ; tabgen . itg . 'SEG' = ss ; * left gas channel ss = 'DROIT' bp ng2 bpp ; bp = bpp ; itg = '+' itg 1 ; tabgen . itg = 'TABLE' ; tabgen . itg . 'SEG' = ss ; * plates and channel 'REPETER' ipp npp ; ss = 'DROIT' bp np bpp ; bp = bpp ; itg = '+' itg 1 ; tabgen . itg = 'TABLE' ; tabgen . itg . 'SEG' = ss ; 'SI' ('NEG' &ipp npp) ; ss = 'DROIT' bp ng bpp ; bp = bpp ; itg = '+' itg 1 ; tabgen . itg = 'TABLE' ; tabgen . itg . 'SEG' = ss ; 'FINSI' ; 'FIN' ipp ; * * right gas channel ss = 'DROIT' bp ng2 bpp ; bp = bpp ; itg = '+' itg 1 ; tabgen . itg = 'TABLE' ; tabgen . itg . 'SEG' = ss ; * right structure bp = bpp ; itg = '+' itg 1 ; tabgen . itg = 'TABLE' ; tabgen . itg . 'SEG' = ss ; * * Build the vertical generators * prot1 = 0.D0 0.D0 0.D0 ; prot2 = 0.D0 0.D0 1.D0 ; arot = 120.D0 ; tabtmp = 'TABLE' ; titg = tabgen . &iitg ; APPEND tabtmp 'GENSTR' (titg . 'SEG') ; 'SINON' ; APPEND tabtmp 'GENFU' (titg . 'SEG') ; 'FINSI' ; 'FIN' iitg ; genstr = tabtmp . 'GENSTR' ; genfu = tabtmp . 'GENFU' ; * genstr = 'TOURNER' genstr arot prot1 prot2 ; genfu = 'TOURNER' genfu arot prot1 prot2 ; *gent = 'ET' (tabtmp . 'GENSTR') (tabtmp . 'GENFU') ; *'LISTE' genstr ; *'LISTE' genfu ; *'LISTE' gent ; *strgen = 'COULEUR' (genstr 'GENERATRICE' gent) 'BLAN' ; *fugen = 'COULEUR' (genfu 'GENERATRICE' gent) 'ROUG' ; *'OPTION' 'DIME' 2 ; *'TRACER' ('ET' genstr ('COULEUR' gent 'ROUG')) ; *'TRACER' fugen ; *'TRACER' (fugen 'ET' strgen) ; * * Construire une cellule élémentaire dans tabin1 * tabin1 = 'TABLE' ; tabin1 . 'INTERFACE' = 'TABLE' ; tabin1 . 'CHANNEL' = 'TABLE' ; tabin1 . 'DH' = 'TABLE' ; ich = 0 ; bp = 0. 0. 0. ; titg = tabgen . &iitg ; li = titg . 'SEG' ; APPEND tabin1 'STRUCTURE' su ; 'FINSI' ; li = titg . 'SEG' ; * 'MESSAGE' ('CHAINE' 'Dh = ' dh) ; ich = '+' ich 1 ; APPEND (tabin1 . 'INTERFACE') ich ct ; APPEND (tabin1 . 'CHANNEL') ich su ; tabin1 . 'DH' . ich = dh ; APPEND tabin1 'STRUCTURE' su ; 'FINSI' ; li = titg . 'SEG' ; APPEND tabin1 'FUEL' su ; APPEND tabin1 'STRUCTURE' su ; 'FINSI' ; 'FIN' iitg ; * * Construire un bloc de trois cellules * tabin2 = 'TABLE' ; tabin2 . 'INTERFACE' = 'TABLE' ; tabin2 . 'CHANNEL' = 'TABLE' ; tabin2 . 'DH' = 'TABLE' ; iitf = 0 ; p0 = 0. 0. 0. ; pr = 0. 0. 1. ; 'REPETER' bclrot 3 ; arot = '*' 120.D0 ('-' &bclrot 1) ; append tabin2 'STRUCTURE' ('TOURNER' (tabin1 . 'STRUCTURE') arot p0 pr) ; append tabin2 'FUEL' ('TOURNER' (tabin1 . 'FUEL') arot p0 pr) ; 'REPETER' bich ich ; iitf = '+' iitf 1 ; append (tabin2 . 'INTERFACE') iitf ('TOURNER' (tabin1 . 'INTERFACE' . &bich) arot p0 pr) ; append (tabin2 . 'CHANNEL') iitf ('TOURNER' (tabin1 . 'CHANNEL' . &bich) arot p0 pr) ; tabin2 . 'DH' . iitf = tabin1 . 'DH' . &bich ; 'FIN' bich ; 'FIN' bclrot ; * * Construire un bloc de 2 hexagones * tabin3 = 'TABLE' ; tabin3 . 'INTERFACE' = 'TABLE' ; tabin3 . 'CHANNEL' = 'TABLE' ; tabin3 . 'DH' = 'TABLE' ; nitf = iitf ; iitf = 0 ; lrot = '/' ('*' l 1.5D0) ('COS' 30.) ; 'REPETER' ibloc 2 ; 'SI' ('EGA' &ibloc 1) ; ltra = 0. 0. 0. ; 'SINON' ; arot = '+' 90.D0 ('*' 60.D0 ('-' &ibloc 2)) ; ltra = ('*' lrot ('COS' arot)) ('*' lrot ('SIN' arot)) 0. ; 'FINSI' ; append tabin3 'STRUCTURE' append tabin3 'FUEL' 'REPETER' bitf nitf ; iitf = '+' iitf 1 ; append (tabin3 . 'INTERFACE') iitf append (tabin3 . 'CHANNEL') iitf tabin3 . 'DH' . iitf = tabin2 . 'DH' . &bitf ; 'FIN' bitf ; 'FIN' ibloc ; * * Compute hydraulic diameter * 'SI' ('EGA' typgeo 1) ; tabin = tabin1 ; 'FINSI' ; 'SI' ('EGA' typgeo 2) ; tabin = tabin2 ; 'FINSI' ; 'SI' ('EGA' typgeo 3) ; tabin = tabin3 ; 'FINSI' ; *'LISTE' (tabin . 'DH') ; *fu = 'COULEUR' (tabin . 'FUEL') 'ROUG' ; *st = 'COULEUR' (tabin . 'STRUCTURE') 'BLAN' ; *ch = 'COULEUR' (@STBL (tabin . 'CHANNEL')) 'BLEU' ; *it = 'COULEUR' (@STBL (tabin . 'INTERFACE')) 'JAUN' ; *'OPTION' 'DIME' 2 ; *'TRACER' (fu 'ET' st 'ET' ch) ; *'TRACER' it ; *'FIN' ; * *tabin = 'TABLE' ; 'RESPRO' tabin epg2 ; * * End of procedure file GEOMPLH1 * 'FINPROC' ; *ENDPROCEDUR geomplh1 *BEGINPROCEDUR modnav ************************************************************************ * NOM : MODNAV * DESCRIPTION : * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 04/06/2003, version initiale * HISTORIQUE : v1, 04/06/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 ! ************************************************************************ * * 'DEBPROC' MODNAV ; 'REPETER' bcl ; 'ARGUMENT' mquaf/'MAILLAGE' ; 'SI' ('EXISTE' mquaf) ; modn = 'MODELISER' mquaf 'NAVIER_STOKES' dd ; 'RESPRO' modn ; 'SINON' ; 'QUITTER' bcl ; 'FINSI' ; 'FIN' bcl ; * * End of procedure file MODNAV * 'FINPROC' ; *ENDPROCEDUR modnav *BEGINPROCEDUR prpcb ************************************************************************ * NOM : PRPCB *----------------------------------------------------------------------- * Thermal conductivity of a CerCer fuel *----------------------------------------------------------------------- * Input : T ou TS : temperature (CHPOINT or FLOTTANT) * (degree K) * Validity domaine : 500 to 1300 degree C * IRRAD : Irradiated fuel ? * Output : LUPU : thermal conductivity of (U,Pu) same type as T * LSIC : thermal conductivity of SiC same type as T * LCB : thermal conductivity of CerCer fuel same type as T * (W.m-1.K-1) *----------------------------------------------------------------------- * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : ********************************************************************** * VERSION : v1.1, 06/10/2004 Test domaine de validité * VERSION : v1, 20/10/2003, version initiale * HISTORIQUE : v1, 20/10/2003, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * * 'DEBPROC' PRPCB ; 'ARGUMENT' irrad*'LOGIQUE' ; 'ARGUMENT' t/'CHPOINT' ; 'SI' ('EXISTE' t) ; 'SINON' ; 'ARGUMENT' t*'FLOTTANT' ; 'FINSI'; * * Validity domain (in °C) * vdinfc = 499.D0 ; vdsupc = 1301.D0 ; * PORO : Porosity (controled size) * BETA : Coefficient to take into account the porosity * in the Maxwell-Eucken law * FVOL : Volume fraction of (U,Pu)C inclusions in the SiC * matrix * If irrad=true, we choose a * combrat (at%) combustion ratio of 10 at% for (U,PU)C * tirradc (°C) and an irradiation temperature of * 1125°C for the SiC . poro = 0.15D0 ; beta = 2.D0 ; fvol = 0.7D0 ; combrat = 10.D0 ; tirradc = 1125.D0 ; * * Coefficients for the correlations * * (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 ; * 'SI' ('EGA' typarg 'FLOTTANT') ; t1 = 1.D0 ; 'SINON' ; tmail = 'EXTRAIRE' t 'MAIL' ; 'FINSI' ; * tc = '-' t ('*' t1 273.15D0) ; * * Test if temperature is in the validity range * 'SI' ('EGA' typarg 'FLOTTANT') ; mintc = tc ; maxtc = tc ; 'SINON' ; mintc = 'MINIMUM' tc ; maxtc = 'MAXIMUM' tc ; 'FINSI' ; testval = 'ET' ('>' mintc vdinfc) ('<' maxtc vdsupc) ; * tc2 = '**' tc 2 ; * (U,Pu)C non irradiated and 100% dense lupu1 = '+' ('+' ('*' tc c2) ('*' tc2 c3)) c1 ; * (U,Pu)C non irradiated, porous cpor = '/' ('-' 1.d0 poro) ('+' 1.d0 ('*' beta poro)) ; lupu2 = '*' lupu1 cpor ; * (U,Pu)C irradiated porous 'SI' irrad ; cirrad = ('-' 1.d0 ('*' 0.02d0 combrat)) ; lupu = '*' lupu2 cirrad ; 'SINON' ; lupu = lupu2 ; 'FINSI' ; * SiC non irradiated and 100% dense it = '/' t1 t ; it2 = '**' it 2 ; it3 = '*' it2 it ; lsic1 = '+' ('+' ('*' it b) ('+' ('*' it2 c) ('*' it3 d))) a ; * SiC irradiated '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 denom) ; 'RESPRO' lupu lsic lcb testval ; * * End of procedure file PRPCB * 'FINPROC' ; *ENDPROCEDUR prpcb *BEGINPROCEDUR prphe ************************************************************************ * NOM : PRPHE *----------------------------------------------------------------------- * Thermal properties of Helium 4 *----------------------------------------------------------------------- * Input : ptot : pressure (bars) * T : temperature (K) (CHPOINT or FLOTTANT) * * Output : RHOHE : density (kg.m-3) * MUHE : viscosity (kg.m-1.s-1) * LHE : thermal conductivity (W.m-1.K-1) * CPHE : specific heat (at constant pressure) (J.kg-1.K-1) *----------------------------------------------------------------------- * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : ********************************************************************** * VERSION : v1.1, 06/10/2004, test + simplification * VERSION : v1, 26/02/2003, version initiale * HISTORIQUE : v1, 26/02/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 ! ************************************************************************ * * 'DEBPROC' PRPHE ; 'ARGUMENT' ptot*'FLOTTANT' ; 'ARGUMENT' t/'CHPOINT' ; 'SI' ('EXISTE' t) ; 'SINON' ; 'ARGUMENT' t*'FLOTTANT' ; 'FINSI'; * pref = 101325. ; ppa = '*' ptot pref ; * * Validity domain * vdpinf = 1. ; vdpsup = 100. ; vdtinf = 273. ; vdtsup = 1500. ; * Perfect gas constant for helium 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' ('EGA' typarg 'FLOTTANT') ; t1 = 1.D0 ; 'SINON' ; tmail = 'EXTRAIRE' t 'MAIL' ; 'FINSI' ; * Test validity range * minp = ptot ; maxp = ptot ; 'SI' ('EGA' typarg 'FLOTTANT') ; mint = t ; maxt = t ; 'SINON' ; mint = 'MINIMUM' t ; maxt = 'MAXIMUM' t ; 'FINSI' ; testval = 'ET' ('ET' ('>' mint vdtinf) ('<' maxt vdtsup)) ('ET' ('>' minp vdpinf) ('<' maxp vdpsup)) ; * b = ('/' ('*' t1 c4) ('+' t1 ('*' t c5))) '+' ('/' ('*' t1 c2) ('-' t1 ('*' t c3))) '+' c1 ; rhohe = '*' ('/' t1 ('+' ('*' t rhe) ('*' b ppa))) ppa ; muhe = '*' ('**' t 0.687) 3.953D-7 ; lhe = '*' ('**' t 0.701) 2.774D-3 ; 'RESPRO' rhohe muhe lhe cphe testval ; * * End of procedure file PRPHE * 'FINPROC' ; *ENDPROCEDUR prphe *BEGINPROCEDUR quafme ************************************************************************ * NOM : QUAFME * DESCRIPTION : * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 04/06/2003, version initiale * HISTORIQUE : v1, 04/06/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 ! ************************************************************************ * * 'DEBPROC' QUAFME ; 'REPETER' bcl ; 'ARGUMENT' mquad/'MAILLAGE' ; 'SI' ('EXISTE' mquad) ; mquaf = 'CHANGER' mquad 'QUAF' ; 'RESPRO' mquaf ; 'SINON' ; 'QUITTER' bcl ; 'FINSI' ; 'FIN' bcl ; * * End of procedure file QUAFME * 'FINPROC' ; *ENDPROCEDUR quafme *BEGINPROCEDUR summdat ************************************************************************ * NOM : SUMMDAT * DESCRIPTION : * SUMMDAT prints a summary of the datas. * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 17/11/2004, version initiale * HISTORIQUE : v1, 17/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' SUMMDAT ; 'ARGUMENT' tabdat*'TABLE' ; * * Retrieve parameters from tables * tabgeo = tabdat . 'tabgeo' ; tabin = tabgeo . 'tabin' ; tabphy = tabdat . 'tabphy' ; tabnum = tabdat . 'tabnum' ; * ikas = tabdat . 'ikas' ; * lblock = tabin . 'BLOCKED' ; * H = tabgeo . 'H' ; $mtcbst = tabgeo . '$mtcbst' ; $mthe = tabgeo . '$mthe' ; * QUAF meshes * tabphy = tabdat . 'tabphy' ; * Interface Dh = tabphy . 'Dh' ; * Helium * vhe = tabphy . 'vhe' ; qhe = tabphy . 'qhe' ; prhe = tabphy . 'prhe' ; theek = tabphy . 'theek' ; theec = '-' theek 273.15D0 ; * compute bottom He speed rhohe muhe lhe cphe dum = PRPHE prhe theek ; vhe = '/' qhe rhohe ; * Fuel pvol = tabphy . 'pvol' ; pvar = tabphy . 'pvar' ; gamma = tabphy . 'gamma' ; irrad = tabphy . 'irrad' ; maxit = tabnum . 'maxit' ; rescvg = tabnum . 'rescvg' ; solvit = tabnum . 'solvit' ; * 'MESSAGE' '**************' ; 'MESSAGE' ('CHAINE' 'Case ' ikas) ; 'SI' ('ET' ('>EG' ikas 1) ('<EG' ikas 3)) ; chcore = 'CHAINE' 'Hexagonal core' ; 'FINSI' ; 'SI' ('ET' ('>EG' ikas 4) ('<EG' ikas 6)) ; chcore = 'CHAINE' 'Plate core' ; 'FINSI' ; 'SI' ('ET' ('>EG' ikas 7) ('<EG' ikas 29)) ; chcore = 'CHAINE' 'Hexagonal plate core' ; 'FINSI' ; 'SI' ('>EG' ikas 30) ; chcore = 'CHAINE' 'Modified hexagonal plate core' ; 'FINSI' ; 'SI' ('EGA' dlblock 0) ; cblock = 'CHAINE' 'with no blocked channels' ; 'SINON' ; cblock = 'CHAINE' 'with ' dlblock ' blocked channels :' ; 'FINSI' ; 'MESSAGE' ('CHAINE' chcore ' ' cblock) ; 'SI' ('NEG' dlblock 0) ; cnum = 'CHAINE' ' ' ; 'REPETER' ilblock dlblock ; cnum = 'CHAINE' cnum ('EXTRAIRE' lblock &ilblock) ' ' ; 'FIN' ilblock ; 'MESSAGE' cnum ; pcflow= 'ENTIER' ('*' fblock 100.) ; 'SI' ('>' pcflow 0) ; 'MESSAGE' ('CHAINE' 'Residual flow rate = ' pcflow ' %') ; 'SINON' ; 'MESSAGE' ('CHAINE' 'Residual flow rate = ' (formar pcflow 2)) ; 'FINSI' ; 'FINSI' ; * * Geometry * 'MESSAGE' '-----------' ; 'MESSAGE' 'Geometry :' ; 'MESSAGE' ('CHAINE' 'Height = ' (formar H 2) ' m') ; mail = mtcbst 'ET' mthe ; 'MESSAGE' ('CHAINE' 'Mesh : nb. points=' npomail * * Physics * 'MESSAGE' '-----------' ; 'MESSAGE' 'Physics :' ; dhmin = 'MINIMUM' Dh ; dhmax = 'MAXIMUM' Dh ; 'MESSAGE' ('CHAINE' 'Min hydraulic diameter = ' (formar dhmin 2) ' m') ; 'MESSAGE' ('CHAINE' 'Max hydraulic diameter = ' (formar dhmax 2) ' m') ; 'MESSAGE' ('CHAINE' 'He pressure = ' (formar prhe 2) ' bar') ; 'MESSAGE' ('CHAINE' 'He flow rate = ' (formar qhe 2) ' kg.m-2.s-1') ; 'MESSAGE' ('CHAINE' 'Bottom He speed = ' (formar vhe 2) ' m.s-1') ; ' degrees C') ; 'MESSAGE' ('CHAINE' 'Volumetric core power = ' (formar pvol 2) ' W.m-3') ; 'SI' pvar ; chpvar = 'CHAINE' 'Z-cosine power profile with peaking factor gamma = ' (formar gamma 2) ; 'SINON' ; chpvar = 'Z-constant power profile ' ; 'FINSI' ; 'MESSAGE' chpvar ; 'SI' irrad ; chirr = 'The fuel is irradiated ' ; 'SINON' ; chirr = 'The fuel is new ' ; 'FINSI' ; 'MESSAGE' chirr ; * * Numerics * 'MESSAGE' '-----------' ; 'MESSAGE' 'Numerics :' ; 'MESSAGE' ('CHAINE' 'Max. nb of non-linear iterations : ' maxit) ; 'MESSAGE' ('CHAINE' 'Max. temperature residual : ' (formar rescvg 2)) ; 'SI' solvit ; chsol = 'CHAINE' 'Iterative linear solver' ; 'SINON' ; chsol = 'CHAINE' 'Direct linear solver' ; 'FINSI' ; 'MESSAGE' chsol ; 'MESSAGE' ('CHAINE' '3D Thermics relaxation factor : ' (formar omcbst 2)) ; 'MESSAGE' ('CHAINE' '1D Thermohydraulics rel. factor : ' (formar omhe 2)) ; 'MESSAGE' '**************' ; * * End of procedure file SUMMDAT * 'FINPROC' ; *ENDPROCEDUR summdat *BEGINPROCEDUR summres ************************************************************************ * NOM : SUMMRES * DESCRIPTION : * SUMMRES prints a summary of the results of the computation * it also does some validation tests (hence the return value). * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 17/11/2004, version initiale * HISTORIQUE : v1, 17/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' SUMMRES ; 'ARGUMENT' tabres*'TABLE' ; * * Retrieve parameters from tables * tabdat = tabres . 'tabdat' ; ikas = tabdat . 'ikas' ; tabgeo = tabdat . 'tabgeo' ; tabin = tabgeo . 'tabin' ; H = tabgeo . 'H' ; nh = tabgeo . 'nh' ; $mtcbst = tabgeo . '$mtcbst' ; $mtcb = tabgeo . '$mtcb' ; $mthe = tabgeo . '$mthe' ; $sthe = tabgeo . '$sthe' ; $mtif = tabgeo . '$mtif' ; * QUAF meshes * tabphy = tabdat . 'tabphy' ; prhe = tabphy . 'prhe' ; * tcpus = tabres . 'tcpus' ; * testerr = FAUX ; 'MESSAGE' '**************' ; 'MESSAGE' ('CHAINE' 'Case ' ikas) ; mail = mtcbst 'ET' mthe ; 'MESSAGE' ('CHAINE' 'CPU Time (s)=' tcpus) ; * * Verification of energy balance * 'MESSAGE' '-----------' ; 'MESSAGE' 'Energy balance :' ; * Power in the fuel pcb = tabres . 'PCB' ; pdegcb = 'MAXIMUM' ('RESULT' ('*' chvolcb pcb)) ; * Integrated flux on the channel boundaries f0 = tabres . 'F0' ; pdegif = 'MAXIMUM' ('RESULT' f0) ; errpif = '*' (ERRREL pdegif pdegcb) 100.D0 ; * Power gained by helium.. the = tabres . 'THE' ; qhe = tabres . 'QHE' ; * .. in each channels pgcan = 0.D0 ; 'REPETER' ichan nchan ; po1 = tabgeo . 'tpechan' . &ichan ; po2 = tabgeo . 'tpschan' . &ichan ; tent = 'EXTRAIRE' the 'SCAL' po1 ; tsor = 'EXTRAIRE' the 'SCAL' po2 ; qent = 'EXTRAIRE' qhe 'SCAL' po1 ; qsor = 'EXTRAIRE' qhe 'SCAL' po2 ; 'SI' ('NEG' qent qsor) ; ' ???' ; 'ERREUR' cherr ; 'FINSI' ; * cp is supposed to be constant; this is ok. * However we suppose h = rho cp T, which is dubious * we should have a procedure to compute h by integration she = 'MESURE' selem1 ; rhe muhe lhe cphe dum = PRPHE prhe tent ; * qhe = tabres . 'QHE' ; * pdeghe = qhe '*' she '*' cphe '*' ('-' tsor tent) ; pdeghe = qent '*' she '*' cphe '*' ('-' tsor tent) ; pgcan = '+' pgcan pdeghe ; 'FIN' ichan ; pdeghe = pgcan ; errphe = '*' (ERRREL pdeghe pdegcb) 100.D0 ; 'MESSAGE' ('CHAINE' 'Fuel power = ' (formar pdegcb 2) ' W') ; ' W') ; 'MESSAGE' ('CHAINE' ' errpif = ' (formar errpif 2) ' %') ; 'MESSAGE' ('CHAINE' 'Power gained by Helium = ' (formar pdeghe 2) 'W') ; 'MESSAGE' ('CHAINE' ' errphe = ' (formar errphe 2) ' %') ; * % error (i.e. limit to 0.1% = 1.D-4 error) testene1 = > errpif 1.D0 ; testene2 = > errphe 1.D0 ; 'SI' ('OU' testene1 testene2) ; 'MESSAGE' '!!Pb. energy conservation' ; 'FINSI' ; testerr = testerr 'OU' testene1 'OU' testene2 ; 'SI' testerr ; cherr = 'CHAINE' 'Error on the energy conservation !' ; 'ERREUR' cherr ; 'FINSI' ; * MinMax Helium Exit Temperature Speed 'MESSAGE' '-----------' ; 'MESSAGE' 'Helium Results :' ; the = tabres . 'THE' ; miu = 'MINIMUM' uhe ; mau = 'MAXIMUM' uhe ; mit = 'MINIMUM' the ; mat = 'MAXIMUM' the ; 'MESSAGE' ('CHAINE' 'Min. He speed = ' (formar miu 2) ' m.s-1') ; 'MESSAGE' ('CHAINE' 'Max. He speed = ' (formar mau 2) ' m.s-1') ; ' degrees C') ; ' degrees C') ; * MinMax Fuel temperature + locations 'MESSAGE' '-----------' ; 'MESSAGE' 'Fuel Results :' ; tcb = tabres . 'TCBS' ; nmaxloc = 4 ; tcbmi = 'MINIMUM' tcb ; tcbmi = '*' tcbmi 1.0001D0 ; ' degres C') ; 'MESSAGE' ('CHAINE' 'Location(m)'/1 ' x'/15 ' y'/30 ' z'/45) ; xp yp zp = 'COORDONNEE' poi ; cxp = formar xp 2 ; cyp = formar yp 2 ; czp = formar zp 2 ; 'MESSAGE' ('CHAINE' cxp*20 cyp*35 czp*50) ; 'FIN' imaxloc ; 'SI' ('>' nmtcbmi nmaxloc) ; 'MESSAGE' ('CHAINE' 'etc...'/20) ; 'FINSI' ; * nmaxloc = 4 ; tcbma = 'MAXIMUM' tcb ; tcbma = '*' tcbma 0.9999D0 ; ' degrees C') ; 'MESSAGE' ('CHAINE' 'Location(m)'/1 ' x'/15 ' y'/30 ' z'/45) ; xp yp zp = 'COORDONNEE' poi ; cxp = formar xp 2 ; cyp = formar yp 2 ; czp = formar zp 2 ; 'MESSAGE' ('CHAINE' cxp*20 cyp*35 czp*50) ; 'FIN' imaxloc ; 'SI' ('>' nmtcbma nmaxloc) ; 'MESSAGE' ('CHAINE' 'etc...'/20) ; 'FINSI' ; 'MESSAGE' '**************' ; * * End of procedure file SUMMRES * 'FINPROC' ; *ENDPROCEDUR summres *BEGINPROCEDUR sytopl ************************************************************************ * NOM : SYTOPL * DESCRIPTION : eventual symmetry + rotation + translation * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/11/2004, version initiale * HISTORIQUE : v1, 23/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' SYTOPL ; 'ARGUMENT' mail*'MAILLAGE' ; 'ARGUMENT' arot*'FLOTTANT' ; 'ARGUMENT' vtra*'POINT' ; 'ARGUMENT' lsym*'LOGIQUE' ; p0 = 0. 0. 0. ; p1 = 0. 1. 0. ; pr = 0. 0. 1. ; 'SI' lsym ; mail = 'SYMETRIE' mail 'DROIT' p0 p1 ; 'FINSI' ; mail3 = 'TOURNER' mail arot p0 pr ; 'RESPRO' mail2 ; * * End of procedure file SYTOPL * 'FINPROC' ; *ENDPROCEDUR sytopl *BEGINPROCEDUR tracchml ************************************************************************ * NOM : TRACCHML * DESCRIPTION : Trace un CHPOINT défini sur les centres des éléments * (valeur constante par élément) avec titre optionnel * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 12/03/2003, version initiale * HISTORIQUE : v1, 12/03/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 ! ************************************************************************ * * 'DEBPROC' TRACCHML ; 'ARGUMENT' chml*'CHPOINT ' ; 'ARGUMENT' $mt*'MMODEL ' ; 'ARGUMENT' mt2/'MAILLAGE' ; 'ARGUMENT' foeil/'POINT ' ; 'ARGUMENT' lnclk/'LOGIQUE' ; * 'SI' ('NON' ('EXISTE' foeil)) ; foeil = (2.D0 -3.D0 0.7D0) ; 'FINSI' ; oeil = CALCOEIL mt foeil ; 'SI' ('NON' ('EXISTE' lnclk)) ; lnclk = FAUX ; 'FINSI' ; 'SI' ('EXISTE' mt2) ; 'SI' lnclk ; 'TRACER' oeil 'CACH' rescal modbid mt2 'TITR' tit nbisov 'NCLK' ; 'SINON' ; 'TRACER' oeil 'CACH' rescal modbid mt2 'TITR' tit nbisov ; 'FINSI' ; 'SINON' ; 'SI' lnclk ; 'TRACER' oeil 'CACH' rescal modbid mt 'TITR' tit nbisov 'NCLK' ; 'SINON' ; 'TRACER' oeil 'CACH' rescal modbid mt 'TITR' tit nbisov ; 'FINSI' ; 'FINSI' ; * * End of procedure file TRACCHML * 'FINPROC' ; *ENDPROCEDUR tracchml *BEGINPROCEDUR tracchpo ************************************************************************ * NOM : TRACCHPO * DESCRIPTION : Tracé d'un chpoint avec titre optionnel. * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 14/10/2002, version initiale * HISTORIQUE : v1, 14/10/2002, 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 ! ************************************************************************ * * 'DEBPROC' TRACCHPO ; 'ARGUMENT' pn*'CHPOINT ' ; 'ARGUMENT' mt*'MAILLAGE' ; 'ARGUMENT' mt2/'MAILLAGE' ; 'ARGUMENT' foeil/'POINT ' ; 'ARGUMENT' lnclk/'LOGIQUE' ; rescal = pn ; 'SI' ('NON' ('EXISTE' foeil)) ; foeil = (2.D0 -3.D0 0.7D0) ; 'FINSI' ; oeil = CALCOEIL mt foeil ; 'SI' ('NON' ('EXISTE' lnclk)) ; lnclk = FAUX ; 'FINSI' ; 'SI' ('EXISTE' mt2) ; 'SI' lnclk ; 'TRACER' oeil 'CACH' rescal mt mt2 'TITR' tit nbisov 'NCLK' ; 'SINON' ; 'TRACER' oeil 'CACH' rescal mt mt2 'TITR' tit nbisov ; 'FINSI' ; 'SINON' ; 'SI' lnclk ; 'TRACER' oeil 'CACH' rescal mt mt 'TITR' tit nbisov 'NCLK' ; 'SINON' ; 'TRACER' oeil 'CACH' rescal mt mt 'TITR' tit nbisov ; 'FINSI' ; 'FINSI' ; * * End of procedure file TRACCHPO * 'FINPROC' ; *ENDPROCEDUR tracchpo *BEGINPROCEDUR tracmesh ************************************************************************ * NOM : TRACMESH * DESCRIPTION : Tracé d'un maillage * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 16/11/2004, version initiale * HISTORIQUE : v1, 16/11/2004, 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 ! ************************************************************************ * * 'DEBPROC' TRACMESH ; 'ARGUMENT' mt*'MAILLAGE' ; 'ARGUMENT' foeil/'POINT ' ; 'ARGUMENT' lnclk/'LOGIQUE' ; * 'SI' ('NON' ('EXISTE' foeil)) ; foeil = (2.D0 -3.D0 0.7D0) ; 'FINSI' ; oeil = CALCOEIL mt foeil ; 'SI' ('NON' ('EXISTE' lnclk)) ; lnclk = FAUX ; 'FINSI' ; 'SI' lnclk ; 'TRACER' oeil mt 'CACH' 'TITRE' tit 'NCLK' ; 'SINON' ; 'TRACER' oeil mt 'CACH' 'TITRE' tit ; 'FINSI' ; * * End of procedure file TRACMESH * 'FINPROC' ; * * * *ENDPROCEDUR tracmesh 'OPTION' 'ECHO' 1 ; ************************************************************************ * NOM : COUPLAGE_TH1D_TH3D * DESCRIPTION : * Idem COUPLAGE_TH1D_TH3D_x, (x=1 or) but better : * we try to write an easy to use dgibi file with well * specified inputs and outputs. * * See technical reports DM2S/SFME/LTMF/RT/03-012/A * DM2S/SFME/LTMF/RT/03-012/B * DM2S/SFME/LTMF/RT/04-024/A * DM2S/SFME/LTMF/RT/05-050/A * Coupled modelization 3D thermic-1D thermohydraulics * of a gas-cooled reactor. * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 09/10/2004, version initiale * HISTORIQUE : v1, 09/10/2004, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * * Some global options and settings * * * complet = VRAI : runs all the cases * interact = VRAI : interactive use * graph = VRAI : if one wants graphic output (TRAC, DESS) complet = FAUX ; interact= FAUX ; graph = FAUX ; * 'OPTION' 'ISOV' 'SULI' ; * nbisov : number of isovalues nbisov = 25 ; 'SI' ('NON' interact) ; 'OPTION' 'TRAC' 'PSC' ; 'OPTION' 'ECHO' 0 ; 'SINON' ; 'OPTION' 'TRAC' 'X' ; * 'OPTION' 'TRAC' 'OPEN' ; 'FINSI' ; *************************************** * * Geometry-related settings * *************************************** * * Geometry data for hexagonal configuration * (quantities to be specified) * pas : dimension of the unit cell (m) * Dh : Hydraulique diameter (m) * H : Core height (m) * Geometry data for plate configuration * (quantities to be specified) * Dh : Hydraulique diameter (m) * ef : width of the structure part (m) * ep : width of a fuel plate (m) ; * nchan : number of channels * H : Core height (m) * * Geometry data for hexagonal plate configuration * * ept : Entreplat (m) * eps : Epaisseur de structure (m) * epp : Epaisseur de plaque (m) * epg : Epaisseur lame de gaz (m) * epge : Epaisseur lame de gaz extrême (m) * npp : Nombre de plaques (m) * * * Geometric discretization parameters * (number of elements) * nh (height) : number of elements in the height * *************************************** * * Physics-related settings * *************************************** * * Helium * * prhe : Helium pressure (bar) * qhe : Helium flow rate (bottom of the core) (kg.m-2.s-1) * theec, theek : Cold Helium temperature in degree C and in K * fblock : relative residual flow rate in blocked channels (between 0. * and 1.) * * Fuel * * pvol : Volumic power * It is the power per unit of total core (fuel+helium+structure) * and not the power per unit of fuel (W.m-3) * gamma : Gamma factor (power peaking factor) * 1.3 < gamma < 2.0 * pvar = VRAI : sinusoidal power profile in the fuel * = FAUX : constant power profile in the fuel * irrad = VRAI : for used nuclear fuel (new otherwise) * *************************************** * * Solver-related settings * *************************************** * * Solver parameters * * maxit : maximum number of non-linear iterations * rescvg : convergence occur for a temperature residual < rescvg * solvit = FAUX : direct solver, more robust, slower * = VRAI : iterative solver, less robust, faster * omcbst : relaxation factor for 3D thermics * omhe : relaxation factor for 1D thermo-hydraulics * * ************************************* * * Definition of the test cases : **** * ikas : 1 to 3 Technical report DM2S/SFME/LTMF/RT/03-012/B * ikas = 1 : Hexagonal core, nominal case, small symmetry cell * ikas = 2 : Hexagonal core, nominal case, larger symmetry cell * ikas = 3 : Hexagonal core, accidental case, larger symmetry cell **** * ikas : 4 to 6 Technical report DM2S/SFME/LTMF/RT/04-024/A * ikas = 4 : Square core, nominal case, small symmetry cell * ikas = 5 : Square core, nominal case, larger symmetry cell * ikas = 6 : Square core, accidental case, larger symmetry cell **** * ikas : 7 to Technical report DM2S/SFME/LTMF/RT/05-050/A * ikas = 7 : Hexagonal core, nominal case, small losange cell * ikas = 8 : Hexagonal core, channel 2 blocked, small losange cell * chapter 2 * ikas = 9 : Hexagonal core, nominal case, normal hexa cell * ikas = 10 : Hexagonal core, channel 1 blocked, normal hexa cell * ikas = 11 : Hexagonal core, channel 2 blocked, normal hexa cell * ikas = 12 : Hexagonal core, channel 5 blocked, normal hexa cell * ikas = 13 : Hexagonal core, channel 4 and 6 blocked, normal hexa cell * ikas = 14 : Hexagonal core, channel 5 and 6 blocked, normal hexa * cell (doesn't work) * ikas = 15 : Hexagonal core, channel 5 and 6 95% blocked, normal hexa * cell * ikas = 16 : Hexagonal core, channel 2 blocked, large 2 hexa cells * chapter 4 * ikas = 17 : Hexagonal core, channel 2 blocked, normal hexa cell * Reduced Pvol and Qhe : * 75 % * ikas = 18 : Hexagonal core, channel 2 blocked, normal hexa cell * Reduced Pvol and Qhe : * 40 % * ikas = 19 : Hexagonal core, channel 2 blocked, normal hexa cell * Qhe Increase : + 50 % * ikas = 20 : Hexagonal core, channel 2 blocked, normal hexa cell * ((Pvol Qhe)*75%) + Qhe Increase : + 25 % * chapter 3 * ikas = 30 : Modified hexagonal core, nominal case, normal hexa cell * ikas = 31 : Modified hexagonal core, channel 1 blocked, normal hexa cell * ikas = 32 : Modified hexagonal core, channel 2 blocked, normal hexa cell * ikas = 33 : Modified hexagonal core, channel 5 blocked, normal hexa cell * ikas = 34 : Modified hexagonal core, channel 4 and 6 blocked, * normal hexa cell * ikas = 35 : Modified hexagonal core, channel 5 and 6 blocked, normal hexa * cell (doesn't work) * ikas = 36 : Modified hexagonal core, channel 5 and 6 95% blocked, * normal hexa cell * * Tabtot stores tabres + maxi temperature * tabtot = 'TABLE' ; * Non-regression testing on the maximum temperature in fuel and * structure in listem * Obtained on 01/12/05 listem = 'PROG' 1154. 1154. 1595. 1101. 1101. 1865. 1080. 1910. 1110. 1700. 1840. 1700. 1810. 0. 4470. 1820. 1690. 1500. 1580. 1550. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1070. 1760. 1760. 1760. 1870. 0. 4680. ; 'SI' complet ; 16 17 18 19 20 30 31 32 33 34 36 ; 'SINON' ; 'FINSI' ; listemc = 'EXTRAIRE' listem lkas ; 'REPETER' bikas nkas ; ikas = 'EXTRAIRE' lkas &bikas ; tabtot . ikas = 'TABLE' ; 'TEMPS' 'ZERO' ; petitb = 0.D0 ; omcbst = 0.9 ; omhe = 0.5 ; * 'SI' ('ET' ('>EG' ikas 1) ('<EG' ikas 3)) ; pas = 21.1D-3 ; Dh = 16.5D-3 ; H = 2.D0 ; nh = 7 ; prhe = 90.D0 ; qhe = 210.D0 ; theec = 480.D0 ; theek = '+' theec 273.15D0 ; pvol = 100.D6 ; gamma = 1.5D0 ; pvar = VRAI ; irrad = VRAI ; maxit = 40 ; rescvg = 1.D-4 ; solvit = FAUX ; 'SI' ('EGA' ikas 1) ; tabin = GEOMHEX1 Dh pas ; 'FINSI' ; 'SI' ('EGA' ikas 2) ; tabin = GEOMHEX2 Dh pas ; 'FINSI' ; 'SI' ('EGA' ikas 3) ; tabin = GEOMHEX2 Dh pas ; 'FINSI' ; tabin . 'DH' = 'TABLE' ; 'REPETER' ichan nchan ; tabin . 'DH' . &ichan = Dh ; 'FIN' ichan ; fblock = petitb ; 'FINSI' ; 'SI' ('ET' ('>EG' ikas 4) ('<EG' ikas 6)) ; Dh = 2.D-2 ; ef = 3.04D-3 ; ep = 1.04D-2 ; nchan = 5 ; H = 4.2D0 ; nh = 7 ; prhe = 90.D0 ; qhe = 278.D0 ; theec = 480.D0 ; theek = '+' theec 273.15D0 ; pvol = 40.D6 ; gamma = 1.3D0 ; pvar = VRAI ; irrad = VRAI ; maxit = 40 ; rescvg = 1.D-4 ; solvit = VRAI ; 'SI' ('EGA' ikas 4) ; tabin = GEOMPLA1 Dh ef ep nchan ; 'FINSI' ; 'SI' ('EGA' ikas 5) ; tabin = GEOMPLA2 Dh ef ep nchan ; 'FINSI' ; 'SI' ('EGA' ikas 6) ; tabin = GEOMPLA2 Dh ef ep nchan ; 'FINSI' ; tabin . 'DH' = 'TABLE' ; 'REPETER' ichan nchan ; tabin . 'DH' . &ichan = Dh ; 'FIN' ichan ; fblock = petitb ; 'FINSI' ; 'SI' ('>EG' ikas 7) ; H = 1.55D0 ; nh = 7 ; prhe = 90.D0 ; qhe = 210.D0 ; theec = 480.D0 ; theek = '+' theec 273.15D0 ; pvol = 100.D6 ; gamma = 1.5D0 ; pvar = VRAI ; irrad = VRAI ; maxit = 40 ; rescvg = 1.D-4 ; solvit = VRAI ; ept = 211.3D-3 ; eps = 1.5D-3 ; epp = 7.D-3 ; epg = 4.6D-3 ; npp = 9 ; ff = '/' 2.D0 ('**' 3.D0 0.5D0) ; 'SI' ('>EG' ikas 30) ; ept = '+' ept ('*' ('-' 4.6D-3 ('/' 2.08D-3 ff)) 4.) ; 'FINSI' ; 'SI' ('EGA' ikas 7) ; tabin epge = GEOMPLH1 ept eps epp epg npp 1 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('EGA' ikas 8) ; tabin epge = GEOMPLH1 ept eps epp epg npp 1 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('OU' ('EGA' ikas 9) ('EGA' ikas 30)) ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('OU' ('EGA' ikas 10) ('EGA' ikas 31)) ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('OU' ('EGA' ikas 11) ('EGA' ikas 32)) ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('OU' ('EGA' ikas 12) ('EGA' ikas 33)) ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('OU' ('EGA' ikas 13) ('EGA' ikas 34)) ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('OU' ('EGA' ikas 14) ('EGA' ikas 35)) ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('OU' ('EGA' ikas 15) ('EGA' ikas 36)) ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.05D0 ; 'FINSI' ; 'SI' ('EGA' ikas 16) ; tabin epge = GEOMPLH1 ept eps epp epg npp 3 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('EGA' ikas 17) ; fq = 1.D0 ; fp = 0.75D0 ; pvol = '*' pvol fp ; qhe = '*' ('*' qhe fp) fq ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('EGA' ikas 18) ; fq = 1.D0 ; fp = 0.4D0 ; pvol = '*' pvol fp ; qhe = '*' ('*' qhe fp) fq ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('EGA' ikas 19) ; fq = 1.5D0 ; fp = 1.0D0 ; pvol = '*' pvol fp ; qhe = '*' ('*' qhe fp) fq ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.D0 ; 'FINSI' ; 'SI' ('EGA' ikas 20) ; fq = 1.25D0 ; fp = 0.75D0 ; pvol = '*' pvol fp ; qhe = '*' ('*' qhe fp) fq ; tabin epge = GEOMPLH1 ept eps epp epg npp 2 ; fblock = 0.D0 ; 'FINSI' ; * 'MESSAGE' ('CHAINE' '***************') ; 'MESSAGE' ('CHAINE' 'Epai. gaz extreme : ' (formar ('/' epge ff) 2) ' m') ; 'MESSAGE' ('CHAINE' 'Entreplat : ' (formar ept 5) ' m') ; 'MESSAGE' ('CHAINE' '***************') ; 'FINSI' ; * Input for GENMEMA procedure * tabin . 'INTERFACE' . i : i-th interface (line mesh) * tabin . 'CHANNEL' . i : i-th helium channel (surface mesh) * tabin . 'FUEL' : fuel mesh (surface mesh) * tabin . 'STRUCTURE' : structure mesh (surface mesh) (optional) * tabin . 'BLOCKED' : LISTENTI : list of the numbers * of the blocked channels (can be empty) * H : height (m) and nh : number of elements in the height * (regular meshing in z direction) * * output tabgeo should contain all the necessary geometric information * needed further * tabgeo . 'tabin' = tabin * tabgeo . 'H' = H : height * tabgeo . 'nh' = nh : number of elements in the height * tabgeo . '$mtcbst' = NS model objet (fuel+structure) * tabgeo . '$mtcb' = NS model objet (fuel only) * tabgeo . '$mthe' = NS model objet (helium channels) * tabgeo . '$sthe' = NS model objet (bottom of the helium channels) * tabgeo . '$mtif' = NS model objet (interfaces) * tabgeo . '$mtifb' = NS model objet (blocked interfaces) (if any) * tabgeo . 'mcf' = coupling matrix helium -> fuel * tabgeo . 'mfc' = coupling matrix fuel -> helium * GENMEMA is slow tabgeo = GENMEMA tabin H nh ; * * Compute power distribution * pcb = CPOWDIS tabgeo pvol gamma pvar ; * * chblock * Volumic field = 1 in unblocked channels * = fblock (between 0. and 1.) in blocked channels * $tmthe = tabgeo . '$tmthe' ; lblock = tabin . 'BLOCKED' ; tablock = 'TABLE' ; 'REPETER' ihe nhe ; $mthei = $tmthe . &ihe ; 'SINON' ; 'FINSI' ; 'FIN' ihe ; (tablock . 'chblock') ; * * Put the physics in a table * tabphy = 'TABLE' ; * Interface tabphy . 'Dh' = tabgeo . 'Dh' ; tabphy . 'chblock' = chblock ; * Helium tabphy . 'qhe' = qhe ; tabphy . 'prhe' = prhe ; tabphy . 'theek' = theek ; * Fuel tabphy . 'pvol' = pvol ; tabphy . 'pvar' = pvar ; tabphy . 'gamma' = gamma ; tabphy . 'irrad' = irrad ; tabphy . 'pcb' = pcb ; * * Put the numerics in a table * tabnum = 'TABLE' ; tabnum . 'maxit' = maxit ; tabnum . 'rescvg' = rescvg ; tabnum . 'solvit' = solvit ; tabnum . 'omcbst' = omcbst ; tabnum . 'omhe' = omhe ; * * Put the tables in a table ! * tabdat = 'TABLE' ; tabdat . 'ikas' = ikas ; tabdat . 'tabgeo' = tabgeo ; tabdat . 'tabphy' = tabphy ; tabdat . 'tabnum' = tabnum ; * * Text summary of data * SUMMDAT tabdat ; * * EXPLODAT does graphical output of data * - first argument (mandatory) : the tables with data * - second argument (optional) : VRAI (default) interactive use * (mouse clicks) * FAUX batch use * - third argument (mandatory if 2ndarg = FAUX) : a list of integer or * an integer * an integer corresponds to a particular view * View 1 : the base mesh * View 2 : the mesh * View 3 : the blocked channels * View 4 : the power distribution * View 5 : fuel and structure thermal conductivity (T) * View 6 : Helium density * View 7 : Helium thermal conductivity * View 8 : Helium heat capacity * * Graphical output of data * 'SI' graph ; 'SI' interact ; EXPLODAT tabdat ; 'SINON' ; * EXPLODAT tabdat FAUX ('LECT' 1 2 3 4) ; * EXPLODAT tabdat FAUX ('LECT' 1) ; 'FINSI' ; 'FINSI' ; *************************************** * * DO THE COMPUTATIONS * *************************************** tabres = COMPUTE tabdat ; tcpu = TABTPS.'TEMPS_CPU'.'INITIAL' ; tcpus = '/' ('FLOTTANT' tcpu) 100.D0 ; 'MESSAGE' ('CHAINE' 'tcpus=' tcpus) ; tabres . 'tcpus' = tcpus ; *************************************** * * POST-TREATEMENT * *************************************** * * Text summary of results : * SUMMRES prints a summary of the results of the computation * it also does some tests (energy conservation...) * SUMMRES tabres ; * * EXPLORES does graphical output of results * - first argument (mandatory) : the table with the results * - second argument (optional) : VRAI (default) interactive use * (mouse clicks) * FAUX batch use * - third argument (mandatory if 2ndarg = FAUX) : a list of integer or * an integer * an integer corresponds to a particular view * View 1 : temperature (fuel + He) * View 2 : temperature (fuel) * View 3 : temperature (fuel : 2 viewpoints) * View 4 : exchange coefficient * View 5 : temperature (helium) * View 6 : vertical speed (helium) * View 7 : temperature profiles per channel (helium) * View 8 : vertical speed profiles per channel (helium) * View 9 : Nusselt number * View 10 : Reynolds number * View 11 : Prandtl number * View 12 : Lambda Helium * View 13 : Hydraulic diameter 'SI' graph ; 'SI' interact ; EXPLORES tabres ; 'SINON' ; * EXPLORES tabres FAUX ('LECT' 2 4 5 7) ; 'FINSI' ; 'FINSI' ; *interact = VRAI ; *explores tabres ; * * Save the results (Maximum temperature & cpu time) * tabtot . ikas . 'maxtem' = 'MAXIMUM' (tabres . 'TCBS') ; tabtot . ikas . 'tcpus' = tabres . 'tcpus' ; *tabtot . ikas . 'tabdat' = tabdat ; *tabtot . ikas . 'tabres' = tabres ; 'FIN' bikas ; *'SI' interact ; * 'OPTION' 'ECHO' 1 ; * 'OPTION' 'DONN' 5 ; *'FINSI' ; *'TEMPS' 'IMPR' ; * * Non-regression testing on the maximum temperature in fuel and structure. * 'MESSAGE' '**********************' ; 'MESSAGE' 'Non regression testing' ; testerr = FAUX ; * 1 % tolerance toler = 0.01 ; 'REPETER' bikas nkas ; ikas = 'EXTRAIRE' lkas &bikas ; maxtem = tabtot . ikas . 'maxtem' ; tcpus = tabtot . ikas . 'tcpus' ; maxexpc = 'EXTRAIRE' listemc &bikas ; maxexp = '+' maxexpc 273.15D0 ; testerr = 'OU' testerr ('NEG' maxtem maxexp ('*' maxexp toler)) ; 'MESSAGE' ('CHAINE' 'Ikas = ' ikas) ; 'MESSAGE' ('CHAINE' 'CPU Time (s) =' tcpus) ; maxtemc = '-' maxtem 273.15D0 ; 'MESSAGE' ('CHAINE' 'Maxtem = ' (formar maxtemc 3) ' degrees C') ; 'MESSAGE' ('CHAINE' 'Expected Maxtem = ' (formar maxexpc 3) ' degrees C') ; 'FIN' bikas ; 'MESSAGE' '**********************' ; *! *! Error checking *! 'SI' testerr ; 'MESSAGE' 'There were some errors' ; 'SI' interact ; 'OPTION' 'ECHO' 1 ; 'OPTION' 'DONN' 5 ; 'FINSI' ; 'ERREUR' 5 ; 'SINON' ; 'MESSAGE' 'Everything went ok' ; 'FINSI' ; 'SI' interact ; 'OPTION' 'ECHO' 1 ; 'OPTION' 'DONN' 5 ; 'FINSI' ; * * End of dgibi file COUPLAGE_TH1D_TH3D * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales