Magnet

Magnets have basic parameters and slots:

Parameter

Description

Default

mcvkey_yoke

Name of lamination material

dummy

mcvkey_shaft

Name of shaft material

dummy

material

Name of magnet material

nodedist

Factor for node distance

1.0

Note

  • the mcvkey parameters either reference a filename without extension (Example ‘M330-50A’) which must be found in the directory defined by the parameter magnetizingCurves of the Femag constructor or the name of an entry in the Magnetizing Curve object.

  • the material parameter references a name of the Magnet Material list.

magnetSector

../../../_images/magnetSector.svg

Name

Unit

Comment

magn_num

number of magnets per pole

magn_height

HM

m

magn_width_pct

magnet width per pole width

magn_width

BM

m

used if magn_width_pct is undefined or 0

condshaft_r

m

conducting shaft radius

magn_rfe

m

inner radius of magnet

magn_len

relative magnet length

magn_shape

m

bridge_height

BH

bridge_width

BW

magn_ori

orientation 1: parallel, 2: polar, 3: halbach

magn_type

1: arc 2: arc par. 3: rect. 4: curved rect.

magn_type=1 (arc)

../../../_images/magntype1.png

magn_type=2 (arc par)

../../../_images/magntype2.png

magn_type=3 (rect)

../../../_images/magntype3.png

magn_type=4 (curved rect)

../../../_images/magntype4.png

magnetIron

../../../_images/magnetIron.svg

Name

Unit

Comment

magn_height

HM

m

magn_width

BM

m

gap_ma_iron

DE_FEM

m

air_triangle

BS

m

iron_height

HS

m

magn_rem

T

magn. remanenc

condshaft_r

m

conducting shaft radius if < RI

magn_ori

orientation 1: parallel, 2: polar, 3: halbach

bridge_height

BH

m

bridge_width

BW

m

iron_shape

HA

m

magnetIron3

../../../_images/magnetIron3.svg

Name

Unit

Comment

magn_height

HM

m

magn_width

BM

m

gap_ma_iron

DE_FEM

m

air_triangle

BS

m

iron_height

HS

m

magn_num

number of magnets

condshaft_rad

m

conducting shaft radius if < RI

magn_ori

orientation 1: parallel, 2: polar, 3: halbach

gap_ma_right

BR

m

gap_ma_left

BL

m

iron_shape

HA

m

magnetIron4

../../../_images/magnetIron4.svg

Name

Unit

Comment

magn_height

HM

m

magn_width

BM

m

gap_ma_iron

DE_FEM

m

air_triangle

BS

m

iron_height

HS

m

air_space_h

H_air

m

corner_r

R1

m

magn_dist_ra

DM

m

air_sp_ori

orientation 0: lin 1: par RA

magn_ori

orientation 1: parallel, 2: polar, 3: halbach

magn_num

number of magnets (1 or 2)

iron_shape

HA

m

magnetIron5

../../../_images/magnetIron5.svg

Name

Unit

Comment

magn_height

HM

m

magn_width

BM

m

gap_ma_iron

DE_M

m

iron_bfe

BFE

m

iron_height

HS

m

air_space_h

H_air

m

air_space_b

B_air

m

corner_r

R1

m

magn_dist_ra

DM

m

air_sp_ori

orientation 0: lin 1: par RA

magn_num

number of magnets (1 or 2)

iron_shape

HA

m

magnetIronV

../../../_images/magnetIronV.svg

Name

Unit

Comment

magn_height

HM

m

magn_width

BM

m

magn_angle

ALPHA

Deg

gap_ma_iron

DE_M

m

iron_hs

HS

m

iron_height

BR

m

iron_shape

HA

m

air_triangle

BS

m

condshaft_r

m

magn_num

number of magnets

afm_rotor

../../../_images/afm_rotor.svg

Name

Unit

Comment

magn_height

hm

m

magn_width

wm

magnet width per pole width

yoke_height

hy

m

Name

Parameter

magnetIron2

magn_height, magn_width, gap_ma_iron, air_triangle, iron_height, magn_rem, condshaft_r, gap_ma_right, gap_ma_left, magn_ori, iron_shape

magnetFC2

yoke_height, iron_h1, iron_h2, iron_b, magn_width, magn_height, iron_bfe, iron_bfo, iron_shape, iron_hp, magn_num

<filename>

see User defined Magnet Slots with FSL

dxffile

see User defined Magnet Slots with DXF

Example:

