Challenge

PARSING THERMODYNAMIC DATA IN MATLAB

PARSING OF NASA THERMODYNAMIC DATA

AIM:

  1. Write a function that extracts the 14 co-efficients and calculates the enthalpy, entropy and specific heats for all the species in the data file.
  2. Calculate the molecular weight of each species and display it in the command window

  3. Plot the Cp, Enthalpy and Entropy for the local temperature range (low temperature : high temperature) specific for each species.

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

PROGRAM:

clear all
close all
clc


f1=fopen('THERMO.dat','r'); %OPEN THE THERMODYNAMIC DATA
fgetl(f1)%SKIP THE FIRST LINE


A=fgetl(f1);%READ THE NEXT LINE WHICH CONTAINS THE GLOBAL LOW,MEDIUM AND HIGH TEMPERATURE
A=strsplit(A,' '); % CREATE ARRAY TO STORE THE GLOBAL TEMPERATURE VALUES
global_low_temp=str2num(A{2});%CONVERT STRING VALUE INTO NUMERICAL DATA
global_mid_temp=str2num(A{3});%CONVERT STRING VALUE INTO NUMERICAL DATA
global_high_temp=str2num(A{4});%CONVERT STRING VALUE INTO NUMERICAL DATA

%%SKIP THE NEXT THREE LINES WHICH IS IRRELEAVANT FOR THE ANALYSIS PURPOSE
for i=1:3
    fgetl(f1);
end


