5 | | The good news is, this is really not necessary. The break-up of synchronous sub-systems doesn't really need connection to be undone. It just needs the admittance of the branch to become zero, so that there is no longer any power flow through it, and the two sub-systems at each side of the branche can rotate at different speeds unconstrained. This does not require to change the structure of the equations, it is just a consequence of the current through the line becoming zero because the admittance is now zero, so that there is no longer any power flow depending on the relative angle, that keeps the two parts of the grid in sync with each other. |
| 5 | The good news is, this is really not necessary. The break-up of synchronous sub-systems doesn't really need to undo connections. It just needs the admittance of the branch to become zero, so that there is no longer any power flow through it, and the two sub-systems at each side of the branch can rotate at different speeds unconstrained. This does not require to change the structure of the equations, it is just a consequence of the current through the line becoming zero because the admittance is now zero, so that there is no longer any power flow depending on the relative angle, that keeps the two parts of the grid in sync with each other. |
7 | | So, the right way to handle dynamic connection sets is to inform the compiler that when the admittance is brought to zero, we are actually breaking the branch corresponding to the transmission line, i.e. the unbreakable branch defined by the {{{Connections.branch}}} statement. I was misled by the concept of breakable/unbreakable branches, so I didn't want to break unbreakable branches. In fact, "breakable" in this context means "breakable by a topology analysis algorithm that avoids redundant equations by breaking loops into spanning trees". If we open a switch by setting the admittance to zero, //we know// the branch has to be broken there, we don't need an algorithm to determine that. |
| 7 | So, the right way to handle dynamic connection sets is to inform the compiler that when the admittance is brought to zero, we are actually breaking the branch corresponding to the transmission line, i.e. the unbreakable branch defined by the {{{Connections.branch}}} statement. In this way, the runtime can update the connected spanning trees and come up with better reference values for the overconstrained variables in the connectors. |
| 8 | |
| 9 | I was indeed misled by the concept of breakable/unbreakable branches, so I didn't want to break unbreakable branches. In fact, "breakable" in this context means "breakable by a topology analysis algorithm that avoids redundant equations by breaking loops into spanning trees". If we open a switch by setting the admittance to zero, //we know// the branch has to be broken there, we don't need an algorithm to determine that. |