Heat Exchanger functions (heatex)

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