Opened 4 years ago
Last modified 3 years ago
#6196 assigned defect
Bogus linear tearing in Buildings model — at Initial Version
Reported by: | Francesco Casella | Owned by: | Karim Adbdelhak |
---|---|---|---|
Priority: | blocker | Milestone: | 1.19.0 |
Component: | Backend | Version: | |
Keywords: | Cc: | Karim Adbdelhak, Michael Wetter |
Description
Please check Buildings.Electrical.AC.ThreePhasesUnbalanced.Validation.IEEETests.Test4NodesFeeder.BalancedStepDown.YD. The model fails during lambda0 initialization with
Failed to solve linear system of equations (no. 569) at time 0.000000, system is singular for U[2, 2]. Matrix U -0 Output vector x [ 1] 0 The default linear solver fails, the fallback solver with total pivoting is started at time 0.000000. That might raise performance issues, for more information use -lv LOG_LS.
The debugger shows that system 569 is torn in this way:
linear (torn), unknowns: 3, iteration variables: 1 (transformer.conv2.terminal_p.i[1]) (torn) transformer.conv3.terminal_p.i[1] := transformer.conv2.terminal_p.i[1] - line2.i3[1] (torn) transformer.conv1.terminal_p.i[1] := transformer.conv2.terminal_p.i[1] + line2.i2[1] (residual) line2.i1[1] + transformer.conv1.terminal_p.i[1] - transformer.conv3.terminal_p.i[1] = 0
It is immediate to see that the term transformer.conv2.terminal_p.i[1]
appears both in transformer.conv3.terminal_p.i[1]
and in transformer.conv1.terminal_p.i[1]
, so when those two are subtracted to compute the residual, its sensitivity w.r.t. its unknown is zero.
I don't know what criterion is used to perform linear tearing, but it's obviously not a good one. Linear systems should be solved with proper pivoting, solving some equations according only to structural information but disregarding the coefficient values can be very dangerous.
Until this issue is solved, I would recommend to disable linear tearing by default. This will sure enough solve a lot of problems in the testsuite. BTW, now that we have sparse solvers to deal with large linear systems, the usefulness of linear tearing is probably quite limited.