Challenge

Project 1 - Parsing NASA thermodynamic data


AIM:- Write a code in Matlab to parse the NASA thermodynamic data file and then calculate thermodynamic properties of various gas species.

OBJECTIVE:-

-Write a function that extracts the 14 coefficients and calculates the Entropy,Enthalpy and Specific Heat for all species in the data file.

-Calculate the Molecular weight of each species and display it in the command window.

-Plot the Cp,Enthalpy and Entropy for the local temperature range.

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

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

-Schreenshot of the window where all the folders are saved.

-plots for N2 and Co2 species.

NASA Thermodynamic File:-

NASA thermodynamics file which is THERMO.dat file in which there are temperature range and 53 species are given in these data and each species contains 14 coefficients and temperature ranges and we have to parse these 14 coefficients to find specific heat,Entropy and Enthalpy using formula as :-

Where,

R=Universal Gas constant

T=Temperature

Cp=Specific Heat(KJ)

H= Enthalpy(KJ/mol-K)

S=Entropy(KJ/mol-K)

a(i)=Coefficients where, i=1 to 14

Specific Heat:-

The specific heat is the amount heat per unit mass required to rise the temperature by one digree Celcious. The relationship between heat and temperature change is usually expressed in the form shown below .

Cp = R*(a1+(a2*T)+(a3*(T).^2)+(a4*(T).^3)+(a5*(T).^4))

Entropy:-

The measure of a system's thermal energy per unit temperature that is unavailable for doing usuful work. Beacuse work is obtained from ordered molecular motion,the amount of entropy is also a measure of the molecular disorder.

S = R*(a1.*log(T)+(a2*T)+((a3*(T).^2)/2)+((a4*(T).^3)/3)+((a5*(T).^4)/4)+a7)

Enthalpy:-

A property of a thermodynamic system, is equal to the system's internal energy plus the product of its pressure and volume.In a system contained so as to prevent mass transfer, for prcesses at constant pressure, the heat absorbed.

H = R*T*(a1+((a2*T)/2)+((a3*(T).^2)/3)+((a4*(T).^3)/4)+((a5*(T).^4)/5)+((a6./T)))

MATLAB CODE:-

close all
clear all
clc

% Input
R = 8.314 % Gas Constant

% Reading data file
% Open file and reading THERMO.dat file
f1 = fopen('THERMO.dat','r')
get = fgetl(f1);

% Now Reading Temperature from this file
temp = fgetl(f1)

% Spliting
s = strsplit(temp);

% Converting strings cells into numbers
templow = str2num(s{2});
tempmid = str2num(s{3});
temphigh = str2num(s{4});

% Temperature Range
T = linspace(templow,temphigh,1000);

% Skipping comments lines
for i=1:3
    get=fgetl(f1);
end

