Source code for ghx.fluids

import CoolProp.CoolProp as cp

from ghx.constants import ConstantClass
from ghx.my_print import PrintClass


[docs]class FluidsClass: """ Contains all fluid properties, correlations, etc. """ def __init__(self, json_data, initial_temp, print_output): try: self.fluid_type = json_data['Type'] except: # pragma: no cover PrintClass.my_print("....'Name' key not found", 'warn') PrintClass.fatal_error(message="Error initializing FluidsClass") try: self.concentration = json_data['Concentration'] except: # pragma: no cover PrintClass.my_print("....'Concentration' key not found", 'warn') PrintClass.fatal_error(message="Error initializing FluidsClass") try: self.flow_rate = json_data['Flow Rate'] self.flow_rate_prev = 0.0 except: # pragma: no cover PrintClass.my_print("....'Flow Rate' key not found", 'warn') PrintClass.fatal_error(message="Error initializing FluidsClass") self.temperature = initial_temp self.temperature_prev = None self.pressure = 101325 self.mass_flow_rate = self.calc_mass_flow_rate() self.dens_val = self.dens() self.cp_val = self.cp() self.visc_val = self.visc() self.cond_val = self.cond() self.pr_val = self.pr() self.heat_capacity_val = self.heat_capacity()
[docs] def dens(self): """ Determines the fluid density as a function of temperature, in Celsius. Uses the CoolProp python library. Fluid type is determined from the type of fluid specified for the GHX array object. :returns fluid density in [kg/m3] """ if self.temperature != self.temperature_prev: self.dens_val = cp.PropsSI('D', 'T', self.temperature + ConstantClass.celsius_to_kelvin, 'P', self.pressure, self.fluid_type) return self.dens_val
[docs] def cp(self): """ Determines the fluid specific heat as a function of temperature, in Celsius. Uses the CoolProp python library to find the fluid specific heat. Fluid type is determined from the type of fluid specified for the GHX array object. :returns fluid specific heat in [J/kg-K] """ if self.temperature != self.temperature_prev: self.cp_val = cp.PropsSI('C', 'T', self.temperature + ConstantClass.celsius_to_kelvin, 'P', self.pressure, self.fluid_type) return self.cp_val
[docs] def visc(self): """ Determines the fluid viscosity as a function of temperature, in Celsius. Uses the CoolProp python library. Fluid type is determined from the type of fluid specified for the GHX array object. :returns fluid viscosity in [Pa-s] """ if self.temperature != self.temperature_prev: self.visc_val = cp.PropsSI('V', 'T', self.temperature + ConstantClass.celsius_to_kelvin, 'P', self.pressure, self.fluid_type) return self.visc_val
[docs] def cond(self): """ Determines the fluid conductivity as a function of temperature, in Celsius. Uses the CoolProp python library. Fluid type is determined from the type of fluid specified for the GHX array object. :returns fluid conductivity in [W/m-K] """ if self.temperature != self.temperature_prev: self.cond_val = cp.PropsSI('L', 'T', self.temperature + ConstantClass.celsius_to_kelvin, 'P', self.pressure, self.fluid_type) return self.cond_val
[docs] def pr(self): """ Determines the fluid Prandtl as a function of temperature, in Celsius. Uses the CoolProp python library. Fluid type is determined from the type of fluid specified for the GHX array object. :returns fluid Prandtl number """ return self.cp() * self.visc() / self.cond()
[docs] def heat_capacity(self): """ Calculates fluid thermal capacitance """ return self.mass_flow_rate * self.cp()
[docs] def calc_mass_flow_rate(self): """ Calculates the fluid mass flow rate """ self.mass_flow_rate = self.flow_rate * self.dens() return self.mass_flow_rate
[docs] def update_fluid_state(self, new_temp=None, new_flow_rate=None): """ Updates fluid state as necessary """ if new_temp is not None: self.temperature_prev = self.temperature self.temperature = new_temp if new_flow_rate is not None: self.flow_rate_prev = self.flow_rate self.flow_rate = new_flow_rate self.calc_mass_flow_rate()