simionx.MField - Biot-Savart magetic field calculations¶
SYNOPSIS¶
-- mag.lua (assumes workbench is similarly named mag.iob)
-- Example SIMION workbench program applying calculated
-- solenoid magnetic field.
simion.workbench_program()
local MField = require "simionx.MField" -- load module
-- Define solenoid magnetic field.
local field = MField.solenoid_hoops {
first = MField.vector(-10,0,0),
last = MField.vector(-10,0,0)
radius = 1.2,
nturns = 200
}
-- Draw wires in SIMION 8.1
field:draw()
-- SIMION mfield_adjust segment overrides
-- magnetic fields in magnetic PA at current
-- particle position.
function segment.mfield_adjust()
-- Calculate solenoid magnetic field at current
-- particle position (with Biot-Savart calculation).
ion_bfieldx_gu, ion_bfieldy_gu, ion_bfieldz_gu
= field(ion_px_mm, ion_py_mm, ion_pz_mm)
end
DESCRIPTION¶
This module calculates various magnetic fields from wire currents using the Biot-Savart Law. The magnetic fields calculated can be used directly or, as often done, applied in a workbench via an mfield_adjust user program segment.
The module is loaded with
local MField = require "simionx.MField"
This module is typically used by first constructing an object defining the wire current configuration:
local field = MField.line_segment {
current = 2,
first = MField.vector(-50,0,0),
last = MField.vector(50,0,0)
}
This defines an infinitely thin line segment of wire with 2 amps going from point (x,y,z) = (-50,0,0) to point (x,y,z) = (50,0,0) mm. It does not yet calculate the magnetic field though.
To calculate the magnetic field at some arbitrary point from this magnetic system, we call the object as a function, passing it the x, y, and z components of the observation point:
local bx, by, bz = field(0,0,1)
print(bx,by,bz) --> 0 -3.99920023992 0
In SIMION 8.1.0, wires from the field object can be drawn on the View screen
with the draw
method:
field:draw()
The above does nothing in previous SIMION versions, but you can test whether
it will do anything by checking the MField.can_draw
boolean variable.
Note
This page is abridged from the full SIMION "Supplemental Documentation" (Help file). The following additional sections can be found in the full version of this page accessible via the "Help > Supplemental Documentation" menu in SIMION 8.1.1 or above:INTERFACE
Changes¶
20110826 - Added mfield:draw method to draw wires on the SIMION View screen in SIMION 8.1.0.
SOURCE¶
version: 20110826