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).


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.


Fig. 2 Figure: (left) View screen of PA without surface enhancement (surface=auto). (right) View screen of PA with surface enhancement (surface=fractional). This is a circular aperture of radius 6 grid units.


Fig. 3 Figure: (left) Electrode with surface enhancement. (right) Electrode without surface enhancement. Display requires 8.2-EA20130509.

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]


Fig. 4 Figure: PA with non-square grid cells.

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.


Fig. 5 Example of a huge 56 GB PA running in an EC2 instance.

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.


Fig. 6 One of the SIMION 8.1.1 dielectric examples (dielectric sphere inside electric field), with equipotential contour lines shown.

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.


Fig. 7 One of the examples in SIMION Example: magnetic_potential (“C magnet) that runs under SIMION 8.2 and utilizes permeable materials and current densities. Calculated magnetic vectors and field lines are shown in red.

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:


Fig. 8 Figure: SIMION simulation (Biot-Savart) of two wire coils, showing magnetic field vectors on axial plane. This is from Helmholtz Coil.

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]


Fig. 9 PE surface. Note peak near space-charge.

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.


Fig. 10 Figure Latest SIMION Example: child_particles using the new add_particles API, showing secondary particles and secondary emissions.

New APIs [8.0-8.2EA]

Various new application programmer interfaces (APIs) continue to be developed, as shown in Programming API for SIMION.


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.


Fig. 11 Figure:: SIMION 8.1 screenshot of collision_sds\test3.iob, which uses gas flow PA’s added to the workbench PA Instances list. Gas velocity vectors are also plotted with contourlib81.

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.


Fig. 12 Figure: Rough spectrum obtained via SIMION Example: spectrum

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.


Fig. 13 Figure: Gas flow calculated in Virtual Device Hydrodynamics “VirtualJet” utility.

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 GEM Extensions in 8.2, including

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.


Fig. 14 Figure twisted_rods in SIMION Example: geometry.

If using STL import, be sure to update to the SL Tools, 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 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 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.


  • 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 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.