Project 1 - Parsing NASA thermodynamic data
Aim : To write matlab code for parsing the NASA thermodynamic Data file and to extract 14 coeefficients thermodynamic properties like Cp H and S for all the species in the data file
To find out molecular mass of each species and finally plot a graph of enthalpy, entropy, and Cp with respect to Temperature
Formulas Used

clear all
close all
clc
% getting file data
f1 = fopen('THERMO3.dat','r');
fgetl(f1);
tline = fgetl(f1);
A = strsplit(tline,' ');
Global_low_temp = str2num(A{2});
Global_med_temp = str2num(A{3});
Global_high_temp = str2num(A{4});
%skip lines
for i=1:3
fgetl(f1);
end
%reading species
for i=1:53
header=fgetl(f1);
x=strsplit(header,' ');
species_name=(x{1});
z=length(x);
local_low_temp = str2double(x{z-3});
local_high_temp = str2double(x{z-2});
local_mid_temp = str2double(x{z-1});
t1=local_low_temp;
t2=local_mid_temp;
t3=local_high_temp;
%get 1st line coefficients
line_1=fgetl(f1);
a=strfind(line_1,'E');
a1=str2double(line_1(1:a(1)+3));
a2=str2double(line_1(a(1)+4:a(2)+3));
a3=str2double(line_1(a(2)+4:a(3)+3));
a4=str2double(line_1(a(3)+4:a(4)+3));
a5=str2double(line_1(a(4)+4:a(5)+3));
%get 2nd line coefficients
line_2=fgetl(f1);
a_1=strfind(line_2,'E');
a6=str2num(line_2(1:a_1(1)+3));
a7=str2double(line_2(a_1(1)+4:a_1(2)+3));
a8=str2double(line_1(a_1(2)+4:a_1(3)+3));
a9=str2double(line_2(a_1(3)+4:a_1(4)+3));
a10=str2double(line_2(a_1(4)+4:a_1(5)+3));
%get 3rd line coeffs
line_3=fgetl(f1);
a_2=strfind(line_1,'E');
a11=str2double(line_3(1:a_2(1)+3));
a12=str2double(line_3(a_2(1)+4:a_2(2)+3));
a13=str2double(line_3(a_2(2)+4:a_2(3)+3));
a14=str2double(line_3(a_2(3)+4:a_2(4)+3));
%create folder
mkdir(['C:\Users\HP\Documents\MATLAB',species_name]);
T=linspace(t1,t3,1000);
R=80314;
for k=1:length(T)
%compare temps
%a1-a7 high and a8-a14 low
if T(k)>t2
%high temp coeffs
cp=(a1+a2.*T +a3.*T.^2 +a4.*T.^3 +a5.*T.^4)*R;
H=(a1+(a2.*T)/2 +(a3.*T.^2)/3 +(a4.*T.^3)/4+(a5.*T.^4)/5 +(a6./T))*R.*T
S=a1.*log(T) +a2.*T +(a3.*T.^2)/2 +(a4.*T.^3)/3 +(a5.*T.^4)/4 +a7
else
cp=(a8+a9.*T +a10.*T.^2 +a11.*T.^3 +a12.*T.^4)*R;
H=(a8+(a9.*T)/2 +(a10.*T.^2)/3 +(a11.*T.^3)/4+(a12.*T.^4)/5 +(a13./T))*R.*T
S=a8.*log(T) +a9.*T +(a10.*T.^2)/2 +(a11.*T.^3)/3 +(a12.*T.^4)/4 +a14
end
end
%plot graphs
figure(1);
plot(T,cp);
grid on
title(species_name);
xlabel('Temperature');
ylabel('Specific HEat');
figure(2);
plot(T,H);
grid on;
title(species_name);
xlabel('Temperature');
ylabel('Enthalpy');
figure(3);
plot(T,S);
grid on;
title(species_name);
xlabel('Temperature');
ylabel('Entropy');
%change directory
saving=(['C:\Users\HP\Documents\MATLAB',species_name]);
cd(saving);
saveas(1,'specific heat','jpg');
saveas(2,'Enthalpy','jpg');
saveas(3,'entropy','jpg');
%molecular mass calc
elements=['H','C','O','N','A'];
atomic_weight=[1.0079 12.0107 15.999 14.0067 39.948];
mol_mass=0;
for l=1:length(species_name)
for m=1:length(atomic_weight)
if strcmp(species_name(1),elements(m))
mol_mass=mol_mass+atomic_weight(m);
position=m;
end
end
end
n=str2double(species_name(1));
if n>1
mol_mass=mol_mass+atomic_weight(position)*(n-1);
end
end
sprintf('Molecular Weight of %s:%f u',species_name,mol_mass)
fclose(f1)
Conclusion : The program runs on its own to extract data from the file, calculate sp heat, enthalpy entropy and plot its own variation with respect to temperature.