Challenge

Project 1 - Parsing NASA thermodynamic data

AIM:-

To parse the NASA thermodynamic data and to calculate the molecular weight of the species and to plot the cp,enthalpy,entropy for the local temperature range for o2,n2,co2.

Theory:-

Definitons:-

File parsing:parsing a file means to spilt a file or other input into pieces of data that can easily stored or manipulated.so we are splitting a string into parts then recognizing the parts to convert it into something simpler than a string.

Enthalpy:A thermodynamic quantity equivalent to the total heat content of a system.it is equal to the internal energy of the system plus the product of pressure and volume.

Entropy:A thermodynamic quantity representing the unavailability of a system thernal energy for conversion into mechanical work,often interpreted as the degree of disorder of randomness in the system.

Specific heat:It is the amount of heat per unit mass required to raise the temperature by one degree celsius.

Molecular weight:Molecular weight is the weight of a given molecule.

Atomic mass:The mass of an atom of a chemical expressed in atomic mass units.it is approximately equivalent to the number of protons and neutrons in the atom or to the average number allowing for the relative abundances of different isotopes.

Equations:

cpR=a1+a2T+a3T2+a4T3+a5T4

hRT=a1+a2T2+a3T23+a4T34+a5T45+a6Tℎ

sR=a1lnT+a2T+a3T22+a4T33+a5T44+a7 where,

cp=specific heat

R=universal gas constant

h=enthalpy

s=entropy

T=temperature

CODING LOGIC :-

function [M]= molecular_weight(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
    var=str2double(species_name(i));
    if (var>1)
        Mol_wt=Mol_wt+(Atomic_mass(z)*(var-1));
    end
end
M=Mol_wt;
end
  main coding:

% Nasa thermodynamic file parsing
close all
clear all
clc
% gas constant
R=8.314;
%reading first two lines
f1=fopen('THERMO.dat','r')
tline1=fgetl(f1)
tline2=fgetl(f1)
temp=strsplit(tline2,' ')
global_low_temp=str2num(temp{2})
global_mid_temp=str2num(temp{3})
global_high_temp=str2num(temp{4})
%skipping next threee lines
for i=1:3
    skippedlines=fgetl(f1);
end
    for i=1:53
    tline3=fgetl(f1)
    S=strsplit(tline3,' ');
    species_name= S{1};
    A=strfind(tline3,'G');
    temp_values=tline3(A+4:length(tline3));
    B=strsplit(temp_values,' ');
    local_low_temp=str2double(B{1});
    local_mid_temp=str2double(B{3});
    local_high_temp=str2double(B{2});
    
tline4=fgetl(f1)
f=strfind(tline4,'E');
a1=str2double(tline4(1:(f(1)+3)));
a2=str2double(tline4(f(1)+4:(f(2)+3)));
a3=str2double(tline4(f(2)+4:(f(3)+3)));
a4=str2double(tline4(f(3)+4:(f(4)+3)));
a5=str2double(tline4(f(4)+4:(f(5)+3)));

tline5=fgetl(f1);
a6=str2double(tline5(1:(f(1)+3)));
a7=str2double(tline5(f(1)+4:(f(2)+3)));
a8=str2double(tline5(f(2)+4:(f(3)+3)));
a9=str2double(tline5(f(3)+4:(f(4)+3)));
a10=str2double(tline5(f(4)+4:(f(5)+3)));

tline6=fgetl(f1);
a11=str2double(tline6(1:(f(1)+3)));
a12=str2double(tline6(f(1)+4:(f(2)+3)));
a13=str2double(tline6(f(2)+4:(f(3)+3)));
a14=str2double(tline6(f(3)+4:(f(4)+3)));

    
T=linspace(local_low_temp,local_high_temp,100)
C_p=R*specific_heat_calc(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,local_low_temp,local_mid_temp,local_high_temp,T)

  s=R*entropy_calc(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,local_low_temp,local_mid_temp,local_high_temp,T)
  
  h=R*enthalpy_cal(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,local_low_temp,local_mid_temp,local_high_temp,T)
   req_species=["O2","N2","CO2"];
     
 if(species_name==req_species(1))||(species_name==req_species(2))||(species_name==req_species(3))
  mkdir(species_name);
 cd(species_name)



figure(1)
plot(T,C_p)
title('specific heat vs temperature')
xlabel('temperature')
ylabel('specific heat')
image=getframe(gcf);
imwrite(image.cdata,'cp vs T.png')
saveas(1,'specific_heat','jpg')






figure(2)
plot(T,h)
title('enthalpy vs temperature')
xlabel('temperature')
ylabel('enthalpy')
image=getframe(gcf);
imwrite(image.cdata,'h vs T.png')
saveas(2,'enthalpy','jpg')



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


cd ..
 end

molecular_wt=molecular_weight(species_name);
 K=sprintf('%s  Mol_wt = %f',species_name,molecular_wt);
disp(K)
end

RESULTS :-

Molecular weight of O2=31.9980

Molecular weight of N2=28.0140

Molecular weight of Co2=44.0090

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.