Project 1 - Parsing NASA thermodynamic data
FILE PARSING:
It is used to know how information can be read by particular text file or any type of file then how the information used in computed program.we can read the file from external data bases and include data in to your calculation.
we are using two types of method in thi sprocess.
file writing
file reading
File writing:
It refers to the process of writing data to a particular file.
Example,
write the commend
F1=fopen('output.txt','w')
save and run the program.
F1 should be possitive value.
fprintf(F1,'hey')
fclose(f1)
then open the output you can gey 'hey' in your ans.
FILE READING:
It is the reverse process of file writing.If someone gives you simulation data in the form of input file, you can read, get and use them by using this method.
example,
F1=fopen('output.txt','r')
fgetl(F1)
save and run the program, You can get the first line of saved data.
Refer the program for more information.
clear all
close all
clc
%getting the data file
f1=fopen('THERMO.dat','r');
fgetl(f1)
%reading the header information
A=fgetl(f1);
A=strsplit(A,' ');
global_low_temp=str2num(A{2});
global_mid_temp=str2num(A{3});
global_high_temp=str2num(A{4});
%skipping next three lines
for i=1:3
fgetl(f1);
end
%reading the species
for i=1:53
header=fgetl(f1);
x=strsplit(header,' ');
species_name=(x{1});
z=length(x);
local_low_temp=str2double(x{z-3});
local_high_temp=str2double(x{z-2});
local_mid_temp=str2double(x{z-1});
t1=local_low_temp;
t2=local_mid_temp;
t3=local_high_temp;
%getting first line coeffecients (a1-a5)
line_1=fgetl(f1);
a=strfind(line_1,'E');
a1=str2double(line_1(1:a(1)+3));
a2=str2double(line_1(a(1)+4:a(2)+3));
a3=str2double(line_1(a(2)+4:a(3)+3));
a4=str2double(line_1(a(3)+4:a(4)+3));
a5=str2double(line_1(a(4)+4:a(5)+3));
%getting second line coeffeceints (a6-a10)
line_2=fgetl(f1);
a_1=strfind(line_2,'E');
a6=str2num(line_2(1:a_1(1)+3));
a7=str2double(line_2(a_1(1)+4:a_1(2)+3));
a8=str2double(line_2(a_1(2)+4:a_1(3)+3));
a9=str2double(line_2(a_1(3)+4:a_1(4)+3));
a10=str2double(line_2(a_1(4)+4:a_1(5)+3));
%getting third line coeffeceints (a10-a14)
line_3=fgetl(f1);
a_2=strfind(line_1,'E');
a11=str2double(line_3(1:a_2(1)+3));
a12=str2double(line_3(a_2(1)+4:a_1(2)+3));
a13=str2double(line_3(a_2(2)+4:a_1(3)+3));
a14=str2double(line_3(a_2(3)+4:a_1(4)+3));
%creating folder
mkdir(['C:\Users\dell\Downloads\file parsing\images\',species_name]);
T=linspace(t1,t3,1000);
R=8.314;
% to get array of specific heat, enthalpy and entropy
for k=1:length(T)
% to compare the species temperature to assign the coeffeceints
%a1-a7 (high temperature coeffeceints), a8-a14(low temperature coeffecients)
if T(k)>t2
%high temperature coeffeceints.
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;
else
%low temperature coeffecients
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;
end
end
%plotting the graphs
figure(1);
plot(T,cp);
grid on ;
title(species_name);
xlabel('Temperature');
ylabel('Specific Heat');
figure(2);
plot(T,H);
grid on ;
title(species_name);
xlabel('Temperature');
ylabel('Enthalpy');
figure(3);
plot(T,S);
grid on ;
title(species_name);
xlabel('Temperature');
ylabel('Entropy');
%changing the directory and saving the file
cd=(['C:\Users\Student\Desktop\RAJKUMAR\MATLAB\file parsing\images\',species_name]);
saveas(1,'specific heat','jpg');
saveas(2,'enthalpy','jpg');
saveas(3,'entropy','jpg');
%molecular_masscalculation
elements=['H','C','O','N','A'];
atomic_weight=[1.0079 12.0107 15.999 14.0067 39.948];
mol_mass=0;
for l=1:length(species_name)
for m=1:length(atomic_weight)
if strcmp(species_name(l),elements(m))
mol_mass=mol_mass+atomic_weight(m);
position=m;
end
end
n=str2double(species_name(l));
if n>1
mol_mass=mol_mass+atomic_weight(position)*(n-1);
end
end
sprintf('Molecular Weight of %s:%f u',species_name,mol_mass)
end
fclose(f1)