Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
18 views21 pages

octavefemm_Magnetic

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 21

Finite Element Method Magnetics: OctaveFEMM

User’s Manual
March 17, 2018

David Meeker
dmeeker@ieee.org
http://www.femm.info
1 Introduction
OctaveFEMM is a Matlab toolbox that allows for the operation of Finite Element Method Magnet-
ics (FEMM) via a set of Matlab functions. The toolbox works with Octave, a Matlab clone.
When OctaveFEMM starts up a FEMM process, the usual FEMM user interface is displayed
and is fully functional. The user then has the choice of accomplishing modeling and analysis tasks
either exclusively through functions implemented by the toolbox, or by a combination of manual
and programmatic operations – whichever is easiest for the task at hand.
The syntax of the OctaveFEMM toolbox closely mirrors that of FEMM’s existing Lua scripting
language interface associated with FEMM v4.2. However, there are some differences between the
Lua functions and the analogous Octave/Matlab implementations:

• All strings are enclosed in single quotes, rather than double quotes as in Lua.

• Functions in Lua that have no arguments require a set of empty parentheses after the function
name (e.g. mi analyze()). In Octave or Matlab, no parentheses should be used needed (e.g.
mi analyze with the OctaveFEMM toolbox).

• Several commands have also been added to OctaveFEMM that have no analog in Lua. These
commands streamline the drawing of new geometries with the OctaveFEMM toolbox, as
well is the collection of data from solutions.

Perhaps the most remarkable difference between Lua and OctaveFEMM, however, is due to
the matrix-oriented nature of Octave/Matlab. In just about any OctaveFEMM function in which
it would be desiable to enter an array of points such that multiple copies of an operation are per-
formed, OctaveFEMM will correctly interpret the input perform the requested operation on every
element in the array. In addition, for any function in which the coordinates of a point are required,
that point can be specified as an array with two elements instead of specifying each element sepa-
rately. In functions that require the specification of multiple points, those points can be entered as
an array of two-element arrays.

2 Installation and Startup


2.1 Installation for Matlab and Octave 3
The OctaveFEMM distribution is automatically installed with FEMM 4.2 in the mfiles subdirec-
tory. The absolute directory is typically c:\Program Files\femm42\mfiles. To use Octave-
FEMM with Octave or Matlab, this path needs to be added to the program’s search path. To add
this path to the search path, type the following lines at the Matlab or Octave 3.X.X command
prompt:

addpath(’c:\\femm42\\mfiles’);
savepath;

Alternatively, in Matlab, the interactive pathtool command can be used to add the mfiles
directory to the search path.

2
2.2 Startup
To start an OctaveFEMM session, use the openfemm function. This function starts up a FEMM
process to which OctaveFEMM calls are sent. When done with OctaveFEMM, the FEMM process
can be shut down via the closefemm function.
A number of examples that use OctaveFEMM to analyze various problems are included in the
directory cd c:\Program Files\femm42\examples

3 Common Command Set


There are a number of FEMM-specific Octave that are not associated with any particular prob-
lem type. These functions manipulate the appearance of the main window and other top-level
components like the Lua console and Point Properties output window.

• openfemm(bHide) The bHide parameter determines whether or not the main FEMM win-
dow is visible when FEMM is started. In many cases, it is useful to use openfemm(1) to
hide the main window while a script is running. In hidden window mode, analysis calls like
mi_analyze hide the analysis window by default.

• clearconsole Clears the output window of the Lua console.

• newdocument(doctype) Creates a new preprocessor document and opens up a new prepro-


cessor window. Specify doctype to be 0 for a magnetics problem, 1 for an electrostatics
problem, 2 for a heat flow problem, or 3 for a current flow problem. Alternative syntax for
this function is create(doctype)

• hideconsole Hides the floating Lua console window.

• hidepointprops Hides the floating FEMM Properties display window.

• messagebox(’message’) displays the ’message’ string to the screen in a pop-up message


box.

• opendocument(’filename’) Opens a document specified by filename.

• print(item1,item2,...) This is standard Lua “print” command directed to the output of


the Lua console window. Any number of comma-separated items can be printed at once via
the print command.

• prompt(’message’) This function allows a FEMM script to prompt a user for input. When
this command is used, a dialog box pops up with the ’message’ string on the title bar of the
dialog box. The user can enter in a single line of input via the dialog box. Prompt returns
the user’s input to Octave and parses it using Octave’s eval command.

• showconsole Displays the floating Lua console window.

• showpointprops Displays the floating FEMM Properties display window.

3
• smartmesh(state) Calling with a state of 0 turns off “smart mesh” functionality for the
present session; calling with a state of 1 turns “smarth meshing” on. The smartmesh function
applies across all problem types. To set smart meshing on or off on a file-by-file basis, use
mi_smartmesh,ei_smartmesh, hi_smartmesh, and ci_smartmesh, depending on problem
type. Note that calling the global smartmesh with a value of -1 sets the program to defer to
the file-by-file setting rather than forcing all smart meshing on or off.

