Max Electrodes

The number of adjustable electrodes (solution arrays) supported in PA# files varies between SIMION versions. SIMION 8.1 by default supports 1000 adjustable electrodes per PA# file (values 1..1000). It could be recompiled for more, but this hasn’t been needed. SIMION 8.0 supports 128 adjustable electrodes. SIMION 7.0 is limited to 31 adjustable electrodes (30 fast adjustable and 1 fast scalable).

Very rarely do you need more than a few dozen or even a hundred adjustable electrodes. If there are large numbers of electrodes, it is often possible, and much more efficient, to use Additional Fast Proportional Scaling Solutions [8.0.3].

Changes between SIMION Versions

Support for a much larger number of adjustable electrodes has some compatibility implications. SIMION aims to maintain a very high level of compatibility between 7.0-8.1. This change entails some very minor extensions in PA and IOB file formats to accommodate the larger number of adjustable electrodes.

  • PA format: Unrefined PA files (.PA#) remain identical in format in SIMION between 7.0-8.1 in this regard. However, there is one slight difference in how the Refine function interprets it. SIMION 8.0 Refine interprets electrodes with integer values 31..127 as fast adjustable electrodes rather than fast scalable electrodes (as in 7.0). This is extended for 128..1000 in SIMION 8.1. For future compatibility, fast scalable electrodes should be given non-integer voltages in PA# files since this limit may increase in the future.

  • PA file names: In 7.0, the refined adjustable electrodes are stored in files with the extension .PA? where “?” represents the electrode number 0..30 (using 0-9 followed by A-U). The use of letters for the numbering scheme is not very intuitive for larger numbers of electrodes, so in 8.0 this will be changed to a pure numbers: 0-9 followed by 10-99. This change entails that SIMION 7.0 will not be able to read a refined potential array having electrode numbers 10..30 ‘’unless’’ you re-refine it in SIMION 7.0. SIMION 8.0, however, is able to read refined potential arrays files from SIMION 7.0 without problem.

  • IOB format: SIMION can store fast adjustable potentials inside the IOB file. Prior to SIMION (IOB mode 3 format), SIMION only saves the first 31 adjustable potentials inside the IOB file. This maintains strict compatibility with the 7.0 IOB format. This is corrected in SIMION, but if electrode numbers exceed 31, then the IOB file will not be readable in earlier SIMION versions. (Earlier workarounds are to just save the PA0 file with the correct potentials or use an init_p_values segment.)

  • User programming: In 7.0 code, adjustable electrodes are referred to by the variables adj_elect00 .. adj_elect30 and adj_pole00 .. adj_pole30. In 8.0, these variables will still be supported as well as the additional adj_elect31 .. adj_elect127 and adj_pole31 .. adj_pole127 variables, and likewise for 8.1. Also, the additional reserved “array” variables adj_elect and adj_pole are provided. This allow accessing adjustable electrodes by index:

    -- Lua
    print(#adj_elect)  -- returns maximum electrode number
    for i=0,100 do print(i, adj_elect[i]) end -- some of these may be nil
    for i=20,30 do adj_elect[i] = i*10 end
    ; PRG (old style)
    2 STO adj_elect100   ; store to electrode #100
    2 100 ASTO adj_elect ; store to electrode #100 (array style)
    ; Note: ALOAD and ASAVE not currently supported on adj_elect

Fig. 70 Figure: Example with 128 adjustable electrodes in SIMION 8.0 (moving sinusoidal wave is applied to the electrodes via the new adj_elect variable in PRG code).