Source code for placades.project

from placades.type_checks import check_parameter

try:
    from oemof.tools.economics import annuity
except ModuleNotFoundError:
    annuity = None

from placades.investment import calculate_annuity_mvs


[docs] class Project:
[docs] def __init__( self, name, lifetime, tax, discount_factor, shortage_cost=999, excess_cost=99, disable_shortage=False, disable_excess=False, latitude=50.587031, longitude=10.165876, ): self.name = name self.tax = tax self.lifetime = lifetime self.discount_factor = discount_factor self.shortage_cost = shortage_cost self.excess_cost = excess_cost
[docs] def calculate_epc(self, capex_var, lifetime, age_installed, method="mvs"): if method == "mvs": check_parameter( capex_var, self.lifetime, self.discount_factor, lifetime, self.tax, age_installed, ) return calculate_annuity_mvs( capex_var=capex_var, lifetime=lifetime, age_installed=age_installed, tax=self.tax, lifetime_project=self.lifetime, discount_factor=self.discount_factor, ) elif method == "oemof": check_missing_module(annuity, "oemof", "oemof-tools") check_parameter( capex_var, self.lifetime, self.discount_factor, lifetime ) return annuity( capex=capex_var, n=self.lifetime, wacc=self.discount_factor, u=lifetime, ) return None
def check_missing_module(module, name, package): if module is None: msg = ( f"To use the annuity method of {name} the package " f"{package} is needed.\nUse `pip install {package}` " "to install it." ) raise ModuleNotFoundError(msg)