Challenge

Project 1 - Parsing NASA thermodynamic data

clear all
close all
clc

f1 = fopen('THERMO.dat','r')
fgetl(f1)
Golbal_Temperature_Ranges = fgetl(f1)

Global_Temperatures = strsplit(Golbal_Temperature_Ranges, ' ')

Global_Low_Temperature = str2num(Global_Temperatures{2})
Global_Medium_Temperature = str2num(Global_Temperatures{3})
Global_High_Temperature = str2num(Global_Temperatures{4})

fgetl(f1)
fgetl(f1)
fgetl(f1)

  Data_of_Line_1 = fgetl(f1);

    Split = strsplit(Data_of_Line_1);
    Species = Split{1}
    Low_Temperature = Split{end-3}
    Medium_Temperature = Split{end-1}
    High_Temperature = Split{end-2}

Data_of_Line_2 = fgetl(f1);

    Splitting = findstr(Data_of_Line_2, 'E');

    Co_efficient_1 = Data_of_Line_2(1: Splitting(1)+3)
    Co_eff_1 = str2num(Co_efficient_1)

    
    Co_efficient_2 = Data_of_Line_2(Splitting(1)+4: Splitting(2)+3);
    Co_eff_2 = str2num(Co_efficient_2);
    
    
    Co_efficient_3 = Data_of_Line_2(Splitting(2)+4: Splitting(3)+3);
    Co_eff_3 = str2num(Co_efficient_3);
    
    
    Co_efficient_4 = Data_of_Line_2(Splitting(3)+4: Splitting(4)+3);
    Co_eff_4 = str2num(Co_efficient_4);
    
    
    Co_efficient_5 = Data_of_Line_2(Splitting(4)+4: Splitting(5)+3);
    Co_eff_5 = str2num(Co_efficient_5);
    

   Data_of_Line_3 = fgetl(f1);

    Co_efficient_6 = Data_of_Line_3(1: Splitting(1)+3);
    Co_eff_6 = str2num(Co_efficient_6);
    
    
    Co_efficient_7 = Data_of_Line_3(Splitting(1)+4: Splitting(2)+3);
    Co_eff_7 = str2num(Co_efficient_7);
    
    
    Co_efficient_8 = Data_of_Line_3(Splitting(2)+4: Splitting(3)+3);
    Co_eff_8 = str2num(Co_efficient_8);
    
    
    Co_efficient_9 = Data_of_Line_3(Splitting(3)+4: Splitting(4)+3);
    Co_eff_9 = str2num(Co_efficient_9);
    
    
    Co_efficient_10 = Data_of_Line_3(Splitting(4)+4: Splitting(5)+3);
    Co_eff_10 = str2num(Co_efficient_10);
    

Data_of_Line_4 = fgetl(f1);
    Co_efficient_11 = Data_of_Line_4(1: Splitting(1)+3);
    Co_eff_11 = str2num(Co_efficient_11);
    
    
    Co_efficient_12 = Data_of_Line_4(Splitting(1)+4: Splitting(2)+3);
    Co_eff_12 = str2num(Co_efficient_12);
    
    
    Co_efficient_13 = Data_of_Line_4(Splitting(2)+4: Splitting(3)+3);
    Co_eff_13 = str2num(Co_efficient_13);
    
    
    Co_efficient_14 = Data_of_Line_4(Splitting(3)+4: Splitting(4)+3);
    Co_eff_14 = str2num(Co_efficient_14);

for i = 1: inf
    % Reading the line 1, Which indicates the species as Mono-Atomic oxygen:-
    Data_of_Line_1 = fgetl(f1);
    if strcmp(Data_of_Line_1, 'END')
        break
    end

function [Cp, H, S] = Function_for_CPHS(Co_eff_1, Co_eff_2, Co_eff_3, Co_eff_4, Co_eff_5, Co_eff_6, Co_eff_7,T)

R = 8.314;


Cp = (Co_eff_1 + (Co_eff_2*T) + (Co_eff_3*T^2) + (Co_eff_4*T^3) + (Co_eff_5*T^4)) * R;
H  = ((Co_eff_1)+(Co_eff_2*(T/2))+(Co_eff_3*(T^2/3))+(Co_eff_4*(T^3/4))+(Co_eff_5*(T^4/5))+(Co_eff_6/T))*R*T;
S  = (((Co_eff_1)*log(T))+(Co_eff_2*(T))+(Co_eff_3*(T^2/2))+(Co_eff_4*(T^3/3))+(Co_eff_5*(T^4/4))+Co_eff_7)*R;
end
   
    Temp = linspace( Low_Temperature,High_Temperature, 1000)
    for j = 1:length(Temp)
        
        if Temp(j) > Medium_Temperature
            
            [Cp(j), H(j), S(j)] =  Function_for_CPHS(Co_eff_1, Co_eff_2, Co_eff_3, Co_eff_4, Co_eff_5, Co_eff_6, Co_eff_7, Temp(j));
        else
            [Cp(j), H(j), S(j)] = Function_for_CPHS( Co_eff_8, Co_eff_9, Co_eff_10, Co_eff_11, Co_eff_12, Co_eff_13, Co_eff_14, Temp(j));
        end
    end
    
    I = ['C','H', 'N', 'O', 'A'];
    At_wt = [12, 1, 14, 16, 40];
    Molecular_weight = 0;
  for k = 1:length(Species)
        for l = 1: length(I)
            
            if strcmp(Species(k), I(l)) == 1
                position = l;
                Molecular_weight =    At_wt(l)+Molecular_weight;
            end
        end
        x = str2double(Species(k));
        if x > 1
            
            Molecular_weight  = Molecular_weight +((x-1)*At_wt(position));
        end
    end
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.