machine = dict(
   name="PM 130 L4",
   lfe=0.1,
   poles=4,
   outer_diam=0.13,
   bore_diam=0.07,
   inner_diam=0.015,
   airgap=0.001,

   stator=dict(
       num_slots=12,
       num_slots_gen=3,
       mcvkey_yoke="dummy",
       rlength=1.0,
       stator1=dict(
           slot_rf1=0.057,
           tip_rh1=0.037,
           tip_rh2=0.037,
           tooth_width=0.009,
           slot_width=0.003)
       ),

   magnet=dict(
       mcvkey_shaft="dummy",
       mcvkey_yoke="dummy",
       magnetSector=dict (
           magn_num=1,
           magn_width_pct=0.8,
           magn_height=0.004,
           magn_shape=0.0,
           bridge_height=0.0,
           magn_type=1,
           condshaft_r=0.02,
           magn_ori=2,
           magn_rfe=0.0,
           bridge_width=0.0,
           magn_len=1.0 )
       ),

    windings=dict(
         num_phases=3,
         num_wires=100,
         coil_span=3.0,
         num_layers=1)
)

User defined Magnet Slots with FSL

Example

If a Mako or FSL file that creates the magnet geometry exists and is readable it can be used for the model creation as an empty dict (see Note in User defined Stator Slots with FSL):

machine = dict(
    name="Motor",
    ...
    magnet=dict(
        mcvkey_yoke='dummy',
        mcvkey_shaft="dummy",
        myrotor=dict()
    ),
    ...

User defined Magnet Slots with DXF

If a DXF file that defines the magnet geometry exists and is readable it can be used to create the FSL for the model.

Example:

machine = dict(
    name="Motor",
    ...
    magnet=dict(
        mcvkey_yoke='dummy',
        mcvkey_shaft="dummy",
        dxffile=dict(
            name='mymagnet.dxf',
            position='in',
            split=True
        )
    ),
    ...

Parameters

Description

Default

position

‘in’ or ‘out’

split

splits intersecting lines at their intersection points

False

plot

creates the plot of the integrated object

False

Note

The split option is required only if intersecting lines have no common point.

User Specified Magnet Geometries

Magnet geometries not covered by the built in models can be specified by fsl code. Here is a example:

../../../_images/spoke-diagram.png

Example of a user specified geometry (created with TikZ)

The steps are:

  1. Create a diagram of the geometry and decide about the parameters to be used.

  2. Create a fsl mako template file with the chosen parameters as placeholders using the Mako syntax with ${}.

  3. Include this filename in the magnet model within the section using the basename of the mako file and set the parameter values.

The following values are defined globally and can be referenced in the template:

Name

Description

Unit

mcvkey_yoke

lamination material of yoke

mcvkey_shaft

material of shaft

m.remanenc

Remanence Induction

T

m.relperm

Rel. Permeability of PM

m.num_poles

Number of poles

m.npols_gen

Number of poles in model

agndst

Node distance in airgap

m

dy1

Diameter of stator yoke

m

da1

Diameter of stator bore

m

da2

Diameter of rotor

m

dy2

Diameter of rotor yoke

m

Example FSL Template file ‘’spoke.mako’’ using 4 parameters:

-- Model parameters

ds = ${model['shaft_diam']}*1e3
hm = ${model['magn_height']}*1e3
bm = ${model['magn_width']}*1e3
ws = ${model['slot_width']}*1e3

-- calculate slot height and pole pitch
hs = (da2-dy2)/2 - bm
taup = math.pi/m.num_poles

x = {}
y = {}

-- characteristic points of model

ar = math.sqrt(dy2^2+hm^2)/2
x[1] = ar*math.cos(taup - math.atan2(hm/2, dy2/2))
y[1] = 0
x[2],y[2] = pr2c(dy2/2+bm, 0)
x[3],y[3] = pr2c(da2/2, 0)
x[4],y[4] = pr2c(da2/2, taup - math.atan2(ws/2,(da2/2)))
x[5],y[5] = pr2c(da2/2-hs, taup - math.atan2(ws/2,(da2/2 - hs)))
x[6],y[6] = pr2c(da2/2-hs, taup - math.atan2(hm/2, da2/2-hs))
x[7],y[7] = pr2c(ar, taup - math.atan2(hm/2, dy2/2))
x[8],y[8] = pr2c(dy2/2, taup)
x[9],y[9] = pr2c(da2/2 - hs, taup)
x[10],y[10] = pr2c(da2/2, taup)

Magnet definition in Python file with included mako file (eg in this case ‘’spoke’’) and the parameter definition:

..
magnet=dict(
    mcvkey_yoke="dummy",
    spoke=dict(
        magn_height=0.008,
        shaft_diam=0.01,
        slot_width=0.004,
        magn_width=0.024
    )
 ..

The resulting model:

../../../_images/spoke.png

Note

Starting with Release 0.4.4 the syntax has changed but backward compatibility is fully supported.

the complete example can be found in stator1-spoke.py and spokefml.mako in the example directory on github.