Engineering thermodynamics/Steam tables/Saturated temperature (small)/Generating code
< Engineering thermodynamics < Steam tables < Saturated temperature (small)The Excel spreadsheet Satpar.xlsx, as well as two Matlab files (XSteam.m, studentsaturated.m) must be placed in a folder. Run TableGraphmaker.m to generate the table and figures. The first row of Satpar.xlsx contains the temperatures (Celsius), and the second row contains the pressures (bars). At the moment, the code demands that the number of temperatures must equal the number of pressures.
Satpar.xlsx
1 | 3 | 10 | 30 | 100 | 200 | 225 | 250 | 275 | 300 | 325 | 350 | 355 | 360 | 365 | 373 |
1 | 3 | 10 | 20 | 30 | 40 | 50 | 75 | 100 | 125 | 150 | 175 | 200 | 210 | 215 | 220 |
studentsaturated
click to view/hide
clear all; close all;clc; linewidth=1.2; markersize = 3; %Rwater=461.526/100000; %Tcritical = 374; %Pcritical = 220.6395 %bar Satpar=xlsread('Satpar.xlsx'); %Reads an excel file T = Satpar(1,:); NT = size(T,2); % formally: p = Satpar(2,:); Np = size(p,2); fout=fopen('StudentSaturateVersusT.txt', 'w+');% % formally: fout=fopen('saturatedpressures.txt', 'w+');% sigfigs = '%10.2E'; %Significant figures sigfigsT= '%10.1f'; %change to '%10.0f' ? %Bug: If T is out of range, the header will read the wrong values but the %code might nevertheless run by removing out-of-range temperatures. string1='====For T = '; string2=' Celsius to T = '; string3='Celsius===='; low=T(1); high=T(NT); stringlow = num2str(low,sigfigsT); stringhigh=num2str(high,sigfigsT); %formally with stringplow and stringphigh % formally: % string1='====For P = '; string2=' bars to P = '; string3='bars===='; % plow=p(1); phigh=p(Np); % stringplow = num2str(plow,'%10.2E'); % stringphigh=num2str(phigh,'%10.2E'); fprintf(fout,'%s\n',[string1,stringlow,string2,stringhigh,string3]);%formally:fprintf(fout,'%s\n',[string1,stringplow,string2,stringphigh,string3]); %alternative format: fprintf(fout,'%s\n','{| class="wikitable" style="text-align:center; width:600px;" '); fprintf(fout,'%s\n','{| class="wikitable" style="text-align:center;'); fprintf(fout,'%s\n','|-'); string = '| || ||||' ; string = [string,' fluid || gas']; string = [string,' |||| fluid || gas']; string = [string,' |||| fluid || gas']; string = [string,' |||| fluid || gas']; fprintf(fout,'%s\n',string); fprintf(fout,'%s\n','|-'); string = '| Pressure || Temp. ||||' ;% formally: string = '| Temp || Pressure ||||' ; string = [string,' volume ||volume']; string = [string,' |||| energy || energy']; string = [string,' |||| enthalpy || enthalpy']; string = [string,' |||| entropy || entropy']; fprintf(fout,'%s\n',string); fprintf(fout,'%s\n','|-'); string = '! T(C( !!P(bars) !!!!' ; % formally: string = '! P (bars) !!T<sub>sat</sub> (°C) !!!!' ; string = [string,' v<sub>f</sub> (m<sup>3</sup>/kg) !! v<sub>g</sub> (m<sup>3</sup>/kg)']; string = [string,' !!!! u<sub>f</sub> (kJ/kg) !! u<sub>g</sub> (kJ/kg)']; string = [string,' !!!! h<sub>f</sub> (kJ/kg) !! h<sub>g</sub> (kJ/kg)']; string = [string,' !!!! s<sub>f</sub> (kJ/kg) !! s<sub>g</sub> (kJ/kg)']; fprintf(fout,'%s\n',string); fprintf(fout,'%s\n','|-'); for nT = 1:NT %formally: for np = 1:Np stringT=num2str(T(nT),sigfigsT);% was: stringp=num2str(p(np),sigfigs); p=XSteam('psat_T', T(nT)); stringp=num2str(p,sigfigs); %formally: T =XSteam('Tsat_p',p(np)); stringT = num2str(T,sigfigs); vV = XSteam('vV_T',T(nT)); %vV_T Saturated vapour volume %formally: vV = XSteam('vV_p',p(np)); %vV_T Saturated vapour volume vL = XSteam('vL_T',T(nT)); %vL_T Saturated liquid volume %formally: vL = XSteam('vL_p',p(np)); %vL_T Saturated liquid volume stringvV=num2str(vV,sigfigs); stringvL=num2str(vL,sigfigs); %formally: stringvV=num2str(vV,sigfigs); stringvL=num2str(vL,sigfigs); uV = XSteam('uV_T',T(nT)); %uV_T Saturated vapour internal energy %formally: uV = XSteam('uV_p',p(np)); %uV_T Saturated vapour internal energy uL = XSteam('uL_T',T(nT)); %uL_T Saturated liquid internal energy %formally: uL = XSteam('uL_p',p(np)); %uL_T Saturated liquid internal energy stringuV=num2str(uV,sigfigs); stringuL=num2str(uL,sigfigs); hV = XSteam('hV_T',T(nT)); %hV_T formally: hV = XSteam('hV_p',p(np)); %hV_T Saturated vapour enthalpy hL = XSteam('hL_T',T(nT)); %formally:%hL_T Saturated liquid enthalpy stringhV=num2str(hV,sigfigs); stringhL=num2str(hL,sigfigs); sV = XSteam('sV_T',T(nT)); %formally: sV = XSteam('sV_p',p(np)); %sV_T Saturated vapour entropy sL = XSteam('sL_T',T(nT)); %formally: sL = XSteam('sL_p',p(np)); %sL_T Saturated liquid entropy stringsV=num2str(sV,sigfigs); stringsL=num2str(sL,sigfigs); if T(nT)>=low && T(nT)<=high % formally if p(np)>=plow && p(np)<=phigh string = ['|' stringT , '||', stringp ];% formally string = ['|' stringp , '||', stringT ]; string = [string, '||||', stringvL, '||', stringvV]; string = [string, '||||', stringuL, '||', stringuV ]; string = [string, '||||', stringhL, '||', stringhV ]; string = [string, '||||', stringsL, '||', stringsV ]; fprintf(fout,'%s\n',string); fprintf(fout,'%s\n','|-'); %Make plot variables %start here after fixing bug in other code Pplot(nT)=p;% was: Tplot(np)=T; Tplot(nT)= T(nT);% was: Pplot(np)= p(np); vLplot(nT) = vL; % nT was np uLplot(nT) = uL; hLplot(nT) = hL; sLplot(nT) = sL; vVplot(nT) = vV; uVplot(nT)= uV; hVplot(nT) = hV; sVplot(nT) = sV; % end %if ... &&... end %for np = 1:Np fprintf(fout,'%s\n','');%next line fprintf(fout,'%s\n','|}'); fclose(fout); figure(1); plot(Tplot,Pplot,'-o','LineWidth',linewidth,'MarkerSize',markersize); %was: plot(Pplot,Tplot); title('P(bars) versus T(Celsius)')%was: title('T(^{ \circ}C) versus P(bars)') savefig('student steam table saturation P(T)');%was T(P) figure(2); subplot(8,2,1); plot(Tplot, vLplot,'-o','LineWidth',linewidth,'MarkerSize',markersize); %was Pplot,... title('v_f vs T'); %was ... vs P subplot(8,2,2); plot(Tplot, log10(vVplot),'-o','LineWidth',linewidth,'MarkerSize',markersize);%was Pplot,.. title(' log10(v_g) vs T');%was ... vs P subplot(8,2,3); plot(Tplot,uLplot,'-o','LineWidth',linewidth,'MarkerSize',markersize);%was Pplot,.. title('u_f vs T'); %was ... vs P subplot(8,2,4); plot(Tplot,uVplot,'-o','LineWidth',linewidth,'MarkerSize',markersize)%was Pplot,.. title('u_g vs T'); subplot(8,2,5); plot(Tplot,hLplot,'-o','LineWidth',linewidth,'MarkerSize',markersize);%was Pplot,.. title('h_f vs T'); %was ... vs P subplot(8,2,6); plot(Tplot,hVplot,'-o','LineWidth',linewidth,'MarkerSize',markersize)%was Pplot,.. title('h_g vs T'); %was ... vs P subplot(8,2,7); plot(Tplot,sLplot,'-o','LineWidth',linewidth,'MarkerSize',markersize);%was Pplot,.. title('s_f vs T'); %was ... vs P subplot(8,2,8); plot(Tplot,sVplot,'-o','LineWidth',linewidth,'MarkerSize',markersize);%was Pplot,.. title('s_g vs T'); %was ... vs P savefig('student steam table saturation v,u,h,s'); %The following plots in pairs but is awkard for Matlab to render into %useable pngs. % figure(1) % plot(Tplot,Pplot); %was: plot(Pplot,Tplot); % title('P(bars) versus T(Celsius)')%was: title('T(^{ \circ}C) versus P(bars)') % savefig('student steam table saturation P(T)');%was T(P) % % figure(2); subplot(2,2,1); % plot(Tplot, vLplot); %was Pplot,... % title('v_f vs T'); %was ... vs P % subplot(2,2,2); % plot(Tplot, log10(vVplot));%was Pplot,.. % title(' log10(v_g) vs T');%was ... vs P % savefig('student steam table saturation v(T)');%was ... vs P % % figure(3);subplot(2,2,1); % plot(Tplot,uLplot);%was Pplot,.. % title('u_f vs T'); %was ... vs P % subplot(2,2,2); % plot(Tplot,uVplot)%was Pplot,.. % title('u_g vs T'); % savefig('student steam table saturation u(T)');%was ... vs P % % figure(4);subplot(2,2,1) % plot(Tplot,hLplot);%was Pplot,.. % title('h_f vs T'); %was ... vs P % subplot(2,2,2); % plot(Tplot,hVplot)%was Pplot,.. % title('h_g vs T'); %was ... vs P % savefig('student steam table saturation h(T)');%was ... vs P % % figure(5);subplot(2,2,1) % plot(Tplot,sLplot);%was Pplot,.. % title('s_f vs T'); %was ... vs P % subplot(2,2,2) % plot(Tplot,sVplot);%was Pplot,.. % title('s_g vs T'); %was ... vs P % savefig('student steam table saturation s(T)');%was ... vs P
This article is issued from Wikiversity - version of the Tuesday, March 24, 2015. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.