SIMION® 8.2¶
SIMION® 8.2 (2020) makes a number of enhancements over SIMION® 8.1.
Enhancements¶
Following new features are currently available in 8.2:
Graphics:
3D OpenGL graphics on the View screen. This is similar to the Modify 3D button but displays PA instances, trajectories, and poential contour surfaces. Modify/View 3D views also now display surface enhancement.
Main GUI:
New file folder tree on Main screen, with file-specific commands as pop-up menus by right click. [8.2EA]
Files can now be dragged and dropped from Windows Explorer into the SIMION window. This includes PA, GEM, and IOB files.
API/Programming:
Workbench user programs
segment.instance_adjust()
- new segment to programatically change PA instance order during a run–useful for overlapping PA instances to avoid fringe effects.sim_segment_global
new reserved variable. Set this to 1 to cause program segments to be always called even when particles are outside PA instances.Reserved variables:
sim_ions_count
- read number of particles in Fly’mion_ke
- more conveniently read/write current particles KE.sim_relativity
- defines whether relativistic effects are on
GUI Library (simion.experimental.dialog) - creates GUI dialogs. (Added 2014-04-01)
simion.experimental.add_particles()
- create particles during the Fly’m.PA and workbench
simion.wb: New functions:
simion.wb:save_stl()
- Save IOB to STL file.simion.wb:save()
- Save IOB.simion.wb:load()
- Load IOB.simion.wb:load_particles()
- Load any particles (ION/FLY/FLY2)c API(simion.wb): Add time
t
parameter tosimion.wb:epotential()
,simion.wb:bpotential()
,simion.wb:efield()
,simion.wb:bfield()
,simion.wb instance:potential()
,simion.wb instance:field()
. These utilizefast_adjust
,efield_adjust
, andmfield_adjust
segments to obtain the time-dependent field.Field Functions Library (simion.experimental.field_array) for presenting vector fields, including magnetic vector potential, from potential array objects (related to Magnetic Potential).
-- 3D field of Ax, Ay, and Az arrays. simion.workbench_program() local A = simion.experimental.field_array{Ax=1,Ay=2,Az=3} segment.mfield_adjust = A.mfield_adjust print('TEST', A.bfield(10,20,0))
simion.pas pa:binary_import()
- efficiently load binary file data into SIMION PA. (minor)
Reading fields directly from Poisson Superfish .T35 finite element meshes. Using Poisson Superfish with SIMION.
ZeroMQ communications libraries and improved multiprocess parallelization programming. See Calling External Programs and SIMION Example: multiprocess_zmq.
OS
Native Linux Binary: A non-GUI native Linux binary is now available. See Linux.
Intel Xeon Phi - Experimental support for Intel Xeon Phi Coprocessor: A non-GUI native binaries is now available for the Xeon Phi. This implementation is a prototype and does not achieve much in performance improvements.
Modify
Flood fill
pa:flood_fill
.Colored electrodes in 2D views based on potential. See Modify Color.
Electrode edges outlined in 2D views. See Modify Edge Outline.
2D views now show electrode points in other planes as non-electrode points of a different shade of green. Allows understanding layered cross sections better. See Modify Planes.
GEM
Extensions in 8.2: Major improvements to GEM syntax:
New shapes:
gem cylinder3d()
,gem half_space()
, and custom shapesgem shape()
defined by analytical equtions.gem stl()
- Embedding STL files inside GEM files, for use like any other shape. (Added in 8.2.0.10)New transformations:
gem extrude_xy()
,gem extrude_yz()
,gem extrude_zx()
,gem revolve_xy()
,gem revolve_yz()
,gem revolve_zx()
,gem rotate_x()
,gem rotate_y()
,gem rotate_z()
, Many of these make geometry definitions more convenient and clear, with less use oflocate
rotations.gem pa_define()
accepted named parameters and new convenience features like array dimensions in mm:pa_define {wx=10, wy=10, dx=0.1}
.gem e()
: andgem n()
can accept a function parameter for defining gradient voltages over electrodes or analytic potentials in space.fill
andwithin
can be omitted for shorter GEM code, andgem intersect()
is an alias forwithin
.e(1) { intersect { box(0,0, 10,10) circle(0,0, 10) } }
. omit fill/within commands.gem include()
supports new ways to pass variables to/from included GEM files.gem inf
to represent infinity$(...)
and#
can be omitted around Lua code:e(1) { for i=1,3 do box(i*10,0, i*10+w, 10) end }
.Using a Lua style comment
--
in the file will disable compatibility mode supporting older deprecated GEM syntax such as space-delimited argument lists,+
before numbers, and unquoted strings. New syntax.
Refining and PAs enhancements:
magnetic permeability and magnetic vector potential (see Magnetic Potential and SIMION Example: magnetic_potential). Uses SIMION PA Poisson solver to incrementally provide additional magnetic capabilities (2D and in some cases 3D). This is intended for advanced users and involves Lua coding.
New/updated examples:
A number of examples, including all existing examples using what was early access features (not listed here).
SIMION Example: matlab: Examples of exporting arrays from MATLAB®/Octave to SIMION and other interfacing examples.
SIMION Example: molecular_beam: molecular beam examples (beam of neutral molecules with dipoles) - experimental
Updated/reorganized electronic documentation, an abgrided version of which is online.
The following features are currently planned for 8.2, but are not yet implemented (though are quite likely):
Parallelize the Fly’m (Multicore CPU support). Multiprocess has already been demonstrated with TCP/IP sockets. Single-process multicore implementation in progress (May 2013).
Further GEM format enhancements.
Yet more improvements to the GUI.
Simplify definition of contour values (.con) from the GUI (e.g. copy/paste a list of values as text or specify a range) or define them from Lua code. Probably extend .con format in ASCII format.
Many other things are under consideration for future versions and will be described here as 8.2 development progresses.