Challenge

Project 1 - Parsing NASA thermodynamic data

OBJECTIVE :- PROJECT 1 ON FILE PARSING.

AIM :-

Detailed project done on File Parsing, first step was to store the data of 'a1,a2,..a14' and also the temperatures 't1,t2,t3'. "fgetl" command made it easy. After getting the value it was inserted in the formula given in question and then plots were formed which are attached in results below.

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\91915\Downloads\RAGHAV\',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\91915\Downloads\RAGHAV\',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)









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\91915\Downloads\RAGHAV\',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\91915\Downloads\RAGHAV\',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)









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\91915\Downloads\RAGHAV\',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\91915\Downloads\RAGHAV\',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)

RESULT :-

1. ENTHALPY :

2. ENTROPY :

3. SPECIFIC HEAT :

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.