Opened 5 years ago

Last modified 5 years ago

#5940 assigned defect

MSL example model AIMC_InverterDrive fails to simulate

Reported by: Dietmar Winkler Owned by: Andreas Heuermann
Priority: blocker Milestone: 2.0.0
Component: Run-time Version: v1.16.0-dev
Keywords: MSL Cc: Karim Adbdelhak

Description

I noticed that the following MSL example fails to simulate:
Modelica.Electrical.Machines.Examples.AsynchronousInductionMachines.AIMC_InverterDrive

See also https://libraries.openmodelica.org/branches/newInst/Modelica_3.2.3/files/Modelica_3.2.3_Modelica.Electrical.Machines.Examples.AsynchronousInductionMachines.AIMC_InverterDrive.sim

Change History (17)

comment:1 by Dietmar Winkler, 5 years ago

After some more trial and error investigations I could isolate the problem to the PWM generation unit. Using triangle-intersection method improves the situation slightly but still gets the simulation stuck at a later point in time.

model Ticket5940
  extends Modelica.Electrical.Machines.Examples.AsynchronousInductionMachines.AIMC_InverterDrive(pwm.pwmType = Modelica.Electrical.PowerConverters.Types.PWMType.Intersective);
equation

end Ticket5940;

So it looks like that OMC is struggling with

comment:2 by Francesco Casella, 5 years ago

See the analysis in #5452. I understand the original problem reported in that ticket (i.e. wrong index reduction) was finally fixed by Karim.

If you have some more insight to report here that would be very helpful.

comment:3 by Dietmar Winkler, 5 years ago

Resolution: duplicate
Status: newclosed

OK looks like this is a duplicate of #5452 then. Thanks for the pointer.

comment:4 by Francesco Casella, 5 years ago

Yeah, not really. #5452 was about missing index reduction. That has been solved, and then another issue popped up. We should have a separate ticket for that, it could actually be this one if you add some more info here. Then, we can close #5452 for good.

comment:5 by Karim Adbdelhak, 5 years ago

As far as i remember i managed to fix the index reduction to a point it finally recognized the static index reduction, but afterwards the simulation chattered and stopped.

My guess was that it is due to wrong handling of time events as state events, but it might be due to some other issue. Any intel is welcome here!

comment:7 by Dietmar Winkler, 5 years ago

Resolution: duplicate
Status: closedreopened

comment:9 by Dietmar Winkler, 5 years ago

OK in that case it is even worse if the simulation results log "looks fine" even if the simulation fails.

comment:10 by Martin Sjölund, 5 years ago

The first one is the log for building the simulation (which works fine). The second log is for running the simulation (which fails)

comment:11 by Dietmar Winkler, 5 years ago

OK, I see. So it might help then to make the simulation run log a bit more verbose, especially when it fails. The model creates a good deal warnings and error messages in OMEdit at least.

comment:12 by Francesco Casella, 5 years ago

Cc: Martin Sjölund Adeel Asghar added
Milestone: Future2.0.0
Priority: highblocker

