The purpose of the heatex function is to select the heat exchanger types for the heater and cooler (or heat acceptor and heat rejector for refrigerators) as well as for the regenerator.
function heatex % Specify heat exchanger geometric parameters % Israel Urieli 3/31/02 (modified 12/01/03) cooler; regen; heater; %========================================================
The purpose of the three heat
exchanger functions is to specify values for the global variables
subsequently used in the Schmidt analysis, Ideal Adiabatic or Simple
simulations. Each global variable has the subscript h for heater, r
for regenerator, and k for cooler (subscript c is used for
compression space in the engine routines). For the heater and cooler
the variables are defined as follows:
v = void
volume (cu.m) - used only in the Schmidt and Ideal Adiabatic
functions
The following variables are used only in the Simple
simulation.
a = internal free flow area (sq.m)
awg = internal
wetted area (sq.m) - subscript wg refers to wall/gas
d = hydraulic
diameter (m) – refer to
Chapter
5a - Scaling Parameters
l = effective
length (m)
This learning resource includes three types of heat exchangers used in the heater and cooler: pipes (as used in the Ford-Philips 4-215 engine), annular slots (as used in the D-90 Ross Yoke-drive engine) and annulus (as used in the Ross RockerV engine).
function cooler % Specify cooler geometric parameters % Israel Urieli 4/15/02 global vk % cooler void volume [m^3] global ak % cooler internal free flow area [m^2] global awgk % cooler internal wetted area [m^2] global dk % cooler hydraulic diameter [m] global lk % cooler effective length [m] global new fid % new data file cooler_type = 'u' ; while (strncmp(cooler_type, 'u' ,1)) if (strncmp(new, 'y' ,1)) fprintf( 'Available cooler types are:\n' ) fprintf( ' p, for smooth pipes\n' ) fprintf( ' a, for smooth annulus\n' ) fprintf( ' s, for slots\n' ) cooler_type = input( 'enter cooler type ' , 's' ); fprintf(fid, '%c\n', cooler_type(1)); else fscanf(fid, '%c' ,1); % bypass the previous newline character cooler_type = fscanf(fid, '%c' ,1); end if (strncmp(cooler_type, 'p' ,1)) [vk,ak,awgk,dk,lk] = pipes; elseif (strncmp(cooler_type, 'a' ,1)) [vk,ak,awgk,dk,lk] = annulus; elseif (strncmp(cooler_type, 's' ,1)) [vk,ak,awgk,dk,lk] = slots; else fprintf( 'cooler type is undefined\n' ) cooler_type = 'u' ; end end fprintf( 'cooler data summary:\n' ); fprintf( ' void volume(cc) %.2f\n' , vk*1e6) fprintf( ' free flow area (cm^2) %.2f\n' , ak*1e2) fprintf( ' wetted area (cm^2) %.2f\n' , awgk*1e2) fprintf( ' hydraulic diameter(mm) %.2f\n' , dk*1e3) fprintf(' cooler length (cm) %.2f\n' , lk*1e2) %======================================================== function heater % Specify heater geometric parameters % Israel Urieli 4/15/02 global vh % heater void volume [m^3] global ah % heater internal free flow area [m^2] global awgh % heater internal wetted area [m^2] global dh % heater hydraulic diameter [m] global lh % heater effective length [m] global new fid % new data file heater_type = 'u' ; while (strncmp(heater_type, 'u' ,1)) if (strncmp(new, 'y' ,1)) fprintf( 'Available heater types are:\n' ) fprintf( ' p, for smooth pipes\n' ) fprintf( ' a, for smooth annulus\n' ) fprintf( ' s, for slots\n' ) heater_type = input( 'enter heater type ' , 's' ); fprintf(fid, '%c\n' , heater_type(1)); else fscanf(fid, '%c' ,1); % bypass the previous newline character heater_type = fscanf(fid, '%c' ,1); end if (strncmp(heater_type, 'p' ,1)) [vh,ah,awgh,dh,lh] = pipes; elseif (strncmp(heater_type, 'a' ,1)) [vh,ah,awgh,dh,lh] = annulus; elseif strncmp(heater_type, 's' ,1)) [vh,ah,awgh,dh,lh] = slots; else fprintf( 'heater type is undefined\n' ) heater_type = 'u' ; end end fprintf( 'heater data summary:\n' ); fprintf( ' void volume(cc) %.2f\n' , vh*1e6) fprintf( ' free flow area (cm^2) %.2f\n' , ah*1e2) fprintf( ' wetted area (cm^2) %.2f\n' , awgh*1e2) fprintf( ' hydraulic diameter(mm) %.2f\n' , dh*1e3) fprintf( ' heater length (cm) %.2f\n' , lh*1e2) %========================================================
The
following functions are the three types of heat exchanger invoked by
functions
heater
and
cooler
:
function [v,a,awg,d,len] = pipes % homogeneous smooth pipes heat exchanger % Israel Urieli 4/15/02 global new fid % new data file fprintf( 'homogeneous bundle of smooth pipes\n' ) if (strncmp(new, 'y' ,1)) d = input( 'enter pipe inside diameter [m] : ' ); len = input( 'enter heat exchanger length [m] : ' ); num = input( 'enter number of pipes in bundle : ' ); fprintf(fid, '%.3e\n' , d); fprintf(fid, '%.3e\n' , len); fprintf(fid, '%d\n' , num); else d = fscanf(fid, '%e' ,1); len = fscanf(fid, '%e' ,1); num = fscanf(fid, '%d' ,1); end a = num*pi*d*d/4; v = a*len; awg = num*pi*d*len; %======================================================== function [v,a,awg,d,len] = annulus % annular gap heat exchanger % Israel Urieli 12/01/03 % Modified 2/14/2010 wetted area global new fid % new data file fprintf( ' annular gap heat exchanger\n' ) if (strncmp(new,'y',1)) dout = input( 'enter annular gap outer diameter [m] : ' ); din = input( 'enter annular gap inner diameter [m] : ' ); len = input( 'enter heat exchanger length [m] : ' ); fprintf(fid, '%.3e\n' , dout); fprintf(fid, '%.3e\n' , din); fprintf(fid, '%.3e\n' , len); else dout = fscanf(fid, '%e' ,1); din = fscanf(fid, '%e' ,1); len = fscanf(fid, '%e' ,1); end a = pi*(dout*dout - din*din)/4; v = a*len; awg = pi*dout*len; d = dout - din; %======================================================== function [v,a,awg,d,len] = slots % slots heat exchanger % Israel Urieli 12/01/03 % Modified 2/14/2010 wetted area global new fid % new data file fprintf( ' slots heat exchanger\n' ) if (strncmp(new, 'y' ,1)) w = input( 'enter width of slot [m] : ' ); h = input( 'enter height of slot [m] : ' ); len = input( 'enter heat exchanger length [m] : ' ); num = input( 'enter number of slots : ' ); fprintf(fid, '%.3e\n' , w); fprintf(fid, '%.3e\n' , h); fprintf(fid, '%.3e\n' , len); fprintf(fid, '%d\n' , num); else w = fscanf(fid, '%e' ,1); h = fscanf(fid, '%e' ,1); len = fscanf(fid, '%e' ,1); num = fscanf(fid, '%d' ,1); end a = num*w*h; v = a*len; awg = num*(w + 2*h)*len; d = 4*v/awg; %========================================================
The
regen
function module is described in
Regenerator
functions
.
Stirling Cycle Machine Analysis
by Israel
Urieli
is licensed under a Creative
Commons Attribution-Noncommercial-Share Alike 3.0 United States
License
(740) 593–9381 | Building 21, The Ridges
Ohio University | Athens OH 45701 | 740.593.1000 ADA Compliance | © 2018 Ohio University . All rights reserved.