Support zero IEEET1 transducer time constant#439
Conversation
| tag_[6] = false; // y6 - ve - Excit. Cntrl Volt | ||
| tag_[7] = false; // y7 - efd - Efd | ||
| tag_[8] = false; // y8 - ksat - Saturation | ||
| tag_[0] = (Tr_ != 0.0); // y0 - vts - Sensed term volt |
There was a problem hiding this comment.
There are potential issues with comparing a floating point value to 0 like this.
There was a problem hiding this comment.
I agree, so I added the smallest possible inequality using epsilon().
There are many models that use zero-valued parameters to control the model's behavior (e.g., a control block bypass). A good way to describe them would be 'parametrically piecewise'. In the fixed time step solvers like PowerWorld, it doesn't even allow
We might actually want a way to wire in the minimum time step for IDA into the algebraic flag
c34a018 to
8b4586f
Compare
|
Added a fix to the exciter scaling now that |
287b384 to
99c66a9
Compare
99c66a9 to
3d0bd28
Compare
pelesh
left a comment
There was a problem hiding this comment.
This is a patchwork solution that works only for DAEs defined in fully implicit form. It will not work for any solver taking equations in Hessenberg form.
If this is essential feature needed, I suggest creating an issue flagging this model as potential blocker for Hessenberg-form solvers before merging it to develop.
Also, some minor comments below.
| $V_{ts}$ | [p.u.] | Sensed terminal voltage | Algebraic when $T_R=0$ | ||
| $V_R$ | [p.u.] | Voltage regulator | |
There was a problem hiding this comment.
This will create an issue when implementing interface for equations in Hessenberg form. I think a proper solution would be instantiating different models rather than having switch from algebraic to differential using a parameter. When an equation is turned from differential to algebraic, the numerical treatment may be different. In case of IDA solver, it does not matter, but any solver taking equations in Hessenberg form would require different methods for evaluating model equations.
There was a problem hiding this comment.
Could you expound on the meaning of 'different models'? As in we have Ieeet1A and Ieeet1B? That feels like it could be hard to maintain, possibly. I am not opposed, however.
I would say that this type of conditional algebraic/differential is very common, and in the larger cases, you could have some exciters/models with
If you could clarify intent
There was a problem hiding this comment.
We want to eventually have separate methods for evaluating differential and algebraic equations, so instead of one residual function for implicit DAEs, we would have differential equations rhs and algebraic equations residual functions. In that case when the equation changes from differential to algebraic, it should be implemented in different method.
Therefore, we would need separate methods for cases when Tr_ ! = 0.0 would then decide which pair of methods (differential equation rhs and algebraic equation residual) to use.
There was a problem hiding this comment.
That is helpful, thank you. I will open an issue for this and list which models need to be addressed.
I am in favor of this form for now, so we don't have to have duplicate equations or helper functions.
3d0bd28 to
3ae35fc
Compare
05fd735 to
80f48a8
Compare
Description
Support
Tr = 0in the IEEET1 exciter by treating the sensed terminal voltage state as algebraic when the transducer time constant is zero.This removes the need for small artificial
Trvalues in validation and example cases.Proposed changes
Vtsas algebraic whenTr = 0.Trplaceholders are zero.Tr = 0algebraic behavior.Checklist
-Wall -Wpedantic -Wconversion -Wextra.Changelog changes N/A
Further comments
Early development known issue that did not matter until detailed validation of the larger models.