Пример #1
0
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')
Пример #2
0
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)
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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)
Пример #7
0
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
Пример #8
0
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)
Пример #9
0
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')
Пример #10
0
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
Пример #11
0
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')
Пример #12
0
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)
Пример #13
0
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)
Пример #14
0
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)
Пример #15
0
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