Project 1 - Parsing NASA thermodynamic data
Program to parse the NASA file and to plot the required graphs
AIM
To write the program to parse the file and to calculate the entropy , enthalpy , specific heat and molecular weight of the given elements.
Introduction:
Enthalpy:
Enthalpy (H) is the sum of the internal energy (U) and the product of pressure and volume (PV) given by the equation: H=U+PV.
Entropy:
Entropy, the measure of a system's thermal energy per unit temperature that is unavailable for doing useful work.
Specific heat:
The specific heat is the amount of heat per unit mass required to raise the temperature by one degree Celsius.
Molecular weight:
The molecular mass (m) is the mass of a given molecule: it is measured in daltons (Da or u).
Enthalpy, entropy, molecular weight, and specific heat of given elements are calculated using the below formulea.
Formulae:

Program of parsing of NASA file is as below:
close all
clear all
clc
%rearing the thermo file
file = fopen('THERMO.dat','r')
%Universal gas constant value
R =8.314;
%header
line1 = fgetl(file)
%temperature values
line2 = fgetl(file)
%comments for obtaining file
des_1 = fgetl(file)
des_2 = fgetl(file)
des_3 = fgetl(file)
A = strsplit(line2,' ');
Global_low_temperature = str2num(A{2})
Global_mid_temperature = str2num(A{3})
Global_high_temperature = str2num(A{4})
%information fo the species
%using for loop
for i=1:20
species= fgetl(file);
species_name = species(1:6)
Line_1 = fgetl(file);
L1 = strfind(Line_1,'E');
c1 = str2num(Line_1(1:(L1(1)+3)));
c2 = str2num(Line_1((L1(1)+4):(L1(2)+3)));
c3 = str2num(Line_1((L1(2)+4):(L1(3)+3)));
c4 = str2num(Line_1((L1(3)+4):(L1(4)+3)));
c5 = str2num(Line_1((L1(4)+4):(L1(5)+3)));
Line_2 = fgetl(file);
L2 = strfind(Line_2,'E');
c6 = str2num(Line_2(1:(L2(1)+3)));
c7 = str2num(Line_2((L2(1)+4):(L2(2)+3)));
c8 = str2num(Line_2((L2(2)+4):(L2(3)+3)));
c9 = str2num(Line_2((L2(3)+4):(L2(4)+3)));
c10 = str2num(Line_2((L2(4)+4):(L2(5)+3)));
Line_3 = fgetl(file);
L3 = strfind(Line_3,'E');
c11 = str2num(Line_3(1:(L3(1)+3)));
c12 = str2num(Line_3((L3(1)+4):(L3(2)+3)));
c13 = str2num(Line_3((L3(2)+4):(L3(3)+3)));
c14 = str2num(Line_3((L3(3)+4):(L3(4)+3)));
%creating new folder for species
mkdir(['E:\AKSHAY\SKILL LYNC\Matlab_skill_lync\projects\Species\',species_name]);
%Temperature ranges assumed
Temperature = linspace(300,5000,100);
%calculation of properties based on lower and higher temperatures
for j = 1:length(Temperature)
if Temperature(j)<3000
Cp = (c1+c2.*Temperature+c3.*Temperature.^2+c4.*Temperature.^3+c5.*Temperature.^4).*R;
H = (c1+(c2.*Temperature)./2+(c3.*Temperature.^2)/3+(c4.*Temperature.^3)/4+(c5.*Temperature.^4/5)+c6./Temperature).*Temperature.*R;
S = (c1*log(Temperature)+c2.*Temperature+(c3.*Temperature.^2)/2+(c4.*Temperature.^3)/3+(c5.*Temperature.^4)/4+c7).*R;
else
Cp = (c8+c9.*Temperature+c10.*Temperature.^2+c11.*Temperature.^3+c12.*Temperature.^4).*R;
H = (c8+(c9.*Temperature)/2+(c10.*Temperature.^2)/3+(c11.*Temperature.^3)/4+(c12.*Temperature.^4/5)+c13./Temperature).*Temperature.*R;
S = (c8.*log(Temperature)+c9.*Temperature+(c10.*Temperature.^2)/2+(c11.*Temperature.^3)/3+(c12.*Temperature.^4)/4+c14).*R;
end
end
%plotting graph
%Temperature vs Entropy
figure(1)
plot(Temperature,S,'linewidth',3,'color','g')
title(species_name)
xlabel('Temperature')
ylabel('Entropy')
%Temperature vs Enthalpy
figure(2)
plot(Temperature,H,'linewidth',3,'color','r')
title(species_name)
xlabel('Temperature')
ylabel('Enthalpy')
%Temperature vs Specific heat
figure(3)
plot(Temperature,Cp,'linewidth',3,'color','b')
title(species_name)
xlabel('Temperature')
ylabel('Specific heat')
directory = (['E:\AKSHAY\SKILL LYNC\Matlab_skill_lync\projects\Species\',species_name]); %changing the filepath to save the plots
cd(directory)
%saving the plots
saveas(1,'Entropy.jpg');
saveas(2,'Enthalpy.jpg');
saveas(3,'Specific heat.jpg');
cd('E:\AKSHAY\SKILL LYNC\Matlab_skill_lync\projects\') %switching the directory back to read thermodat file for molecular mass calculation
[MW] = molecular_weight(species_name)
end
fclose(file)
function for molecular weight is defined which is as given below:
%defining fuction to calculate molecular weight
function [MW] = molecular_weight(species_name)
species = upper(species_name);
Constituents = ['H', 'C', 'N', 'O', 'A'];
Atomic_weight = [1.00794 12.0107 14.0067 15.9994 39.948];
MW = 0; %initial
for i=1:length(species)
for j=1:length(Constituents)
if strcmp(species(i),Constituents(j))
MW = MW + Atomic_weight(j);
u = j;
end
end
n = str2num(species(i));
if n>1
MW = MW + Atomic_weight(u)*(n-1);
end
end
end
Explanation for the program:
file parsing is done using fopen(), fgetl(), fclose() commands. plot for various elements is done using for loop . where the molecular function is defined using for loop. plots of all the elements are saved into a single file. the screenshot of the window is shown below.

figure: screenshot of the window
plots of the elemet O2,CO2 are shown below:

Result:
The program is written to calculate the enthalpy,entropy,specific heat and molecular weight are calculated. The plots of all the species are saved and the required plots are shown above.