Challenge

Project 1 - Parsing NASA thermodynamic data

clear all
close all
clc
% Universal Gas constant(R)
R = 8.314;
% loading data file
File = fopen('THERMO.dat','r');
% reads 1st line
fgetl(File);
% collect global temprature
tline = fget1(File);
Global_Temp = strsplit(tline,'');
Gobal_low_temp = str2num(Global_Temp{2});
Gobal_mid_temp = str2num(Global_Temp{3});
Gobal_high_temp = str2num(Global_Temp{4});
% skip comments
fget1(File);
fget1(File);
fget1(File);
for i = 1 : 53 % to iterate through all 53 elements
% reads species
line1 = fget1(File);
species = get_species(line1);
% calculate molecular weight and print it
molecular_weignt = get_molecular_weight(species);
fprintf('nMolecular Weight of %s is : %d', sepcies, molecular_weight)
% collect local temprature range
local_temp_range = get_local_temp_range(line1);
% collect coefficient data
a(1:5) = get_coeff(fget1(File));
a(6:10) = get_coeff(fget1(File));
a(11:14) = get_coeff(fget1(File));
% Temprature
T = linspace(local_temp_range(1),local_temp_range(3),500);
% specific Heat
Cp = specific_heat(a, local_temp_range,T,R);
% Enthaply
H = Enthalpy(a, local_temp_range,T,R);
% Entropy
S = Entropy(a,local_temp_range,T, R);
% Plotting and saving in folder
current_dir = pwd;
mkdir(species); % creates new folder with species name
cd(species); % open that folder
% plotting temprature vs specific heat
figure(1)
plor(T,Cp,'linewidth',2,'color','b')
xlabel('Temprature[K]');
ylabel('Specific Heat[Kj/kg-k]');
title(sprintf('Temprature vs Specific Heat plot for %s', species))
grid on
% Save jpg of figure(2)
saveas(figure(2),'Enthalpy.jpg')
%plotting temparature vs entropy
figure(3)
plot(T,S,'linewidth',2,'color','b')
xlabel('Temprature[k]');
ylabel('Entropy[KJ/Kg-K]');
title(sprintf('Temprature vs Entropy plot for %s',species))
grid on
% Save jpg of figure(3)
saveas(figure(3),'Entropy.jpg')
cd(current_dir)% goes back to parent folder
end
Function for calculating Molecular Weight:
molecular_weight = 0;
Atoms = ['O','H','N','C','S','A'];
Atomic_weights = [16, 1, 14, 12, 32, 40];
for i = 1 : length (Species)
for j = 1 : length(Atoms)
if strcmpi(species(i),Atoms(j))
molecular_weight = molecular_weight + Atomic_weights(j);
mark = j;
end
end
k = str2num(species(i));
if k>1
molecular_weight = molecular_weight + Atomic_weights(mark)*(k-1);
end
end
Function for calculating Cp:
function Cp = Specific_heat(a, local_temp_range, T, R)
for i = 1 : length(T)
if T(i) <= local_temp_range(2)
Cp(i) = R*(a(8) + a(9)*T(i) + a(10)*T(i)^2 + a(11)*T(i)^3 + a(12)*T(i)^4);
else
Cp(i) = R*(a(1) + a(2)*T(i) + a(3)*T(i)^2 + a(4)*T(i)^3 + a(5)*T(i)^4);
end
end
Function for claculating Enthalpy:
function H = Enthalpy(a, local_temp_range,T,R)
for i = 1 : length(T)
if T(i) <= local_temp_range(2)
H(i) = R*T(i)*(a(8) + a(9)*T(i)/2 + a(10)*(T(i)^2)/3 + a(11)*(T(i)^3)/4 + a(12)*(T(i)^4)/5 + a(13)/T(i));
else
H(i) = R*T(i)*(a(1) + a(2)*T(i)/2 + a(3)*(T(i)^2)/3 + a(4)*(T(i)^3)/4 + a(5)*(T(i)^4)/5 + a(6)/T(i));
end
end
Function for calculating Entropy
function S = Entropy(a, local_temp_range, T, R)
if i = 1 : length(T)
if T(i) <= local_temp_range(2)
s(i) = R*(a(8)*log(T(i)) + a(9)*T(i) + a(10)*(T(i)^2/2 + a(11)*(T(i)^3/3 + a(12)*(T(i)^4)/4 + a(14));
else
s(i) = R*(a(1)*log(T(i)) + a(2)*T(i) + a(3)*(T(i)^2/2 + a(4)*(T(i)^3/3 + a(5)*(T(i)^4)/4 + a(7));
end
end
Function for calculating species:
function species = get_species(line)
temp = strsplit(line,'');
species = (temp{1});
end
Function for calcualting Coefficients:
function [a] = get_coeff(line)
E = findstr(line,'E');
a(1) = str2num(line(1:E(1)+3));
for i = 1 : length (E)-1
temp = str2num(line(E(i)+4:E(i+1)+3));
a(i+1) = temp;
end
end
Function for calculating Low-Temperature Range:
function [temp] = get_local_temp_range(line)
split = strsplit(line,'');
l = length(split);
mid_temp = str2num(split{l-1});
high_temp = str2num(split{l-2});
low_temp = str2num(split{l-3});
temp = [low_temp mid_temp high_temp];
end
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.