3 phase induction motor from Sohor and Kubov leads to "mutual coupling of inductors ... is physically impossible"

I’m trying to simulate a 3 phase induction motor like shown in a paper from Sohor and Kubov (https://www.researchgate.net/profile/Vladimir-Kubov/publication/283563819_Induction_3-phase_motor_model/links/563ef3a408aec6f17ddad0bb/Induction-3-phase-motor-model.pdf).
unfortunately it leads to an error message “mutual coupling of inductors … is physically impossible.Fatal error: Time domain analysis aborted.”
there is a transformation from 3phase to 2 phase with 5 (cross)coupled inductors inside, so I’m not sure weather qspice has a limit or I’m doing something wrong

So if anyone does have experience with this topic, please help!


You could upload your schematic as well

here are my schematics:
3ph_motor.qsch (301.2 KB)
3ph_motor_test.qsch (6.3 KB)

Thanks for having a look.

There is a thread “PMSM motor Modeling” (PMSM motor modelling) where @bordodynov tells about his LTSpice model collection. I found exactly this model (under “Motors\Ind3phMotor” but for LTSpice), and it is working. I didn’t find any differences that matter for my problem with the “mutual coupling”.

Here is a screenshot of the motor model:

So maybe there is someone who finds the problem in my model.

Modification #1
.param Lm=sqrt(Ls*Lr)*k instead of .param Lm=sqrt(Ls*Lr)*k1

Modification #2
B-source does not support current sensing from another B-source in Qspice, i.e., Bm cannot use V=I(Bt).
You need to add a 0V voltage source in series with Bt and sense the current from that voltage source.

However, for some unknown reason, even after making these modifications, Qspice still cannot produce the same results as LTspice. The attached netlist (rename to .cir) runs successfully in LTspice according to the paper, but not in Qspice.

motor.txt (1.6 KB)


I understand #2, even if it’s not straight forward. But could you pleas explain the the k1 → k thing. I Also have to change the “.param k1=0.97” statement to “.param k=0.97” i guess but why does “k1” is a problem? And if it is, why is “k0” fine?

I tried both modifications and it is running know.
But the result is not like expected (=not matching the results of the ltspice version).

If you or anyone else gets a clue for this, please let me know.

Oh, sorry, I just look into the paper which called to use k, but you changed that to k1.
It seems K is a reserve word in Qspice and give 1.38e-23. I reset .param Lm=sqrt(Ls*Lr)*k1 and Qspice is returning error for using this mutual coupling

This netlist seems to run in both LTspice and Qspice, which is modified from @bordodynov Ind3phMotor example, which is same as that paper.

motor.txt (1.6 KB)

Here are the change between original netlist from IndMot3phTest.asc and modified to work in both LTspice and Qspice.

  • Add a 0V voltage source in series of Bt for Bm to use
  • Change k to k1 as k is a reserve word in Qspice
  • remove startup in .tran as no startup in Qspice (not a necessary change)

1 Like

Thanks again,
I found one more mistake in my model. The formula in Bx is missing some brackets (it’s “(I(Lb)-I(Lc))” instead of “I(Lb)-I(Lc)”). But it’s still not working fine.

Actually it’s running without error sometimes.
If I’m fresh starting qspice and loading and running my test-model, it returns the error with the mutual coupling. If I’m saving the file (without changing anything relevant) and rerunning it, there is no error anymore and it’s running, but still with another result than in the ltspice version. (This behavior is a little tricky. I tested it several times and sometimes I needed several try’s. And the next time it worked immediately.)

I’ll try to contact Mr. @Engelhardt. There could be some more mistake within my model, but unfortunately there seems to be a problem in qspice as well.

Here are the to files again with some minor changes (the brackets and the things @KSKelvin mentioned):
3ph_motor.qsch (302.2 KB)
3ph_motor_test.qsch (6.5 KB)

See ‘Help’ - ‘Waveform Viewer Functions and Keywords’ - ‘K’ - 1.380649e-23 J/°K - The Boltzmann constant
or ‘Help’ - ‘General Conventions’ - ‘Predefined Constants’ - K - 1.380649e-23 Boltzmann constant

1 Like

IndMot3ph3.qsch (6.3 KB)

Run it multiple times in Qspice and you will eventually get an error. (Just keep pressing Run after simulation finished). This is what @Thorsten experienced and reported to Mike.

Yes, this is a strange Qspice error, but after a few clicks of the Run button everything works

I noticed a strange thing. Sometimes it says: inductive communication is not possible, but if you change the extension in the file to txt and then change the extension back, it counts normally.
IndMot3ph3_AB.txt (7.1 KB)

Thanks for all your replies.

I believe I found the last mistake in my model. I flipped the direction of Lx and Ly. In my opinion this doesn’t match the paper but anywhere: Now (if it’s running*) the results are like the results in LTspice and your QSpice versions with subcircuits.

There are still may simulations ending with an errors, but I’m sure Mr. @Engelhardt finds a way to fix this. I also found the direction dot of the inductors to small and in some orientations it is overlaying the symbol. Maybe this will also be reviewed.

Thanks a lot.

You can create a symbol that is suitable for your needs, here is an example with a bigger phasing dot.

Inductor-PhasingDot.qsym (498 Bytes)

Hi there,

mike fixed the bug with the eigenvalues and also modified the inductor symbol a little.

@KSKelvin: I knew that I could make my own symbol, but it’s nice to have it in the standard installation.

Thanks again