• main minimize minimizes the main FEMM window.

• main maximize maximizes the main FEMM window.

• main restore restores the main FEMM window from a minimized or maximized state.

• main resize(width,height) resizes the main FEMM window client area to width ×
height.

4 Magnetics Preprocessor Command Set


A number of different commands are available in the preprocessor.

4.1 Object Add/Remove Commands


• mi addnode(x,y) Add a new node at x,y

• mi addsegment(x1,y1,x2,y2) Add a new line segment from node closest to (x1,y1) to


node closest to (x2,y2)

• mi addblocklabel(x,y) Add a new block label at (x,y)

• mi addarc(x1,y1,x2,y2,angle,maxseg) Add a new arc segment from the nearest node


to (x1,y1) to the nearest node to (x2,y2) with angle ‘angle’ divided into ‘maxseg’ segments.

• mi drawline(x1,y1,x2,y2) Adds nodes at (x1,y1) and (x2,y2) and adds a line between
the nodes.

• mi drawpolyline([x1,y1;x2,y2’...]) Adds nodes at each of the specified points and


connects them with segments.

• mi drawpolygon([x1,y1;x2,y2’...]) Adds nodes at each of the specified points and


connects them with segments to form a closed contour.

• mi drawarc(x1,y1,x2,y2,angle,maxseg) Adds nodes at (x1,y1) and (x2,y2) and adds


an arc of the specified angle and discretization connecting the nodes.

• mi drawrectangle(x1,y1,x2,y2) Adds nodes at the corners of a rectangle defined by the


points (x1,y1) and (x2,y2), then adds segments connecting the corners of the rectangle.

• mi deleteselected Delete all selected objects.

4
• mi deleteselectednodes Delete selected nodes.

• mi deleteselectedlabels Delete selected block labels.

• mi deleteselectedsegments Delete selected segments.

• mi deleteselectedarcsegments Delete selects arcs.

4.2 Geometry Selection Commands


• mi clearselected Clear all selected nodes, blocks, segments and arc segments.

• mi selectsegment(x,y) Select the line segment closest to (x,y)

• mi selectnode(x,y) Select the node closest to (x,y). Returns the coordinates of the se-
lected node.

• mi selectlabel(x,y) Select the label closet to (x,y). Returns the coordinates of the se-
lected label.

• mi selectarcsegment(x,y) Select the arc segment closest to (x,y)

• mi selectgroup(n) Select the nth group of nodes, segments, arc segments and blocklabels.
This function will clear all previously selected elements and leave the editmode in 4 (group)

• mi selectcircle(x,y,R,editmode) selects objects within a circle of radius R centered at


(x,y). If only x, y, and R paramters are given, the current edit mode is used. If the editmode
parameter is used, 0 denotes nodes, 2 denotes block labels, 2 denotes segments, 3 denotes
arcs, and 4 specifies that all entity types are to be selected.

• mi selectrectangle(x1,y1,x2,y2,editmode) selects objects within a rectangle defined


by points (x1,y1) and (x2,y2). If no editmode parameter is supplied, the current edit mode is
used. If the editmode parameter is used, 0 denotes nodes, 2 denotes block labels, 2 denotes
segments, 3 denotes arcs, and 4 specifies that all entity types are to be selected.

4.3 Object Labeling Commands


• mi setnodeprop(’propname’,groupno) Set the selected nodes to have the nodal property
’propname’ and group number groupno.

• mi setblockprop(’blockname’, automesh, meshsize, ’incircuit’, magdir, group,


turns) Set the selected block labels to have the properties:

– Block property ’blockname’.


– automesh: 0 = mesher defers to mesh size constraint defined in meshsize, 1 = mesher
automatically chooses the mesh density.
– meshsize: size constraint on the mesh in the block marked by this label.
– Block is a member of the circuit named ’incircuit’

5
– The magnetization is directed along an angle in measured in degrees denoted by the
parameter magdir
– A member of group number group
– The number of turns associated with this label is denoted by turns.
• mi setsegmentprop(’propname’, elementsize, automesh, hide, group) Set the se-
lected segments to have:
– Boundary property ’propname’
– Local element size along segment no greater than elementsize
– automesh: 0 = mesher defers to the element constraint defined by elementsize, 1 =
mesher automatically chooses mesh size along the selected segments
– hide: 0 = not hidden in post-processor, 1 == hidden in post processor
– A member of group number group
• mi setarcsegmentprop(maxsegdeg, ’propname’, hide, group) Set the selected arc
segments to:
– Meshed with elements that span at most maxsegdeg degrees per element
– Boundary property ’propname’
– hide: 0 = not hidden in post-processor, 1 == hidden in post processor
– A member of group number group
• mi setgroup(n) Set the group associated of the selected items to n.

