TEA#
 class TEA(system, IRR, duration, depreciation, income_tax, operating_days, lang_factor, construction_schedule, startup_months, startup_FOCfrac, startup_VOCfrac, startup_salesfrac, WC_over_FCI, finance_interest, finance_years, finance_fraction, accumulate_interest_during_construction=False)[source]#
Abstract TEA class for cash flow analysis.
Abstract methods
 _DPI(installed_equipment_cost) > float
Should return the direct permanent investment (DPI) given the installed equipment cost.
 _TDC(DPI) > float
Should take direct permanent investment (DPI) as an argument and return total depreciable capital (TDC).
 _FCI(TDC) > float
Should take total depreciable capital (TDC) as an argument and return fixed capital investment (FCI).
 _FOC(FCI) > float
Should take fixed capital investment (FCI) as an arguments and return fixed operating cost without depreciation (FOC).
 _fill_tax_and_incentives(incentives, taxable_cashflow, nontaxable_cashflow, tax)
Should take two empty 1d arrays and fill them with incentive and tax cash flows. Additional parameters include taxable_cashflow (sales  costs  depreciation  payments), and nontaxable_cashflow (depreciation  capital cost  working capital).
 Parameters:
system (
System
) – Should contain feed and product streams.IRR (
float
) – Internal rate of return (fraction).duration (
tuple`[:py:class:`int
,int
]) – Start and end year of venture (e.g. (2018, 2038)).depreciation (
str
 NDArray[float
]) – Depreciation schedule array or a string with format ‘{schedule}{years}’, where years is the number of years until the property value is zero and schedule is one of the following: ‘MACRS’ (Modified Accelerated Cost Recovery System), ‘SL’ (straight line), ‘DDB’ (double declining balance), or ‘SYD’ (sumoftheyears’ digits). If years is not given, it defaults to the venture years at run time.operating_days (
float
) – Number of operating days per year.income_tax (
float
) – Combined federal and state income tax rate (fraction).lang_factor (
float
 None) – Lang factor for getting fixed capital investment from total purchase cost. If no lang factor, estimate capital investment using bare module factors.construction_schedule (
Sequence`[:py:class:`float
]) – Construction investment fractions per year (e.g. (0.5, 0.5) for 50% capital investment in the first year and 50% investment in the second).startup_months (
float
) – Startup time in months.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.WC_over_FCI (
float
) – Working capital as a fraction of fixed capital investment.finance_interest (
float
) – Yearly interest of capital cost financing as a fraction.finance_years (
int
) – Number of years the loan is paid for.finance_fraction (
float
) – Fraction of capital cost that needs to be financed.
Warning
When using a Lang factor, a shortcut to get the FCI, we cannot work backwards to get installed equipment cost. For practical purposes, the code assumes that installed equipment cost, total depreciable capital (TDC), and fixed capital investment (FCI) are the same when the Lang factor is in use. In actuality, the installed equipment cost should be less than the fixed capital investment.
Examples

depreciation_schedules:
dict
[tuple`(:py:class:`str
,int
), NDArray[float
]] = {('MACRS', 3): array([0.333, 0.445, 0.148, 0.074]), ('MACRS', 5): array([0.2 , 0.32 , 0.192, 0.115, 0.115, 0.058]), ('MACRS', 7): array([0.143, 0.245, 0.175, 0.125, 0.089, 0.089, 0.089, 0.045]), ('MACRS', 10): array([0.1 , 0.18 , 0.144, 0.115, 0.092, 0.074, 0.066, 0.066, 0.066, 0.066, 0.033]), ('MACRS', 15): array([0.05 , 0.095, 0.086, 0.077, 0.069, 0.062, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.029]), ('MACRS', 20): array([0.037, 0.072, 0.067, 0.062, 0.057, 0.053, 0.049, 0.045, 0.045, 0.045, 0.045, 0.045, 0.045, 0.045, 0.045, 0.045, 0.045, 0.045, 0.045, 0.045, 0.022])}# Available depreciation schedules. Defaults include modified accelerated cost recovery system from U.S. IRS publication 946 (MACRS), halfyear convention.

investment_site_factors:
dict
[str
,float
] = {'India': 0.85, 'Japan': 1.15, 'Mexico': 0.95, 'Pacific Rim': 1.0, 'U.S. Gulf Coast': 1.0, 'U.S. Midwest': 1.15, 'U.S. Northwest': 1.1, 'U.S. Southwest': 0.95, 'U.S. West Coast': 1.25, 'Western Europe': 1.2}# Investment site factors used to multiply the total permanent investment (TPI), also known as total fixed capital (FCI), to account for locality cost differences based on labor availability, workforce efficiency, local rules, etc.
 accumulate_interest_during_construction#
Whether to immediately pay interest before operation or to accumulate interest during construction
 property lang_factor: float  None#
Lang factor for getting fixed capital investment from total purchase cost. If no lang factor, estimate capital investment using bare module factors.
 property depreciation: str  NDArray[float]#
Depreciation schedule array or a string with format ‘{schedule}{years}’, where years is the number of years until the property value is zero and schedule is one of the following: ‘MACRS’ (Modified Accelerated Cost Recovery System), ‘SL’ (straight line), ‘DDB’ (double declining balance), or ‘SYD’ (sumoftheyears’ digits). If years is not given, it defaults to the venture years at run time.
 property construction_schedule: Sequence[float]#
Construction investment fractions per year, starting from year 0. For example, for 50% capital investment in year 0 and 50% investment in year 1, use (0.5, 0.5).
 property purchase_cost#
Total purchase cost [USD].
 property annual_depreciation: float#
Depreciation [USD/yr] equivalent to TDC dived by the the duration of the venture.
 production_costs(products, with_annual_depreciation=True)[source]#
Return production cost of products [USD/yr].
 Parameters:
products (
Stream
]) – Main products of the system.with_annual_depreciation (
bool
, optional) – Whether to add annualized depreciation to the production costs.
Notes
If there is more than one main product, The production cost is proportionally allocated to each of the main products with respect to their marketing values. The marketing value of each product is determined by the annual production multiplied by its selling price.
 total_production_cost(products, with_annual_depreciation=True)[source]#
Return total production cost of products [USD/yr].
 Parameters:
products (
Stream
]) – Main products of the system.with_annual_depreciation (
bool
, optional) – Whether to add annualized depreciation to the production costs.
 solve_IRR(financing=True)[source]#
Return the IRR at the break even point (NPV = 0) through cash flow analysis.
 solve_price(streams)[source]#
Return the price [USD/kg] of a stream(s) at the break even point (NPV = 0) through cash flow analysis.
 Parameters:
streams (
Stream
Collection`[:py:class:`~thermosteam.Stream
]) – Streams with variable selling price.