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 ofbiosteam.TEA
, andbiosteam.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
norlang_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
- 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.