Project 1 - Parsing NASA thermodynamic data
Project 1 - Parsing NASA Thermodynamic Data
Aim:--
To write a code in Matlab to parse the NASA thermodynamic data file and then calculate the thermodynamic properties of various gas species.
Objective:--
1. To write a function that extracts the 14 coefficients and calculates the enthalpy, entropy, and specific heats for all the species in the NASA thermodynamic data file "Thermo.dat".
The NASA polynomials have the form as shown below:
Where R is the universal gas constant, T is the temperature
2. To calculate the molecular weight of each species and display it in the command window.
3. To plot the Cp, Enthalpy, and Entropy for the local temperature range (low temperature: high temperature) specific for each species.
4. To save the plots as images with appropriate names and dump them in separate folders for each species with suitable name automatically.
File Parsing :-
File parsing refers to how information can be read from a particular text file or any type of file and how that information can be used in a computer program
NASA Thermodynamic File
THERMO.dat file is a data file containing 14 coefficients for 53 different elements given by NASA. These coefficients are utilized to calculate the specific heat, enthalpy & entropy for a particular element. Each element has its own range of local temperature. Below screenshot of the THERMO.dat file is displayed.
--------------------------Main Code---------------------------
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
<![endif]-->
Line 1-3: This line clears all variables from the MATLAB workspace, closes all open figures, and clears the command window.
Line 7: It closes the file identified as 'THERMO.dat' if it's open, then opens the file in read-only mode ('r') and assigns a file identifier 'f1' to it.
Line 8: Reads the first line of the opened file and stores it in the variable 'gt'.
Line 11: Reads the second line of the file, which contains temperature data, and stores it in the 'global_temp' variable.
Line 14: Splits the 'global_temp' string into words and stores them in the cell array 't'.
Line 17-19: Converts the second, third, and fourth elements of the 't' array into numeric values and assigns them to 'global_low_temp', 'global_medium_temp', and 'global_high_temp' respectively.
Line 23: Generates an array of 1000 equally spaced temperature values between 'global_low_temp' and 'global_high_temp' and stores it in 'Temp'.
Line 25: Defines the universal gas constant 'R' with a value of 8.314 J/(mol-K).
Line 28-30: Iteratively skips the next three lines in the file, which are assumed to be comment lines.
Line 32: Initiates a loop that iterates 53 times to process data for each species in the file.
Line 33-35: Reads a line from the file, splits it into words, and extracts the first word as the species name, stored in 'Species_SP'.
Line 38: Reads the first line of coefficients for the species and finds the positions of 'E' characters, which suggest exponential notation for numbers.
<![endif]-->
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 enclosed so as to prevent the mass transfer, for processes at constant pressure, the heat absorbed or released equals the change in enthalpy.
H = (a1 + a2 T /2 + a3 T^2 /3 + a4 T^3 /4 + a5 T^4 /5 + a6/T)*R*T
<![endif]-->
<![endif]-->
It defines the atomic names and their corresponding standard atomic weights.
It initializes the Molecularweight variable to zero.
It iterates through the characters in the input Species_SP:
For each character, it checks if it matches one of the atomic names. If there's a match, it adds the corresponding atomic weight to the Molecularweight.
If the character is a number greater than 1, it multiplies the atomic weight of the element by (n-1) and adds the result to Molecularweight, where 'n' is the number.
Finally, it displays the calculated molecular weight for the input species.
----------------------Output------------------
Species_SP =
'O'
Molecular Weight of O : molecular weight O :1.599900e+01
Molecular Weight of O : molecular weight O :1.599900e+01
M =
15.9990
species n Molecular mass n 15.999000 n
ans =
0
Species_SP =
'O2'
Molecular Weight of O2 : molecular weight O2 :3.199800e+01
Molecular Weight of O2 : molecular weight O2 :3.199800e+01
M =
31.9980
species n Molecular mass n 31.998000 n
ans =
0
Species_SP =
'H'
Molecular Weight of H : molecular weight H :1.008000e+00
Molecular Weight of H : molecular weight H :1.008000e+00
M =
1.0080
species n Molecular mass n 1.008000 n
ans =
0
Species_SP =
'H2'
Molecular Weight of H2 : molecular weight H2 :2.016000e+00
Molecular Weight of H2 : molecular weight H2 :2.016000e+00
M =
2.0160
species n Molecular mass n 2.016000 n
ans =
0
Species_SP =
'OH'
Molecular Weight of OH : molecular weight OH :1.700700e+01
Molecular Weight of OH : molecular weight OH :1.700700e+01
M =
17.0070
species n Molecular mass n 17.007000 n
ans =
0
Species_SP =
'H2O'
Molecular Weight of H2O : molecular weight H2O :1.801500e+01
Molecular Weight of H2O : molecular weight H2O :1.801500e+01
M =
18.0150
species n Molecular mass n 18.015000 n
ans =
0
Species_SP =
'HO2'
Molecular Weight of HO2 : molecular weight HO2 :3.300600e+01
Molecular Weight of HO2 : molecular weight HO2 :3.300600e+01
M =
33.0060
species n Molecular mass n 33.006000 n
ans =
0
Species_SP =
'H2O2'
Molecular Weight of H2O2 : molecular weight H2O2 :3.401400e+01
Molecular Weight of H2O2 : molecular weight H2O2 :3.401400e+01
M =
34.0140
species n Molecular mass n 34.014000 n
ans =
0
Species_SP =
'C'
Molecular Weight of C : molecular weight C :1.201100e+01
Molecular Weight of C : molecular weight C :1.201100e+01
M =
12.0110
species n Molecular mass n 12.011000 n
ans =
0
Species_SP =
'CH'
Molecular Weight of CH : molecular weight CH :1.301900e+01
Molecular Weight of CH : molecular weight CH :1.301900e+01
M =
13.0190
species n Molecular mass n 13.019000 n
ans =
0
Species_SP =
'CH2'
Molecular Weight of CH2 : molecular weight CH2 :1.402700e+01
Molecular Weight of CH2 : molecular weight CH2 :1.402700e+01
M =
14.0270
species n Molecular mass n 14.027000 n
ans =
0
Species_SP =
'CH2(S)'
Molecular Weight of CH2(S) : molecular weight CH2(S) :1.402700e+01
Molecular Weight of CH2(S) : molecular weight CH2(S) :1.402700e+01
M =
14.0270
species n Molecular mass n 14.027000 n
ans =
0
Species_SP =
'CH3'
Molecular Weight of CH3 : molecular weight CH3 :1.503500e+01
Molecular Weight of CH3 : molecular weight CH3 :1.503500e+01
M =
15.0350
species n Molecular mass n 15.035000 n
ans =
0
Species_SP =
'CH4'
Molecular Weight of CH4 : molecular weight CH4 :1.604300e+01
Molecular Weight of CH4 : molecular weight CH4 :1.604300e+01
M =
16.0430
species n Molecular mass n 16.043000 n
ans =
0
Species_SP =
'CO'
Molecular Weight of CO : molecular weight CO :2.801000e+01
Molecular Weight of CO : molecular weight CO :2.801000e+01
M =
28.0100
species n Molecular mass n 28.010000 n
ans =
0
Species_SP =
'CO2'
Molecular Weight of CO2 : molecular weight CO2 :4.400900e+01
Molecular Weight of CO2 : molecular weight CO2 :4.400900e+01
M =
44.0090
species n Molecular mass n 44.009000 n
ans =
0
Species_SP =
'HCO'
Molecular Weight of HCO : molecular weight HCO :2.901800e+01
Molecular Weight of HCO : molecular weight HCO :2.901800e+01
M =
29.0180
species n Molecular mass n 29.018000 n
ans =
0
Species_SP =
'CH2O'
Molecular Weight of CH2O : molecular weight CH2O :3.002600e+01
Molecular Weight of CH2O : molecular weight CH2O :3.002600e+01
M =
30.0260
species n Molecular mass n 30.026000 n
ans =
0
Species_SP =
'CH2OH'
Molecular Weight of CH2OH : molecular weight CH2OH :3.103400e+01
Molecular Weight of CH2OH : molecular weight CH2OH :3.103400e+01
M =
31.0340
species n Molecular mass n 31.034000 n
ans =
0
Species_SP =
'CH3O'
Molecular Weight of CH3O : molecular weight CH3O :3.103400e+01
Molecular Weight of CH3O : molecular weight CH3O :3.103400e+01
M =
31.0340
species n Molecular mass n 31.034000 n
ans =
0
Species_SP =
'CH3OH'
Molecular Weight of CH3OH : molecular weight CH3OH :3.204200e+01
Molecular Weight of CH3OH : molecular weight CH3OH :3.204200e+01
M =
32.0420
species n Molecular mass n 32.042000 n
ans =
0
Species_SP =
'C2H'
Molecular Weight of C2H : molecular weight C2H :2.503000e+01
Molecular Weight of C2H : molecular weight C2H :2.503000e+01
M =
25.0300
species n Molecular mass n 25.030000 n
ans =
0
Species_SP =
'C2H2'
Molecular Weight of C2H2 : molecular weight C2H2 :2.603800e+01
Molecular Weight of C2H2 : molecular weight C2H2 :2.603800e+01
M =
26.0380
species n Molecular mass n 26.038000 n
ans =
0
Species_SP =
'C2H3'
Molecular Weight of C2H3 : molecular weight C2H3 :2.704600e+01
Molecular Weight of C2H3 : molecular weight C2H3 :2.704600e+01
M =
27.0460
species n Molecular mass n 27.046000 n
ans =
0
Species_SP =
'C2H4'
Molecular Weight of C2H4 : molecular weight C2H4 :2.805400e+01
Molecular Weight of C2H4 : molecular weight C2H4 :2.805400e+01
M =
28.0540
species n Molecular mass n 28.054000 n
ans =
0
Species_SP =
'C2H5'
Molecular Weight of C2H5 : molecular weight C2H5 :2.906200e+01
Molecular Weight of C2H5 : molecular weight C2H5 :2.906200e+01
M =
29.0620
species n Molecular mass n 29.062000 n
ans =
0
Species_SP =
'C2H6'
Molecular Weight of C2H6 : molecular weight C2H6 :3.007000e+01
Molecular Weight of C2H6 : molecular weight C2H6 :3.007000e+01
M =
30.0700
species n Molecular mass n 30.070000 n
ans =
0
Species_SP =
'CH2CO'
Molecular Weight of CH2CO : molecular weight CH2CO :4.203700e+01
Molecular Weight of CH2CO : molecular weight CH2CO :4.203700e+01
M =
42.0370
species n Molecular mass n 42.037000 n
ans =
0
Species_SP =
'HCCO'
Molecular Weight of HCCO : molecular weight HCCO :4.102900e+01
Molecular Weight of HCCO : molecular weight HCCO :4.102900e+01
M =
41.0290
species n Molecular mass n 41.029000 n
ans =
0
Species_SP =
'HCCOH'
Molecular Weight of HCCOH : molecular weight HCCOH :4.203700e+01
Molecular Weight of HCCOH : molecular weight HCCOH :4.203700e+01
M =
42.0370
species n Molecular mass n 42.037000 n
ans =
0
Species_SP =
'H2CN'
Molecular Weight of H2CN : molecular weight H2CN :2.803400e+01
Molecular Weight of H2CN : molecular weight H2CN :2.803400e+01
M =
28.0340
species n Molecular mass n 28.034000 n
ans =
0
Species_SP =
'HCN'
Molecular Weight of HCN : molecular weight HCN :2.702600e+01
Molecular Weight of HCN : molecular weight HCN :2.702600e+01
M =
27.0260
species n Molecular mass n 27.026000 n
ans =
0
Species_SP =
'HNO'
Molecular Weight of HNO : molecular weight HNO :3.101400e+01
Molecular Weight of HNO : molecular weight HNO :3.101400e+01
M =
31.0140
species n Molecular mass n 31.014000 n
ans =
0
Species_SP =
'N'
Molecular Weight of N : molecular weight N :1.400700e+01
Molecular Weight of N : molecular weight N :1.400700e+01
M =
14.0070
species n Molecular mass n 14.007000 n
ans =
0
Species_SP =
'NNH'
Molecular Weight of NNH : molecular weight NNH :2.902200e+01
Molecular Weight of NNH : molecular weight NNH :2.902200e+01
M =
29.0220
species n Molecular mass n 29.022000 n
ans =
0
Species_SP =
'N2O'
Molecular Weight of N2O : molecular weight N2O :4.401300e+01
Molecular Weight of N2O : molecular weight N2O :4.401300e+01
M =
44.0130
species n Molecular mass n 44.013000 n
ans =
0
Species_SP =
'NH'
Molecular Weight of NH : molecular weight NH :1.501500e+01
Molecular Weight of NH : molecular weight NH :1.501500e+01
M =
15.0150
species n Molecular mass n 15.015000 n
ans =
0
Species_SP =
'NH2'
Molecular Weight of NH2 : molecular weight NH2 :1.602300e+01
Molecular Weight of NH2 : molecular weight NH2 :1.602300e+01
M =
16.0230
species n Molecular mass n 16.023000 n
ans =
0
Species_SP =
'NH3'
Molecular Weight of NH3 : molecular weight NH3 :1.703100e+01
Molecular Weight of NH3 : molecular weight NH3 :1.703100e+01
M =
17.0310
species n Molecular mass n 17.031000 n
ans =
0
Species_SP =
'NO'
Molecular Weight of NO : molecular weight NO :3.000600e+01
Molecular Weight of NO : molecular weight NO :3.000600e+01
M =
30.0060
species n Molecular mass n 30.006000 n
ans =
0
Species_SP =
'NO2'
Molecular Weight of NO2 : molecular weight NO2 :4.600500e+01
Molecular Weight of NO2 : molecular weight NO2 :4.600500e+01
M =
46.0050
species n Molecular mass n 46.005000 n
ans =
0
Species_SP =
'HCNO'
Molecular Weight of HCNO : molecular weight HCNO :4.302500e+01
Molecular Weight of HCNO : molecular weight HCNO :4.302500e+01
M =
43.0250
species n Molecular mass n 43.025000 n
ans =
0
Species_SP =
'HOCN'
Molecular Weight of HOCN : molecular weight HOCN :4.302500e+01
Molecular Weight of HOCN : molecular weight HOCN :4.302500e+01
M =
43.0250
species n Molecular mass n 43.025000 n
ans =
0
Species_SP =
'HNCO'
Molecular Weight of HNCO : molecular weight HNCO :4.302500e+01
Molecular Weight of HNCO : molecular weight HNCO :4.302500e+01
M =
43.0250
species n Molecular mass n 43.025000 n
ans =
0
Species_SP =
'NCO'
Molecular Weight of NCO : molecular weight NCO :4.201700e+01
Molecular Weight of NCO : molecular weight NCO :4.201700e+01
M =
42.0170
species n Molecular mass n 42.017000 n
ans =
0
Species_SP =
'CN'
Molecular Weight of CN : molecular weight CN :2.601800e+01
Molecular Weight of CN : molecular weight CN :2.601800e+01
M =
26.0180
species n Molecular mass n 26.018000 n
ans =
0
Species_SP =
'HCNN'
Molecular Weight of HCNN : molecular weight HCNN :4.103300e+01
Molecular Weight of HCNN : molecular weight HCNN :4.103300e+01
M =
41.0330
species n Molecular mass n 41.033000 n
ans =
0
Species_SP =
'N2'
Molecular Weight of N2 : molecular weight N2 :2.801400e+01
Warning: The requested print was not completed because the figure is invalid. This may be
happening because the figure was closed before the print could complete.
Molecular Weight of N2 : molecular weight N2 :2.801400e+01
M =
28.0140
species n Molecular mass n 28.014000 n
ans =
0
Species_SP =
'AR'
Molecular Weight of AR : molecular weight AR :3.994800e+01
Molecular Weight of AR : molecular weight AR :3.994800e+01
M =
39.9480
species n Molecular mass n 39.948000 n
ans =
0
Species_SP =
'C3H8'
Molecular Weight of C3H8 : molecular weight C3H8 :4.409700e+01
Molecular Weight of C3H8 : molecular weight C3H8 :4.409700e+01
M =
44.0970
species n Molecular mass n 44.097000 n
ans =
0
Species_SP =
'C3H7'
Molecular Weight of C3H7 : molecular weight C3H7 :4.308900e+01
Molecular Weight of C3H7 : molecular weight C3H7 :4.308900e+01
M =
43.0890
species n Molecular mass n 43.089000 n
ans =
0
Species_SP =
'CH3CHO'
Molecular Weight of CH3CHO : molecular weight CH3CHO :4.405300e+01
Molecular Weight of CH3CHO : molecular weight CH3CHO :4.405300e+01
M =
44.0530
species n Molecular mass n 44.053000 n
ans =
0
Species_SP =
'CH2CHO'
Molecular Weight of CH2CHO : molecular weight CH2CHO :4.304500e+01
Molecular Weight of CH2CHO : molecular weight CH2CHO :4.304500e+01
M =
43.0450
species n Molecular mass n 43.045000 n
ans = 0
----------------------Attachments ---------------------
Screenshot of the window where all the folders are saved. :

Results:
- Specific Heat, Entropy and Enthalpy Plots for O2, N2 and Co2 species :
- Plots for O2 (a) Plot for the variation of Entropy with Temperature

(b)Plot for the Variation in Enthalpy with Temperature

(c) Plot for the variation in Specific Heat with Temperature

2. Plots for N2
(a) Plot for the variation in Entropy with Temperature

(b) Plot for the Variation in Enthaply with Temperature

(c) Plot for the variation in Specific Heat with Temperature

3. Plot for CO2
(a) Plot for the variation in Entropy with Temperature

(b) Plot for the Variation in Enthalpy with Temperature

(c) Plot for the variation in Specific Heat with Temperature

- Molecular Weight of all Species:-








Screenshot of Editor with Workspace:--

Conclusion :
Using MATLAB code, the necessary coefficients required to evaluate various thermodynamic parameters for different species are extracted from NASA thermodynamic data file. The specific heat, enthalpy, and entropy for all the species are calculated and plotted against the local temperature range. The molecular weight is calculated for all the species.
References:-
https://www.mathworks.com/matlabcentral/answers/497882-parsing-text-files-for-beginners
https://skill-lync.com/student-projects/Parsing-Nasa-Thermodynamic-Data-Nasa-Polynomials-18902