4.4 Problem Commands


• mi probdef(freq,units,type,precision,depth,minangle,(acsolver)) changes the
problem definition. Set freq to the desired frequency in Hertz. The units parameter spec-
ifies the units used for measuring length in the problem domain. Valid ’units’ entries
are ’inches’, ’millimeters’, ’centimeters’, ’mils’, ’meters’, and ’micrometers’.
Set the parameter problemtype to ’planar’ for a 2-D planar problem, or to ’axi’ for an
axisymmetric problem. The precision parameter dictates the precision required by the
solver. For example, entering 1E-8 requires the RMS of the residual to be less than 10−8 .
A fifth parameter, representing the depth of the problem in the into-the-page direction for
2-D planar problems. Specify the depth to be zero for axisymmetric problems. The sixth
parameter represents the minimum angle constraint sent to the mesh generator – 30 degrees
is the usual choice for this parameter. The acsolver parameter specifies which solver is to be
used for AC problems: 0 for successive approximation, 1 for Newton.
• mi analyze(flag) runs the magnetics solver. The flag parameter controls whether the
solver window is visible or minimized. For a visible window, specify 0. For a minimized
window, flag should be set to 1. If no value is specified for flag, the visibility of the solver
is inherited from the main window, i.e. if the main window is minimized, the solver runs
minimized, too.

6
• mi loadsolution loads and displays the solution corresponding to the current geometry.

• mi setfocus(’documentname’) Switches the magnetics input file upon which commands


are to act. If more than one magnetics input file is being edited at a time, this command can be
used to switch between files so that the mutiple files can be operated upon programmatically.
’documentname’ should contain the name of the desired document as it appears on the
window’s title bar.

• mi saveas(’filename’) saves the file with name ’filename’.

4.5 Mesh Commands


• mi createmesh runs triangle to create a mesh. Note that this is not a necessary precursor of
performing an analysis, as mi analyze will make sure the mesh is up to date before running
an analysis. The number of elements in the mesh is pushed back onto the lua stack.

• mi showmesh shows the mesh.

• mi purgemesh clears the mesh out of both the screen and memory.

4.6 Editing Commands


• mi copyrotate(bx, by, angle, copies )

– bx, by – base point for rotation


– angle – angle by which the selected objects are incrementally shifted to make each
copy. angle is measured in degrees.
– copies – number of copies to be produced from the selected objects.

• mi copyrotate2(bx, by, angle, copies, editaction )

– bx, by – base point for rotation


– angle – angle by which the selected objects are incrementally shifted to make each
copy. angle is measured in degrees.
– copies – number of copies to be produced from the selected objects.
– editaction 0 –nodes, 1 – lines (segments), 2 –block labels, 3 – arc segments, 4- group

• mi copytranslate(dx, dy, copies)

– dx,dy – distance by which the selected objects are incrementally shifted.


– copies – number of copies to be produced from the selected objects.

• mi copytranslate2(dx, dy, copies, editaction)

– dx,dy – distance by which the selected objects are incrementally shifted.


– copies – number of copies to be produced from the selected objects.

7
– editaction 0 –nodes, 1 – lines (segments), 2 –block labels, 3 – arc segments, 4- group

• mi createradius(x,y,r)turnsacornerlocatedat(x,y)intoacurveofradiusr.

• mi moverotate(bx,by,shiftangle)

– bx, by – base point for rotation


– shiftangle – angle in degrees by which the selected objects are rotated.

• mi moverotate2(bx,by,shiftangle, editaction)

– bx, by – base point for rotation


– shiftangle – angle in degrees by which the selected objects are rotated.
– editaction 0 –nodes, 1 – lines (segments), 2 –block labels, 3 – arc segments, 4- group

• mi movetranslate(dx,dy)

– dx,dy – distance by which the selected objects are shifted.

• mi movetranslate2(dx,dy,editaction)

– dx,dy – distance by which the selected objects are shifted.


– editaction 0 –nodes, 1 – lines (segments), 2 –block labels, 3 – arc segments, 4- group

• mi scale(bx,by,scalefactor)

– bx, by – base point for scaling


– scalefactor – a multiplier that determines how much the selected objects are scaled

• mi scale2(bx,by,scalefactor,editaction)

– bx, by – base point for scaling


– scalefactor – a multiplier that determines how much the selected objects are scaled
– editaction 0 –nodes, 1 – lines (segments), 2 –block labels, 3 – arc segments, 4- group

• mi mirror(x1,y1,x2,y2) mirror the selected objects about a line passing through the
points (x1,y1) and (x2,y2).

• mi mirror2(x1,y1,x2,y2,editaction) mirror the selected objects about a line passing


