def add_basic_TEA_params(model, shape, operating_days): # pragma: no cover param = model.parameter TEA = model._system.TEA if operating_days: baseline = TEA.operating_days param(Setter(TEA, 'operating_days'), element='TEA', distribution=shape(baseline), baseline=baseline, name='Operating days') baseline = TEA.income_tax param(Setter(TEA, 'income_tax'), element='TEA', distribution=shape(baseline), baseline=baseline, name='Income tax') if TEA.startup_months: baseline = TEA.startup_months param(Setter(TEA, 'startup_months'), element='TEA', baseline=baseline, distribution=shape(baseline), name='startup_months')
def add_agent_price_params(model, name, agent, shape): if agent.heat_transfer_price: baseline = agent.heat_transfer_price model.parameter(Setter(agent, 'heat_transfer_price'), element=name, units='USD/kJ', name='Price', distribution=shape(baseline), baseline=baseline) elif agent.regeneration_price: baseline = agent.regeneration_price model.parameter(Setter(agent, 'regeneration_price'), element=name, units='USD/kmol', name='Price', distribution=shape(baseline), baseline=baseline)
def add_basic_TEA_params(model, shape): param = model.parameter TEA = model._system.TEA @param(element='TEA', distribution=shape(TEA.operating_days)) def set_operating_days(operating_days): TEA.operating_days = operating_days @param(element='TEA', distribution=shape(TEA.income_tax)) def set_income_tax(income_tax): TEA.income_tax = income_tax @param(element='TEA', distribution=shape(TEA.startup_months)) def set_startup_months(startup_months): TEA.startup_months = startup_months
def add_stream_price_param(model, stream, shape): mid = stream.price if not mid: return @model.parameter(element=stream, units='USD/kg', distribution=shape(mid)) def set_price(price): stream.price = price
def add_flow_rate_param(model, feed, shape): @model.parameter(element=feed, units='kg/hr', distribution=shape(feed.massnet), kind='coupled') def set_flow_rate(flow_rate): feed.mol[:] *= flow_rate / feed.massnet
def add_power_utility_price_param(model, shape): # pragma: no cover if bst.PowerUtility.price: baseline = bst.PowerUtility.price model.parameter(set_price, element='Electricity', units='USD/kWhr', distribution=shape(baseline), baseline=baseline)
def add_power_utility_price_param(model, shape): if bst.PowerUtility.price: @model.parameter(element='Electricity', units='USD/kW', distribution=shape(bst.PowerUtility.price)) def set_price(price): bst.PowerUtility.price = price
def _exp(model, ID, item, line, shape): key = 'n' mid = float(item[key]) distribution = shape(mid) name = 'exponent' if ID != line: ID = ID + ' ' + name else: ID = name _cost_option(model, ID, item, key, line, distribution, None)
def _cost(model, ID, item, line, shape): key = 'cost' mid = float(item[key]) distribution = shape(mid) name = 'base cost' if ID != line: ID = ID + ' ' + name else: ID = name _cost_option(model, ID, item, key, line, distribution, 'USD')
def add_agent_price_params(model, name, agent, shape): if agent.price_kJ: @model.parameter(element=name, units='USD/kJ', name='Price', distribution=shape(agent.price_kJ)) def set_price(price_kJ): agent.price_kJ = price_kJ elif agent.price_kmol: @model.parameter(element=name, units='USD/kmol', name='Price', distribution=shape(agent.price_kmol)) def set_price(price_kmol): agent.price_kmol = price_kmol
def add_stream_price_param(model, stream, shape): mid = stream.price if not mid: return model.parameter(Setter(stream, 'price'), element=stream, units='USD/kg', distribution=shape(mid), baseline=mid, name='price')
def _exp(model, ID, item, line, shape): # pragma: no cover key = 'n' mid = float(item[key]) if not mid: return None distribution = shape(mid) name = 'exponent' if ID != line: ID = ID + ' ' + name else: ID = name _cost_option(model, ID, item, key, line, distribution, None, mid)
def add_flow_rate_param(model, feed, shape): # pragma: no cover baseline = feed.F_mass model.parameter(Setter(feed, 'F_mass'), element=feed, units='kg/hr', distribution=shape(baseline), kind='coupled', name='Flow rate', baseline=baseline)
def _kW(model, ID, item, line, shape): key = 'kW' mid = float(item[key]) if not mid: return None units = item.units size = item.S mid = mid/size distribution = shape(mid) units = 'kW / ' + units name = 'electricity rate' if ID!=line: ID = ID + ' ' + name else: ID = name model.parameter(CostItemSetter(item, key, size), element=line, baseline=mid, units=units, distribution=distribution, name=ID)
def _kW(model, ID, item, line, shape): key = 'kW' mid = float(item[key]) if not mid: return None units = item.units size = item.S mid = mid / size distribution = shape(mid) units = (bst._Q(1, 'kW') / bst._Q(1, units)).units name = 'electricity rate' if ID != line: ID = ID + ' ' + name else: ID = name @model.parameter(element=line, units=units, distribution=distribution, name=ID) def set_cost_option(value): item[key] = value * size