Skip to content

Instantly share code, notes, and snippets.

@mikofski
Created August 29, 2013 18:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikofski/6381616 to your computer and use it in GitHub Desktop.
Save mikofski/6381616 to your computer and use it in GitHub Desktop.
Thermal-physical properties of air at 1 atm between temperatures of 200 K and 350 K.
classdef air < handle
% AIR Thermal-physical properties of air at 1 atm between temperatures
% of 200 K and 350 K.
% Mark Mikofski
% Version 1-0, 2010-10-29
properties
description = 'air at 1 atm between 200 and 350 K'
end
properties
Temp
pRho
pDerRho
pMu
pDerMu
pK
pDerK
rhoi
drhoi
cpi
dcpi
ki
dki
mui
dmui
nui
dnui
alphai
dalphai
Pri
dPri
end
methods
function obj = air(Temp)
if nargin<1,Temp = 20;end
if ~isscalar(Temp),error('air:nonScalarTemp','Ambient temperature must be scalar.'),end
obj.Temp = Temp + 273.15;
% Incropera and DeWitt, Properties of Air at 1 atm
Tdata = [200;250;300;350]; % [K]
rhoData = [1.7458;1.3947;1.1614;0.9950]; % [kg/m^3]
%cpData = [1.007;1.006;1.007;1.009]*1e3; % [J/kg/K]
muData = [132.5;159.6;184.6;208.2]/1e7; % [kg/m/s]
kData = [18.1;22.3;26.3;30.0]/1e3; % [W/m/K]
% polynomial fits of air properties
obj.pRho = polyfit(1./Tdata,rhoData,3);
obj.pDerRho = polyder(obj.pRho);
obj.pMu = polyfit(Tdata,muData,3);
obj.pDerMu = polyder(obj.pMu);
obj.pK = polyfit(Tdata,kData,3);
obj.pDerK = polyder(obj.pK);
obj.rhoi = polyval(obj.pRho,1/obj.Temp);
obj.drhoi = polyval(obj.pDerRho,1/obj.Temp)*(-1/obj.Temp^2);
obj.cpi = 1007;
obj.dcpi = 0;
obj.ki = polyval(obj.pK,obj.Temp);
obj.dki = polyval(obj.pDerK,obj.Temp);
obj.mui = polyval(obj.pMu,obj.Temp);
obj.dmui = polyval(obj.pDerMu,obj.Temp);
obj.nui = obj.mui/obj.rhoi;
obj.dnui = obj.dmui/obj.rhoi - obj.mui*obj.drhoi/obj.rhoi^2;
%obj.dnui = (obj.dmui*obj.rhoi - obj.mui*obj.drhoi)/obj.rhoi^2;
obj.alphai = obj.ki/obj.rhoi/obj.cpi;
obj.dalphai = (obj.dki/obj.rhoi - obj.ki*obj.drhoi/obj.rhoi^2)/obj.cpi;
%dalphai = (obj.dki*obj.rhoi - obj.ki*obj.drhoi)/obj.rhoi^2/obj.cpi;
obj.Pri = obj.nui/obj.alphai;
obj.dPri = obj.dnui/obj.alphai - obj.nui*obj.dalphai/obj.alphai^2;
%dPri = (obj.dnui*obj.alphai - obj.nui*obj.dalphai)/obj.alphai^2;
end
function obj = setTemp(obj,Temp)
if ~isscalar(Temp),error('air:nonScalarTemp','Ambient temperature must be scalar'),end
obj.Temp = Temp + 273.15;
obj.rhoi = polyval(obj.pRho,1/obj.Temp);
obj.drhoi = polyval(obj.pDerRho,1/obj.Temp)*(-1/obj.Temp^2);
obj.cpi = 1007;
obj.dcpi = 0;
obj.ki = polyval(obj.pK,obj.Temp);
obj.dki = polyval(obj.pDerK,obj.Temp);
obj.mui = polyval(obj.pMu,obj.Temp);
obj.dmui = polyval(obj.pDerMu,obj.Temp);
obj.nui = obj.mui/obj.rhoi;
obj.dnui = obj.dmui/obj.rhoi - obj.mui*obj.drhoi/obj.rhoi^2;
%obj.dnui = (obj.dmui*obj.rhoi - obj.mui*obj.drhoi)/obj.rhoi^2;
obj.alphai = obj.ki/obj.rhoi/obj.cpi;
obj.dalphai = (obj.dki/obj.rhoi - obj.ki*obj.drhoi/obj.rhoi^2)/obj.cpi;
%dalphai = (obj.dki*obj.rhoi - obj.ki*obj.drhoi)/obj.rhoi^2/obj.cpi;
obj.Pri = obj.nui/obj.alphai;
obj.dPri = obj.dnui/obj.alphai - obj.nui*obj.dalphai/obj.alphai^2;
%dPri = (obj.dnui*obj.alphai - obj.nui*obj.dalphai)/obj.alphai^2;
end
function disp(obj)
prop = {'Temp','rhoi','drhoi','cpi','dcpi','ki','dki', ...
'mui','dmui','nui','dnui','alphai','dalphai','Pri','dPri'};
propStr = {'Temp','rho','drho/dT','cp','dcp/dT','k','dk/dT', ...
'mu','dmu/dT','nu','dnu/dT','alpha','dalpha/dT','Pr','dPr/dT'};
propUnits = {'[K]','[kg/m^3]','[kg/m^3/K]','[J/kg/K]','[J/kg/K^2]','[W/m/K]','[W/m/K^2]', ...
'[kg/m/s]','[kg/m/s/K]','[m^2/s]','[m^2/s/K]','[m^2/s]','[m^2/s/K]','','[1/K]'};
for n = 1:15
str = sprintf('%12s = %12.4g %s',propStr{n},obj.(prop{n}),propUnits{n});
disp(str)
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment