Challenge

Project 1 - Parsing NASA thermodynamic data

1)Enthalpy function 
% Enthalpy 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

2)Entropy function 
% Entropy function
function S = Entropy(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
 
3)Molicular weight 

% Molecular Weight 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 

4)Specific heat function 

% Specific heat 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
% Else maximum coefficients are taken
Cp = R*(a1 + (a2*Temp) + (a3*(Temp).^2) + (a4*(Temp).^3) + (a5*(Temp).^4));
end

5)Data parsing programme 

clear all
close all
clc
% Make directory
mkdir 'D:\(A) karan skill lync\challanges matlab\challange 9'
% Reading Data file - NASA Thermodynamic
% Open a file & 'r' Open the file for reading 
f1=fopen('THERMO.dat','r')
gt=fgetl(f1);
% Obtaing Temperatures - by Reading Header Information
global_temp=fgetl(f1);
% Spliting
t=strsplit(global_temp);
% Converting string cells to numbers using str2num,
global_low_temp=str2num(t{2});
global_medium_temp=str2num(t{3});
global_high_temp=str2num(t{4});
% Temperature range & Gas Constant
 % Temperature Range assumed
Temp=linspace(global_low_temp,global_high_temp,1000);
% Universal Gas Constant J/(mol-K)
 R = 8.314; 
 
% skipping three comment lines in the file
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 higher and lower temperature coefficients
% % Extracting FIRST 7 coefficients i.e HIGH-temperature coefficients 
a1=line_1(1:a(1)+3);
a1=str2num(a1); %1
a2=line_1(a(1)+4:a(2)+3);
a2=str2num(a2) ; %2
a3=line_1(a(2)+4:a(3)+3);
a3=str2num(a3) ; %3
a4=line_1(a(3)+4:a(4)+3);
a4=str2num(a4); %4
a5=line_1(a(4)+4:a(5)+3);
a5=str2num(a5) ; %5
line_2=fgetl(f1);
b=strfind(line_1,'E');;
a6=line_2(1:b(1)+3);
a6=str2num(a6) ; %6
a7=line_2(a(1)+4:b(2)+3);
a7=str2num(a7); %7
 % Extracting SECOND 7 coefficients - LOW-temperature coefficients
a8=line_2(b(2)+4:b(3)+3); 
a8=str2num(a8); %8
a9=line_2(b(3)+4:b(4)+3);
a9=str2num(a9) ; %9
a10=line_2(b(4)+4:b(5)+3);
a10=str2num(a10) ; %10
line_3=fgetl(f1);
c=strfind(line_1,'E');
a11=line_3(1:c(1)+3);
a11=str2num(a11); %11
a12=line_3(c(1)+4:c(2)+3);
a12=str2num(a12); %12
a13=line_3(c(2)+4:c(3)+3);
a13=str2num(a13); %13
a14=line_3(c(3)+4:c(4)+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);
 % 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(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);
 % 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_SP));
 grid on
 saveas(figure(1),'Specific Heat.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('Varying Enthalpy with Temperature Range of %s',Species_SP));
 grid on
 saveas(figure(2),'Ethalpy.jpg');
 % Plot 3, Entropy (S) vs Temperature Range (Temp)
 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

the explanation is given in ppt 

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.