Skip to content

Motor 001 - Permanent magnet synchronous electric motor

Model definition

A 3D permanent magnet synchronous electric motor is considered under magnetostatic conditions using ϕ\phi-formulation. The symmetry cell (1/8) of the motor having the periodic face aligned with the x-axis is illustrated below.

PMSM geometry

ComponentDimensions
Stator steel outer radius0.100 m
Stator steel inner radius0.059 m
Rotor steel outer radius0.055 m
Rotor steel inner radius0.025 m
Permanent magnet outer radius0.058 m
Air gap thickness0.001 m

Output Results:

  • Torque (Nm).

Material Data

  • Linear steel
PropertyValue
Magnetic permeability2000 ×μ0\times \mu_0 = 2000 ×\times 4π×\pi \times107^{-7} H/m

Boundary conditions

NameTypeValue
left and right y-planesperiodicity: rotationantiperiodic
rotor-stator interfacecontinuitypotential equality on both sides

Step-by-step guide

Here you’ll find a step-by-step tutorial on how to simulate this in Quanscient Allsolve.

Step 1 - Create geometry

  1. Start with a new project. Example image  

  2. Import the geometry by uploading a step file. Example image  

  3. Click on + icon next to Geometry elements and click on Translate. Example image  

  1. In the geo operations settings, choose the rotating region target as shown in the image below and provide the translation in meters: X=0; Y=0; Z=0.02. Example image  

  2. Click on Apply and then Confirm model changes.

