Source code for watertap.costing.unit_models.steam_ejector

import pyomo.environ as pyo
from ..util import register_costing_parameter_block, make_capital_cost_var


[docs]def build_steam_ejector_cost_param_block(blk): """ Build the costing parameter block for the steam ejector. """ blk.base_cost = pyo.Var( initialize=1949, doc="Base cost coefficient for steam ejector", units=pyo.units.USD_2020, ) blk.cost_exponent = pyo.Var( initialize=0.3, doc="Cost scaling exponent", units=pyo.units.dimensionless, ) blk.steam_cost = pyo.Var( initialize=0.008, units=pyo.units.USD_2018 / pyo.units.kg, doc="Steam cost per kg", ) blk.parent_block().register_flow_type("steam", blk.steam_cost)
[docs]@register_costing_parameter_block( build_rule=build_steam_ejector_cost_param_block, parameter_block_name="steam_ejector", ) def cost_steam_ejector(blk, cost_steam_flow=False): """ Thermo Compressor (Steam Ejector) Costing Method. Capital cost is calculated using the equation: Capital Cost (USD) = 1949 × (S + EV)^0.3 (Gabriel 2015, Desalination) where: S = Motive steam flow rate (kg/h) EV = Entrained vapor flow rate (kg/h) """ make_capital_cost_var(blk) blk.costing_package.add_cost_factor(blk, "TIC") S = pyo.units.convert( blk.unit_model.properties_motive_steam[0.0].flow_mass_phase_comp["Vap", "H2O"], to_units=pyo.units.kg / pyo.units.hour, ) EV = pyo.units.convert( blk.unit_model.properties_entrained_vapor[0.0].flow_mass_phase_comp[ "Vap", "H2O" ], to_units=pyo.units.kg / pyo.units.hour, ) blk.capital_cost_constraint = pyo.Constraint( expr=blk.capital_cost == blk.cost_factor * pyo.units.convert( blk.costing_package.steam_ejector.base_cost * (S + EV) ** blk.costing_package.steam_ejector.cost_exponent, to_units=blk.costing_package.base_currency, ) ) if cost_steam_flow: blk.costing_package.cost_flow( pyo.units.convert( blk.unit_model.properties_motive_steam[0.0].flow_mass_phase_comp[ "Vap", "H2O" ], to_units=pyo.units.kg / pyo.units.s, ), "steam", )