Project 1 - Parsing NASA thermodynamic data
AIM
TO PARSE THE THERMODYNAMIC DATA FROM NASA USING MATLAB
OBJECTIVES
TO GET THE SPECIES DATA FROM GIVEN DAT FILE AND EXTRACT THE COEFFICIENTS OF ALL DATA AND CALCULATE THE SPECIFIC HEAT, ENTHALPHY AND ENTROPY
TO CALCULATE THE MOLECULAR WEIGHT OF THE EACH SPECIES.
TO PLOT THE SPECIFIC HEAT, ENTHALPHY AND ENTROPY FOR ALL SPECIES.
TO SAVE THE PLOTS WITH SUITABLE SPECIES NAMES AND WHICH IS IN SEPARATE FOLDERS FOR EACH SPECIES.
EQUATIONS FOR Cp, ENTHALPY & ENTROPY
SPECIFIC_HEAT (Cp)`(cp)/R=a1+a2.T+a3.T^2+a4.T^3+a5.T^4`
WHERE,
Cp = Specific Heat In J/Kg-K
`H/(RT)=a1+a2.T/2+a3.T^2/3+a4.T^3/4+a5.T^4/5+a6.T/6`
R = Gas Constant 8.314 J/Kg-K-MOL
`S/R=a1.logT+a2.T+(a3.T^2)/2+a4.T^3/3+a5.T^4/4+a7`
H = Enthalpy In KJ/Kg
S = Entropy In J/K
FROM ABOVE GOVERNING EQUATIONS , COEFFICIENTS OF 14 IN WHICH 7 COEFFICIENTS ARE HIGH TEMPERATURE AND OTHER 7 COEFFICIENTS ARE LOW TEMPERATURE COEFFICIENTS.
BY CREATING THE FUNCTION PROGRAMS FOR CALCULATING THE MOLECULAR WEIGHT AND THERMODYNAMIC PROPERTIES OF ENTHALPHY, ENTROPY & SPECIFIC HEAT.
FUNCTION PROGRAM:1 ( FOR CALCULATING THERMODYNAMIC PROPERTIES OF SPECIFIC HEAT, ENTHALPY & ENTROPY)
function [cp,h,s] = coeff(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,T)
R = 8.314;
for j = 1: length(T)
if T(j)<300
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).*R;
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).*R;
end
end
end
FUNCTION PROGRAM:2 (FOR CALCULATING THE MOLECULAR WEIGHT OF SPECIES)
function [ molecular_weight] = mole_wt(species_name)
SPECIES = upper(species_name)
constituents = {'H', 'C' ,'N' , 'O', 'A'};
atomic_weight = [1 12 14 16 40];
molecular_weight = 0;
for i=1:length(SPECIES)
for j = 1: length(constituents)
if strcmp(SPECIES(i), constituents (j))
molecular_weight = molecular_weight + atomic_weight(j);
u = j;
end
end
n = str2double (SPECIES(i));
if n>1
molecular_weight = molecular_weight + atomic_weight(u)*(n-1)
end
end
fprintf('molecular_weight of %s:-', species_name)
fprintf('%d', molecular_weight)
fprintf(' ')
fprintf('amu')
fprintf('n')
end
MAIN PROGRAM:
clear all
close all
clc
%FOR FILE OPENING OF GIVEN DAT FILE
f1 = fopen('THERMO.dat','r');
file_name = fgetl(f1);
t_line = fgetl (f1);
A = strsplit ( t_line,' ');
%SPLITTING THE TEMPERATURE VARIANT FROM DATA FILE
global_low_temp = str2double(A{2});
global_mid_temp = str2double(A{3});
global_high_temp = str2double (A{4});
for i = (1:3)
comments = fgetl(f1);
end
for i = 1:53
% SPECIES NAME EXTRACT
species = fgetl (f1);
species_name = species (1:6);
%FOR EXTRACTING THE COEFF OF FIRST LINE
line_1 = fgetl(f1);
l1 = strfind (line_1,'E');
a1 = str2double (line_1(1:(l1(1)+3)));
a2 = str2double (line_1((l1(1)+4): (l1(2)+3)));
a3 = str2double (line_1((l1(2)+4): (l1(3)+3)));
a4 = str2double (line_1((l1(3)+4): (l1(4)+3)));
a5 = str2double (line_1((l1(4)+4): (l1(5)+3)));
%EXTRACTING COEFF OF SECOND LINE
line_2 = fgetl(f1);
l2 = strfind(line_2,'E');
a6 = str2double (line_2(1:(l2(1)+3)));
a7 = str2double (line_2((l2(1)+4): (l2(2)+3)));
a8 = str2double (line_2((l2(2)+4): (l2(3)+3)));
a9 = str2double (line_2((l2(3)+4): (l2(4)+3)));
a10 = str2double (line_2((l2(4)+4): (l2(5)+3)));
% EXTRACTING COEFF OF THIRD LINE
line_3 = fgetl(f1);
l3 = strfind(line_3,'E');
a11 = str2double(line_3(1:(l3(1)+3)));
a12 = str2double (line_3((l3(1)+4): (l3(2)+3)));
a13 = str2double (line_3((l3(2)+4): (l3(3)+3)));
a14 = str2double (line_3((l3(3)+4): (l3(4)+3)));
T=linspace(global_low_temp, global_high_temp,500);
%CREATING THE DIRECTORY FOR SAVING THE PLOT FILES
mkdir(['C:\Users\HP gr0012AU\OneDrive\Desktop\NASA THERMODYNAMIC FILE\species',species_name])
[cp,h,s] = coeff(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,T);
% PLOTTING THE TEMPERTURE VS SPECIFIC HEAT
figure(1)
plot(T,cp,'linewidth',3,'color','b')
title(species_name)
xlabel('temperature')
ylabel('specific heat')
% PLOTTING THE TEMPERATURE VS ENTHALPY
figure(2)
plot(T,h,'linewidth',3,'color','g')
title (species_name)
xlabel('Temperature')
ylabel('Enthalphy')
% PLOTTING THE TEMPERATURE VS SPECIFIC HEAT
figure(3)
plot(T,s,'linewidth',3,'color','c')
title(species_name)
xlabel('Temperature')
ylabel('Entropy')
% TO SAVE THE PLOTS IN CREATED FOLDER
directory= (['C:\Users\HP gr0012AU\OneDrive\Desktop\NASA THERMODYNAMIC FILE\species',species_name]);
cd(directory)
saveas(1,'specific_heat.png')
saveas(2,'enthalphy.png')
saveas(3,'entropy .png')
cd('C:\Users\HP gr0012AU\OneDrive\Desktop\NASA THERMODYNAMIC FILE\mole_weight')
molecular_weight = mole_wt(species_name);
end
fclose(f1)
PROGRAM EXPLANATION:
TO READ THE DESIRED DATA FILE AND VALUES ARE ASSIGNED. HEADER INFORMATION FROM THE DAT FILE AND ASSIGNED THE VALUES USING THE FGET L COMMANDS.
COEFFICIENT VALUES ARE DETERMINED AND ALLOTTED TO A CONSTANT.
A ‘SPECIES’ FOLDER IS CREATED BY USING COMMANDS AND COEFFICIENT FUNCTION IS CALLED AND PLOTTING THE GRAPHS AND IT IS SAVED.
THE FUNCTION MOLECULAR WEIGHT VALUES ARE PRINTED IN COMMAND WINDOW.
OUTPUT OF THE PLOTS:
ENTHALPY, ENTROPY & SPECIFIC HEAT OF CH



ENTHALPY, ENTROPY & SPECIFIC HEAT OF CH2



PLOTS FOR N2,02 & CO2









MOLECULAR WEIGHT OF THE SPECIES


SPECIES FILES SAVED IN LOCATION:

CONCLUSION:
FROM GETTING AND READING THE INPUTS FROM DATA CALCULATED THE SPECIFIC HEAT, ENTHALPY AND ENTROPY. ALSO PLOTTED THE THERMODYNAMIC PROPERTIES AND TEMPERATURE WHICH SAVED IN SEPARATE FOLDERS AND CREATED BY USING COMMANDS