The Simple analysis function 'simple' 

The purpose of the simple function set is to evaluate the heat transfer and flow-friction effects of the three heat exchangers on the performance of the engine. Recall that the non-ideal heater and regenerator result in the mean effective temperature of the gas in the heater space (Th) being lower than that of the heater wall (Twh). Similarly the non-ideal cooler and regenerator result in the mean effective temperature of the gas in the cooler space (Tk) being higher than that of the cooler wall (Twk). The functions hotsim, kolsim and regsim (evaluating Qrloss) iteratively determines these temperature differences using the convective heat transfer equations, the values of Qh and Qk being evaluated by the Ideal Adiabatic analysis function adiab.



Finally function worksim is invoked to evaluate the reduction in power due to the flow friction pressure drop loss through the heat exchangers.

function [var,dvar] = simple
% simple analysis - including heat transfer and pressure drop effects
% Israel Urieli, 7/22/2002 (modified 12/3/2003 for temp plots)
% Modified 2/7/2010 to include qrloss in hotsim & kolsim
% Modified 2/15/2010 logical reorganization
% 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 cqwr % regenerator housing thermal conductance [W/K]
twk = tk; % Cooler wall temp - equal to initial cooler gas temp
twh = th; % Heater wall temp - equal to initial heater gas temp
epsilon = 1; % allowable temperature error bound for cyclic convergence
terror = 10*epsilon; % Initial temperature error (to enter loop)
while (terror>epsilon)
      [var,dvar] = adiab;
      qrloss = regsim(var); % included 2/7/2010
      tgh = hotsim(var,twh,qrloss); % new heater gas temperature
      tgk = kolsim(var,twk,qrloss); % new cooler gas temperature
      terror = abs(th - tgh) + abs(tk - tgk);
      th = tgh;
      tk = tgk;
      tr = (th-tk)/log(th/tk);
end
fprintf('===== converged heater and cooler mean temperatures =====\n');
fprintf('heater wall/gas temperatures: Twh = %.1f[K], Th = %.1f[K]\n',twh,th);
fprintf('cooler wall/gas temperatures: Twk = %.1f[K], Tk = %.1f[K]\n',twk,tk);
% 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(' Ideal Adiabatic Thermal efficiency: %.1f[%%]\n', eff*100);
fprintf('============= Regenerator analysis results============\n');
fprintf(' Regenerator net enthalpy loss: %.1f[W]\n', qrloss*freq);
qwrl = cqwr*(twh - twk)/freq;
fprintf(' Regenerator wall heat leakage: %.1f[W]\n', qwrl*freq);
% Temperature plot of the simple simulation results
                figure
                x = 0:10:360;
                Tcomp = var(TC,:);
                Texp = var(TE,:);
                plot(x,Tcomp,'b-',x,Texp,'r-');
                hold on
                x = [0,360];
                y = [twk,twk];
                plot(x,y,'b--')
                y = [tk,tk];
                plot(x,y,'b-')
                y = [tr,tr];
                plot(x,y,'g-')
                y = [th,th];
                plot(x,y,'r-')
                y = [twh,twh];
                plot(x,y,'r--')
                hold off
                grid on
                xlabel('Crank angle (degrees)');
                ylabel('Temperature (K)');
                title('Simple Simulation - Wall and Gas Temps vs crank angle');
% Various plots of the ideal adiabatic simulation results
plotadiab(var,dvar);
fprintf('========= pressure drop simple analysis =============\n');
dwork = worksim(var,dvar);
fprintf(' Pressure drop available work loss: %.1f[W]\n', dwork*freq)
actWpower = Wpower - dwork*freq;
actQhpower = Qhpower + qrloss*freq + qwrl*freq;
acteff = actWpower/actQhpower;
fprintf(' Actual power from simple analysis: %.1f[W]\n', actWpower); 
fprintf(' Actual heat power in from simple analysis: %.1f[W]\n', actQhpower); 
fprintf(' Actual efficiency from simple analysis: %.1f[%%]\n', acteff*100); 



______________________________________________________________________________________


Stirling Cycle Machine Analysis by Israel Urieli is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License