TEA

Note: This class was originally named SimpleTEA, but it has been deprecated as the TEA algorithms have been enhanced and no longer “simple” :).

class qsdsan.TEA(system, discount_rate=0.05, income_tax=0.0, CEPCI=567.5, start_year=2024, lifetime=10, uptime_ratio=1.0, CAPEX=0.0, lang_factor=None, annual_maintenance=0.0, annual_labor=0.0, system_add_OPEX={}, depreciation='SL', construction_schedule=(0, 1), accumulate_interest_during_construction=False, simulate_system=True, simulate_kwargs={}, **tea_kwargs)

Calculate an annualized cost for simple economic analysis that does not include loan payment (i.e., 100% equity).

Parameters:
  • system (biosteam.System) – The system this TEA is conducted for.

  • discount_rate (float) –

    Interest rate used in discounted cash flow analysis.

    Note

    Herein discount_rate equals to IRR (internal rate of return). Although theoretically, IRR is the discount rate only when the net present value (NPV) is 0.

  • income_tax (float) – Combined tax (e.g., sum of national, state, local levels) for net earnings.

  • start_year (int) – Start year of the system.

  • lifetime (int) –

    Total lifetime of the system, [yr]. Currently biosteam only supports int.

    Note

    As TEA is a subclass of biosteam.TEA, and biosteam.TEA currently only supports certain depreciation schedules, lifetime must be larger than or equal to 6.

uptime_ratiofloat

Fraction of time that the system is operating, should be in [0,1] (i.e., a system that is always operating has an uptime_ratio of 1).

Note

If a unit has an uptime_ratio that is different from the uptime_ratio of the system, the uptime_ratio of the unit will be used in calculating the additional operation expenses (provided in unit.add_OPEX).

However, uptime_ratio of the unit will not affect the utility (heating, cooling, power) and material costs/environmental impacts.

For example, if the uptime_ratio of the system and the unit are 1 and 0.5, respectively, then in calculating operating expenses associated with the unit:

  • Utility and material costs/environmental impacts will be calculated for 1*24*365 hours per year.

  • Additional operating expenses will be calculated for 0.5*24*365 hours per year.

If utility and material flows are not used at the same uptime_ratio as the system, they should be normalized to be the same. For example, if the system operates 100% of time but a pump only works 50% of the pump at 50 kW. Set the pump power_utility to be 50*50%=25 kW.

CEPCIfloat

Chemical Engineering Plant Cost Index, default to that of year 2017 (567.5). Values for alternative years can be checked by qsdsan.CEPCI_by_year.

CAPEXfloat

Capital expenditure, if not provided, is set to be the same as installed_equipment_cost.

lang_factorfloat or None

A factor to estimate the total installation cost based on equipment purchase cost, leave as None if providing CAPEX. If neither CAPEX nor lang_factor is provided, installed_equipment_cost will be calculated as the sum of purchase costs of all units within the system.

annual_maintenancefloat

Annual maintenance cost as a fraction of fixed capital investment.

annual_laborfloat

Annual labor cost.

system_add_OPEXfloat or dict

Annual additional system-wise operating expenditure (on top of the add_OPEX of each unit). Float input will be automatically converted to a dict with the key being “System additional OPEX”.

construction_scheduletuple

Construction progress prior to the start of the system (fraction of the construction that can be finished each year), must sum up to 1. Leave as the default (0,1) if no special construction progress is expected.

accumulate_interest_during_constructionbool

Whether loan interest during the construction period will be accumulated onto the loan principal. If False (default), interest accumulated during the construction stage will be paid using equity/cash (i.e., not added to the loan); if True, the loan principal will include the interest accumulated during construction. See BioSTEAM issue #180 for details: https://github.com/BioSTEAMDevelopmentGroup/biosteam/issues/180

simulate_systembool

Whether to simulate the system before creating the LCA object.

simulate_kwargsdict

Keyword arguments for system simulation (used when simulate_system is True).

tea_kwargs

Additional values that will be passed to biosteam.TEA, including (default values in parentheses) startup_months (0), startup_FOCfrac (1), startup_VOCfrac (1), startup_salesfrac (1), WC_over_FCI (0), finance_interest (0), finance_years (0), and finance_fraction (0).

Examples

A system should be constructed prior to TEA, here we import a pre-constructed one.

>>> import qsdsan as qs
>>> from qsdsan.utils import create_example_system
>>> sys = create_example_system()
>>> # Uncomment the line below to see the system diagram
>>> # sys.diagram()
>>> sys.simulate()
>>> sys.show()
System: sys
ins...
[0] salt_water
    phase: 'l', T: 298.15 K, P: 101325 Pa
    flow (kmol/hr): H2O   111
                    NaCl  0.856
[1] methanol
    phase: 'l', T: 298.15 K, P: 101325 Pa
    flow (kmol/hr): Methanol  0.624
[2] ethanol
    phase: 'l', T: 298.15 K, P: 101325 Pa
    flow (kmol/hr): Ethanol  0.217
