Challenge

Project 1 - Parsing NASA thermodynamic data

AIM-

1. Write a function that extracts the 14 co-efficients and calculates the enthalpy, entropy and specific heats for all the species in the data file. You will be reading this file NASA thermodynamic data(Tip: use fopen and fgetl). The formulae are shown below.

Here R is the universal gas constant, T is the temeprature

The FIRST 7 coefficients are HIGH-temperature coefficients and the SECOND 7 coefficients are LOW-temperature coefficients.

Also use the LOCAL TEMPERATURE RANGES which is unique for each individual species, not the GLOBAL TEMPERATURE RANGE.

2. Calculate the molecular weight of each species and display it in the command window.

3. Plot the Cp, Enthalpy and Entropy for the local temperature range (low temperature : high temperature) specific for each species.

4. Save the plots as images with appropriate names and dump them in separate folders for each species with suitable name. All these should be generated automatically.

5. The main program that you will submit will just take the "THERMO.dat" file as an input and generate Cp, H and S plots.

THEORY:-

FILE PARSHING-

It is a process of a reading a data and building a memory model of the content of tha data. the is to performing some kind of transformation on the data. parshing split the data file or other input into a piecse of data that can be easliy stored or manipulated

Mathematical Equation-:

PROGRAM-:

The program for file parashing

%File parshing
%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 program-:

1).Enthalphy :

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

2).Entrophy:

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

3). Specfic heat:

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

4).Molecular weight:

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

FOR N2

For CO2

WORKSPACE & FILES

MOLECULAR WEIGHT

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.