% Reading the Species
for j=1:53
    tline=fgetl(f1);

    A = strsplit(tline,' ')
    species = (A{1});

    % Converting string to number
      lowtemp = str2num(A{end-3});
      midtemp = str2num(A{end-2});
      hightemp = str2num(A{end-1});

      tline1 = fgetl(f1);
      a = strfind(tline1,'E');

      % Finding Frist 7 higher and Second lower coefficients
      % Finding Higher coefficients
      a1= tline1(1:a(1)+3);
      a1 =str2num(a1);
      a2= tline1(a(1)+4:a(2)+3);
      a2 =str2num(a2);
      a3= tline1(a(2)+4:a(3)+3);
      a3 =str2num(a3);
      a4= tline1(a(3)+4:a(4)+3);
      a4 =str2num(a4);
      a5= tline1(a(4)+4:a(5)+3);
      a5 =str2num(a5);

      tline2 = fgetl(f1);
      b = strfind(tline2,'E'); 
      a6 = tline2(1:b(1)+3);
      a6 = str2num(a6);
      a7 = tline1(b(1)+4:b(2)+3);
      a7 = str2num(a7); 

      % Finding Lower coefficients
       a8 = tline2(b(2)+4:b(3)+3);
       a8 = str2num(a8);
       a9 = tline2(b(3)+4:b(4)+3);
       a9 = str2num(a9);
       a10 = tline1(b(4)+4:b(5)+3);
       a10 = str2num(a10);

       tline3 = fgetl(f1);
       c = strfind(tline3,'E');
        a11 = tline3(1:c(1)+3);
        a11 = str2num(a11);
        a12 = tline3(c(1)+4:c(2)+3);
        a12 = str2num(a12);
        a13 = tline3(c(2)+4:c(3)+3);
        a13 = str2num(a13);
        a14 = tline3(c(3)+4:c(4)+3);
        a14 = str2num(a14);

        % Calculat specific heat
        Cp = Specific_heat(a1,a2,a3,a4,a5,a8,a9,a10,a11,a12,T,R,tempmid);

        % Calculat Entropy
        S = Entropy(a1,a2,a3,a4,a5,a7,a8,a9,a10,a11,a12,a14,T,R,tempmid);

        % Calculat Enthalpy
        H = Enthalpy(a1,a2,a3,a4,a5,a6,a8,a9,a10,a11,a12,a13,T,R,tempmid);

        % Calculat Molecular weight of the species
        W = Molecular_weight(species);

        % writing molecular weight file
        MW_file = fopen('Molecular Weight.txt','w');
        fprintf(MW_file,'Molecular weight of %s is %d ',species,W);
        fclose(MW_file);

        % Plotting Cp, H and S with Temperature
        % Saving in a folder
        mkdir(species)
        cd(species)

        % plot 1 Cp vs T
        figure(1)
        plot(T,Cp,'LineWidth',2,'Color','b');
        xlabel('Temperature(K)');
        ylabel('Specific Heat(KJ)');
        title(sprintf('Specific heat vs Temperature range of %s',species))
        grid on
        saveas(figure(1),'Specicfic Heat.jpg');


        % plot 2 S vs T
        figure(2)
        plot(T,S,'LineWidth',2,'Color','r');
        xlabel('Temperature(K)');
        ylabel('Entropy(KJ/mol-K)');
        title(sprintf('Entropy vs Temperature range of %s',species))
        grid on
        saveas(figure(2),'Entropy.jpg');
        

        % plot 3 Cp vs T
        figure(3)
        plot(T,H,'LineWidth',2,'Color','g');
        xlabel('Temperature(K)');
        ylabel('Enthalpy(KJ/mol)');
        title(sprintf('Enthalpy vs Temperature range of %s',species))
        grid on
        saveas(figure(3),'Enthalpy.jpg');
        cd ..

        % Molecular weight
        W = Molecular_weight(species)
        
end

Function to find specific heat:-

function Cp = Specific_heat(a1,a2,a3,a4,a5,a8,a9,a10,a11,a12,T,R,tempmid)
 % calculating specific heat
 % calculating specific heat for higher and lower temperature respectively

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

FUNCTION TO FIND ENTROPY;-

function S = Entropy(a1,a2,a3,a4,a5,a7,a8,a9,a10,a11,a12,a14,T,R,tempmid)
 % calculating entropy
 % calculating entropy for higher and lower temperature respectively

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

FUNCTION TO FIND ENTHALPY:-

function H = Enthalpy(a1,a2,a3,a4,a5,a6,a8,a9,a10,a11,a12,a13,T,R,tempmid)
 % calculating enthalpy
 % calculating specific heat for higher and lower temperature respectively

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

FUNCTION TO FIND MOLECULAR WEIGHT OF DIFFRENT SPECIES;-

function W = Molecular_weight(species)

         % Defining Atomic name of the species
         atomic_name = ['H','C','O','N','Ar'];

         % Defining Atomic masses of main species
         atomic_weight = [1.008 12.011 15.999 14.007 39.948];

         % Molecular weight starting range
         W=0;

         for i=1:length(species)
             for j=1:length(atomic_name)
                 if species(i)==atomic_name(j)
                 W = W + atomic_weight(j);
                 position = j;
                 end
             end
         
         n = str2num(species);
         if n>1
             W = W + atomic_weight(position)*(n-1);
             end
   end  
    fprintf('Molecular Weight of %s-%f',species ,W);
    
    disp(' ')

ERRORS:-The error is faced invalid syntax i have assigned

the errors are in below

WORKSPACE:-
FINAL RESULTS:-
CONCLUSION:-Thus fiole parsing is done for NASA thermodynamics data and the thermodynamics property like specific heat ,entropy and enthalpy are calculated Also plotting is done for the same and stored in the separate directory by using matlab code
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.