Beispiel #1
0
def test_LAOs():
    from biorefineries import LAOs as laos
    laos.load()
    MPSP = laos.get_LAOs_MPSP()
    units = UnitGroup('Biorefinery', laos.LAOs_tea.units)
    assert np.allclose(MPSP, 1226.0016718824597, rtol=1e-2)
    assert np.allclose(laos.LAOs_tea.sales, 168789574.412942, rtol=1e-2)
    assert np.allclose(laos.LAOs_tea.material_cost, 135661583.58974993, rtol=1e-2)
    assert np.allclose(laos.LAOs_tea.installed_equipment_cost, 76661769.51734665, rtol=0.05)
    assert np.allclose(laos.LAOs_tea.utility_cost, 3811246.803774001, rtol=1e-2)
    assert np.allclose(units.get_heating_duty(), 59.19501587183199, rtol=1e-2)
    assert np.allclose(units.get_cooling_duty(), 134.66774238880174, rtol=1e-2)
    assert np.allclose(units.get_electricity_consumption(), 3.689496361470118, rtol=1e-2)
    assert np.allclose(units.get_electricity_production(), 3.6894963614701215, rtol=1e-2)   
Beispiel #2
0
def test_wheatstraw():
    from biorefineries import wheatstraw as ws
    ws.load()
    MESP = ws.wheatstraw_tea.solve_price(ws.ethanol)
    units = UnitGroup('Biorefinery', ws.wheatstraw_tea.units)
    assert np.allclose(MESP, 0.8988122216128204, rtol=1e-2)
    assert np.allclose(ws.wheatstraw_tea.sales, 126993140.05266903, rtol=1e-2)
    assert np.allclose(ws.wheatstraw_tea.material_cost, 63299710.08900007, rtol=1e-2)
    assert np.allclose(ws.wheatstraw_tea.installed_equipment_cost, 244243473.75764972, rtol=1e-2)
    assert np.allclose(ws.wheatstraw_tea.utility_cost, -8089087.901156843, rtol=1e-2)
    assert np.allclose(units.get_heating_duty(), 186.2281059784184, rtol=1e-2)
    assert np.allclose(units.get_cooling_duty(), 270.20290353471364, rtol=1e-2)
    assert np.allclose(units.get_electricity_consumption(), 22.924114167705298, rtol=1e-2)
    assert np.allclose(units.get_electricity_production(), 39.74032666884628, rtol=1e-2)
Beispiel #3
0
def test_cornstover():
    from biorefineries import cornstover as cs
    cs.load()
    MESP = cs.cornstover_tea.solve_price(cs.ethanol)
    units = UnitGroup('Biorefinery', cs.cornstover_tea.units)
    assert np.allclose(MESP, 0.7383610895500932, rtol=1e-2)
    assert np.allclose(cs.cornstover_tea.sales, 134055638.87837549, rtol=1e-2)
    assert np.allclose(cs.cornstover_tea.material_cost, 82902092.80482696, rtol=1e-2)
    assert np.allclose(cs.cornstover_tea.installed_equipment_cost, 220012587.48251432, rtol=1e-2)
    assert np.allclose(cs.cornstover_tea.utility_cost, -11047774.698866017, rtol=1e-2)
    assert np.allclose(units.get_heating_duty(), 318.05635812416523, rtol=1e-2)
    assert np.allclose(units.get_cooling_duty(), 365.67806026618115, rtol=1e-2)
    assert np.allclose(units.get_electricity_consumption(), 22.371322764496814, rtol=1e-2)
    assert np.allclose(units.get_electricity_production(), 45.33827889984683, rtol=1e-2)
Beispiel #4
0
def test_example_sugarcane_subsystem():
    """
    Test BioSTEAM by creating a conventional sugarcane fermentation and ethanol
    separation process.
    
    Examples
    --------
    >>> # Simply run this test and make sure not errors are raised
    >>> test_example_sugarcane_subsystem()

    """
    from biosteam.examples import ethanol_subsystem_example
    ethanol_sys = ethanol_subsystem_example()
    biorefinery = UnitGroup('Biorefinery', ethanol_sys.units)
    assert np.allclose(biorefinery.get_installed_cost(), 13.57808163192647)
    assert np.allclose(biorefinery.get_heating_duty(), 156.8807334325833)
    assert np.allclose(biorefinery.get_cooling_duty(), 104.4639430479312)
    assert np.allclose(biorefinery.get_electricity_consumption(),
                       0.40116044433570186)
    assert np.allclose(biorefinery.get_electricity_production(), 0.)
