Challenge

Project 1 - Parsing NASA thermodynamic data

Program to parse the NASA file and to plot the required graphs

AIM

To write the program to parse the file and to calculate the entropy , enthalpy , specific heat and molecular weight of the given elements.

Introduction:

Enthalpy:

Enthalpy (H) is the sum of the internal energy (U) and the product of pressure and volume (PV) given by the equation: H=U+PV.

Entropy:

Entropy, the measure of a system's thermal energy per unit temperature that is unavailable for doing useful work.

Specific heat:

The specific heat is the amount of heat per unit mass required to raise the temperature by one degree Celsius.

Molecular weight:

The molecular mass (m) is the mass of a given molecule: it is measured in daltons (Da or u).

Enthalpy, entropy, molecular weight, and specific heat of given elements are calculated using the below formulea.

Formulae:

Program of parsing of NASA file is as below:

close all
clear all
clc
%rearing the thermo file
file = fopen('THERMO.dat','r') 
 
%Universal gas constant value
R =8.314;                            
 
%header
line1 = fgetl(file)       
 
%temperature values
line2 = fgetl(file)      
 
%comments for obtaining file
des_1 = fgetl(file)                     
des_2 = fgetl(file)   
des_3 = fgetl(file)                     
A = strsplit(line2,' ');
Global_low_temperature = str2num(A{2})
Global_mid_temperature = str2num(A{3})
Global_high_temperature = str2num(A{4})
 
%information fo the species
%using for loop
for i=1:20
    
    species= fgetl(file);
    species_name = species(1:6)
    
    Line_1 = fgetl(file);
    
    L1 = strfind(Line_1,'E');
 
    c1 = str2num(Line_1(1:(L1(1)+3)));
 
    c2 = str2num(Line_1((L1(1)+4):(L1(2)+3)));
 
    c3 = str2num(Line_1((L1(2)+4):(L1(3)+3)));
 
    c4 = str2num(Line_1((L1(3)+4):(L1(4)+3)));
 
    c5 = str2num(Line_1((L1(4)+4):(L1(5)+3)));
 
    Line_2 = fgetl(file);
 
    L2 = strfind(Line_2,'E');
 
    c6 = str2num(Line_2(1:(L2(1)+3)));
 
    c7 = str2num(Line_2((L2(1)+4):(L2(2)+3)));
 
    c8 = str2num(Line_2((L2(2)+4):(L2(3)+3)));
 
    c9 = str2num(Line_2((L2(3)+4):(L2(4)+3)));
 
    c10 = str2num(Line_2((L2(4)+4):(L2(5)+3)));
 
    Line_3 = fgetl(file);
 
    L3 = strfind(Line_3,'E');
 
    c11 = str2num(Line_3(1:(L3(1)+3)));
 
    c12 = str2num(Line_3((L3(1)+4):(L3(2)+3)));
 
    c13 = str2num(Line_3((L3(2)+4):(L3(3)+3)));
 
    c14 = str2num(Line_3((L3(3)+4):(L3(4)+3)));
 
    %creating new folder for species
    mkdir(['E:\AKSHAY\SKILL LYNC\Matlab_skill_lync\projects\Species\',species_name]);
 
    %Temperature ranges assumed 
    Temperature = linspace(300,5000,100); 
 
    %calculation of properties based on lower and higher temperatures
    for j = 1:length(Temperature)
        if Temperature(j)<3000
            Cp = (c1+c2.*Temperature+c3.*Temperature.^2+c4.*Temperature.^3+c5.*Temperature.^4).*R;
            H = (c1+(c2.*Temperature)./2+(c3.*Temperature.^2)/3+(c4.*Temperature.^3)/4+(c5.*Temperature.^4/5)+c6./Temperature).*Temperature.*R;
            S = (c1*log(Temperature)+c2.*Temperature+(c3.*Temperature.^2)/2+(c4.*Temperature.^3)/3+(c5.*Temperature.^4)/4+c7).*R;
        else
            Cp = (c8+c9.*Temperature+c10.*Temperature.^2+c11.*Temperature.^3+c12.*Temperature.^4).*R;
            H = (c8+(c9.*Temperature)/2+(c10.*Temperature.^2)/3+(c11.*Temperature.^3)/4+(c12.*Temperature.^4/5)+c13./Temperature).*Temperature.*R;
            S = (c8.*log(Temperature)+c9.*Temperature+(c10.*Temperature.^2)/2+(c11.*Temperature.^3)/3+(c12.*Temperature.^4)/4+c14).*R;
        end
    end
 
    %plotting graph
    %Temperature vs Entropy
    figure(1)
    plot(Temperature,S,'linewidth',3,'color','g')
    title(species_name)
    xlabel('Temperature')
    ylabel('Entropy')
 
    %Temperature vs Enthalpy
    figure(2)
    plot(Temperature,H,'linewidth',3,'color','r')
    title(species_name)
    xlabel('Temperature')   
    ylabel('Enthalpy')
 
    %Temperature vs Specific heat
    figure(3)   
    plot(Temperature,Cp,'linewidth',3,'color','b')
    title(species_name)
    xlabel('Temperature')
    ylabel('Specific heat')
 
    directory = (['E:\AKSHAY\SKILL LYNC\Matlab_skill_lync\projects\Species\',species_name]);   %changing the filepath to save the plots
    cd(directory)
 
    %saving the plots
 
    saveas(1,'Entropy.jpg');
    saveas(2,'Enthalpy.jpg');
    saveas(3,'Specific heat.jpg');
 
    cd('E:\AKSHAY\SKILL LYNC\Matlab_skill_lync\projects\')       %switching the directory back to read thermodat file for molecular mass calculation
 
    [MW] = molecular_weight(species_name)
 
end
 
fclose(file)

function for molecular weight is defined which is as given below:

%defining fuction to calculate molecular weight
function [MW] = molecular_weight(species_name)
  
        species = upper(species_name); 
 
    Constituents = ['H', 'C', 'N', 'O', 'A'];
 
    Atomic_weight = [1.00794 12.0107 14.0067 15.9994 39.948]; 
 
    MW = 0; %initial
 
    for i=1:length(species)
        for j=1:length(Constituents)
            if strcmp(species(i),Constituents(j))
                MW = MW + Atomic_weight(j); 
                u = j;
            end
        end
        n = str2num(species(i));
        if n>1
            MW = MW + Atomic_weight(u)*(n-1);
        end
    end
end

Explanation for the program:

file parsing is done using fopen(), fgetl(), fclose() commands. plot for various elements is done using for loop . where the molecular function is defined using for loop. plots of all the elements are saved into a single file. the screenshot of the window is shown below.

figure: screenshot of the window

plots of the elemet O2,CO2 are shown below:

Result:

The program is written to calculate the enthalpy,entropy,specific heat and molecular weight are calculated. The plots of all the species are saved and the required plots are shown above.

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.