Challenge

Project 1 - Parsing NASA thermodynamic data

%Nasa thermodynamic

f1= fopen('THERMO','r');
%reading header information
fgetl(f1);
%global temperature
t_line= fgetl(f1);
a=strsplit(t_line,' ');

global_low_temp=str2double(a{2});
global_mid_temp=str2double(a{3});
global_high_temp=str2double(a{4});

%neglecting the 3 lines 
fgetl(f1);
fgetl(f1);
fgetl(f1);

%reading species block
%line 1
for i =1:53
    t_line2=fgetl(f1);
    s=strsplit(t_line2,' ');
    species_name=s{1};
    A=strfind(t_line2,'G');
    temp_values=t_line2(A+4:length(t_line2));
    B=strsplit(temp_values,' ');

local_low_temp=str2double(B{1});
local_mid_temp=str2double(B{2});
local_high_temp=str2double(B{3});

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

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

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

%universal constant
r= 8.314;

t=linspace(local_low_temp,local_high_temp,100);

%to calculate
c_p=specfic_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);

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);

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(['c:',species_name])
cd(species_name)



%ploting
%tvs c_P
figure(1)
plot(t,c_p,LineWidth=2)
xlabel('temperature')
ylabel('specfic heat')
title('temp vs specfic heat')
image=getframe(gcf);
imwrite(image.cdata,'t vs cp.png')
saveas(1,'specfic heat','jpg')


%temp vs enthalphy
figure(2)
plot(t,H,'color','g',LineWidth=2)
xlabel('temperature')
ylabel('enthalpy')
title('temp vs enthalpy')
image=getframe(gcf);
imwrite(image.cdata,'t vs H.png')
saveas(2,'enthalpy','jpg')


%tempvs entrophy
figure(3)
plot(t,S,'color','r',LineWidth=2)
xlabel('temperature')
ylabel('entrophy')
title('temp vs entrophy')
image=getframe(gcf);
imwrite(image.cdata,'t vs S.png')
saveas(3,'entropy','jpg')

cd ..

%calculating moleculat mass
M= molecular_wt(species_name);
K=sprintf('%s mol_wt=%f',species_name,M);
disp(K)
end
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)
if (t>local_mid_temp)
H= (b1+((b2.*t)/2)+((b3.*(t.^2))/3)+((b4.*(t.^3))/4)+((b5.*(t.^4))/5)+(b6./t)).*t*r;
else
    H=(b8+((b9.*t)/2)+((b10.*(t.^2))/3)+((b11.*(t.^3))/4)+((b12.*(t.^4))/5)+(b13./t)).*t*r;
end
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)

if (t>local_mid_temp)
    S=((b1.*logt)+(b2.*t)+((b3.*(t.^2))/2)+((b4.*(t.^3))/3)+(b5.*(t.^4))+b7);
else
   S=((b8.*log(t))+(b9.*t)+((b10.*(t.^2))/2)+((b11.*(t.^3))/3)+(b12.*(t.^4))+b14)*r;
end
function  c_p=specfic_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)
if (t>local_mid_temp)
    c_p=r*(b1+(b2.*t)+(b3.*(t.^2))+(b4.*(t.^3))+(b5.*(t.^4)));
else
    c_p=r*(b8+(b9.*t)+(b10.*(t.^2))+(b11.*(t.^3))+(b12.*(t.^4)));
end
function M=molecular_wt(species_name)
atomic_mass = [15.999,1.008,12.011,14.007,39.948]
elements = ['o','h','c','n','a']
mol_wt=0;
for i = 1:length(species_name)
    for j=1:length(elements)
        if strcmpi(species_name(i),elements(j))
            mol_wt=mol_wt+atomic_mass(j);
            z=j;
        end
    end
    t=str2double(species_name(i));
    if(t>1)
        mol_wt=mol_wt+(atomic_mass(z))
    end
end
M=mol_wt
end

Output for O2

Output for N2

Output for Co2

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.