Beispiel #5
0
def test_lipidcane():
    from biorefineries import lipidcane as lc
    lc.load()
    units = UnitGroup('Biorefinery', lc.lipidcane_tea.units)
    assert np.allclose(lc.lipidcane_tea.IRR, 0.1783634347376759, rtol=1e-2)
    assert np.allclose(lc.lipidcane_tea.sales, 102410581.5597974, rtol=1e-2)
    assert np.allclose(lc.lipidcane_tea.material_cost,
                       61762971.048900105,
                       rtol=1e-2)
    assert np.allclose(lc.lipidcane_tea.installed_equipment_cost,
                       139559824.39299855,
                       rtol=1e-2)
    assert np.allclose(lc.lipidcane_tea.utility_cost,
                       -25886609.91411801,
                       rtol=1e-2)
    assert np.allclose(units.get_heating_duty(), 197.74264093327824, rtol=1e-2)
    assert np.allclose(units.get_cooling_duty(), 305.1670349131174, rtol=1e-2)
    assert np.allclose(units.get_electricity_consumption(),
                       9.65815356491132,
                       rtol=1e-2)
    assert np.allclose(units.get_electricity_production(),
                       92.62805713580244,
                       rtol=1e-2)
Beispiel #6
0
def test_sugarcane():
    from biorefineries import sugarcane as sc
    sc.load()
    units = UnitGroup('Biorefinery', sc.sugarcane_tea.units)
    assert np.allclose(sc.sugarcane_tea.IRR, 0.10319729375184486, rtol=1e-2)
    assert np.allclose(sc.sugarcane_tea.sales, 87641104.25548652, rtol=1e-2)
    assert np.allclose(sc.sugarcane_tea.material_cost,
                       60096508.050463505,
                       rtol=1e-2)
    assert np.allclose(sc.sugarcane_tea.installed_equipment_cost,
                       111512561.90122335,
                       rtol=1e-2)
    assert np.allclose(sc.sugarcane_tea.utility_cost,
                       -8589365.38733437,
                       rtol=1e-2)
    assert np.allclose(units.get_heating_duty(), 272.4872352787688, rtol=1e-2)
    assert np.allclose(units.get_cooling_duty(), 344.88392082847315, rtol=1e-2)
    assert np.allclose(units.get_electricity_consumption(),
                       9.853875285162502,
                       rtol=1e-2)
    assert np.allclose(units.get_electricity_production(),
                       37.383892552259844,
                       rtol=1e-2)
Beispiel #7
0
from biosteam.process_tools import UnitGroup
import biorefineries.sugarcane as sc

__all__ = ('sugarcane_model', )

tea = sc.sugarcane_tea
ugroup = UnitGroup('Biorefinery', tea.units)
ethanol = sc.ethanol
products = (ethanol, )

get_prodcost = lambda: float(tea.production_cost(products))
get_FCI = lambda: tea._FCI_cached
get_prod = lambda: ethanol.F_mass * tea._annual_factor
get_steam = lambda: sum([i.flow for i in sc.BT.steam_utilities]
                        ) * 18.01528 * tea._annual_factor / 1000
get_electricity_consumption = lambda: tea._annual_factor * ugroup.get_electricity_consumption(
)
get_electricity_production = lambda: tea._annual_factor * ugroup.get_electricity_production(
)
get_excess_electricity = lambda: get_electricity_production(
) - get_electricity_consumption()

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_electricity_consumption,
                  'MWhr/yr'),
           Metric('Excess electricity', get_excess_electricity, 'MWhr/yr'))

sugarcane_model = Model(sc.sugarcane_sys, metrics, skip=False)