How to import dxf/fem file for FEMM simulation?

What to import and why?

Some machines have complex topologies or some particularities (bolts, complex slot or ventilation ducts, flux barriers...) that are not available in MANATEE. To ensure that these particularities can be taken into account in the electromagnetic simulation, one can import *.dxf or *.fem files in FEMM using the coupling with MANATEE:

  • *.dxf files are meant to import the geometry of the rotor and/or stator and MANATEE will draw the other lamination (if needed), the airgap and will assign the regions and the boundary conditions.
  • *.fem files are meant to import the complete model (geometry + region + boundary conditions assigned) and MANATEE will only add the airgap region.

In both cases, one still need to define an equivalent machine in MANATEE (i.e. a machine that is as close as possible to the real one). The FEMM electromagnetic model will use the import to match the exact geometry and the equivalent machine will be used in all the other models.
In both cases, MANATEE will handle the definition of the airgap, the rotation of the rotor and the current updates for each time step. The use of the sliding band technique is highly recommended, which requires the lFEMM build 4.2 (from 25 Feb 2018). _One can also import a single pole and MANATEE will duplicate it according to the machine symmetry.

dxf import

For the dxf import, here are the corresponding parameters (in the project file):

Input.Simu.is_stator_dxf = 0 ;              % (advanced) 1 to import a *.dxf file instead of drawing stator geometry in FEMM using MANATEE algorithms
Input.Simu.is_rotor_dxf = 0 ;               % (advanced) 1 to import a *.dxf file instead of drawing rotor geometry in FEMM using MANATEE algorithms

To activate or deactivate the dxf import for the rotor and/or the stator. Both lamination can be imported simultaneously.

Input.Simu.filename_stator_dxf = 'machine_stator.dxf' ;         % (advanced) path of the *.dxf file for stator geometry
Input.Simu.filename_rotor_dxf = 'machine_rotor.dxf' ;         % (advanced) name of the *.dxf file for rotor geometry WARNING : the dxf file must be in the MATLAB path

To select the dxf file to import. This file need to be in the matlab path (the matlab function "which" will be called to find the path) or one can provide the full path in the variable.

Input.Simu.shift_stator_dxf = 0 ;           % (advanced) value of the shift angle to set the stator right edge at theta=0° (WARNING: it is highly recommended to already have the first stator edge at theta=0 in the dxf file).
Input.Simu.shift_rotor_dxf = 0 ;            % (advanced) value of the shift angle to set the rotor right edge at theta=0° (WARNING: it is highly recommended to already have the first rotor edge at theta=0 in the dxf file).

By convention, the imported geometry should match the following constraints:

  • The machine center is at (0,0)
  • The file contains either the full lamination, either a single pole
  • If the file contains a single pole, the right edge should be at theta=0° (on X axis) If the dxf is not correctly oriented, this parameter enable to rotate it (it doesn’t affect the other simulation rotation).

From the dxf to the simulation

With the dxf import the correct lamination is draw by MANATEE (with or without symmetry). Then the different regions need to be assigned and the boundary condition set.

Air region

For the regions, MANATEE will assign them as if the lamination is the one of the equivalent machine. Therefore, it is important to use a topology that matches the most the real machine. If the machine has some extra holes (like ventilations ducts for instance), on can provide MANATEE with the coordinates where to set these Air regions with :

Input.Simu.list_air_rotor_dxf = {} ;        % (advanced) list of coordinates {[x_1,y_1] ; ... ; [x_n,y_n]} to automatically assign n additional air labels in FEMM, for example in rotor pockets
Boundary condition

If the symmetries are activated, MANATEE will also assign automatically the boundary condition assuming that the lamination edges is at theta=0. In the case that the edge of the lamination is not a straight line (for instance because of a notch or a ventilation), one need to provide the coordinates of a point on every part of the edge line with:

Input.Simu.list_bc_rotor_dxf = {} ;         % (advanced) In case of (anti)-symmetry, list of coordinates {[x_1,y_1] ; ... ; [x_n,y_n]} which are the middle of each segment constituting the rigth rotor edge on which (anti-)periodic BC are applied

Finally MANATEE will automatically define the airgap for the simulation. To avoid errors, we highly recommend to use:

Input.Simu.is_slidingBand = 1 ;         % (advanced) 1 to use the airgap sliding band in FEMM simulation to reduce meshing noise.

As an example, one can take inspiration from the NUM_010 validation case that compares a normal FEMM simulation, a FEMM simulation with sliding band and the import of the geometry from a dxf file (for both rotor and stator)

FEMM model import (.fem)

To import a complete FEMM model, here are the corresponding parameters (in the project file):

Input.Simu.is_femm_import=0;                % (advanced) 1 to import an existing femm file
Input.Simu.filename_FEMM='machine_model';   % (advanced) name of the FEM finite element magnetostatic file
Input.Simu.shift_angle_FEMM=0 ;             % (advanced) shift angle value to impose to the rotor of the imported FEMM model

We find the same kind of parameters as for the dxf import (to activate/desactive the import, to select the file, to rotate the geometry to have the edge on the X axis).

By default all the MANATEE model are defined in meter, but if the imported model is defined in mm (for instance), one can set:

Input.Simu.unit_factor_FEMM=1000;              % (advanced) scaling factor between FEMM file system unit and MANATEE system unit in meters (Ex: Input.Simu.unit_factor_FEMM=1e3 if FEMM is in millimeters)

Note that by default MANATEE save the .fem files of all FEMM simulations in Electromagnetics\Femm