Project 1 - Parsing NASA thermodynamic data
Main Code
clear all
close all
clc
% Make directory
mkdir 'C:UserAdminDesktopNASA File Parsing '
% Reading Data File - NASA Thermodynamics
f1 = fopen('THERMO.dat','r')
gt = fgetl(f1);
% Obtain temprature - by reading header information
global_temp = fgetl(f1);
t = strsplit(global_temp);
% Covering string cells
global_low_temp = str2num(t{2});
global_medium_temp = str2num(t{3});
global_high_temp = str2num(t{4});
% Temprature Range
Temp = linspace(global_low_temp,global_high_temp,1000);
% Universal Gas Constant J/(mol-K)
R = 8.314;
% Skipping Comment Lines
for i = 1:3
gt = fgetl(f1);
end
for i = 1:53
gt = fgetl(f1);
A = strsplit(gt,' ');
Species_SP = (A{1})
line_1 = fgetl(f1);
a = strfind(line_1,'E');
% Extracting higher temperature coefficients
a1 = line_1(1:a(1)+3);
a1 = str2num(a1);
a2 = line_1(a(1)+4:a(2)+3);
a2 = str2num(a2);
a3 = line_1(a(2)+4:a(3)+3);
a3 = str2num(a3);
a4 = line_1(a(3)+4:a(4)+3);
a4 = str2num(a4);
a5 = line_1(a(4)+4:a(5)+3);
a5 = str2num(a5);
line_2 = fgetl(f1);
b= strfind(line_1,'E');;
a6 = line_2(1:b(1)+3);
a6 = str2num(a6);
a7 = line_2(a(1)+4:b(2)+3);
a7 = str2num(a7);
% Extracting Low Temperature Coefficients
a8 = line_2(b(2)+4:b(3)+3);
a8 = str2num(a8);
a9 = line_2(b(3)+4:b(4)+3);
a9 = str2num(a9);
a10 = line_2(b(4)+4:b(5)+3);
a10 = str2num(a10);
line_3 = fgetl(f1);
c = strfind(line_1,'E');
a11 = line_3(1:c(1)+3);
a11 = str2num(a11);
a12 = line_3(c(1)+4:c(2)+3);
a12 = str2num(a12);
a13 = line_3(c(2)+4:c(3)+3);
a13 = str2num(a13);
a14 = line_3(c(3)+4:c(4)+3);
a14 = str2num(a14);
% Specific Heat Calculations
Cp = Specific_heat(a1,a2,a3,a4,a5,a8,a9,a10,a11,a12,Temp,R,global_medium_temp);
% Enthalpy Calculations
H = Enthalpy(a1,a2,a3,a4,a5,a6,a8,a9,a10,a11,a12,a13,Temp,R,global_medium_temp);
% Entropy Calculation
S = Entropy_clc(a1,a2,a3,a4,a5,a7,a8,a9,a10,a11,a12,a14,Temp,R,global_medium_temp);
% Calculating molecular weight of species
Molecularweight(i) = Molecular_weight(Species_SP);
% Read and Write Molecular List
Molecular_list = fopen('Molecular_weight.txt','a+');
fprintf(Molecular_list,'Molecular weight of %s is %d n',Species_SP,Molecularweight);
fclose(Molecular_list);
% plotting(Cp,H,S,Temp,Species_SP)
% Saving as a folder
cur_dir =pwd;
mkdir(Species_SP);
cd(Species_SP);
% Plot 1, Specific heat (Cp) vs Temperature Range (Temp)
figure(1)
plot(Temp,Cp,'LineWidth',3,'Color','r');
xlabel('Temperature [K]');
ylabel('Specific Heat [kJ]');
title(sprintf('Varying Specific Heat with Temperature Range of %s',Species_SP));
grid on
saveas(figure(1),'Specific Heat.jpg');
% Plot 2, Enthalpy (H) vs Temperature Range (Temp)
figure(2)
plot(Temp,H,'LineWidth',3,'Color','b');
xlabel('Temperature [K]');
ylabel('Enthalpy [kJ/(mol)]');
title(sprintf('Varying Enthalpy with Temperature Range of %s',Species_SP));
grid on
saveas(figure(2),'Enthalpy.jpg');
% Plot 3, Entropy (S) vs Temperature Range (Temp)
figure(3)
plot(Temp,S,'LineWidth',3,'Color','g');
xlabel('Temperature [K]');
ylabel('Entropy [kJ/(mol-K)]');
title(sprintf('Varying Entropy with Temperature Range of %s',Species_SP));
grid on
saveas(figure(3),'Entropy.jpg');
cd(cur_dir);
% Molecular weight
M = Molecular_weight(Species_SP);
f2 = fopen('molecular mass','W');
fprintf('%s n %s n %f n','species','molecular mass',M)
fclose(f2)
end
Specific Heat function
function Cp = Specific_heat(a1,a2,a3,a4,a5,a8,a9,a10,a11,a12,Temp,R,global_medium_temp)
% Comparing with global temperature
% If less than global temperature - minimum coefficients taken
if Temp <= global_medium_temp
Cp = R*(a8 +(a9*Temp) +(a10*(Temp).^2) +(a11*(Temp).^3) +(a12*(Temp).^4));
else
Cp = R*(a1 +(a2*Temp) +(a3*(Temp).^2) +(a4*(Temp).^3) +(a5*(Temp).^4));
% Else maximum coefficints are taken
end
Enthalpy Function
% Enthalpy Calculation Function
function H = Enthalpy(a1,a2,a3,a4,a5,a6,a8,a9,a10,a11,a12,a13,Temp,R,global_medium_temp)
% Comparing with global temperature
% If less than global temperature - minimum coefficients are taken
if Temp <= global_medium_temp
H = R*Temp.*(a8 +((a9*Temp)/2) +((a10*(Temp).^2)/3) +((a11*(Temp).^3)/4) +((a12*(Temp).^4)/5) +((a13./Temp)));
else
% Else maximum coefficients are taken
H = R*Temp.*(a1 +((a2*Temp)/2) +((a3*(Temp).^2)/3) +((a4*(Temp).^3)/4) +((a5*(Temp).^4)/5) +((a6./Temp)));
end
Entropy Function
% Entropy Calculation Function
function S = Entropy_clc(a1,a2,a3,a4,a5,a7,a8,a9,a10,a11,a12,a14,Temp,R,global_medium_temp);
% Comparing with global temperature
% If less than global temperature -minimum coefficients are taken
if Temp <= global_medium_temp
S = R.*(a8.*log(Temp) +(a9.*Temp) +(a10*((Temp).^2)/2) +(a11*((Temp).^3)/3) +(a12*((Temp).^4)/4) +a14);
else
% Else - maximum coefficients are taken
S = R.*(a1.*log(Temp) +(a2.*Temp) +(a3*((Temp).^2)/2) +(a4*((Temp).^3)/3) +(a5*((Temp).^4)/4) +a7);
end
Molecular Weight Function
function Molecularweight = Molecular_weight(Species_SP)
% Standard - Atomic Name
atomic_name = ['H','C','O','N','A'];
%Hydrogen, Carbon, Oxygen, Nitrogen, Argon
fprintf('Molecular Weight of');
fprintf(Species_SP);
fprintf(' : ');
% Standard Atomic Number
Atomic_Weight = [1.008 12.011 15.999 14.007 39.948];
% Starting Range of Molecule
Molecularweight = 0;
% Adding Atomic number to obtain particular value
for i = 1:length(Species_SP)
for j = 1:length(atomic_name)
if strcmpi(Species_SP(i),atomic_name(j))
Molecularweight = Molecularweight +Atomic_Weight(j);
position = j;
end
end
n = str2num(Species_SP);
if n>1
Molecularweight = Molecularweight + Atomic_Weight(position)*(n-1);
end
end
fprintf('Molecular weight %s :',Species_SP);
fprintf('%d',Molecularweight);
disp(' ');
end
Code Explaination
mkdir To create new folder and save all graphs of code in that folder.
fopen To open the file.
fgetl To get reqiured information from data file.
strsplit To split temp and convert it into cell array.
str2num To convert string into numbers.
linspace To decide appropriate temperature range.
fprintf To take the molecular weight of all species form txt file.
fclose To close txt file.
cd To change the directory to save files.
Molecular wight of all species displayed in command window























Screenshot of directory where all all species are saved
