Challenge

Project 1 - Parsing NASA thermodynamic data

Aim : To write matlab code for parsing the NASA thermodynamic Data file and to extract 14 coeefficients thermodynamic properties like Cp H and S for all the species in the data file

To find out molecular mass of each species and finally plot a graph of enthalpy, entropy, and Cp with respect to Temperature

Formulas Used

clear all
close all
clc

% getting file data
f1 = fopen('THERMO3.dat','r');
fgetl(f1);
tline = fgetl(f1);
A = strsplit(tline,' ');
Global_low_temp = str2num(A{2});
Global_med_temp = str2num(A{3});
Global_high_temp = str2num(A{4});

%skip lines
for i=1:3
    fgetl(f1);
end
%reading species
for i=1:53
    header=fgetl(f1);
    x=strsplit(header,' ');
    species_name=(x{1});
    z=length(x);

    local_low_temp = str2double(x{z-3});
    local_high_temp = str2double(x{z-2});
    local_mid_temp = str2double(x{z-1});

    t1=local_low_temp;
    t2=local_mid_temp;
    t3=local_high_temp;

    %get 1st line coefficients
    line_1=fgetl(f1);

    a=strfind(line_1,'E');
    a1=str2double(line_1(1:a(1)+3));
    a2=str2double(line_1(a(1)+4:a(2)+3));
    a3=str2double(line_1(a(2)+4:a(3)+3));
    a4=str2double(line_1(a(3)+4:a(4)+3));
    a5=str2double(line_1(a(4)+4:a(5)+3));

    %get 2nd line coefficients
    line_2=fgetl(f1);

    a_1=strfind(line_2,'E');
    a6=str2num(line_2(1:a_1(1)+3));
    a7=str2double(line_2(a_1(1)+4:a_1(2)+3));
    a8=str2double(line_1(a_1(2)+4:a_1(3)+3));
    a9=str2double(line_2(a_1(3)+4:a_1(4)+3));
    a10=str2double(line_2(a_1(4)+4:a_1(5)+3));

    %get 3rd line coeffs
    line_3=fgetl(f1);

    a_2=strfind(line_1,'E');
    a11=str2double(line_3(1:a_2(1)+3));
    a12=str2double(line_3(a_2(1)+4:a_2(2)+3));
    a13=str2double(line_3(a_2(2)+4:a_2(3)+3));
    a14=str2double(line_3(a_2(3)+4:a_2(4)+3));

    %create folder
    mkdir(['C:\Users\HP\Documents\MATLAB',species_name]);

    T=linspace(t1,t3,1000);
    R=80314;

    for k=1:length(T)
        %compare temps
        %a1-a7 high and a8-a14 low
        if T(k)>t2

            %high temp coeffs

            cp=(a1+a2.*T +a3.*T.^2 +a4.*T.^3 +a5.*T.^4)*R;
            H=(a1+(a2.*T)/2 +(a3.*T.^2)/3 +(a4.*T.^3)/4+(a5.*T.^4)/5 +(a6./T))*R.*T
            S=a1.*log(T) +a2.*T +(a3.*T.^2)/2 +(a4.*T.^3)/3 +(a5.*T.^4)/4 +a7

        else
            cp=(a8+a9.*T +a10.*T.^2 +a11.*T.^3 +a12.*T.^4)*R;
            H=(a8+(a9.*T)/2 +(a10.*T.^2)/3 +(a11.*T.^3)/4+(a12.*T.^4)/5 +(a13./T))*R.*T
            S=a8.*log(T) +a9.*T +(a10.*T.^2)/2 +(a11.*T.^3)/3 +(a12.*T.^4)/4 +a14
        end
    end
    %plot graphs

    figure(1);
    plot(T,cp);
    grid on
    title(species_name);
    xlabel('Temperature');
    ylabel('Specific HEat');

    figure(2);
    plot(T,H);
    grid on;
    title(species_name);
    xlabel('Temperature');
    ylabel('Enthalpy');

    figure(3);
    plot(T,S);
    grid on;
    title(species_name);
    xlabel('Temperature');
    ylabel('Entropy');

    %change directory

    saving=(['C:\Users\HP\Documents\MATLAB',species_name]);
    cd(saving);
    saveas(1,'specific heat','jpg');
    saveas(2,'Enthalpy','jpg');
    saveas(3,'entropy','jpg');

    %molecular mass calc

    elements=['H','C','O','N','A'];
    atomic_weight=[1.0079 12.0107 15.999 14.0067 39.948];
    mol_mass=0;
    for l=1:length(species_name)
        for m=1:length(atomic_weight)
        if strcmp(species_name(1),elements(m))
            mol_mass=mol_mass+atomic_weight(m);
            position=m;

        end

        end
    end
n=str2double(species_name(1));
if n>1
    mol_mass=mol_mass+atomic_weight(position)*(n-1);

end
    end
sprintf('Molecular Weight of %s:%f u',species_name,mol_mass)


 fclose(f1)

Conclusion : The program runs on its own to extract data from the file, calculate sp heat, enthalpy entropy and plot its own variation with respect to temperature.

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.