Challenge

Parsing NASA thermodynamic data

AIM:

To parse the thermodynamic data ansd calculate the thermodynamic properties of various gas species using MATLAB

DESCRIPTION:

PARSING: Parsing, syntax analysis, or syntactic analysis is the process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar.

ENTHALPY (H): Enthalpy is a property of a thermodynamic system, that is a convenient state function preferred in many measurements in chemical, biological, and physical systems at a constant pressure. It is defined as the sum of the system's internal energy and the product of its pressure and volume.

ENTROPY (S): In statistical mechanics, entropy is an extensive property of a thermodynamic system. It quantifies the number of microscopic configurations that are consistent with the macroscopic quantities that characterize the system.

SPECIFIC HEAT (CP): The specific heat capacity, of a substance is the heat capacity of a sample of the substance divided by the mass of the sample. Informally, it is the amount of energy that must be added, in the form of heat, to one unit of mass of the substance in order to cause an increase of one unit in its temperature.

MOLECULAR WEIGHT (M): The molecular mass is the mass of a given molecule, It is measured in daltons. Different molecules of the same compound may have different molecular masses because they may contain different isotopes of an element.

GAS CONSTANT (R): The gas constant is a physical constant denoted by R and is expressed in terms of units of energy per temperature increment per mole. The gas constant value is equivalent to Boltzmann constant but expressed as the pressure-volume product instead of energy per increment of temperature per particle.

TEMPERATURE (T): Temperature is a physical property of matter that quantitatively expresses hot and cold. It is the manifestation of thermal energy, present in all matter, which is the source of the occurrence of heat, a flow of energy, when a body is in contact with another that is colder.

PROCEDURE:

Main code:

clear all
close all
clc

% reading the file data
f1 = fopen('THERMO.dat','r');
line_1 = fgetl(f1);
line_2 = fgetl(f1);

% extract global temprature range
A=strsplit(line_2,' ');
global_low_temp = str2num(A{2});
global_mid_temp = str2num(A{3});
global_high_temp = str2num(A{4});

% skipping unwanted line
for i = 1:3
    omit = fgetl(f1);
end

frewind(f1);
tline=0;
while ~feof(f1)
    line=fgetl(f1);
    a=sscanf(line,'%c');
    %checking for end
    
    c=a(1:3);
    d='END';
    
    if c==d
        break
    end
    tline=tline+1;
end

% calculating the no of species
no_species=(tline-5)/4;

frewind(f1);
for i=1:5
    fgetl(f1);
end

for i = 1:no_species
line_3 = fgetl(f1);
line_3_split = strsplit(line_3,' ');
species_name = line_3_split(1);
species_name = species_name{1};

splits = strsplit(line_3,'G ');
lt = str2num(splits{2});
lt_low = lt(1);
lt_mid = lt(3);
lt_high = lt(2);

% co efficients 

line_4 = fgetl(f1);
c = findstr(line_4,'E');
a1 = str2num(line_4(1:c(1)+3));
a2 = str2num(line_4(c(1)+4:c(2)+3));
a3 = str2num(line_4(c(2)+4:c(3)+3));
a4 = str2num(line_4(c(3)+4:c(4)+3));
a5 = str2num(line_4(c(4)+4:c(5)+3));

line_5=fgetl(f1);
a6=str2num(line_5(1:c(1)+3));
a7=str2num(line_5(c(1)+4:c(2)+3));
a8=str2num(line_5(c(2)+4:c(3)+3));
a9=str2num(line_5(c(3)+4:c(4)+3));
a10=str2num(line_5(c(4)+4:c(5)+3));


line_6=fgetl(f1);
a11=str2num(line_6(1:c(1)+3));
a12=str2num(line_6(c(1)+4:c(2)+3));
a13=str2num(line_6(c(2)+4:c(3)+3));
a14=str2num(line_6(c(3)+4:c(4)+3));

% calculating the values of Cp,enthalpy and entrophy

% universal gas constant

T=linspace(lt_low,lt_high,100);
R=8.314;
Cp= specific_heat(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,lt_mid,T,R);
H= enthalpy(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,lt_mid,T,R);
S= entropy(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,lt_mid,T,R);

% calculating the molecular weight of species
 Molecular_weight(i)=molecular_weight(species_name);


% plotting

mkdir(species_name);
figure(1)
plot(T,Cp,'linewidth',3,'color','black')
xlabel('Temperature')
ylabel('Specific heat')
title (species_name)

figure(2)
plot(T,H,'linewidth',3,'color','black')
xlabel('Temperature')
ylabel('Enthalpy')
title(species_name)

figure(3)
plot(T,S,'linewidth',3,'color','black')
xlabel('Temperature')
ylabel('Entropy')
title(species_name)

cd(species_name)
saveas(figure(1),'T vs Cp.jpg')
saveas(figure(2),'T vs H.jpg')
saveas(figure(3),'T vs S.jpg')
cd ('..')

%  printing molecular weight data in command window
fprintf('species name : %s n',species_name)
fprintf('Molecular weight  : %s n',Molecular_weight(i))

end

Function to find Enthalpy:

function H = enthalpy(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,lt_mid,T,R);

if(T>lt_mid)
    H = (a1+a2*T./2+a3*T.^2./3+a4*T.^3./4+a5*T.^4./5+a6./T)*R.*T;
else
    H = (a8+a9*T./2+a10*T.^2./3+a11*T.^3./4+a12*T.^4./5+a13./T)*R.*T;

end

Function to find Entropy:

function S = entropy(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,lt_mid,T,R);

if(T>lt_mid)
    S = (a1*log(T)+a2.*T+a3*T.^2./2+a4*T.^3./3+a5*T.^4./4+a7)*R;
else
    S = (a8*log(T)+a9.*T+a10*T.^2./2+a11*T.^3./3+a12*T.^4./4+a14)*R;

end

Function to find Specific Heat:

 function Cp = specific_heat(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,lt_mid,T,R);

if(T>lt_mid)
    Cp = (a1+a2*T+a3*T.^2+a4*T.^3+a5*T.^4)*R;
else
    Cp = (a8+a9*T+a10*T.^2+a11*T.^3+a12*T.^4)*R;

end

Function to find Molecular Weight:

function [Molecular_weight] = molecular_weight(species_name)

Atomic_mass = [15.999,1.00784,32.065,12.0107,14.0067,39.948];
Elements = ['O','H','S','C','N','A'];
Molecular_weight = 0;
u = 0;

    for i = 1:length(species_name)
    for j = 1:length(Elements)

    if(strcmp(species_name(i),Elements(j)))
    Molecular_weight = Molecular_weight+Atomic_mass(j);
    u = j;
    end
    end

    end

num=str2double(species_name(i));

    if(num>1)
    Molecular_weight = Molecular_weight+Atomic_mass(u)*(num-1);

    end

end

RESULTS:

GRAPHS:

Plot for species CO2:

Plot for species N2:

Plot for species O2:

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.