Opened 9 years ago

Closed 4 years ago

Last modified 4 years ago

#2996 closed defect (fixed)

This very simple circuit fails

Reported by: ceraolo Owned by: Karim.Abdelhak
Priority: normal Milestone: Future
Component: Backend Version: trunk
Keywords: Cc:

Description (last modified by ceraolo)

I came across in a circuit that fails to simulate with OM r23316.
I've simplified it as much as possible.
The final version, that I enclose (test.mo), contains a very few components and does not simulate.
It should be ok and simulates well in Dymola.
Any further simplification produces a circuit that OM can simulate.

Since it is rather simple, maybe by analysing this it is possible to find some OM weakness that can be fixed.

Error message:

[:0:0-0:0] Error: Internal error Transformation Module sort components failed!
[c:/dev/OpenModelica/Compiler/BackEnd/BackendDAETransform.mo:114:7-115:62] Error: Internal error function strongComponentsScalar failed

  • sorting equations (strongComponents) failed

[c:/dev/OpenModelica/Compiler/BackEnd/BackendDAETransform.mo:468:9-468:92] Error: Internal error function analyseStrongComponentBlock failed
[:0:0-0:0] Error: When solving linear system
1 : (-Lf2.i) - rDn.i - dcCap.i = 0.0
2 : rDn.i + Lf.i - rUp.i = 0.0
3 : dcCap.i + rUp.i - Lf1.i = 0.0
[

-1.0 , 0.0 , -1.0 ;
0.0 , -1.0 , 1.0 ;
1.0 , 1.0 , 0.0

]

*

[

dcCap.i ;
rUp.i ;
rDn.i

]

=

[

Lf2.i ;
-Lf.i ;
Lf1.i

]

U(3,3) = 0.0, which means system is singular for variable rDn.i.

Attachments (1)

test.mo (3.4 KB) - added by ceraolo 9 years ago.

Download all attachments as: .zip

Change History (14)

Changed 9 years ago by ceraolo

comment:1 Changed 9 years ago by ceraolo

  • Description modified (diff)

comment:2 Changed 9 years ago by sjoelund.se

Given that linear system, you can add Lf2.i+Lf.i+Lf1.i=0, remove either of the equations and re-sort+match. The problem is all of these variables are state variables and can not be solved there :( I guess someone who knows the back-end can figure it out. I assume it works in Dymola?

comment:3 Changed 9 years ago by ceraolo

yes, it works in Dymola.

Last edited 9 years ago by ceraolo (previous) (diff)

comment:4 Changed 9 years ago by lochel

  • Owner changed from somebody to wbraun
  • Status changed from new to assigned

Willi, can you have a look?

comment:5 Changed 5 years ago by casella

  • Owner changed from wbraun to Karim.Abdelhak

comment:6 Changed 4 years ago by ceraolo

  • Resolution set to fixed
  • Status changed from assigned to closed

This model now works. Must have been solved in the meanwhile.

comment:7 Changed 4 years ago by casella

Great, one less open issue :)

comment:8 follow-up: Changed 4 years ago by Karim.Abdelhak

I guess this is due to ASSC :) looks like an analytical singularity to me.

comment:9 in reply to: ↑ 8 ; follow-up: Changed 4 years ago by ceraolo

Replying to Karim.Abdelhak:

I guess this is due to ASSC ?

pure curiosity on this acronym.

comment:10 in reply to: ↑ 9 Changed 4 years ago by Karim.Abdelhak

Replying to ceraolo:

Replying to Karim.Abdelhak:

I guess this is due to ASSC ?

pure curiosity on this acronym.

Ah sorry, an algorithm that recently got implemented. Analytical to Structural Singularity Conversion.

comment:11 follow-up: Changed 4 years ago by casella

Since there is no current going into the ground, the two inductors are effectively series connected. However, there is no explicit equation stating that Lf1.i = -LF2.i. So, index reduction is not triggered and you end up with a singular system.

The ASSC algorithm figures out this equation and allows index reduction and successful simulation.

See the (long) discussion in #5452.

comment:12 in reply to: ↑ 11 ; follow-up: Changed 4 years ago by ceraolo

Replying to casella:

Since there is no current going into the ground

there is some current flowing into the ground

comment:13 in reply to: ↑ 12 Changed 4 years ago by casella

Replying to ceraolo:

Replying to casella:

Since there is no current going into the ground

there is some current flowing into the ground

Of course, sorry about that! I thought there was only one ground component, obviously if there are two of them there is a ground loop, hence the current flowing into ground is the same that flows out of ground1.

This means that a constraint equation

Lf.i = Lf1.i + Lf2.i

holds between the three potential states of the inductors. Hence, index reduction is needed, but the tool need to figure out this constraint equation from the system equations.

Note: See TracTickets for help on using tickets.