Challenge

Project 1 - Parsing NASA thermodynamic data

File Parsing :-

clear all
close all
clc

%getting the data file
f1=fopen('THERMO.dat','r');
fgetl(f1);
%reading the header information
A=fgetl(f1);
A=strsplit(A,' ');
global_low_temp=str2num(A{2});
global_mid_temp=str2num(A{3});
global_high_temp=str2num(A{4});


%skipping next three lines
for i=1:3
    fgetl(f1);
end


%reading the species
for i=1:53
    
    header=fgetl(f1);
    speciesheader=strsplit(header,' ');
    species_name = speciesheader{1};
   
  
        t1 =str2double(speciesheader{6});
        t2 =str2double(speciesheader{7});
          t3  =str2double(speciesheader{8});
            
        
            
            %getting first line coeffecients (a1-a5)
            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));
            
            %getting second line coeffeceints (a6-a10)
             line_2=fgetl(f1);
            
            a_1=strfind(line_2,'E');
            a6=str2double(line_2(1:a_1(1)+3));
            a7=str2double(line_2(a_1(1)+4:a_1(2)+3));
            a8=str2double(line_2(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));
            
            %getting third line coeffeceints (a10-a14)
             line_3=fgetl(f1);
            
            a_2=strfind(line_3,'E');
            a11=str2double(line_3(1:a_2(1)+3));
            a12=str2double(line_3(a_2(1)+4:a_1(2)+3));
            a13=str2double(line_3(a_2(2)+4:a_1(3)+3));
            a14=str2double(line_3(a_2(3)+4:a_1(4)+3));
            
            
            %creating folder by giving a path
            mkdir(['C:\\Users\\Rakesh Shende\\Documents\\MATLAB\\Graph\\',species_name]);
             
            % making an arrey of T
            T=linspace(t1,t3,1000);
            % constant 
            R=8.314;
            % to get array of specific heat, enthalpy and entropy 
            for k=1:length(T)
    % to compare the species  temperature to assign the coeffeceints
    %a1-a7 (high temperature coeffeceints), a8-a14(low temperature coeffecients)    
    if T(k)>t2
        
        %for high temperature coeffeceints.
        
        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
        %for low temperature coeffecients
        
        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

            
            %plotting the 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')
            
            
            
            %changing the directory and saving the file
            saving=(['C:\\Users\\Rakesh Shende\\Documents\\MATLAB\\Graph\\',species_name]);
             cd(saving);
             %saving the plots with name
            saveas(1,'specific heat','jpg');
            saveas(2,'enthalpy','jpg');
            saveas(3,'entropy','jpg');
           
            
             %molecular_masscalculation                          
species=species_name;
elements=['H','C','O','N','A'];
atomic_weight=[1.0079 12.0107 15.0999 14.0067 39.948];
mol_mass=0;
for i=1:length(species)
    for m=1:length(elements)
        if strcmpi(species(i),elements(m)) % comparing the species & elements
            mol_mass=mol_mass+atomic_weight(m);
            position=m;
        end
    end
 end
n=str2double(species(i));
if n>1
    mol_mass = mol_mass + atomic_weight(position)*(n-1);
    
    
end
% display the molucular wt of each species
disp(sprintf('Molecular Weight of %s:%f ',species,mol_mass));


            
end
     
    fclose(f1)
            

            
         

Output :-

I have run the code 2nd time due to this error shown

Plots are saved in the give directory :-

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.