through the points (x1,y1) and (x2,y2). Valid editaction entries are 0 for nodes, 1 for
lines (segments), 2 for block labels, 3 for arc segments, and 4 for groups.

• mi seteditmode(editmode) Sets the current editmode to:

– ’nodes’ - nodes
– ’segments’ - line segments
– ’arcsegments’ - arc segments

8
– ’blocks’ - block labels
– ’group’ - selected group

This command will affect all subsequent uses of the other editing commands, if they are used
WITHOUT the editaction parameter.

4.7 Zoom Commands


• mi zoomnatural zooms to a “natural” view with sensible extents.

• mi zoomout zooms out by a factor of 50%.

• mi zoomin zoom in by a factor of 200%.

• mi zoom(x1,y1,x2,y2) Set the display area to be from the bottom left corner specified by
(x1,y1) to the top right corner specified by (x2,y2).

4.8 View Commands


• mi_showgrid Show the grid points.

• mi_hidegrid Hide the grid points points.

• mi_grid_snap(’flag’) Setting flag to ’on’ turns on snap to grid, setting flag to ’off’
turns off snap to grid.

• mi_setgrid(density,’type’) Change the grid spacing. The density parameter speci-


fies the space between grid points, and the type parameter is set to ’cart’ for cartesian
coordinates or ’polar’ for polar coordinates.

• mi refreshview Redraws the current view.

• mi minimize minimizes the active magnetics input view.

• mi maximize maximizes the active magnetics input view.

• mi restore restores the active magnetics input view from a minimized or maximized state.

• mi resize(width,height) resizes the active magnetics input window client area to width
× height.

4.9 Object Properties


• mi getmaterial(’materialname’) fetches the material specified by materialname from
the materials library.

• mi addmaterial(’matname’, mu x, mu y, H c, J, Cduct, Lam d, Phi hmax, lam fill,


LamType, Phi hx, Phi hy, nstr, dwire) adds a new material with called ’matname’
with the material properties:

9
– mu x Relative permeability in the x- or r-direction.
– mu y Relative permeability in the y- or z-direction.
– H c Permanent magnet coercivity in Amps/Meter.
– J Applied source current density in Amps/mm2 .
– Cduct Electrical conductivity of the material in MS/m.
– Lam d Lamination thickness in millimeters.
– Phi hmax Hysteresis lag angle in degrees, used for nonlinear BH curves.
– Lam fill Fraction of the volume occupied per lamination that is actually filled with
iron (Note that this parameter defaults to 1 in the femm preprocessor dialog box because,
by default, iron completely fills the volume)
– Lamtype Set to
∗ 0 – Not laminated or laminated in plane
∗ 1 – laminated x or r
∗ 2 – laminated y or z
∗ 3 – magnet wire
∗ 4 – plain stranded wire
∗ 5 – Litz wire
∗ 6 – square wire
– Phi hx Hysteresis lag in degrees in the x-direction for linear problems.
– Phi hy Hysteresis lag in degrees in the y-direction for linear problems.
– nstr Number of strands in the wire build. Should be 1 for Magnet or Square wire.
– dwire Diameter of each of the wire’s constituent strand in millimeters.

Note that not all properties need be defined – properties that aren’t defined are assigned
default values.

• mi addbhpoint(’blockname’,b,h) Adds a B-H data point the the material specified by


the string ’blockname’. The point to be added has a flux density of b in units of Teslas and
a field intensity of h in units of Amps/Meter.

• mi clearbhpoints(’blockname’) Clears all B-H data points associatied with the material
specified by ’blockname’.

• mi addpointprop(’pointpropname’,a,j) adds a new point property of name ’pointpropname’


with either a specified potential a in units Webers/Meter or a point current j in units of Amps.
Set the unused parameter pairs to 0.

• mi addboundprop(’propname’, A0, A1, A2, Phi, Mu, Sig, c0, c1, BdryFormat,
ia, oa)
adds a new boundary property with name ’propname’

10
– For a “Prescribed A” type boundary condition, set the A0, A1, A2 and Phi parameters
as required. Set all other parameters to zero.
– For a “Small Skin Depth” type boundary condtion, set the Mu to the desired relative
permeability and Sig to the desired conductivity in MS/m. Set BdryFormat to 1 and
all other parameters to zero.
– To obtain a “Mixed” type boundary condition, set C1 and C0 as required and BdryFormat
to 2. Set all other parameters to zero.
– For a “Strategic dual image” boundary, set BdryFormat to 3 and set all other parameters
to zero.
– For a “Periodic” boundary condition, set BdryFormat to 4 and set all other parameters
to zero.
– For an “Anti-Perodic” boundary condition, set BdryFormat to 5 set all other parameters
to zero.
– For a “Periodic Air Gap”, set BdryFormat to 6. Parameters ia and oa specify the inner
and outer boundary angles, respectively.
– For an “Anti-periodic Air Gap”, set BdryFormat to 7. The same ia and oa parameters
also apply here.”