%%COMMANDS TO STORE THE COEFFICIENTS OF TEMPERATURE, LOCAL TEMPERATURES AND
%%CALCULATE THE SPECIFIC HEAT, ENTHALPY AND ENTROPY
for i=1:53
    
    header=fgetl(f1);% READ THE LINE THAT CONTAINS THE SPECIES NAME AND LOCAL TEMPERATURES
    x=strsplit(header,' ');% SPLIT THE CHARACTER DATATYPE INTO CELL ARRAY CONTAINING EACH WORD IN DIFERENT CELL, SEPERATED BY A SPACE
    
    species_name=(x{1});%FIRST ARRAY OF X IS STORED WITH NAME OF SPECIES FOR WHICH THE CHARACTERISCTIC CURVES ARE OBTAINED
    z=length(x);%CALCULATE THE NUMBER OF CELLS IN ARRAY X
    
    local_low_temp=str2double(x{z-3});% THIRD LAST VALUE OF X ARRAY CONTAINS THE LOCAL LOW TEMPERATURES AND IS CONVERTED INTO FLOATING DATATYPE
    local_high_temp=str2double(x{z-2});% SECOND LAST VALUE OF X ARRAY CONTAINS THE LOCAL HIGH TEMPERATURES AND IS CONVERTED INTO FLOATING DATATYPE
    local_mid_temp=str2double(x{z-1});% LAST VALUE OF Z ARRAY CONTAINS THE LOCAL MEDIUM TEMPERATURES AND IS CONVERTED INTO FLOATING DATATYPE
    
    t1=local_low_temp; %LOCAL LOW TEMPERATURES IS STORED INTO TEMPORARY VARIABLE t1
    t2=local_mid_temp;%LOCAL HIGH TEMPERATURES IS STORED INTO TEMPORARY VARIABLE t2
    t3=local_high_temp;%LOCAL MEDIUM TEMPERATURES IS STORED INTO TEMPORARY VARIABLE t3
    
    
    line_1=fgetl(f1);% READ THE FIRST LINE THAT CONTAINS 5 COEFFICIENTS
    
    a=strfind(line_1,'E');% CREATE AND STORE VALUES IN THE LINE THAT CONTAINS THE LETTER 'E'
    a1=str2double(line_1(1:a(1)+3));% STORE THE VALUE OF 1ST COEFFICIENT
    a2=str2double(line_1(a(1)+4:a(2)+3));% STORE THE VALUE OF 2ND COEFFICIENT
    a3=str2double(line_1(a(2)+4:a(3)+3));% STORE THE VALUE OF 3RD COEFFICIENT
    a4=str2double(line_1(a(3)+4:a(4)+3));% STORE THE VALUE OF 4TH COEFFICIENT
    a5=str2double(line_1(a(4)+4:a(5)+3)); % STORE THE VALUE OF 5TH COEFFICIENT
    
    
    line_2=fgetl(f1);% READ THE SECOND LINE THAT CONTAINS 5 COEFFICIENTS
    
    a_1=strfind(line_2,'E');% CREATE AND STORE VALUES IN THE LINE THAT CONTAINS THE LETTER 'E'
    a6=str2num(line_2(1:a_1(1)+3));% STORE THE VALUE OF 6TH COEFFICIENT
    a7=str2double(line_2(a_1(1)+4:a_1(2)+3));% STORE THE VALUE OF 7TH COEFFICIENT
    a8=str2double(line_2(a_1(2)+4:a_1(3)+3));% STORE THE VALUE OF85TH COEFFICIENT
    a9=str2double(line_2(a_1(3)+4:a_1(4)+3));% STORE THE VALUE OF 9TH COEFFICIENT
    a10=str2double(line_2(a_1(4)+4:a_1(5)+3));% STORE THE VALUE OF 10TH COEFFICIENT
    
    
    line_3=fgetl(f1);% READ THE THIRD LINE THAT CONTAINS 4 COEFFICIENTS
    
    a_2=strfind(line_1,'E');% CREATE AND STORE VALUES IN THE LINE THAT CONTAINS THE LETTER 'E'
    a11=str2double(line_3(1:a_2(1)+3)); %STORE THE VALUE OF 11TH COEFFICIENT
    a12=str2double(line_3(a_2(1)+4:a_1(2)+3));%STORE THE VALUE OF 12TH COEFFICIENT
    a13=str2double(line_3(a_2(2)+4:a_1(3)+3));%STORE THE VALUE OF 13TH COEFFICIENT
    a14=str2double(line_3(a_2(3)+4:a_1(4)+3));%STORE THE VALUE OF 14TH COEFFICIENT
    
    mkdir(species_name);%CREATE A DIRECTORY TO STORE THE SPECIES NAME
    
    T=linspace(t1,t3,1000);% CREATE AN ARRAY TO STORE THE VALUES OF TEMPERTURE IN BETWEEN LOCAL LOW TEMPERATURE AND LOCAL HIGH TEMPERATURE
    R=8.314;% INITIALISING THE VALUE OF TEMPERATURE
    for k=1:length(T)% LOOP TO CALCULATE THE VALUE OF Cp, H ANS S
        if T(k)>t2% IF THE TEMPERATURE IS GEATER THAN THE MEDIUM LOCAL TEMPERATURE, COEFFICENTS A1,A2,A3,A4,A5,A6 AND A7 ARE USED TO CALCULATE THE SPECIFIC HEAT, ENTHALPY AND ENTROPY
            
            
            cp=(a1+a2.*T+a3.*T.^2+a4.*T.^3+a5.*T.^4)*R; %CALCULATE THE VALUE OF SPECIFIC HEAT
            
            H=(a1+(a2.*T)/2+(a3.*T.^2)/3+(a4.*T.^3)/4+(a5.*T.^4)/5+(a6./T))*R.*T; %CALCULATE THE VALUE OF ENTHALPY
            
            S=a1.*log(T)+a2.*T+(a3.*T.^2)/2+(a4.*T.^3)/3+(a5.*T.^4)/4+a7; %CALCULATE THE VALUE OF ENTROPY
            
        else% IF THE TEMPERATURE IS LESS THAN THE MEDIUM LOCAL TEMPERATURE, TAKE COEFFIEIENTS A8,A9,A10,A11,A12,A13,A14 ARE USED FOR
            
            cp=(a8+a9.*T+a10.*T.^2+a11.*T.^3+a12.*T.^4)*R;%CALCULATE THE VALUE OF SPECIFIC HEAT
            
            H=(a8+(a9.*T)/2+(a10.*T.^2)/3+(a11.*T.^3)/4+(a12.*T.^4)/5+(a13./T))*R.*T; %CALCULATE THE VALUE OF ENTHALPY
            
            S=a8.*log(T)+a9.*T+(a10.*T.^2)/2+(a11.*T.^3)/3+(a12.*T.^4)/4+a14; %CALCULATE THE VALUE OF ENTROPY
        end
    end
    
    
    
    figure(1);%CREATE FIGURE TO PLOT TEMPERATURE VS SPECIFIC HEAT
    plot(T,cp);% PLOT THE REQUIRED DATA
    grid on ;
    title(species_name);
    xlabel('Temperature');
    ylabel('Specific Heat');
    
    
    figure(2);;%CREATE FIGURE TO PLOT TEMPERATURE VS ENTHALPY
    plot(T,H);% PLOT THE REQUIRED DATA
    grid on ;
    title(species_name);
    xlabel('Temperature');
    ylabel('Enthalpy');
    
    
    figure(3);%CREATE FIGURE TO PLOT TEMPERATURE VS ENTROPY
    plot(T,S);% PLOT THE REQUIRED DATA
    grid on ;
    title(species_name);
    xlabel('Temperature');
    ylabel('Entropy');
    
    
    
    cd (species_name)%OPEN THE OLDER NAMES WITH CORRESPONDING SPECIES NAME
    
    
    saveas(1,'specific heat','jpg');% SAVE THE FIGURE 1 WITH SPECIFIC HEAT IN JPG FORMAT
    saveas(2,'enthalpy','jpg');% SAVE THE FIGURE 2 WITH ENTHALPY IN JPG FORMAT
    saveas(3,'entropy','jpg'); % SAVE THE FIGURE 3 WITH ENTROPY IN JPG FORMAT
    
    cd ..% EXIT THE CURRENT FOLDER LOCATION TO CARRY FORWARD THE CALCULATIONS
    
    
    elements=['H','C','O','N','A'];%CREATE A CHARACTER ARRAY TO STORE THE VALUE OF ELEMENTS OF SPECIES
    atomic_weight=[1.0079 12.0107 15.999 14.0067 39.948];%CREATE THE ATOMIC MASS FOR THE CORRESPONDING MATERIALS
    mol_mass=0; %INITIALISE THE MOLECULAR MASS =0
    for l=1:length(species_name)% CREATE A FOR LOOP TO FIND THE LENGTH OF SPECIES NAME
        for m=1:length(atomic_weight)
            if strcmp(species_name(l),elements(m))%COMPARE THE VALUE OF SPECIES NAME AND ELEMENTS NAME. IF THE SPECIES NAME AND ELEMENTS NAME ARE EQUAL, MOLECULAR MASS= MOLECULAR MASS+ATOMIC WEIGHT
                mol_mass=mol_mass+atomic_weight(m);%IF THE SPECIES NAME AND ELEMENTS NAME ARE EQUAL, MOLECULAR MASS= MOLECULAR MASS+ATOMIC WEIGHT
                position=m;
            end
        end
        
        n=str2double(species_name(l));%COMPARE THE VAUE OF NUMBER OF MOLECULES IN EACH SPECIES.
        if n>1%IF THE NUMBER OF MOLECULESIS GREATER THAN 1
            mol_mass=mol_mass+atomic_weight(position)*(n-1);% CALCULATE THE MOLECULAR MASS= ATOMIC WEIGHT* NUMBER OF ATOMS
            
        end
    end
    sprintf('Molecular Weight of %s:%f u',species_name,mol_mass) %PRINT THE MOLECULAR WEIGHT OF THE CORRESPONDING SPECIES
end
fclose(f1)

PRINCIPLE

  • The file deals with opening an external data from a text file'Thermo.dat' in Matlab using fopen command
  • The name of the species is obtained and stored into an array called 'species_name'
  • Local temperatures are stored into the corresponding variable for each variable
  • Read the next line which denotes the value of 14 coefficients
  • Create a directory for each species.
  • Create an array to store the value of temperature for range between the low and high temperature
  • Calculate the value of specific heat, enthalpy and entropy
  • Create plot for the specific heat , enthalpy and entropy
  • Save the plot into different directories
  • Calculate the molecular mass for each species

RESULTS

1. C

2. C2H

Thus results of 53 such results are obtained in the corresponding directories

EACH FOLDER CONTAINS THE PLOT OF SPECIFIC HEAT, ENTHALPY AND ENTROPY

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.