Challenge

Project 1 - Parsing NASA thermodynamic data

Drive link:https://drive.google.com/drive/folders/12pHhHV7FxV2JLCnkR_dGeDrESch5QTFq?usp=sharing

% Enthalpy Calculation function

function H = Enthalpy(a1,a2,a3,a4,a5,a6,a8,a9,a10,a11,a12,a13,Temp,R,global_medium_temp)
% Comparing with global temperature
% If less than global temperature - minimum coefficients are taken

if Temp <= global_medium_temp
H = R*Temp.*(a8 + ((a9*Temp)/2) + ((a10*(Temp).^2)/3) + ((a11*(Temp).^3)/4) + ((a12* (Temp) .^4)/5)+((a13./Temp)));
else

% Else maximum coefficients are taken

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

function for enthapy

% Entropy Calculation function

function S = Entropy_calc(a1,a2,a3,a4,a5,a7,a8,a9,a10,a11,a12,a14, Temp,R,global_medium_temp)
% Comparing with global temperature
% If less than global temperature - minimum coefficients are taken

if Temp <= global_medium_temp
    S = R.*(a8.*log(Temp) + (a9.*Temp) + (a10*((Temp).^2)/2) + (a11*((Temp).^3)/3) + (a12*((Temp) .^4)/4)+a14);
else

% Else - maximum coefficients are taken
S = R.*(a1.*log(Temp) + (a2.*Temp) + (a3*((Temp).^2)/2) + (a4*((Temp).^3)/3) + (a5*((Temp) .^4)/4)+a7);
end

function for entropy

% Specific heat calculation function

function Cp = Specificheat(a1,a2,a3,a4,a5,a8,a9,a10,a11,a12, Temp,R,global_medium_temp)
% Comparing with global temperature

% If less than global temperature - minimum coefficients are taken

if Temp <= global_medium_temp

Cp = R*(a8 + (a9*Temp) + (a10*(Temp).^2) + (a11*(Temp).^3) + (a12*(Temp).^4));

else

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



end

function for specific heat

clear all
close all
clc

% Make directory
mkdir 'C:UsersAdminDesktopNASA File Parsing'


% Open a file & 'r' Open the file for reading 
f1=fopen('THERMO.dat','r')
gt=fgetl(f1);

% Obtaing Temperatures
global_temp=fgetl(f1);

% Spliting
t=strsplit(global_temp);

% Converting string cells to numbers 
global_low_temp=str2num(t{2});
global_medium_temp=str2num(t{3});
global_high_temp=str2num(t{4});


Temp=linspace(global_low_temp,global_high_temp,1000);
% Universal Gas Constant J/(mol-K)
    R = 8.314;   
    
% skipping lines 
for i = 1:3
    gt=fgetl(f1);
end

 for i = 1:53
gt=fgetl(f1);
A=strsplit(gt,' ');
Species_SP=(A{1})


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

 % Extracting coefficients 
a1=line_1(1:a(1)+3);
a1=str2num(a1);             
a2=line_1(a(1)+4:a(2)+3);
a2=str2num(a2) ;             
a3=line_1(a(2)+4:a(3)+3);
a3=str2num(a3)  ;            
a4=line_1(a(3)+4:a(4)+3);
a4=str2num(a4);            
a5=line_1(a(4)+4:a(5)+3);
a5=str2num(a5)  ;            

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

 % Extracting 2nd coefficients
a8=line_2(b(2)+4:b(3)+3);         
a8=str2num(a8);             
a9=line_2(b(3)+4:b(4)+3);
a9=str2num(a9) ;             
a10=line_2(b(4)+4:b(5)+3);
a10=str2num(a10) ;           


line_3=fgetl(f1);
c=strfind(line_1,'E');

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