• mi addcircprop(’circuitname’, i, circuittype)
adds a new circuit property with name ’circuitname’ with a prescribed current. The
circuittype parameter is 0 for a parallel-connected circuit and 1 for a series-connected
circuit.

• mi deletematerial(’materialname’) deletes the material named ’materialname’.

• mi deleteboundprop(’propname’) deletes the boundary property named ’propname’.

• mi deletecircuit(’circuitname’) deletes the circuit named circuitname.

• mi deletepointprop(’pointpropname’) deletes the point property named ’pointpropname’

• mi_modifymaterial(’BlockName’,propnum,value) This function allows for modifica-


tion of a material’s properties without redefining the entire material (e.g. so that current can
be modified from run to run). The material to be modified is specified by ’BlockName’.
The next parameter is the number of the property to be set. The last number is the value to
be applied to the specified property. The various properties that can be modified are listed
below:

11
propnum Symbol Description
0 BlockName Name of the material
1 µx x (or r) direction relative permeability
2 µy y (or z) direction relative permeability
3 Hc Coercivity, Amps/Meter
4 J Source current density, MA/m2
5 σ Electrical conductivity, MS/m
6 dlam Lamination thickness, mm
7 φhmax Hysteresis lag angle for nonlinear problems, degrees
8 LamFill Iron fill fraction
9 LamType 0 = None/In plane, 1 = parallel to x, 2=parallel to y
10 φhx Hysteresis lag in x-direction for linear problems, degrees
11 φhy Hysteresis lag in y-direction for linear problems, degrees

• mi_modifyboundprop(’BdryName’,propnum,value) This function allows for modifica-


tion of a boundary property. The BC to be modified is specified by ’BdryName’. The next
parameter is the number of the property to be set. The last number is the value to be applied
to the specified property. The various properties that can be modified are listed below:

propnum Symbol Description


0 BdryName Name of boundary property
1 A0 Prescribed A parameter
2 A1 Prescribed A parameter
3 A2 Prescribed A parameter
4 φ Prescribed A phase
5 µ Small skin depth relative permeability
6 σ Small skin depth conductivity, MS/m
7 c0 Mixed BC parameter
8 c1 Mixed BC parameter
9 BdryFormat Type of boundary condition:
0 = Prescribed A
1 = Small skin depth
2 = Mixed
3 = Strategic Dual Image
4 = Periodic
5 = Antiperiodic
6 = Periodic Air Gap
7 = Antiperiodic Air Gap
10 ia Inner boundary angle for air gap element
11 oa Outer boundary angle for air gap element

• mi_modifypointprop(’PointName’,propnum,value) This function allows for modifi-


cation of a point property. The point property to be modified is specified by ’PointName’.
The next parameter is the number of the property to be set. The last number is the value to
be applied to the specified property. The various properties that can be modified are listed
below:

12
propnum Symbol Description
0 PointName Name of the point property
1 A Nodal potential, Weber/Meter
2 J Nodal current, Amps

• mi_modifycircprop(’CircName’,propnum,value) This function allows for modifica-


tion of a circuit property. The circuit property to be modified is specified by ’CircName’.
The next parameter is the number of the property to be set. The last number is the value to
be applied to the specified property. The various properties that can be modified are listed
below:

propnum Symbol Description


0 CircName Name of the circuit property
1 i Total current
2 CircType 0 = Parallel, 1 = Series

• mi setcurrent(’CircName’,i) sets the current in the circuit specified by ’CircName’ to


i.

4.10 Miscellaneous
• mi savebitmap(’filename’) saves a bitmapped screenshot of the current view to the file
specified by ’filename’.

• mi savemetafile(’filename’) saves a metafile screenshot of the current view to the file


specified by ’filename’.

• mi refreshview Redraws the current view.

• mi close Closes current magnetics preprocessor document and destroys magnetics prepro-
cessor window.

• mi shownames(flag) This function allow the user to display or hide the block label names
on screen. To hide the block label names, flag should be 0. To display the names, the
parameter should be set to 1.

• mi readdxf(’filename’) This function imports a dxf file specified by ’filename’.

• mi savedxf(’filename’) This function saves geometry information in a dxf file specified


by ’filename’.

• mi defineouterspace(Zo,Ro,Ri) defines an axisymmetric external region to be used in


conjuction with the Kelvin Transformation method of modeling unbounded problems. The
Zo parameter is the z-location of the origin of the outer region, the Ro parameter is the radius
of the outer region, and the Ri parameter is the radius of the inner region (i.e. the region
of interest). In the exterior region, the permeability varies as a function of distance from
the origin of the external region. These parameters are necessary to define the permeability
variation in the external region.

13
• mi attachouterspace marks all selected block labels as members of the external region
used for modeling unbounded axisymmetric problems via the Kelvin Transformation.

