Challenge

Project 1 - Parsing NASA thermodynamic data

% Program for File Parsing Challege


clear all
close all
clc

% Getting the Data from the given File
f1 = fopen('THERMO.dat','r');

%reading the header information
fgetl(f1);

% Global temp
tline = fgetl(f1);
A = strsplit(tline,' ');
global_low_temp = str2double(A{2});
global_mid_temp = str2double(A{3});
global_high_temp = str2double(A{4});
fgetl(f1)
fgetl(f1)
fgetl(f1)


% Reading species block
% Line No. 1
for i = 1:53
tline2 = fgetl(f1);
s = strsplit(tline2,' ');
species_name = s{1};

local_low_temp=str2double(s{end-3});
local_mid_temp=str2double(s{end-1});
local_high_temp=str2double(s{end-2});



t_line= fgetl(f1);
b=findstr(t_line,'E');
%1st coefficient
b1=t_line(1:b(1)+3);
b1=str2num(b1);
%2nd coefficient
b2=t_line(b(1)+4:b(2)+3);
b2=str2num(b2);
%3rd coefficient
b3=t_line(b(2)+4:b(3)+3);
b3=str2num(b3);
%4th coefficient
b4=t_line(b(3)+4:b(4)+3);
b4=str2num(b4);
%5th coefficient
b5=t_line(b(4)+4:b(5)+3);
b5=str2num(b5);

%line 2
line2=fgetl(f1);
%6th coefficient
b6=line2(1:b(1)+3);
b6=str2num(b6);
%7th coefficient
b7=line2(b(1)+4:b(2)+3);
b7=str2num(b7);
%8th coefficient
b8=line2(b(2)+4:b(3)+3);
b8=str2num(b8);
%9th coefficient
b9=line2(b(3)+4:b(4)+3);
b9=str2num(b9);
%10th coefficient
b10=line2(b(4)+4:b(5)+3);
b10=str2num(b10);


%line 3
line3=fgetl(f1);
%11th coefficient
b11=line3(1:b(1)+3);
b11=str2num(b11);
%12th coefficient
b12=line3(b(1)+4:b(2)+3);
b12=str2num(b12);
%13th coefficient
b13=line3(b(2)+4:b(3)+3);
b13=str2num(b13);
%14th coefficient
b14=line3(b(3)+4:b(4)+3);
b14=str2num(b14);

%universal gas constant
R=8.314;
t=linspace(local_low_temp,local_high_temp,100);


%to calculate


%specific heat by creating function
c_p=specific_heat(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,local_low_temp,local_mid_temp,local_high_temp,t,R);


%enthalpy by creating function
H=enthalpy(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,local_low_temp,local_mid_temp,local_high_temp,t,R);


%entropy by creating function
S=entropy(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,local_low_temp,local_mid_temp,local_high_temp,t,R);

%creating a folder

mkdir(species_name)
cd(species_name)

%plotting for


%temperature vs specific heat


figure(1)
plot(t,c_p)
xlabel('temperature')
ylabel('specific heat')
title('temperature vs specific heat')
image=getframe(gcf);
imwrite(image.cdata,'t vs cp.png')
saveas(1,'specific heat','jpg')
%temperature vs enthalpy
figure(2)
plot(t,H)
xlabel('temperature')
ylabel('enthalpy')
title('temperature vs enthalpy')
image=getframe(gcf);
imwrite(image.cdata,'t vs H.png')
saveas(2,'enthalpy','jpg')


%temperature vs entropy
figure(3)
plot(t,S)
xlabel('temperature')
ylabel('entropy')
title('temperature vs entropy')
image=getframe(gcf);
imwrite(image.cdata,'t vs S.png')
saveas(3,'entropy','jpg')

cd ..
%calculating molecular mass
[M]=molecular_wt(species_name);
K=sprintf('%s mol_wt=%f',species_name,M);
disp(K)
end

# Program_for_enthalpy_function

function [H]=enthalpy(b1,b2,b3,b4,b5,b6,~,b8,b9,b10,b11,b12,b13,~,~,local_mid_temp,~,t,R)
if (t<=local_mid_temp)
H=(b8+((b9.*t)/2)+((b10.*(t.^2))/3)+((b11.*(t.^3))/4)+((b12.*(t.^4))/5)+(b13./t)).*t*R;

else

H=(b1+((b2.*t)/2)+((b3.*(t.^2))/3)+((b4.*(t.^3))/4)+((b5.*(t.^4))/5)+(b6./t)).*t*R;
end

# Program_for_entropy_function

function [S]=entropy(b1,b2,b3,b4,b5,~,b7,b8,b9,b10,b11,b12,~,b14,~,local_mid_temp,~,t,R)
if (t<=local_mid_temp)

S=((b8.*log(t))+(b9.*t)+((b10.*(t.^2))/2)+((b11.*(t.^3))/3)+(b12.*(t.^4))+b14)*R;
else

S=((b1.*log(t))+(b2.*t)+((b3.*(t.^2))/2)+((b4.*(t.^3))/3)+(b5.*(t.^4))+b7);
end

# Program_for_specific_heat_function

function [c_p]=specific_heat(b1,b2,b3,b4,b5,~,~,b8,b9,b10,b11,b12,~,~,~,local_mid_temp,~,t,R)
if (t<=local_mid_temp)
c_p=R*(b8+(b9.*t)+(b10.*(t.^2))+(b11.*(t.^3))+(b12.*(t.^4)));

else
c_p=R*(b1+(b2.*t)+(b3.*(t.^2))+(b4.*(t.^3))+(b5.*(t.^4)));

end

## Link for plots( I have uploaded all the graphs )

https://drive.google.com/drive/folders/1yTHXkyMxeoyW3-E5E8XEa8Jz5_K2qcRl?usp=sharing

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.