TALK=T;RUN(1,1)
PHOTON USE p;;;; vi y msg(vectors and contours at symmetry plane vec y 1 sh pause msg(shell-side velocity vectors vec off msg(shell-side pressure contours con ps y 1 fi;.001 pause msg(shell-side temperature contours con tems y 1 fi;.001 pause msg(tube-side temperature contours con temt y 1 fi;.001 pause ENDUSE DISPLAY A 3D shell-and-tube heat-exchanger, with one tube-side pass, and two shell-side baffles, in steady flow. The shell-side fluid is saturated water; the tube-side fluid is SAE_5W-30_engine_oil. In-Form is used for many purposes. Note by dbs on 24.08.08. This file, dated 20.05.05, was probably that which was later used for the 2005 ASME paper. The latter however was developed further, not least by the use of MUSES to enable the stresses in the tubes to be calculated. The diagram has today been changed because it still referred to a five-pass exchanger! Also the nomenclature has been streamlined so thats rather than 1 refers to the shell side and t to the tube side. ENDDIS GROUP 1. Run title TEXT(3D Shell and (1-pass) Tube Heat Exchanger TITLE User-defined variables TSIN = inlet temperature of shell fluid TTIN = inlet temperature of tube fluid FLOS = mass-flow rate of shell fluid FLOt = mass-flow rate of tube fluid cps = specific heat of shell fluid cpt = specific heat of tube fluid RESCO = flow-resistance coefficient of shell-side fluid caused by the presence of the tube bank The heat exchanger is a rectangular box, 1m high (x), 1m wide (y) and 4m long (z). A uniform cartesian grid is used. Only one half of the exchanger is included in the calculation domain, because of the symmetry of the geometry about the central y=constant plane. ^ shell outlet ! ! ! //////////////////////////////! !/// ------------------------!------ ---- >>>>>>>>>>>>>>>>>>>>>>>>>>>!>>>>>>>>>>> ! 1 tube-side pass ^ ---- ------!------------------------ ! ///! ^ !////////////////////////////// X ! ! ! ! shell inlet O------ Z ------> SAVE1BEGIN REAL(TSIN,TTIN,FLOS,FLOT,DIAM,PITCH,areadvol) diam=0.01; pitch=0.0125 areadvol=3.1416*diam/pitch**2 real(cpscon,cptcon) cpscon=4138. ! average specific heats cptcon=1920. TSIN=10; TTIN=80.0 ! degrees Celsius FLOS=100; FLOT=100 ! kg/s mass flows of the fluids flot=50 REAL(TUBVEL,TUBDEN) TUBDEN=842 TUBVEL=(FLOT/(2*TUBDEN*XULAST*YVLAST))*(PITCH/DIAM)**2 TUBVEL REAL(RESCO);RESCO=1.E2 ! this is a guessed constant value ! it ought to be computed point by point xulast=1.0 ! the height yvlast=0.5 ! one half of the width zwlast=4.0 ! the length nx=30; ny=5; nz=30 ! the computational grid steady=t #unigrid SAVE1END GROUP 7. Variables stored, solved , named The shell-side fluid is a single-phase one, for which five variables must be solved: p1, pressure u1, x-direction velocity v1, y-direction velocity w1, z-direction velocity h1; enthalpy for the tube-side fluid, only the enthalpy needs be computed. Its velocity along the tube is supposed known. Nonuniformities within the header regions are neglected. SOLVE(P1,U1,V1,W1,H1,ht) ! 1 is shell-side, 2 is tube side ! enthalpies are solved, not temperatures name(h1)=hs ! name change, for consistency name(p1)=ps ! name change, for consistency solutn(ps,y,y,y,p,p,p) The space occupied by the tubes, and therefore denied to the shell-side fluid, is reflected by way of 'porosity' factors. STORE(tems,temt,VABS,reys,nuss,prns,coes,reyt,nust,prnt,coet,coeu) ! tems for shell-side fluid because it is stored, not solved STORE(TEMM,EPOR,NPOR,HPOR) STORE(enul,rho1,cps,COND) ! shell-side properties ! rho1 retained rather than rhos because it is reserved for ! phase-1 density in In-Form property statement STORE(enup,rhot,cpt,cont) ! tube-side properties ! enup is used rather than enut because the latter has a ! reserved meaning SAVE7BEGIN (stored var tems is hs/cpscon) (stored var temt is ht/cptcon) (stored var temm is (coes*temt+coet*tems)/(coes+coet)) (stored var reys is diam*vabs/enul) (stored var prns is cps*rho1*enul/COND) (stored var nuss is 0.2*reys^0.6*prns^0.33) (stored var coes is areadvol*nuss*COND/diam) (stored var reyt is diam*tubvel/enup) (stored var prnt is cpt*rhot*enup/cont) (stored var nust is max(2.0,0.328*(reyt*prnt)^0.33)) (stored var coet is areadvol*nust*cont/diam) or, to investigate the importance of the viscosity-ratio effect use the following. see below for enum (stored var coet is (enum/enup)^0.14*areadvol*nust*cont/diam) (stored var coeU is 1/(1/coes+1/coet)) (stored var coeU is coes*coet/(coes+coet)) ! as above but simpler ! differences in the results were tiny to compute the volumetric heat flux (stored var flux is coeu*(temt-tems)) SAVE7END GROUP 8. Terms (in differential equations) & devices The "diffusion" terms are here cut out for all variables, but could be restored were plausible formulae suggested. The built-in sources (kinetic heating) for the enthalpies are cut out as . Also, the convection terms are cut out for the tube-side fluid because the neighbour-cell sources do what is necessary. TERMS(U1,Y,Y,N,Y,Y,Y); TERMS(V1,Y,Y,N,Y,Y,Y) TERMS(W1,Y,Y,N,Y,Y,Y); TERMS(hs,N,Y,N,Y,Y,Y) TERMS(ht,N,N,N,Y,N,N) GROUP 9 Material properties SAVE9BEGIN char(rho_expression) char(emu_expression) char(enu_expression) char(cp_expression) char(COND_expression) char(vn) vn=tems get these from core-library case 089 shell-side fluid is saturated water rho_expression=POL5(:VN:,2446.,-20.6741,.11576,-3.12895e-4 ,4.0505$ E-7,-2.054E-10) cp_expression=exp((8.29041-.012557*:VN:)/(1.-1.52373e-3*:VN:)) emu_expression=1.e-7*exp((1.12646-.039638*:VN:) /(1.-7.29769E-3*:V$ N:)) (stored var COND is .001*POL5(:VN:,62.282,-1.768417,.03499,-1.15706E-4,$ 1.53599E-7,-7.7477E-11)) mesg(rho_expression = :rho_expression: mesg(cp_expression = :cp_expression: mesg(emu_expression = :emu_expression: mesg(COND_expression= :COND_expression: (property rho1 is :rho_expression:) (property enul is :emu_expression:/(rho1)) (stored var cps is :cp_expression:) vn=temt tube-side fluid is SAE_5W-30_engine_oil rho_expression=1052.3-0.6420*:VN: cp_expression=753.7+3.65*:VN: emu_expression=10.^(POL4(:VN:,58.2987,-.53817,1.92827e-3, -3.16448$ E-6,1.97922E-9)-2) COND_expression=0.1447-2.3073E-5*:VN: rho_expression cp_expression emu_expression COND_expression (stored var rhot is :rho_expression:) (stored var enup is :emu_expression:/(rhot)) (stored var cpt is :cp_expression:) (stored var cont is :COND_expression:) vn=temm emu_expression=10.^(POL4(:VN:,58.2987,-.53817,1.92827e-3, -3.16448$ E-6,1.97922E-9)-2) (stored var enum is :emu_expression:/(rhot)) SAVE9END GROUP 11. Initialization of variable or porosity fields specification of porosities, dependent on tube spacing FIINIT(EPOR)=0.5; FIINIT(NPOR)=0.5; FIINIT(HPOR)=0.5 note that no calculation of porosities based upon the bundle geometry is actually provided here. fiinit(tems) = TSIN+273 fiinit(temt) = TTIN+273.0 fiinit(hs) = cpscon*fiinit(tems) fiinit(ht) = cptcon*fiinit(temt) GROUP 13. Boundary CONDitions and special sources integer(izz) izz = nz/10 izz West boundary; shell fluid inlet ; cells 3 to 5 at low-x PATCH(INLET1,CELL,1,1,3,5,1,izz,1,lstep) COVAL(INLET1,ps,FIXFLU,FLOS*5/(3*2.0*NY*izz)) ! divide by 2 because only half ! exchanger is considered COVAL(INLET1,hs,ONLYMS,(TSIN+273)*cpscon) ! shell-fluid specific heat East boundary; shell fluid outlet; 3 out of 5 cells at high-x PATCH(OUTLET1,EAST,NX,NX,3,5,NZ-izz+1,NZ,1,lstep) COVAL(OUTLET1,ps,FIXP,0.0) FLOT/(2*NY*NX) is the mass flow rate of tube fluid per cell in cross-section High boundary, tube fluid inlet; NY cells in high-z wall PATCH(INLET2,CELL,1,NX,1,NY,NZ,NZ,1,1000) COVAL(INLET2,ht,FLOT/(2*NY*NX),(TTIN+273)*cptcon) ! tube-fluid specific heat Note how the giving of special names to patches, beginning NE (for neighbour), coupled with LOCNE in the "value" location, produces sources which simulate along- the-tube convection fluid-to-metal heat transfer etc. by activating special calls to built-in open-source coding, in file gxnepat for. Flow of tube fluid in first pass PATCH(NEhs,CELL,1,nx,1,NY,1,NZ-1,1,lstep) COVAL(NEhs,ht,FLOT/(2*NY*nx),LOCNE) ! (NY*nx) = cell number patch(heatexch,VOLUME,1,NX,1,NY,1,NZ,1,1000) SAVE13BEGIN (source of hs at heatexch is coeu*(temt-tems) with line) (source of ht at heatexch is coeu*(tems-temt) with line) ! with line has no effect because the depedent variables do not ! appear in the source expression (source of hs at heatexch is coeu*(temt-tems)) (source of ht at heatexch is coeu*(tems-temt)) SAVE13END Baffle 1 at NZ/3 PATCH(BAFFLE1,HIGH,1,3*NX/5,1,NY,NZ/3,NZ/3,1,1000) COVAL(BAFFLE1,W1,FIXVAL,0.0) ! no leakage is allowed for Baffle 2 at 2*NZ/3 PATCH(BAFFLE2,HIGH,2*NX/5+1,NX,1,NY,2*NZ/3,2*NZ/3,1,1000) COVAL(BAFFLE2,W1,FIXVAL,0.0) Resistance to flow exerted by tubes, throughout the shell. PATCH(RESIST,PHASEM,1,NX,1,NY,1,NZ,1,1000) ! 2,NZ ?? COVAL(RESIST,U1,RESCO,0.0); COVAL(RESIST,V1,RESCO,0.0) COVAL(RESIST,W1,0.5*RESCO,0.0) GROUP 15. Termination of sweeps LSWEEP=200 GROUP 16. Termination of iterations LITER(ps)=100 GROUP 17. Under-relaxation devices RELAX(U1,FALSDT,0.1);RELAX(V1,FALSDT,0.1) RELAX(W1,FALSDT,0.1) relax(ps,linrlx,0.5) varmin(rho1)= 500 varmin(rhot)= 500 varmax(rho1)= 5000 varmax(rhot)= 5000 GROUP 21. Print-out of variables Print-out of porosities is suppressed. OUTPUT(EPOR,N,N,N,N,N,N);OUTPUT(NPOR,N,N,N,N,N,N) OUTPUT(HPOR,N,N,N,N,N,N) SAVE22BEGIN (longname of hs print as shell-side_fluid_enthalpy) (longname of tems print as shell-side_fluid_temperature) (longname of rho1 print as shell-side_fluid_density) (longname of cps print as shell-side_fluid_specific_heat) (longname of cond print as shell-side_fluid_thermal_conductivity) (longname of enul print as shell-side_fluid_kinematic_viscosity) (longname of ht print as tube-side_fluid_enthalpy) (longname of temt print as tube-side_fluid_temperature) (longname of rhot print as tube-side_fluid_density) (longname of cpt print as tube-side_fluid_specific_heat) (longname of cont print as tube-side_fluid_thermal_conductivity) (longname of enup print as tube-side_fluid_kinematic_viscosity) SAVE22END GROUP 21. Spot-value print-out IXMON=5;IYMON=5 GROUP 23. Field print-out and plot control IPLTL=LSWEEP;IPROF=1;ORSIZ=0.4;XZPR=T PATCH(TABMAP,CONTUR,1,NX,1,NY,NZ/2,NZ/2,1,1000) PLOT(TABMAP,hs,0.0,10.0);PLOT(TABMAP,ht,0.0,10.0) PATCH(TABYEQ3,CONTUR,1,NX,3,3,1,NZ,1,1000) PLOT(TABYEQ3,ps,0.0,10.0);PLOT(TABYEQ3,hs,0.0,10.0) PLOT(TABYEQ3,ht,0.0,10.0) LIBREF=800 tstswp=-1 #endpause #conprom #maxabs GROUP 24. Dumps for restarts