• mi detachouterspace undefines all selected block labels as members of the external region
used for modeling unbounded axisymmetric problems via the Kelvin Transformation.

• mi attachdefault() marks the selected block label as the default block label. This block
label is applied to any region that has not been explicitly labeled.

• mi detachdefault() undefines the default attribute for the selected block labels.

• mi makeABC(n,R,x,y,bc) creates a series of circular shells that emulate the impedance of


an unbounded domain (i.e. an Improvised Asymptotic Boundary Condition). The n parame-
ter contains the number of shells to be used (should be between 1 and 10), R is the radius of
the solution domain, and (x,y) denotes the center of the solution domain. The bc parameter
should be specified as 0 for a Dirichlet outer edge or 1 for a Neumann outer edge. If the
function is called without all the parameters, the function makes up reasonable values for the
missing parameters.

• mi setprevious(filename,prevtype) defines the previous solution to be used as the ba-


sis for an AC incremental permeability or frozen permeability solution. The prevtype field
is an integer that specifies whether the solution is to be incremental permeability (1) or frozen
permeability (2). The filename should include the .ans extension, e.g. mi setprevious(’mymodel.ans’,1

5 Magnetics Post Processor Command Set


There are a number of scripting commands designed to operate in the postprocessing environment.

5.1 Data Extraction Commands


• mo lineintegral(type) Calculate the line integral for the defined contour

type name values 1 values 2 values 3 values 4


0 B.n total B.n avg B.n - -
1 H.t total H.t avg H.t - -
2 Contour length surface area - -
3 Stress Tensor Force DC r/x force DC y/z force 2× r/x force 2× y/z force
4 Stress Tensor Torque DC torque 2× torque - -
5 (B.n)ˆ2 total (B.n)ˆ2 avg (B.n)ˆ2 - -

Returns typically two values. The first value is the result of the integral calculation, and the
second value is the average of the quantity of interest over the contour. The only exception
is integral 3, which evaluates Maxwell’s stress tensor. This integral can return up to four
results. For force and torque results, the 2× results are only relevant for problems where
ω 6= 0.

• mo blockintegral(type) Calculate a block integral for the selected blocks

14
Type Definition
0 A·J
1 A
2 Magnetic field energy
3 Hysteresis and/or lamination losses
4 Resistive losses
5 Block cross-section area
6 Total losses
7 Total current
8 Integral of Bx (or Br ) over block
9 Integral of By (or Bz ) over block
10 Block volume
11 x (or r) part of steady-state Lorentz force
12 y (or z) part of steady-state Lorentz force
13 x (or r) part of 2× Lorentz force
14 y (or z) part of 2× Lorentz force
15 Steady-state Lorentz torque
16 2× component of Lorentz torque
17 Magnetic field coenergy
18 x (or r) part of steady-state weighted stress tensor force
19 y (or z) part of steady-state weighted stress tensor force
20 x (or r) part of 2× weighted stress tensor force
21 y (or z) part of 2× weighted stress tensor force
22 Steady-state weighted stress tensor torque
23 2× component of weighted stress tensor torque
24 R2 (i.e. moment of inertia / density)
25 x (or r) part of 1× weighted stress tensor force
26 y (or z) part of 1× weighted stress tensor force
27 1× component of weighted stress tensor torque
28 x (or r) part of 1× Lorentz force
29 y (or z) part of 1× Lorentz force
30 1× component of Lorentz torque

• mo getpointvalues(x,y) Get the values associated with the point at (x,y). The function
returns an array whose contents are, in order:

15
Symbol Definition
A Potential A or flux φ
B1 Bx if planar, Br if axisymmetric
B2 By if planar, Bz if axisymmetric
Sig conductivity σ
E stored energy density
H1 Hx if planar, Hr if axisymmetric
H2 Hy if planar, Hz if axisymmetric
Je eddy current density
Js source current density
Mu1 µx if planar, µr if axisymmetric
Mu2 µy if planar, µz if axisymmetric
Pe Power density dissipated through ohmic losses
Ph Power density dissipated by hysteresis
ff Winding fill factor

The following series of functions retrieves smaller subsets of these results.

• mo geta(x,y) Get the potential associated with the point at (x,y). For planar problems, the
reported potential is vector potential A. For axisymmetric problems, 2πrA is reported.

• mo getb(x,y) Get the magnetic flux density associated with the point at (x,y). The return
value is a list with two element representing Bx and By for planar problems and Br and Bz for
axisymmetric problems.

• mo getconductivity(x,y) Gets the conductivity associated with the point at (x,y).

• mo getenergydensity(x,y) Gets the magnetic field energy density associated with the
point at (x,y).

• mo geth(x,y) Get the magnetic field intensity associated with the point at (x,y). The return
value is a list with two element representing Hx and Hy for planar problems and Hr and Hz
for axisymmetric problems.

• mo getj(x,y) Get the electric current density associated with the point at (x,y).

• mo getmu(x,y) Get the relative magnetic permeability associated with the point at (x,y).
The return value is a list with two element representing µx and µy for planar problems and µr
and µz for axisymmetric problems.

• mo getpe(x,y) Get the ohmic loss density associated with the point at (x,y).

• mo getph(x,y) Get the hysteresis/laminated eddy current loss density associated with the
point at (x,y).

• mo getfill(x,y) Get the winding factor (i.e. the average fraction of the volume filled with
conductor) associated with the point at (x,y).

16
• mo_makeplot(PlotType,NumPoints,Filename,FileFormat) Allows Octave access to
FEMM’s X-Y plot routines. If only PlotType or only PlotType and NumPoints are spec-
ified, the command is interpreted as a request to plot the requested plot type to the screen.
If, in addition, the Filename parameter is specified, the plot is instead written to disk to
the specified file name as an extended metafile. If the FileFormat parameter is also, the
command is instead interpreted as a command to write the data to disk to the specfied file
name, rather than display it to make a graphical plot. Valid entries for PlotType are:

PlotType Definition
0 Potential
1 |B|
2 B·n
3 B·t
4 |H|
5 H ·n
6 H ·t
7 Jeddy
8 Jsource + Jeddy

Valid file formats are


FileFormat Definition
0 Multi-column text with legend
1 Multi-column text with no legend
2 Mathematica-style formatting

For example, if one wanted to plot B · n to the screen with 200 points evaluated to make the
graph, the command would be:
mo makeplot(2,200)
If this plot were to be written to disk as a metafile, the command would be:
mo_makeplot(2,200,’c:\temp\myfile.emf’)
To write data instead of a plot to disk, the command would be of the form:
mo_makeplot(2,200,’c:\temp\myfile.txt’,0)
• mo_getprobleminfo Returns info on problem description. Returns four values:

Return value Definition


1 problem type
2 frequency in Hz
3 problem depth in meters
4 length unit used to draw the problem, represented in meters

• mo_getcircuitproperties(’circuit’) Used primarily to obtain impedance information


associated with circuit properties. Properties are returned for the circuit property named
’circuit’. Six values are returned by the function. In order, these parameters are:

17
– current Current carried by the circuit.
– volts Voltage drop across the circuit in the circuit.
– flux Circuit’s flux linkage

• mo_getgapb("BdryName",angle) Computes the radial and tangential flux density on the


centerline of the specified air gap element name (BdryName) at the specified angle. The
angle is specified in degrees.

• mo_getgapa("BdryName",angle) Computes the magnetic vector potential on the center-


line of the specified air gap element name (BdryName) at the specified angle. The angle is
specified in degrees.

• mo_gapintegral("BdryName",inttype) Computes an integral specifiedy by inttype over


an air gap element specified by BdryName. Values for inttype in are:

0 DC Torque
1 DC Force
2 Stored Energy
3 2X Torque
4 2X Force
5 Interaction Torque
6 Interaction Force

Torque and energy integrals return one result; force integrals return two results for the x- and
y- direction force, respectively.

• mo_getgapharmonicsl("BdryName",n) Returns the acc, acs,brc,brs,btc, and bts. These


quantities represent the components of vector potential, radial flux density, and tangential
flux density on the centerline of the specified air gap element at the specified angle. For
the nth harmonic, vector potential, radial flux density, and tangential flux density can be
represented explicitly as functions of angle via:

A = acc cos nθ + acs sin nθ


Br = brc cos nθ + brs sin nθ
Bθ = btc cos nθ + bts sin nθ

If the function is called with just the BdryName, the function returns the number of harmonics
available.

5.2 Selection Commands


• mo seteditmode(mode) Sets the mode of the postprocessor to point, contour, or area mode.
Valid entries for mode are ’point’, ’contour’, and ’area’.

• mo selectblock(x,y) Select the block that contains point (x,y).

18
• mo groupselectblock(n) Selects all of the blocks that are labeled by block labels that are
members of group n. If no number is specified (i.e. mo groupselectblock ), all blocks are
selected.

• mo addcontour(x,y) Adds a contour point at (x,y). If this is the first point then it starts a
contour, if there are existing points the contour runs from the previous point to this point.
The mo addcontour command has the same functionality as a right-button-click contour
point addition when the program is running in interactive mode.

• mo bendcontour(angle,anglestep) Replaces the straight line formed by the last two


points in the contour by an arc that spans angle degrees. The arc is actually composed
of many straight lines, each of which is constrained to span no more than anglestep de-
grees. The angle parameter can take on values from -180 to 180 degrees. The anglestep
parameter must be greater than zero. If there are less than two points defined in the contour,
this command is ignored.

• mo selectpoint(x,y) Adds a contour point at the closest input point to (x,y). If the se-
lected point and a previous selected points lie at the ends of an arcsegment, a contour is added
that traces along the arcsegment. The mo selectpoint command has the same functional-
ity as the left-button-click contour point selection when the program is running in interactive
mode.

• mo clearcontour Clear a prevously defined contour

• mo clearblock Clear block selection

5.3 Zoom Commands


• mo_zoomnatural Zoom to the natural boundaries of the geometry.

• mo_zoomin Zoom in one level.

• mo_zoomout Zoom out one level.

• mo zoom(x1,y1,x2,y2) Zoom to the window defined by lower left corner (x1,y1) and upper
right corner (x2,y2).

5.4 View Commands


• mo_showmesh Show the mesh.

• mo_hidemesh Hide the mesh.

• mo_showpoints Show the node points from the input geometry.

• mo_hidepoints Hide the node points from the input geometry.

19
• mo smooth(’flag’) This function controls whether or not smoothing is applied to the B
and H fields, which are naturally piece-wise constant over each element. Setting flag equal
to ’on’ turns on smoothing, and setting flag to ’off’ turns off smoothing.
• mo_showgrid Show the grid points.
• mo_hidegrid Hide the grid points points.
• mo_grid_snap(’flag’) Setting flag to ’on’ turns on snap to grid, setting flag to ’off’
turns off snap to grid.
• mo_setgrid(density,’type’) Change the grid spacing. The density parameter speci-
fies the space between grid points, and the type parameter is set to ’cart’ for cartesian
coordinates or ’polar’ for polar coordinates.
• mo_hidedensityplot hides the flux density plot.
• mo_showdensityplot(legend,gscale,upper_B,lower_B,type) Shows the flux density
plot with options:
– legend Set to 0 to hide the plot legend or 1 to show the plot legend.
– gscale Set to 0 for a colour density plot or 1 for a grey scale density plot.
– upper_B Sets the upper display limit for the density plot.
– lower_B Sets the lower display limit for the density plot.
– type Type of density plot to display. Valid entries are ’mag’, ’real’, and ’imag’
for magnitude, real component, and imaginary component of B, respectively. Alterna-
tively, current density can be displayed by specifying ’jmag’, ’jreal’, and ’jimag’
for magnitude, real component, and imaginary component of J, respectively.
• mo_hidecontourplot Hides the contour plot.
• mo_showcontourplot(numcontours,lower_A,upper_A,type) shows the A contour plot
with options:
– numcontours Number of A equipotential lines to be plotted.
– upper_A Upper limit for A contours.
– lower_A Lower limit for A contours.
– type Choice of ’real’, ’imag’, or ’both’ to show either the real, imaginary of both
real and imaginary components of A.
• mo showvectorplot(type,scalefactor) controls the display of vectors denoting the field
strength and direction. The parameters taken are the type of plot, which should be set to 0
for no vector plot, 1 for the real part of flux density B; 2 for the real part of field intensity H;
3 for the imaginary part of B; 4 for the imaginary part of H; 5 for both the real and imaginary
parts of B; and 6 for both the real and imaginary parts of H. The scalefactor determines
the relative length of the vectors. If the scale is set to 1, the length of the vectors are chosen
so that the highest flux density corresponds to a vector that is the same length as the current
grid size setting.

20
• mo minimize minimizes the active magnetics output view.
• mo maximize maximizes the active magnetics output view.
• mo restore restores the active magnetics output view from a minimized or maximized state.
• mo resize(width,height) resizes the active magnetics output window client area to width
× height.

5.5 Miscellaneous
• mo close Closes the current post-processor instance.
• mo refreshview Redraws the current view.
• mo reload Reloads the solution from disk.
• mo savebitmap(’filename’) saves a bitmapped screen shot of the current view to the file
specified by ’filename’.
• mo savemetafile(’filename’) saves a metafile screenshot of the current view to the file
specified by ’filename’.
• mo shownames(flag) This function allow the user to display or hide the block label names
on screen. To hide the block label names, flag should be 0. To display the names, the
parameter should be set to 1.
• mo numnodes Returns the number of nodes in the in focus magnetics output mesh.
• mo numelements Returns the number of elements in the in focus magnets output mesh.
• mo getnode(n) Returns the (x,y) or (r,z) position of the nth mesh node.
• mo getelement(n) returns the following proprerties for the nth element:
1. Index of first element node
2. Index of second element node
3. Index of third element node
4. x (or r) coordinate of the element centroid
5. y (or z) coordinate of the element centroid
6. element area using the length unit defined for the problem
7. group number associated with the element

6 Electrostatics Preprocessor Command Set


A number of different commands are available in the preprocessor. Two naming conventions can
be used: one which separates words in the command names by underscores, and one that eliminates
the underscores.

21

You might also like