Nasa File Parsing
https://drive.google.com/drive/folders/1o9J4OqiJuLMCiqArGn8p--74GeiyFd-f?usp=sharing
All the .m files and screenshots are uploaded in the above link.
Main Program
%file testing
clear all
close all
clc
for k = 0:52
line_no(k+1)=6+4*k; %To Locate the line on which the coefficients start
end
temp=linspace(300,1500,50);
for j=1:53
b = extract_data(line_no(j)); % For extracting coefficients
sph = spheat1(b,temp)
enth = enthalpy1(b,temp)
ent = entropy1(b,temp)
[mol,count(j)] = molecularwt(line_no(j));
mol
plotting(sph,enth,ent,temp,line_no(j),count(j))
end
Extracting Data :- extract_data
function [a] = extract_data(k)
f1=fopen('Nasa_file.txt','r');
for i=1:k
fgetl(f1); % To set it to line k+1
end
a = fscanf(f1,'%f',[6 3]);
a = a'
end
Specific Heat function : spheat1
function [e] = spheat1(a,t)
for i=1:50
e(i)=0;
end
for s=1:50
if t(s)>=1000
for m=1:5
j=m-1;
e(s)=(e(s)+a(1,m)*(t(s)^j));
end
e(s)=e(s)*(8.314);
else
for k=1:5
if k>3
e(s)=(e(s)+a(3,k-3)*(t(s)^(k-1)));
else
e(s) = e(s) + a(2,k+2)*(t(s)^(k-1));
end
end
e(s)=e(s)*(8.314);
end
end
end
Enthalpy function : enthalpy1
function [e] = enthalpy1(a,t)
for i=1:50
e(i)=0;
end
for j=1:50
if t(j)>=1000
for m=1:5
e(j)=e(j)+(a(1,m)*(t(j)^m))/m ;
end
e(j) = (e(j)+ a(2,1))*8.314 ;
else
for k=1:5
if k>3
e(j)=(e(j)+(a(3,k-3)*(t(2)^(k)))/k);
else
e(j)=e(j) + (a(2,k+2)*(t(2)^k))/k ;
end
end
e(j) = (e(j)+ a(3,3))*8.314 ;
end
end
end
Entropy function : entropy1
function [e] = entropy1(a,t)
for i=1:50
e(i)=0;
end
for s=1:50
if t(s)>=1000
e(s)= a(1,1)*log(t(s))+a(2,2);
for m=1:4
e(s) = e(s) + (a(1,m+1)*(t(1)^m))/m ;
end
e(s) = e(s)*8.314 ;
else
e(s)= a(2,3)*log(t(s))+a(3,4);
for m=1:4
if m>2
e(s) = e(s) + (a(3,m-2)*(t(s)^m))/m ;
else
e(s) = e(s) + (a(2,m+3)*(t(s)^m))/m ;
end
end
e(s) = e(s)*8.314 ;
end
end
end
Molecular weight calculation : molecularwt
function [e,c] = molecularwt(l)
f1=fopen(\'Nasa_file.txt\',\'r\');
e=0;
x=0;
c=0;
for i=1:l-1
fgetl(f1);
end
for j=1:10
ch = fscanf(f1,\'%c\',[1 1]);
if ch == \'H\'
c=c+1;
e=e+x;
x=1;
end
if ch== \'C\'
c=c+1;
e=e+x;
x=12;
end
if ch==\'O\'
c=c+1;
e=e+x;
x=16;
end
if ch==\'N\'
c=c+1;
e=e+x;
x=14;
end
if ch==\'S\'
c=c+1;
e=e+x;
x=32;
end
if ch==\'2\'
c=c+1;
e=e+2*x;
x=0;
end
if ch==\'3\'
c=c+1;
e=e+3*x;
x=0;
end
if ch==\'A\'
c=c+2;
x=40;
e=e+x;
x=0;
end
if ch==\'(\'
c=c+1;
end
if ch==\')\'
c=c+1;
end
if ch==\' \'
e=e+x;
break
end
end
end
Plotting and saving graphs in a folder : plotting
function [e] = plotting(sp,h,s,tem,l,c)
f1=fopen(\'Nasa_file.txt\',\'r\');
for i=1:l-1
fgetl(f1);
end
ch = fscanf(f1,\'%c\',[1 c]);
subfolder_name = ch;
projectdir = \'C:\\Users\\teju\\Desktop\\eDX engine course\';
mkdir( fullfile(projectdir, subfolder_name) );
figure(1);
plot(tem,sp);
xlabel(\'Temperature in K\');
ylabel(\'Specific heat in kJ/(mol K)\')
title(\'Specific heat vs Temp\');
savefig(figure(1),[pwd \'/\',subfolder_name,\'/Sp_heat_\',ch,\'.fig\']);
figure(2);
plot(tem,h);
xlabel(\'Temperature in K\');
ylabel(\'Enthalpy in kJ/(mol)\')
title(\'Enthalpy vs Temp \');
savefig(figure(2),[pwd \'/\',subfolder_name,\'/Enthalpy_\',ch,\'.fig\']);
figure(3);
plot(tem,s);
xlabel(\'Temperature in K\');
ylabel(\'Entropy in kJ/(mol K)\')
title(\'Entropy vs Temp \');
savefig(figure(3),[pwd \'/\',subfolder_name,\'/Entropy_\',ch,\'.fig\']);
end
Here is the screenshot of the files generated