# Simulink Single-phase Synchronous Reluctance Motor

2 views (last 30 days)
Ramon Gomez on 2 Jan 2023
Answered: Kothuri on 28 Mar 2024
Hello everyone.
I am trying to make a Simulink Diagram found in the book "Mechatronics and Control of Electromechanical Systems" by Sergey Edward Lyshevski.
The diagram is in the page 206 and when I try to run it come the next error:
"An error occurred while running the simulation and the simulation was terminated
Caused by:
• Domain error. To compute complex results from real x, use 'sqrt(complex(x))'. Error in sqrt.m (line 13) coder.internal.error('Coder:toolbox:ElFunDomainError',mfilename); Error in 'single_phase_reluctance_motor/MATLAB Function2' (line 3)
"
I also noticed that in the 4th Fcn Block (P^2*Ldm....) there is something like a negative sign in the upper right part of the function.
It was possible to make that with the Fcn Blocks? I wonder if its because of that that I got the error

Kothuri on 28 Mar 2024
I understand that you want to know why your simulation got terminated with the domain error due to ‘sqrt’ function.
The MATLAB ‘sqrt’ function can operate on non-negative real numbers. But it throws a domain error in the physical modelling of a system when it encounters a non-negative input as its corresponding output will be a complex number.
The above error message indicates that the value of the variable ‘x’ is considered as a real number by default. But the actual value of ‘x’ being passed in the MATLAB Function2 block is a negative number whose square root will result in a complex number.
To resolve this issue, you need to modify the MATLAB ‘Function2’ block in the model such that the variable ‘x’ is never negative (setting ‘x’ to zero or a positive value if it is negative) or modify the code sqrt(x) to sqrt(complex(x) ). In this way it treats ‘x’ as complex and allows ‘sqrt’ to return a complex result.
You can refer the below link which indicates the usage of ‘sqrt’ function.
Hope this clarifies the error.