Step 2 - Define regions and materials

  1. Proceed to the Properties section to define regions and materials.  

  2. Click on the + icon next to Materials, select Air from the list, and click Confirm. Example image  

  3. To apply this material, Click on Add volume in Materials settings and select the permanent magnet domain, and all air domains as shown in the image below. Click Apply. Example image  

  4. Similarly add a new material and select Carbon steel AISI 1020. Apply this material on the steel domain. Example image

 

  1. In this example, only linear steel is considered. To apply linear permeability for the steel, Click Properties under the Target tags in Materials settings and replace the non-linear permeability BHsteel1020(norm(H) + 1e-10) / (norm(H) + 1e-10) with 2000 * mu0. Click Apply. Example image  

  2. Now define a rotor volume as a shared region so that it can be referred when shifting the rotor back to its original position and when applying rotation. To do so, click + icon next to Shared regions and choose volume on the list. Example image  

  3. Name the volume to rotor and pick all rotating regions including half of the airgap as shown in the image below. Example image  

  4. Repeat the steps 6 and 7 to add the airgap volume. The air gap volume is referred to when calculating the torque. Example image  

  5. Now define a shared expression for current amplitude, Click on the + icon next the Shared expressions. Name the expression to I, give the description, and the value of 300 Amperes. Click `Apply’. Example image  

  6. Repeat the steps 9 and 10 to add a shared expression for the mechanical angle alpha and for the electrical angle phase having the values of 27 degrees and 0.0 degrees, respectively. Example image Example image  

Step 3 - Define the physics and apply boundary conditions

  1. Proceed to the Physics section to define physics and interactions.  

  2. Click on the + icon to add a new physics. Select Magnetism ϕ\phi. Example image  

  3. To apply this physics on the geometry, Click on Add volume, select all the volumes except the windings and click Apply. Example image

 

  1. To add interactions, click on the + icon next to Magnetismϕ\phi and select Constraint. Add a point region, select a point, and give the value of 0. This is the gauge condition for the scalar potential ϕ\phi and will quarantee the uniqueness of the solution. Click Apply. Example image Example image Example image

 

  1. Introduce the permanent magnet. Add a Remanence interaction on the permanent magnet volume. Address a 0.5 T magnetization radially by giving X = 0.5*x / sqrt(x*x + y*y), Y = 0.5*y / sqrt(x*x + y*y), and Z=0. Click Apply. Example image  

  2. Add Periodicity interaction. Click Add surface under the Peridocity target 1 and select the periodic boundary alinged with the x-axis. Similarly, select the opposite surfaces for the Periodicty target 2 (second image). Under Parameters, select the periodicity type to be rotation, give the center of rotation: X=0, Y=0, Z=0, and the rotation angle in degrees: X=0, Y=0, Z=45, and select Antiperiodicity. Click Apply. Example image Example image

  1. Add Continuity interaction. Click on Add surface under Continuity target 1 and select the interface on the stator side. Similarly, select the interface on the rotor side for the Continuity target 2. Click Apply. Example image Example image  

  2. Introduce a current source. Add Lump I/V cut interaction. Click on Add curve and select a closed loop around the winding closest to the x-axis. Set value of I*sin((phase + 4.0 * alpha - 0.0) * pi/180.0) for the current under the parameters. Example image

 

  1. Repeat the step 8 for the winding in the middle and for the winding on the left with the current values of I*sin((phase + 4.0 * alpha - 60.0) * pi/180.0) and I*sin((phase + 4.0 * alpha - 120.0) * pi/180.0), respectively. Example image  

Step 4 - Apply simulation settings

  1. Proceed to the Simulations sections and add a new mesh by clicking the + icon next to Meshes. Example image  

  2. Under the Mesh quality choose Expert settings. Set the maximum size to 0.001 and enable the Curved mesh. Click on Add mesh refinement and select Volume in the list. Example image  

  3. Click on Refinement . Volume, select the air gap volume and set Max size to 0.0005. Click on Apply & mesh. Example image  

  4. Click on Show preview to preview the generated mesh. Example image  

  5. Add a new simulation. Select Steady state as the Analysis type. Example image  

  6. Set the previously generated mesh for the simulation by clicking on Mesh under Simulation 1 and by choosing Mesh 1. Example image  

  7. For visualizing the magnetic flux density after simulation, click on + icon next to the Outputs under the Simulation 1 and select Magnetix flux density. Example image  

  8. Click on Add volume and select all volumes except the windings. Click Apply. Example image  

  9. In the scripting, the following three modifications need to be done:

  • a). moving the rotor back to its original position and applying the rotation.
  • b). Apply antioperiodicity and rotation for the continuity condition.
  • c). Calculating the torque.
  1. To enable the scripting mode, click on Script under Simulation 1, click on Scripting mode toggle button, and click Yes on the prompt window. Example image  

  2. To shift the rotor back to its original position and to apply rotation, Add the following lines to the script in the scope as shown in the image below:

mesh.mesh.shift(reg.rotor, 0.0, 0.0, -0.02)
mesh.mesh.rotate(reg.rotor, 0.0, 0.0, expr.alpha)

Example image  

  1. To address the antiperiodicity regarding the rotated position for the continuity condition, Add the following arguments for continuitycondition() function:
qs.continuitycondition(..., [0,0,0], expr.alpha, 45.0, -1.0)

Example image  

  1. To calculate the torque via Arkkio’s method[1] and via Maxwell’s Stress Tensor, add the following lines to the script Example image
# Calculating torque:
# The torque is scaled (8*5) to the actual z length of the motor 0.05 m and to take into account full 360 degrees of the motor.
# 1) Using Arkkio's method
rs = 0.059 # outer radius of airgap
rr = 0.058 # inner radius of airgap
radius = qs.sqrt( qs.pow(qs.getx(),2) + qs.pow(qs.gety(),2) )
ephi = qs.array3x1(-qs.gety()/radius, qs.getx()/radius, 0.0)
er = qs.array3x1(qs.getx()/radius, qs.gety()/radius, 0.0)
Bphi = df.B*ephi
Br = df.B*er
dr = (rs-rr)
magforcedensity1 = (8*5*radius*Br*Bphi/qs.getmu0()/dr)
torque1 = magforcedensity1.allintegrate(reg.airgap,5)
# 2) Using Maxwell stress tensor
leverarm = qs.array3x1(qs.getx(), qs.gety(), 0.0)
T = 1/qs.getmu0() * ( df.B*qs.transpose(df.B) - 0.5*df.B*df.B * qs.eye(3) )
magforcedensity2 = qs.on(reg.airgap, T)*qs.normal(reg.airgap)
torque2 = 8*5*qs.compz(qs.crossproduct(leverarm, magforcedensity2)).allintegrate(reg.continuity_target_2, 5)
qs.setoutputvalue("Mechanical angle", qs.evaluate(expr.alpha)[0])
qs.setoutputvalue("Torque (Arkkio)", qs.evaluate(torque1))
qs.setoutputvalue("Torque (Maxwell's Stress Tensor)", qs.evaluate(torque2))

 

Step 5 - Running the simulation and checking the results

  1. Click on Not run next to Simulation 1 to start the simulation. Example image  

  2. To follow the simulation in progress, Click on Logs under the Results. Wait until the simulation status changes to Success. Example image  

  3. To visualize the magnetic flux density, Click on + icon next to Visualizations, click create filter icon, and select B on the list. Example image  

  4. Add glyphs by clicking + icon next to B, and selecting Glyph on the list. Example image  

  5. Click on Glyphs, select Data for the scaling mode, and Click on Activate current visualization on top of the geometry. Example image  

  6. Glyphs become visible. Example image  

  7. To see the value of torque in [Nm] at the applied mechanical angle in [deg], Click on Summary under the Simulation 1 --> Results Example image  

References

[1] Arkkio’s Method for Torque Computation