예제 #1
0
    #          Metric('Co-product credit', get_coproduct_credit, 'USD/yr'),
    Metric('Ethanol production', get_ethanol_production, 'kg/hr'),
    Metric('Steam demand', get_steam_demand, 'kg/hr'),
    Metric('Excess electricity', get_excess_electricity, 'MW'),
    Metric('Cooling duty', cooling_duty_biorefinery(), 'KJ/hr'),
    Metric('H2SO4 input', get_acid_innput, 'kg/hr'),
    Metric('Lime_input', get_lime_input, 'kg/hr'),
    Metric('Polymer_input', get_polymer_input, 'kg/hr'),
    Metric('Yeast_input', get_yeast_input, 'kg/hr'),
    Metric('Makeup_water', get_makeup_water, 'kg/hr'),
    Metric('Biomass goes to combustion', get_combusted_mass, 'kg/hr'),
    Metric('Share of total biomass goes to combustion',
           get_combusted_biomass_ratio, '100&')
]

sugarcane_model = Model(sugarcane_sys, metrics)
sugarcane_model.load_default_parameters(sugar_cane, operating_days=False)
param = sugarcane_model.parameter

# Fermentation efficiency
fermentation = R301
baseline = fermentation.efficiency


@param(element=fermentation,
       distribution=triang(baseline),
       baseline=baseline,
       kind='coupled')
def set_fermentation_efficiency(efficiency):
    fermentation.efficiency = efficiency
예제 #2
0
metrics.extend(
    (Metric('Sum', get_system_utility_cost, '10^6 $/yr', 'Utility cost'),
     Metric('Check', check_utility_cost, '10^6 $/yr', 'Utility cost')))

# To see if TEA converges well for each simulation
get_NPV = lambda: lactic_tea.NPV
metrics.extend((Metric('Net present value', get_NPV, '$', 'TEA'), ))

# %%

# =============================================================================
# Construct base model
# =============================================================================

model_full = Model(lactic_sys, metrics)
param = model_full.parameter


def baseline_uniform(baseline, ratio):
    return shape.Uniform(baseline * (1 - ratio), baseline * (1 + ratio))


# =============================================================================
# TEA parameters
# =============================================================================

U101 = system.U101
D = baseline_uniform(2205, 0.1)

예제 #3
0
파일: model.py 프로젝트: lilanyu/biosteam
    factor = tea._annual_factor/1000
    electricity_generated = -BT._power_utility.rate * factor
    consumed_electricity = sum([i.rate for i in power_utils]) * factor
    excess_electricity[0] = electricity_generated - consumed_electricity
    return consumed_electricity
get_excess_electricity = lambda: excess_electricity[0]

metrics = (Metric('Internal rate of return', sc.sugarcane_tea.solve_IRR, '%'),
           Metric('Ethanol production cost', get_prodcost, 'USD/yr'),
           Metric('Fixed capital investment', get_FCI, 'USD'),
           Metric('Ethanol production', get_prod, 'kg/hr'),
           Metric('Steam', get_steam, 'MT/yr'),
           Metric('Consumed electricity', get_consumed_electricity, 'MWhr/yr'),
           Metric('Excess electricity', get_excess_electricity, 'MWhr/yr'))

sugarcane_model = Model(sc.sugarcane_sys, metrics, skip=False)
sugarcane_model.load_default_parameters(sc.system.Sugar_cane)
param = sugarcane_model.parameter

# Fermentation efficiency
fermentation = sc.system.P24
@param(element=fermentation, distribution=triang(fermentation.efficiency),
       kind='coupled')
def set_fermentation_efficiency(efficiency):
    fermentation.efficiency= efficiency
    
# Boiler efficiency
BT = sc.system.BT
@param(element=BT, distribution=triang(BT.boiler_efficiency))
def set_boiler_efficiency(boiler_efficiency):
    BT.boiler_efficiency = boiler_efficiency
예제 #4
0
    return lambda: sum([i.duty for i in cooling_utilities])


def installation_cost_function(tea):
    return lambda: tea.installation_cost


for i, tea in enumerate(areas, 1):
    Area = f'Area {i}00'
    metrics.extend(
        (Metric('Electricity', electricity_rate_function(tea), 'MW', Area),
         Metric('Cooling duty', cooling_duty_function(tea), 'MMkcal/hr', Area),
         Metric('Installation cost', installation_cost_function(tea),
                '10^6 USD', Area)))

cornstover_model = Model(cornstover_sys, metrics)
cornstover_model.load_default_parameters(cornstover, operating_days=False)
param = cornstover_model.parameter

# Add saccharification as a parameter
saccharification_reaction = R301.saccharification[2]
X = tools.bounded_triang(saccharification_reaction.X, addition=0.05)


@param(element=R301, kind='coupled', distribution=X)
def set_saccharification_conversion(saccharification_conversion):
    saccharification_reaction.X = saccharification_conversion


# Add ethanol conversion as a parameter
ethanol_reaction = R301.cofermentation[0]
예제 #5
0
metrics_by_name = {i.name: i for i in metrics}

# %% Create model and populate parameters

#: [float] Plant size process specification in ton / yr
plant_size_ = lc.lipidcane.F_mass * lc.lipidcane_tea.operating_days * 24 / 907.185
constant_lipid_content = False


def load_specifications():
    # Plant size
    lc.lipidcane.F_mass = plant_size_ / (lc.lipidcane_tea.operating_days * 24 /
                                         907.185)


model = Model(lc.lipidcane_sys, metrics, load_specifications)
param = model.parameter
lipid_content = 100. * lc.utils.get_lipid_fraction()


@param(units='dry wt. %',
       distribution=triang(lipid_content),
       baseline=lipid_content)
def set_lipic_content(lipid_content):
    if constant_lipid_content: return
    lc.utils.set_lipid_fraction(lipid_content / 100.)


@param(units='ton/yr', distribution=triang(plant_size_), baseline=plant_size_)
def set_plant_size(plant_size):
    global plant_size_
예제 #6
0
    return consumed_electricity

def get_excess_electricity():
    return excess_electricity[0]

metrics = (Metric('Internal rate of return', lc.lipidcane_tea.solve_IRR),
           Metric('Biodiesel production cost', get_biodiesel_prodcost, 'USD/yr'),
           Metric('Ethanol production cost', get_etoh_prodcost, 'USD/yr'),
           Metric('Fixed capital investment', get_FCI, 'USD'),
           Metric('Biodiesel production', get_biodiesel_prod, 'kg/hr'),
           Metric('Ethanol production', get_etoh_prod, 'kg/hr'),
           Metric('Steam', get_steam, 'MT/yr'),
           Metric('Consumed electricity', get_consumed_electricity, 'MWhr/yr'),
           Metric('Excess electricity', get_excess_electricity, 'MWhr/yr'))

lipidcane_model = Model(lc_sys, metrics)
lipidcane_model.load_default_parameters(lipid_cane)
param = lipidcane_model.parameter

# Lipid extraction rate
Mill = lc.system.U201
baseline = Mill.isplit['Lipid']
@param(element=Mill,
       distribution=triang(baseline),
       baseline=baseline,
       kind='coupled')
def set_lipid_extraction_rate(lipid_extraction_rate):
    Mill.isplit['Lipid'] = lipid_extraction_rate
    
# Transesterification efficiency (both tanks)
R401 = lc.system.R401