Source code for pygacity.topics.steam.steamtank

import numpy as np
from iapws import IAPWS97
from pygacity.pythontex.texutils import *

[docs] def st_report(R): r=f'{R.T:.2f} {R.P:.2f} {R.x:.2f} {R.v:.4f} {R.h:.4f} {R.s:.4f} {R.u:.4f}' # for k,v in R.__dict__.items(): # if k in ['Liquid','Vapor']: # print(k) # for kk,vv in v.__dict__.items(): # print(' ',kk,vv) # else: # print(k,v) return r
[docs] def steam_tank(V=40,VL0=0.005,T0=393.15,P1=0.5,Ti=373.15,xi=0.9,quiet=True): """ Solves the steam tank problem: Given a tank of volume V (m^3) in which VL0 (m^3) of liquid water is in equilibrium with water vapor at T0 (K), suppose an inlet steam line at Ti (K) and quality xi is allowed to inject steam into tank until pressure in tank reaches P1 (MPa). Compute the mass of steam injected (kg) and the quality of the tank contents. """ VV0=V-VL0 initial_contents=IAPWS97(T=T0,x=0.5) init_V=initial_contents.Vapor init_L=initial_contents.Liquid P0=initial_contents.P if not quiet: print(f'P0 = {P0*1000:.4f} kPa') print(f'VhatL0 = {init_L.v:.6f} m3/kg, UhatL0 = {init_L.u:.4f} kJ/kg') print(f'VhatV0 = {init_V.v:.4f} m3/kg, UhatV0 = {init_V.u:.4f} kJ/kg') mL0=VL0/init_L.v mV0=VV0/init_V.v m0=mL0+mV0 U0=mL0*init_L.u+mV0*init_V.u if not quiet: print(f'mL0 = {mL0:.2f} kg, mV0 = {mV0:.2f} kg => m0 = {m0:.2f} kg') print(f'U0 = {U0:.1f} kJ') final_contents=IAPWS97(P=P1,x=0.5) T1=final_contents.T fin_L=final_contents.Liquid fin_V=final_contents.Vapor if not quiet: print(f'T1 = {T1:.2f} K') print(f'VhatL1 = {fin_L.v:.6f} m3/kg, UhatL0 = {fin_L.u:.4f} kJ/kg') print(f'VhatV1 = {fin_V.v:.4f} m3/kg, UhatV0 = {fin_V.u:.4f} kJ/kg') in_stream=IAPWS97(T=Ti,x=xi) in_L=in_stream.Liquid in_V=in_stream.Vapor if not quiet: print(f'HhatiL = {in_L.h:.2f} kJ/kg, HhatiV = {in_V.h:.2f} kJ/kg') A=np.array([[fin_V.v,fin_L.v,0],[1,1,-1],[fin_V.u,fin_L.u,-(xi*in_V.h+(1-xi)*in_L.h)]]) B=np.array([V,m0,U0]) x=np.linalg.solve(A,B) if not quiet: print(f'm1V = {x[0]:.4f}, m1L = {x[1]:.4f}, m = {x[2]:0.4f}, all in kg') kg_added=x[2] quality_in_tank=x[0]/(x[0]+x[1]) if not quiet: print(f'ANSWER: {kg_added:.2f} kg steam added; quality in tank is {quality_in_tank:.2f}') return kg_added,quality_in_tank
if __name__=='__main__': DeltaM,x=steam_tank() print(f'DeltaM = {DeltaM:0.2f} kg inlet steam added, final quality in tank is {x:.2f}')