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 the next version of SIMION, but 8.1 users can beta test them now (see Early Access Mode).
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 (for Early Access Mode).
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:
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.
SIMION Refine has been extended to support new types of physics described below.
Also see Floating Conductor
Permeability, Magnets [8.2EA/8.0]¶
Magnetic Permeability support is added in 8.2 Early Access Mode. 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.
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.
New Programming Segments [8.1.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 Early Access Mode 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.
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]¶
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.
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.
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]¶
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 126.96.36.199, 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 import is forthcoming. You can visually overlap/compare STL and PA objects in the “STL->PA” View output window by checking both the PA and STL checkboxes.
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 Early Access Mode (8.2) to assist compute server deployments.
- 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.
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.
Early Access Mode 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.