outs...
[0] alcohols
    phase: 'l', T: 298.15 K, P: 101325 Pa
    flow (kmol/hr): Methanol  0.624
                    Ethanol   0.217
[1] waste_brine
    phase: 'l', T: 350 K, P: 101325 Pa
    flow (kmol/hr): H2O   88.8
                    NaCl  0.684
>>> tea = qs.TEA(system=sys, discount_rate=0.05, start_year=2021,
...              lifetime=10, uptime_ratio=0.9,
...              system_add_OPEX=0.03)
>>> # Your results maybe slightly different depending on the version of
>>> # QSDsan's dependent packages (e.g., thermo)
>>> tea.show() 
TEA: sys
NPV  : -259,...

See also

TEA

property CAPEX

[float] Capital expenditure, if not provided, is set to be the same as self.TCI.

property CEPCI

[float] Chemical Engineering Plant Cost Index.

property CEPCI_by_year

[dict] Chemical Engineering Plant Cost Index with key being the year and values being the index.

property DPI

[float] Direct permanent investment, calculated using self._DPI as a function of installed_equipment_cost.

property EAC

[float] Equivalent annual cost calculated as the sum of annualized_CAPEX and AOC (annual operating cost).

Note

Sales are not included.

property FCI

[float] Fixed capital investment, calculated using self._FCI as a function of self.TDC.

property FOC

[float] Fixed operating cost, including maintenance, labor, and any additional operating expenditure other than chemical inputs and utilities.

IRR: float

Internal rate of return (fraction).

property TCI

[float] Total capital investment, calculated as self._FCI*(1+self.WC_over_FCI) (WC for working capital).

property TDC

[float] Total depreciable capital, calculated using self._TDC as a function of self.DPI.

WC_over_FCI: float

Working capital as a fraction of fixed capital investment.

accumulate_interest_during_construction

Whether to immediately pay interest before operation or to accumulate interest during construction

property annual_labor

[float] Annual labor cost.

property annual_maintenance

[float] Annual maintenance cost as a fraction of fixed capital investment.

property annualized_CAPEX

[float] Annualized capital expenditure calculated through annualized NPV as:

\[annualized\ capital\ cost = annual\ net\ earning - annualized\ NPV\]

Note

Read the tutorial about the difference between annualized_CAPEX and annualized_equipment_cost.

property annualized_NPV

[float] Annualized NPV calculated as:

\[annualized\ NPV = \frac{NPV*r}{(1-(1+r)^{-lifetime})}\]
property annualized_equipment_cost

[float] Annualized equipment cost representing the sum of the annualized cost of each equipment, calculated using get_unit_annualized_equipment_cost.

property currency

[str] TEA currency, same with qsdsan.currency.

property discount_rate

[float] Interest rate used in discounting, same as IRR in biosteam.TEA.

property duration

[int] Duration of the system based on start_year and lifetime.

property feeds

[qsdsan.WasteStream] System feed streams.

finance_fraction: float

Fraction of capital cost that needs to be financed.

finance_interest: float

Yearly interest of capital cost financing as a fraction.

finance_years: int

Number of years the loan is paid for.

get_unit_annualized_equipment_cost(units=None)

Annualized equipment cost representing the sum of the annualized cost of each equipment, which is calculated as:

\[annualized\ equipment\ cost = \frac{equipment\ installed\ cost}{(1-(1+r)^{-lifetime})}\]

Note

Read the tutorial about the difference between annualized_CAPEX and annualized_equipment_cost.

income_tax: float

Combined federal and state income tax rate (fraction).

property installed_equipment_cost

[float] Sum of installed cost of all units in the system, is the same as CAPEX if CAPEX is provided.

property lang_factor

[float] A factor to estimate the total installation cost based on equipment purchase cost.

property lifetime

[int] Total lifetime of the system, [yr]. Currently biosteam only supports int.

property operating_days

[float] Equivalent operating days calculated based on uptime_ratio.

property operating_hours

[float] Equivalent operating hours calculated based on uptime_ratio.

property products

[qsdsan.WasteStream] System product streams.

show()

Prints information on unit.

property start_year

[int] Start year of the system.

startup_FOCfrac: float

Fraction of fixed operating costs incurred during startup.

startup_VOCfrac: float

Fraction of variable operating costs incurred during startup.

startup_salesfrac: float

Fraction of sales achieved during startup.

property system

[biosteam.System] The system this TEA is conducted for.

property system_add_OPEX

[dict] Annual additional system-wise operating expenditure (on top of the add_OPEX of each unit). Float input will be automatically converted to a dict with the key being “System additional OPEX”.

property total_add_OPEX

[float] Sum of unit_add_OPEX and system_add_OPEX.

property unit_add_OPEX

[float] Sum of add_OPEX for all units in the system.

property units

[qsdsan.SanUnit] Units in the system.

property uptime_ratio

[float] Fraction of time that the system is operating.