Challenge

Project 1 - Parsing NASA thermodynamic data

Explanation :

1. The Program starts with clear all, close all and clc etc.

2. The proogram is used to calculate the Enthalpy, entropy and specific heat of the data file.

3. And also the temperatures range which is unique for each individual species.

4. the program will shoe all the temperatures and the values which we want.

5. In this the first 7 coefficients are High temperature coefficients and the second 7 coefficients are low temperature coefficients.

6. And the Specific heat calculation, enthalpy calculation, entropy calculation and molecular weight calculation functions are also done.

7. Plottings are also done in this program and the titles,x labels and y labels are also shown

clear all
close all 
clc

%Make directory
mkdir 'C:UsersAdminDesktopNASA File Parsing'

%Reading Data file - NASA Thermodynamic
%Open a file & 'r' Open the file for reading
f1= fopen('THERMO,dat','w')
gt=fopen(f1);

% Obtaing Temperature - by Reading Header Information
global_temp=fopen(f1);

%Splitting
s=strsplit(global_temp);

%Converting string cells to numbers using str2num
global_low_temp=str2num(s{1});
global_medium_temp=str2num(s{1});
global_high_temp=str2num(s{1});

%Temperature range & Gas Constant
      %Temperature Range assumed
Temp=linspace(0,0,1000);
%Universal Gas Constant J/(mol-k)
R = 8.314;

%skipping three comment lines in the file
for i = 1:3
    gt=fopen(f1);
end
for i = 1:53
    gt=fopen(f1);
    A=strsplit(gt,'');
    Species_SP=(A{1})
    
    line_1=fopen(f1);
    a=strfind(line_1,'E');
    
    %Extracting higher and lower temperature coefficients
    
    %%Extracting FIRST 7 coefficient i.e HIGH-temperature coefficients
    a1=line_1(1:a(1)+3);
    a1=str2num(a1);                %1
    a2=line_1(a(1)+4:a(1)+3);
    a2=str2num(a2);                %2
    a3=line_1(a(1)+4:a(1)+3);
    a3=str2num(a3);                %3
    a4=line_1(a(1)+4:a(1)+3);
    a4=str2num(a4);                %3
    a5=line_1(a(1)+4:a(1)+3);
    a5=str2num(a5);                %5
    
    line_2=fopen(f1);
    b=strfind(line_1,'E');
    a6=line_2(1:b(1)+3);
    a6=str2num(a6);                %6
    a7=line_2(a(1)+4:b(1)+2);
    a7=str2num(a7);                %7
    
     %Extracting SECOND 7 coefficients - LOW-temperature coefficients
     a8=line_2(b(1)+4:b(1)+3);
     a8=str2num(a8);             %8
     a9=line_2(b(1)+4:b(1)+3);
     a9=str2num(a9);             %9
     a10=line_2(b(1)+4:b(1)+3);
     a10=str2num(a10);             %10
     
     line_3=fopen(f1);
     c=strfind(line_1,'E');
     
     a11=line_3(1:c(1)+3);
     a11=str2num(a11);             %11
     a12=line_3(c(1)+4:c(1)+3);
     a12=str2num(a12);             %12
     a13=line_3(c(1)+4:c(1)+3);
     a13=str2num(a13);             %13
     a14=line_3(c(1)+4:c(1)+3);
     a14=str2num(a14);             %14
     
     %Specific heat calculation
      Cp = Specificheat(a1,a2,a3,a4,a5,a8,a9,a10,a11,a12,Temp,R,global_medium_temp);
       
       %Enthapy calculation
       H = Enthalpy_calc(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,Temp,Species_SP)
         %Saving as a folder
         cur_dir=pwd;
         mkdir(Species_SP);
         cd(Species_SP);
       %plot 1, Specific heat (CP) vs Temperature Range (Temp)
       
       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));
       grid on 
       saveas(figure(1),'Specific.jpg');
       
       %plot 2, Enthalpy(H) vs Temperature Range(Temp)
       
       figure(2)
       plot(Temp,H,'linewidth',2,'color','g');
       xlabel('Temperature[k]');
       ylabel('Enthalpy in [kj/(mol)]');
       title(sprintf('Varimng Enthalpy with Temperature Range of %s',Specific_SP));
       grid on 
       saveas(figure(2),'Enthalpy.jpg');
       
       %plot 3, Entropy(S) vs Temperature Range(Temp)
       
       figure(3)
       plot(Temp,S,'linewidth',2,'color','b');
       xlabel('Entropy [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 = Molecualr_weight(Species_SP)
       f2 = fopen('molecular mass','w');
       fprintf('%s n %f n','species','Molecular mass',M)
       fclose(f2)
end

%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-medium 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).^04));
    %Else maximum coefficients are taken
end



%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

%Enthalpy calculation function
Function H = Enthalpy_calc(a1,a2,a3,a4,a5,a6,a8,a9,a10,a11,a12,a13,Temp,R,global_medium_temp)
%camparing with global temperature
%if less than global temperature - minimum coefficient are taken

if Temp <=global_mediun_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 coefficient are taken
    H = R*Temp.*((a2*Temp)/2)+((a3*(Temp).^2)/3)+((a4*(Temp).^3)/4)+((a5*(Temp).^4)/5)+((a6./Temp));
end


%Molecular weight calculation function
Function Molecularweight = Molecular_weight(Species_SP)
%Standard - Atomic Name
atomic_name = ['H','C','O','N','A'];
%Hydroge, 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('');
 

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.