Indeed. The log in OMEdit is

Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
The initialization finished successfully without homotopy method.
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Error solving nonlinear system 809 at time 0.0241249
Error solving nonlinear system 809 at time 0.0241249
nonlinear system 809 fails: at t=0.0241249
[1] Real der(aimc.is[2])(start=0, nominal=1)
[2] Real der(aimc.is[1])(start=0, nominal=1)
[3] Real aimc.lssigma.spacePhasor_b.v_[1](start=0, nominal=1)
[4] Real aimc.lssigma.spacePhasor_b.v_[2](start=0, nominal=1)
[5] Real inverter.dc_p.v(start=0, nominal=1)
Warning: maximal number of iteration reached but no root found
[6] Real inverter.transistor_n.idealGTOThyristor[3].s(start=0, nominal=1)
[7] Real inverter.diode_p.idealDiode[3].s(start=0, nominal=1)
[8] Real inverter.transistor_p.idealGTOThyristor[3].s(start=0, nominal=1)
[9] Real inverter.diode_n.idealDiode[3].s(start=0, nominal=1)
[10] Real rectifier.diode_n.idealDiode[2].s(start=0, nominal=1)
[11] Real rectifier.diode_p.idealDiode[2].s(start=0, nominal=1)
[12] Real rectifier.diode_n.idealDiode[3].s(start=0, nominal=1)
[13] Real rectifier.diode_p.idealDiode[3].s(start=0, nominal=1)
[14] Real inverter.transistor_p.idealGTOThyristor[1].s(start=0, nominal=1)
[15] Real inverter.transistor_n.idealGTOThyristor[1].s(start=0, nominal=1)
Warning: maximal number of iteration reached but no root found
[16] Real inverter.diode_n.idealDiode[1].s(start=0, nominal=1)
[17] Real inverter.diode_p.idealDiode[1].s(start=0, nominal=1)
[18] Real inverter.transistor_n.idealGTOThyristor[2].s(start=0, nominal=1)
[19] Real inverter.diode_n.idealDiode[2].s(start=0, nominal=1)
[20] Real inverter.transistor_p.idealGTOThyristor[2].s(start=0, nominal=1)
[21] Real inverter.diode_p.idealDiode[2].s(start=0, nominal=1)
[22] Real rectifier.diode_p.idealDiode[1].s(start=0, nominal=1)
[23] Real rectifier.diode_n.idealDiode[1].s(start=0, nominal=1)
Simulation process failed. Exited with code -1.
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found
Warning: maximal number of iteration reached but no root found

and the simulation fails later at time = 0.0241249.

@sjoelund.se, @adeas31, any clue as to what are the different settings between the Jenkins run and the OMEdit run? Aren't they supposed to be the same?

comment:13 by Adeel Asghar, 5 years ago

OMEdit always run with -w and -lv=LOG_STATS as default.

Maybe the warnings are because of -w flag.

comment:14 by Francesco Casella, 5 years ago

I guess so. I'm not sure if it is wise to turn that on in the Jenkins scripts, since some cases could easily flood the file system with humongous log files.

comment:15 by Dietmar Winkler, 5 years ago

Hmm but wouldn't that be a perfect indicator that something is really wrong and needs urgent fixing? ;-)

in reply to:  15 comment:16 by Francesco Casella, 5 years ago

Replying to dietmarw:

Hmm but wouldn't that be a perfect indicator that something is really wrong and needs urgent fixing? ;-)

I don't think urgency should be dictated by the fact that a bug in a few of the 10000 models we test daily hangs up the server :)

Seriously, 627 tickets were fixed in 1.14.0, 1.15.0 and 1.16.0-dev. Unfortunately we still have another 497 pending, of which 145 marked as blockers. We're trying to do our best given the limited resources we have.

comment:17 by Francesco Casella, 5 years ago

Cc: Karim Adbdelhak added; Martin Sjölund Adeel Asghar removed
Component: *unknown*Run-time
Owner: changed from somebody to Andreas Heuermann
Status: reopenedassigned

@AnHeuermann, I'm trying to figure this out. The original index reduction problem was solved by @Karim a long time ago. The Jenkins server reports

Regular simulation: ./Modelica_3.2.3_Modelica.Electrical.Machines.Examples.AsynchronousInductionMachines.AIMC_InverterDrive -abortSlowSimulation -alarm=480   -emit_protected -lv LOG_STATS
LOG_SUCCESS       | info    | The initialization finished successfully without homotopy method.
assert            | debug   | Solving non-linear system 809 failed at time=0.00825000000007505.
|                 | |       | For more information please use -lv LOG_NLS.

while if I use the latest nigthly in OMEdit, I get

The initialization finished successfully without homotopy method.
Simulation terminated due to too many, i.e. 20, event iterations.
This could either indicate an inconsistent system or an undersized limit of event iterations.
The limit of event iterations can be specified using the runtime flag '–mei=<value>'.

I'm not sure what is wrong with this model and why we get different outcomes on Jenkins (with Linux) and on OMEdit (with Windows).

Could you please check?

Thanks!

Note: See TracTickets for help on using tickets.