From f6d87ca30bc64c6a0d32cea7ab0a079198880d14 Mon Sep 17 00:00:00 2001 From: Luke Lowery Date: Wed, 22 Jul 2026 15:38:44 -0500 Subject: [PATCH 1/3] Document EMT line models and supporting operators --- CHANGELOG.md | 1 + GridKit/Model/EMT/Bus/README.md | 112 ++++--- .../Branch/BranchLumpedConstant/README.md | 121 -------- GridKit/Model/EMT/Component/Branch/README.md | 21 -- .../Component/Line/LineDistributed/README.md | 275 ++++++++++++++++++ .../EMT/Component/Line/LineLumped/README.md | 259 +++++++++++++++++ GridKit/Model/EMT/Component/Line/README.md | 9 + .../Model/EMT/Component/Load/LoadZ/README.md | 154 ++++++++++ GridKit/Model/EMT/Component/Load/README.md | 7 + GridKit/Model/EMT/Component/LoadRL/README.md | 104 ------- GridKit/Model/EMT/Component/README.md | 18 +- GridKit/Model/EMT/Component/Source/README.md | 7 + .../Component/Source/VoltageSource/README.md | 172 +++++++++++ .../EMT/Component/VoltageSource/README.md | 109 ------- GridKit/Model/EMT/Operators/README.md | 8 + .../Model/EMT/Operators/Rational/README.md | 8 + .../Operators/Rational/StateSpace/README.md | 265 +++++++++++++++++ .../Operators/Rational/VectorFit/README.md | 255 ++++++++++++++++ .../Model/EMT/Operators/Shift/Delay/README.md | 162 +++++++++++ .../EMT/Operators/Shift/Propagation/README.md | 174 +++++++++++ GridKit/Model/EMT/Operators/Shift/README.md | 8 + GridKit/Model/EMT/README.md | 78 ++++- docs/Figures/EMT/Bus/diagram.png | Bin 0 -> 20003 bytes docs/Figures/EMT/Bus/diagram.tex | 30 ++ docs/Figures/EMT/Delay/diagram.png | Bin 0 -> 28906 bytes docs/Figures/EMT/Delay/diagram.tex | 35 +++ docs/Figures/EMT/LineDistributed/diagram.png | Bin 0 -> 96345 bytes docs/Figures/EMT/LineDistributed/diagram.tex | 74 +++++ docs/Figures/EMT/LineLumped/diagram.png | Bin 0 -> 50735 bytes docs/Figures/EMT/LineLumped/diagram.tex | 47 +++ docs/Figures/EMT/LoadZ/diagram.png | Bin 0 -> 21235 bytes docs/Figures/EMT/LoadZ/diagram.tex | 27 ++ docs/Figures/EMT/Propagation/diagram.png | Bin 0 -> 64978 bytes docs/Figures/EMT/Propagation/diagram.tex | 48 +++ docs/Figures/EMT/StateSpace/diagram.png | Bin 0 -> 58695 bytes docs/Figures/EMT/StateSpace/diagram.tex | 50 ++++ docs/Figures/EMT/VectorFit/diagram.png | Bin 0 -> 84241 bytes docs/Figures/EMT/VectorFit/diagram.tex | 44 +++ docs/Figures/EMT/VoltageSource/diagram.png | Bin 0 -> 31452 bytes docs/Figures/EMT/VoltageSource/diagram.tex | 37 +++ docs/Figures/EMT/diagram-style.tex | 23 ++ docs/Figures/EMT/lumped_constant_diagram.svg | 92 ------ .../Branch/BranchLumpedConstant/README.md | 6 - .../Model/EMT/Component/Branch/README.md | 14 - .../Component/Line/LineDistributed/README.md | 6 + .../EMT/Component/Line/LineLumped/README.md | 6 + .../Model/EMT/Component/Line/README.md | 15 + .../Model/EMT/Component/Load/LoadZ/README.md | 6 + .../Model/EMT/Component/Load/README.md | 14 + .../Model/EMT/Component/LoadRL/README.md | 6 - docs/GridKit/Model/EMT/Component/README.md | 8 +- .../Model/EMT/Component/Source/README.md | 14 + .../Component/Source/VoltageSource/README.md | 6 + .../EMT/Component/VoltageSource/README.md | 6 - docs/GridKit/Model/EMT/Operators/README.md | 15 + .../Model/EMT/Operators/Rational/README.md | 15 + .../Operators/Rational/StateSpace/README.md | 6 + .../Operators/Rational/VectorFit/README.md | 6 + .../Model/EMT/Operators/Shift/Delay/README.md | 6 + .../EMT/Operators/Shift/Propagation/README.md | 6 + .../Model/EMT/Operators/Shift/README.md | 15 + docs/GridKit/Model/EMT/README.md | 3 +- docs/examples/EMT/README.md | 6 + docs/examples/README.md | 1 + examples/EMT/README.md | 48 +++ examples/README.md | 8 +- 66 files changed, 2521 insertions(+), 555 deletions(-) delete mode 100644 GridKit/Model/EMT/Component/Branch/BranchLumpedConstant/README.md delete mode 100644 GridKit/Model/EMT/Component/Branch/README.md create mode 100644 GridKit/Model/EMT/Component/Line/LineDistributed/README.md create mode 100644 GridKit/Model/EMT/Component/Line/LineLumped/README.md create mode 100644 GridKit/Model/EMT/Component/Line/README.md create mode 100644 GridKit/Model/EMT/Component/Load/LoadZ/README.md create mode 100644 GridKit/Model/EMT/Component/Load/README.md delete mode 100644 GridKit/Model/EMT/Component/LoadRL/README.md create mode 100644 GridKit/Model/EMT/Component/Source/README.md create mode 100644 GridKit/Model/EMT/Component/Source/VoltageSource/README.md delete mode 100644 GridKit/Model/EMT/Component/VoltageSource/README.md create mode 100644 GridKit/Model/EMT/Operators/README.md create mode 100644 GridKit/Model/EMT/Operators/Rational/README.md create mode 100644 GridKit/Model/EMT/Operators/Rational/StateSpace/README.md create mode 100644 GridKit/Model/EMT/Operators/Rational/VectorFit/README.md create mode 100644 GridKit/Model/EMT/Operators/Shift/Delay/README.md create mode 100644 GridKit/Model/EMT/Operators/Shift/Propagation/README.md create mode 100644 GridKit/Model/EMT/Operators/Shift/README.md create mode 100644 docs/Figures/EMT/Bus/diagram.png create mode 100644 docs/Figures/EMT/Bus/diagram.tex create mode 100644 docs/Figures/EMT/Delay/diagram.png create mode 100644 docs/Figures/EMT/Delay/diagram.tex create mode 100644 docs/Figures/EMT/LineDistributed/diagram.png create mode 100644 docs/Figures/EMT/LineDistributed/diagram.tex create mode 100644 docs/Figures/EMT/LineLumped/diagram.png create mode 100644 docs/Figures/EMT/LineLumped/diagram.tex create mode 100644 docs/Figures/EMT/LoadZ/diagram.png create mode 100644 docs/Figures/EMT/LoadZ/diagram.tex create mode 100644 docs/Figures/EMT/Propagation/diagram.png create mode 100644 docs/Figures/EMT/Propagation/diagram.tex create mode 100644 docs/Figures/EMT/StateSpace/diagram.png create mode 100644 docs/Figures/EMT/StateSpace/diagram.tex create mode 100644 docs/Figures/EMT/VectorFit/diagram.png create mode 100644 docs/Figures/EMT/VectorFit/diagram.tex create mode 100644 docs/Figures/EMT/VoltageSource/diagram.png create mode 100644 docs/Figures/EMT/VoltageSource/diagram.tex create mode 100644 docs/Figures/EMT/diagram-style.tex delete mode 100644 docs/Figures/EMT/lumped_constant_diagram.svg delete mode 100644 docs/GridKit/Model/EMT/Component/Branch/BranchLumpedConstant/README.md delete mode 100644 docs/GridKit/Model/EMT/Component/Branch/README.md create mode 100644 docs/GridKit/Model/EMT/Component/Line/LineDistributed/README.md create mode 100644 docs/GridKit/Model/EMT/Component/Line/LineLumped/README.md create mode 100644 docs/GridKit/Model/EMT/Component/Line/README.md create mode 100644 docs/GridKit/Model/EMT/Component/Load/LoadZ/README.md create mode 100644 docs/GridKit/Model/EMT/Component/Load/README.md delete mode 100644 docs/GridKit/Model/EMT/Component/LoadRL/README.md create mode 100644 docs/GridKit/Model/EMT/Component/Source/README.md create mode 100644 docs/GridKit/Model/EMT/Component/Source/VoltageSource/README.md delete mode 100644 docs/GridKit/Model/EMT/Component/VoltageSource/README.md create mode 100644 docs/GridKit/Model/EMT/Operators/README.md create mode 100644 docs/GridKit/Model/EMT/Operators/Rational/README.md create mode 100644 docs/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md create mode 100644 docs/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md create mode 100644 docs/GridKit/Model/EMT/Operators/Shift/Delay/README.md create mode 100644 docs/GridKit/Model/EMT/Operators/Shift/Propagation/README.md create mode 100644 docs/GridKit/Model/EMT/Operators/Shift/README.md create mode 100644 docs/examples/EMT/README.md create mode 100644 examples/EMT/README.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 93af90b6a..f084bdaeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,7 @@ - Added new `Rosenbrock` integrator. - Clarified naming conventions for macros. - Added `dt_fixed`, `rel_tol`, and `abs_tol` options to phasor dynamics solver JSON files and renamed the `dt` option to `dt_monitor`. +- Added EMT model and operator documentation. ## v0.1 diff --git a/GridKit/Model/EMT/Bus/README.md b/GridKit/Model/EMT/Bus/README.md index 77c884144..c453f9028 100644 --- a/GridKit/Model/EMT/Bus/README.md +++ b/GridKit/Model/EMT/Bus/README.md @@ -1,14 +1,36 @@ # Bus Model -`Bus` represents a three-phase bus in instantaneous abc coordinates. The -bus voltages are differential variables, and the model equations enforce -three-phase current balance at the bus. +`Bus` represents an $N$-phase bus in instantaneous phase coordinates. It owns +the differential bus voltage and contributes the current-balance residual to +the assembled DAE. $\mathcal{E}$ denotes the set of connected devices. + +## Block Diagram + +![Bus model block diagram](../../../../docs/Figures/EMT/Bus/diagram.png) + +Figure 1: Bus model ## Model Parameters +Symbol | Units | JSON | Description | Note +------ | ----- | ---- | ----------- | ---- +$N$ | [-] | `N` | Number of phases | Required, positive integer + +### Parameter Validation + +```math +N \in \mathbb{Z}_{>0} +``` + +### Derived Parameters + +None. + +## Submodels + None. -## Model Derived Parameters +### Submodel Validation None. @@ -18,9 +40,9 @@ None. #### Differential -Symbol | Units | Description | Note ----------|-------|--------------------|-------------------------------- -$\mathbf{v}$ | [V] | Bus voltage vector | $\mathbf{v} = [v_a, v_b, v_c]^T \in \mathbb{R}^3$ +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{v}$ | [V] | Bus voltage vector | $\mathbf{v} \in \mathbb{R}^N$ #### Algebraic @@ -36,55 +58,67 @@ None. None. +## Model Ports + +Symbol | Port | Type | Units | Description | Note +------ | ---- | ---- | ----- | ----------- | ---- +$\mathbf{i}_e$ | `i` | Input | [A] | Current from connected device $e$ | One port per $e \in \mathcal{E}$, $\mathbf{i}_e \in \mathbb{R}^N$ +$\mathbf{v}$ | `v` | Output | [V] | Bus voltage supplied to connected devices | $\mathbf{v} \in \mathbb{R}^N$ + ## Model Equations ### Differential Equations -An explicit representation for $\dot{\mathbf{v}}$ is not used because -the effective shunt admittances depend on connected components and are not -known at the bus level. The implicit DAE solver operates directly on -the accumulated KCL residual: - -``` math -\begin{aligned} -0 &= \sum_{e \in \mathcal{E}} \mathbf{i}^\text{inj}_e -\end{aligned} +```math +0 = \sum_{e \in \mathcal{E}} \mathbf{i}_e ``` -where $\mathbf{i}^\text{inj}_e$ is the vector of phase-current injections -of connected component $e$ into the bus, which are a function of the bus voltage and bus voltage derivative. - ### Algebraic Equations None. +### Wiring + +None. + ## Initialization -For a balanced three-phase initialization derived from the phasor voltage -$V = |V| \angle \phi$ and nominal angular frequency $\omega_0 = 2 \pi f_0$, +### Input Initialization + +```math +\mathbf{I}_e + \leftarrow \text{connected-device RMS current phasor}, + \quad e \in \mathcal{E}. +``` + +### Internal Initialization -``` math -\mathbf{v}(0) = \sqrt{2}\,|V| -\begin{bmatrix} - \cos(\phi) \\ - \cos(\phi - \tfrac{2\pi}{3}) \\ - \cos(\phi + \tfrac{2\pi}{3}) -\end{bmatrix} +The assembled harmonic network provides the bus-voltage phasor and satisfies +current balance: + +```math +\mathbf{V} \leftarrow \text{solved bus RMS voltage phasor}, +\qquad +\sum_{e \in \mathcal{E}}\mathbf{I}_e=\mathbf{0}. ``` -and +At $t=0$, -``` math -\dot{\mathbf{v}}(0) = -\sqrt{2}\,|V|\,\omega_0 -\begin{bmatrix} - \sin(\phi) \\ - \sin(\phi - \tfrac{2\pi}{3}) \\ - \sin(\phi + \tfrac{2\pi}{3}) -\end{bmatrix} +```math +\begin{aligned} +\mathbf{v} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}) \\ +\dfrac{\mathrm{d}\mathbf{v}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}). +\end{aligned} ``` -## Model Outputs +### Output Initialization + +None. -Phase voltages $v_a$, $v_b$, and $v_c$ are monitorable model outputs. +## Monitors -Phase-voltage derivatives $\dot{v}_a$, $\dot{v}_b$, and $\dot{v}_c$ are also available as monitorable outputs. +Monitor | Units | Description | Note +------- | ----- | ----------- | ---- +`v` | [V] | Bus voltage | $\mathbf{v} \in \mathbb{R}^N$ diff --git a/GridKit/Model/EMT/Component/Branch/BranchLumpedConstant/README.md b/GridKit/Model/EMT/Component/Branch/BranchLumpedConstant/README.md deleted file mode 100644 index 0ec665ed2..000000000 --- a/GridKit/Model/EMT/Component/Branch/BranchLumpedConstant/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# BranchLumpedConstant Model - -`BranchLumpedConstant` represents a lumped-parameter EMT transmission line. -The nominal $\pi$-model is obtained by spatially discretizing the telegrapher equations over -a segment of length $\Delta x$, with a half shunt placed at each port. -Series current $\mathbf{i}$ is directed from bus 1 to bus 2. Bus residual -current injections are positive into buses. All electrical parameter matrices -are $3 \times 3$ and capture self and mutual coupling between phases. - -![](../../../../../../docs/Figures/EMT/lumped_constant_diagram.svg) - -Figure 1: Lumped constant EMT branch model - -## Model Parameters - -Symbol | Units | Description | Note ------------------|----------------|------------------------------------------|--------------------------------- -$\mathbf{R}'$ | [$\Omega$/m] | Series resistance matrix per unit length | $\mathbb{R}^{3 \times 3}$ -$\mathbf{L}'$ | [H/m] | Series inductance matrix per unit length | $\mathbb{R}^{3 \times 3}$ -$\mathbf{G}'$ | [S/m] | Shunt conductance matrix per unit length | $\mathbb{R}^{3 \times 3}$ -$\mathbf{C}'$ | [F/m] | Shunt capacitance matrix per unit length | $\mathbb{R}^{3 \times 3}$ -$\Delta x$ | [m] | Line segment length | $\mathbb{R}$ - -## Model Derived Parameters - -``` math -\begin{aligned} - \mathbf{R} &= \mathbf{R}'\Delta x & \mathbf{G} &= \mathbf{G}'\Delta x \\ - \mathbf{L} &= \mathbf{L}'\Delta x & \mathbf{C} &= \mathbf{C}'\Delta x -\end{aligned} -``` - -## Model Variables - -### Internal Variables - -#### Differential - -Symbol | Units | Description | Note ------------------|--------|-----------------------|--------------------------------- -$\mathbf{i}$ | [A] | Series branch current, directed bus 1 to bus 2 | $\mathbf{i} = [i_a, i_b, i_c]^T \in \mathbb{R}^3$ - -#### Algebraic - -None. - -### External Variables - -External variables enter component model equations but are owned by -other components. The EMT bus at each port owns the voltage -variable and provides the equation needed to have a balanced system -of equations. - -#### Differential - -Symbol | Units | Description | Note ------------------|--------|--------------------------|------------------ -$\mathbf{v}_1$ | [V] | Port voltage at bus 1, owned by bus 1 | $\mathbf{v}_1 = [v_{1,a}, v_{1,b}, v_{1,c}]^T \in \mathbb{R}^3$ -$\mathbf{v}_2$ | [V] | Port voltage at bus 2, owned by bus 2 | $\mathbf{v}_2 = [v_{2,a}, v_{2,b}, v_{2,c}]^T \in \mathbb{R}^3$ - -#### Algebraic - -None. - -## Model Equations - -### Differential Equations - - -``` math -0 = \mathbf{R}\,\mathbf{i} + \mathbf{L}\dot{\mathbf{i}} + \mathbf{v}_2 - \mathbf{v}_1 -``` - -### Algebraic Equations - -None. - -### Bus Residual Contributions - -The lumped line contributes to the KCL residual at each port bus. -Each expression is accumulated into the owning bus residual. - -``` math -\mathbf{i}^\text{inj}_1 := - \dfrac{\mathbf{G}}{2}\,\mathbf{v}_1 - \dfrac{\mathbf{C}}{2}\,\dot{\mathbf{v}}_1 - \mathbf{i} -``` - -``` math -\mathbf{i}^\text{inj}_2 := - \dfrac{\mathbf{G}}{2}\,\mathbf{v}_2 - \dfrac{\mathbf{C}}{2}\,\dot{\mathbf{v}}_2 + \mathbf{i} -``` - -## Initialization - -The initialization assumes a balanced three-phase system. Given bus -voltages $\mathbf{v}_1(0)$, $\mathbf{v}_2(0)$ and their time -derivatives $\dot{\mathbf{v}}_1(0)$, $\dot{\mathbf{v}}_2(0)$ from -the EMT bus, and the power flow phasor series current -$I = |I| \angle \theta$, the initial series current is: - -``` math -\mathbf{i}(0) = \sqrt{2}\,|I| -\begin{bmatrix} - \cos(\theta) \\ - \cos(\theta - \tfrac{2\pi}{3}) \\ - \cos(\theta + \tfrac{2\pi}{3}) -\end{bmatrix} -``` - -The initial derivative is then given by the series branch equation for -DAE consistency: - -``` math -\dot{\mathbf{i}}(0) = \mathbf{L}^{-1}\left(\mathbf{v}_1(0) - \mathbf{v}_2(0) - \mathbf{R}\,\mathbf{i}(0)\right) -``` - -## Model Outputs - -Candidate monitorable outputs include the series branch current components -$i_a$, $i_b$, and $i_c$. - -Port current injection expressions are documented above as -$\mathbf{i}^\text{inj}_1$ and $\mathbf{i}^\text{inj}_2$. diff --git a/GridKit/Model/EMT/Component/Branch/README.md b/GridKit/Model/EMT/Component/Branch/README.md deleted file mode 100644 index 2c61d4bf5..000000000 --- a/GridKit/Model/EMT/Component/Branch/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Branch Model - -## Introduction - -EMT branch models represent three-phase network connections between buses in instantaneous abc coordinates. - -## Types - -### Lumped Parameter - -Lumped transmission line models approximate the branch with finite network elements (sometimes referred to as the $\pi$-model). GridKit currently only implements constant parameter. - -- `BranchLumpedConstant` (See [BranchLumpedConstant](BranchLumpedConstant/README.md)) -- `BranchLumpedFrequencyDependent` - -### Distributed Parameter - -Distributed transmission line models preserve traveling-wave propagation and delay. GridKit cannot implement these until model internal signal delays are supported. - -- `BranchDistributedConstant` -- `BranchDistributedFrequencyDependent` diff --git a/GridKit/Model/EMT/Component/Line/LineDistributed/README.md b/GridKit/Model/EMT/Component/Line/LineDistributed/README.md new file mode 100644 index 000000000..519b646ed --- /dev/null +++ b/GridKit/Model/EMT/Component/Line/LineDistributed/README.md @@ -0,0 +1,275 @@ +# LineDistributed Model + +`LineDistributed` represents an $N$-phase, $K$-conductor distributed EMT line. + +## Block Diagram + +![LineDistributed model block diagram](../../../../../../docs/Figures/EMT/LineDistributed/diagram.png) + +Figure 1: LineDistributed model + +The conductor-to-phase mappings are shown in the equations and omitted from +the diagram for clarity. + +## Model Parameters + +Define the phase- and conductor-index sets + +```math +\mathcal{N} = \{1,\ldots,N\}, +\qquad +\mathcal{K} = \{1,\ldots,K\}. +``` + +Symbol | Units | JSON | Description | Note +------ | ----- | ---- | ----------- | ---- +$N$ | [-] | `N` | Number of phases | Required, positive integer +$K$ | [-] | `K` | Number of conductors | Required, positive integer +$\mathbf{c}$ | [-] | `conductors` | Conductor phase-index list | $\mathbf{c} \in \mathcal{N}^K$ + +### Parameter Validation + +```math +\begin{aligned} +N &\in \mathbb{Z}_{>0} \\ +K &\in \mathbb{Z}_{>0} \\ +\mathbf{c} &\in \mathcal{N}^K \\ +\{c_k \mid k \in \mathcal{K}\} &= \mathcal{N} +\end{aligned} +``` + +### Derived Parameters + +```math +P_{\phi,nk} = +\begin{cases} +1, & n = c_k \\ +0, & n \ne c_k +\end{cases}, +\quad n \in \mathcal{N},\quad k \in \mathcal{K} +``` + +## Submodels + +Symbol | Description | Type | Order | JSON | Inputs | Outputs +------ | ----------- | ---- | ----- | ---- | ------ | ------- +$\mathbf{y}_1^\mathrm{c}$ | Characteristic admittance at terminal 1 | [VectorFit](../../../Operators/Rational/VectorFit/README.md) | $KQ_{\mathbf{y}^\mathrm{c}}$ | `Yc` | $\mathbb{R}^K$ | $\mathbb{R}^K$ +$\mathbf{y}_2^\mathrm{c}$ | Characteristic admittance at terminal 2 | [VectorFit](../../../Operators/Rational/VectorFit/README.md) | $KQ_{\mathbf{y}^\mathrm{c}}$ | `Yc` | $\mathbb{R}^K$ | $\mathbb{R}^K$ +$\mathbf{h}_{21}$ | Propagation from terminal 2 to terminal 1 | [Propagation](../../../Operators/Shift/Propagation/README.md) | Composite | `H` | $\mathbb{R}^K$ | $\mathbb{R}^K$ +$\mathbf{h}_{12}$ | Propagation from terminal 1 to terminal 2 | [Propagation](../../../Operators/Shift/Propagation/README.md) | Composite | `H` | $\mathbb{R}^K$ | $\mathbb{R}^K$ + +`Yc` and `H` each provide one coefficient set. The model assumes a reciprocal +uniform line, so + +```math +\mathbf{Y}_1^{\mathrm{c}}(s)=\mathbf{Y}_2^{\mathrm{c}}(s), +\qquad +\mathbf{H}_{12}(s)=\mathbf{H}_{21}(s). +``` + +The two terminal-admittance instances maintain independent states, and the two +directional propagation instances maintain independent states and histories. + +### Submodel Validation + +The characteristic-admittance fits must be stable, proper, and positive real. +Together with the propagation fits, they must produce a passive line model. + +## Model Variables + +### Internal Variables + +#### Differential + +None. + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{i}_1^\mathrm{ref}$ | [A] | Reflected current at terminal 1 | $\mathbf{i}_1^\mathrm{ref} \in \mathbb{R}^K$ +$\mathbf{i}_2^\mathrm{ref}$ | [A] | Reflected current at terminal 2 | $\mathbf{i}_2^\mathrm{ref} \in \mathbb{R}^K$ + +### External Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{v}_1$ | [V] | Terminal 1 voltage owned by EMT bus | $\mathbf{v}_1 \in \mathbb{R}^N$ +$\mathbf{v}_2$ | [V] | Terminal 2 voltage owned by EMT bus | $\mathbf{v}_2 \in \mathbb{R}^N$ + +#### Algebraic + +None. + +## Model Ports + +Symbol | Port | Type | Units | Description | Note +------ | ---- | ---- | ----- | ----------- | ---- +$\mathbf{v}_1$ | `v1` | Input | [V] | Terminal 1 bus voltage | $\mathbf{v}_1 \in \mathbb{R}^N$ +$\mathbf{v}_2$ | `v2` | Input | [V] | Terminal 2 bus voltage | $\mathbf{v}_2 \in \mathbb{R}^N$ +$\mathbf{i}_1$ | `i1` | Output | [A] | Current injection at terminal 1 | $\mathbf{i}_1 \in \mathbb{R}^N$ +$\mathbf{i}_2$ | `i2` | Output | [A] | Current injection at terminal 2 | $\mathbf{i}_2 \in \mathbb{R}^N$ + +## Model Equations + +### Differential Equations + +None. + +### Algebraic Equations + +The residuals use the wiring signals defined below. + +```math +\begin{aligned} +0 &= -\mathbf{i}_1^\mathrm{ref} + + 2\mathbf{i}_1^\mathrm{c} + - \mathbf{i}_1^\mathrm{inc} \\ +0 &= -\mathbf{i}_2^\mathrm{ref} + + 2\mathbf{i}_2^\mathrm{c} + - \mathbf{i}_2^\mathrm{inc} +\end{aligned} +``` + +### Wiring + +```math +\begin{aligned} +\mathbf{i}_1^\mathrm{c} &\leftarrow + \mathbf{y}_1^\mathrm{c}[\mathbf{P}_\phi^\mathsf T\mathbf{v}_1] \\ +\mathbf{i}_2^\mathrm{c} &\leftarrow + \mathbf{y}_2^\mathrm{c}[\mathbf{P}_\phi^\mathsf T\mathbf{v}_2] \\ +\mathbf{i}_1^\mathrm{inc} &\leftarrow + \mathbf{h}_{21}[\mathbf{i}_2^\mathrm{ref}] \\ +\mathbf{i}_2^\mathrm{inc} &\leftarrow + \mathbf{h}_{12}[\mathbf{i}_1^\mathrm{ref}] \\ +\mathbf{i}_1 &\leftarrow + \mathbf{P}_\phi(\mathbf{i}_1^\mathrm{inc}-\mathbf{i}_1^\mathrm{c}) \\ +\mathbf{i}_2 &\leftarrow + \mathbf{P}_\phi(\mathbf{i}_2^\mathrm{inc}-\mathbf{i}_2^\mathrm{c}) +\end{aligned} +``` + +## Initialization + +### Input Initialization + +```math +\begin{aligned} +\mathbf{V}_r + &\leftarrow \text{solved terminal RMS voltage phasor} \\ +\mathbf{v}_r + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}_r) \\ +\dfrac{\mathrm{d}\mathbf{v}_r}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}_r), + \quad r \in \{1,2\}. +\end{aligned} +``` + +### Internal Initialization + +The internal current phasors satisfy + +```math +\begin{aligned} +\mathbf{I}_r^\mathrm{c} + &= \mathbf{Y}_r^\mathrm{c}(s_0) + \mathbf{P}_\phi^\mathsf T\mathbf{V}_r, + \quad r \in \{1,2\} \\ +\begin{bmatrix} +\mathbf{I}_K & \mathbf{H}_{21}(s_0) \\ +\mathbf{H}_{12}(s_0) & \mathbf{I}_K +\end{bmatrix} +\begin{bmatrix} +\mathbf{I}_1^\mathrm{ref} \\ +\mathbf{I}_2^\mathrm{ref} +\end{bmatrix} + &= 2 +\begin{bmatrix} +\mathbf{I}_1^\mathrm{c} \\ +\mathbf{I}_2^\mathrm{c} +\end{bmatrix} \\ +\mathbf{I}_1^\mathrm{inc} + &= \mathbf{H}_{21}(s_0)\mathbf{I}_2^\mathrm{ref} \\ +\mathbf{I}_2^\mathrm{inc} + &= \mathbf{H}_{12}(s_0)\mathbf{I}_1^\mathrm{ref}. +\end{aligned} +``` + +The block matrix must be nonsingular. The characteristic-admittance submodels +initialize from $\mathbf{P}_\phi^\mathsf T\mathbf{V}_r$; $\mathbf{h}_{21}$ and +$\mathbf{h}_{12}$ initialize from $\mathbf{I}_2^\mathrm{ref}$ and +$\mathbf{I}_1^\mathrm{ref}$, respectively. At $t=0$, the reflected currents +initialize as + +```math +\begin{aligned} +\mathbf{i}_r^\mathrm{ref} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}_r^\mathrm{ref}) \\ +\dfrac{\mathrm{d}\mathbf{i}_r^\mathrm{ref}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}_r^\mathrm{ref}), + \quad r \in \{1,2\}. +\end{aligned} +``` + +### Output Initialization + +```math +\begin{aligned} +\mathbf{I}_r + &= \mathbf{P}_\phi(\mathbf{I}_r^\mathrm{inc}-\mathbf{I}_r^\mathrm{c}) \\ +\mathbf{i}_r + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}_r) \\ +\dfrac{\mathrm{d}\mathbf{i}_r}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}_r), + \quad r \in \{1,2\}. +\end{aligned} +``` + +## Monitors + +Monitor | Units | Description | Note +------- | ----- | ----------- | ---- +`i_c1` | [A] | Characteristic-admittance current at terminal 1 | $\mathbf{i}_1^\mathrm{c} \in \mathbb{R}^K$ +`i_c2` | [A] | Characteristic-admittance current at terminal 2 | $\mathbf{i}_2^\mathrm{c} \in \mathbb{R}^K$ +`i_inc1` | [A] | Incident current at terminal 1 | $\mathbf{i}_1^\mathrm{inc} \in \mathbb{R}^K$ +`i_inc2` | [A] | Incident current at terminal 2 | $\mathbf{i}_2^\mathrm{inc} \in \mathbb{R}^K$ + +## Development + +The initial three-phase formulation takes $N=K=3$ and +$\mathbf{P}_\phi=\mathbf{I}_3$. + +### Algebraic Equations + +```math +\begin{aligned} +0 &= -\mathbf{i}_1^\mathrm{ref} + + 2\mathbf{i}_1^\mathrm{c} + - \mathbf{i}_1^\mathrm{inc} \\ +0 &= -\mathbf{i}_2^\mathrm{ref} + + 2\mathbf{i}_2^\mathrm{c} + - \mathbf{i}_2^\mathrm{inc} +\end{aligned} +``` + +### Wiring + +```math +\begin{aligned} +\mathbf{i}_1^\mathrm{c} + &\leftarrow \mathbf{y}_1^\mathrm{c}[\mathbf{v}_1] \\ +\mathbf{i}_2^\mathrm{c} + &\leftarrow \mathbf{y}_2^\mathrm{c}[\mathbf{v}_2] \\ +\mathbf{i}_1^\mathrm{inc} + &\leftarrow \mathbf{h}_{21}[\mathbf{i}_2^\mathrm{ref}] \\ +\mathbf{i}_2^\mathrm{inc} + &\leftarrow \mathbf{h}_{12}[\mathbf{i}_1^\mathrm{ref}] \\ +\mathbf{i}_1 + &\leftarrow \mathbf{i}_1^\mathrm{inc}-\mathbf{i}_1^\mathrm{c} \\ +\mathbf{i}_2 + &\leftarrow \mathbf{i}_2^\mathrm{inc}-\mathbf{i}_2^\mathrm{c} +\end{aligned} +``` diff --git a/GridKit/Model/EMT/Component/Line/LineLumped/README.md b/GridKit/Model/EMT/Component/Line/LineLumped/README.md new file mode 100644 index 000000000..467038e80 --- /dev/null +++ b/GridKit/Model/EMT/Component/Line/LineLumped/README.md @@ -0,0 +1,259 @@ +# LineLumped Model + +`LineLumped` represents an $N$-phase, $K$-conductor lumped EMT line over length +$\Delta x$. Series current $\mathbf{i}_{12}$ is directed from terminal 1 to +terminal 2. + +## Block Diagram + +![LineLumped model block diagram](../../../../../../docs/Figures/EMT/LineLumped/diagram.png) + +Figure 1: LineLumped model + +The conductor-to-phase mappings are shown in the equations and omitted from +the diagram for clarity. + +## Model Parameters + +Define the phase- and conductor-index sets + +```math +\mathcal{N} = \{1,\ldots,N\}, +\qquad +\mathcal{K} = \{1,\ldots,K\}. +``` + +Symbol | Units | JSON | Description | Note +------ | ----- | ---- | ----------- | ---- +$N$ | [-] | `N` | Number of phases | Required, positive integer +$K$ | [-] | `K` | Number of conductors | Required, positive integer +$\mathbf{c}$ | [-] | `conductors` | Conductor phase-index list | $\mathbf{c} \in \mathcal{N}^K$ +$\Delta x$ | [m] | `dx` | Line segment length | Required, positive + +### Parameter Validation + +```math +\begin{aligned} +N &\in \mathbb{Z}_{>0} \\ +K &\in \mathbb{Z}_{>0} \\ +\mathbf{c} &\in \mathcal{N}^K \\ +\{c_k \mid k \in \mathcal{K}\} &= \mathcal{N} \\ +\Delta x &> 0 +\end{aligned} +``` + +### Derived Parameters + +```math +P_{\phi,nk} = +\begin{cases} +1, & n = c_k \\ +0, & n \ne c_k +\end{cases}, +\quad n \in \mathcal{N},\quad k \in \mathcal{K} +``` + +## Submodels + +Symbol | Description | Type | Order | JSON | Inputs | Outputs +------ | ----------- | ---- | ----- | ---- | ------ | ------- +$\mathbf{z}$ | Per-unit-length series impedance | [VectorFit](../../../Operators/Rational/VectorFit/README.md) | $KQ_{\mathbf{z}}$ | `Zp` | $\mathbb{R}^K$ | $\mathbb{R}^K$ +$\mathbf{y}_1$ | Per-unit-length shunt admittance at terminal 1 | [VectorFit](../../../Operators/Rational/VectorFit/README.md) | $KQ_{\mathbf{y}}$ | `Yp` | $\mathbb{R}^K$ | $\mathbb{R}^K$ +$\mathbf{y}_2$ | Per-unit-length shunt admittance at terminal 2 | [VectorFit](../../../Operators/Rational/VectorFit/README.md) | $KQ_{\mathbf{y}}$ | `Yp` | $\mathbb{R}^K$ | $\mathbb{R}^K$ + +`Yp` provides one coefficient set; the two terminal instances maintain +independent states. + +### Submodel Validation + +```math +\mathrm{rank}(\mathbf{E}^{\mathbf{z}}) = K +``` + +## Model Variables + +### Internal Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{i}_{12}$ | [A] | Series current from terminal 1 to terminal 2 | $\mathbf{i}_{12} \in \mathbb{R}^K$ + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{i}_1^\mathrm{sh}$ | [A] | Shunt current at terminal 1 | $\mathbf{i}_1^\mathrm{sh} \in \mathbb{R}^K$ +$\mathbf{i}_2^\mathrm{sh}$ | [A] | Shunt current at terminal 2 | $\mathbf{i}_2^\mathrm{sh} \in \mathbb{R}^K$ + +### External Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{v}_1$ | [V] | Terminal 1 voltage owned by EMT bus | $\mathbf{v}_1 \in \mathbb{R}^N$ +$\mathbf{v}_2$ | [V] | Terminal 2 voltage owned by EMT bus | $\mathbf{v}_2 \in \mathbb{R}^N$ + +#### Algebraic + +None. + +## Model Ports + +Symbol | Port | Type | Units | Description | Note +------ | ---- | ---- | ----- | ----------- | ---- +$\mathbf{v}_1$ | `v1` | Input | [V] | Terminal 1 bus voltage | $\mathbf{v}_1 \in \mathbb{R}^N$ +$\mathbf{v}_2$ | `v2` | Input | [V] | Terminal 2 bus voltage | $\mathbf{v}_2 \in \mathbb{R}^N$ +$\mathbf{i}_1$ | `i1` | Output | [A] | Current injection at terminal 1 | $\mathbf{i}_1 \in \mathbb{R}^N$ +$\mathbf{i}_2$ | `i2` | Output | [A] | Current injection at terminal 2 | $\mathbf{i}_2 \in \mathbb{R}^N$ + +## Model Equations + +### Differential Equations + +```math +0 = \Delta x\,\mathbf{z}[\mathbf{i}_{12}] + + \mathbf{P}_\phi^\mathsf T(\mathbf{v}_2-\mathbf{v}_1) +``` + +### Algebraic Equations + +```math +\begin{aligned} +0 &= \Delta x\,\mathbf{y}_2[\mathbf{P}_\phi^\mathsf T\mathbf{v}_2] + + 2\mathbf{i}_2^\mathrm{sh} \\ +0 &= \Delta x\,\mathbf{y}_1[\mathbf{P}_\phi^\mathsf T\mathbf{v}_1] + + 2\mathbf{i}_1^\mathrm{sh} +\end{aligned} +``` + +### Wiring + +```math +\begin{aligned} +\mathbf{i}_1 &\leftarrow + \mathbf{P}_\phi\left( + \mathbf{i}_1^\mathrm{sh} + - \mathbf{i}_{12} + \right) \\ +\mathbf{i}_2 &\leftarrow + \mathbf{P}_\phi\left( + \mathbf{i}_2^\mathrm{sh} + + \mathbf{i}_{12} + \right) +\end{aligned} +``` + +## Initialization + +### Input Initialization + +```math +\begin{aligned} +\mathbf{V}_r + &\leftarrow \text{solved terminal RMS voltage phasor} \\ +\mathbf{v}_r + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}_r) \\ +\dfrac{\mathrm{d}\mathbf{v}_r}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}_r), + \quad r \in \{1,2\}. +\end{aligned} +``` + +### Internal Initialization + +The current phasors satisfy + +```math +\begin{aligned} +\mathbf{0} + &= \Delta x\,\mathbf{Z}(s_0)\mathbf{I}_{12} + + \mathbf{P}_\phi^\mathsf T(\mathbf{V}_2-\mathbf{V}_1) \\ +\mathbf{I}_r^\mathrm{sh} + &= -\dfrac{\Delta x}{2}\mathbf{Y}(s_0) + \mathbf{P}_\phi^\mathsf T\mathbf{V}_r, + \quad r \in \{1,2\}. +\end{aligned} +``` + +Initialization requires $\mathbf{Z}(s_0)$ to be nonsingular. The series- +impedance submodel initializes from $\mathbf{I}_{12}$, and each shunt- +admittance submodel initializes from +$\mathbf{P}_\phi^\mathsf T\mathbf{V}_r$. At $t=0$, + +```math +\begin{aligned} +\mathbf{i}_{12} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}_{12}) \\ +\dfrac{\mathrm{d}\mathbf{i}_{12}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}_{12}) \\ +\mathbf{i}_r^\mathrm{sh} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}_r^\mathrm{sh}) \\ +\dfrac{\mathrm{d}\mathbf{i}_r^\mathrm{sh}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}_r^\mathrm{sh}), + \quad r \in \{1,2\}. +\end{aligned} +``` + +### Output Initialization + +```math +\begin{aligned} +\mathbf{I}_1 + &= \mathbf{P}_\phi(\mathbf{I}_1^\mathrm{sh}-\mathbf{I}_{12}) \\ +\mathbf{I}_2 + &= \mathbf{P}_\phi(\mathbf{I}_2^\mathrm{sh}+\mathbf{I}_{12}) \\ +\mathbf{i}_r + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}_r) \\ +\dfrac{\mathrm{d}\mathbf{i}_r}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}_r), + \quad r \in \{1,2\}. +\end{aligned} +``` + +## Monitors + +Monitor | Units | Description | Note +------- | ----- | ----------- | ---- +`i12` | [A] | Series current from terminal 1 to terminal 2 | $\mathbf{i}_{12} \in \mathbb{R}^K$ +`i_sh1` | [A] | Shunt current at terminal 1 | $\mathbf{i}_1^\mathrm{sh} \in \mathbb{R}^K$ +`i_sh2` | [A] | Shunt current at terminal 2 | $\mathbf{i}_2^\mathrm{sh} \in \mathbb{R}^K$ + +## Development + +The initial three-phase formulation is a subset of the generalized formulation +above. + +### Derived Parameters + +```math +\begin{aligned} +\mathbf{R} &= \Delta x\,\mathbf{R}' \\ +\mathbf{L} &= \Delta x\,\mathbf{L}' \\ +\mathbf{G} &= \Delta x\,\mathbf{G}' \\ +\mathbf{C} &= \Delta x\,\mathbf{C}' +\end{aligned} +``` + +### Differential Equations + +```math +0 = \mathbf{R}\mathbf{i}_{12} + + \mathbf{L}\dfrac{\mathrm{d}\mathbf{i}_{12}}{\mathrm{d}t} + + \mathbf{v}_2-\mathbf{v}_1 +``` + +### Algebraic Equations + +```math +\begin{aligned} +0 &= \mathbf{G}\mathbf{v}_2 + + \mathbf{C}\dfrac{\mathrm{d}\mathbf{v}_2}{\mathrm{d}t} + + 2\mathbf{i}_2^\mathrm{sh} \\ +0 &= \mathbf{G}\mathbf{v}_1 + + \mathbf{C}\dfrac{\mathrm{d}\mathbf{v}_1}{\mathrm{d}t} + + 2\mathbf{i}_1^\mathrm{sh} +\end{aligned} +``` diff --git a/GridKit/Model/EMT/Component/Line/README.md b/GridKit/Model/EMT/Component/Line/README.md new file mode 100644 index 000000000..16280155f --- /dev/null +++ b/GridKit/Model/EMT/Component/Line/README.md @@ -0,0 +1,9 @@ +# Line Models + +EMT line models represent $N$-phase network connections between buses in +instantaneous phase coordinates. + +## Models + +- [LineLumped](LineLumped/README.md) +- [LineDistributed](LineDistributed/README.md) diff --git a/GridKit/Model/EMT/Component/Load/LoadZ/README.md b/GridKit/Model/EMT/Component/Load/LoadZ/README.md new file mode 100644 index 000000000..62b52ffcb --- /dev/null +++ b/GridKit/Model/EMT/Component/Load/LoadZ/README.md @@ -0,0 +1,154 @@ +# LoadZ Model + +`LoadZ` represents an $N$-phase impedance load. Current $\mathbf{i}$ is injected +from the load into the EMT bus. + +## Block Diagram + +![LoadZ model block diagram](../../../../../../docs/Figures/EMT/LoadZ/diagram.png) + +Figure 1: LoadZ model + +## Model Parameters + +Symbol | Units | JSON | Description | Note +------ | ----- | ---- | ----------- | ---- +$N$ | [-] | `N` | Number of phases | Required, positive integer + +### Parameter Validation + +```math +N \in \mathbb{Z}_{>0} +``` + +### Derived Parameters + +None. + +## Submodels + +Symbol | Description | Type | Order | JSON | Inputs | Outputs +------ | ----------- | ---- | ----- | ---- | ------ | ------- +$\mathbf{z}$ | Impedance | [VectorFit](../../../Operators/Rational/VectorFit/README.md) | $NQ_{\mathbf{z}}$ | `Z` | $\mathbb{R}^N$ | $\mathbb{R}^N$ + +### Submodel Validation + +The current is differential for a nonsingular linear coefficient and algebraic +when the coefficient is zero. Partially singular coefficients are not +supported. + +```math +\mathbf{E}^{\mathbf{z}}=\mathbf{0} +\qquad \text{or} \qquad +\mathrm{rank}(\mathbf{E}^{\mathbf{z}})=N. +``` + +## Model Variables + +### Internal Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{i}$ | [A] | Current injection from load into EMT bus | $\mathbf{i} \in \mathbb{R}^N$, $\mathrm{rank}(\mathbf{E}^{\mathbf{z}})=N$ + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{i}$ | [A] | Current injection from load into EMT bus | $\mathbf{i} \in \mathbb{R}^N$, $\mathbf{E}^{\mathbf{z}}=\mathbf{0}$ + +### External Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{v}$ | [V] | Bus voltage vector owned by EMT bus | $\mathbf{v} \in \mathbb{R}^N$ + +#### Algebraic + +None. + +## Model Ports + +Symbol | Port | Type | Units | Description | Note +------ | ---- | ---- | ----- | ----------- | ---- +$\mathbf{v}$ | `v` | Input | [V] | Bus voltage at load port | $\mathbf{v} \in \mathbb{R}^N$ +$\mathbf{i}$ | `i` | Output | [A] | Current injection at load port | $\mathbf{i} \in \mathbb{R}^N$ + +## Model Equations + +### Differential Equations + +For $\mathrm{rank}(\mathbf{E}^{\mathbf{z}})=N$, + +```math +0 = \mathbf{z}[\mathbf{i}] + \mathbf{v} +``` + +### Algebraic Equations + +For $\mathbf{E}^{\mathbf{z}}=\mathbf{0}$, the same residual is algebraic. + +### Wiring + +None. + +## Initialization + +### Input Initialization + +```math +\begin{aligned} +\mathbf{V} + &\leftarrow \text{solved terminal RMS voltage phasor} \\ +\mathbf{v} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}) \\ +\dfrac{\mathrm{d}\mathbf{v}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}). +\end{aligned} +``` + +### Internal Initialization + +```math +\mathbf{0}=\mathbf{Z}(s_0)\mathbf{I}+\mathbf{V}. +``` + +Initialization requires $\mathbf{Z}(s_0)$ to be nonsingular. The impedance +submodel initializes from $\mathbf{I}$. For either current classification, at +$t=0$, + +```math +\begin{aligned} +\mathbf{i} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}) \\ +\dfrac{\mathrm{d}\mathbf{i}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}). +\end{aligned} +``` + +### Output Initialization + +None. + +## Monitors + +Monitor | Units | Description | Note +------- | ----- | ----------- | ---- +`i` | [A] | Load current injection | $\mathbf{i} \in \mathbb{R}^N$ + +## Development + +The initial three-phase formulation uses resistance and inductance matrices. + +### Differential Equations + +```math +0 = +\mathbf{R}\mathbf{i} ++ \mathbf{L}\dfrac{\mathrm{d}\mathbf{i}}{\mathrm{d}t} ++ \mathbf{v} +``` diff --git a/GridKit/Model/EMT/Component/Load/README.md b/GridKit/Model/EMT/Component/Load/README.md new file mode 100644 index 000000000..d5f1c8415 --- /dev/null +++ b/GridKit/Model/EMT/Component/Load/README.md @@ -0,0 +1,7 @@ +# Load Models + +Load models use EMT bus voltages to determine current injections. + +## Models + +- [LoadZ](LoadZ/README.md) diff --git a/GridKit/Model/EMT/Component/LoadRL/README.md b/GridKit/Model/EMT/Component/LoadRL/README.md deleted file mode 100644 index e4cff5970..000000000 --- a/GridKit/Model/EMT/Component/LoadRL/README.md +++ /dev/null @@ -1,104 +0,0 @@ -# LoadRL Model - -`LoadRL` represents a three-phase RL load in instantaneous abc coordinates. -The load owns the three-phase differential current vector $\mathbf{i}$, -which is directed from the load into the bus. - -## Model Parameters - -Symbol | Units | Description | Note ---------|------------|----------------------------|-------------------------------- -$R_a$ | [$\Omega$] | Load resistance, phase a | -$R_b$ | [$\Omega$] | Load resistance, phase b | -$R_c$ | [$\Omega$] | Load resistance, phase c | -$L_a$ | [H] | Load inductance, phase a | -$L_b$ | [H] | Load inductance, phase b | -$L_c$ | [H] | Load inductance, phase c | - -## Model Derived Parameters - -``` math -\begin{aligned} - \mathbf{R} &= \operatorname{diag}(R_a, R_b, R_c) \\ - \mathbf{L} &= \operatorname{diag}(L_a, L_b, L_c) -\end{aligned} -``` - -## Model Variables - -### Internal Variables - -#### Differential - -Symbol | Units | Description | Note ---------------------|-------|------------------------------------------------|--------------------------------- -$\mathbf{i}$ | [A] | Load current vector, directed from load into bus | $\mathbf{i} = [i_a, i_b, i_c]^T \in \mathbb{R}^3$ - -#### Algebraic - -None. - -### External Variables - -External variables enter component model equations but are owned by -other components. The EMT bus at the load port owns the voltage -variable and provides the equation needed to have a balanced system -of equations. - -#### Differential - -Symbol | Units | Description | Note ------------------|-------|----------------------------------------------|--------------------------------- -$\mathbf{v}$ | [V] | Port voltage vector, owned by EMT bus | $\mathbf{v} = [v_a, v_b, v_c]^T \in \mathbb{R}^3$ - -#### Algebraic - -None. - -## Model Equations - -### Differential Equations - -``` math -0 = \mathbf{R}\,\mathbf{i} + \mathbf{L}\dot{\mathbf{i}} + \mathbf{v} -``` - -### Algebraic Equations - -None. - -### Bus Residual Contributions - -The RL load contributes to the KCL residual at its port bus. The -expression is accumulated into the owning bus residual. - -``` math -\mathbf{i}^\text{inj} := \mathbf{i} -``` - -## Initialization - -The initialization assumes a balanced three-phase system. Given the power -flow phasor load current $I = |I| \angle \theta$, the initial load -current is: - -``` math -\mathbf{i}(0) = \sqrt{2}\,|I| -\begin{bmatrix} - \cos(\theta) \\ - \cos(\theta - \tfrac{2\pi}{3}) \\ - \cos(\theta + \tfrac{2\pi}{3}) -\end{bmatrix} -``` - -The initial derivative is then given by the RL load equation for DAE -consistency: - -``` math -\dot{\mathbf{i}}(0) = -\mathbf{L}^{-1}\left(\mathbf{v}(0) + \mathbf{R}\,\mathbf{i}(0)\right) -``` - -## Model Outputs - -Candidate monitorable outputs include the load current components $i_a$, $i_b$, -and $i_c$ into the bus. diff --git a/GridKit/Model/EMT/Component/README.md b/GridKit/Model/EMT/Component/README.md index f394ca4e7..f92da8c85 100644 --- a/GridKit/Model/EMT/Component/README.md +++ b/GridKit/Model/EMT/Component/README.md @@ -1,18 +1,10 @@ # Component Models -This directory contains EMT component model notes for devices connected to EMT +This directory documents EMT component models for devices connected to EMT buses. -A component README should include: -1. Model parameters and derived parameters -2. Internal and external variables -3. Differential and algebraic equations -4. Bus residual contributions, when applicable -5. Initialization notes -6. Monitorable outputs +## Contents -## Types - -- `BranchLumpedConstant` (See [BranchLumpedConstant](Branch/BranchLumpedConstant/README.md)) -- `LoadRL` (See [LoadRL](LoadRL/README.md)) -- `VoltageSource` (See [VoltageSource](VoltageSource/README.md)) +- [Lines](Line/README.md) +- [Loads](Load/README.md) +- [Sources](Source/README.md) diff --git a/GridKit/Model/EMT/Component/Source/README.md b/GridKit/Model/EMT/Component/Source/README.md new file mode 100644 index 000000000..d2dc74fee --- /dev/null +++ b/GridKit/Model/EMT/Component/Source/README.md @@ -0,0 +1,7 @@ +# Source Models + +Source models prescribe EMT waveforms and inject currents into EMT buses. + +## Models + +- [VoltageSource](VoltageSource/README.md) diff --git a/GridKit/Model/EMT/Component/Source/VoltageSource/README.md b/GridKit/Model/EMT/Component/Source/VoltageSource/README.md new file mode 100644 index 000000000..1c25455d4 --- /dev/null +++ b/GridKit/Model/EMT/Component/Source/VoltageSource/README.md @@ -0,0 +1,172 @@ +# VoltageSource Model + +`VoltageSource` represents an $N$-phase sinusoidal EMT voltage source connected +to the EMT bus through terminal admittance. + +## Block Diagram + +![VoltageSource model block diagram](../../../../../../docs/Figures/EMT/VoltageSource/diagram.png) + +Figure 1: VoltageSource model + +## Model Parameters + +Symbol | Units | JSON | Description | Note +------ | ----- | ---- | ----------- | ---- +$N$ | [-] | `N` | Number of phases | Required, positive integer +$\mathbf{E}$ | [V] | `E` | Source voltage magnitudes | $\mathbf{E} \in \mathbb{R}_{\ge 0}^N$, RMS +$\boldsymbol{\phi}$ | [rad] | `phi` | Source phase offsets | $\boldsymbol{\phi} \in \mathbb{R}^N$ +$\omega$ | [rad/s] | `omega` | Source angular frequency | Required, positive + +### Parameter Validation + +```math +\begin{aligned} +N &\in \mathbb{Z}_{>0} \\ +\mathbf{E} &\in \mathbb{R}_{\ge 0}^N \\ +\boldsymbol{\phi} &\in \mathbb{R}^N \\ +\omega &> 0 +\end{aligned} +``` + +### Derived Parameters + +Define the phase-index set + +```math +\mathcal{N} = \{1,\ldots,N\}. +``` + +## Submodels + +Symbol | Description | Type | Order | JSON | Inputs | Outputs +------ | ----------- | ---- | ----- | ---- | ------ | ------- +$\mathbf{y}$ | Terminal admittance | [VectorFit](../../../Operators/Rational/VectorFit/README.md) | $NQ_{\mathbf{y}}$ | `Y` | $\mathbb{R}^N$ | $\mathbb{R}^N$ + +### Submodel Validation + +None. + +## Model Variables + +### Internal Variables + +#### Differential + +None. + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{e}$ | [V] | Source voltage vector | $\mathbf{e} \in \mathbb{R}^N$ + +### External Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{v}$ | [V] | Bus voltage vector owned by EMT bus | $\mathbf{v} \in \mathbb{R}^N$ + +#### Algebraic + +None. + +## Model Ports + +Symbol | Port | Type | Units | Description | Note +------ | ---- | ---- | ----- | ----------- | ---- +$\mathbf{v}$ | `v` | Input | [V] | Bus voltage at source port | $\mathbf{v} \in \mathbb{R}^N$ +$\mathbf{i}$ | `i` | Output | [A] | Current injection at source port | $\mathbf{i} \in \mathbb{R}^N$ + +## Model Equations + +### Differential Equations + +None. + +### Algebraic Equations + +```math +0 = e_n - \sqrt{2}E_n\cos(\omega t + \phi_n), +\quad n \in \mathcal{N} +``` + +### Wiring + +```math +\mathbf{i} \leftarrow \mathbf{y}[\mathbf{e} - \mathbf{v}] +``` + +## Initialization + +### Input Initialization + +```math +\begin{aligned} +\mathbf{V} + &\leftarrow \text{solved terminal RMS voltage phasor} \\ +\mathbf{v} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}) \\ +\dfrac{\mathrm{d}\mathbf{v}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}). +\end{aligned} +``` + +### Internal Initialization + +Sinusoidal steady-state initialization requires $\omega=\omega_0$. Define the +source-voltage phasor by + +```math +V_n^\mathrm{s}=E_ne^{\mathrm{j}\phi_n}, +\quad n \in \mathcal{N}. +``` + +The terminal-admittance submodel initializes from +$\mathbf{V}^\mathrm{s}-\mathbf{V}$. At $t=0$, + +```math +\begin{aligned} +\mathbf{e} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}^\mathrm{s}) \\ +\dfrac{\mathrm{d}\mathbf{e}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}^\mathrm{s}). +\end{aligned} +``` + +### Output Initialization + +```math +\begin{aligned} +\mathbf{I} + &= \mathbf{Y}(s_0)(\mathbf{V}^\mathrm{s}-\mathbf{V}) \\ +\mathbf{i} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}) \\ +\dfrac{\mathrm{d}\mathbf{i}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}). +\end{aligned} +``` + +## Monitors + +Monitor | Units | Description | Note +------- | ----- | ----------- | ---- +`e` | [V] | Source voltage | $\mathbf{e} \in \mathbb{R}^N$ +`i` | [A] | Source current injection | $\mathbf{i} \in \mathbb{R}^N$ + +## Development + +The initial three-phase formulation realizes the terminal admittance as a +series resistance and inductance, with $\mathbf{i}$ as a differential variable. + +### Differential Equations + +```math +0 = +\mathbf{R}_\mathrm{s}\mathbf{i} ++ \mathbf{L}_\mathrm{s}\dfrac{\mathrm{d}\mathbf{i}}{\mathrm{d}t} ++ \mathbf{v} +- \mathbf{e} +``` diff --git a/GridKit/Model/EMT/Component/VoltageSource/README.md b/GridKit/Model/EMT/Component/VoltageSource/README.md deleted file mode 100644 index df6277ecf..000000000 --- a/GridKit/Model/EMT/Component/VoltageSource/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# VoltageSource Model - -`VoltageSource` represents a three-phase voltage source in instantaneous abc -coordinates. The source waveform is configurable by phase magnitude and phase -offset for each phase and is otherwise constant. Each source port is -connected to the EMT bus through a phase resistance. - -## Model Parameters - -Symbol | Units | Description | Note ---------------|------------|-------------------------------------|-------------------------------- -$E_a$ | [V] | Source voltage magnitude, phase a | RMS -$E_b$ | [V] | Source voltage magnitude, phase b | RMS -$E_c$ | [V] | Source voltage magnitude, phase c | RMS -$\phi_a$ | [rad] | Source phase offset, phase a | -$\phi_b$ | [rad] | Source phase offset, phase b | -$\phi_c$ | [rad] | Source phase offset, phase c | -$\omega_0$ | [rad/s] | Source angular frequency | -$R_a$ | [$\Omega$] | Terminal resistance, phase a | -$R_b$ | [$\Omega$] | Terminal resistance, phase b | -$R_c$ | [$\Omega$] | Terminal resistance, phase c | - -## Model Derived Parameters - -None. - -## Model Variables - -### Internal Variables - -#### Differential - -None. - -#### Algebraic - -None. - -### External Variables - -External variables enter component model equations but are owned by -other components. The EMT bus at the source port owns the voltage -variable and provides the equation needed to have a balanced system -of equations. - -#### Differential - -Symbol | Units | Description | Note ------------------|-------|----------------------------------------------|--------------------------------- -$\mathbf{v}$ | [V] | Port voltage vector, owned by EMT bus | $\mathbf{v} = [v_a, v_b, v_c]^T \in \mathbb{R}^3$ - -#### Algebraic - -None. - -## Model Equations - -### Differential Equations - -None. - -### Algebraic Equations - -None. - -### Bus Residual Contributions - -The source contributes current to the KCL residual at its port bus. -The injection vector is accumulated into the owning bus residual. Given source -angular frequency $\omega_0$, the source waveform is: - -``` math -\begin{aligned} -e_a(t) &= \sqrt{2}\,E_a\cos(\omega_0 t + \phi_a) \\ -e_b(t) &= \sqrt{2}\,E_b\cos(\omega_0 t + \phi_b) \\ -e_c(t) &= \sqrt{2}\,E_c\cos(\omega_0 t + \phi_c) -\end{aligned} -``` - -The current contribution is positive into the bus: - -``` math -\mathbf{i}^\text{inj} := -\begin{bmatrix} - \dfrac{e_a(t)-v_a}{R_a} \\ - \dfrac{e_b(t)-v_b}{R_b} \\ - \dfrac{e_c(t)-v_c}{R_c} -\end{bmatrix} -``` - -## Initialization - -No internal state is initialized. At $t = 0$, the source waveform is: - -``` math -\begin{aligned} -e_a(0) &= \sqrt{2}\,E_a\cos(\phi_a) \\ -e_b(0) &= \sqrt{2}\,E_b\cos(\phi_b) \\ -e_c(0) &= \sqrt{2}\,E_c\cos(\phi_c) -\end{aligned} -``` - -## Model Outputs - -Candidate monitorable outputs include the source waveform components -$e_a(t)$, $e_b(t)$, and $e_c(t)$. - -The port current injection expression is documented above as -$\mathbf{i}^\text{inj}$. diff --git a/GridKit/Model/EMT/Operators/README.md b/GridKit/Model/EMT/Operators/README.md new file mode 100644 index 000000000..e08ab60a1 --- /dev/null +++ b/GridKit/Model/EMT/Operators/README.md @@ -0,0 +1,8 @@ +# Operator Models + +Operator models are reusable EMT signal blocks used by component models. + +## Contents + +- [Rational operators](Rational/README.md) +- [Shift operators](Shift/README.md) diff --git a/GridKit/Model/EMT/Operators/Rational/README.md b/GridKit/Model/EMT/Operators/Rational/README.md new file mode 100644 index 000000000..6c2083af4 --- /dev/null +++ b/GridKit/Model/EMT/Operators/Rational/README.md @@ -0,0 +1,8 @@ +# Rational Operators + +Rational operators represent fitted transfer functions. + +## Models + +- [VectorFit](VectorFit/README.md) +- [StateSpace](StateSpace/README.md) diff --git a/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md b/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md new file mode 100644 index 000000000..a4e33b627 --- /dev/null +++ b/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md @@ -0,0 +1,265 @@ +# StateSpace Model + +`StateSpace` represents a vector-fitted matrix rational approximation with +real or complex poles and factorized residue terms. For pole count $Q$, define +the pole-index set + +```math +\mathcal{Q} = \{q \in \mathbb{Z}_{>0} \mid q \le Q\}. +``` + +Thus $\mathcal{Q}$ is empty when $Q=0$. + +Then + +```math +\mathbf{H}(s) \approx \mathbf{D} + s\mathbf{E} + + \mathbf{C}\dfrac{\mathbf{I}}{s\mathbf{I}-\mathbf{P}}\mathbf{B} +``` + +> [!NOTE] +> The consuming model classifies the input $\mathbf{u}$ as differential or +> algebraic. +> Algebraic input requires $\mathbf{E} = \mathbf{0}$. + +> [!NOTE] +> Each factorized term has residue +> $\mathbf{R}_q = \mathbf{C}_{:,q}\mathbf{B}_{q,:}$, so +> $\mathrm{rank}(\mathbf{R}_q) \le 1$. Terms with the same +> pole may be repeated. Their residues sum and can have higher rank. + +## Block Diagram + +![StateSpace rational-operator block diagram](../../../../../../docs/Figures/EMT/StateSpace/diagram.png) + +Figure 1: StateSpace model + +## Model Parameters + +For output dimension $N$, input dimension $K$, pole count $Q$, input units +$[u]$, and output units $[y]$: + +Symbol | Units | JSON | Description | Note +------ | ----- | ---- | ----------- | ---- +$\mathbf{D}$ | $[y]/[u]$ | `D` | Constant coefficient | $\mathbf{D} \in \mathbb{R}^{N \times K}$ +$\mathbf{E}$ | $\mathrm{s}[y]/[u]$ | `E` | Linear coefficient | $\mathbf{E} \in \mathbb{R}^{N \times K}$ +$\mathbf{p}$ | $[\mathrm{s}^{-1}]$ | `poles` | Poles | $\mathbf{p} \in \mathbb{C}^Q$ +$\mathbf{C}$ | $[y]/[u]$ | `C` | Output matrix | $\mathbf{C} \in \mathbb{C}^{N \times Q}$ +$\mathbf{B}$ | $[\mathrm{s}^{-1}]$ | `B` | Input matrix | $\mathbf{B} \in \mathbb{C}^{Q \times K}$ + +### Parameter Validation + +The input and output dimensions are positive integers, and the pole count is a +nonnegative integer. Let $\mathcal{Q}_\mathrm{r} \subseteq \mathcal{Q}$ contain +the real-pole indices and +$\mathcal{Q}_\mathrm{c} \subseteq \mathcal{Q}$ the first indices of the +nonreal conjugate pairs. Define their partner-index set as + +```math +\mathcal{Q}_\mathrm{c}^{+} + = \{q+1 \mid q \in \mathcal{Q}_\mathrm{c}\}. +``` + +The three sets $\mathcal{Q}_\mathrm{r}$, $\mathcal{Q}_\mathrm{c}$, and +$\mathcal{Q}_\mathrm{c}^{+}$ are pairwise disjoint and together contain every +pole index. Real poles have real factors, and each nonreal pole and its factors +are followed by their conjugates. + +```math +\begin{aligned} +N &\in \mathbb{Z}_{>0} \\ +K &\in \mathbb{Z}_{>0} \\ +Q &\in \mathbb{Z}_{\ge 0} \\ +\mathbf{E} &= \mathbf{0}, + \quad \text{for algebraic input} \\ +\mathcal{Q}_\mathrm{r} \cup \mathcal{Q}_\mathrm{c} + \cup \mathcal{Q}_\mathrm{c}^{+} + &= \mathcal{Q} \\ +p_q &\in \mathbb{R}, + \quad \mathbf{C}_{:,q} \in \mathbb{R}^N, + \quad \mathbf{B}_{q,:} \in \mathbb{R}^K, + \quad q \in \mathcal{Q}_\mathrm{r} \\ +p_{q+1} &= p_q^{\ast}, + \quad q \in \mathcal{Q}_\mathrm{c} \\ +\mathbf{C}_{:,q+1} &= \mathbf{C}_{:,q}^{\ast}, + \quad q \in \mathcal{Q}_\mathrm{c} \\ +\mathbf{B}_{q+1,:} &= \mathbf{B}_{q,:}^{\ast}, + \quad q \in \mathcal{Q}_\mathrm{c} +\end{aligned} +``` + +### Derived Parameters + +```math +\begin{aligned} +\mathbf{P} &= \mathrm{diag}(p_1,\ldots,p_Q) \\ +\mathbf{a} &= \mathrm{Re}(\mathbf{p}) \\ +\boldsymbol{\omega} &= \mathrm{Im}(\mathbf{p}) \\ +\mathbf{C}_{\mathrm{r}} &= \mathrm{Re}(\mathbf{C}) \\ +\mathbf{C}_{\mathrm{i}} &= \mathrm{Im}(\mathbf{C}) \\ +\mathbf{B}_{\mathrm{r}} &= \mathrm{Re}(\mathbf{B}) \\ +\mathbf{B}_{\mathrm{i}} &= \mathrm{Im}(\mathbf{B}) +\end{aligned} +``` + +## Submodels + +None. + +### Submodel Validation + +None. + +## Model Variables + +### Internal Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$w_q$ | $[u]$ | Real memory state | $w_q \in \mathbb{R}$, $q \in \mathcal{Q}_\mathrm{r} \cup \mathcal{Q}_\mathrm{c}$ +$v_q$ | $[u]$ | Imaginary memory state | $v_q \in \mathbb{R}$, $q \in \mathcal{Q}_\mathrm{c}$ + +The documented real realization has order $Q$. + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{y}$ | $[y]$ | Output vector | $\mathbf{y} \in \mathbb{R}^N$ + +### External Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{u}$ | $[u]$ | Input vector | Differential-input configuration, $\mathbf{u} \in \mathbb{R}^K$ + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{u}$ | $[u]$ | Input vector | Algebraic-input configuration, $\mathbf{u} \in \mathbb{R}^K$ + +## Model Ports + +Symbol | Port | Type | Units | Description | Note +------ | ---- | ---- | ----- | ----------- | ---- +$\mathbf{u}$ | `input` | Input | $[u]$ | Input vector port | $\mathbf{u} \in \mathbb{R}^K$ +$\mathbf{y}$ | `out` | Output | $[y]$ | Output vector port | $\mathbf{y} \in \mathbb{R}^N$ + +## Model Equations + +### Differential Equations + +```math +\begin{aligned} +0 &= -\dfrac{\mathrm{d}w_q}{\mathrm{d}t} + + a_qw_q+\mathbf{B}_{q,:}\mathbf{u}, + \quad q \in \mathcal{Q}_\mathrm{r} \\ +0 &= -\dfrac{\mathrm{d}w_q}{\mathrm{d}t} + + a_qw_q-\omega_qv_q + + (\mathbf{B}_{\mathrm{r}})_{q,:}\mathbf{u} \\ +0 &= -\dfrac{\mathrm{d}v_q}{\mathrm{d}t} + + \omega_qw_q+a_qv_q + + (\mathbf{B}_{\mathrm{i}})_{q,:}\mathbf{u}, + \quad q \in \mathcal{Q}_\mathrm{c} +\end{aligned} +``` + +### Algebraic Equations + +```math +\begin{aligned} +0 &= -\mathbf{y} + + \mathbf{D}\mathbf{u} + + \mathbf{E}\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} + + \sum_{q \in \mathcal{Q}_\mathrm{r}} + \mathbf{C}_{:,q}w_q + + 2\sum_{q \in \mathcal{Q}_\mathrm{c}} + ((\mathbf{C}_{\mathrm{r}})_{:,q}w_q + -(\mathbf{C}_{\mathrm{i}})_{:,q}v_q) +\end{aligned} +``` + +For algebraic input, $\mathbf{E}=\mathbf{0}$ and the input-derivative term +vanishes. + +### Wiring + +None. + +## Initialization + +Initialization requires $s_0 \ne p_q$ for $q \in \mathcal{Q}$. + +### Input Initialization + +```math +\begin{aligned} +\widehat{\mathbf{u}} + &\leftarrow \text{RMS input phasor} \\ +\mathbf{u} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{u}}) \\ +\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{u}}). +\end{aligned} +``` + +### Internal Initialization + +```math +\begin{aligned} +s_0\widehat{w}_q + &= a_q\widehat{w}_q+\mathbf{B}_{q,:}\widehat{\mathbf{u}}, + \quad q \in \mathcal{Q}_\mathrm{r} \\ +s_0\widehat{w}_q + &= a_q\widehat{w}_q-\omega_q\widehat{v}_q + + (\mathbf{B}_{\mathrm{r}})_{q,:}\widehat{\mathbf{u}} \\ +s_0\widehat{v}_q + &= \omega_q\widehat{w}_q+a_q\widehat{v}_q + + (\mathbf{B}_{\mathrm{i}})_{q,:}\widehat{\mathbf{u}}, + \quad q \in \mathcal{Q}_\mathrm{c}. +\end{aligned} +``` + +At $t=0$, + +```math +\begin{aligned} +w_q + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{w}_q) \\ +\dfrac{\mathrm{d}w_q}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{w}_q), + \quad q \in \mathcal{Q}_\mathrm{r} \cup \mathcal{Q}_\mathrm{c} \\ +v_q + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{v}_q) \\ +\dfrac{\mathrm{d}v_q}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{v}_q), + \quad q \in \mathcal{Q}_\mathrm{c}. +\end{aligned} +``` + +### Output Initialization + +```math +\begin{aligned} +\widehat{\mathbf{y}} + &= (\mathbf{D}+s_0\mathbf{E})\widehat{\mathbf{u}} + + \sum_{q \in \mathcal{Q}_\mathrm{r}} + \mathbf{C}_{:,q}\widehat{w}_q + + 2\sum_{q \in \mathcal{Q}_\mathrm{c}} + ((\mathbf{C}_{\mathrm{r}})_{:,q}\widehat{w}_q + -(\mathbf{C}_{\mathrm{i}})_{:,q}\widehat{v}_q) \\ +\mathbf{y} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{y}}) \\ +\dfrac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{y}}). +\end{aligned} +``` + +## Monitors + +None. diff --git a/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md b/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md new file mode 100644 index 000000000..ff03b1bf5 --- /dev/null +++ b/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md @@ -0,0 +1,255 @@ +# VectorFit Model + +`VectorFit` represents a vector-fitted matrix rational approximation with real +or complex poles and general residue matrices. For pole count $Q$, define the +pole-index set + +```math +\mathcal{Q} = \{q \in \mathbb{Z}_{>0} \mid q \le Q\}. +``` + +Thus $\mathcal{Q}$ is empty when $Q=0$. + +Then + +```math +\mathbf{H}(s) \approx \mathbf{D} + s\mathbf{E} + + \sum_{q \in \mathcal{Q}} \dfrac{\mathbf{R}_q}{s - p_q}. +``` + +`VectorFit` is a general rational operator; consuming models impose any +physical constraints. + +> [!NOTE] +> The consuming model classifies the input $\mathbf{u}$ as differential or +> algebraic. +> Algebraic input requires $\mathbf{E} = \mathbf{0}$. + +## Block Diagram + +![VectorFit rational-operator block diagram](../../../../../../docs/Figures/EMT/VectorFit/diagram.png) + +Figure 1: VectorFit model + +## Model Parameters + +For output dimension $N$, input dimension $K$, pole count $Q$, input units +$[u]$, and output units $[y]$: + +Symbol | Units | JSON | Description | Note +------ | ----- | ---- | ----------- | ---- +$\mathbf{D}$ | $[y]/[u]$ | `D` | Constant coefficient | $\mathbf{D} \in \mathbb{R}^{N \times K}$ +$\mathbf{E}$ | $\mathrm{s}[y]/[u]$ | `E` | Linear coefficient | $\mathbf{E} \in \mathbb{R}^{N \times K}$ +$\mathbf{p}$ | $[\mathrm{s}^{-1}]$ | `poles` | Poles | $\mathbf{p} \in \mathbb{C}^Q$ +$\mathbf{R}$ | $[y]/(\mathrm{s}[u])$ | `residues` | Residues | $\mathbf{R} \in \mathbb{C}^{N \times K \times Q}$ + +### Parameter Validation + +The input and output dimensions are positive integers, and the pole count is a +nonnegative integer. Let $\mathcal{Q}_\mathrm{r} \subseteq \mathcal{Q}$ contain +the real-pole indices and +$\mathcal{Q}_\mathrm{c} \subseteq \mathcal{Q}$ the first indices of the +nonreal conjugate pairs. Define their partner-index set as + +```math +\mathcal{Q}_\mathrm{c}^{+} + = \{q+1 \mid q \in \mathcal{Q}_\mathrm{c}\}. +``` + +The three sets $\mathcal{Q}_\mathrm{r}$, $\mathcal{Q}_\mathrm{c}$, and +$\mathcal{Q}_\mathrm{c}^{+}$ are pairwise disjoint and together contain every +pole index. Real poles have real residues, and each nonreal pole and residue is +followed by its conjugate. + +```math +\begin{aligned} +N &\in \mathbb{Z}_{>0} \\ +K &\in \mathbb{Z}_{>0} \\ +Q &\in \mathbb{Z}_{\ge 0} \\ +\mathbf{E} &= \mathbf{0}, + \quad \text{for algebraic input} \\ +\mathcal{Q}_\mathrm{r} \cup \mathcal{Q}_\mathrm{c} + \cup \mathcal{Q}_\mathrm{c}^{+} + &= \mathcal{Q} \\ +p_q &\in \mathbb{R}, + \quad \mathbf{R}_q \in \mathbb{R}^{N \times K}, + \quad q \in \mathcal{Q}_\mathrm{r} \\ +p_{q+1} &= p_q^{\ast}, + \quad q \in \mathcal{Q}_\mathrm{c} \\ +\mathbf{R}_{q+1} &= \mathbf{R}_q^{\ast}, + \quad q \in \mathcal{Q}_\mathrm{c} +\end{aligned} +``` + +### Derived Parameters + +```math +\begin{aligned} +\mathbf{a} &= \mathrm{Re}(\mathbf{p}) \\ +\boldsymbol{\omega} &= \mathrm{Im}(\mathbf{p}) \\ +\mathbf{A} &= \mathrm{Re}(\mathbf{R}) \\ +\mathbf{B} &= \mathrm{Im}(\mathbf{R}) +\end{aligned} +``` + +## Submodels + +None. + +### Submodel Validation + +None. + +## Model Variables + +### Internal Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{w}_q$ | $\mathrm{s}[u]$ | Real memory states | $\mathbf{w}_q \in \mathbb{R}^K$, $q \in \mathcal{Q}_\mathrm{r} \cup \mathcal{Q}_\mathrm{c}$ +$\mathbf{v}_q$ | $\mathrm{s}[u]$ | Imaginary memory states | $\mathbf{v}_q \in \mathbb{R}^K$, $q \in \mathcal{Q}_\mathrm{c}$ + +The documented real realization has order $KQ$. + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{y}$ | $[y]$ | Output vector | $\mathbf{y} \in \mathbb{R}^N$ + +### External Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{u}$ | $[u]$ | Input vector | Differential-input configuration, $\mathbf{u} \in \mathbb{R}^K$ + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{u}$ | $[u]$ | Input vector | Algebraic-input configuration, $\mathbf{u} \in \mathbb{R}^K$ + +## Model Ports + +Symbol | Port | Type | Units | Description | Note +------ | ---- | ---- | ----- | ----------- | ---- +$\mathbf{u}$ | `input` | Input | $[u]$ | Input vector port | $\mathbf{u} \in \mathbb{R}^K$ +$\mathbf{y}$ | `out` | Output | $[y]$ | Output vector port | $\mathbf{y} \in \mathbb{R}^N$ + +## Model Equations + +### Differential Equations + +```math +\begin{aligned} +0 &= -\dfrac{\mathrm{d}\mathbf{w}_q}{\mathrm{d}t} + + a_q\mathbf{w}_q + + \mathbf{u}, + \quad q \in \mathcal{Q}_\mathrm{r} \\ +0 &= -\dfrac{\mathrm{d}\mathbf{w}_q}{\mathrm{d}t} + + a_q\mathbf{w}_q + - \omega_q\mathbf{v}_q + + \mathbf{u} \\ +0 &= -\dfrac{\mathrm{d}\mathbf{v}_q}{\mathrm{d}t} + + \omega_q\mathbf{w}_q + + a_q\mathbf{v}_q, + \quad q \in \mathcal{Q}_\mathrm{c} +\end{aligned} +``` + +### Algebraic Equations + +```math +\begin{aligned} +0 &= -\mathbf{y} + + \mathbf{D}\mathbf{u} + + \mathbf{E}\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} + + \sum_{q \in \mathcal{Q}_\mathrm{r}} + \mathbf{A}_q\mathbf{w}_q + + 2\sum_{q \in \mathcal{Q}_\mathrm{c}} + (\mathbf{A}_q\mathbf{w}_q-\mathbf{B}_q\mathbf{v}_q) +\end{aligned} +``` + +For algebraic input, $\mathbf{E}=\mathbf{0}$ and the input-derivative term +vanishes. + +### Wiring + +None. + +## Initialization + +Initialization requires $s_0 \ne p_q$ for $q \in \mathcal{Q}$. + +### Input Initialization + +```math +\begin{aligned} +\widehat{\mathbf{u}} + &\leftarrow \text{RMS input phasor} \\ +\mathbf{u} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{u}}) \\ +\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{u}}). +\end{aligned} +``` + +### Internal Initialization + +```math +\begin{aligned} +s_0\widehat{\mathbf{w}}_q + &= a_q\widehat{\mathbf{w}}_q+\widehat{\mathbf{u}}, + \quad q \in \mathcal{Q}_\mathrm{r} \\ +s_0\widehat{\mathbf{w}}_q + &= a_q\widehat{\mathbf{w}}_q + - \omega_q\widehat{\mathbf{v}}_q+\widehat{\mathbf{u}} \\ +s_0\widehat{\mathbf{v}}_q + &= \omega_q\widehat{\mathbf{w}}_q+a_q\widehat{\mathbf{v}}_q, + \quad q \in \mathcal{Q}_\mathrm{c}. +\end{aligned} +``` + +At $t=0$, + +```math +\begin{aligned} +\mathbf{w}_q + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{w}}_q) \\ +\dfrac{\mathrm{d}\mathbf{w}_q}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{w}}_q), + \quad q \in \mathcal{Q}_\mathrm{r} \cup \mathcal{Q}_\mathrm{c} \\ +\mathbf{v}_q + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{v}}_q) \\ +\dfrac{\mathrm{d}\mathbf{v}_q}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{v}}_q), + \quad q \in \mathcal{Q}_\mathrm{c}. +\end{aligned} +``` + +### Output Initialization + +```math +\begin{aligned} +\widehat{\mathbf{y}} + &= (\mathbf{D}+s_0\mathbf{E})\widehat{\mathbf{u}} + + \sum_{q \in \mathcal{Q}_\mathrm{r}} + \mathbf{A}_q\widehat{\mathbf{w}}_q + + 2\sum_{q \in \mathcal{Q}_\mathrm{c}} + (\mathbf{A}_q\widehat{\mathbf{w}}_q + -\mathbf{B}_q\widehat{\mathbf{v}}_q) \\ +\mathbf{y} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{y}}) \\ +\dfrac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{y}}). +\end{aligned} +``` + +## Monitors + +None. diff --git a/GridKit/Model/EMT/Operators/Shift/Delay/README.md b/GridKit/Model/EMT/Operators/Shift/Delay/README.md new file mode 100644 index 000000000..520721aea --- /dev/null +++ b/GridKit/Model/EMT/Operators/Shift/Delay/README.md @@ -0,0 +1,162 @@ +# Delay Model + +For input units $[u]$, `Delay` maps scalar input $u$ to delayed output +$y_{\mathrm{out}}$ through a chain of first-order lag sections. + +> [!WARNING] +> The lag chain is an exact sampled $J$-step delay under forward Euler when +> $h = T$. +> Otherwise it is an approximation. The `fmax` parameter controls section +> density. It does not guarantee accuracy over a signal bandwidth. + +## Block Diagram + +![Delay operator block diagram](../../../../../../docs/Figures/EMT/Delay/diagram.png) + +Figure 1: Delay model + +## Model Parameters + +Symbol | Units | JSON | Description | Note +------ | ----- | ---- | ----------- | ---- +$\tau$ | [s] | `tau` | Total delay | Required, positive +$f_{\max}$ | [Hz] | `fmax` | Lag-chain section rate | Required, positive + +### Parameter Validation + +```math +\begin{aligned} +\tau &> 0 \\ +f_{\max} &> 0 +\end{aligned} +``` + +### Derived Parameters + +```math +\begin{aligned} +J &= \lceil f_{\max}\tau \rceil \\ +T &= \dfrac{\tau}{J} \\ +\mathcal{J} &= \{1,\ldots,J\} +\end{aligned} +``` + +## Submodels + +None. + +### Submodel Validation + +None. + +## Model Variables + +### Internal Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{y}$ | $[u]$ | Section differential states | $\mathbf{y} \in \mathbb{R}^J$ + +#### Algebraic + +None. + +### External Variables + +#### Differential + +None. + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$u$ | $[u]$ | Input signal | $u \in \mathbb{R}$ + +## Model Ports + +Symbol | Port | Type | Units | Description | Note +------ | ---- | ---- | ----- | ----------- | ---- +$u$ | `input` | Input | $[u]$ | Input signal port | $u \in \mathbb{R}$ +$y_{\mathrm{out}}$ | `out` | Output | $[u]$ | Delayed output port | $y_J$ + +## Model Equations + +### Differential Equations + +```math +\begin{aligned} +0 &= -T\dfrac{\mathrm{d}y_1}{\mathrm{d}t} - y_1 + u \\ +0 &= -T\dfrac{\mathrm{d}y_\ell}{\mathrm{d}t} - y_\ell + y_{\ell-1}, + \quad \ell \in \mathcal{J} \setminus \{1\} +\end{aligned} +``` + +### Algebraic Equations + +None. + +### Wiring + +```math +y_{\mathrm{out}} \leftarrow y_J +``` + +## Initialization + +The uppercase symbols $U$, $Y_\ell$, and $Y_\mathrm{out}$ denote RMS phasors +of the corresponding lowercase variables. + +### Input Initialization + +```math +\begin{aligned} +U + &\leftarrow \text{RMS input phasor} \\ +u + &\leftarrow \sqrt{2}\,\mathrm{Re}(U) \\ +\dfrac{\mathrm{d}u}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathrm{j}\omega_0U). +\end{aligned} +``` + +### Internal Initialization + +```math +\begin{aligned} +Y_\ell + &= (1+\mathrm{j}\omega_0T)^{-\ell}U, + \quad \ell \in \mathcal{J}. +\end{aligned} +``` + +At $t=0$, + +```math +\begin{aligned} +y_\ell + &\leftarrow \sqrt{2}\,\mathrm{Re}(Y_\ell) \\ +\dfrac{\mathrm{d}y_\ell}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathrm{j}\omega_0Y_\ell), + \quad \ell \in \mathcal{J}. +\end{aligned} +``` + +### Output Initialization + +```math +\begin{aligned} +Y_\mathrm{out} + &= Y_J \\ +y_{\mathrm{out}} + &\leftarrow \sqrt{2}\,\mathrm{Re}(Y_\mathrm{out}) \\ +\dfrac{\mathrm{d}y_{\mathrm{out}}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathrm{j}\omega_0Y_\mathrm{out}). +\end{aligned} +``` + +## Monitors + +None. diff --git a/GridKit/Model/EMT/Operators/Shift/Propagation/README.md b/GridKit/Model/EMT/Operators/Shift/Propagation/README.md new file mode 100644 index 000000000..5e109441a --- /dev/null +++ b/GridKit/Model/EMT/Operators/Shift/Propagation/README.md @@ -0,0 +1,174 @@ +# Propagation Model + +For input units $[u]$, `Propagation` is the $K$-channel current-form propagation +operator used by `LineDistributed`. It applies a fitted input factor, one scalar +delay per mode, and a fitted output factor while preserving the input units. + +## Block Diagram + +![Propagation operator block diagram](../../../../../../docs/Figures/EMT/Propagation/diagram.png) + +Figure 1: Propagation model + +## Model Parameters + +Symbol | Units | JSON | Description | Note +------ | ----- | ---- | ----------- | ---- +$K$ | [-] | `K` | Signal dimension | Required, positive integer + +### Parameter Validation + +```math +K \in \mathbb{Z}_{>0} +``` + +### Derived Parameters + +The full modal basis has one mode per channel: + +```math +\begin{aligned} +M &= K \\ +\mathcal{M} &= \{1,\ldots,M\} \\ +\boldsymbol{\tau} &= [\tau_1,\ldots,\tau_M]^\mathsf T +\end{aligned} +``` + +## Submodels + +Symbol | Description | Type | Order | JSON | Inputs | Outputs +------ | ----------- | ---- | ----- | ---- | ------ | ------- +$\mathbf{g}_\mathrm{in}$ | Input factor | [VectorFit](../../Rational/VectorFit/README.md) | $KQ_{\mathbf{g}_\mathrm{in}}$ | `input` | $\mathbb{R}^K$ | $\mathbb{R}^M$ +$d_m$, $m \in \mathcal{M}$ | Modal delay | [Delay](../Delay/README.md) | History | `delays` | $\mathbb{R}$ | $\mathbb{R}$ +$\mathbf{g}_\mathrm{out}$ | Output factor | [VectorFit](../../Rational/VectorFit/README.md) | $KQ_{\mathbf{g}_\mathrm{out}}$ | `output` | $\mathbb{R}^M$ | $\mathbb{R}^K$ + +The offline fitting targets and propagation factorization are + +```math +\begin{aligned} +\mathbf{G}^\mathrm{in}(s) + &\approx \mathbf{H}^\mathrm{mps}(s)\mathbf{T}_i^{-1}(s) \\ +\mathbf{G}^\mathrm{out}(s) &\approx \mathbf{T}_i(s) \\ +\mathbf{H}^\mathrm{mps}(s) + &= \mathrm{diag}(h_1^\mathrm{mps}(s),\ldots,h_M^\mathrm{mps}(s)) \\ +\mathbf{D}_{\boldsymbol{\tau}}(s) + &= \mathrm{diag}(e^{-s\tau_1},\ldots,e^{-s\tau_M}) \\ +\mathbf{H}(s) + &= \mathbf{T}_i(s)\mathbf{D}_{\boldsymbol{\tau}}(s) + \mathbf{H}^\mathrm{mps}(s)\mathbf{T}_i^{-1}(s) \\ + &\approx \mathbf{G}^\mathrm{out}(s)\mathbf{D}_{\boldsymbol{\tau}}(s) + \mathbf{G}^\mathrm{in}(s) +\end{aligned} +``` + +$\mathbf{H}^\mathrm{mps}$ is the diagonal modal minimum-phase-shift propagation +function with the modal delays removed. The current modal transformation +$\mathbf{T}_i$ maps modal currents to phase coordinates, and +$\mathbf{T}_i^{-1}$ maps phase currents to modal coordinates. + +### Submodel Validation + +Both rational factors must have stable poles and no term linear in $s$. The +input factor has algebraic input; the output factor has differential input +from the modal delays. + +```math +\mathbf{E}^\mathrm{in}=\mathbf{E}^\mathrm{out}=\mathbf{0} +``` + +## Model Variables + +### Internal Variables + +#### Differential + +None. + +#### Algebraic + +None. + +### External Variables + +#### Differential + +None. + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{u}$ | $[u]$ | Input vector | $\mathbf{u} \in \mathbb{R}^K$ + +## Model Ports + +Symbol | Port | Type | Units | Description | Note +------ | ---- | ---- | ----- | ----------- | ---- +$\mathbf{u}$ | `input` | Input | $[u]$ | Input vector port | $\mathbf{u} \in \mathbb{R}^K$ +$\mathbf{y}$ | `out` | Output | $[u]$ | Output vector port | $\mathbf{y} \in \mathbb{R}^K$ + +## Model Equations + +### Differential Equations + +None. + +### Algebraic Equations + +None. + +### Wiring + +```math +\begin{aligned} +\mathbf{w} &\leftarrow \mathbf{g}_\mathrm{in}[\mathbf{u}] \\ +z_m &\leftarrow d_m[w_m] \\ +\mathbf{z} &\leftarrow [z_1,\ldots,z_M]^\mathsf T \\ +\mathbf{y} &\leftarrow \mathbf{g}_\mathrm{out}[\mathbf{z}] +\end{aligned} +``` + +## Initialization + +### Input Initialization + +```math +\begin{aligned} +\widehat{\mathbf{u}} + &\leftarrow \text{RMS input phasor} \\ +\mathbf{u} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{u}}) \\ +\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{u}}). +\end{aligned} +``` + +### Internal Initialization + +The input-factor output phasor is + +```math +\widehat{\mathbf{w}} + = \mathbf{G}^\mathrm{in}(s_0)\widehat{\mathbf{u}}. +``` + +The input factor initializes from $\widehat{\mathbf{u}}$. Each modal delay +initializes from $\widehat{w}_m$ and provides $\widehat{z}_m$; the output +factor initializes from $\widehat{\mathbf{z}}$. + +### Output Initialization + +```math +\begin{aligned} +\widehat{\mathbf{y}} + &= \mathbf{G}^\mathrm{out}(s_0)\widehat{\mathbf{z}} \\ +\mathbf{y} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{y}}) \\ +\dfrac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{y}}). +\end{aligned} +``` + +## Monitors + +None. diff --git a/GridKit/Model/EMT/Operators/Shift/README.md b/GridKit/Model/EMT/Operators/Shift/README.md new file mode 100644 index 000000000..1434abb3b --- /dev/null +++ b/GridKit/Model/EMT/Operators/Shift/README.md @@ -0,0 +1,8 @@ +# Shift Operators + +Shift operators represent signal propagation in time. + +## Models + +- [Delay](Delay/README.md) +- [Propagation](Propagation/README.md) diff --git a/GridKit/Model/EMT/README.md b/GridKit/Model/EMT/README.md index abc526839..b87a3bb3a 100644 --- a/GridKit/Model/EMT/README.md +++ b/GridKit/Model/EMT/README.md @@ -1,29 +1,75 @@ # Electromagnetic Transients (EMT) -This directory contains design documentation for electromagnetic transient -(EMT) component models in instantaneous abc coordinates. +This directory documents electromagnetic transient (EMT) model specifications +and reusable operators in instantaneous phase coordinates. -## Conventions +> [!NOTE] +> The formulation supports $N$ phases; initial development targets three +> phases. -These conventions reflect the current EMT model draft and may change as the -EMT design and implementation develop. +## Conventions -- Phase order is $a$, $b$, $c$. +- $N$ denotes a phase or output dimension, $K$ a conductor or input dimension, + $M$ a mode count, and $Q$ a pole count. +- Corresponding calligraphic symbols denote index sets, such as + $\mathcal{M}$ for modal indices and $\mathcal{Q}$ for pole indices. - Equations use SI units unless a model states otherwise. +- Time derivatives are written explicitly as $\mathrm{d}(\cdot)/\mathrm{d}t$. - Current injection terms are written as positive into buses. +- $\mathrm{j}$ denotes the imaginary unit and is not used as an index. +- The Model Variables section lists DAE variables owned directly by the model. + Each scalar internal variable corresponds to one local residual row; + external variables are owned elsewhere. Submodel-owned variables are not + repeated by the parent. +- Wiring introduces aliases or derived signals, not DAE variables or residual + rows. Ports and monitors may expose either without changing ownership. +- Equation headings follow the assembled DAE row classification; connected + models may add derivative terms to a residual that contains none locally. + +## Initialization + +For sinusoidal steady-state initialization at angular frequency $\omega_0$, +define $s_0 = \mathrm{j}\omega_0$. Bold uppercase $\mathbf{V}$ and $\mathbf{I}$ +denote physical RMS voltage and current phasors; hats denote RMS phasors +of other quantities. In particular, + +```math +\mathbf{v}(t) + = \sqrt{2}\,\mathrm{Re} + \left(\mathbf{V}e^{s_0t}\right), +\qquad \mathbf{V} \in \mathbb{C}^N. +``` +The assembled phase-domain network is first solved at $s=s_0$. Each dynamic +submodel then initializes its internal states from its solved input phasor. At +$t=0$, -## Model Categories +```math +\begin{aligned} +\mathbf{v}(0) + &= + \sqrt{2}\,\mathrm{Re}(\mathbf{V}) \\ +\left.\dfrac{\mathrm{d}\mathbf{v}}{\mathrm{d}t}\right|_{t=0} + &= + \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}). +\end{aligned} +``` -The current EMT documentation is organized into two categories: -- `Bus` -- `Component` +## Contents -Branch models such as `BranchLumpedConstant` are documented under -`Component/Branch` because they are EMT components connected to buses. +- [Bus](Bus/README.md) +- [Components](Component/README.md) +- [Operators](Operators/README.md) -## Open Design Notes +## References -Distributed parameter lines are placeholders until internal signal delay support -is designed. -- Initial electrical wiring will use Delta configuration only +- B. Gustavsen and A. Semlyen, [“Rational approximation of frequency domain + responses by vector fitting,”](https://doi.org/10.1109/61.772353) *IEEE + Transactions on Power Delivery*, 1999. +- A. Morched, B. Gustavsen, and M. Tartibi, [“A universal model for accurate + calculation of electromagnetic transients on overhead lines and underground + cables,”](https://doi.org/10.1109/61.772350) *IEEE Transactions on Power + Delivery*, 1999. +- B. Gustavsen and A. Semlyen, [“Enforcing passivity for admittance matrices + approximated by rational functions,”](https://doi.org/10.1109/59.910786) + *IEEE Transactions on Power Systems*, 2001. diff --git a/docs/Figures/EMT/Bus/diagram.png b/docs/Figures/EMT/Bus/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..14bbaca828c0ee3dc85409eea3b77c6959858187 GIT binary patch literal 20003 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 literal 0 HcmV?d00001 diff --git a/docs/Figures/EMT/Bus/diagram.tex b/docs/Figures/EMT/Bus/diagram.tex new file mode 100644 index 000000000..e943f5ebe --- /dev/null +++ b/docs/Figures/EMT/Bus/diagram.tex @@ -0,0 +1,30 @@ +\documentclass[tikz,border=12pt]{standalone} +\input{../diagram-style.tex} + +\begin{document} +\begin{tikzpicture}[emt diagram] + +% ================= Bus voltage node ================= +\draw[line] (0, -1.25) -- (0, 1.3); +\node[signal, label={[sig]above:$\mathbf{v}$}] at (0, 1.3) {}; + +% ================= Connected-device currents ================= +\coordinate (i1) at (-3.4, 0.8); +\coordinate (i2) at (-3.4, 0.2); +\coordinate (iE) at (-3.4, -0.9); + +\draw[->, line] (i1) -- (0, 0.8); +\draw[->, line] (i2) -- (0, 0.2); +\draw[->, line] (iE) -- (0, -0.9); + +\node[sig, anchor=east] at ($(i1)+(-0.2,0)$) {$\mathbf{i}_1$}; +\node[sig, anchor=east] at ($(i2)+(-0.2,0)$) {$\mathbf{i}_2$}; +\node[sig, anchor=east] at ($(iE)+(-0.2,0)$) + {$\mathbf{i}_{|\mathcal{E}|}$}; +\node at (-1.7, -0.35) {$\vdots$}; + +% ================= Model enclosure ================= +\draw[enclosure] (-0.8, -1.65) rectangle (0.8, 1.9); + +\end{tikzpicture} +\end{document} diff --git a/docs/Figures/EMT/Delay/diagram.png b/docs/Figures/EMT/Delay/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..fc11f5627e48187445814803cbc232f968b7c094 GIT binary patch literal 28906 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 literal 0 HcmV?d00001 diff --git a/docs/Figures/EMT/Delay/diagram.tex b/docs/Figures/EMT/Delay/diagram.tex new file mode 100644 index 000000000..f906e04a8 --- /dev/null +++ b/docs/Figures/EMT/Delay/diagram.tex @@ -0,0 +1,35 @@ +\documentclass[tikz,border=12pt]{standalone} +\input{../diagram-style.tex} + +\begin{document} +\begin{tikzpicture}[emt diagram] + +% Lag-block chain: u -> 1/(1+sT) -> ... -> y_J = y_out +\node[block] (b0) {$\dfrac{1}{1 + sT}$}; +\node[block, right=1cm of b0] (b1) {$\dfrac{1}{1 + sT}$}; +\node[inner sep=1pt, right=1cm of b1] (dots) {$\cdots$}; +\node[block, right=1cm of dots] (bn) {$\dfrac{1}{1 + sT}$}; + +% Input node (owned externally) with port arrow into this model +\node[signal, label={[sig]above:$u$}] (uin) + at ($(b0.west)+(-1.5, 0)$) {}; +\draw[->, line] ($(uin)+(-0.8, 0)$) -- (b0.west); + +% Inter-block connections +\draw[->, line] (b0.east) -- (b1.west); +\draw[->, line] (b1.east) -- (dots.west); +\draw[->, line] (dots.east) -- (bn.west); + +% Output node (owned by this model) with port arrow out +\node[signal, label={[sig]above:$y_{\mathrm{out}}$}, right=0.55cm of bn] + (yout) {}; +\draw[line] (bn.east) -- (yout); +\draw[->, line] (yout) -- ++(1.55, 0); + +% Model enclosure: fixed padding around model-owned blocks and output variable +\begin{scope}[on background layer] + \node[operator enclosure, fit=(b0)(b1)(dots)(bn)(yout)] {}; +\end{scope} + +\end{tikzpicture} +\end{document} diff --git a/docs/Figures/EMT/LineDistributed/diagram.png b/docs/Figures/EMT/LineDistributed/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..7351b88c3d5927fee43cb4f1a4f080002c232757 GIT binary patch literal 96345 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

}X&W_%-+weo>Q1 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 z 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 XKaOlpE>a6($KE! literal 0 HcmV?d00001 diff --git a/docs/Figures/EMT/LineDistributed/diagram.tex b/docs/Figures/EMT/LineDistributed/diagram.tex new file mode 100644 index 000000000..df806e422 --- /dev/null +++ b/docs/Figures/EMT/LineDistributed/diagram.tex @@ -0,0 +1,74 @@ +\documentclass[tikz,border=12pt]{standalone} +\input{../diagram-style.tex} + +\begin{document} +\begin{tikzpicture}[emt diagram] + +% ================= Terminal 1 (left column) ================= +\node[sum] (kcl1) at (-2.4, 2.4) {$\Sigma$}; +\node[vblock] (Yc1) at (-2.4, 0.0) {$\mathbf{Y}^{\mathrm{c}}_1(s)$}; +\node[sum] (wave1) at (-2.4, -2.4) {$\Sigma$}; + +\node[signal, label={[sig]left:$\mathbf{v}_1$}] (v1) at (-5.6, 0) {}; + +\draw[->, line] (Yc1.north) -- (kcl1); +\draw[->, line] (Yc1.south) -- (wave1); +\draw[->, line] (kcl1.west) -- (-4.0, 2.4) + -- (-4.0, -2.4) -- (wave1); +\coordinate (i1port) at (-5.6, 0.8); +\draw[->, line] (-4.0, 0.8) -- (i1port); +\node[sig, left=3pt of i1port] {$\mathbf{i}_1$}; + +% Voltage lead crosses over the continuous current path. +\draw[line] (v1) -- (-4.18, 0); +\draw[wire jump] (-4.18, 0) + arc[start angle=180, end angle=0, radius=0.18]; +\draw[->, line] (-3.82, 0) -- (Yc1.west); + +% ================= Terminal 2 (right column) ================= +\node[sum] (wave2) at (2.4, 2.4) {$\Sigma$}; +\node[vblock] (Yc2) at (2.4, 0.0) {$\mathbf{Y}^{\mathrm{c}}_2(s)$}; +\node[sum] (kcl2) at (2.4, -2.4) {$\Sigma$}; + +\node[signal, label={[sig]right:$\mathbf{v}_2$}] (v2) at (5.6, 0) {}; + +\draw[->, line] (Yc2.north) -- (wave2); +\draw[->, line] (Yc2.south) -- (kcl2); +\draw[->, line] (kcl2.east) -- (4.0, -2.4) + -- (4.0, 2.4) -- (wave2); +\coordinate (i2port) at (5.6, 0.8); +\draw[->, line] (4.0, 0.8) -- (i2port); +\node[sig, right=3pt of i2port] {$\mathbf{i}_2$}; + +% Voltage lead crosses over the continuous current path. +\draw[line] (v2) -- (4.18, 0); +\draw[wire jump] (4.18, 0) + arc[start angle=0, end angle=180, radius=0.18]; +\draw[->, line] (3.82, 0) -- (Yc2.east); + +% ================= Propagation channels (straight rows) ================= +% 1 -> 2 (lower row, left to right) +\node[hblock] (H12) at (0, -2.4) {$\mathbf{H}_{12}(s)$}; +\draw[->, line] (wave1.east) -- (H12.west); +\draw[->, line] (H12.east) -- (kcl2.west); + +% 2 -> 1 (upper row, right to left) +\node[hblock] (H21) at (0, 2.4) {$\mathbf{H}_{21}(s)$}; +\draw[->, line] (wave2.west) -- (H21.east); +\draw[->, line] (H21.west) -- (kcl1.east); + +% ================= Summation signs ================= +\node[pm] at ($(kcl1)+(-0.26,-0.50)$) {$-$}; % Yc1 v1 subtracts +\node[pm] at ($(kcl1)+( 0.45, 0.26)$) {$+$}; % incident current adds +\node[pm] at ($(wave1)+(0.26, 0.50)$) {$+$}; % Yc1 v1 +\node[pm] at ($(wave1)+(-0.45,-0.26)$) {$-$}; % i1 +\node[pm] at ($(kcl2)+( 0.26, 0.50)$) {$-$}; % Yc2 v2 subtracts +\node[pm] at ($(kcl2)+(-0.45,-0.26)$) {$+$}; % incident current adds +\node[pm] at ($(wave2)+(-0.26,-0.50)$) {$+$}; % Yc2 v2 +\node[pm] at ($(wave2)+( 0.45, 0.26)$) {$-$}; % i2 + +% ================= Model enclosure ================= +\draw[enclosure] (-4.8, -3.6) rectangle (4.8, 3.6); + +\end{tikzpicture} +\end{document} diff --git a/docs/Figures/EMT/LineLumped/diagram.png b/docs/Figures/EMT/LineLumped/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..108fd736bd4ef7d4fc4367fffb64a7070ad3db02 GIT binary patch literal 50735 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 DL|jh5 literal 0 HcmV?d00001 diff --git a/docs/Figures/EMT/LineLumped/diagram.tex b/docs/Figures/EMT/LineLumped/diagram.tex new file mode 100644 index 000000000..6ab1f3777 --- /dev/null +++ b/docs/Figures/EMT/LineLumped/diagram.tex @@ -0,0 +1,47 @@ +\documentclass[tikz,border=12pt]{standalone} +\input{../diagram-style.tex} + +\begin{document} +\begin{tikzpicture}[emt diagram] + +% ================= Series branch Z(s) ================= +\node[hblock] (Z) at (0, 2.1) {$\mathbf{Z}(s)$}; + +% ================= Shunt branches Y(s) ================= +\node[vblock] (Yk) at (-2.8, -0.2) {$\mathbf{Y}(s)$}; +\node[vblock] (Ym) at ( 2.8, -0.2) {$\mathbf{Y}(s)$}; + +% ================= Top rail + injection leads (current leaving) ================= +\draw[->, line] (Z.west) -- (-6.2, 2.1); +\draw[->, line] (Z.east) -- ( 6.2, 2.1); +\node[sig, anchor=east] at (-6.45, 2.1) {$\mathbf{i}_1$}; +\node[sig, anchor=west] at ( 6.45, 2.1) {$\mathbf{i}_2$}; + +% shunt taps (T-junctions on the rail) +\node[signal] (Tk) at (-2.8, 2.1) {}; +\node[signal] (Tm) at ( 2.8, 2.1) {}; + +% ================= Shunt wiring ================= +\draw[line] (Tk) -- (Yk.north); +\draw[line] (Tm) -- (Ym.north); +\draw[line] (Yk.south) -- (-2.8, -2.5); +\draw[line] (Ym.south) -- ( 2.8, -2.5); + +% ================= Ground symbols ================= +\draw[semithick] (-3.15,-2.50) -- (-2.45,-2.50); +\draw[semithick] (-3.02,-2.65) -- (-2.58,-2.65); +\draw[semithick] (-2.89,-2.80) -- (-2.71,-2.80); + +\draw[semithick] ( 2.45,-2.50) -- ( 3.15,-2.50); +\draw[semithick] ( 2.58,-2.65) -- ( 3.02,-2.65); +\draw[semithick] ( 2.71,-2.80) -- ( 2.89,-2.80); + +% ================= Terminals + labels ================= +\node[signal, label={[sig]above:$\mathbf{v}_1$}] at (-5.4, 2.1) {}; +\node[signal, label={[sig]above:$\mathbf{v}_2$}] at ( 5.4, 2.1) {}; + +% ================= Model enclosure ================= +\draw[enclosure] (-4.6, -3.6) rectangle (4.6, 3.6); + +\end{tikzpicture} +\end{document} diff --git a/docs/Figures/EMT/LoadZ/diagram.png b/docs/Figures/EMT/LoadZ/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..8f533d815a187e105c4dedb9ed051822dddac83e GIT binary patch literal 21235 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, line] (terminal) -- (-3.4, 1.4); +\node[sig, anchor=east] at (-3.65, 1.4) {$\mathbf{i}$}; + +% ================= Ground reference ================= +\draw[line] (Z.south) -- (0, -1.7); +\draw[semithick] (-0.35, -1.70) -- (0.35, -1.70); +\draw[semithick] (-0.22, -1.85) -- (0.22, -1.85); +\draw[semithick] (-0.09, -2.00) -- (0.09, -2.00); + +% ================= Model enclosure ================= +\draw[enclosure] (-1.05, -2.4) rectangle (1.05, 2.0); + +\end{tikzpicture} +\end{document} diff --git a/docs/Figures/EMT/Propagation/diagram.png b/docs/Figures/EMT/Propagation/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..cca4160d154374e5c28392a93fe8b0d694dac25f GIT binary patch literal 64978 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 modal delays -> fitted output map +\node[block, minimum width=2.1cm] (D2) {$e^{-s\tau_2}$}; +\node[block, minimum width=2.1cm, above=0.6cm of D2] (D1) {$e^{-s\tau_1}$}; +\node[block, minimum width=2.1cm, below=1.3cm of D2] (DN) {$e^{-s\tau_M}$}; +\node at ($(D2)!0.5!(DN)$) {$\vdots$}; + +\node[block, minimum width=2.6cm, left=1.5cm of D2] + (Gin) {$\mathbf{G}^{\mathrm{in}}(s)$}; +\node[block, minimum width=2.7cm, right=1.5cm of D2] + (Gout) {$\mathbf{G}^{\mathrm{out}}(s)$}; + +% Fan-out from a single internal point +\coordinate (split) at ($(Gin.east)!0.5!(D2.west)$); +\draw[line] (Gin.east) -- (split); +\draw[->, line] (split) -- (D2.west); +\foreach \b in {D1, DN} + \draw[->, line] (split) |- (\b.west); + +% Fan-in to the fitted output map +\coordinate (join) at ($(D2.east)!0.5!(Gout.west)$); +\draw[line] (D2.east) -- (join); +\foreach \b in {D1, DN} + \draw[line] (\b.east) -| (join); +\draw[->, line] (join) -- (Gout.west); + +% Output node (owned by this model) with port arrow out +\node[signal, label={[sig]above:$\mathbf{y}$}, right=0.55cm of Gout] (yout) {}; +\draw[line] (Gout.east) -- (yout); +\draw[->, line] (yout) -- ++(1.55, 0); + +% Input node (owned externally) with port arrow into this model +\node[signal, label={[sig]above:$\mathbf{u}$}] (uin) + at ($(Gin.west)+(-1.5, 0)$) {}; +\draw[->, line] ($(uin)+(-0.8, 0)$) -- (Gin.west); + +% Model enclosure: fixed padding around model-owned blocks and output variable +\begin{scope}[on background layer] + \node[operator enclosure, fit=(Gin)(D1)(D2)(DN)(Gout)(yout)] {}; +\end{scope} + +\end{tikzpicture} +\end{document} diff --git a/docs/Figures/EMT/StateSpace/diagram.png b/docs/Figures/EMT/StateSpace/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..842b187b454761f8d49b74f68f83b920db8c52d1 GIT binary patch literal 58695 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 literal 0 HcmV?d00001 diff --git a/docs/Figures/EMT/StateSpace/diagram.tex b/docs/Figures/EMT/StateSpace/diagram.tex new file mode 100644 index 000000000..e324886e9 --- /dev/null +++ b/docs/Figures/EMT/StateSpace/diagram.tex @@ -0,0 +1,50 @@ +\documentclass[tikz,border=12pt]{standalone} +\input{../diagram-style.tex} + +\begin{document} +\begin{tikzpicture}[emt diagram] + +% State-space chain: input map -> resolvent state bank -> output map +\node[block, minimum width=2.9cm] (res) + {$\dfrac{\mathbf{I}}{s\mathbf{I} - \mathbf{P}}$}; +\node[block, minimum width=1.5cm, left=0.4cm of res] (B) {$\mathbf{B}$}; +\node[block, minimum width=1.5cm, right=0.4cm of res] (C) {$\mathbf{C}$}; + +% Feedthrough paths +\node[block, above=0.9cm of res] (D) {$\mathbf{D}$}; +\node[block, below=0.9cm of res] (E) {$s\mathbf{E}$}; + +% Fan-out from a single internal point +\coordinate (split) at ($(B.west)+(-1.25, 0)$); +\draw[->, line] (split) -- (B.west); +\draw[->, line] (split) |- (D.west); +\draw[->, line] (split) |- (E.west); + +% Chain series connections +\draw[->, line] (B.east) -- (res.west); +\draw[->, line] (res.east) -- (C.west); + +% Fan-in to summation +\node[sum, right=0.8cm of C] (S) {$\Sigma$}; +\draw[->, line] (C.east) -- (S); +\draw[->, line] (D.east) -| (S.north); +\draw[->, line] (E.east) -| (S.south); + +% Input node (owned externally) +\node[signal, label={[sig]above:$\mathbf{u}$}] (uin) + at ($(split)+(-1.5, 0)$) {}; +\draw[line] ($(uin)+(-0.8, 0)$) -- (split); + +% Output node (owned by this model) with port arrow out +\node[signal, label={[sig]above:$\mathbf{y}$}, right=0.55cm of S] + (yout) {}; +\draw[line] (S.east) -- (yout); +\draw[->, line] (yout) -- ++(1.55, 0); + +% Model enclosure: fixed padding around model-owned paths and output variable +\begin{scope}[on background layer] + \node[operator enclosure, fit=(split)(B)(res)(C)(D)(E)(S)(yout)] {}; +\end{scope} + +\end{tikzpicture} +\end{document} diff --git a/docs/Figures/EMT/VectorFit/diagram.png b/docs/Figures/EMT/VectorFit/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d7eef5b73cee7bcc21e5876e4cb66a4ee44597 GIT binary patch literal 84241 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

