SIMION® 8.1 makes a number of enhancements over SIMION® 8.0. Major areas of emphasis include speed, accuracy, array refining enhancements, and programming APIs.
Schedule: The first 8.1.0 production release was in Aug 2011, and further 8.1.x.y releases are being posted as free updates.
Changes between 8.0.x and 8.1.1 are detailed in SIMION Software Change Log, but the main differences are summarized here:
- Use large arrays on 64-bit systems.
A 64-bit executable of SIMION is now provided, which allows taking advantage of larger array sizes (up to 190 GB, ~20 billion point arrays in 220.127.116.11). When the 64-bit SIMION executable is run on a 64-bit Windows, SIMION can utilize all available system RAM. SIMION can use arrays with the number of points being approximately 1/10 the number of bytes in free physical RAM. For example, a system with 16 GB of RAM, 14 GB of which is free, can use a 1.5 billion point array. A 32-bit executable of SIMION 8.1 is also included for compatibility but (like SIMION 8.0) is limited to array sizes of roughly 2 GB (~200 million points).
The 64-bit version requires a 64-bit Windows, which in turn requires a 64-bit CPU. The 64-bit executable is currently only supported on 64-bit Windows (or 64-bit Windows running in a virtual machine on Linux or Mac OS X). Running 64-bit SIMION on Wine64 on Linux is experimentally supported but needs further testing. 32-bit Windows, as well as 32- and 64-bit versions of Linux and Mac OS X using Wine/CrossOver (32-bit), currently require using the 32-bit version of SIMION 8.1, which is limited in memory sizes, but you’ll still be able to take advantage of enhancements like multicore support.) See 64-bit CPU support.
- Refine a few times faster (Multi-core CPU support).
SIMION can now fully utilize multiple CPU cores to improve performance. This requires a system having a multi-core CPU or multiple CPUs (each in turn possibly with multiple cores). Presently, Refining (e.g. Laplace/Poisson solving) and some other operations like the GEM processing, Modify OpenGL view, and some 3D view renderings are parallelized, but particle flying currently is not in the initial 8.1.0 release (unless you run multiple instances of SIMION as before). Benchmarking indicates that an eight CPU cores system (dual processor, four cores per processor) can speed up refines by a factor of ~3-7x, depending on whether the array size is under the CPU cache size. See Multicore CPU support.
- Fly’m performance on Linux and Mac (Wine/CrossOver)
- Use rectangular, non-square grid cells (anisotropically scaled grid cells).
SIMION 8.1 supports grid cells that have different scales in the x, y, and z directions. In some systems, non-rectangular grids can conserve memory and improve accuracy. See Anisotropically Scaled Grid Cells in SIMION.
- Proper Neumann boundaries
SIMION 8.1 treats all open edges of PAs with proper Neumann boundary conditions, regardless whether mirror planes are defined on them. SIMION 8.0 only did this explicitly for edges with mirror planes; other edges were approximately very close to Neumann but differed very slightly. This change can slightly improve accuracy for things like repeating wire grid patterns. See Neumann Boundary Condition.
- Additional Scripting APIs:
New programming interfaces have been added that are accessible inside SIMION user programs:
- simion - a few assorted new interfaces added
- simion.pas - manipulate SIMION PA’s directly in SIMION’s memory (Issue-I492). Note: SIMION 8.0 only allowed this via C++/Perl/Python API’s that operated outside of SIMION (SL Libraries)
- simion.wb - manipulate PA instance positions in workbenches (Issue-I496).
- simion.experimental - programmatically draw 3D lines on the View screen. This is used for scalar and vector field plotting (SIMION Example: contour is much simplified), including magnetic field plotting (SIMION Example: solenoid and SIMION Example: helmholtz_coil) (as well as drawing wires used for Biot-Savart calculations) and gas flow plotting (SIMION Example: collision_sds). (Issue-I564).
- Refine accuracy/Surface Enhancement
SIMION can now improve Refine accuracy by an order of magnitude or more in the case when electrode surfaces don’t perfectly align to grid points. Note: This feature was significantly improved in 18.104.22.168, but the feature is undergoing active development and some features of SIMION do not yet utilize it (e.g. it’s currently supported in GEM import but not yet CAD or Modify). See Electrode Surface Enhancement / Fractional Grid Units for latest details.
- Poisson solver
SIMION 8.1’s Refine function can solve the Poisson equation, which takes into account a known charge density as a function of position (x,y,z), defined as a separate space-charge array (PA). It’s important to note, however, that this Poisson equation solving capability alone is necessary but possibly not sufficient for solving space-charge problems that you may have. The Poisson equation requires that you know what the space-charge distribution is, but it may be that this distribution is not known a priori. A typical case is when simulating a system with a high current beam, where the electric field controls the path of the particle beam, but the particle beam itself generates an electric field (and sometimes a magnetic field) that in turn in turn affects the path of the particle beam. In such a system, the refine and particle trajectory integration cannot be done independently but must be done simultaneously. SIMION includes some user programs that achieve this (poisson examples), but it is advanced and still somewhat experimental at this time. See Poisson Solver in SIMION.
Update: 22.214.171.124 supports .PA# Poisson solving (not just .PA). 126.96.36.199 piclib adds mode optimizing time-independent case.
- Dielectric solver
SIMION Refine function has been extended to solve the Laplace (or Poisson) equation in the presence of dielectrics, which takes into account the dielectric constant as a function of position (x,y,z), defined as a separate relative dielectric constant array (PA). Dielectrics are implemented in 188.8.131.52, and this is compatible with space-charge too. See Dielectrics.
- New workbench user program segments: New flym, initialize_run,
terminate_run [184.108.40.206] and load [220.127.116.11] segments were added to simplify user programming concerning multiple run automation and reliability. Many examples such as SIMION Example: geometry_optimize, SIMION Example: tune, and SIMION Example: spectrum utilize these. See Workbench Program Extensions in SIMION 8.1.
- Supplementary Documentation:
Supplementary electronic documentation (first added in 8.0) and SIMION info pages (on the simion.com web site) have been merged and can be accessed in Windows Help format from the Help > Browse Documentation menu.
Assorted other changes:
- Cell sizes in mm are now stored in the PA file (not just the IOB). This is used in Anisotropically Scaled Grid Cells in SIMION, Poisson Solver in SIMION, and visualization. Using a value other than 1 mm also affects the interpretation of various parameters including PA instance scale factor, PA instance working origin, Magnetic PA scaling factor (ng), and distance units in GEM files. See Anisotropically Scaled Grid Cells in SIMION for details.
- Physical Constants updated to CODATA2010 ; Issue-I494
- Max Electrodes - PA# electrode limit increased to 1000.
- Disable relativistic effects option added to the Particles tab, mainly to help see the extent of relativistic effects on particle trajectories. (This can be used in conjunction with the Keep button to compare trajectories with and without relativistic effects.)
- Issue-I503 - Refine .PA# solution arrays individually (note: the multicore support largely supplants this unless you want to refine these arrays on multiple computers)
- PA files automatically created from GEM files on loading IOB’s. [Added in 18.104.22.168]
Programming (including various features previewed in early access program, Issue-I421):
- New workbench program reserved variables: ion_run, ion_effective_charge, sim_repulsion_amount, sim_repulsion (22.214.171.124), and sim_grouped (126.96.36.199). See Workbench Program Extensions in SIMION 8.1,
- New workbench program segments: segment.initialize_run(), segment.terminate_run() (188.8.131.52).
- Issue-I182 - If GUI enabled, “fly” batch mode command display run in View screen.
- Issue-I498 - Resize SIMION window programmatically: simion.window
- Issue-I521 - New simion.print_screen() function to print current image.
- Issue-I518 - Access memory dump: simion.debug.memory_dump().
- Issue-I243 - Manipulate/save/load View display programmatically (experimental; may be delayed to 8.2) simion.experimental.display
- Issue-I523 - Printing to BMP, PNG, and JPG files now supported.
- Issue-I231 - Allow splitting data recording output into multiple files.
- SIMION Example: poisson: various poisson solving examples [8.1.0/184.108.40.206]
- SIMION Example: dielectric: dielectric examples [220.127.116.11]
- SIMION Example: electrostatic_induction Issue-I499: induced current/charge example [8.1.0]
- SIMION Example: nonideal_grid (pa_jump) Issue-I515: PA instance jumping trick example [8.1.0]
- SIMION Example: waveform: segmented waveform example [8.1.0]
- SIMION Example: bradbury_nielson_grid Issue-I502: Bradbury-Nielson Grid example [8.1.0]
- SIMION Example: faims: FAIMS example [8.1.0]
- SIMION Example: gnuplot: plotting in gnuplot (similar to Excel examples) [18.104.22.168]
- SIMION Example: magnetic_sector: extensive magnetic sector examples [22.214.171.124]
- SIMION Example: field_emission: field emission example. Illustrates (1) refining coarse and refine PA’s in a dependent manner for higher accuracy in certain regions, (2) quickly rebuilding/re-refining PA’s based on changes to geometric parameters in adjustable variables, without leaving the View screen, and (3) emission from arbitrary curved surface. [126.96.36.199]
- SIMION Example: kingdon_trap: new Kingdon trap / quadro-logarithmic / orbitrap-like example. [188.8.131.52]
- SIMION Example: count_transmission: % transmission calculation example [184.108.40.206]
- SIMION Example: pseudopotential: pseudo-potential calc/plotting in RF trap [220.127.116.11]
- SIMION Example: spectrum spectrum acquisition/plotting [18.104.22.168]
- SIMION Example: mfield_adjust: example demonstrating basic usage of mfield_adjust [22.214.171.124]
- SIMION Example: experimentalenhanced_refine: add “experimental” enhanced Refine accuracy for non-grid unit aligned electrodes example [126.96.36.199]
- SIMION Example: tandem_van_de_graaff: tandem Van de Graaff system, with electron stripping [8.1.0]
- SIMION Example: geometry_optimization: improved in 8.1 to perform optimizations entirely from a workbench user program (View screen), without resorting to batch mode. Also added sub-example automating runs at different PA grid cell sizes and Refine convergence objectives. [188.8.131.52-184.108.40.206]
- and others, as well as improvements to many existing examples...
Roadmap / Likely upcoming changes
SIMION 8.1 is mostly feature complete, but a few aspects are undergoing refinement in additional updates. These changes are still in development but may be implemented in upcomming 8.1.x update releases (e.g. 8.1.2) this year**.
- Run user programs faster, and other optimizations.
- We now utilize a faster Lua virtual machine (LuaJIT). Many simple programs (e.g. “quad”) may see only moderate improvements due to the bottleneck being memory access speed. However, programs using loops (e.g. batch mode programs that iterate over all points in an array) can see major speedups, even on single core processors. (mostly done but had been delayed due to other work; planned to be enabled in 8.1.1.x)
- Anti-mirroring for arrays.
- Anti-mirroring would be a direct option for PA definitions. This is like the mirroring option but potentials have opposite polarity on opposite sides of the plane. For example, X anti-mirroring means that Φ (x,y,z) = - Φ (-x,y,z) for all points (x,y,z). For things like hexapoles, this halves memory usage without the workaround in 8.0. The design is currently under review.
Additional scripting APIs. - beyond the ones identified above.
- nVidia CUDA
- Pertains to refine speeds (under development/testing). Initial implementation under review. More extensive work might be done in the next version.
Additional significant features not listed are also under consideration and development. Some of these will be delayed until 8.2. As seen, however, a major area of emphasis in 8.1.x is Refine and core optimizations. Less emphasis is placed on user interface changes in 8.1, which may be larger emphasis in the next version. See Early Access Mode and SIMION® Roadmap (8.2 and Beyond) for testing 8.2 features such as Permeability.
GUI: SIMION GUI remains largely unchanged in 8.1 following the significant changes in 8.0. Further significant user interface changes will likely not occur until 8.2beta.
Manual: SIMION 8.1.0 does not come with a new printed manual but rather reuses the 8.0.4 manual (update: an 220.127.116.11 manual with small updates has since been printed). Upgrades from 8.0 are not normally shipping with a new printed manual (unless requested), but new licenses and upgrades from 7.0 are shipping with a new manual. Much of the core content described in the manual remains unchanged. However, we provide 8.1 specific notes in the “supplemental documentation” in electronic format (Windows Help). Major manual changes will likely not occur until 8.2.
File formats/Compatibility: File formats remain largely unchanged in 8.1.0. 8.0 simulations can be run unchanged in 8.1, and most 8.1 simulations can be run unchanged in 8.0 (unless the new features are used). More significant changes may be delayed to 8.1.x or 8.2. An extension was made to the PA (and IOB) format to optionally allow grid cell sizes in mm (in X, Y, and Z directions) to be stored in the PA file, as required for the new Anisotropically Scaled Grid Cells in SIMION and Poisson Solver in SIMION features, but only arrays that use this option are saved in the new format. PA# files also recognize 1000 adjustable electrodes (1..1000) now.
System requirements: For details, see System Requirements. Requirements are similar to SIMION 8.0 except that SIMION 8.1 can optionally take advantage of 64-bit memory (for modeling at higher accuracy) and multicore/multiprocessor CPU’s (for faster speed, mainly in Refine’s and some aspects of 3D rendering). Some > 10 year old systems (e.g. Windows 2000 and non-SSE CPUs) are no longer officially supported 8.1 unless requested. A 64-bit Windows 7, multi-core (or dual processor) workstation can provide optimal results.
Pricing: A discount is provided to existing SIMION 7.0 and 8.0 users. See Ordering Info.
Upgrades: Free SIMION 8.1.x releases will follow for at least the following year to improve on these features and perhaps add new ones similar in nature. A paid upgrade (8.2) is expected sometime after that. 8.1 users will be able to beta test some 8.2beta features as they become available (similarly to what we did in 8.0 early access).
Support for old versions:
- SIMION 8.0 remains actively supported. Patches will continue to be provided. However, major “new” features added are now going instead into 8.1. Both 8.0 and 8.1 can be installed and run simultaneously.
- SIMION 7.0 will still be supported to some degree since there are still users, and many of the concepts remain the same in 8.0. Both 7.0 and 8.0 can be installed and run simultaneously. In fact, 8.0 includes a copy of the 7.0 binary. The software is stable, and very few patches to 7.0 have been released in recent years.
- SIMION 6.0, released in ~ 1996, is no longer formally supported due to OS compatibility issues, but we may answer occasional questions on it in the user group as they also pertain to newer versions. Very few people still use this version.
- SIMION SL is now incorporated into SIMION 8.0. It is no longer sold separately, but it will still be supported. Major new functionality is now going instead into SIMION 8.1.
- Related: SIMION® Roadmap (8.2 and Beyond).