The ideal adiabatic model function 'adiabatic'
The purpose of the adiabatic function set is to
determine the numerical solution of the
ideal adiabatic model equation set (refer to the Equation
Summary and Method of Solution).
Recall in the equation set that apart from the constants, there are
22 variables and 16 derivatives to be solved over a complete cycle (θ
= [0, 2π]) as follows:
Tc, Te, Qk, Qr, Qh, Wc, We - seven
derivatives to be integrated numerically
W,
p, Vc, Ve, mc, mk, mr, mh, me - nine analytical variables and
derivatives
Tck,
The, mck', mkr', mrh', mhe' - six conditional and mass flow variables
(derivatives undefined)
Function adiabatic invokes the function set adiab to fill in the solution matrices var and dvar over a complete cycle, and then invokes function plotadiab (shown below) to do the required plots of the simulation results.
function [var,dvar] = adiabatic
% ideal adiabatic simulation and temperature/energy vs theta plots
% Israel Urieli, 7/20/2002
% Returned values:
% var(22,37) array of variable values every 10 degrees (0 - 360)
% dvar(16,37) array of derivatives every 10 degrees (0 - 360)
% Row indices of the var, dvar arrays:
TC = 1; % Compression space temperature (K)
TE = 2; % Expansion space temperature (K)
QK = 3; % Heat transferred to the cooler (J)
QR = 4; % Heat transferred to the regenerator (J)
QH = 5; % Heat transferred to the heater (J)
WC = 6; % Work done by the compression space (J)
WE = 7; % Work done by the expansion space (J)
W = 8; % Total work done (WC + WE) (J)
P = 9; % Pressure (Pa)
VC = 10; % Compression space volume (m^3)
VE = 11; % Expansion space volume (m^3)
MC = 12; % Mass of gas in the compression space (kg)
MK = 13; % Mass of gas in the cooler (kg)
MR = 14; % Mass of gas in the regenerator (kg)
MH = 15; % Mass of gas in the heater (kg)
ME = 16; % Mass of gas in the expansion space (kg)
TCK = 17; % Conditional temperature compression space / cooler (K)
THE = 18; % Conditional temeprature heater / expansion space (K)
GACK = 19; % Conditional mass flow compression space / cooler (kg/rad)
GAKR = 20; % Conditional mass flow cooler / regenerator (kg/rad)
GARH = 21; % Conditional mass flow regenerator / heater (kg/rad)
GAHE = 22; % Conditional mass flow heater / expansion space (kg/rad)
% Size of var(ROWV,COL), dvar(ROWD,COL)
ROWV = 22; % number of rows in the var matrix
ROWD = 16; % number of rows in the dvar matrix
COL = 37; % number of columns in the matrices (every 10 degrees)
%================================================================
global freq % cycle frequency [herz]
global tk tr th % cooler, regenerator, heater temperatures [K]
global vk % cooler void volume [m^3]
global vr % regen void volume [m^3]
global vh % heater void volume [m^3]
% do ideal adiabatic analysis:
[var,dvar] = adiab;
% Print out ideal adiabatic analysis results
eff = var(W,COL)/var(QH,COL); % engine thermal efficency
Qkpower = var(QK,COL)*freq; % Heat transferred to the cooler (W)
Qrpower = var(QR,COL)*freq; % Heat transferred to the regenerator (W)
Qhpower = var(QH,COL)*freq; % Heat transferred to the heater (W)
Wpower = var(W,COL)*freq; % Total power output (W)
fprintf('========== ideal adiabatic analysis results ============\n')
fprintf(' Heat transferred to the cooler: %.2f[W]\n', Qkpower);
fprintf(' Net heat transferred to the regenerator: %.2f[W]\n', Qrpower);
fprintf(' Heat transferred to the heater: %.2f[W]\n', Qhpower);
fprintf(' Total power output: %.2f[W]\n', Wpower);
fprintf(' Thermal efficiency : %.1f[%%]\n', eff*100);
fprintf('========================================================\n')
% Various plots of the ideal adiabatic simulation results
plotadiab(var,dvar);
|
Function plotadiab
is invoked both by function adiabatic
(above) and by function simple.
function plotadiab(var,dvar)
% various plots of ideal adiabatic simulation results
% Israel Urieli, 7/21/2002 (corrected temp plots 12/3/2003)
% Arguments:
% var(22,37) array of variable values every 10 degrees (0 - 360)
% dvar(16,37) array of derivatives every 10 degrees (0 - 360)
% Row indices of the var, dvar arrays:
TC = 1; % Compression space temperature (K)
TE = 2; % Expansion space temperature (K)
QK = 3; % Heat transferred to the cooler (J)
QR = 4; % Heat transferred to the regenerator (J)
QH = 5; % Heat transferred to the heater (J)
WC = 6; % Work done by the compression space (J)
WE = 7; % Work done by the expansion space (J)
W = 8; % Total work done (WC + WE) (J)
P = 9; % Pressure (Pa)
VC = 10; % Compression space volume (m^3)
VE = 11; % Expansion space volume (m^3)
MC = 12; % Mass of gas in the compression space (kg)
MK = 13; % Mass of gas in the cooler (kg)
MR = 14; % Mass of gas in the regenerator (kg)
MH = 15; % Mass of gas in the heater (kg)
ME = 16; % Mass of gas in the expansion space (kg)
TCK = 17; % Conditional temperature compression space / cooler (K)
THE = 18; % Conditional temeprature heater / expansion space (K)
GACK = 19; % Conditional mass flow compression space / cooler (kg/rad)
GAKR = 20; % Conditional mass flow cooler / regenerator (kg/rad)
GARH = 21; % Conditional mass flow regenerator / heater (kg/rad)
GAHE = 22; % Conditional mass flow heater / expansion space (kg/rad)
% Size of var(ROWV,COL), dvar(ROWD,COL)
ROWV = 22; % number of rows in the var matrix
ROWD = 16; % number of rows in the dvar matrix
COL = 37; % number of columns in the matrices (every 10 degrees)
%================================================================
global tk tr th % cooler, regenerator, heater temperatures [K]
global vk % cooler void volume [m^3]
global vr % regen void volume [m^3]
global vh % heater void volume [m^3]
choice = 'x';
while(~strncmp(choice,'q',1))
fprintf('Choose plot type:\n');
fprintf(' p - for a PV diagram\n');
fprintf(' t - for a temperature vs crank angle plot\n');
fprintf(' e - for an energy vs crank angle plot\n');
fprintf(' q - to quit\n');
choice = input('p)vdiagram, t)emperature, e)nergy, q)uit: ','s');
if (strncmp(choice,'p',1))
figure
vol = (var(VC,:) + vk + vr + vh + var(VE,:))*1e6; % cubic centimeters
pres = (var(P,:))*1e-5; % bar
plot(vol,pres, 'k')
grid on
xlabel('Volume (cc)')
ylabel('Pressure (bar [1bar = 100kPa])')
title('P-v diagram')
elseif (strncmp(choice,'t',1))
figure
x = 0:10:360;
Tcomp = var(TC,:);
Texp = var(TE,:);
plot(x,Tcomp,'b-',x,Texp,'r-');
hold on
x = [0,360];
y = [tk,tk];
plot(x,y,'b-')
y = [tr,tr];
plot(x,y,'g-')
y = [th,th];
plot(x,y,'r-')
hold off
grid on
xlabel('Crank angle (degrees)');
ylabel('Temperature (K)');
title('Temperature vs crank angle');
elseif (strncmp(choice,'e',1))
figure
x = 0:10:360;
Qkol = var(QK,:); % [J]
Qreg = var(QR,:); % [J]
Qhot = var(QH,:); % [J]
Work = var(W,:); % [J]
Wcom = var(WC,:); % [J]
Wexp = var(WE,:); % [J]
plot(x,Qkol,'b-',x,Qreg,'g-',x,Qhot,'r-',x,Work,'k-.',x,Wcom,'b--',x,Wexp,'r--');
grid on
xlabel('Crank angle (degrees)');
ylabel('Energy [Joules]');
title('Energy vs crank angle');
end
end
fprintf('quitting ideal adiabatic plots...\n');
|
______________________________________________________________________________________
Stirling Cycle Machine Analysis by Israel
Urieli is licensed under a Creative
Commons Attribution-Noncommercial-Share Alike 3.0 United States
License