;Yjv4A+N0}ltdjCG7gLU%Y8QqD~6x| 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 literal 0 HcmV?d00001 diff --git a/docs/Figures/EMT/DelayHistory/diagram.tex b/docs/Figures/EMT/DelayHistory/diagram.tex new file mode 100644 index 000000000..8e7482ea2 --- /dev/null +++ b/docs/Figures/EMT/DelayHistory/diagram.tex @@ -0,0 +1,83 @@ +\documentclass[tikz,border=12pt]{standalone} +\input{../diagram-style.tex} + +\begin{document} +\begin{tikzpicture}[emt diagram, x=1.18cm, y=1.05cm] + +% Stored history and its shared knot times +\fill[black!4] (2.0,1.25) rectangle (6.6,4.65); +\foreach \x in {2.0,2.9,3.8,4.7,5.6} + \draw[black!18, thin] (\x,1.25) -- (\x,4.65); +\draw[dashed, semithick] (6.6,0) -- (6.6,4.65); + +% Time axis and region labels +\draw[->, line] (0.15,0) -- (9.15,0) node[right] {time}; +\node[below=3pt] at (2.0,0) {$0$}; +\node[below=3pt] at (6.6,0) {$t_n$}; +\draw[fill=white, semithick] (8.35,0) circle (1.8pt); +\node[below=3pt] at (8.35,0) {$t$}; +\node[font=\small] at (1.0,4.95) {prehistory}; +\node[font=\small] at (4.3,4.95) {stored history}; +\node[font=\small, anchor=west] at (6.72,4.58) {accepted frontier}; + +% Channel 1: the lookup lies in the analytic prehistory +\node[left] at (0.25,4.15) {$u_1$}; +\draw[densely dotted, semithick] + plot[smooth] coordinates { + (0.65,4.2) (1.25,4.32) (2.0,4.12) + }; +\draw[semithick] + plot[smooth] coordinates { + (2.0,4.12) (2.9,3.88) (3.8,4.3) (4.7,3.92) + (5.6,4.28) (6.6,4.04) + }; +\foreach \x/\y in {2.0/4.12,2.9/3.88,3.8/4.3,4.7/3.92,5.6/4.28,6.6/4.04} + \fill (\x,\y) circle (1.65pt); +\draw[dashed, thin] (1.25,0) -- (1.25,4.32); +\draw[fill=white, semithick] (1.25,4.32) circle (2pt) + node[above=3pt] {$t-\tau_1$}; + +% Channel 2: lookup within a Hermite segment +\node[left] at (0.25,2.95) {$u_2$}; +\draw[densely dotted, semithick] + plot[smooth] coordinates { + (0.65,2.82) (1.25,2.9) (2.0,3.08) + }; +\draw[semithick] + plot[smooth] coordinates { + (2.0,3.08) (2.9,3.28) (3.45,2.93) (3.8,2.72) + (4.7,3.12) (5.6,2.78) (6.6,3.06) + }; +\begin{scope} + \clip (2.9,2.55) rectangle (3.8,3.4); + \draw[very thick] + plot[smooth] coordinates { + (2.0,3.08) (2.9,3.28) (3.45,2.93) (3.8,2.72) (4.7,3.12) + }; +\end{scope} +\foreach \x/\y in {2.0/3.08,2.9/3.28,3.8/2.72,4.7/3.12,5.6/2.78,6.6/3.06} + \fill (\x,\y) circle (1.65pt); +\draw[dashed, thin] (3.45,0) -- (3.45,2.93); +\draw[fill=white, semithick] (3.45,2.93) circle (2pt) + node[above right=2pt] {$t-\tau_2$}; +\node[font=\scriptsize, anchor=north] at (3.35,2.5) {Hermite segment}; + +% Channel 3: the shallowest lookup remains behind the frontier +\node[left] at (0.25,1.75) {$u_3$}; +\draw[densely dotted, semithick] + plot[smooth] coordinates { + (0.65,1.88) (1.25,1.8) (2.0,1.58) + }; +\draw[semithick] + plot[smooth] coordinates { + (2.0,1.58) (2.9,1.88) (3.8,1.55) (4.7,1.84) + (5.6,1.6) (6.02,1.68) (6.6,1.82) + }; +\foreach \x/\y in {2.0/1.58,2.9/1.88,3.8/1.55,4.7/1.84,5.6/1.6,6.6/1.82} + \fill (\x,\y) circle (1.65pt); +\draw[dashed, thin] (6.02,0) -- (6.02,1.68); +\draw[fill=white, semithick] (6.02,1.68) circle (2pt) + node[above=3pt] {$t-\tau_3$}; + +\end{tikzpicture} +\end{document} From 10d45bf6de3a67936d7b6a8f22e976cec34830cf Mon Sep 17 00:00:00 2001 From: lukelowry Date: Sat, 25 Jul 2026 22:49:31 -0500 Subject: [PATCH 3/3] remove intiialization as discussion needs to be had --- GridKit/Model/EMT/Bus/README.md | 34 +----- .../Component/Line/LineDistributed/README.md | 76 +----------- .../EMT/Component/Line/LineLumped/README.md | 65 +---------- .../Model/EMT/Component/Load/LoadZ/README.md | 36 +----- GridKit/Model/EMT/Component/README.md | 1 + .../Component/Source/VoltageSource/README.md | 48 +------- GridKit/Model/EMT/Component/Switch/README.md | 110 ++++++++++++++++++ .../Operators/Rational/StateSpace/README.md | 67 +---------- .../Operators/Rational/VectorFit/README.md | 66 +---------- .../Model/EMT/Operators/Shift/Delay/README.md | 47 ++------ .../EMT/Operators/Shift/Propagation/README.md | 40 +------ GridKit/Model/EMT/README.md | 34 ++---- docs/Figures/EMT/Switch/diagram.png | Bin 0 -> 12546 bytes docs/Figures/EMT/Switch/diagram.tex | 33 ++++++ docs/GridKit/Model/EMT/Component/README.md | 1 + .../Model/EMT/Component/Switch/README.md | 6 + 16 files changed, 182 insertions(+), 482 deletions(-) create mode 100644 GridKit/Model/EMT/Component/Switch/README.md create mode 100644 docs/Figures/EMT/Switch/diagram.png create mode 100644 docs/Figures/EMT/Switch/diagram.tex create mode 100644 docs/GridKit/Model/EMT/Component/Switch/README.md diff --git a/GridKit/Model/EMT/Bus/README.md b/GridKit/Model/EMT/Bus/README.md index c453f9028..4d7c3a19e 100644 --- a/GridKit/Model/EMT/Bus/README.md +++ b/GridKit/Model/EMT/Bus/README.md @@ -83,39 +83,7 @@ None. ## Initialization -### Input Initialization - -```math -\mathbf{I}_e - \leftarrow \text{connected-device RMS current phasor}, - \quad e \in \mathcal{E}. -``` - -### Internal Initialization - -The assembled harmonic network provides the bus-voltage phasor and satisfies -current balance: - -```math -\mathbf{V} \leftarrow \text{solved bus RMS voltage phasor}, -\qquad -\sum_{e \in \mathcal{E}}\mathbf{I}_e=\mathbf{0}. -``` - -At $t=0$, - -```math -\begin{aligned} -\mathbf{v} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}) \\ -\dfrac{\mathrm{d}\mathbf{v}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}). -\end{aligned} -``` - -### Output Initialization - -None. +None beyond the EMT initialization contract. ## Monitors diff --git a/GridKit/Model/EMT/Component/Line/LineDistributed/README.md b/GridKit/Model/EMT/Component/Line/LineDistributed/README.md index 519b646ed..980e06ba1 100644 --- a/GridKit/Model/EMT/Component/Line/LineDistributed/README.md +++ b/GridKit/Model/EMT/Component/Line/LineDistributed/README.md @@ -154,79 +154,9 @@ The residuals use the wiring signals defined below. ## Initialization -### Input Initialization - -```math -\begin{aligned} -\mathbf{V}_r - &\leftarrow \text{solved terminal RMS voltage phasor} \\ -\mathbf{v}_r - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}_r) \\ -\dfrac{\mathrm{d}\mathbf{v}_r}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}_r), - \quad r \in \{1,2\}. -\end{aligned} -``` - -### Internal Initialization - -The internal current phasors satisfy - -```math -\begin{aligned} -\mathbf{I}_r^\mathrm{c} - &= \mathbf{Y}_r^\mathrm{c}(s_0) - \mathbf{P}_\phi^\mathsf T\mathbf{V}_r, - \quad r \in \{1,2\} \\ -\begin{bmatrix} -\mathbf{I}_K & \mathbf{H}_{21}(s_0) \\ -\mathbf{H}_{12}(s_0) & \mathbf{I}_K -\end{bmatrix} -\begin{bmatrix} -\mathbf{I}_1^\mathrm{ref} \\ -\mathbf{I}_2^\mathrm{ref} -\end{bmatrix} - &= 2 -\begin{bmatrix} -\mathbf{I}_1^\mathrm{c} \\ -\mathbf{I}_2^\mathrm{c} -\end{bmatrix} \\ -\mathbf{I}_1^\mathrm{inc} - &= \mathbf{H}_{21}(s_0)\mathbf{I}_2^\mathrm{ref} \\ -\mathbf{I}_2^\mathrm{inc} - &= \mathbf{H}_{12}(s_0)\mathbf{I}_1^\mathrm{ref}. -\end{aligned} -``` - -The block matrix must be nonsingular. The characteristic-admittance submodels -initialize from $\mathbf{P}_\phi^\mathsf T\mathbf{V}_r$; $\mathbf{h}_{21}$ and -$\mathbf{h}_{12}$ initialize from $\mathbf{I}_2^\mathrm{ref}$ and -$\mathbf{I}_1^\mathrm{ref}$, respectively. At $t=0$, the reflected currents -initialize as - -```math -\begin{aligned} -\mathbf{i}_r^\mathrm{ref} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}_r^\mathrm{ref}) \\ -\dfrac{\mathrm{d}\mathbf{i}_r^\mathrm{ref}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}_r^\mathrm{ref}), - \quad r \in \{1,2\}. -\end{aligned} -``` - -### Output Initialization - -```math -\begin{aligned} -\mathbf{I}_r - &= \mathbf{P}_\phi(\mathbf{I}_r^\mathrm{inc}-\mathbf{I}_r^\mathrm{c}) \\ -\mathbf{i}_r - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}_r) \\ -\dfrac{\mathrm{d}\mathbf{i}_r}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}_r), - \quad r \in \{1,2\}. -\end{aligned} -``` +The characteristic-admittance and propagation submodels initialize according +to their own specifications. There is no additional line-level initialization +procedure. ## Monitors diff --git a/GridKit/Model/EMT/Component/Line/LineLumped/README.md b/GridKit/Model/EMT/Component/Line/LineLumped/README.md index 467038e80..1934861e1 100644 --- a/GridKit/Model/EMT/Component/Line/LineLumped/README.md +++ b/GridKit/Model/EMT/Component/Line/LineLumped/README.md @@ -148,70 +148,7 @@ $\mathbf{i}_2$ | `i2` | Output | [A] | Current injection at terminal 2 | $\mathb ## Initialization -### Input Initialization - -```math -\begin{aligned} -\mathbf{V}_r - &\leftarrow \text{solved terminal RMS voltage phasor} \\ -\mathbf{v}_r - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}_r) \\ -\dfrac{\mathrm{d}\mathbf{v}_r}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}_r), - \quad r \in \{1,2\}. -\end{aligned} -``` - -### Internal Initialization - -The current phasors satisfy - -```math -\begin{aligned} -\mathbf{0} - &= \Delta x\,\mathbf{Z}(s_0)\mathbf{I}_{12} - + \mathbf{P}_\phi^\mathsf T(\mathbf{V}_2-\mathbf{V}_1) \\ -\mathbf{I}_r^\mathrm{sh} - &= -\dfrac{\Delta x}{2}\mathbf{Y}(s_0) - \mathbf{P}_\phi^\mathsf T\mathbf{V}_r, - \quad r \in \{1,2\}. -\end{aligned} -``` - -Initialization requires $\mathbf{Z}(s_0)$ to be nonsingular. The series- -impedance submodel initializes from $\mathbf{I}_{12}$, and each shunt- -admittance submodel initializes from -$\mathbf{P}_\phi^\mathsf T\mathbf{V}_r$. At $t=0$, - -```math -\begin{aligned} -\mathbf{i}_{12} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}_{12}) \\ -\dfrac{\mathrm{d}\mathbf{i}_{12}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}_{12}) \\ -\mathbf{i}_r^\mathrm{sh} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}_r^\mathrm{sh}) \\ -\dfrac{\mathrm{d}\mathbf{i}_r^\mathrm{sh}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}_r^\mathrm{sh}), - \quad r \in \{1,2\}. -\end{aligned} -``` - -### Output Initialization - -```math -\begin{aligned} -\mathbf{I}_1 - &= \mathbf{P}_\phi(\mathbf{I}_1^\mathrm{sh}-\mathbf{I}_{12}) \\ -\mathbf{I}_2 - &= \mathbf{P}_\phi(\mathbf{I}_2^\mathrm{sh}+\mathbf{I}_{12}) \\ -\mathbf{i}_r - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}_r) \\ -\dfrac{\mathrm{d}\mathbf{i}_r}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}_r), - \quad r \in \{1,2\}. -\end{aligned} -``` +None beyond the EMT initialization contract. ## Monitors diff --git a/GridKit/Model/EMT/Component/Load/LoadZ/README.md b/GridKit/Model/EMT/Component/Load/LoadZ/README.md index 62b52ffcb..14d46f0c6 100644 --- a/GridKit/Model/EMT/Component/Load/LoadZ/README.md +++ b/GridKit/Model/EMT/Component/Load/LoadZ/README.md @@ -98,41 +98,7 @@ None. ## Initialization -### Input Initialization - -```math -\begin{aligned} -\mathbf{V} - &\leftarrow \text{solved terminal RMS voltage phasor} \\ -\mathbf{v} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}) \\ -\dfrac{\mathrm{d}\mathbf{v}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}). -\end{aligned} -``` - -### Internal Initialization - -```math -\mathbf{0}=\mathbf{Z}(s_0)\mathbf{I}+\mathbf{V}. -``` - -Initialization requires $\mathbf{Z}(s_0)$ to be nonsingular. The impedance -submodel initializes from $\mathbf{I}$. For either current classification, at -$t=0$, - -```math -\begin{aligned} -\mathbf{i} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}) \\ -\dfrac{\mathrm{d}\mathbf{i}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}). -\end{aligned} -``` - -### Output Initialization - -None. +None beyond the EMT initialization contract. ## Monitors diff --git a/GridKit/Model/EMT/Component/README.md b/GridKit/Model/EMT/Component/README.md index f92da8c85..b974e2aa8 100644 --- a/GridKit/Model/EMT/Component/README.md +++ b/GridKit/Model/EMT/Component/README.md @@ -8,3 +8,4 @@ buses. - [Lines](Line/README.md) - [Loads](Load/README.md) - [Sources](Source/README.md) +- [Switch](Switch/README.md) diff --git a/GridKit/Model/EMT/Component/Source/VoltageSource/README.md b/GridKit/Model/EMT/Component/Source/VoltageSource/README.md index 1c25455d4..be3931777 100644 --- a/GridKit/Model/EMT/Component/Source/VoltageSource/README.md +++ b/GridKit/Model/EMT/Component/Source/VoltageSource/README.md @@ -101,53 +101,7 @@ None. ## Initialization -### Input Initialization - -```math -\begin{aligned} -\mathbf{V} - &\leftarrow \text{solved terminal RMS voltage phasor} \\ -\mathbf{v} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}) \\ -\dfrac{\mathrm{d}\mathbf{v}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}). -\end{aligned} -``` - -### Internal Initialization - -Sinusoidal steady-state initialization requires $\omega=\omega_0$. Define the -source-voltage phasor by - -```math -V_n^\mathrm{s}=E_ne^{\mathrm{j}\phi_n}, -\quad n \in \mathcal{N}. -``` - -The terminal-admittance submodel initializes from -$\mathbf{V}^\mathrm{s}-\mathbf{V}$. At $t=0$, - -```math -\begin{aligned} -\mathbf{e} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{V}^\mathrm{s}) \\ -\dfrac{\mathrm{d}\mathbf{e}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}^\mathrm{s}). -\end{aligned} -``` - -### Output Initialization - -```math -\begin{aligned} -\mathbf{I} - &= \mathbf{Y}(s_0)(\mathbf{V}^\mathrm{s}-\mathbf{V}) \\ -\mathbf{i} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathbf{I}) \\ -\dfrac{\mathrm{d}\mathbf{i}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\mathbf{I}). -\end{aligned} -``` +None beyond the EMT initialization contract. ## Monitors diff --git a/GridKit/Model/EMT/Component/Switch/README.md b/GridKit/Model/EMT/Component/Switch/README.md new file mode 100644 index 000000000..901e2b8cd --- /dev/null +++ b/GridKit/Model/EMT/Component/Switch/README.md @@ -0,0 +1,110 @@ +# Switch Model + +`Switch` represents an ideal $N$-phase EMT switch between two buses. Series +current $\mathbf{i}_{12}$ is directed from terminal 1 to terminal 2. The +required Boolean input `open` operates all phases: `true` is open and +`false` is closed. The switch contains no energy storage; switching +transients arise from the connected EMT network. + +## Block Diagram + +![Switch model block diagram](../../../../../docs/Figures/EMT/Switch/diagram.png) + +Figure 1: Switch model + +## Model Parameters + +Symbol | Units | JSON | Description | Note +------ | ----- | ---- | ----------- | ---- +$N$ | [-] | `N` | Number of phases | Required, positive integer + +### Parameter Validation + +```math +N \in \mathbb{Z}_{>0} +``` + +### Derived Parameters + +None. + +## Submodels + +None. + +### Submodel Validation + +None. + +## Model Variables + +### Internal Variables + +#### Differential + +None. + +#### Algebraic + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{i}_{12}$ | [A] | Series current from terminal 1 to terminal 2 | $\mathbf{i}_{12} \in \mathbb{R}^N$ + +### External Variables + +#### Differential + +Symbol | Units | Description | Note +------ | ----- | ----------- | ---- +$\mathbf{v}_1$ | [V] | Terminal 1 voltage owned by EMT bus | $\mathbf{v}_1 \in \mathbb{R}^N$ +$\mathbf{v}_2$ | [V] | Terminal 2 voltage owned by EMT bus | $\mathbf{v}_2 \in \mathbb{R}^N$ + +#### Algebraic + +None. + +## Model Ports + +Symbol | Port | Type | Units | Description | Note +------ | ---- | ---- | ----- | ----------- | ---- +$\mathbf{v}_1$ | `v1` | Input | [V] | Terminal 1 bus voltage | $\mathbf{v}_1 \in \mathbb{R}^N$ +$\mathbf{v}_2$ | `v2` | Input | [V] | Terminal 2 bus voltage | $\mathbf{v}_2 \in \mathbb{R}^N$ +$\mathrm{open}$ | `open` | Input | [-] | Ganged switch command | Required Boolean; `true` open, `false` closed +$\mathbf{i}_1$ | `i1` | Output | [A] | Current injection at terminal 1 | $\mathbf{i}_1 \in \mathbb{R}^N$ +$\mathbf{i}_2$ | `i2` | Output | [A] | Current injection at terminal 2 | $\mathbf{i}_2 \in \mathbb{R}^N$ + +## Model Equations + +### Differential Equations + +None. + +### Algebraic Equations + +```math +\begin{cases} +\mathbf{i}_{12} = \mathbf{0}, & \text{open}, \\ +\mathbf{v}_2-\mathbf{v}_1 = \mathbf{0}, & \text{closed}. +\end{cases} +``` + +### Wiring + +```math +\begin{aligned} +\mathbf{i}_1 &\leftarrow -\mathbf{i}_{12} \\ +\mathbf{i}_2 &\leftarrow \mathbf{i}_{12}. +\end{aligned} +``` + +## Initialization + +The `open` command is applied at $t_0$ before enforcing the algebraic +equations. The switch has no additional model-specific initialization. + +## Monitors + +Monitor | Units | Description | Note +------- | ----- | ----------- | ---- +`open` | [-] | Switch command | Boolean; `true` open, `false` closed +`i12` | [A] | Series current from terminal 1 to terminal 2 | $\mathbf{i}_{12} \in \mathbb{R}^N$ diff --git a/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md b/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md index a4e33b627..78bcaf77f 100644 --- a/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md +++ b/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md @@ -193,72 +193,7 @@ None. ## Initialization -Initialization requires $s_0 \ne p_q$ for $q \in \mathcal{Q}$. - -### Input Initialization - -```math -\begin{aligned} -\widehat{\mathbf{u}} - &\leftarrow \text{RMS input phasor} \\ -\mathbf{u} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{u}}) \\ -\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{u}}). -\end{aligned} -``` - -### Internal Initialization - -```math -\begin{aligned} -s_0\widehat{w}_q - &= a_q\widehat{w}_q+\mathbf{B}_{q,:}\widehat{\mathbf{u}}, - \quad q \in \mathcal{Q}_\mathrm{r} \\ -s_0\widehat{w}_q - &= a_q\widehat{w}_q-\omega_q\widehat{v}_q - + (\mathbf{B}_{\mathrm{r}})_{q,:}\widehat{\mathbf{u}} \\ -s_0\widehat{v}_q - &= \omega_q\widehat{w}_q+a_q\widehat{v}_q - + (\mathbf{B}_{\mathrm{i}})_{q,:}\widehat{\mathbf{u}}, - \quad q \in \mathcal{Q}_\mathrm{c}. -\end{aligned} -``` - -At $t=0$, - -```math -\begin{aligned} -w_q - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{w}_q) \\ -\dfrac{\mathrm{d}w_q}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{w}_q), - \quad q \in \mathcal{Q}_\mathrm{r} \cup \mathcal{Q}_\mathrm{c} \\ -v_q - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{v}_q) \\ -\dfrac{\mathrm{d}v_q}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{v}_q), - \quad q \in \mathcal{Q}_\mathrm{c}. -\end{aligned} -``` - -### Output Initialization - -```math -\begin{aligned} -\widehat{\mathbf{y}} - &= (\mathbf{D}+s_0\mathbf{E})\widehat{\mathbf{u}} - + \sum_{q \in \mathcal{Q}_\mathrm{r}} - \mathbf{C}_{:,q}\widehat{w}_q - + 2\sum_{q \in \mathcal{Q}_\mathrm{c}} - ((\mathbf{C}_{\mathrm{r}})_{:,q}\widehat{w}_q - -(\mathbf{C}_{\mathrm{i}})_{:,q}\widehat{v}_q) \\ -\mathbf{y} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{y}}) \\ -\dfrac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{y}}). -\end{aligned} -``` +None beyond the EMT initialization contract. ## Monitors diff --git a/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md b/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md index ff03b1bf5..a4269eca3 100644 --- a/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md +++ b/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md @@ -184,71 +184,7 @@ None. ## Initialization -Initialization requires $s_0 \ne p_q$ for $q \in \mathcal{Q}$. - -### Input Initialization - -```math -\begin{aligned} -\widehat{\mathbf{u}} - &\leftarrow \text{RMS input phasor} \\ -\mathbf{u} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{u}}) \\ -\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{u}}). -\end{aligned} -``` - -### Internal Initialization - -```math -\begin{aligned} -s_0\widehat{\mathbf{w}}_q - &= a_q\widehat{\mathbf{w}}_q+\widehat{\mathbf{u}}, - \quad q \in \mathcal{Q}_\mathrm{r} \\ -s_0\widehat{\mathbf{w}}_q - &= a_q\widehat{\mathbf{w}}_q - - \omega_q\widehat{\mathbf{v}}_q+\widehat{\mathbf{u}} \\ -s_0\widehat{\mathbf{v}}_q - &= \omega_q\widehat{\mathbf{w}}_q+a_q\widehat{\mathbf{v}}_q, - \quad q \in \mathcal{Q}_\mathrm{c}. -\end{aligned} -``` - -At $t=0$, - -```math -\begin{aligned} -\mathbf{w}_q - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{w}}_q) \\ -\dfrac{\mathrm{d}\mathbf{w}_q}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{w}}_q), - \quad q \in \mathcal{Q}_\mathrm{r} \cup \mathcal{Q}_\mathrm{c} \\ -\mathbf{v}_q - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{v}}_q) \\ -\dfrac{\mathrm{d}\mathbf{v}_q}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{v}}_q), - \quad q \in \mathcal{Q}_\mathrm{c}. -\end{aligned} -``` - -### Output Initialization - -```math -\begin{aligned} -\widehat{\mathbf{y}} - &= (\mathbf{D}+s_0\mathbf{E})\widehat{\mathbf{u}} - + \sum_{q \in \mathcal{Q}_\mathrm{r}} - \mathbf{A}_q\widehat{\mathbf{w}}_q - + 2\sum_{q \in \mathcal{Q}_\mathrm{c}} - (\mathbf{A}_q\widehat{\mathbf{w}}_q - -\mathbf{B}_q\widehat{\mathbf{v}}_q) \\ -\mathbf{y} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{y}}) \\ -\dfrac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{y}}). -\end{aligned} -``` +None beyond the EMT initialization contract. ## Monitors diff --git a/GridKit/Model/EMT/Operators/Shift/Delay/README.md b/GridKit/Model/EMT/Operators/Shift/Delay/README.md index c5978c3ba..2724b8ee4 100644 --- a/GridKit/Model/EMT/Operators/Shift/Delay/README.md +++ b/GridKit/Model/EMT/Operators/Shift/Delay/README.md @@ -158,49 +158,24 @@ and third-order derivative accuracy in the knot spacing. ## Initialization -### Input Initialization +A prehistory for $\mathbf{u}(t)$ and +$\mathrm{d}\mathbf{u}/\mathrm{d}t$ must be specified over ```math -\begin{aligned} -\widehat{\mathbf{u}} - &\leftarrow \text{RMS input phasor} \\ -\mathbf{u} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{u}}) \\ -\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{u}}). -\end{aligned} -``` - -### Internal Initialization - -The analytic prehistory is - -```math -\begin{aligned} -\mathbf{u}(t) - &= \sqrt{2}\,\mathrm{Re} - \left(\widehat{\mathbf{u}}e^{s_0t}\right) \\ -\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t}(t) - &= \sqrt{2}\,\mathrm{Re} - \left(s_0\widehat{\mathbf{u}}e^{s_0t}\right), - \qquad t \le 0. -\end{aligned} +t \in [t_0-\tau_{\max},t_0]. ``` -Only $t \in [-\tau_{\max},0]$ is needed. It matches the initialized input in -value and slope at $t=0$, avoiding delay-induced startup transients under a -consistent sinusoidal initialization. - -### Output Initialization +Its endpoint value and derivative must match the initialized input at $t_0$. +The delay does not synthesize prehistory. At $t_0$, ```math \begin{aligned} -\widehat{\mathbf{y}} - &= \mathbf{D}_{\boldsymbol{\tau}}(s_0)\,\widehat{\mathbf{u}} \\ -\mathbf{y} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{y}}) \\ -\dfrac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{y}}). +\mathbf{y}(t_0) + &\leftarrow \mathbf{u}(t_0-\boldsymbol{\tau}) \\ +\left.\dfrac{\mathrm{d}\mathbf{y}}{\mathrm{d}t}\right|_{t_0} + &\leftarrow + \left.\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} + \right|_{t_0-\boldsymbol{\tau}}. \end{aligned} ``` diff --git a/GridKit/Model/EMT/Operators/Shift/Propagation/README.md b/GridKit/Model/EMT/Operators/Shift/Propagation/README.md index ec6987ae4..3e1ab53bb 100644 --- a/GridKit/Model/EMT/Operators/Shift/Propagation/README.md +++ b/GridKit/Model/EMT/Operators/Shift/Propagation/README.md @@ -131,45 +131,7 @@ None. ## Initialization -### Input Initialization - -```math -\begin{aligned} -\widehat{\mathbf{u}} - &\leftarrow \text{RMS input phasor} \\ -\mathbf{u} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{u}}) \\ -\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{u}}). -\end{aligned} -``` - -### Internal Initialization - -The input-factor output phasor is - -```math -\widehat{\mathbf{w}} - = \mathbf{G}^\mathrm{in}(s_0)\widehat{\mathbf{u}}. -``` - -The input factor initializes from $\widehat{\mathbf{u}}$. The modal delay -bank initializes from $\widehat{\mathbf{w}}$ and provides -$\widehat{\mathbf{z}}$; the output factor initializes from -$\widehat{\mathbf{z}}$. - -### Output Initialization - -```math -\begin{aligned} -\widehat{\mathbf{y}} - &= \mathbf{G}^\mathrm{out}(s_0)\widehat{\mathbf{z}} \\ -\mathbf{y} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{y}}) \\ -\dfrac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{y}}). -\end{aligned} -``` +TBD ## Monitors diff --git a/GridKit/Model/EMT/README.md b/GridKit/Model/EMT/README.md index b87a3bb3a..b3a10e478 100644 --- a/GridKit/Model/EMT/README.md +++ b/GridKit/Model/EMT/README.md @@ -26,34 +26,20 @@ and reusable operators in instantaneous phase coordinates. - Equation headings follow the assembled DAE row classification; connected models may add derivative terms to a residual that contains none locally. -## Initialization +## Assembly -For sinusoidal steady-state initialization at angular frequency $\omega_0$, -define $s_0 = \mathrm{j}\omega_0$. Bold uppercase $\mathbf{V}$ and $\mathbf{I}$ -denote physical RMS voltage and current phasors; hats denote RMS phasors -of other quantities. In particular, +Bus voltage is algebraic unless a connected model contributes a voltage +derivative to the bus current-balance. -```math -\mathbf{v}(t) - = \sqrt{2}\,\mathrm{Re} - \left(\mathbf{V}e^{s_0t}\right), -\qquad \mathbf{V} \in \mathbb{C}^N. -``` +## Initialization -The assembled phase-domain network is first solved at $s=s_0$. Each dynamic -submodel then initializes its internal states from its solved input phasor. At -$t=0$, +EMT models are initialized using real-valued, instantaneous phase-coordinate +quantities in $\mathbb{R}^N$. RMS or phasor calculations, when used by an +upstream initialization workflow, are outside the EMT model specification. -```math -\begin{aligned} -\mathbf{v}(0) - &= - \sqrt{2}\,\mathrm{Re}(\mathbf{V}) \\ -\left.\dfrac{\mathrm{d}\mathbf{v}}{\mathrm{d}t}\right|_{t=0} - &= - \sqrt{2}\,\mathrm{Re}(s_0\mathbf{V}). -\end{aligned} -``` +Initial differential states, algebraic variables, derivatives, and discrete +inputs must be consistent with the assembled EMT equations at $t_0$. Models +that require additional history document that requirement locally. ## Contents diff --git a/docs/Figures/EMT/Switch/diagram.png b/docs/Figures/EMT/Switch/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..9af43eef788c3997d3cae4434f0a4deb91267d61 GIT binary patch literal 12546 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 literal 0 HcmV?d00001 diff --git a/docs/Figures/EMT/Switch/diagram.tex b/docs/Figures/EMT/Switch/diagram.tex new file mode 100644 index 000000000..9b73f9aa1 --- /dev/null +++ b/docs/Figures/EMT/Switch/diagram.tex @@ -0,0 +1,33 @@ +\documentclass[tikz,border=12pt]{standalone} +\input{../diagram-style.tex} + +\begin{document} +\begin{tikzpicture}[emt diagram] + +% ================= Ideal switch contact ================= +\coordinate (left contact) at (-0.55, 0); +\coordinate (right contact) at (0.55, 0); +\draw[line] (left contact) -- (0.32, 0.55); +\node[signal] at (left contact) {}; +\node[signal] at (right contact) {}; +\node[sig] at (0, 1.0) {$\boldsymbol{\sigma}$}; + +% ================= Terminal rails and bus injections ================= +\draw[->, line] (left contact) -- (-4.4, 0); +\draw[->, line] (right contact) -- (4.4, 0); +\node[sig, anchor=east] at (-4.65, 0) {$\mathbf{i}_1$}; +\node[sig, anchor=west] at (4.65, 0) {$\mathbf{i}_2$}; + +% ================= Terminal voltages ================= +\node[signal, label={[sig]above:$\mathbf{v}_1$}] at (-3.2, 0) {}; +\node[signal, label={[sig]above:$\mathbf{v}_2$}] at (3.2, 0) {}; + +% ================= Branch-current direction ================= +\draw[->, line] (-1.5, 1.35) -- (1.5, 1.35); +\node[sig, anchor=south] at (0, 1.35) {$\mathbf{i}_{12}$}; + +% ================= Model enclosure ================= +\draw[enclosure] (-3.75, -1.0) rectangle (3.75, 2.05); + +\end{tikzpicture} +\end{document} diff --git a/docs/GridKit/Model/EMT/Component/README.md b/docs/GridKit/Model/EMT/Component/README.md index 625395ce4..7f275b1b5 100644 --- a/docs/GridKit/Model/EMT/Component/README.md +++ b/docs/GridKit/Model/EMT/Component/README.md @@ -8,6 +8,7 @@ Line Load Source +Switch ``` ```{include} ../../../../../GridKit/Model/EMT/Component/README.md diff --git a/docs/GridKit/Model/EMT/Component/Switch/README.md b/docs/GridKit/Model/EMT/Component/Switch/README.md new file mode 100644 index 000000000..f9761017d --- /dev/null +++ b/docs/GridKit/Model/EMT/Component/Switch/README.md @@ -0,0 +1,6 @@ +# Switch + +```{include} ../../../../../../GridKit/Model/EMT/Component/Switch/README.md +:start-line: 1 +:relative-images: +```

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, line] (split) -- (R1.west); +\foreach \b in {D, E, R2, RQ} + \draw[->, line] (split) |- (\b.west); + +% Fan-in to summation +\node[sum, right=0.75cm of R1] (S) {$\Sigma$}; +\draw[->, line] (R1.east) -- (S); +\foreach \b/\a in {D/north, E/north, R2/south, RQ/south} + \draw[->, line] (\b.east) -| (S.\a); + +% Input node (owned externally) +\node[signal, label={[sig]above:$\mathbf{u}$}] (uin) + at ($(split)+(-1.5, 0)$) {}; +\draw[line] ($(uin)+(-0.8, 0)$) -- (split); + +% Output node (owned by this model) with port arrow out +\node[signal, label={[sig]above:$\mathbf{y}$}, right=0.55cm of S] + (yout) {}; +\draw[line] (S.east) -- (yout); +\draw[->, line] (yout) -- ++(1.55, 0); + +% Model enclosure: fixed padding around model-owned paths and output variable +\begin{scope}[on background layer] + \node[operator enclosure, fit=(split)(D)(E)(R1)(R2)(RQ)(S)(yout)] {}; +\end{scope} + +\end{tikzpicture} +\end{document} diff --git a/docs/Figures/EMT/VoltageSource/diagram.png b/docs/Figures/EMT/VoltageSource/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..829de9b66b070c108e3a3d928b897670214ba4b8 GIT binary patch literal 31452 zcmeFZ1yq%7-zT~i6b!;bMF|5?@)1!&Qp6w)N>UM}q(d4EPyspT3<;bQRY*x#ZR_4>%GUf4HjoFTa!pyr-}cq+5S{oibP^1ojWC^Y~M22=HR?z zs#xOZhI7>P+dr&-zn`*9Gihs5h0F%Sls7vp(&WzhFDt*+U{yZs6@8JOUM873sJ(!X zd#zdVM%4pmlu4={(JBKc=}*aKU6FHt{CIJ>Vj$9qku_Xi@t>-R#kVFoM-9FhcpkNG zpZjua>!+$J3fvIM-PrgACGihQ>I@m;JL~4={ls^A&zoC_@6^&c)Wr9D`!va~d-s@! zcp%c%3WhcK=KhbqH}QWZcm1EY|DUD%-!*J}4ziKl3$83L&W&j_=J!N~g@$TOOl{w> zLu}&n(Xp1q!NI}2WDZ}=#(e9ZKiu zs;Np5?bPftRr1~Yj(c+x&6xWwTRHC+SSuV5Zu(j+E#|AKLPa;V-Yr%5@qNdhFA*nf zdLM^|h6V-wIddxFJT2+#8cWgqH0{FUykS{(LoFiqm0QYF7)9+ZigJwGiyUk%lGf8P z?@dby6*SjjYE86f>K|L8Q^zHR%v9P$zjo)T(AxHdp0-L&2qWJBEptE3vetw)Q-4TE zh_JA5jo3`gDef@qx!Q5LT?d2?PMfb+ujB@WJQ72?&2^>Cb zW>7C=r?x$fx%|?lOSmt~MH{T8PO)Q|Ns`E|VJ)g$&Jvc_v}XV1f;Ey?==b?ssYVBT zLJJ&Tm0KqD|9sy5v*sAp`1zHecj?9_CT0pF7Z(@Xi=E7WiY?U%z@~h`pi{pS@ycHmnmIB4{3IGDRVYy4H9}Lqp`o z=Vyf@B`2uwOioTJNi2QsIJt)O^F)!j+eEeC2!dhVCWce&H*VZ0nfP+TvZ(rji$Bj= z$z$6Y7^a7Q2+s5RgolS;&b*PZnM88V_44w%@g-c?vg-pYHEy)fb|8+O${h=(r=qU@ zEF>h~s3A_ap(#~6%-{dHIEgeG!Ntj`k!`G^sv2~0@2<#gG^8VyRaGWGa)u(`>Nz?V zbfL5|`G`y5#r>W!U}Wx!@quYZea=kEMl~4(kG{ z8r0@T;rP3W8EN7SYRT%Is+&lpXn$)Z0n*?lBO@a_JG6z-3@^C4x=ubVaar))D}3=fF0;QC&lb32$Byiq%^CF{On>CW z#>H{c;_>d;d6UjJe-1gyr9f=W6||k`twRiJes(+!3SxGh?F>6^>Lp+K`LkBBWA-Op zO8G_Ge$rx?j5mV}mA4fA;_$7~OALr(F{4~+(#oINZa+U)FYnVtUs~9Y`&qf9uKqp8 z^hfVuF4g3UPoFOCCSIJ6;9st3&9~-K=xff5&%m9$S5;RRGWZhix-@@S#+L2y8qz7z zu@BqoVvsiH&V30ak!t@53<@e4eYdG}X~^8#+L|j4aS#_9n;<_(Jl{$@Vy!Vzg|B$B zew&i0e-!c6k)kPh9h>CIxo_V-$4Nxg9wCe94CNSiw9M~GFJ8QO`gA*dP0M z*H@(U1voeiz9nD&wDrUi&)PTbSgDP~@2{R1NX~q5W+#uvOZG-$5%Bd$SxQPOm{jXBel zq8ZPg9`L_JV?X#bI5>%nFwSeAlO>U)=&{1S%wi&rpBCpP0@oopHnt!E=_&Ets}C+D zgV!r7xc%<{MEqZpQIvp&gM-7sw-j%mX>!|;zN~j}wbG6i^h7!_aI4erjzBWpJVNXp z^&QsU@9Etw*(QzHTh_lnIx8zXUVaXtY&?dVi?9F1@yFSVy;j%*U^-^T@I?3$+*6aTV!7Xuv*r3x~e0=6@1-AZmc=YS~`iJCvRxd1| zGt+8ab7$SA{V@}NssngFD&mQy=qZ^_*l88orHJ6oAO8O6+_`hhLK{e=^E{Ei$?N#< zKI6ac8O`LYc9hHXWn3B!SToDeKRmps>H4QnpS--iZ(;qlw2H2k`(|Wh9Pks(=x;RZ zC~@ij_^3Mc7@7?6uCQY!LC>D4A2C70I8)?_Zk92gHm!A0e_+*-MFR{2!P;jPrrk#t6>qnEG_fEdlJfE6RpXQruT`SDg@pF1{d;WP*QPInn`oLX3a?SZTIa|`Nm8WVKa<21!J_JCqFg;ZFc0X3R zGCs=HvH5zi%gRDW=}^v(c88t_&O2qjRkJ&|RJB~D8qYA2&9vQOaT-j=<5cK%I8Rhx z57wTpm8RoSe;ut|XeYao2E^-Cp;=z1C!#=kGa!!X{AAyPhSlKr^c0Qkjd!BEIua2? ztrqWTba5kce8pL4SiP44?>NFOPU7|0YRmqF_!jKc>+4lPK(AOQ*P6>}Iu5_hT_?hN zlSlKqeUoEU|dh^o3_(Xc3n)8YD&w% zIt6-4)0V8=f@WGiNkgsq6In(LcUTYc@($NNe=peKeCfy%Hs+BF8~Wrf0w47^4m2o9 zv{`@S$!)djek3?N;4##a9d_cDS-fJzM?V%8v88T53Fd#Uya_WeY0fgb^xI>-q?@;7 z@sX?V?zvPK0C44+cj&b35TEaj@xL`_;@Bf-`pV`qc_TjBo%W~9Sm0gS^tVon{osH#3 zpWTIaLtZW_n|AUp4rbPHdY-WDx9N)w=Hw%hP8H4l2@7`iaFtc%8sc-r3Wh*HK?pp|UVX4}NZ!NEmb zu+^qPVIedyB0@Vwg@#$wzUJXXPfbU@b-akQ3x_6Ue+XwNZ@b+O)52RLzSr55#HPOL zuFN-ib-t%PF$g?-ULAm~qN>VitZe6uND@Lq%xOCLTZ^yopJyN-YN4}fZc8S*=4-wl z$dHMS6z&PP_B}D2SNvsuaiV4?dQp{ZoMHsyZswym7y(Ps09zXuab#d0EI^wt~(drsa)N^h&17>R;DQfznOF&Vl z<++}jV*}XJjp^@L7JpJXDSoc0QCq#hk~MC1WZ=%9_jD2{92`lm4mL4mbunjhZ#G{% zw}!;p6`&;kP;}ZtiAltUI{iy=i81(BBF$6;lE-c9wr%B)_T;AJ*VT1K>L5pu^j@8J zX+;dbzPiwlB3id!J7A=7-~GK?^&$X zCfBB~{x${G@RY};IQfU0{dOJM-|7LBDsaUO)gkHG3Di=FPv|R6VdMLg^sjnniubIc&UvdyJ_RbmK@WhC-hNrUia?x zUf8*dR8o^r8YdrO)u15A6JFg&X81l7+2Ly87NzA%y>W zn%gDqe5>D8e5KCweeoj>{@Zsmi#z9C@i&Z(joown=7Y#C$F(HGaFqU}XFrM@CQwpC zOXX0yt*xw-!wOhYJh`~!nBIZiOsQa(5#rVe!6Dn>uL+m9u6v`@*N89NEVDo?m-{j$ zd7k?5`l>V;c^W3HAqgnnXR=e@VGa1~Fx9A*wDtVkOf7fE!TzK)vxc~89RomOIk)AB zsF-;9u;V;icPuUTNQ`_>k6F8x^d=JNrB>F8bvwL;pb-7(iRLj6T(3-aEKlc_dGA!) z%)!pC zrB|RO76;@_h1k^j9}?u1xZT^5Jy5n&SF3C-FK#+o!&j*5L9ARbs)kj~WiGYUB81Pa zp_U!pi9ict*FQb2;w|LnzyA5z5fSb?>sh6m)=S>u+|O;Xn~K>!+PdeF{jlxp9E0aSn;ON;KxlsV3bsH3;q|jwok->p!1C3ez=n&FbEE;aQ8Wyj}ZtzrbeD z8JbVJ%j3b!Vvfq8-%~Vm8)$C$6-j;evsdT=O)a+GxeSiaR7JCgysg zq8$4Z(5J4K8QR%R6D7oB=?Tv~&qntVYrQO|nPHS!0z@FbUC`}w%sWcb*c$5VzX)~v z0HH**Iz4<-6U`2b^Uh-v5_SP_ zD$459;pv?vHETGba2P;`@~_)+;I#hr>xboh$n?N?7_Dq>%+IX|l^p9ps0+57>YMMd zq6DRvGyg!%!p7BL5rIhy+*X#S8A+5fx0u!p<>TZ z4dhyOe?*Ijk96!ui%!f83w`or{PWS8#d5dBGnSTP0AI5`5-ZKa6eQz!Vs*&&UjSDT zq7GK5K_Cv_P)~o6zh1t4i9dPo-aU4O(1QmL4mMvR7U}Zk%MK260Ai@p*lJlhIXPKb z)Cd)j5)?b#rG7P{-n=)h2Y%i{`4$n-ntVAEx8yZsRR8i^*+)vL^Qx*j2s^Kt#McvU z+K6GWnG}c1*w5pJwb5QwFI(MKmR#m16S^1D6~d0o1@nr{{R${uo*y89IHBJPZ(c|0 z7b3)vBhAQCl;Wfwzqs#MJgU27n;F zD^Be49A;$r^+>RN7r<-TC`gY}trS&b8j}bbZ!nS*DARFqtbAdz@2K7fYARvUdF>66 zcQ=qebUxAZ)0zJIa_kT%=cmt~7Xj^N3iVZ0zXA7tdwEXOJmN4PA26lC)vKL|k4Y2( zQB(#3;vBHXhT4G_+_-+-wy*y8V`*9=s9b2Y)1L*Uzo%b2gSIJ-*2_xG3zoAmQd%lL zTu4A7)EzT=N*;|Yb*P6jD}l4(GcL3O$D5m*H!*NO@cDv#dtob)ZUI@6bnHoJ==|t= zy7DKx{`~&kW?9ZO<}!n@LHoJ|ERMiOo3ATA#D4G~_vH+IP}H5e&X#`6Vg+_Xkk1){ zuN;Gq=42MnM8oWSe_zg@>BASyeLKVsh>BI5?Z@ z%F>L9(NRx2mJ)#DieA*u^)!sid(5*Or~1!E3PB=9EHrhv2%_M6-A1-|-0E(uRe*2$cJ}29<60^1g5m*_(Q9jdF zI@{$N-lwv#vD6<27nzGqgECT^gn?P3_z-A{Aj?<$5+}H7sly{ zt|eyt^_6FOH}nEdPej`s>bx*6x~r05;1!lc*W&HEGkYyhp~#}kyn`R0r2tpO{N23` zAnqL_dH^KMA~wCgOeea=;|Spc9di3_vFY#Ey4!jAyB=~x+JhW(d8Xxcd4Yx<^I;MM zVDP#<^dna(?0B{RX3~eVIqE%wKnkHIseM0kM=mLeWus;Qmk#3Hvwcc#jsU;N#io7= z(%0+IOwfy=lYMdxUW6=c4%8D`+D%Y!I2!5szDmqy! zosf{QplyX41NKzNyEO-Y#jIrRPle$iT_UXkDmg%gm-8Da2gUy1vYK=MvxEE>paW|ge(l!!fPEu+?A__%1w=g0H8daPIR}}ws*OTl#|ufg!-o$a?syL`Vyk7&*gs5JVYe0Cr86&TuC^ml^i08Pt>3mtJ(g z@d`YkBRX$4L7#C(Xk5GD{l%}R_t77Wr)uiLZ!`}*+oVc<}D{ZQ`?g0N{ zmp7k?`x^H|w!>1|M^Rx>>Njj-KXuE35D#vCe_c3SAm`Gb48a7fdLq(kxLGaC8_b7S zGe`b8?Pp(bHSNi3Yw&wVYzR!2Hm$YJ9Lo!(D<>egf?2EZ<)E5#rRKfpZ@3QXjE-<1 z1`?X%&)ZZG9*q|c6afnOcT#j1T7uN36^(zw1Lp(y08j@724)*I{6RmG0A@gZ{93a6 zuFXRzZ2Gf+R+?}hPM`L?w(EN^SuV}|Q!UuR&CTs2FA9@JBiGEO#VDSzxV8w`lP$FK zR4%if_lXPrFfT0z#M!1O)JgD!N{*;xZre*zQg6W=_|fk_%Pw+AY_nI^0$eHw58vn31IwpZ$r#Y=g25vCg|HELEp? z9vbUaeE?(@CVu?~6yIlrl`q07!@VZDQLdA!g-X}4_(!lHEM8}Cy^M^Ee;o|q(vBp{ zE{jBW3uJ2~QW>%rkAy^NKU+gX!^Fe{h{5)hpzYhYZ)On}txvel4O`oJqJ>eH(PJ1{FdF|lR>Y~4J{(Nn$+|JUtMTXevn{5TzXr~Zm zzK=WsJaquF;uM>iiw)N4N1^#uJKsK2G6OElV)y+j)s?C=AXXw~^n}2$U%fiS#uhu> zo?2Ao{NceC+%?S|)?>$PprB}oV0+^$1C0r-;$Vk7YIiIJkCj-Mn} z=4t>eL`Ax1+eTb(UAa@nO5G0dQDFg`U~){In~SS(alDG_P8nc(33#_4ep^Dk3L^qV zDAW-Bf&&A!u}GknD%H825HWl=r)gx%W>G4u7uXoVl+Gid-@|PjP-&vGvXt4L-}dKu z=ZXmi9_<2w@zx&W2w8)g$dt=kL%aXEB00Fvd`GZQmyA0_94ax$sx7x1aZ7b{cb6N} zT&FO5f-^9s+CmSXZYLBc|5E$kzkYofKU9jGCzLdzc*$&EsF&kwbUykb z6Kl*l?@Y;YHi}HT5M{L2jq8!>;t60=LPY+gB3Jkmz_b|Z-ARE9$uEJ$ z0AnuIYoL)kc6#jm=#mY@bn797#T5VoC+J7$J;*~e0L>C-2b;{dAj~v-g+?XK@a!fr zXH57swIGK=4OTzW3VyB_Au=?>hMaVaJ!4*8&u&x7nXQ?uye2w51eKw6;q)wFI}PXe z#G&}}LEI`U=psV)cltvVdnJ8uON`It8rHq2RoKpTPD#lPh*fMkd74`z>(y})SB=+K z-lAOb^Ybh3`bi=j8pIG|TTGV@CJ$28)A#eYU2gzd}9UUFUjn9r;Gd8Mz zf1gfG$DQK9D%(i-7S)CJ$m~4&7Ls`{$=o?jtk?A(A=RksTud;%hDw^2|0gum zypmAS#S+{03*11_OO8FJ6fT4!b=HG0IO=;b!U4RHrCaKXtx6fTj+!y4e8L7?;-%#T z26xFxDd}@{^;E5hJH;R1<)X2Vd#>qojv=&#}xxSv}%S~f4)R$I&tY{8wYNb zreM`f=K3PBviSBcRn)C^2V!c;`0Ep7fDdL2K)-9FrN$gTSY*NGgGiHLodR4MZ*03n zfXV$7d;i(SE-%#gGC=S0xWsa|gjw;_w-NmV=zq*&5J)cW839e-+U6RM!5Ca=VaZxU zPp=E2?rS_g!R-kBO-n>GxfWVRg@w>7d5RzJ?tKeK&5})blx{0WtXb^Jn|Eg`#+{-3<(M?oGOG#i~ss^Xq>~LP>E1 z%!s*`Tr4Xu?~H$j37RiQ-28RBk^z0Jbf$PjMhPmR0tkXZb?6jy&ugV=j}}yA)Cw#~`#81jNWZT=<6MF>ic$6?>&~5CJ75VD8IL0s>;TlO(m2=VQz*EiHM9>!hfdvh*vTeEs@$SMUlV8^QbpkO5i# z(dF6;i5p;Ed)JfRlvFSn8KQoJ3uGgP2qE|A(MwV!_s|DsZ+CvZk+X|Z3K|H}zli#m zUaF5~aF>eC*Qw!T^L~pfz4V(2+mhxIDl~2d*r*r<1A!A8AK%pf1OGK|FUk*ZQTtJt z(bcp2Q3Hw|7ZaWFMIJ>lfuG)96hS=b@zA6Rln9b71T=ij896L>qb8E6qxw5s$eUXX zqz$IAsskjq^0jCl)(8-SM@|hirKzXujsAR_J;{qbhwcQ3tUTIc2Yaunf8J@TKemE& z>cs3%Od*+^(A<0{8h5r+%i=BMbwbVW0P_ykvN{L9KFPHb{2<4yjj`PH!SXZLIq8_} z4!$TxtEk-qn=@n>J)kpUHWSE}u*@NcXIs+#fTxT}H&Yw?Q&}xv82IvkZIxNis)50q zm@_L=X>LrfbHyP)z$_>R(tuNt1_XkK%q3hL55~eOl=O&$oBmC10W(dP0!jU^82o=B0tmgTB zW)ax11gp7d{Z8z}BN|imITdA+p)$q*I=(c4NVxew-eQE9w3o7k$=4mmL%Gt5*?uDKP)O!O111@fo6EVbs~^u9W?Es0Q2MXY{RAQXFgdemn8Y*%y6=UUI1QxMplfPaja zUyguUwzg{BlD=elzIx@B@mggewAKUfS=<&aq0G~$%|a3#7ETA^Z`{ZLLAR5xv;3>2~lo8iS}*Gpe>|7g^laoy74#w3EFm4=1}Q^9)mC>QiIvgVLPpoPE` zRe7V)au|zo?BPxTheFIexE)&;Z7k+E`Cu~unhVU7V_KbrZrtFevma8fm9I^_+o=zE_p-ez1@T#pS7 z6LYfT)?P--B2ux>_?(7D3sA#*?XJ&I#&F9T+-qO!azxl%oa}|esy@Nx)msOfBFwCS zxMyz{8qgZwN!4$F*RnOX2@e6+Pu&u(k5^)$BGJzc6Ejk9z)mjOx}mxe`>gK1{#*|A z)l(f@#T{3;1O;!QVR@-01qSJzNKW4z* zS*ZaXJZYKc2M`c^ZgXVJh}E_^c;Ht%Lhu31lS16^633W$GNEG$@q%2 zc@(cmv~bJC*U-Hb_4B|HK+x||kX{`;eE4wv)vqNQ8u~YGU_jUjk_>9(H?1vtYCT z4(?{grFcci&3c1r+Ibe81SUaLu~HLqFr>7PGXW)tdjG4B7;Z!0fHjXV6`Q*A_&QPy zlgW(k&S{xKnFoM*S^fvkxWdJBDpo6irFN{;+v|IpE&p<`G0C}S8Ti$#sg2eJwZ zOYd2h>1VE_W6mtQNyppg6T|KA`O}`K<#MRA^>k-sXF%d#zdr9migxX5OlpFLP+VbX zL)ximWi?(OD|g0sZ$5U%BsD({Pmi6)pxiQm2Qht@E{}OC$XM~4aO*GW1Gm)=o;s(fs7i0BETHV!vPhSc>lBNA zC$ThnX=!Oq?JEH&3bq5^poL;YP)U*e1(2$!Xa*B+bpnucIb|{t{sW;*xe<0CO4V`` z29p4*UEi1$!Wb-oDM~m|YCgoq5Tasrld#kDAfiGcQgn_uvVoB%h{tzX&nhZH!Ma;j zRYlASVW#l1xR}@ywtWx3{@Eeh^sO$^Hc{d(kf49ot|KJ|(Yq9%WV)cGMYxN_Up`e= zi*@@PefnzoFSwj(DqXfky>Q&OhVd)r2jWli{$prQFpUPq6DfLmP#A%*3H!ZBbs6qF z0PkSLt@g^Anhw+l1feEI`y(UUk)SBMv`ix5t{{BjRA262;* zi)+&z*i6^aU+Z#jcQ5SSdtBg3Mp%|t~wd*yJl;gJQZ={(%b0wq7A%uzOxnlv>Q zJb@Zj1@xlg!>g6|`u25ijHIPeGu&k*Y#2^;N|IjZWnP>J2mn$d=&qhUENB!!le1C7 zu(iE6pXsfedPVDAu+#N?1))Y!Umb_y?Tp+l>V6K+Xf7a9XfpY z0u{+!WElH8wKUVAYx&y_lGyQQH^=DQW~KFKgEY<3W8i8T&0>BhT?95Sp%8j?qN##5 zPSE_6CZzt7h2f-K;!|HQA#)ARP>_xguA=0zRt$8aQzY-g6sRM`>?uN9fTdbC3aB=y z_t(~Y<%xO=7c56__V1`f|5W*5Ztmn>DSqlZggeZ|RmBU}1EYQLEAt^z10D2wbs}FH z2Wp5p5?EqXQWk(4c)%ZD5XLgZsB~ihJo+~jbjZ1b)ORG7`jk)(6XRJ3{W^bPxRA@! zyl^N7^6-y*l4LeI%{P;@LT2dofw7s~{H&}=5V}&#@-S1r{X1pa;x{W^epUJ!4s)n0D{tSefO4Xs zpc15Bx@Iwo3IO7-9{pEhKC|va7tDp-!dCk9lt?N!40ge4x==1SyR&q*jOcc()Tyu} zv4AzqA7+GU_pmMsy01)-{_O~Y7Q@1YHJ$R${<(^Pl%fxJ8qSB#uU~fHLxuUF(*(a**1yoQWdqk0sR1@CHHV1 z=G8u8LgB+(loxUG(V}6LGYn|P(3)L^uK}VeWSk`eVr(o7x;$ii z@S!HfY77K%$7g?4h(a^|OA;cWhImbd0*xH^iwjH+P-r zzxVBf!C-9?-RU>N)8)Q>3-{+6#ft-mCdxBxC7AsrPPg+VC`|k4Cn=S>VT|}W`G^VW zMeXWIp9{U@qeAY7Y*tUsY%f^dxs9tQi|9RY#EV#xldFd+{-3_x>-OB7!(kFBci}+U z8%g^Fm|_Yu$Bg#;)US^L`8epWNnu?^Eg_1%uk&ym6<;cw$fUzq2NJ=ER!0FRLUq_D{`s z@%x|s&~2HXbq+7*zKeC)huQc?IQt@e;zVIyct}X)Z!0~c04y|OZtKGjpFjKT#rs?0 zacqs1`i{NmFdYYu{Fpt=#ZV-!`yaej|GjJQ-w2fb>}!d;oc}gDYGFTzMpW_Ag#uO| z&cc&OFLv+RMa?(0xmGRw;dg=vj${WXgEzDm z4J}$ay7-HSSN9k{Uvb3j;|&9Yoxy;?1!dEH3~TVPR{)!L^65OqgrejEmJwBl-n(qE z^B^*SXDkSb0I2jg;i~-q*!^o3;J-Kd{wJ-$W{m2~Auve~Zd|#-TJ-g3t*uvC7v^;t zg5SS?pP($uJ+!>>rxP>6+E9Q|EmdoS(xT`ZQY~%U{>jW|)FiA3W_mZ%($1&vLOQt& z|4*q*|3Ql*BTqiVH<^ONwo&kWEax!F;Opb_AXZ^Dkms8qYmq}hGv{UN zad+IAf9=_WzdS239W z0IkN;)ALEC{(k?_k#z;DF+MMsqPjp#sA8;gX*{@;J5ZKux#kjQpls~LJd4jaGO=*G znVIdLF^YtbDB*s4U8WqDFjWK4o(6rjMdD}CMPh}MKFYIaf?v|?Ilh^OW^RT$;xxH3 zizR9CMqxY}=Ub~vBrH4seAwgsj;F2Op2Fkg)y{*q^pw}GT_YxUiILB-Jh%MX4dmih zYx3#$IGk(ipKoqg4C(NP5E^F5d}CVb<;*|0Sr=e#aLj{S>tu^%W4BVig+BD@w-r4l zG~|>G>diIF#T;l^>d<2%yVUwZsqmG zGA&VNzw&OxRk~@iGG|Xsl=+HIMcEU}n>PoW4Wev04zynXSN(N2Q|4wMrv64ZRS5=F z>X%?%gpQ7mZ{f>_6VG+h+%VjMsiL7$i2%j;C;-?I(CwTf^(9)oJD1r*AzpG9<{u^l z1DlZ3F-HUi1;xeN6}yAv*$F~v?lPcB9A_;nm|E0JQ9a=>PE5J9{mJi3Pfv%QVJqYD z3Cqy#E3u8J8aCdJ#U*%7a4J7v-}XFpdG-JtQH;IVM<`*C;VLT5&M@F?Hv&+Lmr&C9 zz+VAiL*)N_jFNzVDI}B!?x2_6TeW_8FBu?2Z~8hg1*O}eGw|0Q_3yEHP}?F)9bW6C z5ph6R!hMP#ZA6wJx*%6)IrYw!>5V}a@vbt<7l@Vy7D7>qt~1oiw_+0=o1i4s?n4L1 zyb(JGhxwvWi2M!A(`mbm3WsW>*daQ?N_Bt;Ts5{*{E=z%{;ia12MsC z8q=lVmWq#usC~4l*+#_WSH+ed<)1`9`RONdx1V8+JFVs7?3e+d?0OF8%;rH@)P@sn zG~74mipHe+ZXS1na%3;c%lkl{xW{OeSdl*lPeAg5WMcIkk!Bt&%sL7f1`kgO}L<#0+q0zEQget~od*xnxew7&ef-@epc+WT+KLiJ9 zHWc`7?r{}3FL8;>D|W^i+2-!qE3#_YwTO6|w=L?XI)ylKj z7f^`{!B)qur0U*dUwy+}NNf`*^f_OShR7!fap{HQmeo)e1-OCH+@!&+sGv}ckzB8`)Z_g87dZn{)%cDx z(rl@VTK}h~CzeF|FY17W9Nq=bL9+)Y7W3}i{z~Srng)nD98L53&-(n+vGq}dlZjSBZ;I5;@&vOatEjDCyD zEG$}(!b+Gvj*K62)e@^rMlvi8&-oi<8+LFrM`xDSwp-MK=It4#Y6SNG0LA*Sv-j9Khzs8dlaopzdz7JQ6+tspwF)lAO4ff-i?KYL2AGI6_N$1#Y{ zX^qC?&vVJZ<0r!)^!?6a-`61_yUX+>yvy`T(V&4a?A23L5l}I8kLkpSng^i88C*qV z5+nBQw^hEY@9%iXVjW9u9ZQ%5Fp;=V?^iAtd(osg4+jD}geLzXKSoxpYLXb#cZK)z z>_?9rsq3jM!r%*HP0XhEd{oclvj=He#9IZpw{MJm6nB61rv8v4-NbR1NI+${kmX4s zyqxCFPiTsF4PYg?5?ncXmC66T5JITT#=?s@R)g$kxe zIyxMyUr_lQmDkqRBC8ulvHrLCLv>z|FA}T583?^ffQC2>Ig(o&r^VakIM#)69iH8e zo~!v(YbXGtzD2+pWA>L4o>~~{4wQLAPa(?n=3=5{l1Os)knsTb?6Gk~$*r`I>l&Md zSRCdFAEkrN> zsZ98ZaRGIhF>UvWqgs6?rC$?sakk>sV-?3HOQnvATUL01w~Z zCn`!?FJQMans3@8x&Qq6b5L51jNaa?H0PS@W^2$W;TWoI{PW8UaG!6A>=qLd(MW4z zlb)$3Fy0#$EKX%*<>>1Y}ijL5L7M z+OgObrefTR(LM%JFISnKCEV1`bH~GM8}v@tc;~*<;*D?U8$F1y6m_`BZ*u^v2J)%Q z8Tj_?+tCl^{-j!SjavcQIPRg~Jygrn&Ur$=Z#S8cxksyWAK&2(Wags64ZBYQFPhRl zH4YVZXrm2timD+`NJ1Br#px-P{`qV}(i#^F=d=I(2&D8WaUtOYoW9yw;J zfsz!=r|Vm$w-oS3tzl}a!N4(c6sq_pQ{ayw#{?#W%MSZuol*?T zybAzw0(|N4v)M^JI8lP;)nn?^3++s!%r%M>hBbXYev@%@Cu7K76M!_+0wYU!(q1yd zcgDuX^!ay3=GpqEk~1he?O3*OrM?v$2)$0;2j$)P$0j8Nak~1`&DvxLBe{Z-bDSsR zj)wOjMp>n~ZMKlZbZG#%&M5SIRz=%(?=m2ucLCUa+1UNNS1FOZxJrUD7|r{DgoMLk z4Ea?b%ge*q@6$4E-PA@_A|#`XO)WGune!TuCf~oS+w%(xUnW9NjodqH{TLs8{Pj!U z{z>(X?y)@myanKjMgd`~Uk}uKHsZce+V=K^{K0GNl@ktsJzEPY~X%|0&*jC zcb&v(SfL{M_y&T)CqD&1ydNBUF+q#h+v5u~DX_i~1kS~T?U7mHyJ&7TVBnXiyWB^NPE6?NVPXZ6yY8Jc4~?8am0ne{u`ei;;VX0>bZD>hSKG&Sv%|Y|{@X z%gH%k%LgD!QFrSd2681NU>7Ou8GaBqrH&DcaP{F=|7zCtC6GO?bQNVw1 zio6*rL|@G9I(nBF+>&_w-m1C4*5vtlb*(Se)da}Udwvwf2^s#kQTIBSmoC}a3m-qu zzDrXvsnM~RmqFwa(P`Yk_b(pQ5IV0n{C@tr>+f$cV6x%%@YHWU zx69Nv{Nz7coUFxrKR84l*Y(G-cGe^U(Ga4-I9*TDO(f!~?W8CuUofZ$m z?Cp#-+j3<$xheKuk8&PAXP}r`7afH1&ON< z){)!;cX%h5^$zk~AdCG|jxKg~$3@A1xAoakoD(KZW}u7dKuam+U!%^ux)hh6pQq+y zaUPWlsnsS5iUU3@Af#59{D7p00rb68Wh zZiHbVb33Qfj|4djHu3kX2HmI`WLmymh>8?>MIExPiD_>>K9 zjmad#wO&hdgo7T48E<6j1+b*y!$(FO38^(&4fwoo@h>#}LQhhOSpSi?Z~pp3nq##E zb^{j0zvw%y;CG6cwGQ5}Dh8syh{(_5Ak?ROv}(jAFh7i=SdDNOh5P4F)mOCHZSsf- zJfkPFu^;}eeuUBnFl<~`lV96OMC&MjKxM_fzhz>^WynO=B-9x~jo$NsV?(JpftV!U zE4doZx}wZV@eQ5lKy5cMCDj>j-{>*=L7LZQRc~4;6TPA^UpKd=SeB zv?5?ibC>o4o|9J-9~4rE3QoSM`7#_eq}Rcx2c2iPi6%d6SB8uTSzdH^9ZNBH;VOdI zFy*MtZ4;WGpHDn)-c5hsSaR*tP1ej!H6l9Zs|3wf^0TV1URH*ip-P{>vl0i-IT=J` z^R=KvbXKA}{ab@P10=FT2P=tQe2AD5vk#GH2Q5(V{dSJ4MkMZ&!0cvmtI>*SaYQ4v@B+CajRcv35?H$MVD7p z^yHvD)xkuB({Ie+vj$Al{Piu|OEMrIo_zi~4_F5R)3!}q15l3$*WTW0tV;&vzw^Jc zsl;wV|LeSt3K(3aclG+xY`Fw2HYZEZ|6j-mOT-%@@5wiIsIZ2S1*8&LI4CguYaK{d?MClgF?W8GrmAib;zy)LYIJu zxBKq}T+z+z`)us_#l?9UR6k&hli(zg_>{Nw+8wLuk$~fpM~eUp%JeR9x4I}4+lfRl zgA#7iCKE5mOtIPbY3JQSmI*#Q&Ldy-~izZl$GIcWl9;c z8=w>kSzUo|^P-dBu-pv8cOWBV8Ce<|b29tMdGeC!Wpr9|L0&Hg^>pVxsV&c^VH9%M zt8^}`bgreT1Uh7X$x@4n%ZXRneV%{OUPm^A$dUu^v8b9Ad=TgY@reu{wJkB7ilcD^ zq0)47ZEVguYi=QY2vM?Rc6Fc&Cn>vL0=9UU`TP5qeCou(J8Tx_8=8qhlU9$?Hr=I0 zT^d^2KUVq6i;0;={_X$#BO$@Jj`T{I6GC3+!;bxHqSHVb!96)dVRR5D82ZX|hVMCx zONfXtMnZ~Gke5H}nc7W;WZaemdI`#*VPOHAt5WL>v&=4J8Ts>)GmBtwWSY?|kkB;n za?4*&@zxJ6JEYB^{G9gAHGN1Ghclt^ws<*qm>DnNr{f-Qyu_udbkfXXm9c$44` z3q!(Ijy}Xz;nPuTYtJ7Kqfrv=f0qI2ikMGnuz)o4JDy3sqyR8(SP)VYJ^FY&J-MY=7|*@!SjBHG8sEGui{G*XU> zh(O}V!Y#fn6PyVIAoVLo>B32zC$sS-iwqNjZO%DvEFi#9{J}eVWl2an1 zsW%Fk%>9R`H?U1GSQNBbE>W2?rHR|o<=MZ~BXnZ|R5e%tgGJSBy3Y<1jhF^vyph?A z&DiVcN8V^N-ay%GogyI-k$&x+@4zE*uxH3Pn~^!Lp${K-u;KpS>*YYQKsk!*gsRCE z=w+e)8goN&xn%*B`ru#H`-^4C0XBpW4$@^0Fk&P=wlDG#JM|sN;Q~8g=j;`C7V!Om z!zn!$jSO|veh$U(QP)jNtBUajJRdF_clG)C|J2@AtIaLL83(5Nj*}5|+@hJ^DdH(EdTv;(^%~Azn-Cul7I3LWuM~m2v~6>i9n%HXvz&pRmBl}Uy)zg*f`$T{NL!|4zwS=9&(Tq=Zi<@dN8S-ob-$t>eJza_U(+iWH=oG>+2++L=HaYKv~|*%@czb}g(tG${NMsk4qmlychs4p^@2!D zutzEm*a;m|ML>RFpUEtd?<~yeEK^hQtl$zYdK8{>XS(Q)oS%uJgHSWwQt-GzTb!dr)vpc2&REz55$!iaT!9(M!r+{a&;-#kdCS&T+mxGhmk2G#cNIApZ+qAPk+EbSZtYeW^Djg8Gtd4|lHDI#NqIjE?qtr@xj ztu85qirsz4$P#dMwvQdiqXN%Q5^M+o#xMKq-K+Jo(D)aKf953+DzCtgum+C-hD{Oe z2A!T@bJ9@t3ib{JZw{b_lQ6fgTZ| zOUCmuKb8$?3Op6^vs(Y$ev9o3?n8iDR~S*KrtD|Dk~4P8{l8&;7!1CC=E9nHFmaaH&4jy34coTpe>8w zu4>M@9IR@ayx%t=`}hd z=j)*oA8q~MO+R=X8<9?jL) zZ|WQ!$Abyb!0U!wLp8#dqvXdIkJ!t-WOqQD!9!KvHPpJ{$k(}=h{=r9BoU$bXvGeY zLr`J>iU9KW)UVW;#cu#ehXRlK#wFK_r=!RqjlIp7K%_JioxkYB&3J)8*lVrJV=TFb z0{3r5bu;{DO(aD~f>>aJwf^``!D+|qH461}alFctt$kxHPA7CaL8S$lvb%#4JYwSG zP#-|P(t#N19XC7c8owO!*MVZ)@b%SOtHvBCZ9(Fr2epFvsG^l4u-7#SK|QYq=PSxj zd;@1RMEM&ULnDJ?f_+`8Gh(l!hLGfssISVAN^7q6wn1RB(P`6Yx21Ue2+1HDe{9HD zA-8l-iwOAZA^-{;+u-gmKickg;$|LNy}efS$iyLLPs}?o zCQ?(31W0;sWeTn*8&#Fdbk(}TlRei!VbEzi@={(AL_D2guP`h^N^CEDg|IpU)!M`7 z_aGC6dlI*rmo^pe*RhH#L!rI$WlQBt5NE41){(4*wuh(b#ci>q)6c!|oC^-;Y9Ep6 zl6%~q!?v)^s}m$}r7XUZwZJuCG{Fl1A1BCDPg|u=Vv3>u!3R_>BmGm-;3NOIk4)g> zQp?laB9M&!2w)x6uC&WiYyVR+dxvVfkxUTC!rnp*W-Tm~8%QD*5D+$@Z0+hn zfz8yDaB!3tBn3~8RZ=rj z0)|tcFHu#De);lcwU45r;+_!{)hLHxcAj>M!pN-^6%`K+E^7^=T30q`oz<@*kr_pO zaF+(TzrG<;?{Aa6%i*WH93zo1UM{niq$Sj1Us(mhg1`8u_Ot1`F1yW{GimR_w&*o$ z*6dwatT^Mft)(P51~?v5C!6+`Kzh^(PSh& z3G!V280wJ2bgZ)q$3v2$bL zk>M1ho@)}0Zd~Ob0$5QPmL3&+5#PB|cFg^Pg}gKKw=LQP-Onk?ed4{(|a2<}5t&V$bzHaamnI1jeYJd&i~^K0|`ZBOv?0BbrEQK+bqTi3NLbu}~a z7VTV|-AE~$iHV8%qafkkCJ8**^pr#W{r%yE>xkUGuNoSZLk=DN`5v~geb?Revc7fi z^Q(>chLJ9vs`Le!7|&0k&_~OjzM>$Z*e_?#YFn5emJvEwQ`1DV<~D51NS5U)JV_YqUz#0gMq=(2BYimD=n~NQa&)IYcib34; z6^X@eYuEpVtHpxeuBq{H61oVDU4$LBeNo=HX7ivs>Ui3gaEc*uL)xaky-1P%xOi$x3 zU>J59_X;B#Y_L2RO~Zt@s$;C13(-k;g<3#1&Q2=pa7Y`g@?gJ$tC})RpgMw~%_LJi|u8M1tRBNM` zEsETP1@DPTOG`_rJC2&$G34{0Tha1$* z!7kD4qqVG>(y+7$&pkxL&SnM%`CV!(PWbT+;BGqTU=FT@gV~ zx&vQfPSLF!8JS8-)zMHOFeKz9ntxAEaRsJ{thIKL7;i4Q>Fapz40x$CuOczp*w9Mf zS)>=m@iad@6+(wRu~$=5L&x#hP)GWZJl%5QZdXvMX!&{e%+?fl(HYkcT`x9o(`lzX z9sY|x578?34r{4fb|gPvBQ>cnB^>&72LeH03Lj`pDNi;`oo!$NJ3M2u`RNbi7}40^PQH37D%d}c z?Jzj~ZN>N9SQKab^0eD%PGvetu}Z@=EHqStc0S(8%S1{g*4h)yEKln|Q9sNnCo9Wd zbOz&Qr=ICKVQ6T`;LtXjeJg1@$G;G010DwwCD&Jfr>#bK>nN literal 0 HcmV?d00001 diff --git a/docs/Figures/EMT/VoltageSource/diagram.tex b/docs/Figures/EMT/VoltageSource/diagram.tex new file mode 100644 index 000000000..b183d60e6 --- /dev/null +++ b/docs/Figures/EMT/VoltageSource/diagram.tex @@ -0,0 +1,37 @@ +\documentclass[tikz,border=12pt]{standalone} +\input{../diagram-style.tex} + +\begin{document} +\begin{tikzpicture}[emt diagram] + +% ================= Terminal admittance branch ================= +\node[block, minimum width=2.1cm, minimum height=0.9cm] + (Y) at (0, 1.15) {$\mathbf{Y}(s)$}; + +% ================= Terminal voltage and current ================= +\node[signal, label={[sig]above:$\mathbf{v}$}] (vport) at (-2.3, 1.15) {}; +\draw[->, line] (Y.west) -- (-3.05, 1.15); +\node[sig, anchor=east] at (-3.3, 1.15) {$\mathbf{i}$}; + +% ================= Internal source voltage ================= +\node[signal, label={[sig]above:$\mathbf{e}$}] (enode) at (1.85, 1.15) {}; +\draw[line] (Y.east) -- (enode); + +% ================= Independent voltage source ================= +\node[draw, semithick, fill=white, circle, minimum size=1.0cm] + (source) at (1.85, -0.3) {}; +\draw[line] (enode) -- (source.north); +\node[pm] at ($(source.center)+(0,0.23)$) {$+$}; +\node[pm] at ($(source.center)+(0,-0.23)$) {$-$}; + +% ================= Ground reference ================= +\draw[line] (source.south) -- (1.85, -1.50); +\draw[semithick] (1.50, -1.50) -- (2.20, -1.50); +\draw[semithick] (1.63, -1.65) -- (2.07, -1.65); +\draw[semithick] (1.76, -1.80) -- (1.94, -1.80); + +% ================= Model enclosure ================= +\draw[enclosure] (-1.5, -2.2) rectangle (2.85, 2.05); + +\end{tikzpicture} +\end{document} diff --git a/docs/Figures/EMT/diagram-style.tex b/docs/Figures/EMT/diagram-style.tex new file mode 100644 index 000000000..d4da54601 --- /dev/null +++ b/docs/Figures/EMT/diagram-style.tex @@ -0,0 +1,23 @@ +% Shared visual language for standalone EMT block diagrams. +\usepackage{amsmath} +\usetikzlibrary{arrows.meta,backgrounds,calc,fit,positioning} + +\tikzset{ + emt diagram/.style = {>={Stealth[length=2.4mm]}}, + line/.style = {semithick, rounded corners=6pt}, + block/.style = {draw, semithick, fill=white, + minimum height=1cm, minimum width=2.3cm}, + hblock/.style = {block, minimum width=2.24cm, minimum height=1.3cm}, + vblock/.style = {block, minimum width=1.3cm, minimum height=2.24cm}, + sum/.style = {draw, semithick, fill=white, circle, + inner sep=2.6pt}, + signal/.style = {circle, fill, inner sep=1.4pt, + label distance=3pt}, + sig/.style = {font=\small}, + pm/.style = {font=\scriptsize}, + wire jump/.style = {line, + preaction={draw=white, line width=3pt, + line cap=round}}, + enclosure/.style = {draw, dashed, semithick, rounded corners=4pt}, + operator enclosure/.style = {enclosure, inner xsep=7mm, inner ysep=6mm} +} diff --git a/docs/Figures/EMT/lumped_constant_diagram.svg b/docs/Figures/EMT/lumped_constant_diagram.svg deleted file mode 100644 index ee4945dc4..000000000 --- a/docs/Figures/EMT/lumped_constant_diagram.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/GridKit/Model/EMT/Component/Branch/BranchLumpedConstant/README.md b/docs/GridKit/Model/EMT/Component/Branch/BranchLumpedConstant/README.md deleted file mode 100644 index 9f3caaec5..000000000 --- a/docs/GridKit/Model/EMT/Component/Branch/BranchLumpedConstant/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# BranchLumpedConstant - -```{include} ../../../../../../../GridKit/Model/EMT/Component/Branch/BranchLumpedConstant/README.md -:start-line: 1 -:relative-images: -``` diff --git a/docs/GridKit/Model/EMT/Component/Branch/README.md b/docs/GridKit/Model/EMT/Component/Branch/README.md deleted file mode 100644 index 27dca5bee..000000000 --- a/docs/GridKit/Model/EMT/Component/Branch/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Branch - -```{toctree} -:maxdepth: 4 -:titlesonly: -:hidden: - -BranchLumpedConstant -``` - -```{include} ../../../../../../GridKit/Model/EMT/Component/Branch/README.md -:start-line: 1 -:relative-images: -``` diff --git a/docs/GridKit/Model/EMT/Component/Line/LineDistributed/README.md b/docs/GridKit/Model/EMT/Component/Line/LineDistributed/README.md new file mode 100644 index 000000000..d6c0f6982 --- /dev/null +++ b/docs/GridKit/Model/EMT/Component/Line/LineDistributed/README.md @@ -0,0 +1,6 @@ +# LineDistributed + +```{include} ../../../../../../../GridKit/Model/EMT/Component/Line/LineDistributed/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Component/Line/LineLumped/README.md b/docs/GridKit/Model/EMT/Component/Line/LineLumped/README.md new file mode 100644 index 000000000..d9be74289 --- /dev/null +++ b/docs/GridKit/Model/EMT/Component/Line/LineLumped/README.md @@ -0,0 +1,6 @@ +# LineLumped + +```{include} ../../../../../../../GridKit/Model/EMT/Component/Line/LineLumped/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Component/Line/README.md b/docs/GridKit/Model/EMT/Component/Line/README.md new file mode 100644 index 000000000..57440c5e4 --- /dev/null +++ b/docs/GridKit/Model/EMT/Component/Line/README.md @@ -0,0 +1,15 @@ +# Line Models + +```{toctree} +:maxdepth: 4 +:titlesonly: +:hidden: + +LineLumped +LineDistributed +``` + +```{include} ../../../../../../GridKit/Model/EMT/Component/Line/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Component/Load/LoadZ/README.md b/docs/GridKit/Model/EMT/Component/Load/LoadZ/README.md new file mode 100644 index 000000000..02050f1fe --- /dev/null +++ b/docs/GridKit/Model/EMT/Component/Load/LoadZ/README.md @@ -0,0 +1,6 @@ +# LoadZ + +```{include} ../../../../../../../GridKit/Model/EMT/Component/Load/LoadZ/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Component/Load/README.md b/docs/GridKit/Model/EMT/Component/Load/README.md new file mode 100644 index 000000000..17cc7bab1 --- /dev/null +++ b/docs/GridKit/Model/EMT/Component/Load/README.md @@ -0,0 +1,14 @@ +# Load Models + +```{toctree} +:maxdepth: 4 +:titlesonly: +:hidden: + +LoadZ +``` + +```{include} ../../../../../../GridKit/Model/EMT/Component/Load/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Component/LoadRL/README.md b/docs/GridKit/Model/EMT/Component/LoadRL/README.md deleted file mode 100644 index ce5aa7f65..000000000 --- a/docs/GridKit/Model/EMT/Component/LoadRL/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# LoadRL - -```{include} ../../../../../../GridKit/Model/EMT/Component/LoadRL/README.md -:start-line: 1 -:relative-images: -``` diff --git a/docs/GridKit/Model/EMT/Component/README.md b/docs/GridKit/Model/EMT/Component/README.md index 587ecb957..625395ce4 100644 --- a/docs/GridKit/Model/EMT/Component/README.md +++ b/docs/GridKit/Model/EMT/Component/README.md @@ -1,13 +1,13 @@ -# Component +# Component Models ```{toctree} :maxdepth: 4 :titlesonly: :hidden: -Branch -LoadRL -VoltageSource +Line +Load +Source ``` ```{include} ../../../../../GridKit/Model/EMT/Component/README.md diff --git a/docs/GridKit/Model/EMT/Component/Source/README.md b/docs/GridKit/Model/EMT/Component/Source/README.md new file mode 100644 index 000000000..7a26b6fa8 --- /dev/null +++ b/docs/GridKit/Model/EMT/Component/Source/README.md @@ -0,0 +1,14 @@ +# Source Models + +```{toctree} +:maxdepth: 4 +:titlesonly: +:hidden: + +VoltageSource +``` + +```{include} ../../../../../../GridKit/Model/EMT/Component/Source/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Component/Source/VoltageSource/README.md b/docs/GridKit/Model/EMT/Component/Source/VoltageSource/README.md new file mode 100644 index 000000000..385def25c --- /dev/null +++ b/docs/GridKit/Model/EMT/Component/Source/VoltageSource/README.md @@ -0,0 +1,6 @@ +# VoltageSource + +```{include} ../../../../../../../GridKit/Model/EMT/Component/Source/VoltageSource/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Component/VoltageSource/README.md b/docs/GridKit/Model/EMT/Component/VoltageSource/README.md deleted file mode 100644 index fd8ce8d32..000000000 --- a/docs/GridKit/Model/EMT/Component/VoltageSource/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# VoltageSource - -```{include} ../../../../../../GridKit/Model/EMT/Component/VoltageSource/README.md -:start-line: 1 -:relative-images: -``` diff --git a/docs/GridKit/Model/EMT/Operators/README.md b/docs/GridKit/Model/EMT/Operators/README.md new file mode 100644 index 000000000..70b0182b7 --- /dev/null +++ b/docs/GridKit/Model/EMT/Operators/README.md @@ -0,0 +1,15 @@ +# Operator Models + +```{toctree} +:maxdepth: 4 +:titlesonly: +:hidden: + +Rational +Shift +``` + +```{include} ../../../../../GridKit/Model/EMT/Operators/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Operators/Rational/README.md b/docs/GridKit/Model/EMT/Operators/Rational/README.md new file mode 100644 index 000000000..eaa39223c --- /dev/null +++ b/docs/GridKit/Model/EMT/Operators/Rational/README.md @@ -0,0 +1,15 @@ +# Rational Operators + +```{toctree} +:maxdepth: 4 +:titlesonly: +:hidden: + +VectorFit +StateSpace +``` + +```{include} ../../../../../../GridKit/Model/EMT/Operators/Rational/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md b/docs/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md new file mode 100644 index 000000000..accca8421 --- /dev/null +++ b/docs/GridKit/Model/EMT/Operators/Rational/StateSpace/README.md @@ -0,0 +1,6 @@ +# StateSpace + +```{include} ../../../../../../../GridKit/Model/EMT/Operators/Rational/StateSpace/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md b/docs/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md new file mode 100644 index 000000000..1f7c04488 --- /dev/null +++ b/docs/GridKit/Model/EMT/Operators/Rational/VectorFit/README.md @@ -0,0 +1,6 @@ +# VectorFit + +```{include} ../../../../../../../GridKit/Model/EMT/Operators/Rational/VectorFit/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Operators/Shift/Delay/README.md b/docs/GridKit/Model/EMT/Operators/Shift/Delay/README.md new file mode 100644 index 000000000..3dfee5db2 --- /dev/null +++ b/docs/GridKit/Model/EMT/Operators/Shift/Delay/README.md @@ -0,0 +1,6 @@ +# Delay + +```{include} ../../../../../../../GridKit/Model/EMT/Operators/Shift/Delay/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Operators/Shift/Propagation/README.md b/docs/GridKit/Model/EMT/Operators/Shift/Propagation/README.md new file mode 100644 index 000000000..d9dda68a4 --- /dev/null +++ b/docs/GridKit/Model/EMT/Operators/Shift/Propagation/README.md @@ -0,0 +1,6 @@ +# Propagation + +```{include} ../../../../../../../GridKit/Model/EMT/Operators/Shift/Propagation/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/Operators/Shift/README.md b/docs/GridKit/Model/EMT/Operators/Shift/README.md new file mode 100644 index 000000000..e53b18fb2 --- /dev/null +++ b/docs/GridKit/Model/EMT/Operators/Shift/README.md @@ -0,0 +1,15 @@ +# Shift Operators + +```{toctree} +:maxdepth: 4 +:titlesonly: +:hidden: + +Delay +Propagation +``` + +```{include} ../../../../../../GridKit/Model/EMT/Operators/Shift/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/GridKit/Model/EMT/README.md b/docs/GridKit/Model/EMT/README.md index 7a6e5fe76..f1c24672b 100644 --- a/docs/GridKit/Model/EMT/README.md +++ b/docs/GridKit/Model/EMT/README.md @@ -1,4 +1,4 @@ -# EMT +# Electromagnetic Transients (EMT) ```{toctree} :maxdepth: 4 @@ -7,6 +7,7 @@ Bus Component +Operators ``` ```{include} ../../../../GridKit/Model/EMT/README.md diff --git a/docs/examples/EMT/README.md b/docs/examples/EMT/README.md new file mode 100644 index 000000000..1b9ba8cea --- /dev/null +++ b/docs/examples/EMT/README.md @@ -0,0 +1,6 @@ +# Electromagnetic Transients (EMT) Examples + +```{include} ../../../examples/EMT/README.md +:start-line: 1 +:relative-images: +``` diff --git a/docs/examples/README.md b/docs/examples/README.md index d06c6f640..2cd095d72 100644 --- a/docs/examples/README.md +++ b/docs/examples/README.md @@ -5,6 +5,7 @@ :titlesonly: :hidden: +EMT PhasorDynamics PowerElectronics PowerFlow diff --git a/examples/EMT/README.md b/examples/EMT/README.md new file mode 100644 index 000000000..a4214cabe --- /dev/null +++ b/examples/EMT/README.md @@ -0,0 +1,48 @@ +# Electromagnetic Transients (EMT) Examples + +This directory preserves the intended model composition for future EMT +examples. The trees describe ownership and nesting only. They do not define a +case-file schema. + +> [!NOTE] +> The formulations support $N$ phases; initial development targets three +> phases. + +## LineLumped + +```text +LineLumped + parameters: N, K, conductors, dx + initial state: i12 + submodels + Zp: VectorFit + Yp[1]: VectorFit + Yp[2]: VectorFit +``` + +Zp represents per-unit-length series impedance. The two Yp instances represent +terminal shunt admittances. Pole-free coefficients give the RLGC form, while +poles and residues give the frequency-dependent form. + +## LineDistributed + +```text +LineDistributed + parameters: N, K, conductors + submodels + Yc[1]: VectorFit + Yc[2]: VectorFit + H21: Propagation + input: VectorFit + delays[M]: Delay + output: VectorFit + H12: Propagation + input: VectorFit + delays[M]: Delay + output: VectorFit +``` + +Yc represents characteristic admittance. H21 and H12 represent directional +propagation. The rational factors have no term linear in $s$. Pole-free +factors give the Bergeron form, while fitted poles and residues give the +frequency-dependent form. diff --git a/examples/README.md b/examples/README.md index cd7ad11eb..5fdb0c374 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,6 +1,8 @@ # GridKit™ Usage Examples -GridKit™ usage examples are organized in following way: +GridKit™ usage examples are organized as follows: + +- [EMT](EMT/README.md) contains architecture skeletons for future EMT examples. - `Enzyme` directory contains Enzyme automatic differentiation examples. - `Experimental` directory contains examples of dynamic-constrained optimization. @@ -13,5 +15,5 @@ GridKit™. - `PowerFlow` contains examples of power flow steady-state simulations with GridKit™. -Examples are also used as integration tests for GridKit™ and are run on CI -pipeline. +Executable examples are also used as integration tests for GridKit™ and are +run on CI pipeline. From e870df4d3a3bb3cde2423250e09a90fb8f10b7e4 Mon Sep 17 00:00:00 2001 From: Luke Lowery Date: Thu, 23 Jul 2026 10:13:11 -0500 Subject: [PATCH 2/3] improved delay formulation --- .../Model/EMT/Operators/Shift/Delay/README.md | 159 ++++++++++++------ .../EMT/Operators/Shift/Propagation/README.md | 18 +- docs/Figures/EMT/Delay/diagram.png | Bin 28906 -> 19776 bytes docs/Figures/EMT/Delay/diagram.tex | 30 ++-- docs/Figures/EMT/DelayHistory/diagram.png | Bin 0 -> 124924 bytes docs/Figures/EMT/DelayHistory/diagram.tex | 83 +++++++++ 6 files changed, 206 insertions(+), 84 deletions(-) create mode 100644 docs/Figures/EMT/DelayHistory/diagram.png create mode 100644 docs/Figures/EMT/DelayHistory/diagram.tex diff --git a/GridKit/Model/EMT/Operators/Shift/Delay/README.md b/GridKit/Model/EMT/Operators/Shift/Delay/README.md index 520721aea..c5978c3ba 100644 --- a/GridKit/Model/EMT/Operators/Shift/Delay/README.md +++ b/GridKit/Model/EMT/Operators/Shift/Delay/README.md @@ -1,13 +1,15 @@ # Delay Model -For input units $[u]$, `Delay` maps scalar input $u$ to delayed output -$y_{\mathrm{out}}$ through a chain of first-order lag sections. +`Delay` applies a constant transport delay to each of $M$ input channels: -> [!WARNING] -> The lag chain is an exact sampled $J$-step delay under forward Euler when -> $h = T$. -> Otherwise it is an approximation. The `fmax` parameter controls section -> density. It does not guarantee accuracy over a signal bandwidth. +```math +\mathbf{D}_{\boldsymbol{\tau}}(s) + = \mathrm{diag}\left(e^{-s\tau_1},\ldots,e^{-s\tau_M}\right). +``` + +At runtime, accepted-step input samples are reconstructed with cubic Hermite +interpolation. `Delay` adds no DAE variables or residual rows. A scalar delay +is the $M=1$ case. ## Block Diagram @@ -19,26 +21,24 @@ Figure 1: Delay model Symbol | Units | JSON | Description | Note ------ | ----- | ---- | ----------- | ---- -$\tau$ | [s] | `tau` | Total delay | Required, positive -$f_{\max}$ | [Hz] | `fmax` | Lag-chain section rate | Required, positive +$M$ | [-] | `M` | Channel count | Required, positive integer +$\boldsymbol{\tau}$ | [s] | `tau` | Channel delays | Required, each positive ### Parameter Validation ```math \begin{aligned} -\tau &> 0 \\ -f_{\max} &> 0 +M &\in \mathbb{Z}_{>0} \\ +\tau_m &> 0 \end{aligned} ``` ### Derived Parameters ```math -\begin{aligned} -J &= \lceil f_{\max}\tau \rceil \\ -T &= \dfrac{\tau}{J} \\ -\mathcal{J} &= \{1,\ldots,J\} -\end{aligned} +\tau_{\min} = \min(\boldsymbol{\tau}), +\qquad +\tau_{\max} = \max(\boldsymbol{\tau}) ``` ## Submodels @@ -51,13 +51,13 @@ None. ## Model Variables +History samples are implementation data, not DAE variables or residual rows. + ### Internal Variables #### Differential -Symbol | Units | Description | Note ------- | ----- | ----------- | ---- -$\mathbf{y}$ | $[u]$ | Section differential states | $\mathbf{y} \in \mathbb{R}^J$ +None. #### Algebraic @@ -73,26 +73,22 @@ None. Symbol | Units | Description | Note ------ | ----- | ----------- | ---- -$u$ | $[u]$ | Input signal | $u \in \mathbb{R}$ +$\mathbf{u}$ | $[u]$ | Input vector | $\mathbf{u} \in \mathbb{R}^M$ ## Model Ports Symbol | Port | Type | Units | Description | Note ------ | ---- | ---- | ----- | ----------- | ---- -$u$ | `input` | Input | $[u]$ | Input signal port | $u \in \mathbb{R}$ -$y_{\mathrm{out}}$ | `out` | Output | $[u]$ | Delayed output port | $y_J$ +$\mathbf{u}$ | `input` | Input | $[u]$ | Input vector port | $\mathbf{u} \in \mathbb{R}^M$ +$\mathbf{y}$ | `out` | Output | $[u]$ | Delayed output port | $\mathbf{y} \in \mathbb{R}^M$ + +The output provides both value and time derivative. ## Model Equations ### Differential Equations -```math -\begin{aligned} -0 &= -T\dfrac{\mathrm{d}y_1}{\mathrm{d}t} - y_1 + u \\ -0 &= -T\dfrac{\mathrm{d}y_\ell}{\mathrm{d}t} - y_\ell + y_{\ell-1}, - \quad \ell \in \mathcal{J} \setminus \{1\} -\end{aligned} -``` +None. ### Algebraic Equations @@ -101,59 +97,110 @@ None. ### Wiring ```math -y_{\mathrm{out}} \leftarrow y_J +\mathbf{y} + \leftarrow \mathbf{u}(t-\boldsymbol{\tau}), +\qquad +\dfrac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} + \leftarrow \dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t}(t-\boldsymbol{\tau}) ``` -## Initialization +Each channel satisfies $y_m(t)=u_m(t-\tau_m)$. Arguments at or before zero use +the prehistory defined under Initialization. -The uppercase symbols $U$, $Y_\ell$, and $Y_\mathrm{out}$ denote RMS phasors -of the corresponding lowercase variables. +## History Realization -### Input Initialization +### History Record + +Accepted input history is stored as the knot sequence + +```math +(t_j,\ \mathbf{u}_j,\ \mathbf{u}'_j), +\qquad 0 = t_0 < t_1 < \cdots < t_n, +``` + +where $\mathbf{u}_j$ and $\mathbf{u}'_j$ are the input value and derivative at +$t_j$. The first knot holds the initialized values. Channels share knot times +and read the record at $t-\tau_m$ independently. + +![Delay history record and per-channel taps](../../../../../../docs/Figures/EMT/DelayHistory/diagram.png) + +Figure 2: Delay history record and channel taps + +> [!WARNING] +> Later knots are appended only at accepted steps, and the solver step size +> must not exceed $\tau_{\min}$. These constraints keep every lookup at or +> behind the accepted frontier; the realization must not extrapolate beyond +> it. + +### Interpolation + +Suppressing the channel index, a lookup at $\xi \le 0$ uses the analytic +prehistory. For $\xi \in (t_j,t_{j+1}]$, the bracketing knots define the cubic +Hermite interpolant ```math \begin{aligned} -U - &\leftarrow \text{RMS input phasor} \\ -u - &\leftarrow \sqrt{2}\,\mathrm{Re}(U) \\ -\dfrac{\mathrm{d}u}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathrm{j}\omega_0U). +h_j &= t_{j+1}-t_j, +\qquad +\theta = \dfrac{\xi-t_j}{h_j} \\ +u(\xi) + &= (1-\theta)^2(1+2\theta)\,u_j + + \theta(1-\theta)^2\,h_j\,u'_j \\ + &\quad + + \theta^2(3-2\theta)\,u_{j+1} + - \theta^2(1-\theta)\,h_j\,u'_{j+1}, \end{aligned} ``` -### Internal Initialization +Its derivative comes from the same polynomial. For smooth input and exact +knot data, the interpolant is $C^1$ with nominal fourth-order value accuracy +and third-order derivative accuracy in the knot spacing. + +## Initialization + +### Input Initialization ```math \begin{aligned} -Y_\ell - &= (1+\mathrm{j}\omega_0T)^{-\ell}U, - \quad \ell \in \mathcal{J}. +\widehat{\mathbf{u}} + &\leftarrow \text{RMS input phasor} \\ +\mathbf{u} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{u}}) \\ +\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{u}}). \end{aligned} ``` -At $t=0$, +### Internal Initialization + +The analytic prehistory is ```math \begin{aligned} -y_\ell - &\leftarrow \sqrt{2}\,\mathrm{Re}(Y_\ell) \\ -\dfrac{\mathrm{d}y_\ell}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathrm{j}\omega_0Y_\ell), - \quad \ell \in \mathcal{J}. +\mathbf{u}(t) + &= \sqrt{2}\,\mathrm{Re} + \left(\widehat{\mathbf{u}}e^{s_0t}\right) \\ +\dfrac{\mathrm{d}\mathbf{u}}{\mathrm{d}t}(t) + &= \sqrt{2}\,\mathrm{Re} + \left(s_0\widehat{\mathbf{u}}e^{s_0t}\right), + \qquad t \le 0. \end{aligned} ``` +Only $t \in [-\tau_{\max},0]$ is needed. It matches the initialized input in +value and slope at $t=0$, avoiding delay-induced startup transients under a +consistent sinusoidal initialization. + ### Output Initialization ```math \begin{aligned} -Y_\mathrm{out} - &= Y_J \\ -y_{\mathrm{out}} - &\leftarrow \sqrt{2}\,\mathrm{Re}(Y_\mathrm{out}) \\ -\dfrac{\mathrm{d}y_{\mathrm{out}}}{\mathrm{d}t} - &\leftarrow \sqrt{2}\,\mathrm{Re}(\mathrm{j}\omega_0Y_\mathrm{out}). +\widehat{\mathbf{y}} + &= \mathbf{D}_{\boldsymbol{\tau}}(s_0)\,\widehat{\mathbf{u}} \\ +\mathbf{y} + &\leftarrow \sqrt{2}\,\mathrm{Re}(\widehat{\mathbf{y}}) \\ +\dfrac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} + &\leftarrow \sqrt{2}\,\mathrm{Re}(s_0\widehat{\mathbf{y}}). \end{aligned} ``` diff --git a/GridKit/Model/EMT/Operators/Shift/Propagation/README.md b/GridKit/Model/EMT/Operators/Shift/Propagation/README.md index 5e109441a..ec6987ae4 100644 --- a/GridKit/Model/EMT/Operators/Shift/Propagation/README.md +++ b/GridKit/Model/EMT/Operators/Shift/Propagation/README.md @@ -29,17 +29,19 @@ The full modal basis has one mode per channel: ```math \begin{aligned} M &= K \\ -\mathcal{M} &= \{1,\ldots,M\} \\ \boldsymbol{\tau} &= [\tau_1,\ldots,\tau_M]^\mathsf T \end{aligned} ``` +The modal delays are produced by the offline propagation fitting and enter +through the delay bank's `delays` coefficient set. + ## Submodels Symbol | Description | Type | Order | JSON | Inputs | Outputs ------ | ----------- | ---- | ----- | ---- | ------ | ------- $\mathbf{g}_\mathrm{in}$ | Input factor | [VectorFit](../../Rational/VectorFit/README.md) | $KQ_{\mathbf{g}_\mathrm{in}}$ | `input` | $\mathbb{R}^K$ | $\mathbb{R}^M$ -$d_m$, $m \in \mathcal{M}$ | Modal delay | [Delay](../Delay/README.md) | History | `delays` | $\mathbb{R}$ | $\mathbb{R}$ +$\mathbf{d}$ | Modal delay bank | [Delay](../Delay/README.md) | History | `delays` | $\mathbb{R}^M$ | $\mathbb{R}^M$ $\mathbf{g}_\mathrm{out}$ | Output factor | [VectorFit](../../Rational/VectorFit/README.md) | $KQ_{\mathbf{g}_\mathrm{out}}$ | `output` | $\mathbb{R}^M$ | $\mathbb{R}^K$ The offline fitting targets and propagation factorization are @@ -70,7 +72,7 @@ $\mathbf{T}_i^{-1}$ maps phase currents to modal coordinates. Both rational factors must have stable poles and no term linear in $s$. The input factor has algebraic input; the output factor has differential input -from the modal delays. +from the modal delay bank. ```math \mathbf{E}^\mathrm{in}=\mathbf{E}^\mathrm{out}=\mathbf{0} @@ -122,8 +124,7 @@ None. ```math \begin{aligned} \mathbf{w} &\leftarrow \mathbf{g}_\mathrm{in}[\mathbf{u}] \\ -z_m &\leftarrow d_m[w_m] \\ -\mathbf{z} &\leftarrow [z_1,\ldots,z_M]^\mathsf T \\ +\mathbf{z} &\leftarrow \mathbf{d}[\mathbf{w}] \\ \mathbf{y} &\leftarrow \mathbf{g}_\mathrm{out}[\mathbf{z}] \end{aligned} ``` @@ -152,9 +153,10 @@ The input-factor output phasor is = \mathbf{G}^\mathrm{in}(s_0)\widehat{\mathbf{u}}. ``` -The input factor initializes from $\widehat{\mathbf{u}}$. Each modal delay -initializes from $\widehat{w}_m$ and provides $\widehat{z}_m$; the output -factor initializes from $\widehat{\mathbf{z}}$. +The input factor initializes from $\widehat{\mathbf{u}}$. The modal delay +bank initializes from $\widehat{\mathbf{w}}$ and provides +$\widehat{\mathbf{z}}$; the output factor initializes from +$\widehat{\mathbf{z}}$. ### Output Initialization diff --git a/docs/Figures/EMT/Delay/diagram.png b/docs/Figures/EMT/Delay/diagram.png index fc11f5627e48187445814803cbc232f968b7c094..f597861487c5b9ef1f3dc2b8bb2128d6930d0e78 100644 GIT binary patch literal 19776 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 literal 28906 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 diff --git a/docs/Figures/EMT/Delay/diagram.tex b/docs/Figures/EMT/Delay/diagram.tex index f906e04a8..525f6747b 100644 --- a/docs/Figures/EMT/Delay/diagram.tex +++ b/docs/Figures/EMT/Delay/diagram.tex @@ -4,31 +4,21 @@ \begin{document} \begin{tikzpicture}[emt diagram] -% Lag-block chain: u -> 1/(1+sT) -> ... -> y_J = y_out -\node[block] (b0) {$\dfrac{1}{1 + sT}$}; -\node[block, right=1cm of b0] (b1) {$\dfrac{1}{1 + sT}$}; -\node[inner sep=1pt, right=1cm of b1] (dots) {$\cdots$}; -\node[block, right=1cm of dots] (bn) {$\dfrac{1}{1 + sT}$}; +\node[block, minimum width=2.6cm] (delay) + {$\mathbf{D}_{\boldsymbol{\tau}}(s)$}; -% Input node (owned externally) with port arrow into this model -\node[signal, label={[sig]above:$u$}] (uin) - at ($(b0.west)+(-1.5, 0)$) {}; -\draw[->, line] ($(uin)+(-0.8, 0)$) -- (b0.west); +\node[signal, label={[sig]above:$\mathbf{u}$}] (uin) + at ($(delay.west)+(-1.35,0)$) {}; +\draw[line] ($(uin)+(-0.8,0)$) -- (uin); +\draw[->, line] (uin) -- (delay.west); -% Inter-block connections -\draw[->, line] (b0.east) -- (b1.west); -\draw[->, line] (b1.east) -- (dots.west); -\draw[->, line] (dots.east) -- (bn.west); - -% Output node (owned by this model) with port arrow out -\node[signal, label={[sig]above:$y_{\mathrm{out}}$}, right=0.55cm of bn] +\node[signal, label={[sig]above:$\mathbf{y}$}, right=0.55cm of delay] (yout) {}; -\draw[line] (bn.east) -- (yout); -\draw[->, line] (yout) -- ++(1.55, 0); +\draw[line] (delay.east) -- (yout); +\draw[->, line] (yout) -- ++(1.35,0); -% Model enclosure: fixed padding around model-owned blocks and output variable \begin{scope}[on background layer] - \node[operator enclosure, fit=(b0)(b1)(dots)(bn)(yout)] {}; + \node[operator enclosure, fit=(delay)(yout)] {}; \end{scope} \end{tikzpicture} diff --git a/docs/Figures/EMT/DelayHistory/diagram.png b/docs/Figures/EMT/DelayHistory/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..194d7ffa6a632a29d9d00ef3733bb9eb7056075d GIT binary patch literal 124924 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�jdy(=j*9Q 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