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¶
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) |
magn_type=2 (arc par) |
magn_type=3 (rect) |
magn_type=4 (curved rect) |
magnetIron¶
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¶
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 |
||
shaft_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¶
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¶
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¶
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¶
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> |
|
dxffile |
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:
The steps are:
Create a diagram of the geometry and decide about the parameters to be used.
Create a fsl mako template file with the chosen parameters as placeholders using the Mako syntax with ${}.
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:
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.