Source code for biosteam.facilities._chilled_water_package

# -*- coding: utf-8 -*-
# BioSTEAM: The Biorefinery Simulation and Techno-Economic Analysis Modules
# Copyright (C) 2020-2023, Yoel Cortes-Pena <yoelcortes@gmail.com>
# 
# This module is under the UIUC open-source license. See 
# github.com/BioSTEAMDevelopmentGroup/biosteam/blob/master/LICENSE.txt
# for license details.
"""
"""
import biosteam as bst
import numpy as np
cost = bst.decorators.cost

__all__ = ('ChilledWaterPackage',)

[docs] @cost('Duty', S=-14*4184000, kW=3400*0.7457, cost=1375e3, CE=551, n=0.7, BM=1.5) class ChilledWaterPackage(bst.Facility): """ Create a chilled water package with capital cost and power based on the flow rate of chilled water as in [1]_. Parameters ---------- ID : str, optional Unit ID. References ---------- .. [1] Humbird, D., Davis, R., Tao, L., Kinchin, C., Hsu, D., Aden, A., Dudgeon, D. (2011). Process Design and Economics for Biochemical Conversion of Lignocellulosic Biomass to Ethanol: Dilute-Acid Pretreatment and Enzymatic Hydrolysis of Corn Stover (No. NREL/TP-5100-47764, 1013269). https://doi.org/10.2172/1013269 """ ticket_name = 'CWP' network_priority = -1 _units = {'Duty': 'kJ/hr'} def __init__(self, ID='', agent=None): self.agent = chilled_water = agent or bst.settings.get_cooling_agent('chilled_water') super().__init__(ID, ins='.recirculated_chilled_water', outs=chilled_water.to_stream(), thermo=chilled_water.thermo) def _load_chilled_water_utilities(self): self.chilled_water_utilities = cwu = set() ID = self.agent.ID for u in self.other_units: if u is self: continue for hu in u.heat_utilities: agent = hu.agent if agent and agent.ID == ID: cwu.add(hu) def _design(self): self._load_chilled_water_utilities() cwu = self.chilled_water_utilities self.design_results['Duty'] = duty = sum([i.duty for i in cwu]) hu_chilled = self.create_heat_utility() hu_chilled.mix_from(cwu) hu_chilled.reverse() self.add_heat_utility(duty, 330) # Cooling water used = self.ins[0] used.mol[0] = sum([i.flow for i in cwu]) Ts = [i.outlet_utility_stream.T for i in cwu] if Ts: used.T = np.array(Ts).mean()