% Specific heat calculation
    Cp = Specificheat(a1,a2,a3,a4,a5,a8,a9,a10,a11,a12,Temp,R,global_medium_temp);
 
    % Enthalpy calculation
    H = Enthalpy(a1,a2,a3,a4,a5,a6,a8,a9,a10,a11,a12,a13,Temp,R,global_medium_temp);
 
    % Entropy calculation
    S = Entropy_calc(a1,a2,a3,a4,a5,a7,a8,a9,a10,a11,a12,a14,Temp,R,global_medium_temp);

    % Calculating molecular weight of species
    Molecularweight(i) = Molecular_weight(Species_SP);
    
    % Read & Write Molecular list
     Molecular_list = fopen('Molecular weight.txt','a+');
         fprintf( Molecular_list,'Molecular weight of %s is %d \n',Species_SP,Molecularweight);
         fclose(Molecular_list);

     % plotting(CP,H,S,Temp,Species_SP)
        % Saving as a folder
 
           cur_dir=pwd;
           mkdir(Species_SP);
           cd(Species_SP);
 
        %CP vs T
 
        figure(1)
        plot(Temp,Cp,'linewidth',2,'color','r');
        xlabel('Temperature  [K]');
        ylabel('Specific Heat [kJ]');
        title(sprintf('Varying Specific Heat with Temperature Range of %s',Species_SP));
        grid on
        saveas(figure(1),'Specific Heat.jpg');
 
        % H vs T
 
        figure(2)
        plot(Temp,H,'linewidth',2,'color','g');
        xlabel('Temperature [K]');
        ylabel('Enthalpy in [kJ/(mol)]');
        title(sprintf('Varying Enthalpy with Temperature Range of %s',Species_SP));
        grid on
        saveas(figure(2),'Ethalpy.jpg');
 
        % S vs T
 
        figure(3)
        plot(Temp,S,'linewidth',2,'color','b');
        xlabel('Temperature [K]');
        ylabel('Entropy in [kJ/(mol-K)]');
        title(sprintf('Varying Entropy with Temperature Range of %s',Species_SP));
        grid on
        saveas(figure(3),'Entropy.jpg');
 
        cd(cur_dir);            
 
        % Molecular weight
        
        M = Molecular_weight(Species_SP)
        f2 = fopen('molecular mass','w');
        fprintf('%s n %s n %f n','species','Molecular mass',M)
        fclose(f2)
end

main program

open the raw data themo.data, read or get the data, split the data and convert the string to numbers, formulate the constatns then skiping the lines not required,extaracting the data , calling the functions read the molecular list and save the data in the files plot the data required close all the files

% Molecular Weight Calculation function

function Molecularweight = Molecular_weight(Species_SP)
         % Standard - Atomic Name
         atomic_name = ['H','C','O','N','A'];             
         % Hydrogen, Carbon, Oxygen, Nitrogen, Argon
         
         fprintf('Molecular Weight of ');
         fprintf(Species_SP);
         fprintf(' : ');
         % Standard Atomic Number
         Atomic_Weight = [1.008 12.011 15.999 14.007 39.948];     
         % Starting Range of Molecule           
         Molecularweight = 0;                                   
        
         % Adding Atomic number to obtain particular value
        for i = 1:length(Species_SP)
            for j = 1:length(atomic_name)
                if strcmpi(Species_SP(i),atomic_name(j))
                        Molecularweight = Molecularweight +Atomic_Weight(j);
                    position = j;
                end
            end
            n = str2num(Species_SP(i));
            
            if n>1
            
                Molecularweight = Molecularweight + Atomic_Weight(position)*(n-1);
            
            end
        end
            fprintf('molecular weight %s :',Species_SP);
            fprintf('%d',Molecularweight);
            disp(' ');      
end

, function for molecular weight

O^2 graphs of enthalpy entropy and specefic heat

CO^2 graphs of enthalpy entropy and specefic heat

N^2 graphs of enthalpy entropy and specefic heat

molecular weight of the elements or species O^2

molecular weight of the elements or species N^2

molecular weight of the elements or species CO^2

all the files as saved

There was a error while tying the code which was latter rectified.

We have Concluded that by using MATLAB code, the necessary data for different species are extracted from thermodynamic data file. The specific heat, enthalpy, and entropy for all the species are calculated and plotted against the temperature range. And molecular weight is provided.

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.