SIMION Advances¶
This article summarizes new features and techniques available in recent versions of SIMION. Long time SIMION users may discover new capabilities and easier ways of doing things.
A few of these features are in SIMION 8.2 (2020/202X).
Graphics¶
OpenGL on the View Screen [8.2EA]¶
High quality 3D OpenGL graphics within the View screen is now available in SIMION 8.2 (similar to the Modify 3D view in SIMION 8.0).
PA instances, trajectories, and potential contour surfaces are rendered. See Graphics Card for performance hints.
Field Calculation Accuracy¶
Below are some capabilities that can improve field calculation accuracy in recent SIMION versions.
Electrode Surface Enhancement [8.1.1/EA]¶
The SIMION 8.1.1 “surface enhancement” feature allows electrode surfaces that are curved or otherwise not aligned to PA grid units to be modeled in a PA much more accurately than before. Surface positions are stored more precisely rather than (as before) approximated to the nearest grid unit, and this is used by Refine.
Surface enhancement can improve field and trajectory accuracy
by more than an order of magnitude for typical systems affected by this.
Using this can be as simple as adding a surface=fractional
to your GEM file.
See Electrode Surface Enhancement / Fractional Grid Units.
Be careful, however, if flying particles within 1 gu from electrodes surfaces
(e.g. particles grazing surfaces) since proper Fly’m support for the
surface enhancement region is currently still under development.
Anisotropically Scaled Grid Units [8.1]¶
SIMION 8.1 also allows PA grid cell sizes to differ in the x, y, and z directions. This can improve accuracy and memory usage in some cases where it may be warranted to use different cell sizes in each dimension. See Anisotropically Scaled Grid Cells in SIMION.
Large Arrays [8.1]¶
SIMION 8.1, includes a 64-bit executable, which allows PA sizes much larger than the previous 2 GB limit in 8.0. See RAM and Memory. The SIMION on Amazon EC2 service is helpful if you need temporary access to a computer with large amounts of RAM. Note, however, that surface enhancement may eliminate or reduce the need for very large arrays.
Nested Refines [8.1/8.1.1/EA]¶
There are ways to nest fine arrays inside coarse arrays even if a convenient boundary surface does not exist between the two arrays, and this can be simplified in future versions:
See Field Emission and Multiple PAs.
Some other techniques are possible using the SIMION 8.0.3 Modify screen “Crop” function on refined potential array files. For example, create two arrays that overlap in a region large enough that the fields don’t leak through the center of the overlap region. Refine those two arrays independently. Then crop them in the center of the overlap region. SIMION Example: bender_cut explores things like this.
Refine Capabilities¶
SIMION Refine has been extended to support new types of physics described below.
Dielectrics [8.1]¶
Dielectrics support is added in SIMION 8.1.1. Refine uses an additional array that stores dielectric constants within each grid cell in space. See Dielectrics and SIMION Example: dielectric.
Also see Floating Conductor
Permeability, Magnets [8.2EA/8.0]¶
Magnetic Permeability support is added in SIMION 8.2. See Magnetic Potential and SIMION Example: magnetic_potential. This is a little like dielectric support but can also involve other complications like magnetic vector potential depending on the type of magnetic problem.
SIMION 8.0.3 added calculation of B-fields from wire currents via the Biot-Savart Law (not using Refine), and SIMION 8.1 allows those B-fields and the wires to be plotted:
Fast Scale Extension [8.0.3]¶
SIMION 8.0.3 provides a way to reduce the number of solution arrays using fast adjustable arrays (PA# files), especially when using things like resistor chains that make the electrode voltages mutually dependent. Especially if you currently have dozens or hundreds of adjustable electrodes, you can probably significantly reduce your disk and/or memory usage this way. See Additional Fast Proportional Scaling Solutions and SIMION Example: ion_funnel.
Space-Charge [8.1]¶
SIMION 8.1 extended Refine to handle the Poisson Equation. However, there are a large variety of ways this may be utilized (and can be an advanced topic). Some examples are included in SIMION Example: poisson. See Poisson Solver in SIMION for discussion.
Multicore [8.1]¶
SIMION 8.1 increases Refine speed (and some of the rendering) on systems with Multicore CPU support. 8.2 early access is in the process of also adding such support for the Fly’m.
Programming and Flym¶
Multiprocess Communication Examples Improved and ZeroMQ Libraries¶
As of 8.2EA, the ZeroMQ communication libraries bundled for communication between multiple SIMION processes and/or other programs (one same or different computers). One useful application is splitting Fly’m or optimization jobs across across multiple SIMION processes to speed up runs.
See SIMION Example: multiprocess_zmq and SIMION Example: multiprocess_zmq/client_server.
New Programming Segments [8.1.1]¶
SIMION 8.1.1 adds new workbench user program segments like
initialize_run
,
terminate_run
,
flym
,
load
, and
instance_adjust
(8.2EA20170210)
See Workbench Program Extensions in SIMION 8.1.
The flym
segment allows easier automation of multiple runs.
The latest SIMION Example: tune and SIMION Example: lens_properties in 8.1.1 use
these for lens voltages.
The latest SIMION Example: geometry_optimization in 8.1.1
iterates through geometric dimensions without leaving the View
screen (this triggers Refines within the View screen).
The initialize_run
and
terminate_run
can be
preferred over initialize
and terminate
.
instance_adjust
(8.2EA)
allows changing PA instance priority during a run.
sim_segment_global
ensure segments are
called even outside PA instance volumes (8.2EA20170214).
Editing Geometries from the View Screen [8.1.1]¶
SIMION Example: magnetic_sector and SIMION Example: field_emission illustrate a technique of tying geometric dimensions in a GEM file to variables on the View screen adjustable Variables panel. Changing the Variables panel triggers the PA to be rebuilt and refined without leaving the View screen. This makes it convenient to explore changes to geometric dimensions or things like PA grid density (mm/gu).
Creating Particles During the Fly’m [8.2EA]¶
SIMION 8.2 has a new
simion.experimental.add_particles()
API for creating particles
during the Fly’m user program.
This simplifies secondary emission and reaction effect compared to previous
versions.
New APIs [8.0-8.2EA]¶
Various new application programmer interfaces (APIs) continue to be developed, as shown in Programming API for SIMION.
Analysis¶
Here are some ways to view your data and analyze your results better.
Graphics - Plotting [8.1]¶
A programming library is provided to plot vector fields derived from arbitrary sources (such as PA objects, text files, or user functions), as seen in the Biot-Savart calculated magnetic field above. The SIMION Example: contour is vastly improved in 8.1. See Helmholtz Coil and SIMION Example: contour.
Accessing Fields in PA Objects from the API [8.1/8.1.1]¶
The simion.pas and simion.wb API’s can conveniently extract field data from a PA or workbench. For example, while in the View screen, enter this into the SIMION command bar:
for z=0,0 do for y=1,20 do for x=1,20 do print(x,y, simion.wb:efield(x,y,z)) end end end
You can also utilize SIMION PA objects to conveniently store any type of scalar or vector field data. This include using three PA objects for the x, y, and z components of a B-field (which is now recommended over previous methods such as trying to convert the B-field to a scalar magnetic field or using the simionx.FieldArray - 3D vector field API)– see the “solenoid_pa.iob” example in the latest SIMION Example: field_array. You can also use PA’s for things like pressure, temperature, and velocity arrays for gas flows (see Computational Fluid Dynamics (CFD)), and this can also be plotted using the plotting library mentioned above. The convenient thing is that these PA objects can be added and positioned in the usual way via the View screen PA’s tab.
Details of the API are in simion.pas and simion.wb.
Excel and gnuplot [8.0/8.1.1]¶
See SIMION Example: excel (added in 8.0 and expanded in 8.1) for various examples of plotting to Excel from SIMION. Examples of plotting to instead plotting to gnuplot were added in 8.1 (SIMION Example: gnuplot).
It’s recommended you utilize the “plotlib” library [8.1.1] in SIMION Example: plot, which provides simpler wrappers around these functions and allows your code to be compatible with both Excel and gnuplot.
See SIMION Example: spectrum for interactively plotting acquired spectra.
Test Planes [8.0.5]¶
SIMION Example: test_plane (8.1) provides more flexibility programatically than the x/y/z crossing planes in Data Recording. This may also be combined with things like SIMION Example: count_transmission and SIMION Example: emittance to automate your data analysis from within a workbench user program.
Virtual Device and Gas Flow¶
Virtual Device is a third-party package by Dr. Sergei Koltsov, which in addition to its original geometry definition and data analysis functions, now calculates gas flows (Computational Fluid Dynamics (CFD)), specializing in high velocity / large differences in pressure conditions. The gas flows can be exported as SIMION PA files.
See also Ion-Gas Collisions.
Geometry Definition [8.0.3/8.1.1/8.2]¶
8.2 has a major expansion to GEM syntax. See Extensions in 8.2, including
New shapes:
gem cylinder3d()
,gem half_space()
, and custom shapesgem shape()
defined by analytical equtions.gem stl()
- Embedding STL files inside GEM files (as of 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.Workbench GEM files (*.wgem) (2024-09-20, 2022 license) - Single .wgem file constructing multiple PA instances in workbench.
As in 8.0.3, GEM files support macros, which reduce repetition. See GEM Geometry File and various examples in SIMION Example: geometry (e.g. macro.gem).
Some difficult geometries can be defined in using the simion.pas API in SIMION 8.1.
If using STL import, be sure to update to the SL Tools 8.1.1.1, which has the solid strategy: solid under surface normals option for improved accuracy. See solid strategy. Support for Electrode Surface Enhancement / Fractional Grid Units in STL is officially available in 8.2.0.10. You can visually overlap/compare STL and PA objects in the “STL->PA” View output window by checking both the PA and STL checkboxes.
SL Tools STL -> PA now as a GUI for assigning different electrode voltages to each connected surface in an STL file. Also it can export a GEM file that references the STL file. (added in version 8.2.0.11 20210624)
Linux and Mac OS Support¶
SIMION has been a native Windows application but fully supported under Linux and Mac OS via Wine/CrossOver (including 64-bit Wine). A native non-GUI Linux binary is also now available in SIMION 8.2 to assist compute server deployments.
Modify¶
Flood fill
pa:flood_fill
[8.2EA] This makes changing electrode numbers on complex shapes trivial, as well as filling in hollow electrodes from STL import.
Colored electrodes in 2D views based on potential [8.2EA]
Edges of electrodes are outlined in 2D views [8.2EA], which makes more clear, for example, that the below figure has a height of two grid units, not three.
2D views now show electrode points in other planes as non-electrode points of a different shade of green [8.2EA]. Allows understanding layered cross sections better.
Main Screen [8.2]¶
New file folder tree on Main screen, with file-specific commands as pop-up menus by right click. [8.2EA]
Help [8.1]¶
SIMION 8.1 significantly expanded the “Supplemental Electronic Documentation”.
This is available via the Help > Supplemental Documentation
menu in SIMION 8.1,
and an abridged version is online http://simion.com/info.
Download the latest simionsetup to install the latest version of this documentation.
More Information¶
SIMION 8.2 outlines new features available for beta testing. SIMION® 8.1 and SIMION® 8.0 outline major features in previous SIMION releases. SIMION Software Change Log is a detailed list of all changes made to all SIMION releases (major and minor). SIMION® Roadmap (8.2 and Beyond) summarizes the development priorities, schedule, and support on SIMION versions.