Opened 4 years ago

Last modified 4 years ago

#5940 assigned defect

MSL example model AIMC_InverterDrive fails to simulate

Reported by: dietmarw Owned by: AnHeuermann
Priority: blocker Milestone: 2.0.0
Component: Run-time Version: v1.16.0-dev
Keywords: MSL Cc: Karim.Abdelhak

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 Changed 4 years ago by dietmarw

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 Changed 4 years ago by casella

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 Changed 4 years ago by dietmarw

  • Resolution set to duplicate
  • Status changed from new to closed

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

comment:4 Changed 4 years ago by casella

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 Changed 4 years ago by Karim.Abdelhak

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 Changed 4 years ago by dietmarw

  • Resolution duplicate deleted
  • Status changed from closed to reopened

comment:9 Changed 4 years ago by dietmarw

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

comment:10 Changed 4 years ago by sjoelund.se

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 Changed 4 years ago by dietmarw

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 Changed 4 years ago by casella

  • Cc sjoelund.se adeas31 added
  • Milestone changed from Future to 2.0.0
  • Priority changed from high to blocker

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 Changed 4 years ago by adeas31

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

Maybe the warnings are because of -w flag.

comment:14 Changed 4 years ago by casella

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 follow-up: Changed 4 years ago by dietmarw

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

comment:16 in reply to: ↑ 15 Changed 4 years ago by casella

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 Changed 4 years ago by casella

  • Cc Karim.Abdelhak added; sjoelund.se adeas31 removed
  • Component changed from *unknown* to Run-time
  • Owner changed from somebody to AnHeuermann
  • Status changed from reopened to assigned

@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.