* fichier : test1_junc_1.dgibi * repertoire des fichiers "divers" * *$$$$ TO_DATA1 'DEBPROC' TO_DATA1 ; 'MESS' ' ' ; 'MESS' 'Data acquisition : ' FILENAME ' file.' ; * FICH1 = FILENAME ; I_GAS = 0 ; I_INTE = 0 ; I_NUMBER = 0 ; NAMEOUT = 'XXXX' ; 'REPE' blo10 ; 'ACQU' NAME1 NAME2 ; 'SI' ('EGA' NAME1 '#') ; 'FINS' ; * 'SI' ('EGA' NAME1 'GAS') ; I_GAS = 1 ; NAMEOUT = name2 ; 'SINON' ; 'ERRE' cha1 ; 'QUIT' TO_DATA1 ; 'FINSI' ; NAMEOUT = name2 ; 'SI' ('NEG' NAME2 NAMEIN) ; cha1 = 'CHAI' 'File ' FICH1 ': bad gas name (' NAMEOUT 'instead of ' NAMEIN ')' ; 'ERRE' cha1 ; 'QUIT' TO_DATA1 ; 'FINS' ; 'FINS' ; 'FINS' ; * 'SI' ('EGA' NAME1 'INTERPOLATION') ; I_INTE = 1 ; 'SI' (('NEG' NAME2 'STEP') 'ET' ('NEG' NAME2 'LIN')) ; cha1 = 'CHAI' 'File ' FICH1 'ERRE' cha1 ; 'QUIT' TO_DATA1 ; 'FINS' ; 'FINS' ; * 'SI' ('EGA' NAME1 'NUMBER') ; I_NUMBER = 1 ; N1 = NAME2 ; 'SI' ('<EG' NAME2 1) ; cha1 = 'CHAI' 'File ' FICH1 ': we want an INTEGER>1 after NUMBER keyword ' ; 'ERRE' cha1 ; 'QUIT' TO_DATA1 ; 'FINS' ; 'FINS' ; 'SI' ('EGA' NAME2 'FREE') ; N1 = 0 ; 'FINS' ; 'QUIT' blo10 ; 'FINS' ; * 'FIN' blo10 ; * * On teste qu'on a bien tous les mot-clefs FLAG = I_GAS * I_INTE * I_NUMBER ; 'SINO' ; FLAG = I_INTE * I_NUMBER ; 'FINSI' ; 'SI' ('EGA' flag 0) ; 'SI' ('EGA' I_INTE 0) ; 'ERRE' cha1 ; 'FINS' ; 'SI' ('EGA' I_NUMBER 0) ; 'ERRE' cha1 ; 'FINS' ; 'SI' ('EGA' I_GAS 0) ; 'ERRE' cha1 ; 'FINS' ; 'FINS' ; 'QUIT' TO_DATA1 ; 'FINS' ; * * Lecture de la source 'REPE' blo20 ; 'ACQU' FLOT1 FLOT2 ; 'QUIT' blo20 ; 'FINSI' ; 'SI' ('EGA' FLOT1 'END') ; cha1 = 'CHAI' 'File ' FICH1 ': END keyword is detected but no data are given' ; 'ERRE' cha1 ; 'FINSI' ; 'FINSI' ; 'FIN' blo20 ; * 'REPE' BOU1 (N1 - 1) ; 'REPE' blo30 ; 'ACQU' FLOT4 FLOT5 ; 'QUIT' blo30 ; 'FINSI' ; 'QUIT' blo30 ; 'FINSI' ; 'FIN' blo30 ; 'SI' ('EGA' FLOT4 'END') ; 'QUIT' BOU1 ; 'SINO' ; cha1 = 'CHAI' 'File ' FICH1 ': word ' flot4 ': a word is detected instead of a time' ; 'ERRE' cha1 ; 'FINSI' ; 'SINO' ; DELTAT = FLOT4 - FLOT1 ; PRECED = &BOU1 ; 'SI' ('EGA' PRECED 1) ; VAL2 = FLOT2*DELTAT ; 'SINO' ; 'FINSI' ; FLOT1 = FLOT4 ; FLOT2 = FLOT5 ; 'FINSI' ; 'FIN' BOU1 ; 'SINON' ; 'REPE' BOU2 (N1 - 1) ; 'REPE' blo40 ; 'ACQU' FLOT4 FLOT5 ; 'QUIT' blo40 ; 'FINSI' ; 'QUIT' blo40 ; 'FINSI' ; 'FIN' blo40 ; 'SI' ('EGA' FLOT4 'END') ; 'QUIT' BOU2 ; 'SINO' ; cha1 = 'CHAI' 'File ' FICH1 ': word ' flot4 ': a word is detected instead of a time' ; 'ERRE' cha1 ; 'FINSI' ; 'SINO' ; DTS2 = FLOT4 - FLOT1 / 2.D0 ; PRECED = &BOU2 ; 'SI' ('EGA' PRECED 1) ; VAL2 = (FLOT2+FLOT5)*DTS2 ; 'SINO' ; 'FINSI' ; FLOT1 = FLOT4 ; FLOT2 = FLOT5 ; 'FINSI' ; 'FIN' BOU2 ; 'FINS' ; * * 'RESPROC' EV1 NAMEOUT ; 'FINPROC' ; *$$$$ OKTPS 'DEBPROC' OKTPS EV1*'EVOLUTION' LIST1*'LISTREEL' ; IER = 0 ; * 'SI' (('<' TF TC_FIN) 'OU' ('>' TI TC_IN)) ; IER = 1 ; 'MESS' 'Le support des temps associe aux data ne contient' ; 'MESS' 'pas strictement le support des temps de référence.' ; 'FINSI' ; * 'FINP' IER ; *$$$$ BCIMPL 'DEBPROC' BCIMPL SET*'TABLE' ; TSB = SET . 'BOUNDARY' ; TSD = SET . 'DATA' ; TSG = SET . 'GEOINF' ; TSI = SET . 'INCO' ; TSP = SET . 'PHYSICAL' ; * DT1 = TSI . 'DT' ; TIME00 = TSI . 'TIME1' ; TIME0 = TSI . 'TIME2' ; * TAB1 = 'TABLE' ; 'REPE' bloisbp NBCEL1 ; PTCEL1 = TSB . 'ISBP' . &bloisbp . 'CELL' ; 'REPE' sisbp nbisbp ; EV1 = TSB . 'ISBP' . &bloisbp . &sisbp .'EVOLM' ; XQ1 = (XQ0 - XQ00) / DT1 * -1. ; MLIQ2 = MLIQ1 + (DT1 * XQ1) ; 'SI' (MLIQ2 '<' 1.) ; MLIQ2 = 1. ; XQ10 = XQ1 ; XQ1 = MLIQ1 - MLIQ2 / DT1 * -1. ; 'SI' (XQ1 > 0.) ; XQ1 = 0. ; 'FINSI' ; xq1 ' instead of ' xq10 ; 'FINSI' ; MLIQ1 = MLIQ2 ; XE1 = HLIQ1 * XQ1 ; 'SI' ( 'EGA' set . 'IMPR' 1) ; 'FINSI' ; 'SI' ('EGA' &sisbp 1) ; 'MLIQ' XQ1 'ULIQ' XE1 'NATURE' 'DISCRET' ; 'SINON' ; 'MLIQ' XQ1 'ULIQ' XE1 'NATURE' 'DISCRET') ; 'FINSI' ; STR1 = TSB . 'ISBP' . &bloisbp . &sisbp . 'CUMULM' ; EVE1 = EVE0 + (DT1 * XQ1) ; STR1 = TSB . 'ISBP' . &bloisbp . &sisbp . 'CUMULE' ; EVE1 = EVE0 + (DT1 * XE1) ; 'FIN' sisbp ; TAB1 . 'RHS' = (TAB1 . 'RHS') + CHCEL1 ; 'SINON' ; TAB1 . 'RHS' = CHCEL1 ; 'FINSI' ; 'FIN' bloisbp ; 'FINSI' ; 'REPE' bloout NBCEL1 ; PTCEL1 = TSB . 'OUT' . &bloout . 'CELL' ; MGAS1 = RGAS1 * VOL1 ; 'REPE' sout nbout ; EV1 = TSB . 'OUT' . &bloout . &sout .'EVOLM' ; XQ1 = (XQ0 - XQ00) / DT1 * -1. ; MGAS2 = MGAS1 + (DT1 * XQ1) ; 'SI' (MGAS2 '<' (MGAS1 / 2.)) ; MGAS2 = MGAS1 / 2. ; XQ10 = XQ1 ; XQ1 = MGAS1 - MGAS2 / DT1 * -1. ; 'SI' (XQ1 > 0.) ; XQ1 = 0. ; 'FINSI' ; xq1 ' instead of ' xq10 ; 'FINSI' ; MGAS1 = MGAS2 ; XE1 = HGAS1 * XQ1 ; 'SI' ( 'EGA' set . 'IMPR' 1) ; 'FINSI' ; STR1 = TSB . 'OUT' . &bloout . &sout . 'CUMULM' ; EVE1 = EVE0 + (DT1 * XQ1) ; STR1 = TSB . 'OUT' . &bloout . &sout . 'CUMULE' ; EVE1 = EVE0 + (DT1 * XE1) ; 'REPE' blocomp NBCOMP1 ; NAMC1 = SET . 'COMPONENT' . &blocomp ; NAMR1 = 'CHAINE' 'R' NAMC1 ; XQI1 = (ROI1 / RGAS1) * XQ1 ; 'SI' ('EGA' &blocomp 1) ; NAMR1 XQI1 'UGAS' XE1 'NATURE' 'DISCRET' ; 'SINON' ; NAMR1 XQI1 'NATURE' 'DISCRET') ; 'FINSI' ; STR1 = TSB . 'OUT' . &bloout . &sout . NAM1 ; EVM1 = EVM0 + (DT1 * XQI1) ; 'FIN' blocomp ; TAB1 . 'RHS' = (TAB1 . 'RHS') + CHCEL1 ; 'SINON' ; TAB1 . 'RHS' = CHCEL1 ; 'FINSI' ; 'FIN' sout ; 'FIN' bloout ; 'FINSI' ; * 'FINP' TAB1 ; *$$$$ TO_BOCO 'DEBPROC' TO_BOCO SET*'TABLE' ; TSB = SET . 'BOUNDARY' ; TSD = SET . 'DATA' ; TSG = SET . 'GEOINF' ; TSI = SET . 'INCO' ; TSP = SET . 'PHYSICAL' ; * TAB1 = 'TABLE' ; COUPW1 = 'EGA' (SET . 'COUPLAGE_WALL') 'ON' ; 'SI' COUPW1 ; ECHAW1 = -1.0 * TSD . 'ECHAW' ; TPS0 = TSI . 'TIME2' ; LLOG1 = 0 ; 'REPETER' BLO1 NBOUT ; 'SI' (('NOEUD' PEXT1) 'EGA' ('NOEUD' (TSG.'EXT'))); T0 = TSD . 'TOUT' ; HT0 = HEXT '*' T0 ; 'SI' (LLOG1 'EGA' 0); LLOG1 = 1 ; 'SINON' ; CHPO3 = CHPO3 'ET' 'FINSI' ; 'SINON' ; TSPO = TSP . 'OUTD' ; NBEXTE = TSPO . 'NBOUT' ; ILOG1 = 0 ; MEXT1 = ' ' ; 'REPETER' BL01 NBEXTE ; INXT1 = INDXT . &BL01 ; PTEXT2 = TSPO . 'LOCATION' . INXT1 ; 'SI' (('NOEUD' PEXT1) 'EGA' ('NOEUD' PTEXT2)) ; ILOG1 = &BL01 ; MEXT1 = INXT1 ; 'QUITTER' BL01 ; 'FINSI' ; 'FIN' BL01 ; 'SI' (ILOG1 'EGA' 0 ); 'MESS' 'Probleme with external temperature definition'; 'FINSI' ; TIME2= TSI . 'TIME2'; HT0 = HEXT '*' T0 ; 'SI' (LLOG1 'EGA' 0); LLOG1 = 1 ; 'SINON' ; CHPO3 = CHPO3 'ET' 'FINSI' ; 'SINON' ; 'MESS' 'Probleme with external temperature definition'; 'FINSI' ; 'FINSI' ; 'FIN' BLO1 ; TAB1 . 'RHS' = CHPO3 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; DT1 = TSI . 'DT' ; TIME00 = TSI . 'TIME1' ; TIME0 = TSI . 'TIME2' ; 'REPE' BLO100 NBCOMP1 ; NAMC1 = SET . 'COMPONENT' . &BLO100 ; 'REPE' BLO110 NBCEL1 ; IND1 = TIND1 . &BLO110 ; PTCEL1 = TSB . NAMQ1 . IND1 . 'CELL' ; * XQ1 = (XQ0 - XQ00) / DT1 ; XE1 = (XE0 - XE00) / DT1 ; * * Injection à température ébullition 'SI' ('EGA' NAMC1 'H2O') ; 'SI' (XQ1 > 0.D0) ; XE1 = XE1 - (PTOT1 / RVAP1 * XQ1) ; EVAP1 = HVAP1 - (PTOT1 / RVAP1) * XQ1 ; ELIQ1 = HLIQ1 - (PTOT1 / RLIQ1) * XQ1 ; 'SINON' ; EVAP1 = HVAP1 * XQ1 ; ELIQ1 = HLIQ1 * XQ1 ; 'FINSI' ; 'SI' (XE1 '>EG' EVAP1) ; FRAC1 = 1.D0 ; EVAP1 = XE1 ; ELIQ1 = 0.D0 ; 'SINON' ; 'SI' (XE1 '>EG' ELIQ1) ; FRAC1 = (XE1 - ELIQ1) / (EVAP1 - ELIQ1) ; 'SINON' ; FRAC1 = 0.D0 ; ELIQ1 = XE1 ; EVAP1 = 0.D0 ; 'FINSI' ; 'FINSI' ; 'SINO' ; FRAC1 = 1.D0 ; EVAP1 = XE1 ; ELIQ1 = 0.D0 ; 'FINSI' ; 'SI' ( 'EGA' set . 'IMPR' 1) ; 'MESS' 'fraction forme vapeur injecté :' FRAC1 ; 'FINSI' ; 'SI' (&BLO110 'EGA' 1) ; NAMR1 (FRAC1 * XQ1) 'MLIQ' ((1.D0 - FRAC1) * XQ1) 'UGAS' (FRAC1 * EVAP1) 'ULIQ' ((1.D0 - FRAC1) * ELIQ1) 'NATURE' 'DISCRET' ; 'SINON' ; NAMR1 (FRAC1 * XQ1) 'MLIQ' ((1.D0 - FRAC1) * XQ1) 'UGAS' (FRAC1 * EVAP1) 'ULIQ' ((1.D0 - FRAC1) * ELIQ1) 'NATURE' 'DISCRET') ; 'FINSI' ; * * Sauvegarde Répartition Source H2O pour bilan de masse et d'énergie STR1 = TSB . NAMQ1 . IND1 .'MINL' ; EVM1 = EVM0 + ((1.D0-FRAC1)*XQ1*DT1) ; * STR1 = TSB . NAMQ1 . IND1 .'MINV' ; EVM1 = EVM0 + (FRAC1*XQ1*DT1) ; * STR1 = TSB . NAMQ1 . IND1 .'UINL' ; EVM1 = EVM0 + ((1.D0-FRAC1)*ELIQ1*DT1) ; * STR1 = TSB . NAMQ1 . IND1 .'UINV' ; EVM1 = EVM0 + (FRAC1*EVAP1*DT1) ; 'SINON' ; 'SI' (&BLO110 'EGA' 1) ; NAMR1 XQ1 'UGAS' XE1 'NATURE' 'DISCRET' ; 'SINON' ; NAMR1 XQ1 'UGAS' XE1 'NATURE' 'DISCRET') ; 'FINSI' ; 'FINSI' ; 'SI' ( 'EGA' set . 'IMPR' 1) ; 'FINSI' ; 'FIN' BLO110 ; TAB1 . 'RHS' = (TAB1 . 'RHS') + CHCEL1 ; 'SINON' ; TAB1 . 'RHS' = CHCEL1 ; 'FINSI' ; 'FINSI' ; 'FIN' BLO100 ; * 'MESS' ' ' ; * 'FINP' TAB1 ; *$$$$ TO_DEFAU 'DEBP' TO_DEFAU INPUT*'TABLE' ; VOLU1 = 1000. ; PRESS1 = 1.E+5 ; TEMP1 = 300. ; HUMDT1 = 0.5 ; XV1 = 1.0 ; ASUMP1 = 10.0 ; VMAX1 = 1.D+2 ; APER1 = 1.D+01 ; MLIQ1 = 1.0 ; TOUT1 = 293.15 ; * *- valeurs par défaut pour la thermique dans les murs * KEYWAL = 'TABLE' ; KEYWAL . 'AREA' = 1.0 ; KEYWAL . 'TWAL1' = TEMP1 ; KEYWAL . 'TWAL2' = TEMP1 ; KEYWAL . 'ECHAN1' = 10.0 ; KEYWAL . 'ECHAN2' = 10.0 ; * *- valeurs par défaut pour les conditions de calcul * MESS0 = 'WARNING : default value for ' ; TXT0 = '****** DATASET INPUT FILE : ' ; INPUT . 'H2_DIS' = 'OFF' ; INPUT . 'H2_POT' = 'OFF' ; INPUT . 'H2_RAD' = 'OFF' ; INPUT . 'QSONIC' = 'ON' ; INPUT . 'QLIMIT' = 1.D-3 ; * 'SI' ('NON' ('EXISTE' INPUT 'T_COUPLING')) ; INPUT . 'T_COUPLING' = 'OFF' ; 'FINSI' ; 'SI' ('NON' ('EXISTE' INPUT 'RELAX')) ; INPUT . 'RELAX' = 1. ; 'FINSI' ; 'SI' ('NON' ('EXISTE' INPUT 'RELINT')) ; INPUT . 'RELINT' = INPUT . 'RELAX' ; 'FINSI' ; 'SI' ('NON' ('EXISTE' INPUT 'IMPR')) ; INPUT . 'IMPR' = 0 ; 'FINSI' ; * *===================================================================== *- Propriétés physiques des constituants du mélange *===================================================================== * R_GAS = 8.3144621D0 ; INPUT . 'PHYSICAL' . 'R_GAS' = R_GAS ; *---------------------------------------------- Masse molaire (kg/mol) INPUT . 'PHYSICAL' . 'WH2' = 2.D0 * 0.00100794D0 ; INPUT . 'PHYSICAL' . 'WHE' = 0.004002602D0 ; INPUT . 'PHYSICAL' . 'WN2' = 2.D0 * 0.0140067D0 ; INPUT . 'PHYSICAL' . 'WO2' = 2.D0 * 0.0159994D0 ; INPUT . 'PHYSICAL' . 'WCO2' = 0.0120107D0 + INPUT . 'PHYSICAL' . 'WO2' ; INPUT . 'PHYSICAL' . 'WCO' = 0.0120107D0 + 0.0159994D0 ; * * La constante des Gaz de la vapeur est modifié par compatibilité avec * les propriétés de la vapeur des tables de l'eau INPUT . 'PHYSICAL' . 'WH2O' = R_GAS / 461.513D0 ; INPUT . 'PHYSICAL' . 'WH2O' = 0.0159994D0 + INPUT . 'PHYSICAL' . 'WH2'; * *------------------ Température de référence en K et C pour pptés phy TGAS1 = 315. ; TMOIN1 = TGAS1 - 273.15 ; * *--------------------------------------------------- Cp RALOC (J/kg/K) CP_H2 = 1000. * (14.246 + (8.160E-4 * TMOIN1) + (4.350E-7 * (TMOIN1 * TMOIN1))) ; CP_HE = 5193. ; CP_O2 = 1000. * (0.917 + (1.404E-4 * TMOIN1) + (3.000E-8 * (TMOIN1 * TMOIN1))) ; CP_N2 = 1000. * (1.0309 + (2.044E-4 * TMOIN1) + (-3.300E-8 * (TMOIN1 * TMOIN1))) ; CP_CO2 = 1000. * (0.836 + (7.432E-4 * TMOIN1) + (-2.511E-7 * (TMOIN1 * TMOIN1))) ; CP_CO = 1000. * (1.0302 + (2.396E-4 * TMOIN1) + (-4.950E-8 * (TMOIN1 * TMOIN1))) ; CP_H2O = 1000. * (1.748383 + (0.277768E-3 * TMOIN1) + (0.275E-6 * (TMOIN1 * TMOIN1))) ; * *----------------------------------------- constante des "gp" (J/kg/K) R_H2 = R_GAS / INPUT . 'PHYSICAL' . 'WH2' ; R_HE = R_GAS / INPUT . 'PHYSICAL' . 'WHE' ; R_O2 = R_GAS / INPUT . 'PHYSICAL' . 'WO2' ; R_N2 = R_GAS / INPUT . 'PHYSICAL' . 'WN2' ; R_CO2 = R_GAS / INPUT . 'PHYSICAL' . 'WCO2' ; R_CO = R_GAS / INPUT . 'PHYSICAL' . 'WCO' ; R_H2O = R_GAS / INPUT . 'PHYSICAL' . 'WH2O' ; * INPUT . 'PHYSICAL' . 'R_H2' = R_H2 ; INPUT . 'PHYSICAL' . 'R_HE' = R_HE ; INPUT . 'PHYSICAL' . 'R_O2' = R_O2 ; INPUT . 'PHYSICAL' . 'R_N2' = R_N2 ; INPUT . 'PHYSICAL' . 'R_CO2' = R_CO2 ; INPUT . 'PHYSICAL' . 'R_CO' = R_CO ; INPUT . 'PHYSICAL' . 'R_H2O' = R_H2O ; INPUT . 'PHYSICAL' . 'CVH2' = CP_H2 - R_H2 ; INPUT . 'PHYSICAL' . 'CVHE' = CP_HE - R_HE ; INPUT . 'PHYSICAL' . 'CVO2' = CP_O2 - R_O2 ; INPUT . 'PHYSICAL' . 'CVN2' = CP_N2 - R_N2 ; INPUT . 'PHYSICAL' . 'CVCO2' = CP_CO2 - R_CO2 ; INPUT . 'PHYSICAL' . 'CVCO' = CP_CO - R_CO ; INPUT . 'PHYSICAL' . 'CVH2O' = CP_H2O - R_H2O ; INPUT . 'PHYSICAL' . 'CPH2' = CP_H2 ; INPUT . 'PHYSICAL' . 'CPHE' = CP_HE ; INPUT . 'PHYSICAL' . 'CPO2' = CP_O2 ; INPUT . 'PHYSICAL' . 'CPN2' = CP_N2 ; INPUT . 'PHYSICAL' . 'CPCO2' = CP_CO2 ; INPUT . 'PHYSICAL' . 'CPCO' = CP_CO ; INPUT . 'PHYSICAL' . 'CPH2O' = CP_H2O ; * *------------------------------ conductivités des constituants (W/m/K) LBD_H2 = (1.65E-3 * (TGAS1 ** 1.8)) / (TGAS1 - 40.13) ; LBD_HE = (5.464E-3 * (TGAS1 ** 1.616)) / (TGAS1 + 76.6) ; LBD_O2 = (0.429E-3 * (TGAS1 ** 1.746)) / (TGAS1 + 41.27) ; LBD_N2 = (0.0417E-3 * (TGAS1 ** 2.042)) / (TGAS1 - 133.) ; LBD_CO2 = (25.438E-3 * (TGAS1 ** 1.319)) / (TGAS1 + 2432.95) ; LBD_CO = (1.931E-3 * (TGAS1 ** 1.541)) / (TGAS1 + 218.17) ; LBD_H2O = (-84.442E-3 * (TGAS1 ** 1.251)) / (TGAS1 - 5827.6) ; * INPUT . 'PHYSICAL' . 'LBDH2' = LBD_H2 ; INPUT . 'PHYSICAL' . 'LBDHE' = LBD_HE ; INPUT . 'PHYSICAL' . 'LBDO2' = LBD_O2 ; INPUT . 'PHYSICAL' . 'LBDN2' = LBD_N2 ; INPUT . 'PHYSICAL' . 'LBDCO2' = LBD_CO2 ; INPUT . 'PHYSICAL' . 'LBDCO' = LBD_CO ; INPUT . 'PHYSICAL' . 'LBDH2O' = LBD_H2O ; * *--------------------- viscosités dynamiques des constituants (kg/m/s) MU_H2 = (0.1541E-6 * (TGAS1 ** 1.703)) / (TGAS1 - 17.856) ; MU_HE = (0.5865E-6 * (TGAS1 ** 1.630)) / (TGAS1 + 27.183) ; MU_O2 = (0.7406E-6 * (TGAS1 ** 1.610)) / (TGAS1 + 48.16) ; MU_N2 = (1.791E-6 * (TGAS1 ** 1.469)) / (TGAS1 + 140.812) ; MU_CO2 = (0.136E-6 * (TGAS1 ** 1.810)) / (TGAS1 - 59.30) ; MU_CO = (0.573E-6 * (TGAS1 ** 1.620)) / (TGAS1 + 46.45) ; MU_H2O = (2.142E-6 * (TGAS1 ** 1.5)) / (TGAS1 + 890.) ; * INPUT . 'PHYSICAL' . 'MUH2' = MU_H2 ; INPUT . 'PHYSICAL' . 'MUHE' = MU_HE ; INPUT . 'PHYSICAL' . 'MUO2' = MU_O2 ; INPUT . 'PHYSICAL' . 'MUN2' = MU_N2 ; INPUT . 'PHYSICAL' . 'MUCO2' = MU_CO2 ; INPUT . 'PHYSICAL' . 'MUCO' = MU_CO ; INPUT . 'PHYSICAL' . 'MUH2O' = MU_H2O; * *===================================================================== *- Etat de référence *===================================================================== * INPUT . 'PHYSICAL' . 'PREF' = 1.013D5 ; INPUT . 'PHYSICAL' . 'TREF' = 273.15 ; INPUT . 'PHYSICAL' . 'RHO_H2' = INPUT . 'PHYSICAL' . 'PREF' * INPUT . 'PHYSICAL' . 'WH2' / (R_GAS * INPUT . 'PHYSICAL' . 'TREF') ; * *------------------------------------------------------ gravité (m/s2) 'SI' ('NON' ('EXISTE' (INPUT . 'PHYSICAL') 'GRAVITY')) ; INPUT . 'PHYSICAL' . 'GRAVITY' = 9.81 ; 'FINSI' ; * *--------------------------- diffusion de la vapeur dans un gaz (m2/s) * Di = A * (T/273.15) ** n / (p * 1.d-5) avec p en Pa et T en Kelvin * INPUT . 'PHYSICAL' . 'ADH2O' = 0.277D-3 ; INPUT . 'PHYSICAL' . 'ADCO2' = 0.155D-4 ; INPUT . 'PHYSICAL' . 'ADO2' = 0.240D-4 ; INPUT . 'PHYSICAL' . 'ADH2' = 0.780D-4 ; INPUT . 'PHYSICAL' . 'ADCO' = 0.220D-4 ; INPUT . 'PHYSICAL' . 'ADN2' = 0.227D-4 ; INPUT . 'PHYSICAL' . 'ADHE' = 0.730D-4 ; INPUT . 'PHYSICAL' . 'NDH2O' = 0. ; INPUT . 'PHYSICAL' . 'NDCO2' = 1.75 ; INPUT . 'PHYSICAL' . 'NDO2' = 1.71 ; INPUT . 'PHYSICAL' . 'NDH2' = 1.75 ; INPUT . 'PHYSICAL' . 'NDCO' = 1.75 ; INPUT . 'PHYSICAL' . 'NDN2' = 1.75 ; INPUT . 'PHYSICAL' . 'NDHE' = 1.75 ; * *===================================================================== * Propriétés thermodynamiques du mélange et de l'eau des puisards *===================================================================== * *- Valeurs par défaut des compartiments : VOL, PT, TGAS * IND1 = INDEX (INPUT . 'CELL' . 'LOCATION') ; 'REPETER' BLO10 NBCEL1 ; ICELL = IND1 . &BLO10 ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'VOL') ICELL)) ; INPUT . 'CELL' . 'VOL' . ICELL = VOLU1 ; 'FINSI' ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'PT') ICELL)) ; INPUT . 'CELL' . 'PT' . ICELL = PRESS1 ; 'FINSI' ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'TGAS') ICELL)) ; INPUT . 'CELL' . 'TGAS' . ICELL = TEMP1 ; 'FINSI' ; 'FIN' BLO10 ; * IND1 = 'INDEX' (INPUT . 'COMPONENT') ; TESH2O = 0 ; 'REPETER' BLO02 NCOMP1 ; IND02 = IND1 . &BLO02 ; NAMEC1 = INPUT . 'COMPONENT' . IND02 ; 'SI' ('EGA' NAMEC1 'H2O') ; TESH2O = 1 ; 'SINON' ; 'FINSI' ; 'FIN' BLO02 ; * *-------------------------------------------------- DATAS Condensation 'SI' (TESH2O 'EGA' 1) ; INPUT . 'PHYSICAL' . 'CONDENSE' = 'CHILTON' ; 'MESS' MESS1 ; 'FINSI' ; *------------------------------------------ Modèle par face ---------- * * On cherche si TAGAMI est présent afin d'initialiser les constantes * du modèle si besoin (flag TEST1). On en profite pour mettre le * modèle de condensation par défaut aux faces qui en sont dépourvues * et pour tester la validité des modèles indiqués. COND0 = INPUT . 'PHYSICAL' . 'CONDENSE' ; TEST1 = 0 ; 'SI' ('EGA' COND0 'TAGAMI') ; TEST1 = 1 ; 'FINSI' ; 'REPETER' BLO1 N1 ; IN1 = IND1.&BLO1 ; C1 = INPUT . 'WALL' . 'COND1' . IN1 ; TEST2 = ('EGA' C1 'UCHIDA') 'OU' ('EGA' C1 'TAGAMI') 'OU' ('EGA' C1 'CHILTON') ; 'SI' ('EGA' TEST2 FAUX) ; TXT1 = 'CHAI' TXT0 'bad value for the COND1 index ' '(UCHIDA, TAGAMI or CHILTON instead of ' C1 ')' ; 'FINSI' ; 'SI' ('EGA' C1 'TAGAMI') ; TEST1 = 1 ; 'FINSI' ; 'SINON' ; INPUT . 'WALL' . 'COND1' . IN1 = COND0 ; 'MESS' MESS1 ; 'FINSI' ; 'SI' ('EXIST' (INPUT . 'WALL' . 'COND2') IN1); C2 = INPUT . 'WALL' . 'COND2' . IN1 ; TEST2 = ('EGA' C2 'UCHIDA') 'OU' ('EGA' C2 'TAGAMI') 'OU' ('EGA' C2 'CHILTON') ; 'SI' ('EGA' TEST2 FAUX) ; TXT1 = 'CHAI' TXT0 'bad value for the COND2 index ' '(UCHIDA, TAGAMI or CHILTON instead of ' C2 ')' ; 'FINSI' ; 'SI' ('EGA' C2 'TAGAMI') ; TEST1 = 1 ; 'FINSI' ; 'SINON' ; INPUT . 'WALL' . 'COND2' . (IND1.&BLO1) = COND0 ; 'MESS' MESS1 ; 'FINSI' ; 'FIN' BLO1 ; *------------------------------------------ TAGAMI (Ttag en s) ------- 'SI' ('EGA' TEST1 1) ; 'SI' ('NON' ('EXISTE' (INPUT . 'PHYSICAL') 'CTAG')) ; INPUT . 'PHYSICAL' . 'CTAG' = 0.76893 ; 'FINSI' ; 'SI' ('NON' ('EXISTE' (INPUT . 'PHYSICAL') 'TTAG')) ; INPUT . 'PHYSICAL' . 'TTAG' = 25. ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * 'SI' (TESH2O 'EGA' 1) ; INPUT . 'CELL' . 'XV' = TABLE ; IND1 = 'INDEX' (INPUT . 'CELL' . 'LOCATION') ; 'REPETER' BLO03 NBCEL1 ; ICELL = IND1 . &BLO03 ; INPUT . 'CELL' . 'XV' . ICELL = XV1 ; TEMP2 = INPUT . 'CELL' . 'TGAS' . ICELL ; VOLU1 = INPUT . 'CELL' . 'VOL' . ICELL ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'MH2O') ICELL)) ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'HUMIDITY') ICELL)) ; INPUT . 'CELL' . 'HUMIDITY' . ICELL = HUMDT1 ; 'MESS' MESS1 ; 'FINSI' ; HUMDT2 = INPUT . 'CELL' . 'HUMIDITY' . ICELL ; PVAP1 = HUMDT2 * PSAT1 ; INPUT . 'CELL' . 'MH2O' . ICELL = 'SINON' ; 'SI' ('EXISTE' (INPUT . 'CELL' . 'HUMIDITY') ICELL) ; 'MESS' 'ERROR : HUMIDITY and MH2O cannot be both defined!!!'; INPUT . 'ERROR' = 1 ; 'QUIT' TO_DEFAU ; 'FINSI'; ROVA13 = INPUT . 'CELL' . 'MH2O' . ICELL '/' VOLU1 ; INPUT . 'CELL' . 'HUMIDITY' . ICELL = PVAP1 '/' PSAT1 ; HUMDT2 = INPUT . 'CELL' . 'HUMIDITY' . ICELL; 'SI' (INPUT . 'CELL' . 'HUMIDITY' . ICELL '>' 1.); 'MESS' 'Steam should be transfered to liquid' ; INPUT . 'ERROR' = 1 ; 'QUIT' TO_DEFAU ; 'FINSI'; 'FINSI' ; 'FIN' BLO03 ; 'FINSI' ; * WAIR = (0.79 * INPUT . 'PHYSICAL' . 'WN2') + (0.21 * INPUT . 'PHYSICAL' . 'WO2') ; RAIR = R_GAS / WAIR ; YN2 = 0.79 * INPUT . 'PHYSICAL' . 'WN2' / WAIR ; YO2 = 0.21 * INPUT . 'PHYSICAL' . 'WO2' / WAIR ; * IND1 = 'INDEX' (INPUT . 'CELL' . 'LOCATION') ; 'REPETER' BLO01 NBCEL1 ; ICELL = IND1 . &BLO01 ; VOLU1 = INPUT . 'CELL' . 'VOL' . ICELL ; PT1 = INPUT . 'CELL' . 'PT' . ICELL ; TGAS1 = INPUT . 'CELL' . 'TGAS' . ICELL ; 'SI' (TESH2O 'EGA' 1) ; ROVAP1 = (INPUT . 'CELL' . 'MH2O' . ICELL) / VOLU1 ; 'SINON' ; PVAP1 = 0. ; 'FINSI' ; PAUTR1 = 0. ; 'SI' ('EXISTE' (INPUT . 'CELL') COMPC13) ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . COMPC13) ICELL)) ; INPUT . 'CELL' . COMPC13 . ICELL = 0. ; 'FINSI' ; MCO13 = INPUT . 'CELL' . COMPC13 . ICELL ; RCO13 = INPUT . 'PHYSICAL' . MOR13 ; PAUTR1 = PAUTR1 + (RCO13 '*' MCO13 '*' TGAS1 '/' VOLU1); 'FINSI' ; 'FIN' BLO13 ; OKAIR = 'ET' OKN2 OKO2 ; 'SI' ((PT1+1.) '>EG' (PVAP1 '+' PAUTR1)); 'SI' OKAIR ; 'SI' BN2 ; MN2U = INPUT . 'CELL' . 'MN2' . ICELL ; 'SINO' ; MN2U = 0. ; 'FINSI' ; 'SI' BO2 ; MO2U = INPUT . 'CELL' . 'MO2' . ICELL ; 'SINO' ; MO2U = 0. ; 'FINSI' ; MAIR = (VOLU1 / RAIR) * (PT1 - PVAP1 - PAUTR1) / TGAS1 ; MN2P = YN2 * MAIR ; MO2P = YO2 * MAIR ; INPUT . 'CELL' . 'MN2' . ICELL = MN2P + MN2U ; INPUT . 'CELL' . 'MO2' . ICELL = MO2P + MO2U ; 'SINO'; vtest = (pt1+1.) - (PVAP1 '+' PAUTR1) ; 'SI' (('ABS' vtest) '>' 1.) ; 'MESS' 'ERROR : Total pressure too high'; INPUT . 'ERROR' = 1 ; 'QUIT' TO_DEFAU ; 'FINSI' ; 'FINSI'; 'SINON'; 'MESS' 'ERROR : Total pressure too low'; INPUT . 'ERROR' = 1 ; 'QUIT' TO_DEFAU ; 'FINSI'; 'FIN' BLO01 ; 'SI' ('EXISTE' (INPUT . 'CELL') 'MH2O'); 'SI' ('NON' ('EXISTE' (INPUT . 'CELL') 'MLIQ')) ; INPUT . 'CELL' . 'MLIQ' = TABLE ; 'FINSI' ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL') 'TLIQ')) ; INPUT . 'CELL' . 'TLIQ' = TABLE ; 'FINSI' ; INPUT . 'CELL' . 'HLIQ' = TABLE ; INPUT . 'CELL' . 'VLIQ' = TABLE ; INPUT . 'CELL' . 'ULIQ' = TABLE ; INPUT . 'CELL' . 'QEVA' = TABLE ; IND1 = 'INDEX' (INPUT . 'CELL' . 'LOCATION') ; 'REPETER' BLO04 NBCEL1 ; ICELL = IND1 . &BLO04 ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'ASUMP') ICELL)) ; INPUT . 'CELL' . 'ASUMP' . ICELL = ASUMP1 ; 'FINSI' ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'VMAX') ICELL)) ; INPUT . 'CELL' . 'VMAX' . ICELL = VMAX1 ; 'FINSI' ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'APERTURE') ICELL)) ; INPUT . 'CELL' . 'APERTURE' . ICELL = APER1 ; 'FINSI' ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'MLIQ') ICELL)) ; INPUT . 'CELL' . 'MLIQ' . ICELL = MLIQ1 ; 'FINSI' ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'TLIQ') ICELL)) ; INPUT . 'CELL' . 'TLIQ' . ICELL = TEMP1 ; 'FINSI' ; PRESS1 = INPUT . 'CELL' . 'PT' . ICELL ; MLIQ2 = INPUT . 'CELL' . 'MLIQ' . ICELL ; VLIQ2 = MLIQ2 / RHOL2 ; ULIQ2 = HLIQ2 * MLIQ2 - (PRESS1 * VLIQ2) ; INPUT . 'CELL' . 'HLIQ' . ICELL = HLIQ2 ; INPUT . 'CELL' . 'VLIQ' . ICELL = VLIQ2 ; INPUT . 'CELL' . 'ULIQ' . ICELL = ULIQ2 ; INPUT . 'CELL' . 'QEVA' . ICELL = 0. ; 'FIN' BLO04 ; 'FINSI' ; 'SI' ('EXISTE' INPUT 'WALL' ) ; 'SI' ('NON' ('EXISTE' INPUT 'TOUT')) ; INPUT . 'TOUT' = TOUT1 ; 'FINSI' ; IND1 = 'INDEX' (INPUT . 'WALL' . 'LOCATION') ; INDK = 'INDEX' KEYWAL ; 'REPETER' BLO30 NBWAL3 ; IWALL = IND1 . &BLO30 ; 'REPETER' BLO31 NBIND3 ; IND3 = INDK . &BLO31 ; 'SI' ('NON' ('EXISTE' (INPUT . 'WALL' . IND3) IWALL)) ; VAL3 = KEYWAL . IND3 ; INPUT . 'WALL' . IND3 . IWALL = VAL3 ; 'FINSI' ; 'FIN' BLO31 ; NBLAY1 = INPUT . 'WALL' . 'NLAYER' . IWALL ; IND2 = 'INDEX' (INPUT . 'WALL' . 'MATERIAL' . IWALL) ; 'REPETER' BLO32 NBLAY1 ; ILAYER = IND2 . &BLO32 ; TYPEM1 = INPUT . 'WALL' . 'MATERIAL' . IWALL . ILAYER ; IMT1 = INPUT . 'MATERIAL' . TYPEM1 ; INPUT . 'WALL' . 'RHO' . IWALL . ILAYER = IMT1 . 'RHOW' ; INPUT . 'WALL' . 'CP' . IWALL . ILAYER = IMT1 . 'CPW' ; INPUT . 'WALL' . 'LAMBDA' . IWALL . ILAYER = IMT1 . 'LBDW' ; TYUCH1 = IMT1 . 'TYPEW' ; 'SI' (EGA TYUCH1 'WCONCRET') ; INPUT . 'WALL' . 'UCHIDA' . IWALL . ILAYER = 0.4 ; 'SINON' ; INPUT . 'WALL' . 'UCHIDA' . IWALL . ILAYER = 1.0 ; 'FINSI' ; 'FIN' BLO32 ; 'FIN' BLO30 ; 'FINSI' ; IND1 = 'INDEX' (INPUT . 'CELL' . 'LOCATION') ; IND2 = 'INDEX' (INPUT . 'COMPONENT') ; 'REPETER' BLO12 NBCEL1 ; ICELL = IND1 . &BLO12 ; 'SI' ('NON' ('EXISTE' (INPUT . 'CELL' . 'UGAS') ICELL)) ; TGAS1 = INPUT . 'CELL' . 'TGAS' . ICELL ; VOLU1 = INPUT . 'CELL' . 'VOL' . ICELL ; UVAP1 = 0. * VOLU1 ; MCV1 = 0.D0 ; 'REPETER' BLO121 NCOMP1 ; NOM1 = IND2 . &BLO121 ; NAMC1 = INPUT . 'COMPONENT' . NOM1 ; NAMM1 = 'CHAINE' 'M' NAMC1 ; XM1 = INPUT . 'CELL' . NAMM1 . ICELL ; 'SI' ('EGA' NAMC1 'H2O' ) ; PVAP1 = (INPUT . 'CELL' . 'HUMIDITY' . ICELL) * PSAT1 ; 'SINO' ; NAMCV1 = 'CHAINE' 'CV' NAMC1 ; XCV1 = INPUT . 'PHYSICAL' . NAMCV1 ; MCV1 = MCV1 + (XM1 * XCV1) ; 'FINS' ; 'FIN' BLO121 ; INPUT . 'CELL' . 'UGAS' . ICELL = TGAS1 * MCV1 + UVAP1 ; 'FINSI' ; PRES1 = INPUT . 'CELL' . 'PT' . ICELL ; VOLU1 = INPUT . 'CELL' . 'VOL' . ICELL ; UGAS1 = INPUT . 'CELL' . 'UGAS' . ICELL ; MASS1 = 0. ; 'REPETER' BLO122 NCOMP1 ; NOM1 = IND2 . &BLO122 ; NAMC1 = INPUT . 'COMPONENT' . NOM1 ; NAMM1 = 'CHAINE' 'M' NAMC1 ; XM1 = INPUT . 'CELL' . NAMM1 . ICELL ; MASS1 = MASS1 + XM1 ; 'FIN' BLO122 ; HGAS2 = (UGAS1 + (PRES1 * VOLU1)) / MASS1 ; INPUT . 'CELL' . 'HGAS' . ICELL = HGAS2 ; 'FIN' BLO12 ; INPUT . 'TIMECALC' . 'FREQSAVE' = 1 ; 'FINSI' ; 'FINSI' ; * INPUT . 'TIMECALC' . 'FREQPLOT' = 1 ; 'FINSI' ; * INPUT . 'TIMECALC' . 'ERRTOL' = 0.001 ; 'FINSI' ; 'SI' ('NON' ('EXISTE' INPUT 'NAMECASE')) ; INPUT . 'NAMECASE' = 'NAUTILUS Evaluation' ; 'MESS' 'WARNING : title of the case is missing'; 'FINSI' ; * * --- Verfication du temps maxi lorsqu'on definit un exterieur * --- a temperature variable * --- si Tps max utilisateur < Tps final calcul * --- --> Tps max exte = Tps final calcul 'SI' ('EXISTE' INPUT 'OUTD' ) ; NBEXTE = INPUT . 'OUTD' . 'NBOUT' ; IND1 = 'INDEX' (INPUT . 'OUTD' . 'TPS'); 'REPETER' BLO1 NBEXTE ; IND2 = IND1 . &BLO1 ; 'SI' (TPSF1 '<' TPSF2) ; INPUT.'OUTD'.'TPS'.IND2 = INPUT.'OUTD'.'TPS'.IND2 'MESS' 'Warning : Bad exterior temperature definition in ' IND2; 'FINSI' ; 'FIN' BLO1 ; 'FINSI' ; 'FINPROC' INPUT ; *$$$$ TO_DFDT 'DEBP' TO_DFDT ; * * * LISTOP1 = 'TABLE' 'OPER_0D' ; * DT1 = TABOPER . 'INCO' . (TABOPER . 'DT') ; 'SINON'; 'SI' ('EGA' TYP1 'FLOTTANT') ; DT1 = TABOPER . 'DT' ; 'SINON' ; 'ERRE' 'TO_DFDT procedure, OPER_0D table : DT must be FLOTTANT or MOT'; 'FIN' ; 'FINSI' ; 'FINSI' ; 'SINON'; 'SI' (('EGA' TYP1 'FLOTTANT') 'OU' ('EGA' TYP1 'CHPOINT')) ; 'SINON' ; 'ERRE' 'TO_DFDT procedure, OPER_0D table : DT must be FLOTTANT or MOT'; 'FIN' ; 'FINSI' ; 'FINSI' ; * LISTOP1 . 'MAILLAGE' = TABOPER . 'MAILLAGE' ; LISTOP1 . 'INCO' = TABOPER . 'INCO' ; LISTOP1 . 'COEF' = mult1 / DT1 ; LISTOP1 . 'DUAL' = TABOPER . 'DUAL' ; LISTOP1 . 'PRIMAL' = TABOPER . 'DUAL' ; LISTOP1 . 'TYPEL' = 'P=D' ; MDIA LISTOP1 ; * NOMD1 = TABOPER . 'DUAL' ; NOMD2 = TABOPER . 'DUA2' ; 'SINO' ; NOMD2 = NOMD1 ; 'FINSI' ; CHRES1 = CHPD1 * (MULT1 / DT1) ; TABOPER . 'LHS' = LISTOP1 . 'LHS' ; * 'FINP' ; *$$$$ TO_DISK 'DEBP' TO_DISK SET*'TABLE' ; * DATA = SET . 'DATA' ; INCO = SET . 'INCO' ; GEOINF = SET . 'GEOINF' ; * L1 = DATA . 'LENGTH' ; K1 = DATA . 'DISC' ; S1 = INCO . 'AREA' ; flagmp = faux ; * NBJUNC = GEOINF . 'NBJUNC' ; RHO12 = 0. * S1 ; 'REPE' BLO20 NBJUNC ; * RHOM = (RHO1 + RHO2) / 2.D0 ; * 'SI' (set . 'QSONIC') ; * 'SI' (P1 '>' P2) ; P0P = P1 ; P0M = P2 ; 'SINO' ; P0P = P2 ; P0M = P1 ; 'FINSI' ; fg0 = 1.2810 ; cp0 = 1004. ; mp0 = p0p * A0 * fg0 / (cp0 * t0 ** 0.5) ; 'SI' (Q0 '>' set . 'QLIMIT') ; 'SI' (Q0 '>' mp0) ; rp0 = P0P / P0M ; 'SI' (rp0 '>' 0.528) ; 'SI' flagmp ; mp1 = mp1 'ET' 'SINO' ; flagmp = vrai ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * 'FIN' BLO20 ; * 'SI' flagmp ; sigm0 = sigp0 - 1. ; qmmp1 = (1.D0 - qnul1) * inco . 'QCEL' ; inco . 'QCEL' = qmmp1 + (mp1 * sign0) ; 'SINO' ; s2 = s1 ; inco . 'QCEL' = (1.D0 - qnul1) * inco . 'QCEL' ; 'FINSI' ; * inco . 'QDFDT' = rho12 * s2 * l1 ; inco . 'QKMBT' = rho12 * s2 * s2 ; inco . 'QMDIA' = k1 * q1 + qnul1 ; inco . 'QMDIA2' = k1 * q1 / 2.D0 + qnul1 ; * 'FINP' ; *$$$$ TO_EXEC 'DEBPROC' TO_EXEC SET*'TABLE' LISTOPER*'TABLE' CHOI1*'TABLE' CHOI2*'TABLE' CHOI3*'TABLE' CHOI4*'TABLE' ; * TSD = SET . 'DATA' ; TSF = SET . 'FIELDS' ; TSG = SET . 'GEOINF' ; TST = SET . 'TIMECALC' ; * RELAX1 = SET . 'RELAX' ; RELAX4 = SET . 'RELINT' ; IMP1 = SET . 'IMPR' ; ERRTOL = TST . 'ERRTOL' ; GLOLHS = 'TABLE' ; GLORHS = 'TABLE' ; LOCLHS = 'TABLE' ; LOCRHS = 'TABLE' ; * 'SI' ('NEG' NOPE1 0) ; IND1 = 'INDEX' CHOI1 ; 'FINSI' ; 'SI' ('NEG' NOPE2 0) ; IND2 = 'INDEX' CHOI2 ; 'FINSI' ; 'SI' ('NEG' NOPE3 0) ; IND3 = 'INDEX' CHOI3 ; 'FINSI' ; 'SI' ('NEG' NOPE4 0) ; IND4 = 'INDEX' CHOI4 ; 'FINSI' ; * *- Création du premier ensemble de matrices et seconds membres * 'REPETER' BLO70 NOPE1 ; IK1 = CHOI1 . (IND1 . &BLO70) ; * ('TEXTE' LISTOPER . IK1 . 'NAME') (LISTOPER . IK1) ; LISTOPER . IK1 . 'NAME' (LISTOPER . IK1) ; GLOLHS . IK1 = LISTOPER . IK1 . 'LHS' ; 'SI' ('EXISTE' (LISTOPER . IK1) 'RHS') ; GLORHS . IK1 = LISTOPER . IK1 . 'RHS' ; 'FINSI' ; 'FIN' BLO70 ; * ISTEPT = 1 ; IISAUV = 1 ; * 'REPETER' BLO50 ((TST . 'STEPNUMB') - 1) ; ISTEPT = ISTEPT + 1 ; DT1 = TIME2 - TIME1 ; SET . 'INCO' . 'DT' = DT1 ; SET . 'INCO' . 'TIME1' = TIME1 ; TIME1 = TIME2 ; SET . 'INCO' . 'TIME2' = TIME2 ; 'MESS' ' ' ; * 'SI' (LJUNC 'OU' LJOUT) ; 'SI' LJUNC ; 'FINSI' ; 'SI' LJOUT ; 'FINSI' ; S1 = TSD . 'AREA' . 0 ; 'SINO' ; S1 = 0. * (TSD . 'LENGTH') ; 'FINSI' ; da = TSD . 'AREA' ; 'REPE' blo30 (da . 'NBEV') ; PTJ = da . &blo30 . 'LOCATION' ; S1 = S1 'ET' 'FIN' blo30 ; 'FINSI' ; set . 'INCO' . 'AREA' = S1 ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' ISTEPT 2) ; DTOLD = DT1 ; 'FINSI' ; 'SI' ('EXISTE' TST 'PREDT' ) ; OLD_INCO = PRED0 SET ; 'SI' ('EGA' ISTEPT 2) ; DINCO = PRED2 0.D0 SET OLD_INCO ; 'FINSI' ; 'FINSI' ; * 'REPETER' BLO52 NOPE2 ; IK2 = CHOI2 . (IND2 . &BLO52) ; * ('TEXTE' LISTOPER . IK2 . 'NAME') (LISTOPER . IK2) ; LISTOPER . IK2 . 'NAME' (LISTOPER . IK2) ; GLOLHS . IK2 = LISTOPER . IK2 . 'LHS' ; 'SI' ('EXISTE' (LISTOPER . IK2) 'RHS') ; GLORHS . IK2 = LISTOPER . IK2 . 'RHS' ; 'FINSI' ; 'FIN' BLO52 ; * *- Conditions aux limites pour le pas de temps DT1 * BOUND2 = TO_BOCO SET ; * 'SI' ('EXISTE' TSD 'BURN' ) ; 'SI' ('EGA' TYPCOMB 'PROPAGATION' ) ; BOUND3 = TO_COMBP SET ; 'FINSI' ; 'SI' ('EGA' TYPCOMB 'REAL' ) ; BOUND3 = TO_COMBC SET ; 'FINSI' ; 'FINSI' ; * 'SI' ('EXISTE' TSD 'RECOMB' ) ; BOUND4 = TO_RECOM SET ISTEPT IBEGI1; 'FINSI' ; * 'SI' ('EXISTE' TSD 'PRESI' ) ; BOUND5 = TO_PRESI SET ; 'FINSI' ; * BOUND6 = BCIMPL SET ; * 'SI' ('EXISTE' TST 'PREDT' ) ; PRED1 SET DINCO (DT1 / DTOLD) ; 'FINSI' ; *********************************************************************** * --- Boucle interne --- *********************************************************************** ISTEPI = 0 ; 'REPETER' BLO60 INSTEP ; ISTEPI = ISTEPI + 1 ; * *- Actualisation des termes linéarisés * TO_UPLIN SET ; * *- Création du troisième ensemble de matrices et seconds membres * 'REPETER' BLO61 NOPE3 ; IK3 = CHOI3 . (IND3 . &BLO61) ; * ('TEXTE' LISTOPER . IK3 . 'NAME') (LISTOPER . IK3) ; LISTOPER . IK3 . 'NAME' (LISTOPER . IK3) ; GLOLHS . IK3 = LISTOPER . IK3 . 'LHS' ; 'SI' ('EXISTE' (LISTOPER . IK3) 'RHS') ; GLORHS . IK3 = LISTOPER . IK3 . 'RHS' ; 'FINSI' ; 'FIN' BLO61 ; * *- Concaténation des matrices élémentaires * DLHS1 = 'INDEX' GLOLHS ; AXX0 = GLOLHS . (DLHS1 . 1) ; 'SI' (NLHS1 > 1) ; 'REPETER' BLO63 (NLHS1 - 1) ; AXX0 = AXX0 'ET' (GLOLHS . (DLHS1 .(&BLO63 + 1))) ; 'FIN' BLO63 ; 'FINSI' ; * *- Somme des seconds membres * DRHS1 = 'INDEX' GLORHS ; BXX0 = GLORHS . (DRHS1 . 1) ; 'SI' (NRHS1 > 1) ; 'REPETER' BLO64 (NRHS1 - 1) ; BXX0 = BXX0 + (GLORHS . (DRHS1 . (&BLO64 + 1))) ; 'FIN' BLO64 ; 'FINSI' ; * *- Ajout des conditions aux limites *- Cas standard et combustion, recombineurs et/ou puissance residuelle * 'SI' ('EXISTE' BOUND2 'MATRIX') ; AXX0 = AXX0 'ET' (BOUND2 . 'MATRIX'); 'FINSI' ; 'SI' ('EXISTE' BOUND2 'RHS') ; BXX0 = BXX0 + (BOUND2 . 'RHS') ; 'FINSI' ; 'SI' ('EXISTE' TSD 'BURN' ) ; 'SI' ('EXISTE' BOUND3 'RHS') ; BXX0 = BXX0 + (BOUND3 . 'RHS') ; 'FINSI' ; 'FINSI' ; 'SI' ('EXISTE' TSD 'RECOMB' ) ; 'SI' ('EXISTE' BOUND4 'RHS') ; BXX0 = BXX0 + (BOUND4 . 'RHS') ; 'FINSI' ; 'FINSI' ; 'SI' ('EXISTE' TSD 'PRESI' ) ; 'SI' ('EXISTE' BOUND5 'RHS') ; BXX0 = BXX0 + (BOUND5 . 'RHS') ; 'FINSI' ; 'FINSI' ; 'SI' ('EXISTE' BOUND6 'RHS') ; BXX0 = BXX0 + (BOUND6 . 'RHS') ; 'FINSI' ; * *- Ajout des seconds membres dûs à la linéarisation * BXX0 = BXX0 + (SET . 'UPLIN' . 'RHS') ; * CCC1 = (AXX0 * XX1) - BXX0 ; mess 'val1 val2' val1 val2; 'SI' ((val1/val2) > 1.D-13 ) ; 'FINSI' ; 'FIN' ; 'FIN' BLO60 ; * 'FIN' BLO50 ; 'FINPROC' ; *$$$$ TO_FIELD 'DEBPROC' TO_FIELD INPUT*'TABLE' ; SET = 'TABLE' 'SET' ; SET . 'ERROR' = 0 ; * SET . 'COMPONENT' = INPUT . 'COMPONENT' ; * 'SI' LJUNC ; 'FINSI' ; * * GEOINF = 'TABLE' 'GEOINF' ; GEOINF . 'NBCELL' = NBCELL ; 'SI' LJUNC ; * *---------- spg des jonctions et connectivités jonction/compartiments *---------- ou connectivités jonction/outdoor NBJ = 0 ; NBJO = 0 ; 'REPE' BLO11 NBJUNC ; II11 = INDJ1 . &BLO11 ; FROM1 = INPUT . 'JUNCTION' . 'FROM' . II11 ; TO1 = INPUT . 'JUNCTION' . 'TO' . II11 ; 'SI' ('EGA' (INPUT . 'JUNCTION' . 'TYPETO' . II11) 'CELL') ; NBJ = NBJ + 1 ; 'SI' ('EGA' NBJ 1) ; (INPUT . 'JUNCTION' . 'LOCATION' . II11) (INPUT . 'CELL' . 'LOCATION' . TO1) ; 'SINO' ; THEJUN = THEJUN 'ET' (INPUT . 'JUNCTION' . 'LOCATION' . II11) ; (INPUT . 'CELL' . 'LOCATION' . FROM1) (INPUT . 'JUNCTION' . 'LOCATION' . II11) (INPUT . 'CELL' . 'LOCATION' . TO1) ) ; 'FINSI' ; 'SINO' ; NBJO = NBJO + 1 ; 'SI' ('EGA' NBJO 1) ; (INPUT . 'JUNCTION' . 'LOCATION' . II11) (INPUT . 'OUTD' . 'LOCATION' . TO1) ; 'SINO' ; THEOUT = THEOUT 'ET' (INPUT . 'JUNCTION' . 'LOCATION' . II11) ; (INPUT . 'CELL' . 'LOCATION' . FROM1) (INPUT . 'JUNCTION' . 'LOCATION' . II11) (INPUT . 'OUTD' . 'LOCATION' . TO1) ) ; 'FINSI' ; 'FINSI' ; 'FIN' BLO11 ; 'SI' ('NEG' NBJ 0) ; GEOINF . 'NBJUNC' = NBJ ; GEOINF . 'JUNCTION' = THEJUN ; GEOINF . 'JUNCEL' = JUCE1 ; 'FINSI' ; 'SI' ('NEG' NBJO 0) ; GEOINF . 'NBJOUT' = NBJO ; GEOINF . 'JUNCTOUT' = THEOUT ; GEOINF . 'JUNOUT' = JUCE2 ; 'FINSI' ; 'FINSI' ; * *------------------------------- support géométrique des compartiments II10 = INDC1 . 1 ; 'SI' (NBCELL '>' 1) ; 'REPE' BLO10 (NBCELL - 1) ; I10 = &BLO10 + 1 ; II10 = INDC1 . I10 ; PT10 = INPUT . 'CELL' . 'LOCATION' . II10 ; THECEL = THECEL 'ET' PT10 ; 'FIN' BLO10 ; 'FINSI' ; GEOINF . 'CELL' = THECEL ; * *---------- informations géométriques associées aux jonctions liquides --- 'SINON' ; NBJUL1 = 0 ; 'FINSI' ; 'SI' (NBJUL1 'NEG' 0) ; GEOINF . 'NBJUL' = NBJUL1 ; II10 = INDJL1 . 1 ; FROM10 = INPUT . 'JULIQ' . 'FROM' . II10 ; TO10 = INPUT . 'JULIQ' . 'TO' . II10 ; PTF1 = INPUT . 'CELL' . 'LOCATION' . FROM10 ; PTJL1 = INPUT . 'JULIQ' . 'LOCATION' . II10 ; PTT1 = INPUT . 'CELL' . 'LOCATION' . TO10 ; 'SI' (NBJUL1 '>' 1) ; 'REPE' BL10 (NBJUL1 - 1) ; I10 = &BL10 + 1 ; II10 = INDJL1 . I10 ; FROM10 = INPUT . 'JULIQ' . 'FROM' . II10 ; TO10 = INPUT . 'JULIQ' . 'TO' . II10 ; PTF1 = INPUT . 'CELL' . 'LOCATION' . FROM10 ; PTJL1 = INPUT . 'JULIQ' . 'LOCATION' . II10 ; PTT1 = INPUT . 'CELL' . 'LOCATION' . TO10 ; THELIQ = THELIQ 'ET' PTJL1 ; 'FIN' BL10 ; 'FINSI' ; GEOINF . 'JULIQ' = THELIQ ; GEOINF . 'JULCEL' = JULCE1 ; 'FINSI' ; * *---- informations géométriques liées aux éventuels puisards externes GEOINF . 'NBSUMP' = NBSUMP ; 'SI' (NBSUMP 'NEG' 0) ; II300 = INDS1 . 1 ; PTS1 = INPUT . 'SUMP' . 'LOCATION' . II300 ; 'SI' (NBSUMP '>' 1) ; 'REPE' BLO300 (NBSUMP - 1) ; I300 = &BLO300 + 1 ; II300 = INDS1 . I300 ; PTS1 = INPUT . 'SUMP' . 'LOCATION' . II300 ; THESUM = THESUM 'ET' PTS1 ; 'FIN' BLO300 ; 'FINSI' ; GEOINF . 'SUMP' = THESUM ; 'FINSI' ; * *---- informations géométriques associées aux murs pour thermique murs * * Remplissage des indices : 'EXT','NBWALL','CENTRW' et 'WALCEL' * * PT1000 : point extérieur à l'enceinte * NBWALL : nombre de murs * LEXTE = FAUX ; LEXTE = VRAI ; NBEXTE = INPUT . 'OUTD' . 'NBOUT' ; 'FINSI' ; * PT1000 = 10000. 10000. ; GEOINF . 'EXT' = PT1000 ; GEOINF . 'NBWALL' = NBWALL ; * II100 = INDW1 . 1 ; PTC1 = INPUT . 'WALL' . 'LOCATION' . II100 ; FROM1 = INPUT . 'WALL' . 'FROM' . II100 ; TFRO1 = INPUT . 'WALL' . 'TYPEFROM' . II100 ; TO1 = INPUT . 'WALL' . 'TO' . II100 ; TTO1 = INPUT . 'WALL' . 'TYPETO' . II100 ; * 'SI' ('EGA' FROM1 0) ; PTF1 = PT1000 ; 'SINON' ; 'SI' ('EGA' TFRO1 'OUTDOOR') ; PTF1 = INPUT . 'OUTD' . 'LOCATION' . FROM1 ; 'SINON' ; PTF1 = INPUT . 'CELL' . 'LOCATION' . FROM1 ; 'FINSI' ; 'FINSI' ; * 'SI' ('EGA' TO1 0) ; PTT1 = PT1000 ; 'SINON' ; 'SI' ('EGA' TTO1 'OUTDOOR') ; PTT1 = INPUT . 'OUTD' . 'LOCATION' . TO1 ; 'SINON' ; PTT1 = INPUT . 'CELL' . 'LOCATION' . TO1 ; 'FINSI' ; 'FINSI' ; * 'SI' (NBWALL > 1) ; 'REPE' BLO100 (NBWALL - 1) ; I100 = &BLO100 + 1 ; II100 = INDW1 . I100 ; PTC1 = INPUT . 'WALL' . 'LOCATION' . II100 ; FROM1 = INPUT . 'WALL' . 'FROM' . II100 ; TFRO1 = INPUT . 'WALL' . 'TYPEFROM' . II100 ; TO1 = INPUT . 'WALL' . 'TO' . II100 ; TTO1 = INPUT . 'WALL' . 'TYPETO' . II100 ; * 'SI' ('EGA' FROM1 0) ; PTF1 = PT1000 ; 'SINON' ; 'SI' ('EGA' TFRO1 'OUTDOOR') ; PTF1 = INPUT . 'OUTD' . 'LOCATION' . FROM1 ; 'SINON' ; PTF1 = INPUT . 'CELL' . 'LOCATION' . FROM1 ; 'FINSI' ; 'FINSI' ; * 'SI' ('EGA' TO1 0) ; PTT1 = PT1000 ; 'SINON' ; 'SI' ('EGA' TTO1 'OUTDOOR') ; PTT1 = INPUT . 'OUTD' . 'LOCATION' . TO1 ; 'SINON' ; PTT1 = INPUT . 'CELL' . 'LOCATION' . TO1 ; 'FINSI' ; 'FINSI' ; * THEWAL = THEWAL 'ET' PTC1 ; 'FIN' BLO100 ; 'FINSI' ; GEOINF . 'CENTRW' = THEWAL ; GEOINF . 'WALCEL' = WALCE1 ; * * remplissage des indices 'WALL','INWALL', 'LAYERW' et 'WALLAY' * WALLIN = TABLE ; FLAGC = 0 ; FLAGC1= 0 ; FLAGC2= 0 ; FLAGC3= 0 ; FLAGS = 0 ; FLAGO = 0 ; FLAGE = 0 ; 'REPE' BLO110 NBWALL ; II110 = INDW1 . &BLO110 ; * récupération point centre du mur PTC1 = INPUT . 'WALL' . 'LOCATION' . II110 ; * point du compartiment amont à identifier parmi 0, OUTDOOR ou CELL FROM1 = INPUT . 'WALL' . 'FROM' . II110 ; TFRO1 = INPUT . 'WALL' . 'TYPEFROM' . II110 ; 'SI' ('EGA' FROM1 0) ; PTF1 = GEOINF . 'EXT' ; 'SINON' ; 'SI' ('EGA' TFRO1 'OUTDOOR') ; PTF1 = INPUT . 'OUTD' . 'LOCATION' . FROM1 ; 'SINON' ; PTF1 = INPUT . 'CELL' . 'LOCATION' . FROM1 ; 'FINSI' ; 'FINSI' ; * calcul de la pente LW1 = ( ((XC1-XF1)*(XC1-XF1)) + ((YC1-YF1)*(YC1-YF1)) ) ** 0.5 ; 'SI' ('EGA' LW1 0.D0) ; COS1 = 1.D0 ; SIN1 = 0.D0 ; 'SINO' ; COS1 = (XC1 - XF1) / LW1 ; SIN1 = (YC1 - YF1) / LW1 ; 'FINSI' ; * récupération de l'épaisseur totale du mur XEW1 = 0. ; NLAY1 = INPUT . 'WALL' . 'NLAYER' . II110 ; 'REPE' BLO111 NLAY1 ; II111 = INDWM1 . &BLO111 ; XEW1 = XEW1 + (INPUT . 'WALL' . 'THICK' . II110 . II111) ; 'FIN' BLO111 ; * création du premier point du mur XW1 = XC1 - ((XEW1 / 2.) * COS1) ; YW1 = YC1 - ((XEW1 / 2.) * SIN1) ; PTW1 = XW1 YW1 ; LINE1 = PTW1 ; * création des autres points du mur 'REPE' BLO112 NLAY1 ; II112 = INDWM1 . &BLO112 ; * nombre de noeuds et épaisseur de la couche NBNO1 = INPUT . 'WALL' . 'NODES' . II110 . II112 ; EPAI1 = INPUT . 'WALL' . 'THICK' . II110 . II112 ; EPAI2 = EPAI1 / (NBNO1 + 1) ; 'REPE' BLO113 (NBNO1 + 1) ; XW2 = XW1 + (EPAI2 * COS1) ; YW2 = YW1 + (EPAI2 * SIN1) ; PTW2 = XW2 YW2 ; LINE1 = LINE1 'ET' PTW2 ; XW1 = XW2 ; YW1 = YW2 ; 'FIN' BLO113 ; 'FIN' BLO112 ; WALLIN . PTC1 = LINE1 ; 'SI' (&BLO110 'EGA' 1) ; LINE2 = LINE1 ; 'SINON' ; LINE2 = LINE2 'ET' LINE1 ; 'FINSI' ; *** Differenciation des faces en contact avec un compartiment *** ou avec un puisard LFROMO = 'EGA' (INPUT . 'WALL' . 'TYPEFROM' . II110) 'OUTDOOR' ; LTOOUT = 'EGA' (INPUT . 'WALL' . 'TYPETO' . II110) 'OUTDOOR' ; LFROMS = 'EGA' (INPUT . 'WALL' . 'TYPEFROM' . II110) 'SUMP' ; LTOS = 'EGA' (INPUT . 'WALL' . 'TYPETO' . II110) 'SUMP' ; FROM1 = INPUT . 'WALL' . 'FROM' . II110 ; TO1 = INPUT . 'WALL' . 'TO' . II110 ; * A) AMONT = SUMP 'SI' LFROMS ; 'SI' ('EGA' FLAGS 0) ; FLAGS = 1 ; 'SINON' ; 'FINSI' ; * A1) AMONT = SUMP et AVAL = SUMP 'SI' LTOS ; 'SINON' ; 'SI' LTOOUT ; 'SI' ('EGA' TO1 0); * A2) AMONT = SUMP et AVAL = 0 'SI' ('EGA' FLAGE 0) ; FLAGE = 1 ; 'SINON' ; 'FINSI' ; 'SINON' ; * A3) AMONT = SUMP et AVAL = OUTDOOR 'SI' ('EGA' FLAGE 0) ; FLAGE = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' FLAGO 0) ; FLAGO = 1 ; 'SINON' ; 'FINSI' ; 'SINON' ; * A4) AMONT = SUMP et AVAL = CELL * Identification du modele de condensation pour la face CELL KOND1 = INPUT . 'WALL' . 'COND2' . II110 ; 'SI' ('EGA' KOND1 'CHILTON'); 'SI' ('EGA' FLAGC1 0) ; FLAGC1 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' KOND1 'TAGAMI'); 'SI' ('EGA' FLAGC2 0) ; FLAGC2 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' KOND1 'UCHIDA'); 'SI' ('EGA' FLAGC3 0) ; FLAGC3 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SINON' ; 'SI' ('EGA' FLAGC 0) ; FLAGC = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'SINON' ; * B) AMONT = 0 ou OUTDOOR 'SI' LFROMO ; 'SI' ('EGA' (INPUT . 'WALL' . 'FROM'. II110) 0); 'SI' ('EGA' FLAGE 0) ; FLAGE = 1 ; 'SINON' ; 'FINSI' ; 'SINON' ; 'SI' ('EGA' FLAGE 0) ; FLAGE = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' FLAGO 0) ; FLAGO = 1 ; 'SINON' ; 'FINSI' ; * B1) AMONT = 0 ou OUTDOOR et AVAL = SUMP 'SI' LTOS ; 'SI' ('EGA' FLAGS 0) ; FLAGS = 1 ; 'SINON' ; 'FINSI' ; 'SINON' ; * B2) AMONT = 0 ou OUTDOOR et AVAL = 0 ou OUTDOOR 'SI' LTOOUT ; 'SINON' ; * B3) AMONT = 0 ou OUTDOOR et AVAL = CELL * Identification du modele de condensation pour la face CELL 'SI' ('EGA' KOND1 'CHILTON'); 'SI' ('EGA' FLAGC1 0) ; FLAGC1 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' KOND1 'TAGAMI'); 'SI' ('EGA' FLAGC2 0) ; FLAGC2 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' KOND1 'UCHIDA'); 'SI' ('EGA' FLAGC3 0) ; FLAGC3 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SINON' ; 'SI' ('EGA' FLAGC 0) ; FLAGC = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'SINON' ; * C) AMONT = CELL * Identification du modele de condensation pour la face CELL KOND1 = INPUT . 'WALL' . 'COND1' . II110 ; 'SI' ('EGA' KOND1 'CHILTON'); 'SI' ('EGA' FLAGC1 0) ; FLAGC1 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' KOND1 'TAGAMI'); 'SI' ('EGA' FLAGC2 0) ; FLAGC2 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' KOND1 'UCHIDA'); 'SI' ('EGA' FLAGC3 0) ; FLAGC3 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SINON' ; 'SI' ('EGA' FLAGC 0) ; FLAGC = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; ** * C1) AMONT = CELL et AVAL = SUMP 'SI' LTOS ; 'SI' ('EGA' FLAGS 0) ; FLAGS = 1 ; 'SINON' ; 'FINSI' ; 'SINON' ; * C2) AMONT = CELL et AVAL = 0 ou OUTDOOR 'SI' LTOOUT ; 'SI' ('EGA' (INPUT . 'WALL' . 'TO' . II110) 0); 'SI' ('EGA' FLAGE 0) ; FLAGE = 1 ; 'SINON' ; 'FINSI' ; 'SINON' ; 'SI' ('EGA' FLAGE 0) ; FLAGE = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' FLAGO 0) ; FLAGO = 1 ; 'SINON' ; 'FINSI' ; 'SINON' ; * C2) AMONT = CELL et AVAL = CELL * Identification du modele de condensation pour la face CELL KOND1 = INPUT . 'WALL' . 'COND2' . II110 ; 'SI' ('EGA' KOND1 'CHILTON'); 'SI' ('EGA' FLAGC1 0) ; FLAGC1 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' KOND1 'TAGAMI'); 'SI' ('EGA' FLAGC2 0) ; FLAGC2 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' KOND1 'UCHIDA'); 'SI' ('EGA' FLAGC3 0) ; FLAGC3 = 1 ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FIN' BLO110 ; * * On a traité tous les murs et toutes les faces * remplissage des indices LOCOUT, LAYERC1, LAYERC2, LAYERC3, LAYERC et LAYEXT * GEOINF . 'WALL' = LINE2 ; GEOINF . 'INWALL' = WALLIN ; GEOINF . 'WALLAY' = WALLA1 ; 'SI' LEXTE ; GEOINF . 'LOCOUT' = INPUT . 'OUTD' . 'LOCATION' ; 'FINSI' ; 'SI' ('EGA' FLAGC1 1) ; GEOINF . 'LAYERC1' = LAYC11 ; 'SI' ('EXISTE' GEOINF 'LAYERC') ; GEOINF . 'LAYERC' = (GEOINF . 'LAYERC') 'ET' LAYC11 ; 'SINON' ; GEOINF . 'LAYERC' = LAYC11 ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' FLAGC2 1) ; GEOINF . 'LAYERC2' = LAYC12 ; 'SI' ('EXISTE' GEOINF 'LAYERC') ; GEOINF . 'LAYERC' = (GEOINF . 'LAYERC') 'ET' LAYC12 ; 'SINON' ; GEOINF . 'LAYERC' = LAYC12 ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' FLAGC3 1) ; GEOINF . 'LAYERC3' = LAYC13 ; 'SI' ('EXISTE' GEOINF 'LAYERC') ; GEOINF . 'LAYERC' = (GEOINF . 'LAYERC') 'ET' LAYC13 ; 'SINON' ; GEOINF . 'LAYERC' = LAYC13 ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' FLAGC 1) ; GEOINF . 'LAYERC' = LAYC1 ; 'FINSI' ; 'SI' ('EXISTE' GEOINF 'LAYERC') ; FLAGC = 1 ; 'SI' ('EXISTE' GEOINF 'LAYERT') ; GEOINF.'LAYERT' = (GEOINF.'LAYERT') 'ET' (GEOINF.'LAYERC'); 'SINON' ; GEOINF.'LAYERT' = GEOINF.'LAYERC' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' FLAGO 1) ; GEOINF . 'LAYERO' = LAYO1 ; 'SI' ('EXISTE' GEOINF 'LAYERT') ; GEOINF . 'LAYERT' = (GEOINF . 'LAYERT') 'ET' LAYO1 ; 'SINON' ; GEOINF . 'LAYERT' = LAYO1 ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' FLAGS 1) ; GEOINF . 'LAYERS' = LAYS1 ; 'SI' ('EXISTE' GEOINF 'LAYERT') ; GEOINF . 'LAYERT' = (GEOINF . 'LAYERT') 'ET' LAYS1 ; 'SINON' ; GEOINF . 'LAYERT' = LAYS1 ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' FLAGE 1) ; GEOINF . 'LAYEXT' = LAYE1 ; 'FINSI' ; * * remplissage de l'indice 'CELLAYW' et 'CELLAYS' * FLAG1 = 0 ; FLAG4 = 0 ; 'REPE' BLO300 NBCELL ; 'REPE' BLO310 NBWALL ; FLAG2 = 0 ; FLAG2 = 1 ; NPT2 = NPT1 ; 'SINO' ; 'FINSI' ; FLAG3 = 0 ; 'REPE' BLO320 NBWALL ; *** Differenciation des faces en contact avec un compartiment *** ou avec un puisard ou avec l'exterieur II320 = INDW1 . &BLO320 ; FROM1 = INPUT.'WALL'.'FROM'.II320 ; TO1 = INPUT.'WALL'.'TO' .II320 ; LFROMO = 'EGA' (INPUT . 'WALL' . 'TYPEFROM' . II320) 'OUTDOOR' ; LFROMS = 'EGA' (INPUT . 'WALL' . 'TYPEFROM' . II320) 'SUMP' ; LFROMC = 'EGA' (INPUT . 'WALL' . 'TYPEFROM' . II320) 'CELL' ; LTOOUT = 'EGA' (INPUT . 'WALL' . 'TYPETO' . II320) 'OUTDOOR' ; LTOS = 'EGA' (INPUT . 'WALL' . 'TYPETO' . II320) 'SUMP' ; LTOC = 'EGA' (INPUT . 'WALL' . 'TYPETO' . II320) 'CELL' ; 'SI' ('EGA' NPTCW1 NPTCW2) ; FLAG3 = 1 ; 'SI' (LFROMC 'ET' ('NON' LFROMO)) ; 'SI' ('EGA' FLAG1 0) ; CELLAYW = CLW1 ; FLAG1 = 1 ; 'SINO' ; CELLAYW = CELLAYW 'ET' CLW1 ; 'FINSI' ; 'SI' ('EGA' FLAG2 1) ; 'SI' (LTOC 'ET' ('NON' LTOOUT)) ; CELLAYW = CELLAYW 'ET' CLW2 ; 'SINO' ; 'SI' LTOS ; 'SI' ('EGA' FLAG4 0) ; CELLAYS = CLW2 ; FLAG4 = 1 ; 'SINO' ; CELLAYS = CELLAYS 'ET' CLW2 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'SINO' ; 'SI' LFROMS ; 'SI' ('EGA' FLAG4 0) ; CELLAYS = CLW1 ; FLAG4 = 1 ; 'SINO' ; CELLAYS = CELLAYS 'ET' CLW1 ; 'FINSI' ; 'SI' ('EGA' FLAG2 1) ; 'SI' LTOS ; CELLAYS = CELLAYS 'ET' CLW2 ; 'SINO' ; 'SI' (LTOC 'ET' ('NON' LTOOUT)) ; 'SI' ('EGA' FLAG1 0) ; CELLAYW = CLW2 ; FLAG1 = 1 ; 'SINO' ; CELLAYW = CELLAYW 'ET' CLW2 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'SINO' ; 'SI' (LTOC 'ET' ('NON' LTOOUT)) ; 'SI' ('EGA' FLAG1 0) ; CELLAYW = CLW1 ; FLAG1 = 1 ; 'SINO' ; CELLAYW = CELLAYW 'ET' CLW1 ; 'FINSI' ; 'SINO' ; 'SI' LTOS ; 'SI' ('EGA' FLAG4 0) ; CELLAYS = CLW1 ; FLAG4 = 1 ; 'SINO' ; CELLAYS = CELLAYS 'ET' CLW1 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'QUITTER' BLO320 ; 'FINSI' ; 'FIN' BLO320 ; 'SI' ('EGA' FLAG3 0) ; SET . 'ERROR' = 1 ; 'QUITTER' TO_FIELD ; 'FINSI' ; 'FINSI' ; 'FIN' BLO310 ; 'FIN' BLO300 ; 'SI' ('EGA' FLAG1 1) ; GEOINF . 'CELLAYW' = CELLAYW ; 'FINSI' ; 'SI' ('EGA' FLAG4 1) ; GEOINF . 'CELLAYS' = CELLAYS ; 'FINSI' ; 'FINSI' ; * * cas de la combustion (remplissage de l'indice CELLCELL) * * CELLCELL : table donnant pour chaque compartiment la liste * des compartiments connectés par une jonction cell-cell * TCELLCEL = 'TABLE' ; 'REPE' BLOJCT NJCT1 ; NAM0 = INDJ1 . &BLOJCT ; NAM1 = INPUT . 'JUNCTION' . 'FROM' . NAM0 ; NAM2 = INPUT . 'JUNCTION' . 'TO' . NAM0 ; 'SI' ('EGA' (INPUT . 'JUNCTION' . 'TYPETO' . NAM0) 'CELL') ; TCELLCEL . NAM1 = 'TABLE' ; TCELLCEL . NAM1 . 1 = NAM2 ; 'SINON' ; NCC1 = NCC + 1 ; TCELLCEL . NAM1 . NCC1 = NAM2 ; 'FINSI' ; TCELLCEL . NAM2 = 'TABLE' ; TCELLCEL . NAM2 . 1 = NAM1 ; 'SINON' ; NCC1 = NCC + 1 ; TCELLCEL . NAM2 . NCC1 = NAM1 ; 'FINSI' ; 'FINSI' ; 'FIN' BLOJCT ; GEOINF . 'CELLCELL' = TCELLCEL ; 'FINSI' ; * * * cas de l'aspersion * GEOINF . 'NAMECELL' = INPUT . 'CELL' . 'LOCATION' ; 'FINSI' ; * * cas de la Combustion * GEOINF . 'NAMECELL' = INPUT . 'CELL' . 'LOCATION' ; 'FINSI' ; * * cas des recombineurs * GEOINF . 'NAMECELL' = INPUT . 'CELL' . 'LOCATION' ; 'FINSI' ; * * cas de la Puissance residuelle * GEOINF . 'NAMECELL' = INPUT . 'CELL' . 'LOCATION' ; 'FINSI' ; * SET . 'GEOINF' = GEOINF ; * *====================================================================== * * Création de la table FIELDS * *====================================================================== * FIELDS = 'TABLE' 'FIELDS' ; FIELDS . 'TIME' = 'TABLE' ; FIELDS . 'PT' = 'TABLE' ; FIELDS . 'TGAS' = 'TABLE' ; FIELDS . 'UGAS' = 'TABLE' ; FIELDS . 'HGAS' = 'TABLE' ; FIELDS . 'RGAS' = 'TABLE' ; 'SI' LJUNC ; FIELDS . 'Q' = 'TABLE' ; 'SI' ('NEG' NBJ 0) ; FIELDS . 'QCEL' = 'TABLE' ; 'FINSI' ; 'SI' ('NEG' NBJO 0) ; FIELDS . 'QOUT' = 'TABLE' ; 'FINSI' ; 'FINSI' ; FIELDS . 'XV' = 'TABLE' ; 'FINSI' ; FIELDS . 'MLIQ' = 'TABLE' ; FIELDS . 'ULIQ' = 'TABLE' ; FIELDS . 'HLIQ' = 'TABLE' ; FIELDS . 'VLIQ' = 'TABLE' ; FIELDS . 'TLIQ' = 'TABLE' ; FIELDS . 'QEVA' = 'TABLE' ; FIELDS . 'MEVA' = 'TABLE' ; FIELDS . 'UEVA' = 'TABLE' ; FIELDS . 'QLS' = 'TABLE' ; FIELDS . 'MLS' = 'TABLE' ; FIELDS . 'ULS' = 'TABLE' ; 'FINSI' ; * * cas de l'aspersion * FIELDS . 'MCND' = 'TABLE' ; FIELDS . 'MEBU' = 'TABLE' ; FIELDS . 'MSPR' = 'TABLE' ; FIELDS . 'UCND' = 'TABLE' ; FIELDS . 'UCNV' = 'TABLE' ; FIELDS . 'UEBU' = 'TABLE' ; FIELDS . 'USPR' = 'TABLE' ; 'FINSI' ; * * cas de la Combustion * FIELDS . 'ECOM' = 'TABLE' ; 'FINSI' ; * * cas des recombineurs * FIELDS . 'TREC' = 'TABLE' ; FIELDS . 'QREC' = 'TABLE' ; FIELDS . 'TSRE' = 'TABLE' ; FIELDS . 'EREC' = 'TABLE' ; 'FINSI' ; * * cas de la Puissance residuelle * FIELDS . 'Y1' = 'TABLE' ; FIELDS . 'Y2' = 'TABLE' ; FIELDS . 'Y3' = 'TABLE' ; 'FINSI' ; * * * *********************************************************************** * Les champs définis dans les compartiments *********************************************************************** * 'REPE' BLO20 NBCELL ; II20 = INDC1 . &BLO20 ; PTI = INPUT . 'CELL' . 'LOCATION' . II20 ; PRESS1 = INPUT . 'CELL' . 'PT' . II20 ; TGAS1 = INPUT . 'CELL' . 'TGAS' . II20 ; UGAS1 = INPUT . 'CELL' . 'UGAS' . II20 ; HGAS1 = INPUT . 'CELL' . 'HGAS' . II20 ; * *---------- masse volumique des constituants et masse volumique totale RGAS1 = 0. ; VOLU1 = INPUT . 'CELL' . 'VOL' . II20 ; 'REPE' BLO21 NCOMP1 ; IND1 = INPUT . 'COMPONENT' . &BLO21 ; NAMM1 = 'CHAINE' 'M' IND1 ; MASS1 = INPUT . 'CELL' . NAMM1 . II20 ; NAMRC1 = 'CHAINE' 'R_' IND1 ; NAMCV1 = 'CHAINE' 'CV' IND1 ; NAMR1 = 'CHAINE' 'R' IND1 ; RCST1 = INPUT . 'PHYSICAL' . NAMRC1 ; RHO1 = MASS1 / VOLU1 ; RGAS1 = RGAS1 + RHO1 ; 'SI' ('EGA' IND1 'H2O') ; ROR1 = RHO1 * RCST1 * ZVAP1 ; ROCV1 = 0. ; 'SINON' ; ROR1 = RHO1 * RCST1 ; CV1 = INPUT . 'PHYSICAL' . NAMCV1 ; ROCV1 = RHO1 * CV1 ; 'FINSI' ; 'SI' (&BLO20 'EGA' 1) ; FIELDS . NAMR1 = 'TABLE' ; FIELDS . NAMR1 . 0 = 'SINON' ; FIELDS . NAMR1 . 0 = (FIELDS . NAMR1 . 0) 'ET' 'FINSI' ; 'FIN' BLO21 ; * *---------------------------------------------------- le titre vapeur XV1 = INPUT . 'CELL' . 'XV' . II20 ; 'SI' (&BLO20 'EGA' 1) ; FIELDS . 'XV' . 0 = 'SINON' ; FIELDS . 'XV' . 0 = (FIELDS . 'XV' . 0) 'ET' 'FINSI' ; 'FINSI' ; * *----------------------------------- quantités associées aux puisards MLIQ1 = INPUT . 'CELL' . 'MLIQ' . II20 ; ULIQ1 = INPUT . 'CELL' . 'ULIQ' . II20 ; HLIQ1 = INPUT . 'CELL' . 'HLIQ' . II20 ; VLIQ1 = INPUT . 'CELL' . 'VLIQ' . II20 ; TLIQ1 = INPUT . 'CELL' . 'TLIQ' . II20 ; 'SI' (&BLO20 'EGA' 1) ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; * * cas de l'aspersion 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'FINSI' ; * * cas de la Combustion 'NATURE' 'DISCRET' ; 'FINSI' ; * * cas des Recombineurs 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'FINSI' ; * * cas de la puissance residuelle 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'FINSI' ; * 'SINON' ; FIELDS . 'MLIQ' . 0 = (FIELDS . 'MLIQ' . 0) 'ET' FIELDS . 'ULIQ' . 0 = (FIELDS . 'ULIQ' . 0) 'ET' FIELDS . 'HLIQ' . 0 = (FIELDS . 'HLIQ' . 0) 'ET' FIELDS . 'VLIQ' . 0 = (FIELDS . 'VLIQ' . 0) 'ET' FIELDS . 'TLIQ' . 0 = (FIELDS . 'TLIQ' . 0) 'ET' FIELDS . 'QEVA' . 0 = (FIELDS . 'QEVA' . 0) 'ET' FIELDS . 'MEVA' . 0 = (FIELDS . 'MEVA' . 0) 'ET' FIELDS . 'UEVA' . 0 = (FIELDS . 'UEVA' . 0) 'ET' FIELDS . 'QLS' . 0 = (FIELDS . 'QLS' . 0) 'ET' FIELDS . 'MLS' . 0 = (FIELDS . 'MLS' . 0) 'ET' FIELDS . 'ULS' . 0 = (FIELDS . 'ULS' . 0) 'ET' * * cas de l'aspersion FIELDS . 'MCND' . 0 = (FIELDS . 'MCND' . 0) 'ET' FIELDS . 'MEBU' . 0 = (FIELDS . 'MEBU' . 0) 'ET' FIELDS . 'MSPR' . 0 = (FIELDS . 'MSPR' . 0) 'ET' FIELDS . 'UCND' . 0 = (FIELDS . 'UCND' . 0) 'ET' FIELDS . 'UCNV' . 0 = (FIELDS . 'UCNV' . 0) 'ET' FIELDS . 'UEBU' . 0 = (FIELDS . 'UEBU' . 0) 'ET' FIELDS . 'USPR' . 0 = (FIELDS . 'USPR' . 0) 'ET' 'FINSI' ; * * cas de la Combustion FIELDS . 'ECOM' . 0 = (FIELDS . 'ECOM' . 0) 'ET' 'FINSI' ; * * cas des Recombineurs * FIELDS . 'TREC' . 0 = (FIELDS . 'TREC' . 0) 'ET' FIELDS . 'QREC' . 0 = (FIELDS . 'QREC' . 0) 'ET' FIELDS . 'TSRE' . 0 = (FIELDS . 'TSRE' . 0) 'ET' FIELDS . 'EREC' . 0 = (FIELDS . 'EREC' . 0) 'ET' 'FINSI' ; * * cas de la Puissance résiduelle * FIELDS . 'Y1' . 0 = (FIELDS . 'Y1' . 0) 'ET' FIELDS . 'Y2' . 0 = (FIELDS . 'Y2' . 0) 'ET' FIELDS . 'Y3' . 0 = (FIELDS . 'Y3' . 0) 'ET' 'FINSI' ; * 'FINSI' ; 'FINSI' ; 'SI' (&BLO20 'EGA' 1) ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'SINON' ; FIELDS . 'PT' . 0 = (FIELDS . 'PT' . 0) 'ET' FIELDS . 'TGAS' . 0 = (FIELDS . 'TGAS' . 0) 'ET' FIELDS . 'UGAS' . 0 = (FIELDS . 'UGAS' . 0) 'ET' FIELDS . 'HGAS' . 0 = (FIELDS . 'HGAS' . 0) 'ET' FIELDS . 'RGAS' . 0 = (FIELDS . 'RGAS' . 0) 'ET' 'FINSI' ; 'FIN' BLO20 ; * *- 'Q' défini aux jonctions * 'SI' LJUNC ; 'REPE' BLO30 NBJUNC ; II30 = INDJ1 . &BLO30 ; PTJ = INPUT .'JUNCTION' .'LOCATION' . II30 ; FLU1 = INPUT .'JUNCTION' . 'Q' . II30 ; 'SI' (&BLO30 'EGA' 1) ; 'SINON' ; FIELDS . 'Q' . 0 = (FIELDS . 'Q' . 0) 'ET' 'FINSI' ; 'FIN' BLO30 ; 'FINSI' ; * *- 'QLIQ' défini aux jonctions liquides * FIELDS . 'QLIQ' = 'TABLE' ; 'REPE' BLO31 NBJUL1 ; II31 = INDJL1 . &BLO31 ; PTJL = INPUT .'JULIQ' .'LOCATION' . II31 ; 'SI' (&BLO31 'EGA' 1) ; 'NATURE' 'DISCRET' ; 'SINON' ; FIELDS . 'QLIQ' . 0 = (FIELDS . 'QLIQ' . 0) 'ET' 'FINSI' ; 'FIN' BLO31 ; 'FINSI' ; * *********************************************************************** * Les champs définis dans les murs *********************************************************************** * * FIELDS . 'TWAL' = 'TABLE' ; * * les flux de chaleur spécifiques rentrant des deux * cotés de chaque mur * FIELDS . 'QWAL' = 'TABLE' ; * * boucle sur les murs 'REPE' BLO120 NBWALL ; II120 = INDW1 . &BLO120 ; PTC1 = INPUT . 'WALL' . 'LOCATION' . II120 ; * températures des parois gauches et droites du mur XTWAL1 = INPUT . 'WALL' . 'TWAL1' . II120 ; XTWAL2 = INPUT . 'WALL' . 'TWAL2' . II120 ; * boucle sur les points du mur pour initialisation des températures * épaisseur du mur EPAI1 = (((X2 - X1)*(X2 - X1)) + ((Y2 - Y1)*(Y2 - Y1))) ** 0.5 ; * différence entre les deux températures DIFF3 = XTWAL2 - XTWAL1 ; 'REPE' BLO121 NBNO1 ; EPAI3 = (((X3 - X1)*(X3 - X1)) + ((Y3 - Y1)*(Y3 - Y1))) ** 0.5 ; XTWAL3 = XTWAL1 + (EPAI3 * DIFF3 / EPAI1) ; 'SI' ((&BLO120 'EGA' 1) 'ET' (&BLO121 'EGA' 1)) ; FIELDS . 'TWAL' . 0 = 'SINON' ; FIELDS . 'TWAL' . 0 = (FIELDS . 'TWAL' . 0) + 'FINSI' ; 'FIN' BLO121 ; * initialisation des flux de chaleur spécifiques 'SI' (&BLO120 'EGA' 1) ; FIELDS . 'QWAL' . 0 = 'SINON' ; FIELDS . 'QWAL' . 0 = (FIELDS . 'QWAL' . 0) + 'FINSI' ; 'FIN' BLO120 ; * 'FINSI' ; * * SET . 'FIELDS' = FIELDS ; * *********************************************************************** * Création de la table DATA *********************************************************************** * DATA = 'TABLE' 'DATA' ; * * * cas de l'aspersion * DATA . 'SPRAY' = INPUT . 'SPRAY' ; * creation de la variable permettant de savoir si l'aspersion * a demarre DATA . 'SPRAY' . 'IDEB' = 0 ; DATA . 'SPRAY' . 'VOLC' = 0. ; 'FINSI' ; * * cas de la Combustion * DATA . 'BURN' = INPUT . 'BURN' ; 'FINSI' ; * * cas des Recombineurs * DATA . 'RECOMB' = INPUT . 'RECOMB' ; 'FINSI' ; * * cas de la Puissance residuelle * DATA . 'PRESI' = INPUT . 'PRESI' ; 'FINSI' ; *********************************************************************** * les champs 'AREA', 'DISC', 'LENGTH' définis aux jonctions *********************************************************************** * 'SI' LJUNC ; IEV1 = 0 ; data . 'AREA' = TABLE ; 'REPE' BLO40 NBJUNC ; II40 = INDJ1 . &BLO40 ; PTJ = INPUT .'JUNCTION' . 'LOCATION' . II40 ; AREA1 = INPUT .'JUNCTION' . 'AREA' . II40 ; DISC1 = INPUT .'JUNCTION' . 'DISC' . II40 ; LENG1 = INPUT .'JUNCTION' . 'LENGTH' . II40 ; * DATA . 'DISC' = (DATA . 'DISC') 'ET' 'SINO' ; 'NATURE' 'DISCRET'; 'FINSI' ; * DATA . 'LENGTH' = (DATA . 'LENGTH') 'ET' 'SINO' ; 'NATURE' 'DISCRET'; 'FINSI' ; * DATA . 'AREA' . 0 = (DATA . 'AREA' . 0) 'ET' 'SINO' ; 'NATURE' 'DISCRET'; 'FINSI' ; 'SINO' ; IEV1 = IEV1 + 1 ; DATA . 'AREA' . IEV1 = 'TABLE' ; DATA . 'AREA' . IEV1 . 'LOCATION' = PTJ ; DATA . 'AREA' . 'NBEV' = IEV1 ; 'FINSI' ; * 'FIN' BLO40 ; 'FINSI' ; * *********************************************************************** * le champ 'VOL' défini sur les compartiments *********************************************************************** * I50 = 0 ; 'REPE' BLO50 NBCELL ; I50 = I50 + 1 ; II50 = INDC1 . I50 ; PTI = INPUT . 'CELL' . 'LOCATION' . II50 ; VOLU1 = INPUT . 'CELL' . 'VOL' . II50 ; 'SI' (I50 'EGA' 1) ; 'SINON' ; DATA . 'VOL' = (DATA . 'VOL') ET 'FINSI' ; FIN BLO50 ; * *********************************************************************** * les champs 'ASUMP','VMAX','APERTURE' définis dans les puisards *********************************************************************** * * I51 = 0 ; 'REPE' BLO51 NBCELL ; I51 = I51 + 1 ; II51 = INDC1 . I51 ; PTI = INPUT . 'CELL' . 'LOCATION' . II51 ; ASUMP1 = INPUT . 'CELL' . 'ASUMP' . II51 ; 'FINSI' ; 'SI' (I51 'EGA' 1) ; 'NATURE' 'DISCRET' ; VMAX1 = INPUT . 'CELL' . 'VMAX' . II51 ; 'NATURE' 'DISCRET' ; 'FINSI' ; APER1 = INPUT . 'CELL' . 'APERTURE' . II51 ; 'NATURE' 'DISCRET' ; 'FINSI' ; 'SINON' ; DATA . 'ASUMP' = (DATA . 'ASUMP') ET 'NATURE' 'DISCRET') ; VMAX1 = INPUT . 'CELL' . 'VMAX' . II51 ; DATA . 'VMAX' = (DATA . 'VMAX') ET 'NATURE' 'DISCRET') ; 'FINSI' ; APER1 = INPUT . 'CELL' . 'APERTURE' . II51 ; DATA . 'APERTURE' = (DATA . 'APERTURE') ET 'NATURE' 'DISCRET') ; 'FINSI' ; 'FINSI' ; FIN BLO51 ; * 'FINSI' ; * *********************************************************************** * les champs ECHAW,AREAW définis aux parois des murs *********************************************************************** * * la température extérieure DATA . 'TOUT' = INPUT . 'TOUT'; * boucle sur les murs I130 = 0 ; 'REPE' BLO130 NBWALL ; I130 = I130 + 1 ; II130 = INDW1 . I130 ; PTC1 = INPUT . 'WALL' . 'LOCATION' . II130 ; ECHA1 = INPUT . 'WALL' . 'ECHAN1' . II130 ; ECHA2 = INPUT . 'WALL' . 'ECHAN2' . II130 ; SURF1 = INPUT . 'WALL' . 'AREA' . II130 ; 'SI' (I130 'EGA' 1) ; 'NATURE' 'DISCRET' ; 'SINON' ; DATA . 'ECHAW' = (DATA . 'ECHAW') + DATA . 'AREAW' = (DATA . 'AREAW') + 'NATURE' 'DISCRET') ; 'FINSI' ; FIN BLO130 ; * 'SI' (EXISTE GEOINF 'LAYERC') ; 'FINSI' ; SET . 'FIELDS' . 'ECHA' = TABLE ; (DATA . 'ECHAW') 'ECHA' ; SET . 'FIELDS' . 'ALAT' = TABLE ; (GEOINF . 'LAYERT') 1 'ALAT' 0.D0 'NATURE' 'DISCRET' ; 'FINSI' ; * 'FINSI' ; * * SET . 'DATA' = DATA ; * * *********************************************************************** * Création de la table BOUNDARY *********************************************************************** * BOUNDARY = 'TABLE' 'BOUNDARY' ; * * --- Condition à la limite pour la pression totale --- * 'SI' (NBCP1 NEG 0) ; I200 = 0 ; 'REPE' BLO200 NBCP1 ; I200 = I200 + 1 ; ICEL1 = INDBP1 . I200 ; PTI1 = INPUT . 'CELL' . 'LOCATION' . ICEL1 ; PRES1 = INPUT . 'BOUNDARY' . 'PT' . ICEL1 ; 'SI' (I200 'EGA' 1) ; 'NATURE' 'DISCRET' ; 'SINON' ; BOUNDARY . 'PT' = (BOUNDARY . 'PT') ET 'NATURE' 'DISCRET') ; 'FINSI' ; FIN BLO200 ; 'FINSI' ; 'FINSI' ; * * --- Conditions aux limites pour les différents constituants (sources) --- * --- Lecture des tables sources --- * 'REPE' BLO210 NCOMP1 ; NAMG1 = INPUT . 'COMPONENT' . &BLO210 ; NAMQ1 = CHAINE 'Q' NAMG1 ; 'SINO' ; BOUNDARY . NAMQ1 = 'TABLE' ; IJ0 = 0 ; 'FINSI' ; 'REPE' BLO211 NBPTK1 ; II211 = INDB1 . &blo211 ; 'REPE' BLO212 NBPTK2 ; IJ0 = IJ0 + 1 ; II212 = INDB2 . &blo212 ; FICH1 = INPUT . 'BOUNDARY' . NAMQ1 . II211 . II212 ; PTCEL1 = INPUT . 'CELL' . 'LOCATION' . II211 ; EV1 EV2 EV3 EV4 H2O_PR = TO_LIXOU FICH1 NAMG1 ; * EV1 EV2 NAMEOUT H2O_PR = TO_DATA2 FICH1 NAMG1 ; BOUNDARY . NAMQ1 . IJ0 = 'TABLE' ; BOUNDARY . NAMQ1 . IJ0 . 'CELL' = PTCEL1 ; BOUNDARY . NAMQ1 . IJ0 . 'EVOLM' = EV1 ; BOUNDARY . NAMQ1 . IJ0 . 'EVOLE' = EV2 ; * IER = OKTPS EV1 (INPUT . 'TIMECALC' . 'LISTCALC') ; 'SI' ('EGA' IER 1) ; SET . 'ERROR' = 1 ; 'QUIT' TO_FIELD ; 'FINSI' ; * 'SI' ('EGA' namg1 'H2O') ; 'FINSI' ; 'FIN' BLO212 ; 'FIN' BLO211 ; 'FINSI' ; 'FIN' BLO210 ; * * Limitation des sources de h2 issues de l'h2 dissous dans le primaire * par la masse de h2 présente dans le primaire à t=0 'SI' ('NEG' NBH2_DIS 0) ; * concaténation de toutes les sources d'h2 dissous EVMH2 = 0. * (BOUNDARY . 'QH2' . RANG0 . 'EVOLM') ; EVEH2 = 0. * (BOUNDARY . 'QH2' . RANG0 . 'EVOLE') ; 'REPE' BLOLIM NBH2_DIS ; EVM_D = BOUNDARY . 'QH2' . RANG0 . 'EVOLM' ; EVE_D = BOUNDARY . 'QH2' . RANG0 . 'EVOLE' ; EVMH2 ierr = ADEVOL EVM_D EVMH2 ; EVEH2 ierr = ADEVOL EVE_D EVEH2 ; 'FIN' BLOLIM ; * Si au temps final la masse max est dépassée, identification du temps * auquel la masse max est atteinte et troncature/prolongement des * sources de h2_dis au-delà de ce temps CST = INPUT . 'PHYSICAL' . 'RHO_H2' * INPUT . 'CONC_H2' ; MA0_H2 = CST * INPUT . 'MA0_PR' ; 'SI' (MA0_H2 '<EG' MA0_TEST) ; 'REPE' BLOLIM2 NBH2_DIS ; EVM_D = BOUNDARY . 'QH2' . RANG0 . 'EVOLM' ; EVE_D = BOUNDARY . 'QH2' . RANG0 . 'EVOLE' ; BOUNDARY . 'QH2' . RANG0 . 'EVOLM' = EVM_D ; BOUNDARY . 'QH2' . RANG0 . 'EVOLE' = EVE_D ; 'FIN' BLOLIM2 ; 'FINSI' ; 'FINSI' ; * *fd Sources implicites * * * --- Conditions aux limites pour les différents constituants (puits) --- * --- Lecture des puits --- * BOUNDARY . 'OUT' = 'TABLE' ; 'SI' ('EGA' NBPTK1 0) ; SET . 'ERROR' = 1 ; 'QUIT' TO_FIELD ; 'FINSI' ; 'REPE' BLO400 NBPTK1 ; II400 = INDB1 . &BLO400 ; 'MESS' 'TO_FIELD : bad OUT cell number' II400 ; SET . 'ERROR' = 1 ; 'QUIT' TO_FIELD ; 'FINSI' ; PTCEL1 = INPUT . 'CELL' . 'LOCATION' . II400 ; BOUNDARY . 'OUT' . &BLO400 = 'TABLE' ; BOUNDARY . 'OUT' . &BLO400 . 'CELL' = PTCEL1 ; 'REPE' BLO410 NBPTK2 ; II410 = INDB2 . &BLO410 ; FICH1 = INPUT . 'BOUNDARY' . 'OUT' . II400 . II410 ; EVM mot1 = TO_DATA1 FICH1 ; IER = OKTPS EVM (INPUT . 'TIMECALC' . 'LISTCALC') ; 'SI' ('EGA' IER 1) ; SET . 'ERROR' = 1 ; 'QUIT' TO_FIELD ; 'FINSI' ; BOUNDARY . 'OUT' . &BLO400 . &BLO410 = TABLE ; BOUNDARY . 'OUT' . &BLO400 . &BLO410 . 'EVOLM' = EVM ; 'REPE' BLO420 NCOMP1 ; IND1 = INPUT . 'COMPONENT' . &BLO420 ; NAMM1 = 'CHAINE' 'CUMULM_' IND1 ; 'FIN' BLO420 ; 'FIN' BLO410 ; 'FIN' BLO400 ; 'FINSI' ; * * --- Recirculation ISBP dans les puisards (puits) --- * --- Lecture des puits --- * BOUNDARY . 'ISBP' = 'TABLE' ; 'SI' ('EGA' NBPTK1 0) ; SET . 'ERROR' = 1 ; 'QUIT' TO_FIELD ; 'FINSI' ; 'REPE' BLO420 NBPTK1 ; II420 = INDB1 . &BLO420 ; 'MESS' 'TO_FIELD : bad ISBP cell number' II420 ; SET . 'ERROR' = 1 ; 'QUIT' TO_FIELD ; 'FINSI' ; PTCEL1 = INPUT . 'CELL' . 'LOCATION' . II420 ; BOUNDARY . 'ISBP' . &BLO420 = 'TABLE' ; BOUNDARY . 'ISBP' . &BLO420 . 'CELL' = PTCEL1 ; 'REPE' BLO430 NBPTK2 ; II430 = INDB2 . &BLO430 ; FICH1 = INPUT . 'BOUNDARY' . 'ISBP' . II420 . II430 ; EVM mot1 = TO_DATA1 FICH1 ; IER = OKTPS EVM (INPUT . 'TIMECALC' . 'LISTCALC') ; 'SI' ('EGA' IER 1) ; SET . 'ERROR' = 1 ; 'QUIT' TO_FIELD ; 'FINSI' ; BOUNDARY . 'ISBP' . &BLO420 . &BLO430 = 'TABLE' ; BOUNDARY . 'ISBP' . &BLO420 . &BLO430 . 'EVOLM' = EVM ; 'FIN' BLO430 ; 'FIN' BLO420 ; 'FINSI' ; * * * --- prise en compte eventuelle de l'ASPERSION * ----------------------------------------- * * SOURCE D'ASPERSION * * NBSPR = INPUT . 'SPRAY' . 'NBR' ; FICSPR = INPUT . 'SPRAY' . 'FLOWRATE' ; FICP = INPUT . 'SPRAY' . 'THRESHOLP' ; NAMG1 = 'H2O' ; BOUNDARY . 'QSPRAY' = 'TABLE' ; BOUNDARY . 'PSPRAYL' = 'TABLE' ; * * Existance des compartiments aspergés et calcul du volume aspergé VTOT = 0. ; 'REPE' BLOSPR1 NBSPR ; ISPR1 = INPUT . 'SPRAY' . 'LOCATION' . &BLOSPR1 ; SET . 'ERROR' = 1 ; 'QUIT' TO_FIELD ; 'FINSI' ; PTCELS = INPUT . 'CELL' . 'LOCATION' . ISPR1 ; VOLS = INPUT . 'CELL' . 'VOL' . ISPR1 ; VTOT = VTOT + VOLS ; CHARGS EVOLS = TO_LISOU FICSPR NAMG1 '1' ; BOUNDARY . 'QSPRAY' . &BLOSPR1 = 'TABLE' ; BOUNDARY . 'QSPRAY' . &BLOSPR1 . 'CELL' = PTCELS ; BOUNDARY . 'QSPRAY' . &BLOSPR1 . 'CHARG' = CHARGS ; BOUNDARY . 'QSPRAY' . &BLOSPR1 . 'EVOLU' = EVOLS ; * 'FIN' BLOSPR1 ; DATA . 'SPRAY' . 'VTOT' = VTOT ; * * Existence du puisard associé à la recirculation ISPR1 = INPUT . 'SPRAY' . 'RECIR' ; SET . 'ERROR' = 1 ; 'QUIT' TO_FIELD ; 'FINSI' ; DATA . 'SPRAY' . 'PTRECIR' = INPUT . 'CELL' . 'LOCATION' . ISPR1 ; * * Courbe de pression limite d'aspersion BOUNDARY . 'PSPRAYL' . 1 = 'TABLE' ; BOUNDARY . 'PSPRAYL' . 1 . 'CHARG' = CHARGP ; BOUNDARY . 'PSPRAYL' . 1 . 'EVOLU' = EVOLP ; * 'FINSI' ; * * * * SOURCES pour la COMBUSTION CONTINUE * ----------------------------------- * * 'SI' ('EGA' TYPEC 'REAL' ) ; * NBCOMB = INPUT . 'BURN' . NBR ; BOUNDARY . QCOMB = 'TABLE' ; * ICOMB = 0 ; 'REPE' BLCOMB1 NBCOMB ; * ICOMB = ICOMB + 1 ; * * test de l'existance des compartiments * ICOMB1 = ((INPUT . 'BURN' . LOCATION)) . ICOMB ; SET . 'ERROR' = 1 ; QUITTER TO_FIELD ; 'FINSI' ; * PTCELC = INPUT . 'CELL' . 'LOCATION' . ICOMB1 ; * * BOUNDARY . QCOMB . ICOMB = 'TABLE' ; BOUNDARY . QCOMB . ICOMB . 'CELL' = PTCELC ; * * --------------------- SOURCE H2 * FICH2 = INPUT . 'BURN' . 'SH2' . ICOMB ; NAMG1 = 'H2' ; CHARGH2 EVOLH2 = TO_LISOU FICH2 NAMG1 '1'; BOUNDARY . QCOMB . ICOMB . 'CHARGH2' = CHARGH2 ; BOUNDARY . QCOMB . ICOMB . 'EVOLH2' = EVOLH2 ; 'FINSI' ; * --------------------- SOURCE CO FICCO = INPUT . 'BURN' . 'SCO' . ICOMB ; NAMG2 = 'CO' ; CHARGCO EVOLCO = TO_LISOU FICCO NAMG2 '1'; BOUNDARY . QCOMB . ICOMB . 'CHARGCO' = CHARGCO ; BOUNDARY . QCOMB . ICOMB . 'EVOLCO' = EVOLCO ; 'FINSI' ; * FIN BLCOMB1 ; * 'FINSI' ; * 'FINSI' ; * * * SOURCES pour la Puissance Residuelle * ----------------------------------- * * Lecture du fichier Puissance residuelle Principal * FICH1 = INPUT . 'PRESI' . 'SOURCEP' ; * CHARG1 EVOL1 = TO_LIPR FICH1 '1' 2 ; BOUNDARY . PRESID = 'TABLE' ; BOUNDARY . PRESID . 'CHARG' = CHARG1 ; BOUNDARY . PRESID . 'EVOLU' = EVOL1 ; * * si lambda (rabattement) est une fonction du temps * * MOTLAMB = INPUT . 'PRESI' . 'LAMBDA' . 1 ; CHARGP EVOLP = TO_LIFON MOTLAMB 'LAMB' '1' ; BOUNDARY . PRESID . 'LAMBDA' = 'TABLE' ; BOUNDARY . PRESID . 'LAMBDA' . 'CHARG' = CHARGP ; BOUNDARY . PRESID . 'LAMBDA' . 'EVOLU' = EVOLP ; 'FINSI'; * * si lambdaP (rabattement dans le cas de l'aspersion) * est une fonction du temps * * MOTLAMBP = INPUT . 'PRESI' . 'LAMBDAP' . 1 ; CHARGP EVOLP = TO_LIFON MOTLAMBP 'LAMB' '1' ; BOUNDARY . PRESID . 'LAMBDAP' = 'TABLE' ; BOUNDARY . PRESID . 'LAMBDAP' . 'CHARG' = CHARGP ; BOUNDARY . PRESID . 'LAMBDAP' . 'EVOLU' = EVOLP ; 'FINSI'; * NBPRESI = INPUT . 'PRESI' . NBR ; * IPRESI = 0 ; * 'REPE' BLPRESI NBPRESI ; * IPRESI = IPRESI + 1 ; * * test de l'existance des compartiments * IPRESI1 = ((INPUT . 'PRESI' . LOCATION)) . IPRESI ; SET . 'ERROR' = 1 ; QUITTER TO_FIELD ; 'FINSI' ; * PTCELC = INPUT . 'CELL' . 'LOCATION' . IPRESI1 ; BOUNDARY . PRESID . IPRESI = 'TABLE' ; BOUNDARY . PRESID . IPRESI . 'CELL' = PTCELC ; * * * FICH2 = INPUT . 'PRESI' . 'SOURCE' . IPRESI ; * CHARG2 EVOL2 = TO_LIPR FICH2 '1' 1; BOUNDARY . PRESID . IPRESI . 'CHARG' = CHARG2 ; BOUNDARY . PRESID . IPRESI . 'EVOLU' = EVOL2 ; * 'FIN' BLPRESI ; * 'FINSI' ; * SET . 'BOUNDARY' = BOUNDARY ; * *********************************************************************** * Création des champs inconnus au temps courant (table INCO) *********************************************************************** * INCO = 'TABLE' 'INCO' ; INCO . 'SUPPORT' = 'TABLE' ; * *INCO . 'ROR' = 'COPI' (FIELDS . 'ROR' . 0) ; *INCO . 'ROCV' = 'COPI' (FIELDS . 'ROCV' . 0) ; * INCO . 'SUPPORT' . 'PT' = 'CELL' ; INCO . 'SUPPORT' . 'TGAS' = 'CELL' ; INCO . 'SUPPORT' . 'UGAS' = 'CELL' ; INCO . 'SUPPORT' . 'HGAS' = 'CELL' ; INCO . 'SUPPORT' . 'RGAS' = 'CELL' ; *INCO . 'SUPPORT' . 'ROR' = 'CELL' ; *INCO . 'SUPPORT' . 'ROCV' = 'CELL' ; * 'SI' LJUNC ; INCO . 'SUPPORT' . 'Q' = 'JUNCTION' ; 'SI' ('NEG' NBJ 0) ; INCO . 'SUPPORT' . 'QCEL' = 'JUNCTION' ; 'FINSI' ; 'SI' ('NEG' NBJO 0) ; INCO . 'SUPPORT' . 'QOUT' = 'JUNCTOUT' ; 'FINSI' ; 'FINSI' ; * I60 = 0 ; 'REPE' BLO60 NCOMP1 ; I60 = I60 + 1 ; NAME1 = SET . 'COMPONENT' . I60 ; RNAM1 = CHAINE 'R' NAME1 ; INCO . 'SUPPORT' . RNAM1 = 'CELL' ; FIN BLO60 ; * INCO . 'SUPPORT' . 'TWAL' = 'WALL' ; INCO . 'SUPPORT' . 'QWAL' = 'LAYERT' ; * 'SI' ('EGA' FLAGC 1) ; INCO . 'QW' = 'NOMC' 'QW' * INCO . 'SUPPORT' . 'QW' = 'LAYERC' ; 'SI' ('EXISTE' INCO 'RH2O') ; INCO . 'SUPPORT' . 'ECHA' = 'LAYERT' ; INCO . 'SUPPORT' . 'ALAT' = 'LAYERT' ; 'FINSI' ; 'FINSI' ; * 'SI' ('EGA' FLAGO 1) ; INCO . 'QO' = 'NOMC' 'QO' * INCO . 'SUPPORT' . 'QO' = 'LAYERO' ; 'FINSI' ; * 'SI' ('EGA' FLAGS 1) ; INCO . 'QS' = 'NOMC' 'QS' * INCO . 'SUPPORT' . 'QS' = 'LAYERS' ; 'FINSI' ; * 'SI' ('EGA' 'OFF' (INPUT . 'T_COUPLING')) ; 'SI' ('EGA' FLAGC 1) ; * INCO . 'SUPPORT' . 'QP' = 'LAYERW' ; 'FINSI' ; * 'SI' ('EGA' FLAGS 1) ; * INCO . 'SUPPORT' . 'QR' = 'LAYERS' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * INCO . 'SUPPORT' . 'XV' = 'CELL' ; 'FINSI' ; * * INCO . 'SUPPORT' . 'MLIQ' = 'CELL' ; INCO . 'SUPPORT' . 'ULIQ' = 'CELL' ; INCO . 'SUPPORT' . 'HLIQ' = 'CELL' ; INCO . 'SUPPORT' . 'VLIQ' = 'CELL' ; INCO . 'SUPPORT' . 'TLIQ' = 'CELL' ; INCO . 'SUPPORT' . 'QEVA' = 'CELL' ; INCO . 'SUPPORT' . 'MEVA' = 'CELL' ; INCO . 'SUPPORT' . 'UEVA' = 'CELL' ; INCO . 'SUPPORT' . 'QLS' = 'CELL' ; INCO . 'SUPPORT' . 'MLS' = 'CELL' ; INCO . 'SUPPORT' . 'ULS' = 'CELL' ; * * Cas de l'Aspersion * ------------------ INCO . 'SUPPORT' . 'MCND' = 'CELL' ; INCO . 'SUPPORT' . 'UCND' = 'CELL' ; INCO . 'SUPPORT' . 'UCNV' = 'CELL' ; INCO . 'SUPPORT' . 'MEBU' = 'CELL' ; INCO . 'SUPPORT' . 'UEBU' = 'CELL' ; INCO . 'SUPPORT' . 'MSPR' = 'CELL' ; INCO . 'SUPPORT' . 'USPR' = 'CELL' ; 'FINSI' ; * * Cas de la Combustion * -------------------- INCO . 'SUPPORT' . 'ECOM' = 'CELL' ; 'FINSI' ; * * Cas des Recombineurs * -------------------- INCO . 'SUPPORT' . 'TREC' = 'CELL' ; INCO . 'SUPPORT' . 'QREC' = 'CELL' ; INCO . 'SUPPORT' . 'TSRE' = 'CELL' ; INCO . 'SUPPORT' . 'EREC' = 'CELL' ; 'FINSI' ; * * Cas de La puissance residuelle * ------------------------------ INCO . 'SUPPORT' . 'Y1' = 'CELL' ; INCO . 'SUPPORT' . 'Y2' = 'CELL' ; INCO . 'SUPPORT' . 'Y3' = 'CELL' ; 'FINSI' ; * 'FINSI' ; * * INCO . 'SUPPORT' . 'QLIQ' = 'JULIQ' ; 'FINSI' ; * *********************************************************************** * SET . 'INCO' = INCO ; * *********************************************************************** * Données générales *********************************************************************** * SET . 'COUPLAGE_WALL' = INPUT . 'T_COUPLING' ; SET . 'RELAX' = INPUT . 'RELAX' ; SET . 'RELINT' = INPUT . 'RELINT' ; SET . 'IMPR' = INPUT . 'IMPR' ; SET . 'NAMECASE' = INPUT . 'NAMECASE' ; 'SI' ('EGA' (input . 'QSONIC') 'ON') ; SET . 'QSONIC' = vrai ; SET . 'QLIMIT' = input . 'QLIMIT' ; 'SINO' ; SET . 'QSONIC' = faux ; 'FINSI' ; * *********************************************************************** * Création des indices PHYSICAL et TIMECALC *********************************************************************** * SET . 'PHYSICAL' = INPUT . 'PHYSICAL' ; * * * --- intégration des propriétés matérielles de murs --- * * boucle sur les murs I140 = 0 ; 'REPE' BLO140 NBWALL ; I140 = I140 + 1 ; II140 = INDW1 . I140 ; PTC1 = INPUT . 'WALL' . 'LOCATION' . II140 ; * nombre de points dans le mur * traitement particulier pour le premier et le dernier pt du mur * nombre de couche dans le mur NBLAY1 = INPUT . 'WALL' . 'NLAYER' . II140 ; * coefficients pour la formulation d'Uchida XUCH1 = INPUT . 'WALL' . 'UCHIDA' . II140 . 1 ; XUCH2 = INPUT . 'WALL' . 'UCHIDA' . II140 . NBLAY1 ; 'SI' (I140 'EGA' 1) ; 'NATURE' 'DISCRET') ET 'NATURE' 'DISCRET'); 'NATURE' 'DISCRET') ET 'NATURE' 'DISCRET'); 'NATURE' 'DISCRET') ET 'NATURE' 'DISCRET'); 'NATURE' 'DISCRET') ET 'NATURE' 'DISCRET'); 'NATURE' 'DISCRET') ET 'NATURE' 'DISCRET'); 'SINON' ; SET .'PHYSICAL' . 'RW' = (SET .'PHYSICAL' . 'RW') ET SET .'PHYSICAL' . 'CW' = (SET .'PHYSICAL' . 'CW') ET SET .'PHYSICAL' . 'LW' = (SET .'PHYSICAL' . 'LW') ET SET .'PHYSICAL' . 'TW' = (SET .'PHYSICAL' . 'TW') ET SET .'PHYSICAL' . 'UCHI' = (SET .'PHYSICAL' . 'UCHI') ET 'FINSI' ; * boucle sur les couches IPT1 = 0 ; I142 = 0 ; NLAY1 = INPUT . 'WALL' . 'NLAYER' . II140 ; 'REPE' BLO142 NLAY1 ; I142 = I142 + 1 ; II142 = INDWM1 . I142 ; * nombre de points internes dans la couche NBNO1 = INPUT . 'WALL' . 'NODES' . II140 . II142 ; * pour la couche : RHO, CP, LAMBDA , épaisseurs trafiquées RHO1 = INPUT . 'WALL' . 'RHO' . II140 . II142 ; CP1 = INPUT . 'WALL' . 'CP' . II140 . II142 ; LBD1 = INPUT . 'WALL' . 'LAMBDA' . II140 . II142 ; EPAI1 = INPUT . 'WALL' . 'THICK' . II140 . II142 ; EPAI1 = EPAI1 / (NBNO1 + 1) ; * récupération du premier et du dernier point de la couche PTL1 = (SET . 'GEOINF' . 'INWALL' . PTC1) PTL2 = (SET . 'GEOINF' . 'INWALL' . PTC1) IPT1 = IPT1 + 1 ; * traitement pour le premier et le dernier point de la couche SET .'PHYSICAL' . 'RW' = (SET .'PHYSICAL' . 'RW') 'ET' SET .'PHYSICAL' . 'CW' = (SET .'PHYSICAL' . 'CW') 'ET' SET .'PHYSICAL' . 'LW' = (SET .'PHYSICAL' . 'LW') 'ET' SET .'PHYSICAL' . 'TW' = (SET .'PHYSICAL' . 'TW') 'ET' * traitement pour les points internes de la couche 'SI' besoin 'SI' (NBNO1 'NEG' 0) ; 'REPE' BLO143 NBNO1 ; SET .'PHYSICAL' . 'RW' = (SET .'PHYSICAL' . 'RW') 'ET' SET .'PHYSICAL' . 'CW' = (SET .'PHYSICAL' . 'CW') 'ET' SET .'PHYSICAL' . 'LW' = (SET .'PHYSICAL' . 'LW') 'ET' SET .'PHYSICAL' . 'TW' = (SET .'PHYSICAL' . 'TW') 'ET' 'FIN' BLO143 ; IPT1 = IPT1 + NBNO1 ; 'FINSI' ; 'FIN' BLO142 ; * FIN BLO140 ; * 'SI' (EXISTE GEOINF 'LAYERC') ; (GEOINF.'LAYERC') ; 'FINSI' ; 'SI' LEXTE ; SET . 'PHYSICAL' . 'OUTD' = INPUT . 'OUTD' ; 'FINSI' ; 'FINSI' ; SET . 'TIMECALC' = INPUT . 'TIMECALC' ; * *- Création de la partie constante du modele de TAGAMI si besoin * 'SI' ('EXISTE' (INPUT . 'PHYSICAL') 'CONDENSE') ; COND1 = INPUT . 'PHYSICAL' . 'CONDENSE' ; 'SI' (('EGA' COND1 'TAGAMI') 'OU' ('EXIST' (INPUT.'PHYSICAL') 'CTAG') 'OU' ('EXIST' (INPUT.'PHYSICAL') 'TTAG')) ; TTAG = SET . 'PHYSICAL' . 'TTAG' ; CTAG = SET . 'PHYSICAL' . 'CTAG' ; GEO1 = SET . 'GEOINF' . 'CELL' ; TAB1 = SET . 'BOUNDARY' . 'QH2O' ; 'REPE' BLO200 DIM1 ; IND2 = IND1 . &BLO200 ; PT2 = TAB1 . IND2 . 'CELL' ; * ENE2 = 'MINI' ('TIRE' (TAB1 . IND2 . 'CHARG') TTAG 'ENER') ; ETAG = ETAG + ETA2 ; 'FIN' BLO200 ; 'FINSI' ; VOL1 = SET . 'DATA' . 'VOL' ; SET . 'PHYSICAL' . 'TAGA' = 'MAXI' (ETAG / VOL1 / TTAG ** 0.6 * CTAG) ; SET . 'PHYSICAL' . 'TTAGA' = (ETAG / VOL1 / TTAG ** 0.6 * CTAG) ; 'FINSI' ; 'FINSI' ; * *- Modification eventuelle de l'énergie injectée pour injection H2O * SET . 'INJECTION' = INPUT . 'INJECTION' ; 'FINSI' ; * *- Regroupement des correspondance nom des structures / support associé * set . 'LOCATION' = table ; set . 'LOCATION' . 'CELL' = input . 'CELL' . 'LOCATION' ; set . 'LOCATION' . 'JUNCTION' = input . 'JUNCTION' . 'LOCATION' ; 'FINSI' ; set . 'LOCATION' . 'WALL' = input . 'WALL' . 'LOCATION' ; 'FINSI' ; * 'FINP' SET ; *$$$$ TO_INPUT * * * NCOMP1 = 0 ; * * --- Déclaration des tables --- * INPUT = 'TABLE' 'INPUT' ; INPUT . 'ERROR' = 1 ; * TCELL = 'TABLE' ; TCELL . 'LOCATION' = 'TABLE' ; TCELL . 'VOL' = 'TABLE' ; TCELL . 'ASUMP' = 'TABLE' ; TCELL . 'VMAX' = 'TABLE' ; TCELL . 'APERTURE' = 'TABLE' ; TCELL . 'TGAS' = 'TABLE' ; TCELL . 'PT' = 'TABLE' ; TCELL . 'UGAS' = 'TABLE' ; TCELL . 'HGAS' = 'TABLE' ; TCELL . 'LCOMB' = 'TABLE' ; * TSUMP = 'TABLE' ; TSUMP . 'LOCATION' = 'TABLE' ; * TEXT1 = 'TABLE' ; TEXT1 . 'TPS' = 'TABLE' ; TEXT1 . 'LOCATION' = 'TABLE' ; * JUNCT = 'TABLE' ; JUNCT . 'LOCATION' = 'TABLE' ; JUNCT . 'FROM' = 'TABLE' ; JUNCT . 'TO' = 'TABLE' ; JUNCT . 'AREA' = 'TABLE' ; JUNCT . 'DISC' = 'TABLE' ; JUNCT . 'LENGTH' = 'TABLE' ; JUNCT . 'Q' = 'TABLE' ; * JULCT = 'TABLE' ; JULCT . 'LOCATION' = 'TABLE' ; JULCT . 'FROM' = 'TABLE' ; JULCT . 'TO' = 'TABLE' ; * THEWAL = 'TABLE' ; THEWAL . 'LOCATION' = 'TABLE' ; THEWAL . 'FROM' = 'TABLE' ; THEWAL . 'TYPEFROM' = 'TABLE' ; THEWAL . 'TYPETO' = 'TABLE' ; THEWAL . 'TO' = 'TABLE' ; THEWAL . 'AREA' = 'TABLE' ; THEWAL . 'TWAL1' = 'TABLE' ; THEWAL . 'TWAL2' = 'TABLE' ; THEWAL . 'ECHAN1' = 'TABLE' ; THEWAL . 'ECHAN2' = 'TABLE' ; THEWAL . 'NLAYER' = 'TABLE' ; THEWAL . 'MATERIAL' = 'TABLE' ; THEWAL . 'NODES' = 'TABLE' ; THEWAL . 'RHO' = 'TABLE' ; THEWAL . 'CP' = 'TABLE' ; THEWAL . 'LAMBDA' = 'TABLE' ; THEWAL . 'THICK' = 'TABLE' ; THEWAL . 'UCHIDA' = 'TABLE' ; THEWAL . 'COND1' = 'TABLE' ; THEWAL . 'COND2' = 'TABLE' ; * SPRAY = 'TABLE' ; SPRAY . 'LOCATION' = 'TABLE' ; * BURN = 'TABLE' ; BURN . 'LOCATION' = 'TABLE' ; BURN . 'TIME' = 'TABLE' ; BURN . 'IDEB' = 'TABLE' ; BURN . 'RAYON' = 'TABLE' ; BURN . 'SPEED' = 'TABLE' ; BURN . 'MH2' = 'TABLE' ; BURN . 'MCO' = 'TABLE' ; BURN . 'QLIB' = 'TABLE' ; BURN . 'SH2' = 'TABLE' ; BURN . 'SCO' = 'TABLE' ; BURN . 'ALPHA' = 'TABLE' ; BURN . 'RON2' = 'TABLE' ; BURN . 'SIGMA' = 'TABLE' ; BURN . 'TDEB' = 'TABLE' ; * RECOMB = 'TABLE' ; RECOMB . 'LOCATION' = 'TABLE' ; RECOMB . 'TARGET' = 'TABLE' ; RECOMB . 'NSECTION' = 'TABLE' ; RECOMB . 'PARAM1' = 'TABLE' ; RECOMB . 'PARAM2' = 'TABLE' ; RECOMB . 'PARAM3' = 'TABLE' ; RECOMB . 'PARAM4' = 'TABLE' ; RECOMB . 'PARAM5' = 'TABLE' ; RECOMB . 'PUISSANCE' = 'TABLE' ; RECOMB . 'QHOUSING' = 'TABLE' ; RECOMB . 'HRAPP' = 'TABLE' ; RECOMB . 'CRAPP' = 'TABLE' ; * PRESI = 'TABLE' ; PRESI . 'LOCATION' = 'TABLE' ; PRESI . 'GAMRG' = 'TABLE' ; PRESI . 'GAMRA' = 'TABLE' ; PRESI . 'GAMAP' = 'TABLE' ; PRESI . 'BETAP' = 'TABLE' ; PRESI . 'LAMBDA' = 'TABLE' ; PRESI . 'LAMBDAP' = 'TABLE' ; PRESI . 'TRAB' = 'TABLE' ; PRESI . 'SOURCE' = 'TABLE' ; * BOUNDARY = 'TABLE' ; PHYSICAL = 'TABLE' ; TMATER = 'TABLE' ; TIMECALC = 'TABLE' ; TCOMPO = 'TABLE' ; * * --- indicateur de puisard externe et numéro de jonction ISUMP = 0 ; IJULC = 0 ; * * --- indicateur de materiau de type WAL, WZN, WPERMALI ou WCONCRET IAL = 0 ; IZN = 0 ; IPERMALI = 0 ; ICONCRET = 0 ; * * --- Flags pour la définition de la position des compartiments et * --- des jonctions entre compartiments XCOK = 0 ; YCOK = 0 ; XJOK = 0 ; YJOK = 0 ; * * --- Initialisation pour l'aspersion, la combustion, les recombineurs * --- et la puissance résiduelle. NBASP = 0 ; NBCOMB = 0 ; NBRECOMB = 0 ; NBRPRESI = 0 ; * * --- nombre de murs et nombre de couches NBWALL = 0 ; NBEXTE = 0 ; NBLAYE = 0 ; * * --- ICELL (resp. IJUNC) doivent contenir le nom d'une cellule (resp. * --- jonction entre deux compartiments). Ces noms servent à indicer * --- un certain nombre de TABLEs. On commence à les initialiser à 0. * --- A posteriori, on verifiera qu'il n'existe pas d'indice 0 dans * --- les tables. Si il en existe un, c'est qu'un mot clef associé à * --- une cellule (resp. une jonction) a été lu alors qu'aucune cellule * --- (resp. jonction) n'était déclaré. Ibid avec IWALL pour les murs. ICELL = 0 ; IJUNC = 0 ; IWALL = 0 ; IEXTE = 0 ; * * --- ILAYER doit etre un entier. On initialise un MOT pour tester. ILAYER = 'NOTDONE' ; * * --- lecture des mots clés --- * * ILECT : Vaut 0 si on doit lire et décodé une nouvelle ligne ; Egal * à 1 si la derniere ligne lue doit etre décodé. Ce dernier cas se * produit en quittant le bloc de données associées à l'aspersion. * * IKEY : Vaut 0 tant que le mot clef n'est pas trouvé, 1 si OK * ifin = 0 ; ILECT = 0 ; MESS0 = 'WARNING : default value for ' ; TXT0 = '****** DATASET INPUT FILE : ' ; 'REPE' BLO10 ; IKEY = 0 ; 'SI' (ILECT 'EGA' 0) ; 'ACQU' NAME1 NAME2 ; 'SINO' ; ILECT = 0 ; 'FINSI' ; * - 1 --- on saute les lignes de commentaires --- 'SI' ('EGA' NAME1 '#') ; IKEY = 1 ; 'SINO' ; 'MESS' NAME1 ' ' NAME2 ; 'FINSI' ; * - 2 --- fin du fichier --- 'SI' ('EGA' NAME1 'END') ; IKEY = 1 ; INPUT . 'ERROR' = 0 ; IFIN = 1 ; 'FINSI' ; * - 3 --- titre du cas --- 'SI' ('EGA' NAME1 'TITLE') ; IKEY = 1 ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 4 --- nom du compartiment courant --- 'SI' ('EGA' NAME1 'CELL') ; IKEY = 1 ; ISUMP = 0 ; IINH2O = 0 ; IINH2 = 0 ; IINN2 = 0 ; IINO2 = 0 ; IINCO2 = 0 ; IINCO = 0 ; IINHE = 0 ; IOUT = 0 ; IISBP = 0 ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 5 --- abscisse du compartiment ou du puisard externe courant --- 'SI' ('EGA' NAME1 'XC') ; IKEY = 1 ; XC1 = NAME2 ; 'SI' (YCOK 'EGA' 1) ; PT1 = XC1 YC1 ; TCELL . 'LOCATION' . ICELL = PT1 ; YCOK = 0 ; 'SI' (ISUMP 'EGA' 1) ; TSUMP . 'LOCATION' . ICELL = PT1 ; 'FINSI' ; 'SINO' ; XCOK = 1 ; 'FINSI' ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 6 --- ordonnée du compartiment courant --- 'SI' ('EGA' NAME1 'YC') ; IKEY = 1 ; YC1 = NAME2 ; 'SI' (XCOK 'EGA' 1) ; PT1 = XC1 YC1 ; TCELL . 'LOCATION' . ICELL = PT1 ; XCOK = 0 ; 'SI' (ISUMP 'EGA' 1) ; TSUMP . 'LOCATION' . ICELL = PT1 ; 'FINSI' ; 'SINO' ; YCOK = 1 ; 'FINSI' ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 7 --- volume du compartiment courant --- 'SI' ('EGA' NAME1 'VOLUME') ; IKEY = 1 ; TCELL . 'VOL' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 8 --- Condition initiale pour la pression totale --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'PRESSURE') ; IKEY = 1 ; TCELL . 'PT' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 9 --- Condition initiale pour la température du mélange gazeux --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'T_GAS') ; IKEY = 1 ; TCELL . 'TGAS' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 10 --- Condition initiale pour la masse de vapeur d'eau --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'M_H2O') ; IKEY = 1 ; TCELL . 'MH2O' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 11 --- Condition initiale pour la masse de H2 --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'M_H2') ; IKEY = 1 ; TCELL . 'MH2' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 12 --- Condition initiale pour la masse de N2 --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'M_N2') ; IKEY = 1 ; TCELL . 'MN2' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 13 --- Condition initiale pour la masse de O2 --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'M_O2') ; IKEY = 1 ; TCELL . 'MO2' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 14 --- Condition initiale pour la masse de CO2 --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'M_CO2') ; IKEY = 1 ; TCELL . 'MCO2' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 15 --- Condition initiale pour la masse de CO --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'M_CO') ; IKEY = 1 ; TCELL . 'MCO' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 16 --- Condition initiale pour la masse de HE --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'M_HE') ; IKEY = 1 ; TCELL . 'MHE' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 17 --- Condition initiale pour l'énergie interne du mélange gazeux --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'U_GAS') ; IKEY = 1 ; TCELL . 'UGAS' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 18 --- Pression totale imposée --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'BOUN_P') ; IKEY = 1 ; BOUNDARY . 'PT' = 'TABLE' ; 'FINSI' ; BOUNDARY . 'PT' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 19 --- Nom du fichier source de vapeur d'eau --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'IN_H2O') ; IKEY = 1 ; BOUNDARY . 'QH2O' = 'TABLE' ; 'FINSI' ; BOUNDARY . 'QH2O' . ICELL = 'TABLE' ; 'FINSI' ; IINH2O = IINH2O + 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; TEST1 = FAUX ; 'SI' ('EGA' (TCOMPO . &BLO11A) 'H2O') ; TEST1 = VRAI ; 'FINSI' ; 'FIN' BLO11A ; 'SI' ('EGA' TEST1 FAUX) ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 20 --- Nom du fichier source de H2 --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'IN_H2') ; IKEY = 1 ; BOUNDARY . 'QH2' = 'TABLE' ; 'FINSI' ; BOUNDARY . 'QH2' . ICELL = 'TABLE' ; 'FINSI' ; IINH2 = IINH2 + 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; TEST1 = FAUX ; 'SI' ('EGA' (TCOMPO . &BLO11B) 'H2') ; TEST1 = VRAI ; 'FINSI' ; 'FIN' BLO11B ; 'SI' ('EGA' TEST1 FAUX) ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 21 --- Nom du fichier source de N2 --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'IN_N2') ; IKEY = 1 ; BOUNDARY . 'QN2' = 'TABLE' ; 'FINSI' ; BOUNDARY . 'QN2' . ICELL = 'TABLE' ; 'FINSI' ; IINN2 = IINN2 + 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; TEST1 = FAUX ; 'SI' ('EGA' (TCOMPO . &BLO11C) 'N2') ; TEST1 = VRAI ; 'FINSI' ; 'FIN' BLO11C ; 'SI' ('EGA' TEST1 FAUX) ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 22 --- Nom du fichier source de O2 --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'IN_O2') ; IKEY = 1 ; BOUNDARY . 'QO2' = 'TABLE' ; 'FINSI' ; BOUNDARY . 'QO2' . ICELL = 'TABLE' ; 'FINSI' ; IINO2 = IINO2 + 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; TEST1 = FAUX ; 'SI' ('EGA' (TCOMPO . &BLO11D) 'O2') ; TEST1 = VRAI ; 'FINSI' ; 'FIN' BLO11D ; 'SI' ('EGA' TEST1 FAUX) ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 23 --- Nom du fichier source de CO2 --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'IN_CO2') ; IKEY = 1 ; BOUNDARY . 'QCO2' = 'TABLE' ; 'FINSI' ; BOUNDARY . 'QCO2' . ICELL = 'TABLE' ; 'FINSI' ; IINCO2 = IINCO2 + 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; TEST1 = FAUX ; 'SI' ('EGA' (TCOMPO . &BLO11E) 'CO2') ; TEST1 = VRAI ; 'FINSI' ; 'FIN' BLO11E ; 'SI' ('EGA' TEST1 FAUX) ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 24 --- Nom du fichier source de CO --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'IN_CO') ; IKEY = 1 ; BOUNDARY . 'QCO' = 'TABLE' ; 'FINSI' ; BOUNDARY . 'QCO' . ICELL = 'TABLE' ; 'FINSI' ; IINCO = IINCO + 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; TEST1 = FAUX ; 'SI' ('EGA' (TCOMPO . &BLO11F) 'CO') ; TEST1 = VRAI ; 'FINSI' ; 'FIN' BLO11F ; 'SI' ('EGA' TEST1 FAUX) ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 25 --- Nom du fichier source de HE --- * --- dans le compartiment courant --- 'SI' ('EGA' NAME1 'IN_HE') ; IKEY = 1 ; BOUNDARY . 'QHE' = 'TABLE' ; 'FINSI' ; BOUNDARY . 'QHE' . ICELL = 'TABLE' ; 'FINSI' ; IINHE = IINHE + 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; TEST1 = FAUX ; 'SI' ('EGA' (TCOMPO . &BLO11G) 'HE') ; TEST1 = VRAI ; 'FINSI'; 'FIN' BLO11G ; 'SI' ('EGA' TEST1 FAUX) ; 'QUIT' BLO10 ; 'FINSI'; 'FINSI' ; * - 26 --- Numéro de la jonction courante --- 'SI' ('EGA' NAME1 'JUNCTION') ; IKEY = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 27 --- abscisse du centre de la jonction courante --- 'SI' ('EGA' NAME1 'XJ') ; IKEY = 1 ; XJ1 = NAME2 ; 'SI' (YJOK 'EGA' 1) ; PT1 = XJ1 YJ1 ; JUNCT . 'LOCATION' . IJUNC = PT1 ; YJOK = 0 ; 'SINON' ; XJOK = 1 ; 'FINSI' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 28 --- ordonnée du centre de la jonction courante --- 'SI' ('EGA' NAME1 'YJ') ; IKEY = 1 ; YJ1 = NAME2 ; 'SI' (XJOK 'EGA' 1) ; PT1 = XJ1 YJ1 ; JUNCT . 'LOCATION' . IJUNC = PT1 ; XJOK = 0 ; 'SINON' ; YJOK = 1 ; 'FINSI' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 29 --- Compartiment de départ de la jonction courante --- 'SI' ('EGA' NAME1 'FROM') ; IKEY = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 30 --- Compartiment d'arrivée de la jonction courante --- 'SI' ('EGA' NAME1 'TO') ; IKEY = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 31 --- Section de la jonction courante --- 'SI' ('EGA' NAME1 'AREA') ; IKEY = 1 ; IAREA = 0 ; IAREA = 1 ; JUNCT . 'AREA' . IJUNC = NAME2 ; 'FINSI' ; IAREA = 2 ; 'SI' (name2 '<EG' 0) ; 'QUIT' BLO10 ; 'FINSI' ; n31a = name2 ; 'REPE' BLO31A n31a ; 'ACQU' NAME1 NAME2 ; 'MESS' NAME1 ' ' NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FIN' BLO31A ; 'FINSI' ; 'SI' ('EGA' NAME2 'FREE') ; IAREA = 2 ; 'REPE' BLO31B ; 'ACQU' NAME1 NAME2 ; 'MESS' NAME1 ' ' NAME2 ; 'SINON' ; 'SI' ('EGA' NAME1 'END') ; 'QUIT' BLO31B ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; 'FIN' BLO31B ; 'SINO' ; IAREA = 3 ; JUNCT . 'AREA' . IJUNC = NAME2 ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' IAREA 0) ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 32 --- Coefficient de perte de charge de la jonction courante --- 'SI' ('EGA' NAME1 'K') ; IKEY = 1 ; JUNCT . 'DISC' . IJUNC = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 33 --- Longueur effective de la jonction courante --- 'SI' ('EGA' NAME1 'LENGTH') ; IKEY = 1 ; JUNCT . 'LENGTH' . IJUNC = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 34 --- Condition initiale pour le débit de masse --- * --- dans la jonction courante --- 'SI' ('EGA' NAME1 'Q') ; IKEY = 1 ; JUNCT . 'Q' . IJUNC = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 35 --- Accélération de la pesanteur --- 'SI' ('EGA' NAME1 'GRAVITY') ; IKEY = 1 ; PHYSICAL . 'GRAVITY' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 36 --- Temps sauvés --- * (sous forme de liste t1 t2 deltat, format FREE accepté) 'SI' ('EGA' NAME1 'TIMESAVE') ; IKEY = 1 ; TIMECALC . 'STEPSAVE' = NAME2 ; 'SINON' ; 'SI' ('EGA' NAME2 'FREE') ; TIMECALC . 'STEPSAVE' = 0 ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; 'SI' ((TIMECALC . 'STEPSAVE') '<' 0) ; 'QUIT' BLO10 ; 'FINSI' ; 'REPE' BLO36 (TIMECALC . 'STEPSAVE') ; 'ACQU' NAME1 NAME2 NAME3 ; 'MESS' NAME1 ' ' NAME2 ' ' NAME3 ; TIMECALC . 'LISTSAVE' = (TIMECALC . 'LISTSAVE') 'ET' 'SINON' ; 'SI' (('EGA' NAME1 'END') 'ET' ('EGA' NAME2 'OF') 'ET' ('EGA' NAME3 'DATA') ) ; 'QUIT' BLO36 ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; 'FIN' BLO36 ; 'FINSI' ; * - 37 --- Temps calculés --- * (sous forme de liste t1 t2 deltat, format FREE accepté) 'SI' ('EGA' NAME1 'TIMESTEP') ; IKEY = 1 ; TIMECALC . 'STEPNUMB' = NAME2 ; 'SINON' ; 'SI' ('EGA' NAME2 'FREE') ; TIMECALC . 'STEPNUMB' = 0 ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; 'SI' ((TIMECALC . 'STEPNUMB') '<' 0) ; 'QUIT' BLO10 ; 'FINSI' ; 'REPE' BLO37 (TIMECALC . 'STEPNUMB') ; 'ACQU' NAME1 NAME2 NAME3 ; 'MESS' NAME1 ' ' NAME2 ' ' NAME3 ; TIMECALC . 'LISTCALC' = (TIMECALC . 'LISTCALC') 'ET' 'SINON' ; 'SI' (('EGA' NAME1 'END') 'ET' ('EGA' NAME2 'OF') 'ET' ('EGA' NAME3 'DATA') ) ; 'QUIT' BLO37 ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; 'FIN' BLO37 ; 'FINSI' ; * - 38 --- fréquence des pas de temps pour la sauvegarde --- 'SI' ('EGA' NAME1 'NSAVE') ; IKEY = 1 ; TIMECALC . 'FREQSAVE' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 39 --- fréquence des pas de temps pour les tracés --- 'SI' ('EGA' NAME1 'NPLOT') ; IKEY = 1 ; TIMECALC . 'FREQPLOT' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 40 --- erreur relative tolérée --- 'SI' ('EGA' NAME1 'ERRTOL') ; IKEY = 1 ; TIMECALC . 'ERRTOL' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 41 --- constituants à prendre en compte --- 'SI' ('EGA' NAME1 'COMPONENT') ; IKEY = 1 ; 'SI' ('EGA' NAME2 'H2O') ; NAMEC1 = 'H2O' ; TCELL . 'HUMIDITY' = 'TABLE' ; 'SINON' ; 'SI' ('EGA' NAME2 'HE') ; 'SINON' ; 'SI' ('EGA' NAME2 'H2') ; NAMEC1 = 'H2' ; 'SINON' ; 'SI' ('EGA' NAME2 'N2') ; NAMEC1 = 'N2' ; 'SINON' ; 'SI' ('EGA' NAME2 'O2') ; NAMEC1 = 'O2' ; 'SINON' ; 'SI' ('EGA' NAME2 'CO2') ; NAMEC1 = 'CO2' ; 'SINON' ; 'SI' ('EGA' NAME2 'CO') ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; MASS1 = CHAINE 'M' NAMEC1 ; TCELL . MASS1 = 'TABLE' ; NCOMP1 = NCOMP1 + 1 ; TCOMPO . NCOMP1 = NAMEC1 ; 'FINSI' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 42 --- nom du fichier de sauvegarde --- 'SI' ('EGA' NAME1 'SAVEFILE') ; IKEY = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 43 --- la température extérieure --- 'SI' ('EGA' NAME1 'TOUT') ; IKEY = 1 ; INPUT . 'TOUT' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 44 --- Numéro du mur courant --- 'SI' ('EGA' NAME1 'WALL') ; IKEY = 1 ; NBWALL = NBWALL + 1 ; NBLAYE = 0 ; THEWAL . 'LOCATION' . IWALL = 0 ; THEWAL . 'MATERIAL' . IWALL = 'TABLE' ; THEWAL . 'NODES' . IWALL = 'TABLE' ; THEWAL . 'RHO' . IWALL = 'TABLE' ; THEWAL . 'CP' . IWALL = 'TABLE' ; THEWAL . 'LAMBDA' . IWALL = 'TABLE' ; THEWAL . 'THICK' . IWALL = 'TABLE' ; THEWAL . 'UCHIDA' . IWALL = 'TABLE' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 45 --- Premier compartiment en contact avec le mur courant --- 'SI' ('OU' ('EGA' NAME1 'FROMC') ('EGA' NAME1 'FROMW')) ; IKEY = 1 ; THEWAL . 'TYPEFROM'. IWALL = 'CELL' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 46 --- Deuxième compartiment en contact avec le mur courant --- 'SI' ('OU' ('EGA' NAME1 'TOC') ('EGA' NAME1 'TOW')) ; IKEY = 1 ; THEWAL . 'TYPETO' . IWALL = 'CELL' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 47 --- Surface du mur courant --- 'SI' ('EGA' NAME1 'AREAW') ; IKEY = 1 ; THEWAL . 'AREA' . IWALL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 48 --- Température initiale constante dans le mur courant --- 'SI' ('EGA' NAME1 'TWALL') ; IKEY = 1 ; THEWAL . 'TWAL1' . IWALL = NAME2 ; THEWAL . 'TWAL2' . IWALL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 49 --- Température initiale linéaire dans le mur courant --- 'SI' ('EGA' NAME1 'TWALL_1') ; IKEY = 1 ; THEWAL . 'TWAL1' . IWALL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 50 --- Température initiale linéaire dans le mur courant --- 'SI' ('EGA' NAME1 'TWALL_2') ; IKEY = 1 ; THEWAL . 'TWAL2' . IWALL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 51 --- Coeff. d'échange entre premier compart. et mur courant --- 'SI' ('EGA' NAME1 'ECHAN1') ; IKEY = 1 ; THEWAL . 'ECHAN1' . IWALL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 52 --- Coeff. d'échange entre deuxième compart. et mur courant --- 'SI' ('EGA' NAME1 'ECHAN2') ; IKEY = 1 ; THEWAL . 'ECHAN2' . IWALL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 53 --- Numéro de la couche courante du mur courant --- 'SI' ('EGA' NAME1 'LAYER') ; IKEY = 1 ; ILAYER = NAME2 ; NBLAYE = NBLAYE + 1 ; THEWAL . 'NLAYER' . IWALL = NBLAYE ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 54 --- Type de matériau de la couche courante --- 'SI' ('EGA' NAME1 'DATAW') ; IKEY = 1 ; 'QUIT' BLO10 ; 'FINSI' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 55 --- Nombre de noeuds internes dans la couche courante --- 'SI' ('EGA' NAME1 'NODES') ; IKEY = 1 ; 'QUIT' BLO10 ; 'FINSI' ; 'QUIT' BLO10 ; 'FINSI' ; THEWAL . 'NODES' . IWALL . ILAYER = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 56 --- Epaisseur de la couche courante --- 'SI' ('EGA' NAME1 'THICK') ; IKEY = 1 ; 'QUIT' BLO10 ; 'FINSI' ; 'QUIT' BLO10 ; 'FINSI' ; THEWAL . 'THICK' . IWALL . ILAYER = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 57 --- humidité relative dans le compartiment courant --- 'SI' ('EGA' NAME1 'HUMIDITY') ; IKEY = 1 ; TCELL . 'HUMIDITY' . ICELL = NAME2 ; 'FINSI' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 58 --- coefficient de relaxation --- 'SI' ('EGA' NAME1 'RELAX') ; IKEY = 1 ; INPUT . 'RELAX' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 59 --- type de condensation éventuelle --- 'SI' ('EGA' NAME1 'CONDENSE') ; IKEY = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 60 --- masse d'eau du puisard du compartiment courant --- 'SI' ('EGA' NAME1 'MLIQ') ; IKEY = 1 ; TCELL . 'MLIQ' = 'TABLE' ; 'FINSI' ; TCELL . 'MLIQ' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 61 --- température de l'eau du puisard du compartiment courant --- 'SI' ('EGA' NAME1 'TLIQ') ; IKEY = 1 ; TCELL . 'TLIQ' = 'TABLE' ; 'FINSI' ; TCELL . 'TLIQ' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 62 --- surface libre du puisard du compartiment courant --- 'SI' ('EGA' NAME1 'ASUMP') ; IKEY = 1 ; TCELL . 'ASUMP' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 63 --- nom d'un matériau servant pour les structures --- 'SI' ('EGA' NAME1 'MATERIAL') ; IKEY = 1 ; TMATER . NOMAT1 = 'TABLE' ; TMATER . NOMAT1 . 'TYPEW' = 'NUL' ; TMATER . NOMAT1 . 'CPW' = 0.0 ; TMATER . NOMAT1 . 'LBDW' = 0.0 ; TMATER . NOMAT1 . 'RHOW' = 0.0 ; 'FINSI' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 64 --- type du matériau courant --- 'SI' ('EGA' NAME1 'WTYPE') ; IKEY = 1 ; 'SI' ('EGA' name2 'WCONCRET') ; ICONCRET = 1 ; 'FINSI' ; 'SI' ('EGA' name2 'WAL') ; IAL = 1 ; 'FINSI' ; 'SI' ('EGA' name2 'WZN') ; IZN = 1 ; 'FINSI' ; 'SI' ('EGA' name2 'WPERMALI') ; IPERMALI = 1 ; 'FINSI' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 65 --- chaleur spécifique du matériau courant --- 'SI' ('EGA' NAME1 'WCP') ; IKEY = 1 ; TMATER . NOMAT1 . 'CPW' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 66 --- conductivité thermique du matériau courant --- 'SI' ('EGA' NAME1 'WLBD') ; IKEY = 1 ; TMATER . NOMAT1 . 'LBDW' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 67 --- masse volumique du matériau courant --- 'SI' ('EGA' NAME1 'WRHO') ; IKEY = 1 ; TMATER . NOMAT1 . 'RHOW' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 68 --- la jonction liquide --- 'SI' ('EGA' NAME1 'TOSUMP') ; IKEY = 1 ; IJULC = IJULC + 1 ; JULCT . 'FROM' . IJULC = ICELL ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 69 --- le volume max d'eau dans le puisard du compartiment --- 'SI' ('EGA' NAME1 'VMAX') ; IKEY = 1 ; TCELL . 'VMAX' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 70 --- largeur de débordement du puisard --- 'SI' ('EGA' NAME1 'APERTURE') ; IKEY = 1 ; TCELL . 'APERTURE' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 71 --- numéro du puisard externe courant --- 'SI' ('EGA' NAME1 'SUMP') ; IKEY = 1 ; ISUMP = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 72 --- modification de l'injection --- 'SI' ('EGA' NAME1 'INJECTION') ; IKEY = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 73 --- prise en compte de l'aspersion --- * 'SI' ('EGA' NAME1 'SPRAYS') ; IKEY = 1 ; *- Lecture du nombre de compartiment et de leurs noms *- (on saute les lignes de commentaires éventuelles) NBASP = NAME2 ; SPRAY . 'NBR' = NBASP ; 'REPE' BLOASP1 100 ; 'ACQU' NAME1 ; 'SI' ('EGA' NAME1 '#') ; 'SINON' ; 'MESS' NAME1 ; SPRAY . 'LOCATION' . &BLOASP1 = NAME1 ; 'SI' ( 'EGA' NBASP &BLOASP1 ) ; 'QUIT' BLOASP1 ; 'FINSI'; 'FINSI' ; 'FIN' BLOASP1 ; * 'REPE' BLOASP2 100 ; 'ACQU' NAME1 NAME2 ; * - 1 --- on saute les lignes de commentaires --- 'SI' (NEG NAME1 '#') ; 'MESS' NAME1 ' ' NAME2 ; * - 2 --- temps de demarrage de l'aspersion --- 'SI' ('EGA' NAME1 'STARTSPRAY') ; SPRAY . 'STARTSPRAY' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 3 --- debit d'aspersion --- 'SI' ('EGA' NAME1 'FLOWRATE') ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 4 --- pression de demarrage --- 'SI' ('EGA' NAME1 'THRESHOLP') ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 5 --- Nom du puisard pour la recirculation --- 'SI' ('EGA' NAME1 'RECIR') ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 6 --- T maxi --- 'SI' ('EGA' NAME1 'TMAX') ; SPRAY . 'TMAX' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 7 --- volume mini d'arret --- 'SI' ('EGA' NAME1 'VOLMINI') ; SPRAY . 'VOLMINI' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 8 --- Type d'echangeur --- 'SI' ('EGA' NAME1 'EXCHANGER') ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * actuellement il n'y a qu'un seul type d'echangeur (CC) * - 9 --- T echangeur (froid) --- 'SI' ('EGA' NAME1 'TCOLD') ; SPRAY . 'TCOLD' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 10 --- CP echangeur (froid) --- 'SI' ('EGA' NAME1 'CPCOLD') ; SPRAY . 'CPCOLD' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 11 --- rendement en pourcent --- 'SI' ('EGA' NAME1 'RATEEXCH') ; SPRAY . 'RATEEXCH' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 12 --- CC : coef KS --- 'SI' ('EGA' NAME1 'KS') ; SPRAY . 'KS' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 13 --- CC : coef alpha --- 'SI' ('EGA' NAME1 'ALPHA') ; SPRAY . 'ALPHA' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 14 --- CC : coef beta --- 'SI' ('EGA' NAME1 'BETA') ; SPRAY . 'BETA' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 15 --- CC : coef gamma --- 'SI' ('EGA' NAME1 'GAMMA') ; SPRAY . 'GAMMA' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 16 --- volume du reservoir --- 'SI' ('EGA' NAME1 'VOLUME') ; SPRAY . 'VOLUME' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 17 --- modele d'aspersion --- 'SI' ('EGA' NAME1 'SPRMOD') ; SPRAY . 'SPRMOD' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINON' ; * - 18 --- fraction impactant la paroi --- 'SI' ('EGA' NAME1 'SPRW') ; SPRAY . 'SPRW' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; * - on a lu un mot clé different de ceux de l'aspersion 'SINON' ; ILECT = 1 ; 'QUIT' BLOASP2 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * - 10 - 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FIN' BLOASP2 ; * 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; * * ----- FIN de LECTURE pour L'ASPERSION * ------------------------------- * 'FINSI' ; * - 74 --- longueur caracteristique de Combustion --- 'SI' ('EGA' NAME1 'LCOMB') ; IKEY = 1 ; TCELL . 'LCOMB' . ICELL = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 75 --- Type de Combustion --- * (rdcomb : lecture des modèles de combustion) 'SI' ('EGA' NAME1 'BURNING') ; IKEY = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; ILECT NAME1 NAME2 = RDCOMB BURN NAME2 ; NBCOMB = 1 ; 'FINSI' ; * - 76 --- Recombineur --- * (rdrecomb : lecture pour les recombineurs) 'SI' ('EGA' NAME1 'RECOMBINER') ; IKEY = 1 ; RECOMB . 'NBR' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; ILECT NAME1 NAME2 = RDRECOMB RECOMB ; NBRECOMB = 1 ; 'FINSI' ; * - 77 --- Puissance Résiduelle --- * (rdpresi : lecture de la Puissance residuelle) 'SI' ('EGA' NAME1 'RESIDUAL') ; IKEY = 1 ; PRESI . 'NBR' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; ILECT NAME1 NAME2 = RDPRESI PRESI NAME2 ; NBRPRESI = 1 ; 'FINSI' ; * - 78 --- coeff pour la prediction en temps --- 'SI' ('EGA' NAME1 'PREDT') ; IKEY = 1 ; TIMECALC . 'PREDT' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 79 --- type de couplage thermique mur/compartiment --- 'SI' ('EGA' NAME1 'T_COUPLING') ; IKEY = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 80 --- relaxation por les propriétés physiques --- 'SI' ('EGA' NAME1 'RELINT') ; IKEY = 1 ; INPUT . 'RELINT' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 81 --- impression de la convergence des itérations --- 'SI' ('EGA' NAME1 'IMPR') ; IKEY = 1 ; INPUT . 'IMPR' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 82 --- temps caractéristique associé à TAGAMI --- 'SI' ('EGA' NAME1 'T_TAG') ; IKEY = 1 ; PHYSICAL . 'TTAG' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 83 --- constante associée à TAGAMI --- 'SI' ('EGA' NAME1 'C_TAG') ; IKEY = 1 ; PHYSICAL . 'CTAG' = NAME2 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 84 --- puisard en contact avec la face from d'un mur --- 'SI' ('EGA' NAME1 'FROMS') ; IKEY = 1 ; THEWAL . 'TYPEFROM'. IWALL = 'SUMP' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 85 --- puisard en contact avec la face to d'un mur --- 'SI' ('EGA' NAME1 'TOS') ; IKEY = 1 ; THEWAL . 'TYPETO' . IWALL = 'SUMP' ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 86 --- définition d'un exterieur --- 'SI' ('EGA' NAME1 'OUTDOOR') ; IKEY = 1 ; NBEXTE = NBEXTE + 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; PTF1 = XO1 YO1 ; TEXT1 .'LOCATION' . IEXTE = PTF1 ; 'FINSI' ; * - 87 --- donnée de la temperature imposée sur l'exterieur defini --- 'SI' ('EGA' NAME1 'TIMP') ; IKEY = 1 ; ITIMP = 0 ; ITIMP = 1 ; TEXT1 . 'TIMP' = 'TABLE' ; 'FINSI' ; TEXT1 . 'TIMP' . IEXTE = NAME2 ; 'FINSI' ; ITIMP = 2 ; TEXT1 . 'TVAR' = 'TABLE' ; 'FINSI' ; TEXT1 . 'TVAR' . IEXTE = NAME2 ; 'SI' ((TEXT1 .'TVAR' . IEXTE) '<EG' 0) ; 'QUIT' BLO10 ; 'FINSI' ; 'REPE' BLO87A (TEXT1 . 'TVAR' . IEXTE) ; 'ACQU' NAME1 NAME2 ; 'MESS' NAME1 ' ' NAME2 ; TEXT1 .'TPS' . IEXTE = (TEXT1 .'TPS' . IEXTE) 'ET' 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FIN' BLO87A ; 'FINSI' ; 'SI' ('EGA' NAME2 'FREE') ; ITIMP = 2 ; TEXT1 . 'TVAR' = 'TABLE' ; 'FINSI' ; 'REPE' BLO87B ; 'ACQU' NAME1 NAME2 ; 'MESS' NAME1 ' ' NAME2 ; TEXT1 .'TPS' . IEXTE = (TEXT1 .'TPS' . IEXTE) 'ET' 'SINON' ; 'SI' ('EGA' NAME1 'END') ; 'QUIT' BLO87B ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; 'FIN' BLO87B ; 'SINO' ; ITIMP = 3 ; TEXT1 . 'TFILE' = 'TABLE' ; 'FINSI' ; TEXT1 . 'TFILE' . IEXTE = NAME2 ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' ITIMP 0) ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 89 --- Modele de condensation sur la face 1 du mur courant --- 'SI' ('EGA' NAME1 'CONDEN1') ; IKEY = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 90 --- Modele de condensation sur la face 2 du mur courant --- 'SI' ('EGA' NAME1 'CONDEN2') ; IKEY = 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 111 --- OUT (puit de masse dans un compartiment) --- 'SI' ('EGA' NAME1 'OUT') ; IKEY = 1 ; BOUNDARY . 'OUT' = 'TABLE' ; 'FINSI' ; BOUNDARY . 'OUT' . ICELL = 'TABLE' ; 'FINSI' ; IOUT = IOUT + 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 112 --- ISBP (puit de masse dans un puisard) --- 'SI' ('EGA' NAME1 'ISBP') ; IKEY = 1 ; BOUNDARY . 'ISBP' = 'TABLE' ; 'FINSI' ; BOUNDARY . 'ISBP' . ICELL = 'TABLE' ; 'FINSI' ; IISBP = IISBP + 1 ; 'SINON' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 113 --- QSONIC Limitation du débit par le débit sonique --- 'SI' ('EGA' NAME1 'QSONIC') ; IKEY = 1 ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - 114 --- QLIMIT Débit seuil pour la prise en compte du débit sonique --- 'SI' ('EGA' NAME1 'QLIMIT') ; IKEY = 1 ; INPUT . 'QLIMIT' = NAME2 ; 'SINO' ; 'QUIT' BLO10 ; 'FINSI' ; 'FINSI' ; * - Sortie de boucle sur mot clé inconnu --- 'SI' ('EGA' IKEY 0) ; INPUT . 'ERROR' = 1 ; 'QUIT' blo10 ; 'FINSI' ; * - Sortie de boucle sur detection du mot clef END --- 'SI' ('EGA' ifin 1) ; 'QUIT' blo10 ; 'FINSI' ; * 'FIN' BLO10 ; * * - Gestion des erreurs * 'SI' ('EGA' (INPUT . 'ERROR') 1) ; 'MESS' TXT1 ; 'QUIT' to_input ; 'FINSI' ; * * --- lecture des fichiers de température imposée * 'MESS' 'Lecture des fichiers TIMP' ; 'REPE' TI005 NFIL1 ; INFILE = INFIL1 . &TI005 ; 'MESS' 'Lecture du fichier ' INFILE ; 'REPE' TI002 ; 'ACQU' NAME1 NAME2 ; 'MESS' NAME1 NAME2 ; 'SI' ('EGA' NAME1 'END') ; 'QUIT' TI002 ; 'FINSI' ; 'FINSI' ; TEXT1 .'TPS' . INFILE = (TEXT1 .'TPS' . INFILE) 'ET' 'FINSI' ; 'FIN' TI002 ; 'FIN' TI005 ; 'FINSI' ; * * --- lecture des fichiers de section variable * 'REPE' BLO31D NFIL1 ; INFILE = JUNCT . 'AREA' . (INFIL1 . &blo31d) ; 'MESS' 'Lecture du fichier ' INFILE ; 'REPE' BLO31C ; 'ACQU' NAME1 NAME2 ; 'MESS' NAME1 NAME2 ; 'SI' ('EGA' NAME1 'END') ; 'QUIT' BLO31C ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FIN' BLO31C ; 'FINSI' ; 'FIN' BLO31D ; 'FINSI' ; * * --- verification que la table des composants n'est pas vide et * --- composant H2O mis en dernier pour traiter les sources explicites * 'SI' ('EGA' NBC1 0) ; 'FINSI' ; 'REPE' blo20 nbc1 ; 'SI' ('EGA' TCOMPO . &blo20 'H2O') ; TCOMPO . &blo20 = TCOMPO . nbc1 ; TCOMPO . nbc1 = 'H2O' ; 'FINSI' ; 'FIN' blo20 ; INPUT . 'COMPONENT' = TCOMPO ; * * --- affectation des tables géométriques, materiels ... * INPUT . 'CELL' = TCELL ; INPUT . 'SUMP' = TSUMP ; INPUT . 'BOUNDARY' = BOUNDARY ; INPUT . 'PHYSICAL' = PHYSICAL ; INPUT . 'TIMECALC' = TIMECALC ; * *- prise en compte des données suite au décodage LJUNC = FAUX ; 'SINO' ; LJUNC = VRAI ; INPUT . 'JUNCTION' = JUNCT ; 'FINSI' ; LEXTE = FAUX ; 'SI' (NBEXTE '>EG' 1) ; LEXTE = VRAI ; NIMP1 = 0 ; NVAR1 = 0 ; NFIL1 = 0 ; TPSF0 = 1.D10 + TPSF0 * TPSF0 ; 'REPETER' BL002 NIMP1 ; INIMP2 = INIMP1 . &BL002 ; TEXT1 .'TPS' . INIMP2 = (TEXT1 .'TPS' . INIMP2) 'ET' 'SI' (NTEMP0 'NEG' NTPS0 ); 'FINSI' ; 'FIN' BL002 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'SI' (NBEXTE 'NEG' (NIMP1 + NVAR1 + NFIL1)); 'FINSI' ; INPUT . 'OUTD' = TEXT1 ; INPUT . 'OUTD' . 'NBOUT' = NBEXTE ; 'FINSI' ; 'SI' (NBWALL 'NEG' 0) ; INPUT . 'WALL' = THEWAL ; INPUT . 'MATERIAL' = TMATER ; 'FINSI' ; 'SI' (IJULC 'NEG' 0) ; INPUT . 'JULIQ' = JULCT ; 'FINSI' ; 'SI' (NBASP 'NEG' 0) ; INPUT . 'SPRAY' = SPRAY ; 'FINSI' ; 'SI' (NBCOMB 'NEG' 0) ; INPUT . 'BURN' = BURN ; 'FINSI' ; 'SI' (NBRECOMB 'NEG' 0) ; INPUT . 'RECOMB' = RECOMB ; 'FINSI' ; 'SI' (NBRPRESI 'NEG' 0) ; INPUT . 'PRESI' = PRESI ; 'FINSI' ; * *********************************************************************** * les données en temps pour le calcul *********************************************************************** * 'SINON' ; TPCAL1 = INPUT . 'TIMECALC' . 'LISTCALC' ; INPUT . 'TIMECALC' . 'STEPNUMB' = 'FINSI' ; * MESS ' ' ; MESS 'WARNING : default value for the file for saving the data' ; MESS ' this name is ' INPUT . 'TIMECALC' . 'SAVEFILE' ; MESS ' ' ; 'FINSI' ; * MAXCL1 = 0 ; 'SI' (NARG1 NEG 0) ; IND1 = INDEX (INPUT . 'CELL') ; 'REPE' BLO70 NARG1 ; NAME70 = IND1 . &BLO70 ; 'SI' (MAXCL2 > MAXCL1) ; MAXCL1 = MAXCL2 ; MOTCL1 = NAME70 ; 'FINSI' ; 'FIN' BLO70 ; 'FINSI' ; 'SI' (MAXCL1 'EGA' 0) ; 'FINSI' ; * * --- tous les compartiments ont-ils un support ? --- * --- tous les compartiments ont-ils un volume ? --- * IND2 = INDEX (INPUT . 'CELL' . MOTCL1) ; 'REPE' BLL10 MAXCL1 ; ICELL = IND2 . &BLL10 ; TXT1 = 'CHAI' TXT0 'CELL ' ICELL ' location is missing (XC or/and YC)' ; 'FINSI'; VOLU1 = 1000. ; INPUT . 'CELL' . 'VOL' . ICELL = VOLU1 ; 'FINSI' ; 'FIN' BLL10 ; * * --- les mot clefs décodés associés à une CELL le sont-ils ? --- * --- (si non, ICELL valait 0 et 0 est alors un indice de sous table) * 'REPE' BLO80 NARG1 ; NAME80 = IND1 . &BLO80 ; 'FINSI' ; 'FIN' BLO80 ; * * --- ibid pour la table BOUNDARY --- * 'SI' (NARG2 NEG 0) ; IND2 = INDEX (INPUT . 'BOUNDARY') ; 'REPE' BLO90 NARG2 ; NAME90 = IND2 . &BLO90 ; 'FINSI' ; 'FIN' BLO90 ; 'FINSI' ; * *********************************************************************** * les recombineurs *********************************************************************** 'SI' ('NEG' NBRECOMB 0) ; * * compatibilité entre le nombre de PAR annoncé et le nombre de PAR lu 'SI' ('NEG' irec RECOMB . 'NBR') ; TXT1 = 'CHAI' TXT0 IREC ' recombiners are defined whereas ' nbr ' are wanted' ; 'FINSI' ; * 'REPE' BCL1 (RECOMB . 'NBR') ; * existence des compartiments servant à définir le recombineur 'SI' ('EXIST' INPUT . 'RECOMB' . 'LOCATION' &BCL1) ; CELLR = INPUT . 'RECOMB' . 'LOCATION' . &BCL1 ; 'FINSI' ; 'SINON' ; 'FINSI' ; CELLS = INPUT . 'RECOMB' . 'TARGET' . &BCL1 ; 'FINSI' ; 'SINON' ; 'FINSI' ; * existence du type de PAR 'FINSI' ; * existence de la puissance thermique dans le cas d'un HEATER 'SI' ('EGA' TYPR 'HEATER') ; 'SI' ('NON' ('EXISTE' (INPUT . 'RECOMB' . 'PUISSANCE') &BCL1)) ; TXT1 = 'CHAI' TXT0 ' thermal power have to be defined for HEATER' '(PAR number ' &BCL1 ')' ; 'FINSI' ; 'FINSI' ; * 'FIN' BCL1 ; 'FINSI' ; *********************************************************************** * les jonctions *********************************************************************** 'SI' LJUNC ; * * --- identification du nombre max de jonctions et du nom de l'indice * --- de table associé à ce max * MAXJU1 = 0 ; 'SI' (NARG3 'NEG' 0) ; 'REPE' BLO100 NARG3 ; NAM100 = IND3 . &BLO100 ; 'SI' (MAXJU2 '>' MAXJU1) ; MAXJU1 = MAXJU2 ; MOTJU1 = NAM100 ; 'FINS' ; 'FIN' BLO100 ; 'FINS' ; 'SI' (MAXJU1 'EGA' 0) ; 'FINS' ; * * --- les mot clefs décodés associés à une JUNCTION le sont-ils ? * --- (si non, IJUNC valait 0 et 0 est alors un indice de sous table) * 'REPE' BLO110 NARG3 ; NAM110 = IND1 . &BLO110 ; 'FINS' ; 'FIN' BLO110 ; * * --- Index des noms de jonctions * * * --- A-t-on pour chaque JUNCTION LOCATION, AREA, DISC, LENGTH et Q ? * 'REPE' BL35 MAXJU1 ; IJUNC = IND1 . &BL35 ; 'FINS'; 'FINS' ; 'FINS' ; 'FINS' ; 'FINS' ; 'FIN' BL35 ; * * --- Toutes les jonctions sont-elles connectées à des cells ? * INPUT . 'JUNCTION' . 'TYPEFROM' = 'TABLE' ; INPUT . 'JUNCTION' . 'TYPETO' = 'TABLE' ; 'REPE' BL40 MAXJU1 ; IJUNC = IND1 . &BL40 ; * 'SINO' ; TESTCJ = VRAI ; FROM1 = INPUT . 'JUNCTION' . 'FROM' . IJUNC ; ILOG1 = 0 ; TESTCJ = FAUX ; INPUT . 'JUNCTION' . 'TYPEFROM' . IJUNC = 'CELL' ; 'SINO' ; ILOG1 = 1 ; TESTCJ = FAUX ; INPUT . 'JUNCTION' . 'TYPEFROM' . IJUNC = 'OUTDOOR' ; 'FINS' ; 'FINS' ; 'SI' TESTCJ ; TXT1 = 'CHAI' TXT0 'junction ' IJUNC ' bad starting cell ' FROM1 ; 'FINS' ; 'FINS' ; * 'SINO' ; TESTFJ = VRAI ; TO1 = INPUT . 'JUNCTION' . 'TO' . IJUNC ; ILOG2 = 0 ; TESTFJ = FAUX ; INPUT . 'JUNCTION' . 'TYPETO' . IJUNC = 'CELL' ; 'SINO' ; ILOG2 = 1 ; TESTFJ = FAUX ; INPUT . 'JUNCTION' . 'TYPETO' . IJUNC = 'OUTDOOR' ; 'FINS' ; 'FINS' ; 'SI' TESTFJ ; TXT1 = 'CHAI' TXT0 'junction ' IJUNC ' bad ending cell ' TO1 ; 'FINS' ; 'FINS' ; * * On exclue le cas de la jonction entre deux OUTDOORs 'SI' ('NEG' (ILOG1*ILOG2) 0) ; TXT1 = 'CHAI' TXT0 'wall ' IJUNC ' is between two OUTDOORS' ; 'FINS' ; * * On permutte FROM et TO si l'OUTDOOR est du coté FROM 'SI' ('EGA' ILOG1 1) ; INPUT . 'JUNCTION' . 'FROM' . IJUNC = TO1 ; INPUT . 'JUNCTION' . 'TYPEFROM' . IJUNC = 'CELL' ; INPUT . 'JUNCTION' . 'TO' . IJUNC = FROM1 ; INPUT . 'JUNCTION' . 'TYPETO' . IJUNC = 'OUTDOOR' ; TXT1 = 'CHAI' TXT0 'junction ' IJUNC ': direction is changed (OUTDOOR at the TO side)' ; 'MESS' TXT1 ; 'FINS' ; 'FIN' BL40 ; * 'FINS' ; * *********************************************************************** * les jonctions liquides *********************************************************************** * 'SI' (IJULC NEG 0) ; * * --- toutes les juliq sont-elles connectées à des cells ? --- * IND1 = INDEX (INPUT . 'JULIQ' . 'FROM') ; REPETER BLO120 IJULC ; IJUL1 = IND1 . &BLO120 ; FROM1 = INPUT . 'JULIQ' . 'FROM' . IJUL1 ; TO1 = INPUT . 'JULIQ' . 'TO' . IJUL1 ; TXT1 = 'CHAI' TXT0 'liquid junction ' IJUL1 ' bad first cell ' FROM1 ; 'FINSI' ; TXT1 = 'CHAI' TXT0 'liquid junction ' IJUL1 ' bad last cell ' TO1 ; 'FINSI' ; * * --- création des points centres des jonctions liquides --- --- XJL1 = (XC1 + XC2) / 2. ; YJL1 = (YC1 + YC2) / 2. ; PTJL1 = XJL1 YJL1 ; INPUT . 'JULIQ' . 'LOCATION' . IJUL1 = PTJL1 ; FIN BLO120 ; 'FINSI' ; * *********************************************************************** * Les murs *********************************************************************** * 'SI' (NBWALL 'NEG' 0) ; 'SI' LEXTE ; 'FINS' ; * * --- tous les murs sont-ils connectés à des cells ? --- * * On identifie les cotés OUTDOOR en mettant TYPEFROM/TYPETO à OUTDOOR * (sans rien dire on corrige l'erreur de data FROMS/TOS suivi d'un OUTDOOR) * 'REPE' BL50 NBWALL ; IND50 = IND1 . &BL50 ; * 'SINO' ; TESTCF = VRAI ; ICELLF = INPUT . 'WALL' . 'FROM' . IND50 ; ILOG1 = 0 ; TESTCF = FAUX ; 'SINO' ; ILOG1 = 1 ; TESTCF = FAUX ; INPUT . 'WALL' . 'TYPEFROM' . IND50 = 'OUTDOOR' ; 'FINS' ; 'FINS' ; 'SI' TESTCF ; TXT1 = 'CHAI' TXT0 'wall ' IND50 ' bad starting cell ' ICELLF ; 'FINS' ; 'FINS' ; * 'SINO' ; TESTCT = VRAI ; ICELLT = INPUT . 'WALL' . 'TO' . IND50 ; ILOG2 = 0 ; TESTCT = FAUX ; 'SINON' ; ILOG2 = 1 ; TESTCT = FAUX ; INPUT . 'WALL' . 'TYPETO' . IND50 = 'OUTDOOR' ; 'FINS' ; 'FINS' ; 'SI' TESTCT ; TXT1 = 'CHAI' TXT0 'wall ' IND50 ' bad ending cell ' ICELLT ; 'FINS' ; 'FINS' ; * * On exclue le cas ou le mur est entre deux OUTDOORs 'SI' ('NEG' (ILOG1*ILOG2) 0) ; TXT1 = 'CHAI' TXT0 'wall ' IND50 ' is between two OUTDOORS' ; 'FINS' ; 'FIN' BL50 ; * * --- Remplissage de la table INPUT . 'WALL' . 'LOCATION' --- * --- en fonction de l'existence de jonctions ayant les --- * --- mêmes connectivités que les murs. --- * * --- balayage des murs --- IND1 = INDEX (INPUT . 'WALL' . 'LOCATION') ; REPETER BL60 NBWALL ; IND60 = IND1 . &BL60 ; ICELLF = INPUT . 'WALL' . 'FROM' . IND60 ; TYPEF = INPUT . 'WALL' . 'TYPEFROM' . IND60 ; ICELLT = INPUT . 'WALL' . 'TO' . IND60 ; TYPET = INPUT . 'WALL' . 'TYPETO' . IND60 ; LOGI1 = ('EGA' TYPEF 'OUTDOOR') 'OU' ('EGA' TYPET 'OUTDOOR') ; * --- 'SI' le mur est en contact avec l'extérieur on créé un point --- 'SI' LOGI1 ; 'SI' ('NEG' TYPET 'OUTDOOR') ; VOLU1 = INPUT . 'CELL' . 'VOL' . ICELLT ; XC1 = XC1 + VOLU1 ; YC1 = YC1 + VOLU1 ; PTC1 = XC1 YC1 ; INPUT . 'WALL' . 'LOCATION' . IND60 = PTC1 ; 'FINSI' ; 'SI' ('NEG' TYPEF 'OUTDOOR') ; VOLU1 = INPUT . 'CELL' . 'VOL' . ICELLF ; XC1 = XC1 + VOLU1 ; YC1 = YC1 + VOLU1 ; PTC1 = XC1 YC1 ; INPUT . 'WALL' . 'LOCATION' . IND60 = PTC1 ; 'FINSI' ; * --- 'SI' le mur est entre deux compartiments --- 'SINON' ; XW1 = (XC1 + XC2) / 2. ; YW1 = (YC1 + YC2) / 2. ; PTW1 = XW1 YW1 ; INPUT . 'WALL' . 'LOCATION' . IND60 = PTW1 ; 'FINSI' ; FIN BL60 ; * * --- les mot clefs décodés associés à un WALL le sont-ils ? --- * --- (si non, IWALL valait 0 et 0 est alors un indice de sous table) * IND1 = INDEX (INPUT . 'WALL') ; REPETER BLO130 NARG4 ; 'FINSI' ; FIN BLO130 ; * * --- Test de la 'TABLE' des matériaux --- * 'SI' ('EGA' NBMAT1 0) ; 'FINSI' ; IND1 = INDEX (INPUT . 'MATERIAL') ; REPETER BL71 NBMAT1 ; IND71 = IND1 . &BL71 ; 'SI' ('EGA' (INPUT . 'MATERIAL' . IND71 . 'TYPEW') 'NUL') ; 'FINSI' ; 'SI' ('EGA' (INPUT . 'MATERIAL' . IND71 . 'CPW') 0.0) ; 'FINSI' ; 'SI' ('EGA' (INPUT . 'MATERIAL' . IND71 . 'LBDW') 0.0) ; 'FINSI' ; 'SI' ('EGA' (INPUT . 'MATERIAL' . IND71 . 'RHOW') 0.0) ; 'FINSI' ; FIN BL71 ; * * --- Test des données associées aux couches d'un mur --- * IND1 = INDEX (INPUT . 'WALL' . 'LOCATION') ; REPETER BL70 NBWALL ; IND70 = IND1 . &BL70 ; NBLAY1 = INPUT . 'WALL' . 'NLAYER' . IND70 ; 'SI' (NBLAY1 'EGA' 0) ; 'FINSI' ; 'SI' (NBLAY2 NEG NBLAY1) ; TXT1 = 'CHAI' TXT0 'WALL ' IND70 ' : material type for a layer is missing' ; 'FINSI' ; 'SI' (NBLAY2 NEG NBLAY1) ; TXT1 = 'CHAI' TXT0 'WALL ' IND70 ' : number of nodes for a layer is missing' ; 'FINSI' ; 'SI' (NBLAY2 NEG NBLAY1) ; TXT1 = 'CHAI' TXT0 'WALL ' IND70 ' : thickness of a layer is missing' ; 'FINSI' ; * * --- Test de l'existence du MATERIAL associé à chaque couche --- * IND2 = INDEX (INPUT . 'WALL' . 'MATERIAL' . IND70) ; REPETER BL72 NBLAY1 ; IND72 = IND2 . &BL72 ; 'SI' (NEG IND72 &BL72) ; 'FINSI' ; NOMAT2 = INPUT . 'WALL' . 'MATERIAL' . IND70 . IND72 ; TXT1 = 'CHAI' TXT0 'WALL ' IND70 ' LAYER ' IND72 ' unknown material' ; 'FINSI' ; FIN BL72 ; * FIN BL70 ; * 'FINSI' ; * *********************************************************************** * Verification des options *********************************************************************** **************************************************************** * COUP1 = INPUT . 'T_COUPLING' ; TEST1 = ('EGA' COUP1 'OFF') 'OU' ('EGA' COUP1 'ON' ) ; 'SI' ('EGA' TEST1 FAUX) ; TXT1 = 'CHAI' TXT0 'bad value for the T_COUPLING index ' '(OFF or ON instead of ' COUP1 ')' ; 'SINO' ; 'MESS' ' ' ; 'FINSI' ; 'FINSI' ; * COND1 = PHYSICAL . 'CONDENSE' ; TEST1 = ('EGA' COND1 'UCHIDA') 'OU' ('EGA' COND1 'TAGAMI') 'OU' ('EGA' COND1 'CHILTON') ; 'SI' ('EGA' TEST1 FAUX) ; TXT1 = 'CHAI' TXT0 'bad value for the CONDENSE index ' '(UCHIDA, TAGAMI or CHILTON instead of ' COND1 ')' ; 'SINO' ; 'FINSI' ; 'FINSI' ; * NAME2 = INPUT . 'INJECTION' ; TEST1 = ('EGA' (INPUT . 'INJECTION') 'CELL') 'OU' ('EGA' (INPUT . 'INJECTION') 'EBUL') 'OU' ('EGA' (INPUT . 'INJECTION') 'SATU') ; 'SI' ('EGA' TEST1 FAUX) ; TXT1 = 'CHAI' TXT0 'bad value for the INJECTION index ' '(CELL or EBUL or SATU instead of ' (INPUT . 'INJECTION') ')' ; 'FINSI' ; 'FINSI' ; * NAME2 = INPUT . 'EXCHANGER' ; TEST1 = ('EGA' (INPUT . 'EXCHANGER') 'CC') ; 'SI' ('EGA' TEST1 FAUX) ; TXT1 = 'CHAI' TXT0 'bad value for the EXCHANGER index ' '(CC instead of ' NAME2 ')' ; 'FINSI' ; 'FINSI' ; * 'REPE' BLA11 2 ; TEST1 = FAUX ; ESPECE2 = INPUT . 'COMPONENT' . &BLA12 ; 'SI' ('EGA' ESPECE2 ESPECE1) ; TEST1 = VRAI ; 'FINSI' ; 'FIN' BLA12; 'SI' ('EGA' TEST1 FAUX) ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FIN' BLA11 ; * *- Débit sonique * QSONIC = INPUT . 'QSONIC' ; TEST1 = ('EGA' QSONIC 'OFF') 'OU' ('EGA' QSONIC 'ON') ; 'SI' ('EGA' TEST1 FAUX) ; 'SINO' ; 'MESS' ' ' ; 'FINSI' ; 'FINSI' ; * *********************************************************************** *********************************************************************** * Valeurs par défaut *********************************************************************** *********************************************************************** * * INPUT = TO_DEFAU INPUT ; * * INPUT = TO_VERIF INPUT ; * *********************************************************************** * Structures de données pour les sauvegardes et le post-traitement *********************************************************************** * TIT = INPUT . 'TIMECALC' ; * *- Suppression des doublons et temps croissants * * *- Gestion des temps de sauvegarde * TIT . 'TIMESAVE' TIT . 'RANGSAVE' = TO_UTIL2 TIT . 'LISTCALC' TIT . 'LISTSAVE' ; 'SINO' ; TIT . 'TIMESAVE' TIT . 'RANGSAVE' = TO_UTILE (TIT . 'LISTCALC') 1 (TIT . 'FREQSAVE') ; 'FINSI' ; * 'SI' ('NEG' ILAST TIT . 'STEPNUMB') ; 'FINSI' ; * 'SI' ('NEG' IPREM 1) ; 'FINSI' ; * *- Gestion du post-traitement (sous-ensemble des temps de sauvegarde) * TIT . 'TIMEPLOT' TIT . 'RANGPLOT' = TO_UTILE (TIT . 'TIMESAVE') 1 (TIT . 'FREQPLOT') ; * 'FINP' INPUT ; *$$$$ TO_PRINT 'DEBP' TO_PRINT ; * ERROR = 0 ; * *********************************************************************** * 06/00 : prise en compte du cas mono-compartiment (i.e. sans jonction) *********************************************************************** * 'SI' ('EXISTE' SET 'SOUSTYPE') ; 'SI' ('NEG' (SET . 'SOUSTYPE') 'SET') ; 'MESS' 'TO_PRINT procedure, SET table : bad subtype'; ERROR = 1 ; QUITTER TO_PRINT ; 'FINSI' ; 'SINON' ; 'MESS' 'TO_PRINT procedure, SET table : subtype is missing'; ERROR = 1 ; QUITTER TO_PRINT ; 'FINSI' ; * 'SI' ('EXISTE' INPUT 'SOUSTYPE') ; 'SI' (NEG (INPUT . 'SOUSTYPE') 'INPUT') ; 'MESS' 'TO_PRINT procedure, INPUT table : bad subtype'; ERROR = 1 ; QUITTER TO_PRINT ; 'FINSI' ; 'SINON' ; 'MESS' 'TO_PRINT procedure, INPUT table : subtype is missing'; ERROR = 1 ; QUITTER TO_PRINT ; 'FINSI' ; * TIME1 = SET . 'FIELDS' . 'TIME' . PTIME ; 'SINO' ; 'MESS' 'TO_PRINT procedure, bad PTIME argument'; ERROR = 1 ; QUITTER TO_PRINT ; 'FINSI' ; * * LJUNC = 'EXISTE' INPUT 'JUNCTION' ; 'SI' LJUNC ; 'FINSI' ; * *********************************************************************** * 'MESS' ' ' ; 'MESS' ' ' ; 'MESS' ' ' ; * * *********************************************************************** *********************************************************************** * * Printing of the geometry data * *********************************************************************** *********************************************************************** * * 'SI' (('EGA' PWHICH 'ALL') OU ('EGA' PWHICH 'GEOMETRY')) ; * * --- informations about cell s geometry --- * 'MESS' ' ' ; 'MESS' 'Description of the cells :' ; 'MESS' ' ' ; 'MESS' '--------------------------------------------------------------------'; 'MESS' '| cell | abscissa | ordinate | volume |'; 'MESS' '--------------------------------------------------------------------'; * NBCEL1 = SET . 'GEOINF' . 'NBCELL' ; I10 = 0 ; 'REPETER' BLO10 NBCEL1 ; I10 = I10 + 1 ; ICEL1 = IDC1 . I10 ; PTCEL1 = INPUT . 'CELL' . 'LOCATION' . ICEL1 ; 'MESS' '| ' ICEL1 ' | ' XC1 '| ' YC1 '| ' VOLU1 '|'; FIN BLO10 ; 'MESS' '--------------------------------------------------------------------'; * * --- informations about junction s geometry --- * 'SI' LJUNC ; 'MESS' ' ' ; 'MESS' ' ' ; 'MESS' 'Description of the junctions :' ; 'MESS' ' ' ; 'MESS' '--------------------------------------------------------------------'; 'MESS' '| junction | abscissa | ordinate | from | to |'; 'MESS' '--------------------------------------------------------------------'; * * I20 = 0 ; 'REPETER' BLO20 NBJUN1 ; I20 = I20 + 1 ; IJUN1 = IDJ1 . I20 ; PTJUN1 = INPUT . 'JUNCTION' . 'LOCATION' . IJUN1 ; FROM1 = INPUT . 'JUNCTION'. 'FROM' . IJUN1 ; TO1 = INPUT . 'JUNCTION'. 'TO' . IJUN1 ; 'MESS' '| ' IJUN1 ' | ' XJ1 '| ' YJ1 '| ' FROM1 '| ' TO1 '|'; FIN BLO20 ; 'MESS' '--------------------------------------------------------------------'; * 'MESS' ' ' ; 'MESS' '--------------------------------------------------------------------'; 'MESS' '| junction | area | discharge | length |'; 'MESS' '--------------------------------------------------------------------'; * S1 = set . 'DATA' . 'AREA' . 0 ; 'SINO' ; S1 = 0. * SET . 'DATA' . 'LENGTH' ; 'FINSI' ; da = set . 'DATA' . 'AREA' ; 'REPE' blo25 (da . 'NBEV') ; PTJ = da . &blo25 . 'LOCATION' ; S1 = S1 'ET' 'FIN' blo25 ; 'FINSI' ; * I30 = 0 ; 'REPETER' BLO30 NBJUN1 ; I30 = I30 + 1 ; IJUN1 = IDJ1 . I30 ; PTJUN1 = INPUT . 'JUNCTION' . 'LOCATION' . IJUN1 ; 'MESS' '| ' IJUN1 ' | ' AREA1 '| ' DISC1 '|' LENGTH1 '|'; FIN BLO30 ; 'MESS' '--------------------------------------------------------------------'; * 'FINSI' ; * 'FINSI' ; * * *********************************************************************** *********************************************************************** * * Printing of the physical properties * *********************************************************************** *********************************************************************** * * 'SI' ((EGA PWHICH 'ALL') OU (EGA PWHICH 'PHYSICAL')) ; * * 'MESS' ' ' ; 'MESS' ' ' ; 'MESS' 'Physical properties :' ; 'MESS' ' ' ; 'MESS' '--------------------------------------------------------------------'; 'MESS' '| component | molar weight | specific heat at constant V |'; 'MESS' '--------------------------------------------------------------------'; * I40 = 0 ; 'REPETER' BLO40 NBCOM1 ; I40 = I40 + 1 ; NAMC1 = SET . 'COMPONENT' . I40 ; NAMW1 = CHAINE 'W' NAMC1 ; MW1 = SET . 'PHYSICAL' . NAMW1 ; 'SI' (EGA NAMC1 'VAP') ; 'MESS' '| ' NAMC1 ' | ' MW1 ' | TABLES |'; 'SINON' ; NAMCV1 = CHAINE 'CV' NAMC1 ; 'SI' ('EGA' NAMC1 'H2O') ; CV1 = 0. ; 'SINO' ; CV1 = SET . 'PHYSICAL' . NAMCV1 ; 'FINSI' ; 'MESS' '| ' NAMC1 ' | ' MW1 ' | ' CV1 ' |'; 'FINSI' ; FIN BLO40 ; 'MESS' '--------------------------------------------------------------------'; * GRAV1 = SET . 'PHYSICAL' . GRAVITY ; * 'MESS' ' ' ; 'MESS' '--------------------------------------------------------------------'; 'MESS' '| acceleration due to gravity | ' GRAV1 ' |'; 'MESS' '--------------------------------------------------------------------'; * 'FINSI' ; * * *********************************************************************** *********************************************************************** * * Printing of the data for time calculation * *********************************************************************** *********************************************************************** * * 'SI' (('EGA' PWHICH 'ALL') 'OU' ('EGA' PWHICH 'CALCUL')) ; * 'MESS' ' ' ; 'MESS' ' ' ; 'MESS' 'Data for time calculation :' ; 'MESS' ' ' ; 'MESS' '---------------------------------------------------'; * *TSTEP1 = SET . 'TIMECALC' . 'TIMESTEP' ; NSTEP1 = SET . 'TIMECALC' . 'STEPNUMB' ; ERRTO1 = SET . 'TIMECALC' . 'ERRTOL' ; * *'MESS' '| time step | ' TSTEP1 ' |'; 'MESS' '| number of time steps | ' NSTEP1 ' |'; 'MESS' '| relative error tolerance | ' ERRTO1 ' |'; 'MESS' '---------------------------------------------------'; * 'FINSI' ; * * *********************************************************************** *********************************************************************** * * Printing of the fields * *********************************************************************** *********************************************************************** * * 'SI' ((EGA PWHICH 'ALL') OU (EGA PWHICH 'FIELD')) ; * 'MESS' ' ' ; 'MESS' ' ' ; 'MESS' 'The fields : '; 'MESS' ' ' ; * 'MESS' ' Time of the calculation : ' TIME1 ; 'MESS' ' ' ; 'MESS' '--------------------------------------------------------------------'; 'MESS' '| cell | total pressure | gas temperature | density of gas |'; 'MESS' '--------------------------------------------------------------------'; * NBCEL1 = SET . 'GEOINF' . 'NBCELL' ; I50 = 0 ; 'REPETER' BLO50 NBCEL1 ; I50 = I50 + 1 ; ICEL1 = IDC1 . I50 ; PTCEL1 = INPUT . 'CELL' . 'LOCATION' . ICEL1 ; 'PT' PTCEL1 ; 'TGAS' PTCEL1 ; 'RGAS' PTCEL1 ; 'MESS' '|' ICEL1 '| ' PG1 '| ' TGAS1 ' | ' RGAS1 '|'; FIN BLO50 ; 'MESS' '--------------------------------------------------------------------'; * * 'MESS' ' ' ; 'MESS' ' Time of the calculation : ' TIME1 ; 'MESS' ' ' ; 'MESS' '--------------------------------------------------------------------'; 'MESS' '| cell | internal energy | specific enthalpy |'; 'MESS' '--------------------------------------------------------------------'; * I60 = 0 ; 'REPETER' BLO60 NBCEL1 ; I60 = I60 + 1 ; ICEL1 = IDC1 . I60 ; PTCEL1 = INPUT . 'CELL' . 'LOCATION' . ICEL1 ; 'UGAS' PTCEL1 ; 'HGAS' PTCEL1 ; 'MESS' '|' ICEL1 '| ' UGAS1 ' | ' HGAS1 ' |'; FIN BLO60 ; 'MESS' '--------------------------------------------------------------------'; * * --- the densities and partial pressures of the components --- * 'MESS' ' ' ; 'MESS' ' Time of the calculation : ' TIME1 ; 'MESS' ' ' ; * I70 = 0 ; 'REPETER' BLO70 NBCOM1 ; I70 = I70 + 1 ; NAMC1 = SET . 'COMPONENT' . I70 ; 'MESS' '-----------------------------------'; 'MESS' '| cell | density of ' NAMC1 ' |'; 'MESS' '-----------------------------------'; * NAMR1 = CHAINE 'R' NAMC1 ; I71 = 0 ; 'REPETER' BLO71 NBCEL1 ; I71 = I71 + 1 ; ICEL1 = IDC1 . I71 ; PTCEL1 = INPUT . 'CELL' . 'LOCATION' . ICEL1 ; NAMR1 PTCEL1 ; 'MESS' '|' ICEL1 '| ' RGAS1 '|' ; FIN BLO71 ; 'MESS' '------------------------------------'; * FIN BLO70 ; * * --- the mass flow rates --- * * 'SI' LJUNC ; 'MESS' ' ' ; 'MESS' ' Time of the calculation : ' TIME1 ; 'MESS' ' ' ; 'MESS' '-----------------------------------------------'; 'MESS' '| junction | mass flow rate of the mixture |' ; 'MESS' '-----------------------------------------------'; * * I80 = 0 ; 'REPETER' BLO80 NBJUN1 ; I80 = I80 + 1 ; IJUN1 = IDJ1 . I80 ; PTJUN1 = INPUT . 'JUNCTION' . 'LOCATION' . IJUN1 ; 'Q' PTJUN1 ; 'MESS' '| ' IJUN1 ' | ' Q1 ' |' ; FIN BLO80 ; 'MESS' '-----------------------------------------------'; 'FINSI' ; * 'FINSI' ; * * *********************************************************************** *********************************************************************** * * Printing of the boundary conditions * *********************************************************************** *********************************************************************** * * 'SI' ((EGA PWHICH 'ALL') OU (EGA PWHICH 'BOUNDARY')) ; 'SI' ('EXISTE' SET 'BOUNDARY') ; * NBCEL1 = SET . 'GEOINF' . 'NBCELL' ; * * --- informations about the boundary conditions for pressure --- * 'SI' ('EXISTE' (SET . 'BOUNDARY') 'PT') ; 'MESS' ' ' ; 'MESS' ' ' ; 'MESS' 'Boundary conditions for the total pressure :' ; 'MESS' ' ' ; 'MESS' '-------------------------------------------'; 'MESS' '| cell | total pressure imposed |' ; 'MESS' '-------------------------------------------'; I90 = 0 ; 'REPETER' BLO90 NBPT1 ; I90 = I90 + 1 ; I91 = 0 ; 'REPETER' BLO91 NBCEL1 ; I91 = I91 + 1 ; ICEL1 = IDC1 . I91 ; PTCEL1 = INPUT . 'CELL' . 'LOCATION' . ICEL1 ; 'SI' (EGA PT1 PTCEL1) ; 'MESS' '|' ICEL1 '| ' BPT1 ' |' ; QUITTER BLO91 ; 'FINSI' ; FIN BLO91 ; FIN BLO90 ; 'MESS' '-------------------------------------------'; 'FINSI' ; * * --- informations about the injections of gases --- * I100 = 0 ; 'REPETER' BLO100 NBCOM1 ; I100 = I100 + 1 ; NAMC1 = SET . 'COMPONENT' . I100 ; NAMQ1 = CHAINE 'Q' NAMC1 ; 'SI' ('EXISTE' (SET . 'BOUNDARY') NAMQ1) ; I110 = 0 ; 'REPETER' BLO110 NDIM1 ; I110 = I110 + 1 ; IND1 = IDQ1 . I110 ; PT1 = SET . 'BOUNDARY' . NAMQ1 . IND1 . 'CELL' ; ICEL2 = 0 ; I111 = 0 ; 'REPETER' BLO111 NBCEL1 ; I111 = I111 + 1 ; ICEL1 = IDC1 . I111 ; PTCEL1 = INPUT . 'CELL' . 'LOCATION' . ICEL1 ; 'SI' (EGA PT1 PTCEL1) ; ICEL2 = ICEL1 ; QUITTER BLO111 ; 'FINSI' ; FIN BLO111 ; * MTYPE1 = SET . 'BOUNDARY' . NAMQ1 . IND1 . 'INTER' ; * LTIM2 = (SET . 'BOUNDARY' . NAMQ1 . IND1 . 'TIME') ; * NDIM2 = DIME LTIM2 ; * LQ2 = (SET . 'BOUNDARY' . NAMQ1 . IND1 . 'Q') ; * LH2 = (SET . 'BOUNDARY' . NAMQ1 . IND1 . 'H') ; *'MESS' ' ' ; *'MESS' 'Injection of ' NAMC1 ' in cell ' ICEL2 ' :' ; *'MESS' ' ' ; *'MESS' *'--------------------------------------------------------------------'; *'MESS' *'| time | total injected mass | total injected energy |'; *'MESS' *'--------------------------------------------------------------------'; * I112 = 0 ; * 'REPETER' BLO112 NDIM2 ; * I112 = I112 + 1 ; * XTIM2 = EXTR LTIM2 I112 ; * XQ2 = EXTR LQ2 I112 ; * XH2 = EXTR LH2 I112 ; *'MESS' '|' XTIM2 '| ' XQ2 ' | ' XH2 ' |'; * FIN BLO112 ; * FIN BLO110 ; 'FINSI' ; FIN BLO100 ; * 'FINSI' ; 'FINSI' ; * * FINPROC ERROR ; *$$$$ TO_UPLIN 'DEBP' TO_UPLIN SET*'TABLE' ; * * SET . 'UPLIN' = 'TABLE' ; TSC = SET . 'COMPONENT' ; TSD = SET . 'DATA' ; TSF = SET . 'FIELDS' ; TSG = SET . 'GEOINF' ; TSI = SET . 'INCO' ; TSP = SET . 'PHYSICAL' ; * RELAX1 = SET . 'RELAX' ; RELAX4 = SET . 'RELINT' ; 'SI' LJUNC ; NBJUNC = TSG . 'NBJUNC' ; 'FINSI' ; VOLU1 = TSD . 'VOL' ; DT1 = TSI . 'DT' ; * *- Mise a jour de ROR, ROCV et HGAS * ROLS2 = 0. * PTOT2 ; ROR2 = 0. * PTOT2 ; ROCV2 = 0. * PTOT2 ; 'REPE' BLO10 NBCOMP1 ; NAMC1 = TSC . &BLO10 ; NAMR1 = 'CHAINE' 'R' NAMC1 ; NAMR2 = 'CHAINE' 'R_' NAMC1 ; NAMV1 = 'CHAINE' 'CV' NAMC1 ; 'SI' ('EGA' NAMC1 'H2O') ; ROLS2 = (1. - XV1) * RO1 ; RO1 = XV1 * RO1 ; ROR1 = RO1 * (TSP . NAMR2) * ZVAP1 ; 'SINO' ; ROR1 = RO1 * (TSP . NAMR2) ; CV1 = TSP . NAMV1 ; 'FINS' ; ROR2 = ROR2 + ROR1 ; ROCV2 = ROCV2 + (CV1 * RO1) ; 'FIN' BLO10 ; HGAS2 = UGAS2 / VOLU1 + PTOT2 / (RGAS2 - ROLS2) ; * *- Equation de conservation de la masse pour le constituant NAMR1 * TSI . 'XUNRGAS1' = RGAS2 ** -1.0 ; * *- Equation sur HGAS * TSUR = RHS1 ; * *- Equation de quantité de mouvement : * 1) calcul des coéfficients devant les monomes de l'équation de QDM * 2) terme explicite issu de la linéarisation de (|Q|*Q)k+1 * (|Q|*Q linéarisé par 2*|Qk|*Qk+1 - |Qk|*Qk) * 'SI' LJUNC ; TO_DISK SET ; TSUR = (TSI . 'QMDIA2') * (TSI . 'QCEL') + TSUR ; 'FINSI' ; * *- Equation d'état calorifique du mélange gazeux TGAS * TSI . 'XVROCV1' = 1.D0 * VOLU1 * ROCV2 ; * *- Equation d'état thermique pour le mélange gazeux * TSI . 'XROR1' = -1.0D0 * ROR2 ; * *- Equation de conservation de l'énergie interne du mélange gazeux * 1) coefficient multiplicateur du débit * 2) linéarisation de Qh * TSI . 'XHGAS1' = HGAS2 ; 'SI' LJUNC ; 'REPETER' BLO92 NBJUNC ; UGASQ1 = UGASQ1 'FIN' BLO92 ; TSUR = TSUR + UGASQ1 ; 'FINSI' ; * *--------------------------------------------------------------- * Gestion liée à l'eau (liquide, vapeur et changement de phase) *--------------------------------------------------------------- * * RH2O1 : masse volumique de l'eau (liquide + vapeur) * * INI1 = 0 ; * LAYERC1 ---> CHILTON TSAT10 XV30 ALAT00 ALAT30 ECHAN10 = 'VARI' 'TOCOND ' SET (TSG.'LAYERC1') 'CHILTON ' ; 'SI' ('EGA' INI1 0); ECHAN1 = ECHAN10 ; ALAT3 = ALAT30 ; ALAT0 = ALAT00 ; XV3 = XV30 ; TSAT1 = TSAT10 ; INI1 = 1 ; 'SINON'; ECHAN1 = ECHAN1 'ET' ECHAN10 ; ALAT3 = ALAT3 'ET' ALAT30 ; ALAT0 = ALAT0 'ET' ALAT00 ; 'FINSI'; 'FINSI'; 'SI' ('EXISTE' TSG 'LAYERC2') ; * LAYERC2 ---> TAGAMI TSAT10 XV30 ALAT00 ALAT30 ECHAN10 = 'VARI' 'TOCOND ' SET (TSG.'LAYERC2') 'TAGAMI ' ; 'SI' ('EGA' INI1 0); ECHAN1 = ECHAN10 ; ALAT3 = ALAT30 ; ALAT0 = ALAT00 ; XV3 = XV30 ; TSAT1 = TSAT10 ; INI1 = 1 ; 'SINON'; ECHAN1 = ECHAN1 'ET' ECHAN10 ; ALAT3 = ALAT3 'ET' ALAT30 ; ALAT0 = ALAT0 'ET' ALAT00 ; 'FINSI'; 'FINSI'; 'SI' ('EXISTE' TSG 'LAYERC3') ; * LAYERC3 ---> UCHIDA TSAT10 XV30 ALAT00 ALAT30 ECHAN10 = 'VARI' 'TOCOND ' SET (TSG.'LAYERC3') 'UCHIDA ' ; 'SI' ('EGA' INI1 0); ECHAN1 = ECHAN10 ; ALAT3 = ALAT30 ; ALAT0 = ALAT00 ; XV3 = XV30 ; TSAT1 = TSAT10 ; INI1 = 1 ; 'SINON'; ECHAN1 = ECHAN1 'ET' ECHAN10 ; ALAT3 = ALAT3 'ET' ALAT30 ; ALAT0 = ALAT0 'ET' ALAT00 ; 'FINSI'; 'FINSI'; * * Modif à activer pour test afin de ne pas toucher a ECHA * Mettre en commentaire la maj de TSI . 'ECHA' * ECHAN1 = 'EXCO' 'ECHA' (TSI . 'ECHA') 'SCAL' 'NATURE' 'DISCRET' ; TSI . 'ALAT' = 'EXCO' 'SCAL' ALAT3 'ALAT' 'NATURE' 'DISCRET' * *- Equation sur le flux de chaleur * TSI . 'XECHAN1' = -1.D0 * ECHAN1 ; TSI . 'XECHAN2' = ECHAN1 ; * *- Equation de conservation de la masse d'eau (liquide+vapeur) * TSI . 'XALAT1' = ALAT3 ; * *- Equation de conservation de l'énergie * AREAW1 = -1.D0 * (TSD . 'AREAC') ; TSI . 'XL0DC1' = AREAW1 + (ALAT0 * ALAT3) ; * *-------------------------------------- eau liquide dans les puisards * *- Equation de conservation de la masse d'eau des puisards * TSI . 'YALAT1' = -1.D0 * ALAT3 ; * *- Equation de conservation de l'énergie des puisards * TSI . 'YL0DC1' = -1.D0 * ALAT0 * ALAT3 ; 'SINON' ; * utilisation de tocond sans la condensation 'FINSI' ; * * * Pour P, U et M connus, calcul par une méthode de Newton de h assurant * HLS(P,T(P,h)) - U/M - P/Rho(P,h) = 0 * (et des variables auxiliaires T, Rho et V) VLIQ1 = MLIQ1 / ROLIQ1 ; * dh = 10. ; ddh = 2. * dh ; dt = 0.001 ; ddt = 2. * dt ; dx = 0. ; 'REPE' blo 3 ; hp = hliq1 + dh ; hm = hliq1 - dh ; tp = tliq1 + dt ; tm = tliq1 - dt ; / ddt ; / ddh ; / ddh ; dfdx = dhdt * dtdx + (ptot2 * drdx / roliq1 / roliq1) ; - (uliq1 / mliq1) - (ptot2 / roliq1) ; dx = fx / dfdx * -1 ; HLIQ1 = HLIQ1 + dx ; VLIQ1 = MLIQ1 / ROLIQ1 ; 'FIN' blo ; * mess 'maxi dx ' ('MAXI' dx) ; * *- Masse volumique de l'eau des puisards * (coefficient pour équation de l'énergie des puisards) TSI . 'XROLIQ1' = ROLIQ1 ; * *- Volume liquide * * HLIQ1 = (('ABS' HLIQ1) + HLIQ1) / 2.0 ; *'LIST' hliq1 ; TSI . 'HLIQ' = HLIQ2 ; TSUR = TSUR + HLIQ2 ; * *- Température de l'eau des puisards * FLS1 = 0 ; * Changement de spg pour TLIQ (CELL ---> LAYERS) NBCELL = TSG . 'NBCELL' ; 'REPE' BLO300 NBCELL ; 'REPE' BLO310 NBLAYS ; 'SI' ('EGA' FLS1 1) ; TSLIQ2 = TSLIQ2 'ET' CLW2 ; 'SINON' ; FLS1 = 1; TSLIQ2 = CLW2 ; 'FINSI' ; 'FINSI' ; 'FIN' BLO310 ; 'FIN' BLO300 ; TSUR = TSUR + CHCLS1 ; 'FINSI' ; * *- Débit d'évaporation de l'eau des puisards * 1) calcul * 2) sauvegarde dans TSI.'MEVALOC' et TSI.'UEVALOC' des transferts * de masse et d'énergie calculé sur le pas de temps DT1 * 3) prise en compte "implicite" à travers le point fixe * * PVAP2 : pression partielle de vapeur * XCOEF1 : champ non nul pour TLIQ1 > TSAT1 * ASUMP1 : surfaces des puisards * PSATL1 : pression de saturation à la température du liquide * DE1 : débit d'évaporation * TAU1 : constante de temps (potar JERICHO) * CPLIQ1 : chaleur spécifique à pression constante de l'eau liquide * TEBU2 : température d'ébullition * CHAL2 : chaleur latente * DE2 : débit d'ébullition XCOEF1 = (TLIQ1 - TSAT1) 'MASQUE' 'SUPERIEUR' 0.D0 ; ASUMP1 = TSD . 'ASUMP' ; PRES1 = ('ABS' (PSATL1 - PVAP2)) + (PSATL1 - PVAP2) / 2. + 1.E-30 ; DE1 = ASUMP1 * XCOEF1 * ((PRES1/1.E+5) ** 1.2) * 5.24E-3 ; TAU1 = 100. ; XCOEF2 = (TLIQ1 - TEBU2) 'MASQUE' 'EGSUPE' 0.D0 ; DE2 = (MLIQ1 / TAU1) * CPLIQ1 * (TLIQ1 - TEBU2) * XCOEF2 / CHAL2 ; LRHS1 = DE1 + DE2 ; * * La masse d'eau évaporée est bornée par (Meau - 1 kg) et par Meau/100 * avec mise à 0 pour les puisards externes * MEVA1 : Valeur brute de la masse évaporé * MAX0 : Masse correspondant à 1% de la masse d'eau initiale du puisard * MAX1 : Masse laissant 1kg d'eau dans le puisard MEVA1 = LRHS1 * DT1 ; MAX_0 = ML0 * 0.01D0 ; MAX_1 = ML0 - 1.D0 ; MAX_2 = MAX_0 + MAX_1 - ('ABS' (MAX_0 - MAX_1)) * 0.5 ; MEVA2 = MEVA1 + MAX_2 - ('ABS' (MEVA1 - MAX_2)) * 0.5 ; 'SI' ((TSG . 'NBSUMP') '>' 0) ; MEVA2 = MEVA2 - LRHS3 ; 'FINSI' ; ID1 = ML0 / ML0 ; REVA1 = MEVA2 / (MEVA1 + (ID1 * 1.D-30)) ; QEVA2 = MEVA2 / DT1 ; ETOT1 = DE1 * EQEVA + (DE2 * EQEBU) * REVA1 ; * * Prise en compte du débit d'évaporation pour RH2O TSUR = TSUR + RHS1 ; * * Prise en compte du débit d'évaporation pour UGAS XEVAUGAS = ETOT1 ; TSUR = TSUR + RHS1 ; * * Prise en compte de la perte pour UGAS de la condensation en masse XMLS = (1.D0-XV3) * RH2O1 * VOLU1 * TSUR = TSUR - RHS1 ; * * Prise en compte du débit d'évaporation pour MLIQ XEVAMLIQ = -1.D0 * QEVA2 ; TSUR = TSUR + RHS1 ; * * Prise en compte du débit d'évaporation pour ULIQ XEVAULIQ = -1.D0 * XEVAUGAS ; TSUR = TSUR + RHS1 ; * *- Débit d'eau dans les jonctions liquides * 1) calcul * 2) sauvegarde dans TSI.'QLIQ' * 3) prise en compte "implicite" à travers le point fixe * * B1 : largeur de débordement des puisards * VMAX1 : volumes maximum d'eau tolérés dans les puisards * QV1 : débit volumique de débordement (m3/s) * QV0 : débit débordement à itération précédente pour relaxation * 'SI' (EXISTE TSG 'JULIQ') ; G1 = TSP . 'GRAVITY' ; B1 = TSD . 'APERTURE' ; VMAX1 = TSD . 'VMAX' ; * hauteurs d'eau supérieures aux hauteurs max MASQ1 = (VLIQ1 - VMAX1) 'MASQUE' 'SUPERIEUR' 0.D0 ; MASQ2 = (VLIQ1 - VMAX1) 'MASQUE' 'EGINFE' 0.D0 ; HAUT1 = (VLIQ1 - VMAX1) * MASQ1 / ASUMP1 ; HAUT2 = HAUT1 + (1.D-30 * MASQ2) ; QV1 = B1 * HAUT1 * ((2.0 * G1 * HAUT2) ** 0.5) ; * on borne le débit volumique de débordement par * le volume d'eau divisée par le pas de temps QMAX1 = VLIQ1 / DT1 * 0.5 ; MASQ1 = (QV1 - QMAX1) 'MASQUE' 'EGINFE' 0.D0 ; MASQ2 = (QV1 - QMAX1) 'MASQUE' 'SUPERIEUR' 0.D0 ; QV1 = (MASQ1 * QV1) + (MASQ2 * QMAX1) ; * *- Equation de conservation de la masse d'eau liquide * VLIQ2 = VLIQ1 + 1.D-30 ; TSI . 'XUNVLIQ1' = VLIQ2 ** -1.0 ; * *- Energie des puisards (modif du spg de QLIQ ('JULIQ')) * QV0 = TSI . 'QLIQ' ; NBJUL1 = TSG . 'NBJUL' ; 'REPE' BLO100 NBJUL1 ; VAL1 = (RELAX4 * VAL1) + ((1.0 - RELAX4) * VAL0) ; 'SI' (&BLO100 'EGA' 1) ; 'SINON' ; QV2 = QV2 'ET' 'FINSI' ; 'FIN' BLO100 ; TSI . 'QLIQ' = QV2 ; 'FINSI' ; * *- Fin de la gestion eau liquide * 'FINSI' ; * *- Gestion du flux de chaleur lorsque la thermique mur est découplée *- Mise à jour à réaliser après la gestion de l'eau du fait de 'XECHAN2' * 'SI' ('EGA' (SET . 'COUPLAGE_WALL') 'OFF') ; TPL2 = (TSI . 'XECHAN2') * TPL1 ; TSUR = TSUR + RHS1 ; 'FINSI' ; TPL2 = (TSD . 'ECHAW') * TPL1 ; TSUR = TSUR + RHS1 ; 'FINSI' ; 'FINSI' ; * * Cas de la puissance Residuelle * * *- Equation de conservation de la masse pour Y1 Y2 et Y3 XUNMGAS2 = (RGAS2 * VOLU1) '**' -1.0 ; TSI . 'XUNMGAS1' = XUNMGAS2 ; XUNMLIQ2 = MLIQ1 '**' -1.0 ; TSI . 'XUNMLIQ1' = XUNMLIQ2 ; * *- Rabattement des aerosols TIME00 = TSI . 'TIME1' ; TIME0 = TSI . 'TIME2' ; DT1 = TSI . 'DT' ; MOTLAMB = TSD . 'PRESI' . 'LAMBDA' . 1 ; TSBP = SET . 'BOUNDARY' . 'PRESID' ; 'SINON' ; LAMBDA = TSD . 'PRESI' . 'LAMBDA' . 1 ; 'FINSI' ; * *- Prise en compte éventuelle de l'aspersion *- (ideb= 1 ou 2 si aspersion en cours) 'SI' ('EXISTE' TSD 'SPRAY' ) ; IDEB = TSD . 'SPRAY' . 'IDEB'; 'SI' (('EGA' IDEB 1) 'OU' ('EGA' IDEB 2)) ; MOTLAMBP = TSD . 'PRESI' . 'LAMBDAP' . 1 ; LAMBDA = 'MINI' 'SINON' ; LAMBDA = TSD . 'PRESI' . 'LAMBDAP' . 1 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * XLAMBDA2 = CHPLU1 * LAMBDA ; XLAMBDA3 = CHMOI1 * LAMBDA ; TSI . 'XLAMBDA' = XLAMBDA2 ; TSI . 'XMLAMBDA' = XLAMBDA3 ; 'FINSI' ; * SET . 'UPLIN' . 'RHS' = TSUR ; 'FINP' ; *$$$$ TO_UTILE 'DEBP' TO_UTILE LIN1*'LISTREEL' RANG0*'ENTIER' FREQ1*'ENTIER' ; * * SIZE1 = SIZE0 - RANG0 + 1 ; 'SI' (SIZE1 '<EG' 0) ; * * On traite le cas particulier 'SINO' ; * * On construit la liste d'entiers inférieurs à SIZE0, * démarrant à RANG0, par pas de FREQ1 PAS1 = SIZE1 / FREQ1 ; 'SI' ('EGA' (PAS1*FREQ1) SIZE1) ; PAS1 = PAS1 - 1 ; 'FINSI' ; 'SI' ('NEG' PAS1 0) ; 'SINO' ; 'SI' ('EGA' SIZE1 1) ; 'SINO' ; 'FINSI' ; 'FINSI' ; * * Ajout du dernier élément 'FINSI' ; * * Extraction des valeurs du LISTREEL 'FINSI' ; 'FINP' LOUT1 ROUT1 ; *$$$$ TO_VERIF DEBPROC TO_VERIF ; * * * * --- Recuperation du nombre de composents --- * * * -------------------------------------------------------------------- * Verification de la coherence des donnees par rapport a l'equation * d'etat des gaz parfaits * -------------------------------------------------------------------- * IND1 = 'INDEX' (INPUT . 'CELL' . 'LOCATION') ; INC1 = 'INDEX' (INPUT . 'COMPONENT') ; 'REPETER' BLO10 NBCELL ; RHOR10 = 0. ; ICELL = IND1 . &BLO10 ; VCELL1 = INPUT . 'CELL' . 'VOL' . ICELL ; TGAS1 = INPUT . 'CELL' . 'TGAS' . ICELL ; 'REPETER' BLO11 NBCOMP ; IND11 = INC1 . &BLO11 ; NAMEC1 = INPUT . 'COMPONENT' . IND11 ; NAMEM1 = 'CHAINE' 'M' NAMEC1 ; RHO1 = (INPUT . 'CELL' . NAMEM1 . ICELL) / VCELL1 ; NAMER1 = 'CHAINE' 'R_' NAMEC1 ; R1 = INPUT . 'PHYSICAL' . NAMER1 ; 'SI' ('EGA' NAMEC1 'H2O') ; pvap2 = RHO1 * R1 * Z1 * tgas1 ; 'SINO' ; Z1 = 1.D0 ; 'FINS' ; RHOR10 = RHOR10 + (RHO1 * R1 * Z1) ; 'FIN' BLO11 ; PTHEO1 = RHOR10 * TGAS1 ; PT1 = INPUT . 'CELL' . 'PT' . ICELL ; ERRTOL1 = INPUT . 'TIMECALC' . 'ERRTOL' ; ERRPT1 = ( ABS(PT1-PTHEO1) ) / PT1 ; 'SI' ( ERRPT1 > ERRTOL1 ) ; 'MESS' 'WARNING !!! : The pressure in ' ICELL ' is ' PT1 ' and might be ' PTHEO1; 'FINSI'; 'FIN' BLO10 ; * FINPROC INPUT ; *$$$$ TO_WALL 'DEBP' TO_WALL SET*'TABLE' LISTOPER*'TABLE' CHOI1*'TABLE' CHOI2*'TABLE' CHOI3*'TABLE' CHOI4*'TABLE' ICHX1*'ENTIER' ICHX2*'ENTIER' ICHX3*'ENTIER' ICHX4*'ENTIER' NBOPE1*'ENTIER' ; * * TSD = SET . 'DATA' ; TSG = SET . 'GEOINF' ; TSI = SET . 'INCO' ; TSP = SET . 'PHYSICAL' ; * AREAW1 = -1.D0 * (TSD . 'AREAW') ; ECHAW1 = -1.D0 * (TSD . 'ECHAW') ; ECHAW2 = TSD . 'ECHAW' ; CPW = TSP . 'CW' ; RHOW = TSP . 'RW' ; LBDW = TSP . 'LW' ; THICKW = TSP . 'TW' ; CHMOIW = -1.0 * CHPLUW ; COUPW1 = 'EGA' (SET . 'COUPLAGE_WALL') 'ON' ; LCOND1 = 'EXISTE' TSP 'CONDENSE' ; LSUMP1 = 'EXISTE' TSG 'LAYERS' ; LCELL1 = 'EXISTE' TSG 'LAYERC' ; 'SI' LCELL1 ; NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERC' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QW ' ; LISTOPER . NBOPE1 . 'DUAL' = 'QW ' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * NBOPE1 = NBOPE1 + 1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'CELLAYW' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; 'SI' LCOND1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; 'SINON' ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; TSI . 'XECHAN2' = ECHAW2 ; 'FINSI' ; LISTOPER . NBOPE1 . 'COEF' = 'XECHAN2' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'TGAS' ; LISTOPER . NBOPE1 . 'DUAL' = 'QW ' ; LISTOPER . NBOPE1 . 'TYPEL' = 'PD' ; 'FINSI' ; 'SI' LSUMP1 ; NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERS' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QS ' ; LISTOPER . NBOPE1 . 'DUAL' = 'QS ' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; 'FINSI' ; 'SI' (COUPW1) ; NBOPE1 = NBOPE1 + 1 ; ICHX2 = ICHX2 + 1 ; CHOI2 . ICHX2 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = TSG ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'DUAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'DT' = 'DT' ; LISTOPER . NBOPE1 . 'CP' = CPW ; LISTOPER . NBOPE1 . 'RHO' = RHOW ; LISTOPER . NBOPE1 . 'LBD' = LBDW ; LISTOPER . NBOPE1 . 'THICK' = THICKW ; * 'SI' LCELL1 ; NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERC' ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'DUAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QW ' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * NBOPE1 = NBOPE1 + 1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERC' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; 'SI' LCOND1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; 'SINON' ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; TSI . 'XECHAN1' = ECHAW1 ; 'FINSI' ; LISTOPER . NBOPE1 . 'COEF' = 'XECHAN1' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'DUAL' = 'QW ' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; 'FINSI' ; * 'SI' LSUMP1 ; NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERS' ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QS ' ; LISTOPER . NBOPE1 . 'DUAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERS' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = ECHAW1 ; LISTOPER . NBOPE1 . 'PRIMAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'DUAL' = 'QS ' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; 'FINSI' ; * 'SI' ('EXISTE' TSG 'LAYERO'); NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERO' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QO' ; LISTOPER . NBOPE1 . 'DUAL' = 'QO' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERO' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QO' ; LISTOPER . NBOPE1 . 'DUAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERO' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = ECHAW1 ; LISTOPER . NBOPE1 . 'PRIMAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'DUAL' = 'QO' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; 'FINSI' ; * 'SINO' ; NBOPE1 = NBOPE1 + 1 ; ICHX4 = ICHX4 + 1 ; CHOI4 . ICHX4 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = TSG ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'DUAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'DT' = 'DT' ; LISTOPER . NBOPE1 . 'CP' = CPW ; LISTOPER . NBOPE1 . 'RHO' = RHOW ; LISTOPER . NBOPE1 . 'LBD' = LBDW ; LISTOPER . NBOPE1 . 'THICK' = THICKW ; * 'SI' LCELL1 ; NBOPE1 = NBOPE1 + 1 ; ICHX4 = ICHX4 + 1 ; CHOI4 . ICHX4 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERC' ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'DUAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QP' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * * Flux imposé (avec compartiment) NBOPE1 = NBOPE1 + 1 ; ICHX4 = ICHX4 + 1 ; CHOI4 . ICHX4 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERC' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QP' ; LISTOPER . NBOPE1 . 'DUAL' = 'QP' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; 'FINSI' ; * * Flux imposé (avec puisard) 'SI' ('EXISTE' TSG 'LAYERS'); NBOPE1 = NBOPE1 + 1 ; ICHX4 = ICHX4 + 1 ; CHOI4 . ICHX4 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERS' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QR' ; LISTOPER . NBOPE1 . 'DUAL' = 'QR' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * NBOPE1 = NBOPE1 + 1 ; ICHX4 = ICHX4 + 1 ; CHOI4 . ICHX4 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERS' ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'DUAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QR' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; 'FINSI' ; * * Echange temperature imposée (avec l'exterieur) 'SI' ('EXISTE' TSG 'LAYERO'); * NBOPE1 = NBOPE1 + 1 ; ICHX4 = ICHX4 + 1 ; CHOI4 . ICHX4 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERO' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QO' ; LISTOPER . NBOPE1 . 'DUAL' = 'QO' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * NBOPE1 = NBOPE1 + 1 ; ICHX4 = ICHX4 + 1 ; CHOI4 . ICHX4 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERO' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = ECHAW1 ; LISTOPER . NBOPE1 . 'PRIMAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'DUAL' = 'QO' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * NBOPE1 = NBOPE1 + 1 ; ICHX4 = ICHX4 + 1 ; CHOI4 . ICHX4 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= TSG . 'LAYERO' ; LISTOPER . NBOPE1 . 'INCO' = TSI ; LISTOPER . NBOPE1 . 'COEF' = CHPLUW ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QO' ; LISTOPER . NBOPE1 . 'DUAL' = 'TWAL' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * 'FINSI' ; * * Voir to_bo2.procedure * 'FINSI' ; * 'FINP' ICHX1 ICHX2 ICHX3 ICHX4 NBOPE1 ; *********************************************************************** *********************************************************************** ** ** ** Version du 19/11/2014 finalisée le 16/12/2014 ** ** ** *********************************************************************** * 'MESS' ' ' ; * *- Nom du fichier de données * FILENAME = 'CHAINE' DIVERS '/test_junc_1.data' ; 'TEMPS' 'ZERO'; * *====================================================================== * * INITIALISATIONS * *====================================================================== * IDIM = 2 ; * * *- Nombre maximum d'itérations dans la boucle interne * INSTEP = 100 ; * *- Création de la table INPUT (lecture du fichier de données) * INPUT = TO_INPUT FILENAME ; 'SI' ((INPUT . 'ERROR') 'NEG' 0) ; 'MESS' ' '; 'MESS' ' '; 'FIN' ; 'FINSI' ; * *- Création de la table SET (ensemble des champs) * SET = TO_FIELD INPUT ; 'SI' ((SET . 'ERROR') 'NEG' 0) ; 'MESS' ' '; 'MESS' ' '; 'FIN' ; 'FINSI' ; * *- Nom du fichier de sauvegarde * *'OPTI' 'SAUV' (SET . 'TIMECALC' . 'SAVEFILE') ; * *- Affichage des données de la table SET * ERROR1 = TO_PRINT SET INPUT 'ALL' 0 ; 'SI' (ERROR1 'NEG' 0 ) ; 'FIN' ; 'FINSI' ; LISTOPER = 'TABLE' 'OPERATORS' ; NBOPE1 = 0 ; NBCELL = SET . 'GEOINF' . 'NBCELL' ; ICHX1 = 0 ; ICHX2 = 0 ; ICHX3 = 0 ; ICHX4 = 0 ; CHOI1 = 'TABLE' ; CHOI2 = 'TABLE' ; CHOI3 = 'TABLE' ; CHOI4 = 'TABLE' ; * LJUNC1 = 'EXISTE' (SET . 'GEOINF') 'JUNCTION' ; LWALL1 = 'EXISTE' (SET . 'GEOINF') 'WALL' ; LJULI1 = 'EXISTE' (SET . 'GEOINF') 'JULIQ' ; LSUMP1 = 'EXISTE' (SET . 'GEOINF') 'LAYERS' ; LCELL1 = 'EXISTE' (SET . 'GEOINF') 'LAYERC' ; LCOND1 = 'EXISTE' (SET . 'PHYSICAL') 'CONDENSE' ; LMLIQ1 = 'EXISTE' (SET . 'INCO') 'MLIQ' ; LPRESI = 'EXISTE' (SET . 'INCO') 'Y1' ; * *- Initialisation de quelques champs par points * VOLU1 = SET . 'DATA' . 'VOL' ; 'NATURE' 'DISCRET' ; 'NATURE' 'DISCRET' ; 'SI' LJUNC1 ; CHPGZ1 = (SET . 'PHYSICAL' . 'GRAVITY') * (CHGZ11 + CHGZ12) ; 'FINSI' ; 'SI' LWALL1 ; AREAW1 = -1.D0 * (SET . 'DATA' . 'AREAW') ; 'FINSI' ; 'SI' LMLIQ1 ; NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL'; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = CHPLU1 ; LISTOPER . NBOPE1 . 'PRIMAL' = 'HLIQ' ; LISTOPER . NBOPE1 . 'DUAL' = 'HLIQ' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; 'FINSI' ; ************************************************************************ * Enthalpie specifique du gaz (inconnue duale : HGAS) ************************************************************************ NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL'; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = CHPLU1 ; LISTOPER . NBOPE1 . 'PRIMAL' = 'HGAS' ; LISTOPER . NBOPE1 . 'DUAL' = 'HGAS' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; *********************************************************************** * Equation de conservation de la masse de chaque constituant * Pour chaque constituant, la masse volumique NAMR1 est la DUALE *********************************************************************** 'REPETER' BLO100 NBCOMP1 ; NAMC1 = SET . 'COMPONENT' . &BLO100 ; NAMR1 = 'CHAINE' 'R' NAMC1 ; * *---------------------------------------------------- dérivée en temps NBOPE1 = NBOPE1 + 1 ; ICHX2 = ICHX2 + 1 ; CHOI2 . ICHX2 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'DT' = 'DT' ; LISTOPER . NBOPE1 . 'DUAL' = NAMR1 ; * *------------------------------------------ transport par convection 'SI' LJUNC1 ; NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = SET . 'GEOINF' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'MULT1' = 'XUNRGAS1' ; LISTOPER . NBOPE1 . 'OPTION' = 'DECENTRE' ; LISTOPER . NBOPE1 . 'DUAL' = NAMR1 ; 'FINSI' ; * *------------- Flux de masse lié à la condensation dans le cas de l'eau 'SI' ('EGA' NAMR1 'RH2O') ; 'SI' (LWALL1 'ET' LCOND1 'ET' LCELL1) ; NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' .'CELLAYW'; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = 'XALAT1' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QW' ; LISTOPER . NBOPE1 . 'DUAL' = 'RH2O' ; LISTOPER . NBOPE1 . 'TYPEL' = 'DP' ; 'FINSI' ; 'FINSI' ; 'FIN' BLO100 ; NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL'; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = CHPLU1 ; LISTOPER . NBOPE1 . 'PRIMAL' = 'RGAS' ; LISTOPER . NBOPE1 . 'DUAL' = 'RGAS' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; 'REPETER' BLO101 NBCOMP1 ; NAMC1 = SET . 'COMPONENT' . &BLO101 ; NAMR1 = CHAINE 'R' NAMC1 ; NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL'; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = CHMOI1 ; LISTOPER . NBOPE1 . 'PRIMAL' = NAMR1 ; LISTOPER . NBOPE1 . 'DUAL' = 'RGAS' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; 'FIN' BLO101 ; 'SI' LJUNC1 ; * *---------------------------------------------------- dérivée en temps NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE' = SET . 'GEOINF' . 'JUNCTION' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'DT' = 'DT' ; LISTOPER . NBOPE1 . 'DUAL' = 'QCEL' ; LISTOPER . NBOPE1 . 'DUA2' = 'QM' ; *------------------------------------------------- gradient de pression NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = SET . 'GEOINF' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'MULT1' = 'QKMBT' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'PT' ; LISTOPER . NBOPE1 . 'DUAL' = 'QCEL' ; * *----------------------------------------------------- perte de charge NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'JUNCTION'; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = 'QMDIA' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QCEL' ; LISTOPER . NBOPE1 . 'DUAL' = 'QCEL' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * *------------------------------ terme d'énergie potentielle (RHO*G*Z) NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = SET . 'GEOINF' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'POTENTIA' = CHPGZ1 ; LISTOPER . NBOPE1 . 'MULT1' = 'QKMBT' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'RGAS' ; LISTOPER . NBOPE1 . 'DUAL' = 'QCEL' ; 'FINSI' ; NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL'; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = CHPLU1 ; LISTOPER . NBOPE1 . 'PRIMAL' = 'PT' ; LISTOPER . NBOPE1 . 'DUAL' = 'PT' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * *---------------------- deuxième partie de la linéarisation de ROR*T NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL'; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = 'XROR1' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'TGAS' ; LISTOPER . NBOPE1 . 'DUAL' = 'PT' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; *********************************************************************** * Equation d'état calorifique du mélange (inconnue duale : TGAS) *********************************************************************** * *------------------------------- énergie interne du mélange gazeux UGAS NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL'; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = CHMOI1 ; LISTOPER . NBOPE1 . 'PRIMAL' = 'UGAS' ; LISTOPER . NBOPE1 . 'DUAL' = 'TGAS' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; * *---------------- première partie de la linéarisation : -1.*VOLUME*ROCV NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL'; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = 'XVROCV1' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'TGAS' ; LISTOPER . NBOPE1 . 'DUAL' = 'TGAS' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D' ; NBOPE1 = NBOPE1 + 1 ; ICHX2 = ICHX2 + 1 ; CHOI2 . ICHX2 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'DT' = 'DT' ; LISTOPER . NBOPE1 . 'DUAL' = 'UGAS' ; * * --- première partie de la linéarisation --- * 'SI' LJUNC1 ; NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = SET . 'GEOINF' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'MULT1' = CHPLU1 ; LISTOPER . NBOPE1 . 'OPTION' = 'DECENTRE' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'HGAS' ; LISTOPER . NBOPE1 . 'DUAL' = 'UGAS' ; * * --- deuxième partie de la linéarisation --- * NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = SET . 'GEOINF' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'MULT1' = 'XHGAS1' ; LISTOPER . NBOPE1 . 'OPTION' = 'CENTRE' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QCEL' ; LISTOPER . NBOPE1 . 'DUAL' = 'UGAS' ; 'FINSI' ; * * ---------------------- flux de chaleur spécifique à travers les murs * 'SI' (LWALL1 'ET' LCELL1) ; NBOPE1 = NBOPE1 + 1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; 'SI' LCOND1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 . 'COEF' = 'XL0DC1' ; 'SINON' ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 . 'COEF' = AREAW1 ; 'FINSI' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QW' ; LISTOPER . NBOPE1 . 'DUAL' = 'UGAS' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELLAYW'; LISTOPER . NBOPE1 . 'TYPEL' = 'DP' ; 'FINSI' ; 'SI' LMLIQ1 ; * *---------------------------------------------------- dérivée en temps NBOPE1 = NBOPE1 + 1 ; ICHX2 = ICHX2 + 1 ; CHOI2 . ICHX2 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'DT' = 'DT' ; LISTOPER . NBOPE1 . 'DUAL' = 'MLIQ' ; * *-------------------------------- masse d'eau condensée sur les parois 'SI' (LWALL1 'ET' LCOND1 'ET' LCELL1) ; NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELLAYW' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = 'YALAT1' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QW' ; LISTOPER . NBOPE1 . 'DUAL' = 'MLIQ' ; LISTOPER . NBOPE1 . 'TYPEL' = 'DP' ; 'FINSI' ; * *--------------------------------- masse d'eau des jonctions liquides 'SI' LJULI1 ; NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = SET . 'GEOINF' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'MULT1' = 'XUNVLIQ1' ; LISTOPER . NBOPE1 . 'OPTION' = 'DECENTRE' ; LISTOPER . NBOPE1 . 'DUAL' = 'MLIQ' ; 'FINSI' ; 'FINSI' ; 'SI' LMLIQ1 ; * *---------------------------------------------------- dérivée en temps NBOPE1 = NBOPE1 + 1 ; ICHX2 = ICHX2 + 1 ; CHOI2 . ICHX2 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'DT' = 'DT' ; LISTOPER . NBOPE1 . 'DUAL' = 'ULIQ' ; * *--------------------------- énergie de l'eau condensée sur les parois 'SI' (LWALL1 'ET' LCOND1 'ET' LCELL1) ; NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' .'CELLAYW' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = 'YL0DC1' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'QW' ; LISTOPER . NBOPE1 . 'DUAL' = 'ULIQ' ; LISTOPER . NBOPE1 . 'TYPEL' = 'DP' ; 'FINSI' ; * *----------------------------- énergie de l'eau des jonctions liquides 'SI' LJULI1 ; NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = SET . 'GEOINF' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'MULT1' = 'XROLIQ1' ; LISTOPER . NBOPE1 . 'OPTION' = 'DECENTRE' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'HLIQ' ; LISTOPER . NBOPE1 . 'DUAL' = 'ULIQ' ; 'FINSI' ; * ---------------------- flux de chaleur spécifique à travers les murs 'SI' (LWALL1 'ET' LSUMP1) ; NBOPE1 = NBOPE1 + 1 ; ICHX1 = ICHX1 + 1 ; CHOI1 . ICHX1 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = LISTOPER . NBOPE1 . 'PRIMAL' = 'QS' ; LISTOPER . NBOPE1 . 'DUAL' = 'ULIQ' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELLAYS'; LISTOPER . NBOPE1 . 'TYPEL' = 'DP' ; 'FINSI' ; 'FINSI' ; *********************************************************************** * Equation de la chaleur dans les murs (inconnue duale : TWAL) * Def. densité de flux de chaleur spécifique (inconnue duale : QW) *********************************************************************** 'SI' LWALL1 ; ICHX1 ICHX2 ICHX3 ICHX4 NBOPE1 = TO_WALL SET LISTOPER CHOI1 CHOI2 CHOI3 CHOI4 ICHX1 ICHX2 ICHX3 ICHX4 NBOPE1 ; 'FINSI' ; *====================================================================== * PUISSANCE RESIDUELLE *====================================================================== * 'SI' LPRESI ; * *------------------------------ Y1 : dérivée en temps NBOPE1 = NBOPE1 + 1 ; ICHX2 = ICHX2 + 1 ; CHOI2 . ICHX2 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'DT' = 'DT' ; LISTOPER . NBOPE1 . 'DUAL' = 'Y1' ; * *------------------------------ Y2 : dérivée en temps NBOPE1 = NBOPE1 + 1 ; ICHX2 = ICHX2 + 1 ; CHOI2 . ICHX2 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'DT' = 'DT' ; LISTOPER . NBOPE1 . 'DUAL' = 'Y2' ; * *----------------------------- Y3 : dérivée en temps NBOPE1 = NBOPE1 + 1 ; ICHX2 = ICHX2 + 1 ; CHOI2 . ICHX2 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' . 'CELL' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'DT' = 'DT' ; LISTOPER . NBOPE1 . 'DUAL' = 'Y3' ; * 'SI' LJUNC1 ; * *---------------------------- Y1 : transport par convection NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = SET . 'GEOINF' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'MULT1' = 'XUNMGAS1' ; LISTOPER . NBOPE1 . 'OPTION' = 'DECENTRE' ; LISTOPER . NBOPE1 . 'DUAL' = 'Y1' ; * *---------------------------- Y2 : transport par convection NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = SET . 'GEOINF' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'MULT1' = 'XUNMGAS1' ; LISTOPER . NBOPE1 . 'OPTION' = 'DECENTRE' ; LISTOPER . NBOPE1 . 'DUAL' = 'Y2' ; * *---------------------------- Y3 : transport 'SI' LJULI1 ; NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'GEOINF' = SET . 'GEOINF' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'MULT1' = 'XUNMLIQ1' ; LISTOPER . NBOPE1 . 'OPTION' = 'DECENTRE' ; LISTOPER . NBOPE1 . 'DUAL' = 'Y3' ; 'FINSI' ; * 'FINSI' ; * *---------------------------- Rabattemement pour Y2 NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' .'CELL' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = 'XLAMBDA' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'Y2' ; LISTOPER . NBOPE1 . 'DUAL' = 'Y2' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D'; * *---------------------------- Rabattemement pour Y2 dans le puisard NBOPE1 = NBOPE1 + 1 ; ICHX3 = ICHX3 + 1 ; CHOI3 . ICHX3 = NBOPE1 ; LISTOPER . NBOPE1 = TABLE 'OPER_0D' ; LISTOPER . NBOPE1 . 'MAILLAGE'= SET . 'GEOINF' .'CELL' ; LISTOPER . NBOPE1 . 'INCO' = SET . 'INCO' ; LISTOPER . NBOPE1 . 'COEF' = 'XMLAMBDA' ; LISTOPER . NBOPE1 . 'PRIMAL' = 'Y2' ; LISTOPER . NBOPE1 . 'DUAL' = 'Y3' ; LISTOPER . NBOPE1 . 'TYPEL' = 'P=D'; * 'FINSI' ; * *====================================================================== * * GRANDEURS A SAUVEGARDER * * Voir to_field pour la description * *====================================================================== * SET . 'HISTO' = 'TABLE' ; TCSAUV = 'TABLE' ; TCSAUV . 'QW' = 0 ; TCSAUV . 'QP' = 0 ; TCSAUV . 'QS' = 0 ; TCSAUV . 'QR' = 0 ; TCSAUV . 'QO' = 0 ; * *--------------------------- les inconnues duales des tables OPER_0D I901 = 0 ; 'REPETER' BLO900 NBOPE1 ; NAMC1 = LISTOPER . &BLO900 . 'DUAL' ; 'SI' ('NON' ('EXISTE' TCSAUV NAMC1)) ; I901 = I901 + 1 ; TCSAUV . NAMC1 = I901 ; SET . 'HISTO' . I901 = NAMC1 ; 'FINSI' ; 'FIN' BLO900 ; * *------------------ flux de chaleur entre les faces des murs et les *------------------ compartiments, les puisards ou l'exterieur 'SI' LWALL1 ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'QWAL' ; 'FINSI' ; * *---------------------- composantes supplémentaires associées à H2O 'SI' LMLIQ1 ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'XV' ; *---------------------------------------------------------(puisards) I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'TLIQ' ; * I901 = I901 + 1 ; * SET . 'HISTO' . I901 = 'RHOL' ; 'SI' LJULI1 ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'QLIQ' ; 'FINSI' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'VLIQ' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'MEVA' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'QEVA' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'UEVA' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'MLS' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'QLS' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'ULS' ; *---------------------------------------------------- (condensation) 'SI' LWALL1 ; 'SI' (EXISTE (SET . 'GEOINF') 'LAYERC') ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'ECHA' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'ALAT' ; 'FINSI' ; 'FINSI' ; *------------------------------------------------------- (aspersion) 'SI' (EXISTE (SET . 'INCO') 'MCND') ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'MCND' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'MEBU' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'MSPR' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'UCND' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'UCNV' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'UEBU' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'USPR' ; 'FINSI' ; *------------------------------------------------------- (combustion) 'SI' (EXISTE (SET . 'INCO') 'ECOM') ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'ECOM' ; 'FINSI' ; *------------------------------------------------------ (recombineur) 'SI' (EXISTE (SET . 'INCO') 'TREC') ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'TREC' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'QREC' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'TSRE' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'EREC' ; 'FINSI' ; 'FINSI'; * *------------------------------------ Cas de la puissance residuelle 'SI' (EXISTE (SET . 'INCO') 'Y1') ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'Y1' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'Y2' ; I901 = I901 + 1 ; SET . 'HISTO' . I901 = 'Y3' ; 'FINSI' ; * *====================================================================== * * RESOLUTION * *====================================================================== * TO_EXEC SET LISTOPER CHOI1 CHOI2 CHOI3 CHOI4 ; * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales