From 5a6f6ec440beabe01ca048c7a0c5b200c8492c23 Mon Sep 17 00:00:00 2001 From: "Gabriel J. Soto" Date: Mon, 24 Jun 2024 09:37:23 -0600 Subject: [PATCH] some updates to help render math in github --- .../HERON_Cashflows.md | 24 +++++++++---------- .../HERON_Components.md | 6 ++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/doc/theory_manual/ComponentCharacterization/HERON_Cashflows.md b/doc/theory_manual/ComponentCharacterization/HERON_Cashflows.md index 2b353698..74d5c43e 100644 --- a/doc/theory_manual/ComponentCharacterization/HERON_Cashflows.md +++ b/doc/theory_manual/ComponentCharacterization/HERON_Cashflows.md @@ -119,28 +119,28 @@ $$R_p \in \{3,5,7,10,15\}. $$ According to MACRS, we would have a depreciation rate $\beta_{p,y}$ per year. For example, for $R_p=3$ the rates would be -$$ \beta_{p,y}\Big|_{{}_{R_p=3}} = +$$\beta_{p,y}\Big|_{R_p=3} = \begin{cases} -33.33\hspace{0.5cm} \text{if } y = nL_p + 1 \ \forall \ n \in \mathbb{N}_p\\ -44.45\hspace{0.5cm} \text{if } y = nL_p + 2 \ \forall \ n \in \mathbb{N}_p\\ -14.81\hspace{0.5cm} \text{if } y = nL_p + 3 \ \forall \ n \in \mathbb{N}_p\\ -7.41\hspace{0.7cm} \text{if } y = nL_p + 4\ \forall \ n \in \mathbb{N}_p\\ -0\hspace{0.75cm} \text{elsewhere } +33.33\hspace{0.5cm} \ \ \text{if } y = nL_p + 1 \ \forall \ n \in \mathbb{N}_p\\ +44.45\hspace{0.5cm} \ \ \text{if } y = nL_p + 2 \ \forall \ n \in \mathbb{N}_p\\ +14.81\hspace{0.5cm} \ \ \text{if } y = nL_p + 3 \ \forall \ n \in \mathbb{N}_p\\ +7.41\hspace{0.7cm} \ \ \text{if } y = nL_p + 4\ \forall \ n \in \mathbb{N}_p\\ +0\hspace{0.75cm} \ \ \text{elsewhere } \end{cases}$$ Note that no depreciation is applied during the construction year $y=0$. Users can alternatively apply custom depreciation rate schedules. To model a depreciation asset, TEAL applies two additional cash flows to the one-time CAPEX. First is a positive cash flow representing the tax credit that helps recuperate the depreciation. It is untaxed, but inflation *is* applied: -$$B^+_{p,y} = \beta_{p,y}\nu^B_{p,y}A_{p,0}. $$ +$$B_{p,y}^+ = \beta_{p,y}\nu^B_{p,y}A_{p,0}.$$ Note that within $A_{p,0}$ is the term $\epsilon_{p,y}^A$ which applies the capital cost ONLY on the first year of construction (and subsequent reconstructions). In TEAL, the driver of the cash flow is the entire first year cash flow. Since $R_p \leq L_p$ only a singular capital cost is applied per component lifetime. For a more complete definition, we would repeat the depreciation process again per lifetime (this is accounted for in the definition of $\beta$). A second, negative cash flow is also applied to represent the depreciation of the asset's value. This is similar to the first positive cash flow but it is taxed: -$$B^-_{p,y} = \beta_{p,y}\lambda^B_{p,y}A_{p,0}. $$ +$$B_{p,y}^- = \beta_{p,y}\lambda^B_{p,y}A_{p,0}.$$ If we collect all like terms, the actual CAPEX cash flow will look like: -$$ \begin{align*} \sum_{j=\{A,B\},\ k=\{+,-\}} F_j^k = -\lambda^A_{p,y}A_{p,y} + B^+_{p,y} - B^-_{p,y} &= -\lambda^A_{p,y}A_y + \beta_{p,y}\nu^B_{p,y}A_{p,0} - \beta_{p,y}\lambda^B_{p,y}A_{p,0} \\ +$$\begin{align*} \sum_{j=\{A,B\},\ k=\{+,-\}} F_j^k = -\lambda_{p,y}A_{p,y}^A + B_{p,y}^+ - B_{p,y}^- &= -\lambda_{p,y}^A A_y + \beta_{p,y}\nu^B_{p,y}A_{p,0} - \beta_{p,y}\lambda^B_{p,y}A_{p,0} \\ &= -\lambda^A_{p,y}A_y + \beta_{p,y}(\nu^B_{p,y} - \lambda^B_{p,y})A_{p,0} \\ &= -\lambda^A_{p,y}A_y + \beta_{p,y}\nu^B_{p,y}(1 - \tau^B_{p,y})A_{p,0} \end{align*}$$ @@ -152,15 +152,15 @@ If levelized cost of capital is selected, we should also collect the amortizatio There are fixed yearly expenditures that are typically just indexed by component for all years after first "construction" year: -$$ \hat{F}^{yearly}_{p,y} \equiv \Gamma_{p,y>0} = \alpha^{\Gamma}_p \left(\frac{c_p}{c_p^{\Gamma\prime}} \right)^{\chi_p^\Gamma} $$ +$$\hat{F}_{p,y}^\text{yearly} \equiv \Gamma_{p,y>0} = \alpha_p^\Gamma \left(\frac{c_p}{c_p^{\Gamma\prime}} \right)^{\chi_p^\Gamma}$$ or -$$ \Gamma_{p,y} = \epsilon_y \alpha^{\Gamma}_p \left(\frac{c_p}{c_p^{\Gamma\prime}} \right)^{\chi_p^\Gamma} = \epsilon_y\alpha^{\Gamma}_p \left(\frac{c_p}{c_p^{\Gamma\prime}} \right)^{\chi_p^\Gamma} $$ +$$\Gamma_{p,y} = \epsilon_y \alpha^{\Gamma}_p \left(\frac{c_p}{c_p^{\Gamma\prime}} \right)^{\chi_p^\Gamma} = \epsilon_y\alpha^{\Gamma}_p \left(\frac{c_p}{c_p^{\Gamma\prime}} \right)^{\chi_p^\Gamma} $$ where we define a parameter to zero-out terms in year 0 -$$ \epsilon_{y} = +$$\epsilon_{y} = \begin{cases} 0\hspace{0.5cm} \text{if } y = 0 \ \forall \ y \in \mathbb{Y}\\ 1\hspace{0.5cm} \text{elsewhere } diff --git a/doc/theory_manual/ComponentCharacterization/HERON_Components.md b/doc/theory_manual/ComponentCharacterization/HERON_Components.md index 685f16d6..1523ed2b 100644 --- a/doc/theory_manual/ComponentCharacterization/HERON_Components.md +++ b/doc/theory_manual/ComponentCharacterization/HERON_Components.md @@ -48,11 +48,11 @@ For the different component types, the dispatch activity is tracked via the foll The capacities are applied as a global upper bound on the dispatch when defined as flexible: -$$ m_p \leq D_{p,x,y,u,t} \leq f_{p,y,u,t} c_p \ \forall \ \begin{cases} p \in \mathbb{P}^\prime \\ x\in \mathbb{X} \\ y\in \mathbb{Y} \\u\in \mathbb{U}_Y \\t\in \mathbb{T} \end{cases} $$ +$$ m_p \leq D_{p,x,y,u,t} \leq f_{p,y,u,t} c_p \ \forall \ \begin{cases} p \in \mathbb{P}^\prime \\ x\in \mathbb{X} \\ y\in \mathbb{Y} \\ u\in \mathbb{U}_Y \\ t\in \mathbb{T} \end{cases} $$ The minimum $m_p$ defaults to 0 unless specified; the capacity factor $f_{p,y,u,t}$ defaults to 1. In the default case, the bounds on dispatch are: -$$ 0 \leq D_{p,x,y,u,t} \leq c_p \ \forall \ \begin{cases} p \in \mathbb{P}^\prime \\ x\in \mathbb{X} \\ y\in \mathbb{Y} \\u\in \mathbb{U}_Y \\t\in \mathbb{T} \end{cases} $$ +$$ 0 \leq D_{p,x,y,u,t} \leq c_p \ \forall \ \begin{cases} p \in \mathbb{P}^\prime \\ x\in \mathbb{X} \\ y\in \mathbb{Y} \\ u\in \mathbb{U}{}_Y \\ t\in \mathbb{T} \end{cases} $$ Otherwise the components will just dispatch at a fixed level based on their capacity. We can also define the specific collection of dispatch actions taken within a specific scenario (i.e., for a given stochastic profile) as @@ -66,6 +66,6 @@ where we're not exactly indexing per scenario, it's more of a response of the di The optimal dispatch is defined as one which maximizes an inner objective function as shown below: -$${}^s\mathbf{D}^\star_{p,x,\hat{y},\hat{u},t} = \argmax_D \ \sum_{P,X,T_{U}} {}^s\hat{F}_{hourly} \Big|_{\hat{u},\hat{y}}$$ +$${}^s\mathbf{D}^\star_{p,x,\hat{y},\hat{u},t} = \underset{D}{\text{arg max}} \ \sum_{P,X,T_{U}} {}^s\hat{F}_{hourly} \Big|_{\hat{u},\hat{y}}$$ Here, the objective is to maximize the sum of all *hourly* cashflows for all components, all resources, and all times per segment **for each** cluster/segment, **for each** year, **for each** scenario.