Project 1 - Parsing NASA thermodynamic data
Writing the codings using matlab for file parsing for NASA thermodyanmics
Here i have done function programs seperatly for the molecularweight , specific heat, enthalpy and entropy
files were taken from the
Function codings nasa thermodynamic file
%function codings for moplecular weight
function [MW] = Molecular_weight(species)
%defining atomic name of species
species = ['name'];
s = ['H','C','O','N','A'];
atomic_weight = [1.008 12.011 15.999 14.007 39.948];
MW = 0;
for i=1:length(species)
for j=1:length(s)
if strcmp(species(i), s(j))
MW = MW+atomic_weight(j);
position = j;
end
end
n = str2num(species(i));
if n > 1
MW = MW+(position*(n-1));
end
end
%%function codings for specific heat
function [cp]= specific_heat(a1,a2,a3,a4,a5,a8,a9,a10,a11,a12,T,R,tempmid)
%calculating specific heat
%calculating specific heat for higher and lower temperature respectively
if T > tempmid
cp=R*(a8+ a9.*T+ a10.*T.^2 +a11.*T.^3+a12.*T.^4);
else
cp=(a1+a2.*T+a3.*T.^2+a4.*T.^3+a5.*T.^4).*R;
end
end
%function codings for entropy
function [S] = Entropy(a1,a2,a3,a4,a5,a7,a8,a9,a10,a11,a12,a14,T,R,tempmid)
%calculating Entropy
%calculating Entropy for higher and lower temperature respectively
if (T <= tempmid)
S =(a8.*log(T)+(a9.*T)+(a10.*T.^2)./2+(a11.*T.^3)./3+(a12.*T.^4)./4+a14)*R;
else
S =(a1.*log(T)+a2.*T+(a3.*T.^2)./2+(a4.*T.^3)./3+(a5.*T.^4)./4+ a7)*R;
end
end
%function codings for enthalpy
function [H] = Enthalpy(a1,a2,a3,a4,a5,a6,a8,a9,a10,a11,a12,a13,T,R,tempmid)
%calculating Enthalpy
%calculating Enthalpy for higher and lower temperature respectively
if (T <= tempmid)
H = (a8+ (a9.*T)./2+(a10.*T.^2)./3+(a11.*T.^3)./4+(a12.*T.^4)./5+a13./T)*R;
else
H = (a1 +(a2.*T)./2+(a3.*T.^2)./3+(a4.*T.^3)./4+(a5.*T.^4)./5+a6./T).*T.*R;
end
end
MAIN CODINGS FOR FILE PARSING
clear all
close all
clc
%inputs
R=8.314; %Gas constant
%file open and reading THERMO.dat FILE
f1 =fopen('THERMO.dat','r')
get = fgetl(f1);
temp = fgetl(f1);
%splitting
s = strsplit(temp,' ');
%converting strings cells into numbers
templow = str2num(s{2});
tempmid = str2num(s{3});
temphigh = str2num(s{4});
%temperature range
T = linspace(templow,temphigh,1000);
%skipping comment lines
for i=1:5
get=fgetl(f1);
end
%reading the species
for j=1:53
tline=fgetl(f1);
A=strsplit(tline,' ');
species = (A{1});
%converting string to numbers
lowtemp = str2num(A{end-3});
midtemp = str2num(A{end-2});
hightemp = str2num(A{end-1});
tline1 = fgetl(f1);
a = strfind(tline,'E');
%find the 1st 7 higher and 2nd 7 lower coefficients
%finding higher coeficients
a1=tline1(1:a(1)+3);
a1=str2num(a1);
a2=tline1(a(1)+4:a(2)+3);
a2=str2num(a2);
a3=tline1(a(2)+4:a(3)+3);
a3=str2num(a3);
a4=tline1(a(3)+4:a(4)+3);
a4=str2num(a4);
a5=tline1(a(4)+4:a(5)+3);
a5=str2num(a5);
tline2 = ' 2.92175791E+04 4.78433864E+00 3.16826710E+00-3.27931884E-03 6.64306396E-06 3'
b=strfind(tline2,'E');
a6=tline2(1:b(1)+3);
a6=str2num(a6);
a7=tline2(a(1)+4:b(2)+3);
a7=str2num(a7);
%finding the lower coefficients
a8=tline2(b(2)+4:b(3)+3);
a8=str2num(a8);
a9=tline2(b(3)+4:b(4)+3);
a9=str2num(a9);
a10=tline2(b(4)+4:b(5)+3);
a10=str2num(a10);
tline3= '-6.12806624E-09 2.11265971E-12 2.91222592E+04 2.05193346E+00 4'
c=strfind(tline3,'E');
a11=tline3(c(1)+4:c(2)+3);
a11=str2num(a11);
a12=tline3(c(1)+4:c(2)+3);
a12=str2num(a12);
a13=tline3(c(2)+4:c(3)+3);
a13=str2num(a13);
a14=tline3(c(3)+4:c(4)+3);
a14=str2num(a14);
T = templow:temphigh;
if(T>tempmid)
Cp=(a1+a2.*T+a3.*T.^2+a4.*T.^3+a5.*T.^4).*R;
S =(a1.*log(T)+a2.*T+(a3.*T.^2)./2+(a4.*T.^3)./3+(a5.*T.^4)./4+ a7)*R;
H = (a1 +(a2.*T)./2+(a3.*T.^2)./3+(a4.*T.^3)./4+(a5.*T.^4)./5+a6./T).*T.*R;
else
Cp=R*(a8+ a9.*T+ a10.*T.^2 +a11.*T.^3+a12.*T.^4);
S =(a8.*log(T)+(a9.*T)+(a10.*T.^2)./2+(a11.*T.^3)./3+(a12.*T.^4)./4+a14)*R;
H = (a8+ (a9.*T)./2+(a10.*T.^2)./3+(a11.*T.^3)./4+(a12.*T.^4)./5+a13./T)*R;
end
%writing molecular weight file
MW_file = fopen('Molecular_weight.txt','w');
fprintf(MW_file,'Molecular_weight of %s is %d ',species,MW);
fclose(MW_file);
%plotting cp,h and s with temperature
%save in a floder
cd('C:/Users/ranji/OneDrive/Documents/Matlab/parsing')
mkdir(parsing);
cd(parsing);
%plot 1cp vs T
figure(1)
plot(T,cp,'linewidth',2,'color','g');
xlabel('temperature');
ylabel('specific heat');
title(sprintf('specific heat vs temperature range of %s',species));
saveas(figure(1),'specific heat.jpg');
%plot 2 S vs T
figure(2)
plot(T,S,'linewidth',3,'color','r');
xlabel('temperature');
ylabel('Entropy');
title(sprintf('Entropy vs temperature range of %s',species));
saveas(figure(2),'Entropy.jpg');
%plot 3 cp vs T
figure(3)
plot(T,H,'linewidth',2,'color','y');
xlabel('temperature');
ylabel('Enthalpy');
title(sprintf('Enthalpy vs temperature range of %s',species));
saveas(figure(3),'Enthalpy.jpg');
%hanging the directory to original matlab folder
cd('C:/Users/ranji/OneDrive/Documents/Matlab')
end
%SCREEN SHOT OF FOLDER WHICH FILE HAS SAVED SEPERATELY

SCREEN SHOT OF GRAPH


