Project 1 - Parsing NASA thermodynamic data
AIM-
1. Write a function that extracts the 14 co-efficients and calculates the enthalpy, entropy and specific heats for all the species in the data file. You will be reading this file NASA thermodynamic data(Tip: use fopen and fgetl). The formulae are shown below.
Here R is the universal gas constant, T is the temeprature
The FIRST 7 coefficients are HIGH-temperature coefficients and the SECOND 7 coefficients are LOW-temperature coefficients.
Also use the LOCAL TEMPERATURE RANGES which is unique for each individual species, not the GLOBAL TEMPERATURE RANGE.
2. Calculate the molecular weight of each species and display it in the command window.
3. Plot the Cp, Enthalpy and Entropy for the local temperature range (low temperature : high temperature) specific for each species.
4. Save the plots as images with appropriate names and dump them in separate folders for each species with suitable name. All these should be generated automatically.
5. The main program that you will submit will just take the "THERMO.dat" file as an input and generate Cp, H and S plots.
THEORY:-
FILE PARSHING-
It is a process of a reading a data and building a memory model of the content of tha data. the is to performing some kind of transformation on the data. parshing split the data file or other input into a piecse of data that can be easliy stored or manipulated
Mathematical Equation-:
PROGRAM-:
The program for file parashing
%File parshing
%Nasa thermodynamic
f1= fopen('THERMO','r');
%reading header information
fgetl(f1);
%global temperature
t_line= fgetl(f1);
a=strsplit(t_line,' ');
global_low_temp=str2double(a{2});
global_mid_temp=str2double(a{3});
global_high_temp=str2double(a{4});
%neglecting the 3 lines
fgetl(f1);
fgetl(f1);
fgetl(f1);
%reading species block
%line 1
for i =1:53
t_line2=fgetl(f1);
s=strsplit(t_line2,' ');
species_name=s{1};
A=strfind(t_line2,'G');
temp_values=t_line2(A+4:length(t_line2));
B=strsplit(temp_values,' ');
local_low_temp=str2double(B{1});
local_mid_temp=str2double(B{2});
local_high_temp=str2double(B{3});
t_line= fgetl(f1);
b=findstr(t_line,'E');
%1st coefficient
b1=t_line(1:b(1)+3);
b1=str2num(b1);
%2st coefficient
b2=t_line(b(1)+4:b(2)+3);
b2=str2num(b2);
%3rd coefficent
b3= t_line(b(2)+4:b(3)+3);
b3=str2num(b3);
%4st coefficient
b4=t_line(b(3)+4:b(4)+3);
b4=str2num(b4);
%5st coefficient
b5=t_line(b(4)+4:b(5)+3);
b5=str2num(b5);
%line2
line2=fgetl(f1);
%6th coefficent
b6=line2(1:b(1)+3);
b6=str2num(b6);
%7th coefficent
b7=line2(b(1)+4:b(2)+3);
b7=str2num(b7);
%8th coefficent
b8=line2(b(2)+4:b(3)+3);
b8=str2num(b8);
%9th coefficent
b9=line2(b(3)+4:b(4)+3);
b9=str2num(b9);
%10th coefficent
b10=line2(b(4)+4:b(5)+3);
b10=str2num(b10);
%line3
line3=fgetl(f1);
%11th coefficent
b11=line3(1:b(1)+3);
b11=str2num(b11);
%12th coefficent
b12=line3(b(1)+4:b(2)+3);
b12=str2num(b12);
%13th coefficent
b13=line3(b(2)+4:b(3)+3);
b13=str2num(b13);
%14th coefficent
b14=line3(b(3)+4:b(4)+3);
b14=str2num(b14);
%universal constant
r= 8.314;
t=linspace(local_low_temp,local_high_temp,100);
%to calculate
c_p=specfic_heat(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,local_low_temp,local_mid_temp,local_high_temp,t,r);
H=enthalpy(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,local_low_temp,local_mid_temp,local_high_temp,t,r);
S=entropy(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,local_low_temp,local_mid_temp,local_high_temp,t,r);
%creating a folder
mkdir(['c:',species_name])
cd(species_name)
%ploting
%tvs c_P
figure(1)
plot(t,c_p,LineWidth=2)
xlabel('temperature')
ylabel('specfic heat')
title('temp vs specfic heat')
image=getframe(gcf);
imwrite(image.cdata,'t vs cp.png')
saveas(1,'specfic heat','jpg')
%temp vs enthalphy
figure(2)
plot(t,H,'color','g',LineWidth=2)
xlabel('temperature')
ylabel('enthalpy')
title('temp vs enthalpy')
image=getframe(gcf);
imwrite(image.cdata,'t vs H.png')
saveas(2,'enthalpy','jpg')
%tempvs entrophy
figure(3)
plot(t,S,'color','r',LineWidth=2)
xlabel('temperature')
ylabel('entrophy')
title('temp vs entrophy')
image=getframe(gcf);
imwrite(image.cdata,'t vs S.png')
saveas(3,'entropy','jpg')
cd ..
%calculating moleculat mass
M= molecular_wt(species_name);
K=sprintf('%s mol_wt=%f',species_name,M);
disp(K)
end
function program-:
1).Enthalphy :
function H=enthalpy(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,local_low_temp,local_mid_temp,local_high_temp,t,r)
if (t>local_mid_temp)
H= (b1+((b2.*t)/2)+((b3.*(t.^2))/3)+((b4.*(t.^3))/4)+((b5.*(t.^4))/5)+(b6./t)).*t*r;
else
H=(b8+((b9.*t)/2)+((b10.*(t.^2))/3)+((b11.*(t.^3))/4)+((b12.*(t.^4))/5)+(b13./t)).*t*r;
end
2).Entrophy:
function S=entropy(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,local_low_temp,local_mid_temp,local_high_temp,t,r)
if (t>local_mid_temp)
S=((b1.*logt)+(b2.*t)+((b3.*(t.^2))/2)+((b4.*(t.^3))/3)+(b5.*(t.^4))+b7);
else
S=((b8.*log(t))+(b9.*t)+((b10.*(t.^2))/2)+((b11.*(t.^3))/3)+(b12.*(t.^4))+b14)*r;
end
3). Specfic heat:
function c_p=specfic_heat(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,local_low_temp,local_mid_temp,local_high_temp,t,r)
if (t>local_mid_temp)
c_p=r*(b1+(b2.*t)+(b3.*(t.^2))+(b4.*(t.^3))+(b5.*(t.^4)));
else
c_p=r*(b8+(b9.*t)+(b10.*(t.^2))+(b11.*(t.^3))+(b12.*(t.^4)));
end
4).Molecular weight:
function M=molecular_wt(species_name)
atomic_mass = [15.999,1.008,12.011,14.007,39.948]
elements = ['o','h','c','n','a']
mol_wt=0;
for i = 1:length(species_name)
for j=1:length(elements)
if strcmpi(species_name(i),elements(j))
mol_wt=mol_wt+atomic_mass(j);
z=j;
end
end
t=str2double(species_name(i));
if(t>1)
mol_wt=mol_wt+(atomic_mass(z))
end
end
M=mol_wt
end
OUTPUT
for O2



FOR N2



For CO2



WORKSPACE & FILES


MOLECULAR WEIGHT
