SIMION®
The field and particle trajectory simulator
Industry standard charged particle optics software
Refine your design: model > simulate > view > analyze > program > optimize it.
About | Documentation | Community/Support | Downloads | Ordering

SIMION 8.0 Issues/Bugs/Enhancements

Filter issues by query:
Issue I237 [beta,fly2,high,probablyresolved]

Issue I10 [missing,resolved]
  Example files from SIMION 7.0 need to be added back in.
  Resolved in some version prior to 8.0.0

Issue I11 [beta,missing,view,resolved]
  Time marker controls were temporarilty removed in View screen.
  2006-06-07 - noted by kenn at ASMS2006.
  Resolution: Added to Particles tab in View. 2006-06-13.
  Affects 7.1/8.0betas prior to beta8.

Issue I12 [missing,resolved]
  A new installer is needed.
  Resolved in 80rc2-2006111

Issue I143 2005-12-28 [missing,resolved]
  User program enable/disable switch missing in View.
  2006-02-06 - noted also by markm
  Resolution: added to Particles tab in View. 2006-06-13.
  Affects 7.1/8.0betas before 8.0beta8.

Issue I13 [incomplete]
  Help system incomplete
    - I've experimented with a few methods of context-sensitive help,
      but I'm interested in feedback on this.
    - object help missing on text areas and such controls

Issue I14 [old,printing,partlyresolved]
  Printing function GUI needs updated.
  2006-01-09 - converted print options screen to new format.
  resolved more in 80beta12g - 2006-09-19

Issue I15 [old,resolved]
  "Adjust" GUI preferences needs additional items removed.
  Resolved in some version prior to 8.0.0

Issue I16 [manual,resolved]
  SIMION 8.0 manual.

  SIMION 8.0 comes with a new 450-page printed manual, which is
  expanded and updated from the SIMION 7.0 manual (updated text, 
  new screenshots, removed/added appendices).

  New or substational changed chapters include
    - Hardware and Software Requirements
    - FLY2 Particle Definition Format
    - User Programming
    - Command Line Interface
    - Changes between SIMIN 8 and Earlier Versions.
    - Index.

  Additional topics (e.g. SIMION Libraries API) are in the additional
  electronic documentation ("Help|Browse Documentation" menu item).
  There is also much to be learned from the documentation on the
  individual examples and in the ASMS courses.

  Resolved in some version prior to 8.0.0

Issue I17 [gui,feature,medium,probablyresolved]
  Prevent display flicker with double buffering.
  Noted by dennisc and also theo-20060919.
  Description:
    > If Drawing Quaility factor is high (e.g. 9) and/or a large # of
    > trajectories are plotted, and you move another application window
    > such that it overlaps the SIMION window, then SIMION takes time to
    > redraw the trajectories etc. once the overlapping window is moved
    > out of the way.  Likewise when printing.
  Affects 7.0.
  Resolved in 80beta13.

Issue I18 [gui,resolved]
  Accept enter key in text and spin controls to validate value.
Issue I20 [gui,probablyresolved]
  The new native style data recording window might be slower
  than the old one.  Some optimization may be needed.
  Probably resolved prior to 8.0.0 - via list control.

Issue I21 [gui,resolved]
  Are controls ok on resizing?
  Probably resolved prior to 8.0.0.

Issue I22 [gui]
  Ensure native windows controls get disabled properly
   - "windows printer to file" in print settings.
   - support disable of XY,ZY,XZ buttons on Modify screen.

Issue I133 [gui]
  In Modify, when ctrl is held down to scroll window, it is possible
  (with some effort) for mouse to escape

Issue I24 [gui,view,resolved]
  x,y positions don't update quickly in View
  Resolved in some version prior to 8.0.0.

Issue I25 [gui,resolved]
  Missing graphic shapes in certain buttons.
  Resolved prior to 8.0.0--not used.

Issue I27 [gui,help]
  In Help screens, lowercase should be used more.

Issue I28 [gui,adjust,resolved]
  OK buttons in Adjust don't do anything
  Resolved in some version prior to 8.0.0.

Issue I29 [gui,resolved]
  Add min size to window so it doesn't get cut off
  2006-01-31 - resolved

Issue I30 [gui]
  Clear status bar if not updated for some time.

Issue I31 [gui,debugger,resolved]
  "Debug" screen uses non-native multi-line text control.
  Resolved in some version prior to 8.0.0

Issue I32 [gui,probablyresolved]
  menu and alt key can conflict.
  20061031-Resolved in I266?

Issue I33 [gui,probablyresolved]
  In modify, for 3d array, holding ALT key on button to scroll z,
  the button does not always release (possible do to conflict
  with use of ALT for menu)
  20061031-Resolved in I266?

Issue I34 [gui,resolved]
  Clear color on status bar when non-color message displays.
  Resolved in some version prior to 8.0.0.

Issue I35 [gui]
  Focus when tabbing on main screen not fully ok (may be related
  to xp theme bugs in wxwidgets 2.6.1).

Issue I36 [gui,resolved]
  Underlines on buttons not displayed at times.
  2005-12-22 - Should be resolved now.

Issue I37 [gui,resolved]
  Accelerator keys conflict with text control.
  2006-01-17 - resolved
  2006-02-04 - resolved more with ionline controls - 7.1beta7

Issue I38 [gui]
  Accelerator keys not open menu when key events sent to simgui window.

Issue I39 [gui,resolved]
  Add percent complete bar in status bar (e.g. long running operation)
  no longer available.
  2006-01-31 - resolved

Issue I40 [gui,printing,resolved]
  Labeling functions (printing in Modify) don't work correctly.
  Resolved in 80beta12g - see I219

Issue I41 [gui,printing]
  Add File|Print menu item.

Issue I42 [gui]
  Standardize tense in help text: use "loads file" not "load file".

Issue I43 [gui]
  Mouse over events not triggered on spinctrls (e.g. for help).

Issue I44 [gui]
  Rename "fast adjust" to "adjust potentials"?

Issue I45 [gui]
  Rearrange main screen more to be more data oriented.

Issue I46 [gui]
  check_with_user triggers refreshes (problems? e.g. with double/halve?)

Issue I47 [gui,resolved]
  In file saving dialog (e.g. for FLY), if file extension is not provided,
  it gives an error about file name too long.
  - file names and current working directory
  Probably resolved in some version prior to 8.0.0.

Issue I48 [gui]
  In IolineValidator, warn if truncated string?

Issue I49 [gui,resolved]
  Disable simgui accelerator event processing (e.g. key shortcuts)
  when simgui window not visible.  e.g. in ion definition screen,
  pressing "d" brings up a second ion definitions screen.  Resolved in
  some version prior to 8.0.0.

Issue I49.2 [gui,HIGH-TODONOW]
  Disable simgui event processing when simgui window not visible.

  Example:
    On View screen, make box selection.
    Open Particles|Define screen.
    With focus not on a control, press DELETE key.
    Exit Particles|Define screen.
    Box selection was deleted.
    This also can be observed using the ENTER key (screen refresh),
    for a a view that takes a long time to render (paused noticed).

Issue I50 [gui,largelyresolved]
  Title: PA list on main screen not always updated.
  Affects: 7.1betas up to 7.1beta6.
  To reproduce:
    create new PA then immediately save as "asdf.pa"
    or fast adjust PA# file.
  2006-02-04 Resolved in 7.1beta7.

Issue I52 [gui,resolved]
  When loading quad.iob, data recording does not show as enabled
  --2006-11-15 -- it should not.  issue report seems to be an error.

Issue I53 [gui,resolved]
  Text boxes should change color when changed in Fast Adjust (as done in 7.0)
  dennisc-2005-09-22-the change of box color when contents are changed [is useful]
  e.g. on the fast adjust screen.

  On fast adjust screen, text boxes should change when contents changed

  Resolved probably in 8.0beta8 or before.

Issue I54 [gui]
  See djm-fix20050928-1 in objects.c concerning odd selection
  behavior in view screen when flying.

Issue I55 [gui]
  When display quality is 9 in view screen and one scrolls up
  (but maxes out at 9), the screen refreshes (not necessary).

Issue I56 [gui]
  This affects even simion7.0 - in View screen (e.g. side view of
  quad example), with box on, drag another application over the simion
  window.  the box display goes erradic.
  2006-11-15 Note: possibly no longer apparent with new double buffering

Issue I100 [gui]
  In WB view, the vertical (diagonal) lines do not toggle with V|H
  buttons except when in 3D iso view.
  (In PE view, 3D iso view is required.)
  2006-11-15--seems to be horizontal lines and also affecting 7.0?

Issue I57 [gui,resolved]
  Possibly move fly button so that it is alway visible.  This may often
  be the first button that is pressed.
  Resolved in some version prior to 8.0.0

Issue I58 [gui,resolved]
  Ensure ESC key cancel actions in View screen.
  Reported by davidm.
  Description:
    Prior to 8.0.2, SIMION was ignoring the ESC key during long-running
    operations other than Fly'ms (e.g. 3D rendering of contours, view, and
    trajectories) unless focus was on the simgui (graphic) window.
    That prevented the user from aborting these operations.
  Affects: 8.0.0-8.0.1
  Resolved in 8.0.2

Issue I59 [gui,beta,resolved]
  Flying ions as dots goes at high speed if mouse not directly over 3D
    view window (simgui window).
  Affects 8.0betas.
  Resolved in 8.0beta14f-2006-10-31.  Now flies at normal speed iff
    SIMION window is active and not being resized.

Issue I60 [gui]
  Flying ions as dots sometimes causes cross-hairs of cursor to remain
  on screen at start of ion flight and other problems.
  This seems to mainly occur when the mouse cursor is near and exiting
  the border of the ion flight parameters dialog box when clicking "fly".

Issue I61 [gui]
  Bug in 7.1 (not in 7.0)
  fly ions.  when ions flying set a box mark.  wait for fly to finish.
  the mark does not persist/clear correctly as in 7.0

Issue I62 2005-11-23 [gui,resolved-almost]
  In View, drag rectangle selection, but release mouse with cursor outside
  of window.  SIMION does not recognize the mouse up.
  2005-12-24 - fixed in latest patch
  2005-12-30 - does not work is mouse released over data recording box
               (native control)
  2006-11-14 - try over Constrn box.

Issue I63 2005-11-23 [gui,resolved]
  In View|PAs|Debug, this can wrongly be invoked multiple times.
  Ideally, the top panel should be hidden when this function is used.
  Resolved in some version prior to 8.0.0

Issue I64 2005-11-23 [gui]
  Add Refine function to View PAs tab.

Issue I65 2005-11-24 [gui,resolved]
  on View screen, ensure view updates appropriate when changing the
  active tab (e.g. PAs tab vs. workbench tab)
  Superceeded by I224.

Issue I66 2005-11-25 [gui]
  Test for accessibility -- http://www.wxwidgets.org/access.htm

Issue I67 2005-11-25 [gui]
  In Modify screen, if "." button pressed when no marks are defined,
  the the dialog box that comes up is not initialized correctly
  (i.e. all fields visible)

Issue I68 2005-11-25  [gui,high,resolved]
  On Modify screen, event for key "1" is taken by one of the
  buttons even when typing in a text box
  Resolved in some version prior to 8.0.0.

Issue I69 2005-11-25 [low]
  Display help cursor when F1 key is down.

Issue I70 2005-11-25 [gui]
  Remove hack of putting help text in tooltip.

Issue I71 2005-11-25 [gui]
  On PA settings dialog, the "?" on the title bar does not
  work correctly (correct help text not displayed when control clicked)
  2006-11-15 - "?" still exist?

Issue I72 2005-12-03 [gui,high,resolved]
  On fast adjusting PA# list, pa list does not instantly update
  to show PA0 file.
  Resolved in some version prior to 8.0.0.

Issue I73 [gui,veryhigh,beta,resolved]
  Potential not display on hovering mouse in View.
  on hovering mouse over View screen, potential status doesn't
  automatically update.  it does update though if the mouse button is
  down (dragging mark selection)
  Noted also by (theo)-20060105
  2006-01-10 - fixed

Issue I73 2005-12-03 [gui,low]
  On contour view, automatically do "Auto" when auto value is changed.

Issue I74 2005-12-08 [gui,high,resolved]
  Title: "Double" button not working
  Affects: 7.1betas up to beta6
  2006-02-04 - resolved in 7.1beta7.  

Issue I76 2005-12-09 [gui,view]
  On View screen view tab, is there a button for clearing all marks?
  (e.g. similar to that on the modify screen)

Issue I77 2005-12-09 [gui,high,resolved]
  On main screen click "New".  Set focus on nz panel.  Press ESC.
  crashes.
  2006-11-15 - was resolved some time before 8.0.0.

Issue I78 2005-12-09 [gui,resolved]
  Renamed PAs tab to Fields (problem domain)
  rename Contour tab to Contours (consistency)
  name AdjV tab to Variables

Issue I79 2005-12-09 [gui,resolved]
  Statusbar refresh problem on windows resize--likely a wxwidgets 2.6.2 bug.
  need to report.
  2006-11-15-probably resolved in some version prior to 8.0.0

Issue I80 2005-12-10 [gui]
  On recording dialog, if X/Y/Z plane checked, select it as well.

Issue I81 2005-12-10 [gui]
  On e.g. quit modify, it should not ask "are you sure?" if no change has
  been made.

Issue I82 2005-12-10 [gui,resolved]
  "browse files" on main screen shows directories but no files.
  Resolved in some version prior to 8.0.0.

Issue I84 2005-12-12 [gui]
  On View|Workbench tab, check that Undo behaves as expected
  (compare to other Undo buttons, especially with Wait enabled)

Issue I85 2005-12-12 [gui]
  On PaSettingsDialog, is max pa size properly initialized?

Issue I86 2005-12-12 [gui,resolved]
  View seems to refresh twice on selecting Workbench tab
  Resolved in I224.

Issue I87 2005-12-12 [gui]
  If cross-hair cursor displaying on view and then drag another window
  on top of it, then the cross-hair display gets messed up.

Issue I89 2005-12-14 [gui,medium,resolved]
  "enable data recording" on Data Recording screen not reset
  on dialog cancel.

  Affects 8.0.0
  Resolved in 8.0.3

Issue I90 [gui,MED-HIGH,partlyresolved]
  Add more underscores to controls for shortcut access keys.

  On fly panel, add shortcut key for ">" (step) control.

  8.0.5-TEST11:
    Added these shortcuts
      Main screen:
        t = SL Tools
        u = Run Lua Program
        c = Check for Updates (was u)
        d = Docs
      Modify (PA) screen:
        z = Zoom 2D [*]
        f = Find [*]
        > = >Tmp
        n = Print
        4 = XYZ
        5 = 3D
        a = Clear
      View (IOB) screen:
        t = Point type (crashed in 8.0.0-8.0.5-TEST10)
        v = potential
        + = +Z3D [*]
        - = -Z3D [*]
        w = Where [*]
        b,p,r,c,v,y,g,h - Notebook tabs at top
        Particles
          > = Step >
          u = User Program
        PAs
          j = Fast Adjust
          a = Add
          d = Del
          r = Rpl
        Variables
          a = Show All
        Display
          o = Colors
          a = Align
        n = Print
        e = PE
        1,2,3,4 = XY,ZY,XZ,3D Iso

  8.0.5-TEST12:
    Modify:
    Data Record:
      r = Record
    Particles Define
      e = Edit as Text
    Print
      t = Print Options
      l,s = Load/Save Annotations
    Print Options
      Added shortcuts.
    Refine
      Added shortcuts to refine params.

  TODO? - maybe use "l" for the log window as "w" is that current
  shortcut.  I would also like "Where", "/Rel" and "." to be available
  within the IOB view regardless of what tab is selected at the top.
  I use these for measuring/verifying dimensions a lot and often
  forget to switch to the Display tab before pressing "/". [*]

    - Possibly not needed.  You can now type 'y' followed by 'w' to
      enable the Where function.

  [*] Recommended by ryand--http://www.simion.com/discuss/viewtopic?p=2259
     (many of these were in 7.0)

  Resolved partly in 8.0.5-TEST11.

Issue I91 2005-12-15 [gui,low,resolved]
  Provide quick way to hide data recording panel (currently this
  is hidden on the particles panel)
  2006-11-01-Resolved in some version prior to
    8.0beta14--Log window used instead.

Issue I92 2005-12-15 [gui,medium]
  View seems to refresh a few times when pressing Fly button
  (e.g. see quad example in 3D mode)

Issue I93 2005-12-16 [gui,medium]
  On View tab, units selector should be disable when "where"
  not selected.

Issue I94 2005-12-17 [gui,high,defect,resolved]
  Variables tab and Lua variables synchronization problems.
  If on workbench, an IOB file is reload via the Load button, then
  the adjustable variables panel is blank until a refly.
  Changes to variables in Variables tab get reset on Fly.
  Affects 80betas. Resolved in 8.0beta13p-20061014
  Reported by theo and jasons.

Issue I95 2005-12-20 [gui,medium,easy]
  On refine screen, labels should be disabled too when controls disabled.

Issue I96 [gui,medium,resolved]
  Disable data recording when ions flying
  2006-11-01 - probably resolved.

Issue I97 [gui]
  Add "browse" button back in on data recording window? (for selecting
  output file)

Issue I98 2005-12-09 [gui,nonbug]
  On fast adjust screen, elminate "you didn't respond to any
  potential changes" warning.
  Affects >= 7.0.  Resolved in 8.0beta8.

Issue I134 2005-12-23 [gui]
  "Quit view - are you sure" message box should also ESC key to cancel.

Issue I136 2005-12-23 [gui,fastadj]
  In fast adjust screen key accelerators don't always work right
  (likely a focus issue with text controls)

Issue I137 2005-12-24 [gui,fastadj,resolved]
  In fast adjust screen, focus not moved to panel on electrode selected.
  Resolved in 8.0beta8.

Issue I138 2005-12-24 [gui]
  Mouse "return to last position" not working correctly when
  mouse starts outside the simgui window.

Issue I139 2005-12-24 [gui,low]
  In view screen, we might want to lock mouse cursor to just the
  graphics portion of the display (not entire simgui window) during
  scrolling/view actions.  See
    view0b/view_cursor_positioning concerning locked area.
    also mouse/cursor_locate_internal
  bother with this at all?

Issue I140 2005-12-24 [gui,view]
  In View, draw view mark box and then pressing delete does not clear
  mark -- view0b/view_action.

Issue I141 2005-12-24 [gui,low,probablyresolved]
  On fast adjust screen, the three view buttons can occasionally get in
  an inconsistent state (non-selected control is grayed), e.g. by
  doing something odd like holding the space key down while quickly
  toggling through the view buttons.
  2006-01-17 - changes made to these button probably resolved this.
    Also changed accelerator space key since that conflicts with windows.

Issue I142 2005-12-27 [gui,input,high,resolved]
  Key input commands (KEY?,R/S,key(),run_stop()) freeze.
  Also note key code button in compile screen.
  Resolved in 8.0.0rc5-2006-11-15.

Issue I144 2005-12-28 [gui,compile,largelyresolved]
  Title: Data recording monitor slowness and overflow problems.
  Affects: 7.1betas up to 7.1beta6
  In View screen, appending lines to monitor text area
  is slow.  Data gets truncated after a certain number of lines
  are printed.
  2006-02-04 - overflow issue resolved in 7.1beta7
  2006-02-04 - slowness issue largely resolved in 7.1beta7

Issue I99 [gui,resolved,modify]
  Move double/halve buttons to modify screen

Issue I101 [gui,modify,enhancement]
  In Modify, "set" button, use fewer dialog boxes and instead
  present all questions at the start.

Issue I102 [gui,modify]
  In Modify, disable function buttons when mark not specified

Issue I103 [gui,modify]
  Add more help to modify screen

Issue I104 [gui,modify]
  If control disabled (e.g. max ions), give help on why

Issue I105 [gui,modify,resolved]
  New "Keep/Quit" accelerators conflict in Modify
  2006-11-15 - these were renamed to OK/Cancel in some version prior to 8.0.0.

Issue I106 [gui,modify,resolved]
  In modify, in "volt" text box, pressing 1,2,3 causes views 1,2,3 to change
  2006-11-15 - resolved in some version prior to 8.0.0.

Issue I107 [gui,modify]
  in modify, simgui window is too large

Issue I108 [gui,modify,low]
  eliminate "quit modify are you sure" dialog box in modify if not needed

Issue I109 [gui,modify]
  In modify, use scrollwheel for scrolling through layers

Issue I110 [gui,modify,low-med]
  In Modify, polygon fills using lines seem broken (some parts of the area
  sometimes do not get filled in)
  --is this still happening?--djm2005-09-05
  --2006-11-15--seems so.

Issue I111 [gui,modify,veryhigh,beta,resolved]
  In Modify, fix precision of numeric displays
  Noted also by theo 20060105
  2005-01-10 - resolved  

Issue I112 [gui,modify]
  In Modify, display file name somewhere?

Issue I113 [gui,modify]
  In Modify, in potential/find textboxes, display "mag" units rather than "v"
  for magnetic arrays?  Also for ReplaceFindDialog

Issue I114 [gui,modify,low]
  In Modify, preserve view when double/half/set?

Issue I146 [gui,iondef]
  In Define Ions screen, should "define ions individually be made the
  default?  Users don't always see that.

Issue I147 [gui,iondef]
  In Define Ions screen, clarify distinction between .ION and .FLY
  file and their purposes.

Issue I148 2006-01-07 [gui,print]
  Possibly make windows printer the first printer in the list.

Issue I149 2006-01-07 [gui,partlyresolved]
  Remove WinXP theme behavior for mouse hover over toggle button.
  2006-01-10 - partly resolved by disabling hover effect.

Issue I150 2006-01-07 [gui,resolved]
  Title: Design defects on file selection dialog boxes.
  Titles and types missing from file selection dialog boxes.
  Button is labeled "open" during "save" action.
  Default file extensions not set.
  "open" dialog boxes not immediately checking that file exists.
  Affects: 7.1betas up to 7.1beta6.
  2006-02-04 - resolved in 7.1beta7.

Issue I151 2006-01-06 [gui,beta,mostlyresolved]
  Add colors to controls and panels
  Reported by theo--20060105.
  2006-01-08 - partly resolved

Issue I152 2006-01-05 [gui,beta,resolved]
  Variable panel list possibly should be two columns to reduce scrolling,
  e.g. when there are 15 variables.  (theo)--20060105
  2006-01-09 - resolved
  
Issue I153 2006-01-09 [gui,view,variable]
  Variable panel list not refreshed when fly completed
  (note: variables might have been temporarily changed during fly)

Issue I154 2006-01-10 [gui,minor,iondef,resolved]
  On data recording and particle definition screen,
  coordinates display in status bar when
  mouse moves.
  Resolved in 80beta14i-2006-11-02

Issue I155 2006-01-10 [gui,minor]
  Cancel and OK buttons do not render with XP theme.
  See also Fly toggle button.

Issue I156 2006-01-31 [gui]
  Scrolling speed in View and Modify slower in the beta
  (possibly due to debug build though)

Issue I157 2006-02-02 [compile,70,resolved]
  Title: other reserved variables not initialized in debugger.
  Affects: SIMION 7.0 up to 7.1beta6.
  reserved_vars[2] is not always
  initialized to a four element array when the third element is
  accessed.
  To reproduce in SIMION 7.0:
    Create a terminate segment with the code
      "1 STO retain_changed_potentials".
    On the main SIMION screen, open the SIMION debugger and run the
      terminate segment.  When this command is called, CMD_STO_VAR
      accesses reserved_vars[2][3], and reserved_vars[2] points to
      current_rerun, which is a single double.
  This may corrupt memory, but it did not seem to cause a crash.
  The error does not seem to occur when flying ions, in which case
  reserved_vars[2] is set to an appropriate memory location.
  The error probably only affects the debugger and occurs only in
  rare circumstances when accessing trajectory_image_control,
  retain_changed_potentials, and update_pe_surface variables.
  2006-02-03 - Resolved in 7.1beta7.

Issue I158 2006-02-03 [pa,70,minor,resolved]
  SIMION reports the error "Illegal Fastadj Potential Count in test.pa0"
  when fast adjusting a PA0 from the potentials stored in the IOB file
  if the PA0 uses the maximum number of adjustable voltages
  (31 in 7.0).
  Affects: SIMION 7.0 up to 7.1beta5.
  To reproduce in 7.0:
    Create a PA with electrodes 1..30 and 0.5 V
      (total of 31 adjustable electrodes, including fast scalable).
    Refine, fast, adjust, and save.
    Load into workbench and save IOB.
    Fast adjust.
    Reload IOB.
    Gives error.
  2006-02-03 - Resolved in 7.1beta6.

Issue I159 2006-02-03 [debug,resolved]
  Title: Variable corruption in debugger.
  Affects: 7.1betas up to 7.1beta6.
  Related to: I157
  In new SIMION debugger, variables can point to destroyed memory.
  To reproduce in 7.1beta6:
    Load Quad example in View and fly ions until completion.
    From View, upon SIMION debugger and compile.
    Note that random values display in variable list.  This
      can also trigger a crash.
  2006-02-03 - Resolved in 7.1beta7.

Issue I160 2006-02-04 [view,monitor]
  In view screen,
  - monitor cannot be resized
  - location or monitor and monitor enable button might be changed
  See also I144.

Issue I161 2006-02-03 [view,resolved]
  Title: Non-adjustable variables displaying in Variables tab in View.
  Affects: 7.1betas up to 7.1beta6.
  2006-02-03 - resolved in 7.1beta6  

Issue I162 2006-02-06 [ion,beta,resolved]
  Title: "mm" label not display on ion definition screen.
  Noted by markm - 2006-02-06
  Resolution: Fixed, as this was rendered inactive.
  Affects: 7.1/8.0betas prior to 8.0beta8

Issue I163 2006-02-08 [pa,resolved]
  Title: More than 50 million points in a PA.

  SIMION 7.0 is limited to 50 million points per PA.  For a 3D PA this
  is roughly a cube side 368, and uses 500MB RAM. (Many users now have
  2 to 4GB ram, so this could be usefully raised.)

  As of 2006-02-08 in 8.0, this limit is increased to 400 million
  points in 8.0beta8 (~4GB), but in practice it is close to ~200
  million (~2GB) in WinXP.  Allocating arrays larger that about
  1.3 GB may require using the "--reserved-memory" command-line
  parameter (see Issue I363).

  2 or 3GB is a fundamental limit though, and going beyond it would
  require that Issue I175 be addressed.

  Reported by various users including dennisc.

  Resolved in 8.0.0

Issue I164 2006-02-08 [ion,partlyresolved]
  Title: More than 500 thousand ions in memory.
  SIMION 7.0 is limited to 500 thousands ions in memory
  (~84 MB).
  2006-02-08 - This is increased to 10 million (~1.7 GB).
    Normally it is wasteful to store this many ions in memory
    though.
  2006-06-07 - Ignacio Z recommended at ASMS2006 creating particles
    on the fly, but the 10 million point limit would be ok too.
  2006-06-07 - djm--possibly compress ions too.

Issue I165 2006-02-09 [general]
  Title: [internal] exception handling
  Disable exception handling in compilation of certain modules?
   (for efficiency)

Issue I166 2006-02-12 [fastadj,beta]
  Noted by markm
  Allow fast adjust voltages as defined on the fast adjust screen
  to be loaded from a text file or user program?
  This is especially useful with the increased number of fast adjustable
  electrodes (128) in 7.1.
  
  There's a few ways to do this.  Would it be ideal if the fast adjust
  screen allowed you to load these displayed potentials from the user
  program (optionally in a list defined in the user program)?
  Initially, this appears to me to be the most general solution.
  Normally, voltages are controlled via user programs, so they are
  already defined there.  The user program also defines the
  time-dependence of voltages as well, so you could instruct SIMION to
  load potentials into the fast adjust screen as of some specific time
  t (something that is not possible with a simple list of values).

  One minor point, which is probably usually not a problem, is that
  this assumes that voltages defined in fast_adjust and init_p_values
  depend only on ion_time_of_flight and not on some complex state of
  the simulation.  The initialize segment may need to be called to
  initialize variables.

Issue I167 2006-02-12 [sounds,beta,resolved]
  Sounds not supressed when the SIMION window is deactivatived.
  (as is the case in SIMION 7.0).
  Reported by markm
  Resolution: Fixed 2006-06-13. Was disabled.
  Affects: 7.1/8.0betas prior to 8.0beta8.

Issue I168 2006-04-10 [recording,defect,70,resolved]
  In SIMION data recording, the electric potential (E) option
  incorrectly records magnetic potential whenever a magnetic
  PA of 2D planar symmetry is active.  The error does not occur
  if the magnetic PA has other symmetry or no magnetic PA is active.
  To reproduce:
    Load the _Icrcell example.  Enable data recording with "E"
    (potential).  Potentials recorded are zero.  Set potentials in
    magnetic PA.  Potentials recorded reflect magnetic PA.  Change
    magnetic PA to 2D cylindrical or 3D planar symmetry or delete the
    PA.  Potentials recorded reflect electrostatic PA.
  Resolution: Use SIMION dated 2006-04-10 or later.
  Affects: 7.0
  Resolved in: 7.0.1 (2006-04-10) and 8.0beta8.
  First reported: 2006-04-07 by Laurent in
    http://www.simion.com/discuss/viewtopic?t=341

Issue I169 2006-04-15 [filemanager,70,resolved]
  The GUI File Manager has a limit of 3000 directories
  and becomes unresponsive on a long running directory scan.
  Affects: 7.0.0 to 7.0.1.
  Resolution:
    7.1b2 (8.0) full resolves this by replacing the GUI
      File Manager with the Windows file selection dialog box.
    7.0.2 partly resolves this with a number of improvements to the
      GUI File Manager.  In the drive list, there is a new button
      "START" that lists only the files in the directory in which SIMION
      started (this eliminates the need for the simion.bat workaround).
      The user can now press the ESC key to end a long-running directory
      scan.  Max directories has been slightly increased from 3000 to
      10000.  The user is no longer prompted when the limits are exceeded.
  Reported by many users.
  http://www.simion.com/discuss/viewtopic?t=21

Issue I170 2006-04-25 [randomnumbergenerator,70,resolved]
  SIMION may freeze on startup with the message "Initializing Random
  Number Generator".
  This error can occur if the system has not been rebooted for more
  than 24 days.
  Also noted by kenn in 7.1beta.
  Affects 7.0.0 to 7.0.2; 7.1beta1 to 7.1beta7 (on loading workbench).
  Resolution:
    7.0.3 and 8.0beta8 should fully resolve this.
    Prior versions have a workaround of disabling reinitialization
      of the random number generator as described on
      p. E-15 of the SIMION 7.0 manual.  This was
      usually done by replacing the "c:\FILES.GUI" directory with
      the files in (http://www.simion.com/files/FILES.GUI.zip).
      Rebooting the system may also resolve this temporarily.

Issue I171 2006-04-25 [randomnumbergenerator,seed,70]
  SIMION may crash when calling the "seed" function in a PRG
  user program.
  To reproduce: restart SIMION, create a user program
    containing only "seg initialize 1 seed", create a PA of the
    same name, and fly some ions inside the PA.  SIMION crashes
    (at least under WinXP).
  Technical details: The SIMION random number generator was attempting
  to allocate a large structure on the stack when stack probes were
  disabled in the compiler optimizations.
  Affects 7.0.0 to 7.0.2.
  Resolution:
    7.0.3 corrects this problem.

Issue I172 [med,enhancement,resolved]
  Support for multiple fast proportional scalable electrodes.

  SIMION 8.0.3 ("TEST3") supports multiple fast proportional scalable
  electrodes (prior versions only supported one fast scalable
  electrode via electrode #0).  Fast proportional scalable electrodes
  can be useful for things like resistor chains or resistive material.
  One example of using two resistor chains is the ion funnel.

  For details on how multiple fast scalable electrodes can be set up
  and used, see the new "ionfunnel" example as well as the "Additional
  Fast Scalable Electrodes in SIMION 8.0.3" document referenced from
  that.

  Originally suggested by dennisc--20050922.
    Also--robs-2006-05-02 - call/email noting interest in this also.

  See also:
    http://www.simion.com/discuss/viewtopic?t=1364
      - ion funnel discussion
    http://www.simion.com/discuss/viewtopic?t=1508
      - fast scalable suggestion

  See also Issue I414 (Allow PA# electrode numbers to be non-sequential).

  Implemented in 8.0.3-TEST3.

  Sub-issues:
    Issue I172.2 - Fixed problem where array with fast proportional
      scalable electrodes was not fast adjusted properly when loaded
      from an IOB file.

  To do: Issue I373 - Support fast scalables with offset

Issue I172.2 [defect,critical]
  Fixed problem where array with fast proportional scalable electrodes
  was not fast adjusted properly when loaded from an IOB file.

  Resolved in 8.0.5-TEST5.

  Parent issue: I172

Issue I173 [external]

Issue I174 [external]

Issue I175 [external]

Issue I176 [partlyresolved]
  Increase max PA size.
  See I163.

Issue I177 2006-05-17 [gui,resolved]
  Add Hide tab for larger screen size.
  The workbench screen size is smaller than Simion 7 as the other
  parts of the window i.e.PA's etc take up more room. Could you minimize
  various other windows to keep the workbench screen as large as possible
  or maybe have a full screen workbench only view?
  Requested by markm.
  2005-11-19--djm
    In view screen, possibly allow top control bar to hide itself
    (e.g. maybe an extra tab "Hide" for this).  This would allow a
    larger graphic to be viewed.
  Resolved in 8.0beta8 with "Hide" button that collapses top-panel.

Issue I178 [contours,partlysupported]
  Add vector field plot.
  2006-03-29, jas
  http://www.simion.com/discuss/viewtopic?p=916#916 ]
  -- note: SIMION doesn't plot field lines (potential and gradient
     conturs are different)
  -- timl requested this as ASMS2006.

  Though this is not currently a built-in feature on the PE/Contours
  tab, but there is a simple to use user library to do this in SIMION 8.1:

    Issue I178.2 "New field lines/vector plotting example ('contour')"
      (SIMION 8.0)
    Issue I564 "Programatically draw 3D lines on View screen"
      (SIMION 8.1)

Issue I178.2 [contours,enhancement,example,resolved]
  New field lines/vector plotting example ('contour')

  This example demonstrates how user programs can extend
  SIMION's field plotting capabilities to do this:

  (1) Plotting field lines or field vectors.
  (2) Exporting paths of contour and field lines and data along those
      lines.
  (3) Plotting field lines for fields defined in a user program
      (efield_adjust or mfield_adjust segments).

  Implemented in 8.0.5 (though should run in earlier 8.0.x versions
  too).

  See also Issue I491 "Allow PE/Contour views of fields defined by a
                       user program."

  Update: 2008-07-22 - The type of contour a particle traces is now
  determined implicitly and individually by the particle's mass (1000 -
  1003) in the particle definitions, rather than adjustable variables,
  thereby allowing different particles to trace different types of
  contours in the same plot.
  
  Update: 2010-12-15 - This technique is inferior and now largely
    obsolete due to the new feature in
    Issue I564 "Programatically draw 3D lines on View screen"
Issue I179 [mostlyresolved]
  PA0 footer format not documented in manual.
  - also noted by kenn as ASMS2006
  Resoltuion: now partly described in the 8.0 manual (file types chapter),
  but see SL Libraries (included in SIMION 8) for full details.
  Also see Issue I172 - Support for multiple fast scalable electrodes.  

Issue I180
  Various parameters (to dev/file,rerun,V/R,trajectory quality)
  not saved in IOB file.
  in 'def' window, the 'To Dev/File' is not saved in the IOB.
  - rerun and V/R (view/retain trajectories) not saved in iob file
  - grouped/repulsion not saved in iob file
  - computational quality not saved in iob file
  - at ASMS2006 kenn suggested that all parameters that could
    affect the simulation  be recorded in the header of data recording
    for reference.
    We alternately agreed that the information should be stored
    in the IOB file for later examination.

  jeffm-20100527 e-mail notes:
   - Particles tab:Data Recording: OutputFile
   - Particles tab:Trajectory Calculation settings
   - Particles tab:Trajectory Display settings
   - Display tab:3D zoom settings
   - Display tab:3D Iso direction (instead of returning to the default)

  Schedule for 8.1?

Issue I181
  reduce the need for writing user programs for common tasks
  [sim8]
  - kenn mentioned this as ASMS2006.  E.g. collision models,
    RF, and simplex optimization (I309) features built directly into
    SIMION without the need of user programming.

Issue I182 [batch,resolved]
  command-line operation.

  Batch mode command-line operation was added in 8.0.0 as
  described in Appendix M of the SIMION 8.0 manual.

  The following changes were made after 8.0.0 and are not described
  in the 8.0.0 manual.

    Issue I227 - Add "fly --restore-potentials=b" command-line option.

    Issue I255 - Loading IOB/PA files from Windows explorer file
                 associations or command-line.

    Issue I299 - New "--noprompt" command-line option to disable
                 prompting in batch mode.

    Issue I424 - New gem2pa and refine command line options to
                 override pa_define

    Issue I458 - New "--temp-path" command-line option for modifying
                 default path for temporary files.

  A full list is available of command options can be obtained as follows.

    To display top-level options/commands (for SIMION startup):

      simion.exe --help

    To display options on a specific command (e.g. refine), place the
    command name before it:

      simion.exe refine --help

    The latter are also available from the SIMION command bar by entering

      simion.command("refine --help")

  Related issues:

    Issue I363 - New command-line option (e.g. --reserved-memory=1.8G)
                 for sltools.exe

  Older history:
    2006-06-07 - kenn mentioned at ASMS2006 interest in
     command-line operation
     for geometry optimization.
    2006-06-07 - ignacio also interested in GEM optimization
      at ASMS2006.

  Resolved in 8.0.0 (and previous betas).

Issue I183 [lowpriority]
  there may be screen refresh problems using SIMION 7 under VNC.
  20060607 - noted by kenn at ASMS2006.
  Note: not yet tested under SIMION 8.0.

Issue I184 [low]
  COM or DDE control of SIMION.

  martin (dennisc) - DDE connection to SIMION program as it is
  possible say for Word or Excel applications.

  Some type of more extensive remote control is planned, but possibly
  after 7.1.  It may be COM or HTTP rather than DDE or some type of C
  DLL interface with adapters for scripting languages (e.g. Python).
  Some type of remote interface such as HTTP would allow you to
  control multiple instances of SIMION running on multiple systems.

  2006-06-07 Ignacio at ASMS2006 recommended Excel-like DDE or
  COM interface to SIMION.

  Note: is this still much needed with the SIMION 8.0.0 command line
  interface?

Issue I185 [80,resolved]
  Improved performance in 8.0.

  The compiler was switched from 7.0 to 8.0 (Watcom to
  MSVC++2005/2008), and compiler options were optimized
  under the new compiler.  This gives about 20-40%
  improvements in fly and refine times.

  Note: SSE/SSE2 extensions enabled. This seems to give only ~10%
  increase in performance in SIMION8beta.  - 2006-06-07 Ignacio was
  interested in this in ASMS2006.

  Some display changes also affect performance (Issue I17).
  See also Issue I468 - "Improve responsiveness on PA load/save
    (Asynchronous I/O)."

  Implemented in 8.0.0.

Issue I186 []
  multiprocessor support
  Reported by dennisc-2005-11-18

  Also I've noticed that when running trajectories flat out, according
  to Task Manager, I am only using ~50% CPU. Running two instances of
  SIMION CPU usage can go to 99% or so.  I guess this has something to
  do with the processor (pentium 4 ~1yr old) looking like 2 cpu's to
  winXP.  Perhaps a future version of SIMION would be able to take
  advantage of multiple processors, e.g. refining a fast adust a PA
  should be able to be split between multiple CPU's... just a thought

  Eventually, we may take advantage of multiprocessors or clusters.
  It's not of highest priority, but it's one alternate mathod to
  address the RAM limitations.

  2006-06-07 - Ignacio mentioned at ASMS2006 that multiple
    copies of  SIMION8 should run simultaneously on multiple processors
    (which I think it does)

  -- Note: I have a good interest for enabling SIMION to run
     in cluster mode in an 8.0.x update.  That is, run multiple
     copies of SIMION simultaneously on multiple CPUs
     (possibly even on different computers).  For example, 
     you might split a large PA into multiple PAs and refine
     each part in parallel on each of the computers.
     I might start with supporting this first in batch mode
     operation before supporting it in GUI mode operation.

Issue I187 [MED-HIGH]
  Refine multiple PAs together.

  Allow PAs (possibly of multiple symmetries) to be refined together.
  This will significantly simplify and improve the simulation of
  multiple PA workbench simulations.

  - discussed with dennis and some other users at ASMS2006
    See i_holton and SlavaKov comments in user group.
      http://www.simion.com/discuss/viewtopic?p=1457
      http://www.simion.com/discuss/viewtopic?p=1497
      http://www.simion.com/discuss/viewtopic?p=1465

  Note: can probably be done initially with SL Libraries and
    batchmode ("refine" command) in SIMION 8.

  Copy function should work directly on 2D PAs and provide additional
  options (e.g. to select whether to copy non-electrode points on the
  boundary).
  http://www.simion.com/discuss/viewtopic?p=1527
  http://www.simion.com/info/Multiple_PAs

Issue I188 [external]

Issue I189 [external]

Issue I190 [mostlyresolved]
  SIMION 8 demo needs done

  8.0.2 demo available.
  8.0.4 demo available.

  TODO-update tutorial

Issue I191 [resolved probably]
  2006-06-12
  Long file names (greater than 8+3=11 characters) may cause error messages.
  This is due to the following registry being set to 1 (default on WinXP).
  HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation
  If changing this back to 0, the system will need to be rebooted, and the
  files will need to be recreated (e.g. copy and rename back) so that they
  have short names.  Due to these complications, it is recommended that you
  not make this registry change but instead use short names.
  Example: rename test3d.pa to test3dlarge.pa and load.  open View, exit View,
    and attempt to reopen View.  Second reopen triggers error message about file
    name bad.
  Affects: 7.0 and above. Fixed in 7.0.4 and 8.0beta8.

Issue I192 [resolved probably]
  2006-06-12
  Buffer corruption when saving IOB of file length slightly more than 12 chars.
  (in allign_filename).
  Example: save QUAD.IOB and QUAD12345.IOB.  May freeze, crash, or (during debugging)
    trigger run-time error near allign_filename.
    Or save test3d.pa as test3dlarge.pa.
  Affects: 7.0 and above. Fixed in 7.04 and 8.0beta8.

Issue I193 [beta,resolved]
  Only 12 characters of filenames are displayed in PA and PA instance lists
  making identification of the file name difficult, especially for two similarly 
  named files.
  2006-05-17

  Reported by markm.
  Resolved in 8.0beta8.
  Affects 8.0betas prior to 8.0beta8.

Issue I194 [beta,resolved]
  Memo information not displayed.
  2006-05-17.
  Reported by markm.
  Resolution: fixed in 8.0beta8 with memo field in file open/save
    dialog box.
  Affects 8.0betas prior to 8.0beta8

Issue I195 [beta,resolved]
  On adding a new PA instance to the IOB, angular info 
  (Rotation, Elevation & Azimuth) not read into prompt box.
  You can set the +X,-Z etc options though.
  --djm-note: opening dialog also crashes if window is too small (old style GUI)
  Reported by markm.
  Resolution: this dialog box was removed for simplicity.
    The user can make any necessary adjustments to the PA instance positioning
    after loading the PA instance into the workbench.
  Affects 7.1betas prior to 8.0beta8.

Issue I196 [beta,resolved]
  FLY files don't allow non-zero TOB for first particle (resolved in FLY2)
  Affects: 7.0 and 8.0beta.
  Reported by markm.
  Notes: This probably will require expanding the FLY format (e.g. FLY2).
    A workaround may be to add a constant to the ion_time_of_flight variable via
    a user program.  Another workaround is to use a ION file instead.
  Ressolved prior to 8.0.0 in FLY2 format.

Issue I197
  2006-06-13
  Support quaternion rotation in 3D View screen.

Issue I198
  2006-06-13
  Add basic opengl support to View screen.

Issue I199 [probablyresolved]
  2006-06-20
  On first opening file dialog box, file name is string of spaces.
  Resolution: possibly resolved in 8.0beta8.  changes to create_blank_line and other
    functions.
  Affects 7.1/8.0betas up to 8.0beta8.

Issue I200 [resolved,beta]
  2006-07-11
  Secondary keys do not work on gui window.
  For example, in Modify, make a box selection on the simgui
  window and press [delete] to delete the selection (or press
  [F1] to display help).  Nothing happens.
  Affects: 8.0betas prior to 8.0beta9.
  Resolution: Resolved in 8.0beta9.  WM_KEYDOWN scan codes and flags
    were not ported correctly from 7.0.

Issue I201 [gem,resolved]
  2006-07-28
  GEM file includes don't properly resolve paths in other directories.
  For example, if a.gem includes inc\b.gem includes c.gem, then
  SIMION expects c.gem to be located in the root folder, not
  the "inc" folder as the user might expect.
  Affects 7.0 upward.
  Resolved in 8.0beta9.

Issue I201 [gem]
  2006-07-28
  GEM file "include" does not accept certain paths.
  For example, "include(1.gem)" or "include(../a.gem)"
  reports "illegal number"
  Affects 7.0 upward

Issue I202 [file,probablyresolved]
  Extra .PA extension to .PA# file names when saving under Win2K
  2006-07-28
  In Win2K (not WinXP), saving file as "test.pa#" causes extension
    to be added as "test.pa#.pa".
  Reported by justinc
  Affects 8.0betas up to beta9
  Further testing may be needed.

Issue I203 [gui,beta,resolved]
  Down/up arrow keys in data fields skip data validation.
  2006-08-30 - dennisc
  To reproduce:
    - Select PAs(Fields) Tab
    - put Cursor in Scale Window under Positioning
    - Hit the Down Arrow Key
      - get "Matrix inversion problem" error message,
        but nothing bad happens.
    Note: a scale value of 0 is passed.  SIM7 does not permit a 0
     here, enters 0.00001 in the field.
  Resolved in 8.0beta12.  Affects earlier betas.

Issue I204 [gui,beta,newfeature,resolved]
  Display IOB filename in window titlebar.
  2006-08-30 - dennisc
  Resolved in 8.0beta12.

Issue I205 [file,beta,resolved]
  "No such file or directory" when loading file.
  2006-08-31 - Reported by igorv.
  Description:
    After selecting a file to load (e.g. FLY or ION file), the
    error message "No such file or directory" may display
    if no MEMINFO.GUI file exists in the same directory.
  Cause:
    This is due to errno being set in the GetOpenFileName hook.
  Affects 7.1/8.0 betas. Resolved in beta12.

Issue I206 [simgui,beta,unknown]
  "highest_parent_object - no highest_parent found error"
  2006-08-31 - reported by igorv.
  Description from user report:
    Left it overnight computing some ion trajectories. Today in the
    morning, when I switched to SIMION window, I got these error
    messages "highest_parent_object - no highest_parent found error"
    (see the attached pdf file).  They showed up repeatedly until I
    stopped the program. I recall there were some issues with the
    version 7 and screen savers etc.  David Dahl has not completely
    resolved them.
  Affects 7.1/8.0 betas.
  DJM-NOTE: I have not yet been able to reproduce this error.
    It seems related to the mouse motion code.  Additional
    debugging code is being added to 80beta11e to help diagnose this
    if it happens again.

Issue I207 [simgui,focus,beta,resolved]
  Key shortcuts bypass field validation (killfocus).
  Reported by dennisc 20060901
  To reproduce:
    In Fast Adjust window, have 3 adjustable elements
    Click on Adj element 1, don't change it
    Tab to 2nd element, change value, background goes pink when we
    Tab to 3rd element, then change this value
    If we click on "Fast Adjust PA" button, then this value is
    entered as above,
    If however we just hit the "F" short cut key, the last field
    changed is not
    actually entered/Fast Adjusted
    (Different behavior to SIM 7) 
  Affects 7.1/8.0 betas. Resolved in 80beta11f.

Issue I208 [files.gui,resolved]
  User preferences (FILES.GUI) ignored in batch mode.
  Reported by dennisc 20060901
  To reproduce:
    Disable sounds in SIMION's user preferences.
    In the quad folder run the command "simion.exe --nogui fly QUAD.IOB".
    Sounds are generated (wrongly) on each splat.
  Affects 8.0betas. Resolved in 80beta11f.

Issue I209 [gui,opengl,featurerequest,resolved]
  Enable [+-] keys to zoom in/out in on Modify OpenGL view.
  Requested by dennisc 20060901
  Details:
    Make the + and - key to zoom in/out in
    addition to the mouse wheel.  This is mainly for
    laptops that only have a touch pad.
  Implemented in 80beta11f.

Issue I210 [gui,opengl,featurerequest,resolved]
  Isometric view option on Modify OpenGL view.
  Requested by dennisc 20060901
  Details:
    Suggestion for Modify OpenGL view: have the option for an
    Isometric Display, i.e. turn perspective off. There are
    times when this is preferrable if you are trying to see
    if features are lined up or the same size by trying
    to check overlap etc.
  Implemented in 80beta11f.

Issue I211 [batchmode,beta,partiallyresolved]
  Reduce verbosity of batch mode output
  Requested by dennisc 20060901
  Details:
    SIM8 Refine line outputs rather a lot of data.  I just
    want to know did
    it reach convergence criteria, and how long it took to get
    there, # steps.
    Likewise the SIM8 fly option creates very large files
    (I just noticed that you are thinking os a Quieet mode with status
    messages,).
  Partially resolved in 80beta11f by displaying percent complete
    as single lins with hatch '#' marks for gem2pa and refine.
    Output lines are also classified into 'status', 'status2', and
    'error'.

Issue I212 [70,ion,resolved,notresolved70]
  Minor changes to ION file parsing for improved robustness
  2006-09-06.
  Details:
    - In SIMION 7.0, blank lines are read in as ions, which is
      unlikely what the user intended.
      These lines are now ignored starting in SIMION ~8.0beta12.
      This change unlikely has an effect on existing projects.
    - In SIMION 7.0, the coordinates comment line can be omitted, but
      the effect of this is not documented in the SIMION 7.0 manual.
      The effect is that the the coordinates from the previously
      loaded particles definition file are used (upon startup, the
      default is "1" for PA instance 1).  This less-than-deterministic
      behavior is unlikely what the user intended.  Starting in SIMION
      ~8.0beta12, this always defaults to 1.  This change unlikely has
      an effect on existing projects.  In retrospect, it may seem more
      natural for SIMION to default to workbench coordinates (0), but
      changing that default might break existing SIMION 7 projects
      that use ION files with missing units comment lines.  Note that
      SIMION 7 always adds the units comment line when saving an ION
      file, so it's normally recommended to include it.
      - UPDATE 8.0beta14e-20061031: now defaulting to WB
        coordinates (0) instead.
    - In SIMION 7.0 coordinate unit number can exceed the maximum
      bound by 1 without triggering an error.  This now
      correctly triggers an error message in SIMION ~8.0beta12.
  Affects 7.0
  Resolved in 8.0beta12 (not currently patched in 7.0.x)
  Updated in 8.0beta14e-20061031

Issue I213 [gem,70,low]
  Indeterminate behavior when electrodes hit mid-points between grid
    units in GEM files.
  Noted by dennisc-20060907
  Description:
    When converting the following GEM file to a PA in SIMION 7,
    some lines are 0, 1, and 2 gu wide, when we typically want
    these all to be 1 gu wide:

      PA_Define(100,200,1,P,Y,Electrode,1)   ;
      Locate(2,0,0,5){
        e(0) {fill {within{polyline(3.30,0, 3.30,40 )}}}
        e(1) {fill {within{polyline(4.40,0  4.40,40 )}}}
        e(2) {fill {within{polyline(5.50,0  5.50,40 )}}}
        e(3) {fill {within{polyline(6.60,0  6.60,40 )}}}
        e(4) {fill {within{polyline(7.70,0  7.70,40 )}}}
        e(5) {fill {within{polyline(8.80,0  8.80,40 )}}}
        e(6) {fill {within{polyline(9.90,0  9.90,40 )}}}
        e(7) {fill {within{polyline(11.00,0 11.00,40 )}}}
      }

    The same is true using box2d rather than polyline.  This occurs
    when the sheet is ~midway between two grid points.  SIMION fills
    +-0.5 grid units around the electrodes, so the right and/or left
    grid points may or may not fill depending upon numerical round-off
    error, which cannot be relied upon.  The behavior at half-grid
    units may indeed be undefined by design.

    Note that this generates no electrodes:
      PA_Define(50,50,1,planar,electrostatic)
      e(1) {fill {Within{polyline(27.5,0.00, 27.50,40.00)}}}

    One workaround for now is to avoid the grid mid-points when
    placing an ideal grid.  For example, change the scaling factor
    from "5" to "5.01" or maybe (even better) some irrational number
    such as 0.50178423784....  Even better, align all your electrodes
    precisely on grid units.

    This issue needs further review.  It is not yet certain whether
    this is considered a bug or a design limitation.  In either case,
    some clearer procedure may be warranted to avoid this.  If box2d
    cannot be improved then maybe a new command should be implemented
    to better support this type of thing.

Issue I214 [resolved]
  "Command" bar in SIMION8beta does nothing.
  20060907 jasons.

Issue I215 [feature,beta,resolved]
  Support Lorentzian distribution in FLY2
  2006-09-14 - theo
  Implemented in beta13c2--20060923

Issue I216 [feature,beta,MED-HIGH]
  Support seed for random number generator in FLY2.
  Reported by theo-2006-09-14
  Note: converting to .ION also works.
  Resolve in 8.0.x
  --Probably should do.  Workaround of course is to generate an ION file
    from the FLY2.

Issue I217 [feature,beta,resolved]
  Support distributions for momentum in FLY2.
  Reported by theo-2006-09-14
  (for FLY2)
  > You might want also distributions in momentum for magnetic problems  
  > including relativity.
  Resolved in ~80beta13

Issue I218 [70,defect,med-high,resolved]
  Crash if failure to write to FILES.GUI directory

  If SIMION cannot write to the C:\FILES.GUI directory on program
  exit, then it may crash.

  Workaround/solution: enable read/write permissions on C:\FILES.GUI
  directory, or attempt deleting C:\FILES.GUI (SIMION will recreate
  it, possibly in your personal folder (in version 8), upon startup).

  [ http://www.simion.com/discuss/viewtopic?p=1127#1127 ]
  also reported by uwe-20070810 
    -http://www.simion.com/discuss/viewtopic?p=1801#1801

  Affects 8.0 and 7.0.  Resolved in 8.0.5-TEST26

Issue I219 [805,beta,resolved]
  Various printing screen issues - labels, color, annotations.
  Theo-20060918
  > 9. Print option label cannot use point (i.e. like 1.5 1 
  > point 5).  A  
  > panel opens up whenever the decimal point is used and ask for 
  > something.
  >  10.     Also how is color activated in print. I am presently only getting 
  > black and white figures? Later, I actually found out that if I press 
  > the only button that doesn?t sya anything this seesms to toggle the 
  > color?! Shouldn?t this button say something? 
  Resolved in 8.0beta12g--accelerators are no longer trapped in label
    editing, color is on by default and moved to pritn options screen
    (frame button is moved there as well).  revamp of printing
    screen.  annotation buttons also added.
  See also I40.

Issue I220 [med,80,HIGH]
  Requirement that all files in the same workbench (.iob) be in the
  same directory.

  SIMION 7.0 and 8.0 require all files (.pa, .fly, .rec, etc.) 
  associated with a workbench (.iob file) to be in the same directory
  as that .iob file.  This is specified in the manual.  Partly the
  reason for this that the association between these files and the
  .iob is defined implicitly: on loading an .iob file, SIMION looks to
  see if any other files in the same directory exist with the same
  base filename as the .iob and automatically loads those files
  (e.g. hello.iob will search for and load hello.fly, hello.rec,
  etc.).  An exception is potential array files, whose names are
  listed explicitly in the .iob file (since a workbench can contain
  multiple different potential arrays).  However, even then, only
  the file names are stored (there is no directory information), so
  these potential arrays are assumed to be in the same directory
  as the .iob file.

  Loading an .iob file and then attempting to use files not in the
  same directory is not recommended (the behavior on doing this is
  undefined) and may cause odd problems, particularly in less recent
  versions of SIMION (e.g. prior to 8.0.5).  These problems are being
  eliminated in more recent versions of SIMION to allow this more.
  For example...

  Sub-issues:

    As of 8.0.2, relative paths in the "fly" command are
    accepted: simion --nogui fly ../examples/tof/tof.iob

    Issue I220.2 - "Prevent current directory changing when loading
      .con/.rec/.fly/.fly2/.ion/.pa files outside the current directory"

    Issue I220.3 - Allow workbench IOB to contain PAs in a different directory.

  There are reasons one might want to have files in a project be in
  different directories.  You might have files that are shared by
  multiple workbenches.  These may be large potential array files
  that you don't want to have multiple copies of.

  There are some workarounds you can use:

  Method #1: Multiple .iob files in the same directory.

    Multiple .iob files may be placed in the same directory
    and share potential array files.  For example, if one.iob and
    two.iob both need to use alpha.pa, you can can place all these
    files in a single directory:

      myexample\one.iob
      myexample\two.iob
      myexample\alpha.pa

    A number of SIMION examples use this approach (e.g. "hda").

  Method #2: import statements.

    Some files types allow "simion.import" statements (e.g. .lua and
    .fly2) similar "include" statements (e.g. .gem) that load the
    contents of another file.  For example, consider that one.iob and
    two.iob both need to share a common FLY2 file named one.fly2.  You
     could of course make a copy of one.fly2 and save it as two.fly2 like
    this:

      example1\one.iob
      example1\one.fly2
      example2\two.iob
      example2\two.fly2

    An alternative is to edit two.fly2 in a text editor so that
    it contains only this:

      simion.import '../example1/one.fly2'

    Now, any changes to one.fly2 are automatically reflected in
    two.fly2 (upon reloading two.fly2).

    A number of SIMION example use this type of approach
    (e.g. "ionfunnel"), usually for sharing workbench programs code or
    entire programs.

  Method #3: Hard links in the NTFS file system.

    A number of operating systems allow a file system to contain links
    (either "hard links" -- http://en.wikipedia.org/wiki/Hard_link -- or
    "symbolic (soft) links" --
    http://en.wikipedia.org/wiki/Symbolic_link ) so that a single file
    on disk can be referenced from multiple locations.  For example,
    consider the case of

      example1\one.iob
      example1\one.pa
      example2\two.iob
      example2\two.pa

    Normally, one.pa and two.pa are different files (maybe even copies
    of each other).  However, if two.pa is a link to one.pa, then both
    are actually the same file--only one copy is stored on disk and
    changes made two one of these are immediately seen in the other.
    The file just has two identities.

    Now, there are two commonly supported types of links: hard and soft
    (a.k.a symbolic).  Refer to the Wikipedia pages above for the
    difference.

    On *nix-like operating systems (e.g. Linux and Mac OS X), both
    hard and soft links are available.  Hard links are also supported
    on more recent versions of Windows (e.g. 2000, XP, and Vista),
    assuming the file system is NTFS (the default).  Windows also has
    some support for soft links but it is not useful to us here since
    its soft links are only supported on directories (not individual
    files).

    On Windows, hardlinks can be created via the "fsutil" command-line
    command:

      Usage : fsutil hardlink create <new filename> <existing filename>
         Eg : fsutil hardlink create c:\foo.txt c:\bar.txt

    On *nix-like operating systems (even Cygwin shells under Windows for
    hard links), the "ln" command can be used:

      ln foo.txt bar.txt      # make hard link
      ln -s foo.txt bar.txt   # make soft link

    A convenient way to run these commands is with the .iob file open
    in SIMION run this command in the bottom Lua command bar to open
    a Windows console window:

      os.execute 'start cmd'

    Then type the required fsutil command in the console window and
    finally close the console window.

    One disadvantage of these links is that it is not always easy to see
    (or at least notice) that a link exists between two files.
    modifying a file from one location would (possibly inadvertantly)
    modify the file seen from the other location.  Futhermore, these
    links could get lost if the directories are copied or moved to
    some other location.

  These are some possible ways SIMION may be extended in the future to
  better support files in different directories:

  Suggestion #1: Windows shortcuts or similar mechanism.

    Windows shortcuts are files that link to another file.  A shortcut
    is a real file that contains the path of another file.  Is
    (probably to our advantage) not some low level transparent
    reference maintained in the filesystem (like hard/symbolic links).
    However, shortcuts don't support relative paths, and an ASCII
    format for shortcuts would be preferrable.
    
  Suggestion #2: Handle relative paths in the IOB files.

    This is probably the optimal solution.  Howeverm this might
    slightly break some compatiblity with 7.0, though there are
    ways to deal with that. This should be investigated more.

  Suggestion #3: Allow a list of search paths to be specified with the IOB.

  Comments (paraphrased):

    > When a FLY is taken from a different directory than an IOB, and
    > the Retain button is unchecked, the .trj file is NOT
    > deleted....(theo)

      This is resolved by Issue I220.2 - "Prevent current directory
      changing when loading .con/.rec/.fly/.fly2/.ion/.pa files
      outside the current directory."

    > Usually I have different projects that use the same
    > PAs. To keep things nicely organized I have all stuff for
    > each project within the same directory. Since the PAs loaded
    > with the IOB have to be in the same directory this means I have
    > many identical duplicate PAs. I would propose that either you
    > allow longer paths that or you could just use virtual PAs
    > (i.e. linked to the real PA which however could be in a
    > different directory).  With large PAs this would save space.
    > (theo-20051115)

      Noted (see above).

    > A similar thing holds for the PRG names that have to be identical
    > to the PA names. Many times I want to use different PRGs with
    > the same PAs. Same problem and for the time same space
    > squandering solution as above.  (theo-20051115)

      Note: Lua files attached to the IOB avoid this problem, and
      Lua files can use simion.import to load code from other files.

    > I have not been able to execute the 'fly' command successfully
    > unless the .iob and all of the .pa's, .fly, etc. are all in the
    > same directory as the simion executable.  If I have the project in
    > a directory different than the simion executable, and I execute
    > simion from the SIMION 8.0 directory, I can get the .iob to load
    > if I specify its full path on the command line, but then that path
    > doesn't seem to be used to load the .pa's, etc., so it fails.
    > If I execute simion from the project directory (by including the
    > SIMION 8.0 executable directory in the PATH system variable), I
    > don't need to specify the path for the .iob, but the .pa's still
    > don't load.  It is as if simion is looking for the .pa's in the
    > simion executable directory. (danr-20051213)

      This is fixed as of 8.0.2, in which case relative paths in the
      "fly" command are accepted: simion --nogui fly
      ../examples/tof/tof.iob

    > Recommending support windows-like links (*.lnk shortcut files),
    > not the soft/hard-links as in *nix, to allow PAs and IOBs to be
    > in different directories.  We have some big models on our
    > network share and currently have to copy them for every new
    > project we make.  This should also work across drives.
    > --thomasb -- http://www.simion.com/discuss/viewtopic?p=2144

      .

  Reported by jasons - 20060918, theo - 20060922 / 20061016, danr - 20061213.

  Affects: 7.0 and 8.0.
  To resolve in 8.0.x.
  Partly resolved in 8.0.5-TEST17 (Issue I220.3)
  To fully resolve by 8.1 if not earlier (review before 8.0.5 final release)

Issue I220.2 [defect,resolved]
  Prevent current directory changing when loading
  .con/.rec/.fly/.fly2/.ion/.pa files outside the current directory.

  Prior to 8.0.5-TEST9, load/saving (or attempting to do so) certain
  files in a different directory from the View screen could cause the
  current directory to change (now prevented in 8.0.5-TEST9), which in
  turn caused problems related to Issue I220.

  This is related to Issue I220
    "Odd behavior if SIMION project files are not in the same directory."

  Also reported in http://www.simion.com/discuss/viewtopic?p=749

  Affects 7.0.0-8.0.5-TEST8.
  Resolved in 8.0.5-TEST9.

  Parent issue: Issue I220

Issue I220.3 [enhancement,81,partlyresolved]
  Allow workbench IOB files to contain PAs in a different directory.

  In 8.1 (or 8.0.5-TEST17 under early access mode), potential arrays
  outside the directory of the workbench (IOB) file can now be loaded
  onto the workbench.  When the IOB file is saved, relative or
  absolute paths to these PAs will be saved in the IOB file.

  To use this, just click "Add" on the "PAs" tab and select a
  potential array outside the current directory.  You may see a
  warning about the file being outside the current directory (ignore
  this).

  When saving the IOB file, SIMION will try to preserve a relative
  path to the PA.  Failing that (e.g. if the PA is stored on a
  different drive), an absolute path will be preserved.

  Compatibility: IOB files containing PAs in different directories
  should load and largely work in 8.0.5-TEST17 or above, even when not
  in 8.1 early access mode.

  Note: this new feature generally works but but some further work
  will be done on it (likely 8.0.5-TEST18) to make it more robust.
  Certain saving/loading operations currently could confuse it.

  Partly resolved in 8.0.5-TEST17.
  Parent issue: issue I220

Issue I221 [feature,low-medium]
  Support multiple and non-orthogonal test planes in data recording.

  The current SIMION Data Recording options only record on orthogonal
  test planes, only one in each direction.  Some have wanted multiple
  test planes and test planes at arbitrary angles.

  One solution for this is user programming.  See the example in Issue
  I221.2 - "New example: Applies user program to record data on
  multiple non-orthogonal test planes ('test_plane')" which uses
  a reusable library for defining test planes rather quickly.

  Another approach is to rerun the simulation multiple times, using
  a different test plane each time.

  TODO - Eventually we should support this directly in Data Recording
  without the need for the user program setup.

  Reported by theo-20060917,2006-09-18
    In data recording, allow recording on arbitrary test plane,
    possibly multiple test planes.
    The usual options for marking trajectories inludes crossing the plane 
    of X=#, or Y=# or Z=# individually but not any plane which could be 
    defined by the vector normal to it normal (X=#1, Y=#2, Z=#3).

    In the past I had wanted to get a cross sectional view of the focusing 
    (spread in the trajectories) of a beam as it goes around an HDA. I 
    therefore could use such an option. Moving this plane around and also 
    tilting its orientation would tell you lots about the 1rst order focus 
    of an HDA and how it moves when fringing fields enter the picture as 
    in my paracentric fringing field HDA. 

  Reporte by dennisc: Record Data when ion crosses arbitrary
    planes a*x +b*y +c*z = d enter a, b, c, d this would let us monitor
    the cross section of the beam at various locations.

  Status: review in 8.0.x/8.1 sometime

Issue I221.2 [enhancement,example,testplane,record,resolved]
  New example 'test_plane': Applies user program to record data on
  multiple non-orthogonal test planes

  This new example "test_plane" provides one solution to Issue I221 -
  "Support multiple and non-orthogonal test planes in data recording." 
  via user programming.

  Implemented in 8.0.5 (but compatible with previous 8.0 versions)

  This "test_plane" example will be formally included in 8.0.5 but can
  be downloaded separately now from the "Check for Updates" button in
  SIMION 8.0 (simion8-test_plane-*.zip).  It should work under earlier
  version of SIMION 8.0 as well.

  Changes:
    2008-07-24 - robustness improvements, avoids particle locking up
      near test plane.  Reported by SlavaKov and rraman in
      http://www.simion.com/discuss/viewtopic?p=2379

Issue I222 [MED-HIGH]
  Help functions need added to more controls.
  Reported by theo-2006-09-18
  -- Yes, help probably needs improved.

Issue I222 [beta,resolved]
  Double/halve functions refuse to run.
  Affects recent 8.0betas.
  Resolved in 80beta12h.

Issue I223 [70,medium,resolved]
  Improvements in clipping line to rectangle.

  Clipping is used for things like detecting if a particle trajectory
    crosses a PA grid cell, splatting the particle if cell is an electrode.
  
  Problem known to affect versions prior to 8.0-beta12h:
    Particles may skip through PA at el=180deg due to numerical error in clipping.
    Problem seems to tend to occur when a particle is flying at
    an angle of elevation=180degrees.  Changing elevation to
    179.9999999... eliminates the effect.
    Problems occurs on some compilers and initally
      seemed related to the floating point code in matrix.cpp rt/el/az_matrix,
      but it it not so clear anymore since this may just be a side-effect.
    See theo/20060919 examples.
      Affects 7.0.1 and above and 8.0betas.  Also affects
      7.0.0 but to a somewhat lesser extent.

  Update 8.0-beta12h (2006-09-20): SIMION now treats nearly horizontal
    lines (i.e. 1/|slope| > 1e15) specially.  This issue is probably resolved now.
  
  Update: 8.0.6-TEST10 makes some further minor robustness improvements
    to 2D clip detection--e.g. treating X and Y exactly symmetrically.
  Update: 8.0.7.48/8.1.0.48 - made similar clip detection improvements
    in 3D.  See also Issue I588.

Issue I224 [beta,resolved]
  Loss of view definitions on entering workbench tab.
  Reported by theo-20060920
  There is a loss of view definitions (e.g. 3D cuts)
  everytime I something was changed. I'm not sure if this was also so in  
  Simion7 but I don't think it was as bad. This definitely needs to be  
  fixed.
  > 12.     When changing to workbench view the trajectories get reploted even 
  > when no changes are made to the size of the workbench. I think the 
  > trajectories should NOT be reploted as this is very time consuming 
  > when dealing with a lot of trajectories. Only in the case of hide 
  > panel should this be needed or in case the workbench size is changed 
  > for some reason. 

  DJM-notes:
  - Occurs when Workbench tab is pressed.
  - May can occur when FLY button is pressed, but this is not seen
    until the window is refreshed.  Observe Display tab in 3D Zoom
    section to better understand this behavior. (?)
  - 2D zooms get reset when window is resized. (probably ok)

  Resolution
  - In 80beta12i, 2D and 3D zooms are not reset on entering the Workbench
    tab.

Issue I225 [beta,low]
  In fast adjust screen, voltages display unnecessary precision.
  Reported by theo-20060922 and by markm-20061213 and
    tbraun-http://www.simion.com/discuss/viewtopic?p=1310#1310
  Description:
    For example, entering "1.12345E-01", fast adjusting, and then
    re-entering fast adjust screen shows a value of "0.112345000001369".
    The extra offset is actually carried in the number and is likely
    an artifact of the fast adjust process.
    This has little real effect besides making the numbers display ugly,
    so it should be investigated further.
    (If your program tests the equality of the adj_elect01 variable
     with 1.12345E-01, it might have an effect too, even in 7.0).
  Affects 8.0.0, which displays all digits of precision.
  To investigate in 8.0.3.

Issue I226 [beta,resolved]
  See comments by theo-20060922
  Should .ION, .FLY, or .FLY2 be autoloaded first?
  or trigger an "ambiguous" warning message.
  Affects 80betas
  Note: 8.0.0 loads .ION then .FLY2 then .FLY

Issue I227 [beta,feature,resolved]
  Add "fly --restore-potentials=b" command-line option.
  Reported by dennisc-20060914 and jasons-20060922
  Details:
    When fast-adjusting PA0 files and flying an IOB file from
    the command-line, SIMION always restores potentials in PA0
    files from the values stored in the IOB file.
    This is not desired if the PA0 files are fast adjusted from
    the command-line.  Therefore, in 80beta13c a new command-line option
    has been added to disable this: "fly --restore-potentials=0"
  Implemented in 80beta13c.

Issue I228 [beta,feature,high,resolved]
  Allow Log window data to be copied to the clipboard.

  As of 8.0.3-TEST7, you can select text in the Log window
  and press CTRL+C keys to copy it to the clipboard.

  Reported by theo-20060926 and theo-20070430.
  Resolved in 8.0.3-TEST7.

Issue I229 [beta,enhancement,high,resolved]
  Allow log window to open in separate larger window.
  Reported by theo-20060926
    - Allow log window to be opened in a separate window and
      resized. Currently it is small, and one constantly needs
      to scroll to see anything.
  Also reported by timl-20061013
    - Allow workbench tabs to be undockable or at least separate
      from the other tabs.  Would be nice to be able to
      to expand the log window and keep it open when working
      with the other tabs and while flying.
  --fairly important.  reported by another user too.
  Affects 8.0.0
  Resolved in 8.0.1.

Issue I230 [70,nonbug,inactive]
  Noted by theo-20060928(#30)
  SIMION data recording has an option "describe ions", which when enabled
  (along with "header" being enabled) results in the something like
  the following being printed to the data recording output:

  Changes: Mass, Charge,   X,   Y,   Z,  KE,  Azm, Elv, Time of Birth
            NO     NO     NO   YES  NO   YES  NO   NO       NO

  It it not very clear to the user what this means, but it indicates
  whether each parameter differs in the particles flown.  For example,
  if you fly three ions starting at positions (x,y,z) of (3,5,2),
  (3,6,2), and (3,7,2) then the "YES" will display under "Y" and "NO"
  will display under "X" and "Z".  This works for ION, FLY, and FLY2
  files identically.

  Whether this feature is even that useful, I don't know, but there's
  little harm, it provided backward compatibility, and the header can
  be disabled in the data recording options.--DJM

  Affects 7.0 and 8.0.  Issue inactive.

Issue I231 [feature,partiallyresolved]
  Allow splitting data recording output into multiple files.

  The following feature requires SIMION version 8.1 beta (or
  8.0.5-TEST34-TEST or above running in early access mode - see Issue I421).

  Data recording output can now be split into different files, one per
  re-run.  In the Data Recording "Output File" field, include the
  variable substitution "$(ion_run)" anywhere in the output file name.
  Alternately, just click just click the "separate file per rerun"
  check box, which will add this variable automatically.

  For example,

    out-$(ion_run).txt

  If you do that in the "tune" example, which does 15 re-runs, it
  will output 15 files:

    out-1.txt, out-2.txt, ..., out-15.txt

  Beware that data recording is disabled if the "Rerun" checkbox
  is enabled upon the start of a Run (Issue I489).

  Suggested by
    ryanl-20090402-http://www.simion.com/discuss/viewtopic?p=2975
    dannyw-20090618-http://www.simion.com/discuss/viewtopic?p=3098

  Possible extension:
    Reported by theo-20060930
    Add data recording option to split output into multiple files,
    one per event.

  Added in 8.1 early access (8.0.5-TEST34).
  8.1.0-TEST11 - fix warning about early access

Issue I232 [8.0.x]
  Annotation screen could use more modernizing.
  Reported by theo-20061002

  Labeling tool overlaps window, which can interfere with labeling.
  (Note: pressing spacebar does move this labeling tool around, but
    this is not obvious.)
  More labeling options should be allowed to this screen.
  Screen should be modernized more.
  The frame option gives a box exactly around the 
    WYSWIG window. (Document more)
  To resolve in 8.0.x.
  --maybe...or use another program, e.g. MS PowerPoint or OpenOffice Draw.

Issue I233
  Annoyance on accidentally hitting .FLY2 or .FLY button after .ION is defined.
  Reported by theo-20061002
  The program should then not allow you to convert from .ion to .fly2 or 
  .fly. Presently if you have a .ion and accidentally hit the .fly2 or 
  .fly button you loose all your nice ion definitions and have to reload 
  the .ion file again.
  This is a bit bothersome. I'm not sure what the best solution is. 
  Possibly consider in 8.0.x.
  --not sure if will be resolved

Issue I234
  DUPLICATE--see I229 and I228.
  Reported by theo-20061003

Issue I235 [gui,largelyresolved]
  Report calculation time for flying ions at end of run.
  Reported by theo-20060922
  Maybe also write to data recording output file and display during run too.

  Resolved in 8.0.4-TEST12

Issue I236 [enhancement,70]
  When flying, the statusbar shows ion positions with only one significant
  figure.  Increase to at least 4 (e.g. z=0.10015).
  Reported by theo-20060921
  Affects 7.0 and 8.0.
  Resolve in 8.0.x or sooner.

Issue I238 [beta]
  When fly2ing many particles there is some deadtime while PC is  
  computing particles just before flying.
  Reported by theo-20061003
  Resolve in 8.0.x or sooner.

Issue I241 [fly2,medium,resolved]
  Add new FLY2 shapes:
    ball_distribution - random positions on sphere.
     or maybe "sphere_filled_distribution"
    sphere_distribution - random positions on sphere surface.
    cylinder_distribution - random positions in cylinder.
  This way I could tell right away what the difference
  between disc and circle are or what normal means 
  Resolved in 8.0.0.

Issue I243 [8.0.x,MED-HIGH]
  Preserve zoom/cuts, display options (e.g. in IOB file)
  and manipulate display programmatically.
  
  Noted by theo-20061003
  Restore zoom/cuts from file.
  3D zoom feature allows specification of zoom dimensions to be typed
  in.  It is useful for restoring the same area displayed but requires
  writing doesn all the numbers in the cuts.  More practically, the
  numbers could be saved and reloaded in a file (e.g. .zoom file).

  Also dennisc: Sometimes I like to see inside volumes using 3D 
  > cutaways.  These can be
  > tricky to set up.  It would be nice if these volume definitions were
  > saved/remembered (perhaps using the IOB files).

  2005-11-03 - dennisc
  When you select part of a 3D volume, say by selecting 2 or more
  intersecting volumes in XY then ZY view, then go to 3D Isometric
  view, you can actually display contours on the surfaces of these
  cuts.  This is very useful, but it takes time to set up the cuts.
  It would be useful to remember 3D cut out volumes & zoom levels,
  e.g. store in IOB definition, so when you come back to a project you
  can get to where you were. With larger 3D models takes time to set
  up what you want, this is all lost when you exit SIMION for the day.

  djm-allow saving of views

  --I've added this to the list for 8.0.  This is related to the
  intention of replacing the IOB file with a more extensible ascii
  format in 8.0, so storing views and cutaways inside the IOB file may
  be an option.

  --Note: the Display tab has a 3D Zoom section where you can type
    in the coordinates of the 3D zoom box.  Of course, this isn't
    the most convenient and doesn't handle 2D zooms.
    I'm thinking of supporting this when I create the more
    flexible IOB2 format.

  In 8.1 there is a new simion.experimental.display Lua
  object (currently experimental) to save/restore the View screen:

    simion.experimental.display:save'one'
    simion.experimental.display:load'one'

  noted by jonbatey--20090429--http://www.simion.com/discuss/viewtopic?p=3024

  Resolve in 8.1-in progress.

Issue I244 [fly2]
  Truncate filename displays less (...)
  Reported by theo-20060919.
   In fly panel the name of the file shows up next to the Load Save 
   buttons at the very left top of the screen. There is plenty of space 
   for a very long name to be shown. However, filler dots ?.. are used. I 
   think this option can start for much longer file names since there is 
   plenty of space for it at least the minimum size of the window if not 
   more.
  Resolve in 8.0.x

Issue I246 [display,feature]
  Allow splat markers to be different colors of one's choosing.
  Reported by theo 2006-09-19
  Not a big deal: have different colors for the splat marker
   (presently only red). This would be very helpful in looking
   at the imprints of different beams.
  If you can also somehow colormark the points 
  then you can easily tell which exit point is associated with which 
  entry point.
  If you could add the possibility to set the color of the traditionally 
  red marker to the same color as the trajectory color (or maybe have 
  that as default) is probably easy to change.
  This possibility is very useful when you are running different color 
  beams (beam1, beam2 etc. ) or trajectories and want to have a quick 
  idea which hit where. Now with the hit marker always being red it is 
  hard to see this effect fast and you need to look at you data 
  recording file explicitly.
  Sice this marker already has a color I would think that if it has been 
  defined wisely it is probably very easy to change.
  Being able to set also the size of this marker is probably not so important. 

  1. Is it possible to only show the points where the recording option
  is given and not show the entire trajectory?  This is advantageous
  when you are running many trajectories say over 1k to get an idea
  about distributions. However, the fact that you need to see the
  entire trajectory is a big problem since the PC freezes for a
  substantial time as it is trying to draw all these trajectories.

  Possibly resolve in 8.0.x.
  --This seemed fairly important to you.

Issue I247 [80,feature,partiallyresolved]
  Refine max iteration limit and default increased to 1E7, and other
    refine screen issues.
  Reported by theo-2006-10-07
  - On the refining screen, max iterations is fairly low.
    # Resolved: Increased max iterations to 1E7 and set 1E7 as the
                default in 80beta13n.
  - The need for max iterations is questioned since there
    is a quit button.
    # Partial resolution: Possibly true.  This is moved in
      80beta13n to make it less prominent at least.
  - Add a small window or a file printed out at the end of the
    refining giving a summary of the refining, i.e. all inputs,
    cpu actual duration of  
    calculation and number of iterations it actually required.
    Note: some of this is actually displayed on the status bar,
    but it does not persist long enough to be seen in 8.0beta.
    # Partial Resolution: Fixed statusbar display in 8.0beta13n
      See I249.
  - You can accidentally change refining parameters during refine.
    Possibly these should be locked by default (maybe allowing
    an unlock) unlock during refine.
    # Partial resolution: reverted to SIMION 7 behavior as
      noted on p.6-6 of the SIMION 7 manual in 80beta13n.
      Previously, the beta did not lock these fields during PA# refining.
  Affects 8.0beta more.

Issue I248 [beta,resolved]
  Lua stack overflow on syntax error in user program called by simion.import.
  Reported by theo-2006-10-07
  Affects 8.0beta
  Resolved in 80beta13n.

Issue I249 [80beta,resolved]
  Status bar cleared on hovering mouse over window with tooltip.
  Related to Issue I247
  Affects 8.0beta
  Resolved in 80beta13n.

Issue I250 [80beta,resolved]
  Particle definition and other filenames not display when loaded from IOB.
  Reported by theo-20061007
  When auto-loading ION, FLY, or FLY2 files with IOB, the file name
  does not display when viewing the particles definitions screen.
  Also ensure this for .rec, .con etc
  Affects 8.0beta
  Resolution: Resolved in 80beta13n.

Issue I251 [low,80,feature]
  Support Fano profile distribution.
  Noted by theo-20061009
  You might want to also reconsider the Fano profile:
    http://en.wikipedia.org/wiki/Fano_resonance
  as well as its convolution with a gaussian. Energy distributions of  
  electrons emitted from Auger processes are usually Lorentzian or  
  Fano-like. When they get detected by an analyser such as an HDA (this  
  usually has a near gaussian response function) you have to convolute  
  the Gaussian of the analyser with the emission distribution.
  Unfortunately the Fano profile is not strictly normalizable as you  
  noted sometime in the past. However that doesn't mean that it cannot  
  be useful. You just need to define one more parameter.
  DJM--might add in 8.0.x.
  --Not sure, e.g. the issue of normalization.  Note that
    FLY2 allows convolution of distributions, e.g. Gaussian
    and Lorenz.  There is even a non-documented interface
    for defining your own distributions.

Issue I252 [low-med,8.0.x,feature,easy]
  Add ion_max_number variable
  Noted by theo-20061006 and theo-20070424
  Provide ion_max_number user programming variable to retrieve the
  maximum number of particles flown.  This can be used to initiate
  actions once all ions have passed through some process as in the
  example given and eliminates the need to manually set this number in
  an adjustable variable.
  To do in 8.0.x

  new variable: ion_total_number

  Note: this is easy to simulate.  It's mostly just two lines of code:

    local nparticles
    function segment.initialize()
      nparticles = ion_number
    end

  After initialize completes, nparticles contains the last value of
  ion_number, which is the same as the total number of particles.

  Noted also by pypjl-20080226 - http://www.simion.com/discuss/viewtopic?p=2900

Issue I253 [low-med,enhancement,8.0.x,resolved]
  Make print button visible in View when Hide selected.
  Noted by theo-2006-10-10
  One more thing about the print button and the white spaces in eps
    figures.  Resizing the window doesn't always work especially on
    smaller screens since there is a minimum size beyond which you can't
    resize and also you are restricted by the physical size of the PC
    screen (sometimes). Also you can increase the available screen size
    if you hit the hide button but then you also hide the print button
    so it doesn't help you.  Why not move the print button to a
    prominent position like th lower fly button which can be used from
    all screens!?
  See also I273
  Resolved in 8.0beta14j-2006-11-02 - print button moved to display
    panel that is always visible.


Issue I254 [low,enhancement,8.0.x]
  Reported by timl-20061016
  Allow debug button to be used with Lua programs (not just PRG).
  Status: To consider in 8.0.x

Issue I255 [med-high,enhancement,partlyimplemented]
  Loading IOB/PA files from Windows explorer file associations
  or command-line.

  As of SIMION 8.0.4-TEST17, IOB and PA files can be loaded from
  Windows Explorer file associations or from the command line.
  Examples:

    simion.exe "c:\Program Files\SIMION-8.0\quad\quad.iob"

    simion.exe "c:\Program Files\SIMION-8.0\quad\quad.pa#"

  Requested by theo-20061016/20070423/20070426 and
  tbraun-20071008.

  Related (not implemented)
    Also, can you make .iob files to list the names of .pa files the
    include either when looking at the properties of the .iob file in
    explorer or when placing the mouse cursor on the file? This would be
    useful to remember which pas are included.
    I guess this is one reason why you also have the doc load which
    should have the same name as the iob file?
    -- Possibly.  For example, if you right click on a PDF file and
       select "Properties", it shows a tab with PDF-specific properties.

  Related (not implemented)
    Load FLY2, REC, and other files too.
  
  Largely implemented in 8.0.4-TEST17/18.

Issue I256 [low,enhancement,8.0.x]
  drag and drop files into simion to load them
  20061016.
  Status: REVIEW in 8.0.x.

Issue I257 [defect,80beta,resolved]
  Crash on Lua print() outside of segment when loading IOB.
  SIMION crashes if print() statement called in Lua program outside
    of segment when loading IOB from main screen.
  Reported by theo-20061016
  Cause: SIMION Logging Window is not intialized.
  Status: resolved in 8.0beta13r-20061016

Issue I258 [low-med,enhancement,80,resolved]
  Log window cleared after running print() commands in top-level of
  Lua program.

  Prior to 8.0.3-TEST7, at start of Fly'm, any Lua program is compiled
  and executed to place variables and segments in memory, the Log
  Window is cleared, and particles are flown.  This is a problem if
  any print() commands occur during that initial execution (e.g. print
  statements at the top-level of a Lua program, outside of segments),
  for their output is soon cleared.

  In 8.0.3-TEST7, the Log Window is cleared earlier (just after the
  Fly'm button is pressed) to avoid that problem.

  Example:

    simion.workbench_program()
    print("starting") -- this now displays in 8.0.3-TEST7
    function segment.initialize()
      print("initialize") -- this always displayed.
    end

  Reported by theo-20061018

  Resolved in 8.0.3-TEST7.

Issue I259 [low,enhancement,80]
  Voltages not display when hovering cursor in paused simulation.
  Reported by theo-20061018
  > When a simulation is paused, the electrode voltages
  > (possibly fast adjusted by a user program) do not show
  > when putting the cursor over them even though the
  > voltages do show after the fly, but then its too late
  > the voltages are set in the init_p_segment.
  --need to look into
  Status: REVIEW in 8.0.x

Issue I260 [low,enhancement,80]
  print() statement precision not tied to .REC selection (like PRG MESS)
  Reported by theo-20061018
  Tie print (or use some other function) precision to data
  recording precision selection.  Similar to how the PRG MESS
  command works.
  Status: REVIEW in 8.0.x

Issue I261 [low-med,enhancement,80,fly2]
  Allow specific order be imposed with multiple sequenced in FLY2 file.
  Reported by theo-20061019
  Allow an order to be imposed when using multiple sequences
  in a beam.
  Status: REVIEW in 8.0.x

Issue I262 [med-high,enhancement,80,lua,probablyresolved]
  Force Lua garbage collection at begin/end of Fly'm and
  on removing all PAs from RAM (e.g. closing file handles).

  Prior to 8.0.4-TEST19, if file is opened but never closed in Lua
  user program, it remains open until SIMION is restarted (preventing
  write/delete of file).  An opened file cannot be deleted in Windows.
  This is aleviated (though not entirely prevented) in 8.0.4-TEST19
  by forcing Lua garbage collections at the begin and end of Fly'ms
  and upon removing all PAs from RAM.  This will usually cause any
  open Lua files to close.

  As of 8.0.4-TEST19, a full Lua garbage collection is forced
  at the begin/end of the Fly'm and on removing all PAs from RAM.
  On removing all PAs from RAM, the Lua environment of any current
  program is cleared.
  
  Reported by theo-20061019

  Implemented in 8.0.4-TEST19.  (test case t4)

Issue I263 [med-high,enhancement,80_or_80x,commandline,resolved]
  Disable sounds by default in batch mode operation.
  Reported by jasons-20061026, also others.
  Status: REVIEW by 2006-11 if possible.
  Resolved in 80beta14c-20061028

Issue I264 [low-med,80x,resolved]
  20061026
  If particle trajectory is completely orthagonal to the screen,
  nothing displays.  This is due to the recent trajectory drawing
  optimization.

Issue I265 [low-med,80x]
  20061029
  The working directory is not listed anywhere obvious.
  This could be placed in the SIMION bar where it now displays
  (beta14c) and the most recent IOB file loaded (or somewhere
  else prominently).
  See also Issue I220 - Odd behavior if SIMION project files
                        are not in the same directory.
  Status: REVIEW by 2006-12

Issue I266 [beta,resolved]
  20061031
  Alt key ignored after right mouse down on window scroll button
    without focus in 3D view screens 
  To reproduce: ensure focus is not on the simgui (3D view) window.
    Hold right mouse down on window scroll button and then press Alt.
    Since the focus is not on the simgui window, the menu accelerators
    are activated instead.
  Resolved in 80beta14f-20051031. Affects earlier 80betas.

Issue I267 [beta,resolved]
  FLY2 coordinates relative to not preserving.
  20061102
  Reported by markm
  In Beta14g (and d-f), in the *define
  particle *window you can only change *Coordinates relative to* with the
  *.Ion* file not the .*FLY* or *.FLY2. *With the* *.*FLY* or
  *.FLY2 *file the coordinates revert back to the original coordinates chosen.
  Resolved in 80beta14h-20061102.

Issue I268 [80x]
  Add GUI file selection dialog box to "print to file" text box.
  Noted by theo-20061014
    42. when defining a file to print to it still uses  
    the old sim7 (non MSWindows) way. The windows way should
    be a small MSExplorer window showing the directory tree etc.

  Status: To resolve in 8.0.x.
  Affects 8.0betas.

Issue I269 [beta,resolved]
  3D view display stops updating after exiting data recording
  screen.
  Affects 80betas.
  Resolved in 8.0beta14i-2006-11-02

Issue I270 [beta,resolved]
  XY,ZY,XZ,3D ISO iso buttons were not disabled in PE view.
  Affects 80betas.
  Resolved in 80beta14i-2006-11-02

Issue I270.2 [gui,enhancement,convenience,minor,resolved]
  Automatically toggle out of PE View when clicking
  XY/ZY/XZ/3DIso/Load/Save buttons.

  As of 8.0.5-TEST12, when in PE View, clicking the various buttons
  (XY/ZY/XZ/3DIso/Load/Save) buttons automatically toggle out of PE
  view.  Previous versions required manually toggling out of PE view
  first before these buttons became enabled.  The change is for
  convenience only.

  Also in 8.0.5-TEST12, L- and L+ buttons in PAs tab can now be used in
  PE View.

  Resolved in 8.0.5-TEST12

Issue I271 [beta,resolved]
  In Modify, ctrl+right click to replace was ignored if focus
    not on 3D (simgui) window.
  Affects 80betas.
  Resolved in 80beta14i-2006-11-02

Issue I272 [beta,opengl,resolved]
  In Modify 3D (OpenGL) window crashes if closed when converting
    to polygons.
  Affects 80betas.
  Resolved in 80beta14i-2006-11-02

Issue I273 [beta,80x]
  EPS boundary rectangle is defined by unflexible window size.
  Reported by theo-200610
  On EPS export, you get what you see (WYSWIG). Therefore if you do
    not square the window or resize it according to the dimensions of
    your print object you can get extra blank spaces around which don't
    go away with editing the eps bounding box info. (Document more)
  I'm still not completely staisfied with the way we are presently 
    getting rid of the white spaces to the left and right of the eps 
    figures. I can't always "square" or resize appropriately the winow 
    area, especially in long in height setups. I think a more professional 
    solution should eventually be found.

  theo-2006-02-24
  2. The other point concerns the eps files produced by Simion. 
  It seems that
  while you can edit the bounding box in the eps header it 
  doesn't really change
  when you try to insert it into documents like latex. Somehow 
  the eps files
  produced by Simion seem to work a bit different.

  Moved from I232
  To resolved in 8.0.x.

Issue I274 [7,8,linux,resolved,report]
  2006-06-16 kenn reports that recent 7.1c beta runs OK under wine.
  Note: 8.0.0 has been validated under a recent version of Wine/Linux.

Issue I275 [8,enhancement,MED-HIGH,partlyresolved]
  Accessing PA instance filename from a user program.

  Some would prefer using meaningful names (rather than numbers) to
  refer to electrodes and PA instances.  For example, instead of

    function segment.init_p_values()
      if ion_instance == 2 then
        adj_elect[3] = _quad_entrance_voltage
      elseif ion_instance == 3 then
        adj_elect[3] = _quad_exit_voltage
        adj_elect[4] = _detector_voltage
      end
    end 
  
  it was proposed (by jasons-20061115 and
  http://www.simion.com/discuss/viewtopic?p=1560 ) to support
  something like this:

    -- proposed syntax
    function segment.init_p_values()
      if ion_instance_name == "quadin.pa0" then
        quadin.entrance = _quad_entrance_voltage
      elseif ion_instance_name == "quadout.pa0" then
        quadout.exit = _quad_exit_voltage
        quadout.detector = _detector_voltage
      end
    end

  As a workaround, you can instead do something like this:

    -- voltage numbers
    local ENTRANCE = 3
    local EXIT = 3
    local DETECTOR = 4

    -- instance numbers
    local ENTRANCE_PA = 2
    local EXIT_PA = 3

    function segment.init_p_values()
      if ion_instance == ENTRACE_PA then
        adj_elect[ENTRACE] = _quad_entrance_voltage
      elseif ion_instance == EXIT_PA then
        adj_elect[EXIT] = _quad_exit_voltage
        adj_elect[DETECTOR] = _detector_voltage
      end
    end 

  Also, as of 8.0.4-TEST4 (Issue 414), electrode numbers need not be
  sequential.  This could be useful here since it allows you to assign
  unique electrode numbers even if you have multiple PAs in a
  workbench (e.g. in the above ENTRANCE and EXIT had the same
  electrode number).

  In early access mode (Issue I421) as of 8.0.5-TEST18, the name of an
  PA instance can be accessed from the simion.wb object (see Issue
  I496 for many more details):

    simion.workbench_program()

    local instances = simion.wb.instances  -- List of PA instances

    function segment.other_actions()
      local pa = instances[ion_instance].pa
      print("instance PA", pa.filename)
    end

  A related issue was requested by jasons: to allow SIMION to output the
  name of the array element that each ion splatted into.

  Here's a workaround:

    local pa_names = {1 = "hello.pa", 2 = "world.pa"}

    function segment.other_actions()
      if ion_splat ~= 0 then
        print(ion_number, pa_names[ion_instance], ion_voltage)
      end
    end

  Another way might be to examine ion_voltage, but that would not
  always necessarily correspond to the electrode number (e.g. if two
  fast adjustable electrodes are adjusted to the same voltage, you
  can't really tell them apart).  Instead, you might want to query
  the voltage in the original PA# file at the current ion position
  (which is possible using the simion.pas interface in early access
  mode -- Issue I422).

  Plus, you might want to do this all from data recording (.REC)
  rather than writing a user program.
  ( http://www.simion.com/discuss/viewtopic?p=1560 )

Issue I276 [8beta,high,probablyresolved]
  Display double buffering broken under Linux/Wine.
  Wine apparently does not fully implement automatic
    invalidation boundary rectangle accumulation.
  Resolved in 8.0.0rc6-20061016 via workaround.

Issue I277 [8beta,largelyresolved]
  OpenGL window problems in Wine or CrossOver (wine bug 2398, OpenGL client window problems)

  OpenGL rendering is known to work in SIMION 8.0.6 (production release) under
  Wine 1.2.2 and CrossOver Mac 10.0.3 (and probably older versions too, but these
  have not all been tested).  Older versions have had some problems, and a history
  is provided below.

  == History ==

  The OpenGL (3D) window in SIMION Modify and SL Tools has been known to cause
  some problems in Wine and CrossOver on Linux and Mac OSX.  This is due to some
  limitations or bugs in Wine regarding use of OpenGL in child (not top level) windows.
  Details here: <http://bugs.winehq.org/show_bug.cgi?id=2398>.
  
  Since SIMION 8.0.0rc7-20061017, a workaround was added to detect if SIMION is
  running in Wine and if so it opens the OpenGL canvas in a frame window.
  This works in Linux Wine versions since 0.9.x and CrossOver Mac 6.2.0.
  It does not work properly in CrossOver Mac >6.2.0 through at least 10.0.3.
  
  In Wine 0.9.57 (?) in 2008, the Wine bug 2398 was fixed.
  
  In SIMION 8.0.6, the above workaround was removed due to the Wine bug fix.
  This was tested in Wine Linux 1.2.2.  However, the workaround could not
  be removed in CrossOver Mac 10.0.3.  Rather an improved workaround had to be
  added for CrossOver Mac.
  
  Note: In SIMION versions prior to 8.0.6, you likely will see the error
  "Failed to create OpenGL display list" in CrossOver Mac.  Upgrade to
  at least 8.0.6 to resolve this error.

Issue I278 [8.0.0]
  C/C++ programming API not yet functional.
  Noted by jasons-2006-09-06
  Scheduled for 8.0.x release by Jan 1. 2006.

Issue I279 [8.0.0,low-med]
  Built in emittance calculation support.
  Reported by justinc-2006-08-10

  Have you given any thought to integrating the emittance into the
  main program, such as having an 'emittance results' tab along the
  top of the workbench? We were discussing that here and we believe if
  that became a central feature of Simion the value would
  significantly increase - all of the accelerator groups as well as a
  significant part of the industry solely focus on minimizing
  emittance of a beam.

  I've worked at a few places dealing with ion/electron sources and
  they all try to minimize emittance as a primary goal. Instead of
  having an addon file have you given any thought to integrating this
  capability directly into Simion? Future work could allow for options
  when calculating emittance, along with perhaps a 3D graph window
  that shows an emittance plot, and an optional data export...

Issue I280 []
  IOB(2) files (and other files) should be ASCII text.
  IOB file should be ASCII text (not binary) for editability and
  better extensibility.  Unlike PA files, file size is not a significant factor.
  (also noted by dennisc-2005-11-03)

  dennisc: IOB definition to be as ASCII file that can be edited or
  created by the user or another program, e.g. may want to adjust
  instances or conditions for subsequent runs-dennisc [med-8.0]

  --In fact, everything should be an ASCII file (except maybe PA files
  due to space concerns, although our SL Toolkit does supporting
  converting PAs to/from ASCII files as well).  This will be a goal at
  least in 8.0 when I relook at the file formats.

  --note: FLY2 (implemented in 8.0) and REC files also.

  --There are plans for the upcoming IOB2 format to be
    ASCII text (actually Lua syntax).


Issue I281 [low-med]
  display electrodes in different colors.
  Reported by dennisc.

  In the normal SIMION graphics window plots, it may be useful to
  color the electrodes according to their potential, eg. *.pa1 *.pa2
  etc would appear different.  Same colors would also be used in "Fast
  Adjust" window to identify electrodes being adjusted.  dennisc

  Note: partially resolved as "3D" (opengl) view in modify shows electrodes
   in different colors.  Other views still do not though.

  --Note: this is partly resolved as the 3D (OpenGL) view
    in Modify does display electrodes in different colors.
    However, that is not the case for the other Modify or View views.

  Reported by jamesg-20100922 also.
  
  Note:
    There is not currently a direct option.  On the "3D" view in Modify,
     however, the electrodes are displayed in different colors, but this is only
     in this view, and the colors assignments cannot be changed.  On the
     other Modify views, you can use two colors (red and brown) via the
     "Find" function, as shown here:
     http://simion.com/screencast/find-replace  

Issue I282 [med,modify]
  Large PA not entirely displayed on screen in Modify.
  Reported by dennisc
    In modify, large pa cannot be entirely displayed on the
    screen without panning (can't fully zoom out)

  In modify screen it looks like you can only "Zoom Out" till every
  other green pixel represents an array element.  It would be nice to
  zoom out till you can see the whole picture.  This would be very
  useful when you want to select/copy or move an electrode that is
  larger than can be displayed on the screen in max zoom our mode.

  I've tried to get around the problem by using multiple monitors and
  extending the SIMION window accordingly, but this is cumbersome and
  doesn't work that well.

  Note: you can however see the entire PA by using the window button
   on the bottom right of the screen (hold right mouse button down).

  --Note: a partial solution is to right click on
    window button in lower-right of screen.

Issue I283 []
  Add surface scattering or secondary emission capabilities.
  Reported by dennisc.
  Some type of scattering option, e.g. ions hit electrode and generate
  electrons.
  - note: this needs some way to compute the surface normal, either 
    from the GEM file or PA file.

  --Possibly.  Non-orthogonal surfaces with jags are a
    complication.  However, one resolution might be to
    query the original GEM files (which don't have jags)
    during ion flight to obtain the surface normal vector info.
    Still, fields are distorted at jags.

  Note: "secondary" (secondary emission) example in 8.0.2.

Issue I284 [possiblyresolved]
  Adjust view window colors without affecting button/control colors.
  Reported by dennisc.

  My preference is to use a dark screen (white glare
  of screen hurts).  Adjusting color of screen etc also changes colors
  of the buttons and their labels.  Also the cross-hair cursor is always
  black so you can't see it!.

  It would be nice to have an option where the button colors are left
  alone, the drawing screen is dark or black and the cursor is white.

Issue I285 [low-med]
  Support direction cosines in addition to az/el in ION file definition.
  Reported by dennisc.

  e.g. on .ION file definition.
  Reported by dennisc.

  Under "Define Ions Individually" tab Creating *.ION files that can
  be loaded, using Azimuth, Elevation as per SIMION definition often
  requires a transformation from the coordinate system of the
  application that generates them in the first place.  An option to
  use direction cosines may be useful here.

  --Possibly.  Note that direction cosines (actually, unit
    direction vectors) are supported in the new FLY2 format.

Issue I286 [low,invalid?]
  Line widths too thin in printing.
  Reported by dennisc.
  I have received complaints from some of my colleagues
  (with mackintosh desktops) that when I've provided some o/p for
  their presentations, the trajectory lines are so thin, that they are
  visible on their screens, but barley visible when printed.  Are line
  thicknesses somewhere defined as the "minimum possible" on the
  output device?  This may not be a SIMION issue, just wondering if
  you've come across it before.

  --Note: the line widths for each color in the Printer Options should
  set this.  However, the behavior is somewhat weird (see p. G-10 of
  the SIMION 7 manual): when Color output is enabled the line width
  for the color white is the line width for lines of ALL colors.
  This seemed to work for me to make very thick trajectory lines.

Issue I287 [med,enhancement,moderately_important,resolved]
  Support built-in magnetic elements including wires of current.

  Magnetic calculations from wire currents (Biot-Savart calculations)
  were added in 8.0.3 via the simionx.MField Lua library.
  This allows the creation of a magnetic field PA from current
  elements, solenoids, hoops, etc.  The field is applied in an
  mfield_adjust user programming segment.

  See "Libraries API Reference" in "Help|Browse Documentation" for details.
  Also see the "solenoid" example.

  Reported by dennisc and martin
  Permeability and current loops may also be something to look at for 8.0.

  Implemented in 8.0.3

Issue I288 [low-med]
  CAD export of trajectories.
  Reported by dennisc.
  SL tools has an option to create stl files for viewing, it
  would be helpful to also O/P trajectories information.  Currently we
  create an ASCII file with sample trajectories.  Our designers can
  then read these into AUTOCAD dwgs somehow using a program they wrote
  in LISP I think.  For posters/presentations it would be useful to
  produce o/p that includes some trajectories.--dennis c

  --possible with STL degenerate triangles? (probably not really)

  --Agree, but I'm not sure what CAD format to use here.
    STL is not really suitable since STL models triangles
    not lines.  I tried using degenerate triangles (two sides
    that overlap) as lines, but that seems to make it invisible.
    There are a variety of CAD formats that will do this,
    but I'd want it to be widely supported (like STL).  Maybe
    3D DXF or something.

Issue I289 [low-med]
  Add time-of-death option.
  Reported by dennisc.
  in the Define Ions by Groups and Define Ions Individually, need a "Time
  of Death option"
  I've encountered more than once, situations where during an overnight run of
  hopefully 10^5 ions, the simulation has essentially hung because one of the
  ions is still flying in circles the next day, due to a magnetic field..

  djm-allow ion flight to be stopped after a set time.

  Possible: note: this can be done with an other_actions segment,
    setting ion_splat after ion_time_of_flight exceeds some value.

  Note: "Kill particle if time of flight reaches some maximum"
    cookbook exmple 
    on http://www.simion.com/info/User_Programming
    as requested by Todd on user group.
    http://www.simion.com/discuss/viewtopic?p=1220#1220

Issue I290 [low]
  Show contour plots when refining.
  Reported by dennisc.
  > 3) Just for fun, in real time watch a potential contour 
  > plot being updated
  > during the refining process.  Give us option of stopping when 
  > things seem to
  > have stopped chnging much.  (I think this may have been part 
  > of the original
  > Mac Simion program back in the late 1980's)
  [sim8 or later] - dennisc
  -  It does go with the SIMION philosophy of promoting intuition.

  --That would be nice.


Issue I291 [low]
  Support point and click definition of ion starting points.
  Reported by dennisc
  > 4) Launch trajectories by "point and click" at location 
  > where you want them
  > to be born.  e.g. this may be of use if one wants to see if secondary
  > electrons created at various surfaces inside a spectrometer 
  > make it to the
  > detector.  These secondaries are created by ion impact or by 
  >  UV bouncing
  > around inside a spectrometer, creating photo electrons.  
  > Light traps are
  > often a big part pf designing charged particle instruments 
  > for space flight
  > use.

  -- I do want to make the definition of ions more visual (e.g. allow
     ions to be defined visually on the View screen similar to how PA
     instances are positioned on the view screen).

  --That would be nice.


Issue I292 [modify,low-med]
  make exact cursor positioning easier in Modify.
  Reported by dennisc

  In Modify screen (which I use to touch up things 
  elements which would be
  tedious to do in the GEM file etc), one moves the cursor with 
  the mouse,
  then hits "R" to replace "non electrode" with "electrode" 
  points. It would
  be good to be able to use the up/down r/l arrow keys to 
  precisely move the
  cursor 1 grid point at a time etc.

  - I've marked this for possibly 7.1.  The up/down and r/l keys are
    currently used to scroll through the layers (Z plane on XY view),
    but cursor movement might be more appropriate for these keys.  A
    bit related to this is that the user should be able to type in a
    coordinate directly (numeric (x,y) value).

  -- Possibly.  Including allowing coords to be typed in.

Issue I293 [easy,largelyunresolved]
  More fully implement hot keys (especially in GEM file replacement).
  Reported by dennisc

  Note by dennisc:
    Throughout SIMION there is often the option of using "HOT" keys
    rather than Mouse clicks (letters on button underlined in red).
    There are a few places where "HOT" keys are not implemented, and
    would be much appreciated.  (I find it much faster to kit keys then
    move mouse to button and and click) In the particular on the "Edit
    Geometry" page, "Erase Entire PA" and "Insert into PA" buttons are
    lacking "Hot" keys.

  -- SIMION omits some hot keys to prevent them for being pressed
     accidentally (e.g. "Remove All Pas From RAM" lacks a hot key),
     but then again these often have confirmation dialog boxes to also
     the user to back out of an accidental selection.

  Note: 8.0.2 has a new "Update PA" button in the GEM file screen
    which has the same effect as hitting erase and then insert
    buttons.

Issue I294 [low,easy]
  In View status panel, add line length and angle.
  Reported by dennisc-2005-09-21
  in the normal view mode XY ZY or XZ view, as you move the 
  cursor around, the
  X,Y position is displayed
  in the green "View Status Infromation Panel"
  I use this and the "Relative to point in volume" quite often to check
  distances between elements etc.
  - following would be useful in addition to the 2d coords,
  a) the actual lenght of line (distance to origin, relative or 
  absolute) and
  b) the angle this line makes to the horizontal axis.
  -- That should be easy.
  -- Note: length is displayed at cursor when Where is enabled.

  -- Note: at least length is displayed at
     cursor when Where is enabled.

Issue I295 [gem]
  GEM extension for circle arc segment.  
  Reported by dennisc-2005-09-21
Issue I296 [gem,mostlyresolved]
  Support variable substitution and macros in GEM files

  As of SIMION 8.0.4-TEST13, the GEM file loader includes a
  preprocessor that performs variable substitution and evaluates Lua
  code.

  A new example GEM file (examples\geometry\macro.lua) illustrates
  the use of this new feature:

    ; Example SIMION GEM file using preprocessing to expand Lua variables
    ; and macros.
    ; Preprocessing is a new feature SIMION 8.0.4.
    ;
    ; Lines starting with '#' or text inside $() are interpreted as Lua
    ; code and evaluated.  If $() contains an expression (rather than a
    ; statement), the result is outputted.  All other text is outputted
    ; verbatim.
    
    ; These variables are intended to be adjusted by the user.
    ; Note: both # and $ syntax are shown for demonstration.
    # local ro = 45     -- outer radius, gu
    # local ri = 40     -- inner radius, gi
    $(local nshells = 4) ; number of shells
    
    ; Now do some calculations on those variables.  Note: math.ceil(x) is
    ; the ceiling function: it returns the integer closest to but no
    ; greater than x.
    # local hw = math.ceil(ro * 1.1) -- half width, gu
    # local nx = hw * 2 + 1          -- num array points in x
    
    ; Define array size.
    pa_define($(nx),$(nx),$(nx), planar, non-mirrored)
    
    ; Declare a function to be used later.
    ; This returns the voltage for electrode number n.
    $( local function volts(n)
         return n^2 * 10 + n + 1
       end )
    
    ; This locate centers the shells in the array.
    locate($(hw),$(hw),$(hw), 1, 0,0,0) {
    ; Now define a loop that creates each shell.
    # for n=1,nshells do
    #   local rop = ro * n / nshells
    #   local rip = ri * n / nshells
        electrode($(volts(n))) {  ; example calling a function
          fill {
            within{sphere(0,0,0, $(rop))}
            notin {sphere(0,0,0, $(rip - 1))}
          }
        }
    # end
    }
    
    ; Note: the following two lines are equivalent:
    fill { within { box3d(0,0,0, $(nx),0,$(nx)) }}
    # _put("fill { within { box3d(0,0,0, " .. nx .. ",0," .. nx .. ") }}")
    
    ; Print output to the log window.  This can be
    ; useful for debugging.
    # print("Hello from GEM file. nx=" .. nx)

  When SIMION loads a GEM file containing macros (e.g. macro.gem), it
  processes those macros, writes the result to temporary file
  (e.g. macro.processed.gem), and loads that temporary file.

  Reported by dennisc 2005-09-21 and others.

  Original user comments:
    For Ver 8.0 maybe Following would be nice but not essential, I
    usually create GEM files using a high level language, this allows
    me to use or specify constants, gaps between elements etc at the
    beginning of the program, If SIMION could deal with simple
    arithmetic expressions of the form R1 = R2*4 + D then this High
    Level Step would not be necessary as often
  
    e.g. at top of GEM file specify constansts
      X1 = 0
      Y1 = 5
      R1 = 10.0
      R2 = R1 + D
  
    later on in GEM file one could specify electrode..
      CIRCLE(X1, Y1, R1, R2)
  
    changes could then be made without having to edit the whole GEM
    file 8.0?

      Reply: A number of others have requested this feature of course,
      and I have needed it too.  The current solution, which a number
      of users do use, is to pre-process the GEM files with another
      language (e.g. Perl/Python, C, C-preprocessor, or some
      templating language).  I've even generated a library for doing
      this in LISP (I never released that code, and I'm not sure how
      many people would really like to use LISP rather than more
      directly in Perl/Python.)  These methods work and are very
      flexible.  Building the functionality directly into the GEM
      files will take some work to do it right, and the result still
      might not be flexible enough for everyone.  However, it does
      seem like basic functionality for this should be there, and I
      will keep this in mind as other programatic features in SIMION
      (e.g. PRG code) are reworked.  Perhaps as a compromise, I could
      allow users to plug-in custom preprocessors which will get
      invoked transparently as the GEM file is read.  In any case,
      this issue should be addressed better at some time in some way
      somwewhere.

    Finally for now, how about a new electrode or line type called
    "GRID" input parameter would include lines per inch or mm to
    simulate actual wires used to make grids .... just thinking

      Reply: (low priority) -Not sure.  There's various ways to define
      grids and more-or-less accurate ways of doing it.  If one wants
      to model a curved grid (like in your example) with the real
      field distortions caused by the wires, that's a bit involved.
      There are ways to do it with ion jumping tricks in PRG code, but
      it would take some work to set up--but it might be easier to set
      up after some improvements to SIMION's user programming
      freatures.  I'll add this to the bottom of the list, but it's
      something to keep in mind.  -- see dennisc email about
      grids04b.gem and edge_fill

    theo-2005-11-16 [[Another suggestion that would be helpful would
    be in the geometry files.  It would be nice if we could also use
    variable names of our own and then enter the distances as a
    variable.  A gem file made like that could then be readily
    changed.

    For example I am designing a hemispherical analyzer. The two radii
    R1 and R2 could be used as variables which could be initialized in
    the begining of the gem file. Then in the future if you would want
    to make a different analyzer all you would have to do is change
    the initial values and if you had written the gem file properly
    everything else would take of itself.]]

  Note: a planned GEM2 might expand these capabilities even further.

  Largely resolved in 8.0.4-TEST13.


Issue I297 [low-med]
  Allow max ions to be changed after loading IOB (or save in IOB file)
  Reported by dennisc-2005-11-03

  Remember the allocation when saving IOB
  (Reason for this is that after loading PA's, Fast adj. 
  voltages etc. then
  load your *.ION file - "not enough room" can be annoying to 
  realize you
  forgot to increase this limit and you have to unload 
  everything and start
  again.)

  I've made a note to look into this.  Off-hand, I don't know why
  SIMION doesn't allow you to change this _after_ PAs are loaded, but
  somthing can likely be done about it.

  --Need to look into.  Sounds reasonable.

Issue I298 [low-med]
  Remember and display recently opened files.
  Reported by dennisc-2005-11-03

  As in other "Windows applications" remember recently 
  opened files or
  maybe the last used directory.

  I've marked this on the TO-DO.  SIMION 7.1 has a "File" menu, and
  this would likely be placed there as on other applications.

  --Should not be difficult.

Issue I299 [enhancement,high,resolved]
  New "--noprompt" command-line option to disable prompting in batch mode.

  Description:
    On some occasions, SIMION will prompt the user during the
    simulation (e.g. the prompt "x out of y ions are inside
    electrodes, do you want to continue?"), causing the simulation to
    pause pending user input.  This can be problematic in batch mode,
    especially when the default prompt response can be given.

      ! PROMPT:
      Warning:
      10 of 20 particles created in electrodes, beyond volume,
      or with parameters out of range.
      Fly remaining particles anyway? (Y=YES,N=NO) [Y]
      >

    Therefore, a new --noprompt command-line option has been added
    as shown:

      simion --nogui --noprompt fly test.iob

    --noprompt requires that --nogui be specified as well.  When
    --noprompt is specified, the default option (shown in square
    brackets, [Y]) is selected without waiting for the user.

    Some previous reports by users are given below.

  Reported by dennisc - 2005-11-03
    When loading e.g. 500,000 trajectories created in another
    application, sometimes I create 1 or 2 that are "Created In
    Electrodes or Beyond Volume, Fly Remaining Ions Anyway" Would be
    nice to know which are the offending trajectories, even more to
    have an automatic option to ignore this warning and just go ahead.
    (if running in batch mode, don't want user interaction here.
    Previous versions of SIMION did not have this warning!

  Reported by danr-2006-12-21.
    If running a batch job, SIMION will pause and bring up a dialog 
    box stating "xxx out of yyy ions are inside electrodes, do you want 
    to continue?", which of course defeats the ability to run a batch
    job unattended.

  Note by davidm-2006-12-21: a user program can set ion_splat to 0 to
    prevent ion splatting when passing through electrodes, but this DOES
    NOT work if ions originate in electrodes.  An alternate workaround
    for that is to convert the relevant electrode points to
    non-electrode points in the *refined* array (but be sure not to
    re-refine).  This can be done using the Find/Replace function in
    Modify with the "Change only type" option enabled.  Now, the fields
    are identical (since you did not re-refine), but the ions don't
    splat in that volume (since there are only non-electrodes).

  Update 8.0.5-TEST27:
    Before user is first prompted in batch mode, display
    message that "--noprompt" command-line option can be used.
    Also add new "!" option to disable further prompts at
    runtime [r27]  Updates Issue I299.

  Affects 8.0.0. Resolved in 8.0.1.

Issue I300 []
  Allow print of simulation info on plots.
  Reported by dennisc
  
  When producing print o/p it would also very useful to have option to
  include this information on the plot, e.g. have a button at the top
  of the screen next to "label", that would include insert a "table of
  labels" with information relative to that plot e.g.
  
  Date, Time,
  IOB name
  PA settings
  Traj. File Name,
  X, Y, X Cut information
  Maybe other information too.
  (Drag away what you don't want)

  Noted for when I relook at the printing function.

  --Not certain, though maybe allow it to be copy/pasted into plot.

Issue I301 [low-med]
  Make Auto function work with Gradient contour type.
  Reported by dennisc-2005-11-03
  
  11) I am interested in gradients, especially when one is looking for
  High Electric fields.  (any fields over say 2kV/mm could cause e-
  emission depending on materials, background gas pressure etc, so
  this is useful.  In "Contur" page options, if you select "Gradients"
  then choose "Auto" the Gradients button reverts to "Potentials" and
  draws them instead.  Would be handy for "Auto" option to work with
  gradients. (e-fields and Gauss)

  --Yes, I've noticed that.  Noted.
Issue I302 [low-med]
  Background interferes with visibility of Where coordinate display.
  Reported by dennisc-2005-11-18

  when looking at a 2D view, and you have "Where" button 
  depressed, displays
  2D coords of cursor.
  This is very useful, ... there are times when the backgnd electrodes
  interfere with the visibility of this text, some method to 
  easily make the
  text stand out would be nice
  (if electrode is solid then text color is inverted so in that 
  case not a
  problem)
  --Should be resolved (not with XOR drawing)

Issue I303 [low-med]
  Retain trajectories fill disk and abort simulation.
  Reported by dennisc-2005-11-18
  not a biggy, but if you accidentaly (in my case) run lots of 
  trajectories
  with
  "Retain Ion Trajectory" button pressed, then you it will soon pause,
  and get the message "disk full" etc....
  actually the disk was not full, but rather the traj tmp file 
  was 4 GB size,
  probably 4GB is the max file that SIMION can create, even on 
  XP NTFS system.

  Noted as an issue to eventually look into.  I've seen customers run
  into this problem from time-to-time.  Ideally, this should probably
  just discard the trajetory data and pop up a warning message, and
  >4GB file might be allowed for under NTFS.

  --Probably should warn but not abort simulation)

Issue I304 [manual,resolved]
  Improve flow chart describing user programming code.

  This user programming flow chart in the SIMION manual (Figure L.4
  (SIMION 8.0) or Figure I-1 (SIMION 7.0)) has been improved to be more
  precise and clear:

    http://www.simion.com/docs/fig-prg-flow.pdf

    "Flow Diagram of SIMION Trajectory Calculations with Locations of
     User Program Segment Calls"

  Reported by theo-2005-11-22
  Resolved in 8.0 manual, Rev-4.

Issue I305 [low-med]
  Allow pause/resume of Fly'm or start FLY at given ion number.
  Reported by theo-2006-02-24
  
  1. Recently I was running an .ion file with 100,000 
  particles. I had to stop at
  some point before finishing but then wanted to continue from 
  where I left off.
  Maybe it would be possible to just set the ion number at the 
  one you want to
  continue from and not as now where the calculation starts 
  from the begining of
  the ion file each time. I think this should not be that 
  difficult to implement
  and it is useful when ion files are too large and therefore 
  very cumbersome to
  edit with ascii editors.
  - todo, med priority, but somewhat easy
  - possible function similar to Cut to cut a range of ions
    (ion numbers would be wrong then)
  - possibly add ion starting number as an option
  - solutions:
    - Add a function similar to "Cut" to delete an entire range of ions
      (e.g. 1 - 90,000).
    - Add ion starting and ending numbers (e.g. 90,000 - 100,000).
  Those might interfere with user programs that depend on the first ion being run.

  Note: there was also a similar suggesting in pausing/restarting
  .PA# refining.
  --Note: could interfere with user programs if not careful,
      e.g. if a user program tests for ion_number == 1.

Issue I306 [manual]
  In manual add picture explaining within/notin/etc.
  Reported by theo-2006-03-10

  in manual, I have only looked at note2.pdf so far and I really like
  your final figure explaining the notin and how it works. I think
  this should definitely be put in the new SIMION manual and also
  similar figures for within and the other two within_inside_or_on
  etc.  A picture is worth a thousand words!  ..  This should be
  clarified for all the within/notin functions with appropriate
  figures in the manual.

  --note: I missed this in the first printing of the 8.0.0 manual.

Issue I307 [med-high]
  If PA files not refined when IOB loaded, prompt to refine them.

Issue I308
  in sim 7 manual, discussion on repulsion methods (appendix e
  is not fully clear).  also, there's a typo: missing squared
  on r_avgmin's.
  Resolved in 8.0 manual?

Issue I309 [high,largelyresolved]
  Add simplex optimizer.

  Recommended by theo-20070423 and others:
    Use four element lens example with two free voltages.

  Added in 8.0.3 - see "hda" example.
  See also "lens_properties" example in 8.0.4.

  Implemented in 8.0.3.

Issue I310
  Improved memo format.
  djm20060082 enhance memo facility - ASCII format with arbitrary
  length memos and file names.
  2005-11-22-djm
    Possibly have SIMION automatically generate a file "FILES.txt",
    in each SIMION directory, describing what all the files are.

Issue I311 [enhancement,resolved]
  djm20060811 - add SC/HDA example (theo)
  Resolved in 8.0.3.

Issue I312
  Move FILES.GUI folder (default is c:\FILES.GUI in 7.0 and 8.0.0)

Issue I313 [modify,pa,enhancement,resolved]
  Add Crop function in Modify.

  As of 8.0.4-TEST5, there is a new "Crop" function on the Modify
  screen.  This can be used to "crop" a PA (i.e. discard all but the
  selected volume).  This works on both unrefined and refined
  potential arrays (including refined .PA0 files).  If you crop a .PA0
  file, SIMION asks whether you also want it to crop the corresponding
  electrode solution files (.PA_, .PA1, .PA2, ...) accordingly.

  Cropping refined PAs is particularly useful in that you can at times
  calculate the fields correctly using a full array and then crop the
  volume where ions fly and use only that for ion flying.  This
  reduces memory usage during ion flying. This works quite well in the
  SIMION 8.0.3 "hda" example, in which memory usage at Fly'm can be
  reduced by roughly 10x.

  A cropped PA0 file might not be readable in SIMION versions prior to
  8.0.4-TEST5 due to a small relaxation of restrictions in the PA0 format
  concerning electrodes that no longer exist in the cropped PA0.

  Reported by eloy-2005-12-01
    in modify, allow function to crop arbitrary box or rectangle marked.
    http://www.simion.com/discuss/viewtopic?p=744
  Also mentioned in http://www.simion.com/discuss/viewtopic?p=1703 .

  Implemented in 8.0.4-TEST5.

Issue I314 [enhancement,resolved]
  Support tab character delimiter in data recording.

  Useful e.g. for Excel.

  Reported by bernheim-2006-03-16
  http://www.simion.com/discuss/viewtopic?p=895#895

  Workaround for 8.0.x versions prior to 8.0.4-TEST16: There's is a
    (non-obvious) way to insert the tab character here. In
    Notepad create a tab character. Select the tab chatacter and copy it
    to the clipboard. Now in SIMION's Data Recording "Delimeter" text
    box, press CTRL+V to paste the tab character in the box.

  Implemented in 8.0.4-TEST16

Issue I315
  Display electric fields components when hovering mouse in View.
  Reported by jas-2006-03-28
  In view function we can see the total electric field value at any point.
  Can we also get the individual electric field components in x, y or
  z direction and the direction of electric field?
    http://www.simion.com/discuss/viewtopic?p=913#913 

Issue I316 [enhancement]
  Export field data along a shape (e.g. line or on 2D/3D grid).

  There are some ways to achieve this currently:

  (1) Fly a neutral particle (which isn't affected by fields) and enable
    data recording on every time step.

  (2) Export potential field data via a user program.
    See the simion.pas Lua interface (in SIMION) in Issue I422 -
    "Manipulating PAs from Lua inside SIMION" or use SL Libraries
    (outside of SIMION).  For example, run the following Lua
    code ("Run Lua Program" button on main screen):

    function line_potentials(pa, p1, p2, N)
      local data = {}
      for i=1,N do
        local f = (i-1)/(N-1)
        local x = p1[1] * (1-f) + p2[1] * f
        local y = p1[2] * (1-f) + p2[2] * f
        local z = p1[3] * (1-f) + p2[3] * f
        local V = pa:potential_vc(x,y,z)
        data[#data+1] = {x,y,z, V}
      end
      return data
    end
    function print_rows(data, file)
      file = file or io.stdout
      for _,row in ipairs(data) do
        local t = {unpack(row)}
        for i,v in ipairs(t) do t[i] = tostring(v) end
        file:write(table.concat(t, ',') .. "\n")
      end
    end

    Then from any screen you can type something like the following
    in the command bar:

      print_rows(line_potentials(simion.pas[1], {0,0,0}, {50,0,0},11))

    That displays 11 potentials along the line from point {0,0,0} to
    point {50,0,0} from the first potential array (PA # 1).  The
    coordinates are in grid units relative the to potential array.

  (3) SL Tools has a function for exporting a PA to text format.
      This can be suitable for exporting a 2D or 3D grid of points
      containing the entire PA.

  TODO:
    - A graphical interface for doing this might be added to SIMION.
    - Allow a solution like #2 but coordinates in terms of workbench
      coordinates.

  Recommended by
    djm2005-11-17 - make it easy to export field data, e.g. along a line
      or grid
    mikhaily-20080315 - save a potential distribution along a
      line which is not associated with an ion trajectory.

Issue I317 [topic]
  Autoloading/saving issues.

  The following issues are related to autoloading/autosaving
  files with workbench (IOB) files:

  Sub-issues:
  Issue I317.1 - Don't prompt for auto-loading files on IOB load.  
  Issue I317.2 - Save workbench Lua program when saving IOB under new name.
  Issue I317.3 - Auto-save/load contour files (.con) with workbench (.iob)
                 file.
  Issue I317.4 - Single dialog box now presented for selecting autoload
                 files to save with IOB file.

Issue I317.1 [enhancement,resolved]
  Don't prompt for auto-loading files on IOB load.

  In 7.0, SIMION prompts with
  [[
   Auto-Load Matching .ION File? [YES|NO]
   Auto-Load Matching .FLY File? [YES|NO]
   Auto-Load Matching .REC File? [YES|NO]
  ]]
  Note: .FLY file not loaded if .ION file exists.
  [[
   Retain IOB's Current Ion by Ion Definitions
   in an Auto-Loading .ION File? [YES|NO]

   Retain IOB's Current Data Recording Definitions
   in an Auto-Loading .REC File? [YES|NO]
  ]]
  This was removed in 8.0.0.  8.0.0 autoloads by default.

  Parent issue: Issue I317

Issue I317.2 [enhancement,iobautoload,lua,resolved]
  Save workbench Lua program when saving IOB under new name.

  As of 8.0.5-TEST9, when you save a workbench (.iob) file under a new
  name, the user is presented with an option to save (copy) any
  workbench .lua program associated with the old workbench with the
  new workbench.  This is similar to SIMION's behavior for
  .ion/.fly2/.fly, .rec, and .kept_traj files.

  Recommended by mikhaily-20080229.
    When using Lua user programing, the .lua file is associated with
    the .iob file and is loaded when the .iob file with the same name
    is loaded. However, when saving an .iob file, SIMION saves the
    associated .fly file BUT NOT the .lua file.

  Implemented in 8.0.5-TEST9

  Parent issue: Issue I317

Issue I317.3 [enhancement,iobautoload,resolved]
  Auto-save/load contour files (.con) with workbench (.iob) file.

  At of 8.0.5-TEST9, on saving a workbench with contour definitions,
  the user is prompted to save (retain) a contour (.con) file with the
  same basename as the IOB.  This .con file is now autoloaded when the
  IOB file is loaded.

  Implemented in 8.0.5-TEST9

Issue I317.4 [enhancement,gui,iobautoload,resolved]
  Single dialog box now presented for selecting autoload files to save with
  IOB file.

  This eliminates the multiple dialog box prompts with questions such as
  "Retain IOB's Current Ion Family Definitions in an Auto-Loading .FLY2 File?"
  and combines them into one.

  As of 8.0.5-TEST9, when saving an IOB file, the user is now presented with
  only a single dialog box for selecting which associated (autoloading)
  files to save (e.g. .ion/.fly/.fly2/.rec/.con/.lua/.kept_traj/.pa/.pa0).

  Implemented in 8.0.5-TEST9

  Parent issue: Issue I317

Issue I318
  Show percent complete during fly, e.g. x of y ions runs.
  djm-2005-12-22

Issue I319 [resolved]
  SIMION used E not V for voltage.
  In data recording, SIMION 7.0 uses E for voltage and dE/dx
   for negative field.
  - possibly change E --> V (laurent--2006-01-30)
  - possibly change dE/dx to -dV/dx (more major change).
    see also ion_dvoltsx_mm.
  Also noted by theo.
  Resolved prior to 8.0.0.

Issue I320 [MED-HIGH]
  Add OpenGL 3D view to View function.

Issue I321 [low-med,manual]
  PE View and sim_retain_changed_potentials behavior.
  Reported by markm
  In manual, concerning sim_retain_changed_potentials, note that if
  you change potentials via fast_adjust segment and then set
  sim_update_pe_surface, you need to be in PE View for this to work.
  Fix in manual (or maybe the software)
  See e-mail 2006-11-21.

Issue I322 [high,resolved]
  Data recording crossing plane window sizing problem.
  Reported by mark-20061121.
  Description:
    In Data Recording, if you click 'Crossing Plane X=?' (or Y or Z),
    the box appears but you cannot enter a value into it. A workaround
    is to resize the window to force a screen re-layout.
  Affects 8.0.0. Resolved in 8.0.1.

Issue I323
  Add ion_ke reserved variable?
  2006-11-24
  See user group posting on this.

Issue I324
  Replace dofile with function that spits out a warning/error message
  that you should use simion.import instead? or redefine dofile as
  simion.import?
  Note report by jasons-20061127. 

Issue I325
  Ignore case in license key during install.
  2006-11-28.

Issue I326 [high,resolved]
  Crash if initial particle params out of range.
  Reported by: 2006-11-28-davidm
  If particle parameters (e.g. TOF) start out of range,
    SIMION may crash at the start of the fly'm.
  Problem tends to affects release (not debug) versions of SIMION.
  Problem does not occur if particles terminate at creation due to
    splatting electrodes (in which case ion_splat is set later).
  Problem does not occur if there is no user program or the user program
    is disabled.
  The reason is that the parameter out of range condition (from Issue I239)
    sets splat too early, resulting in locate_ion skipping
    its main body of code and not properly initializing the particle
    for when the user program gets a chance to execute.  The program
    then accesses uninitialized data.
  This is related to the changes made in Issue I239.
  Resolution: In 8.0.1, this is resolved.  Particularly, if parameters
    for a particle are out of range, the parameters are forced within
    range, ion_splat is set to -4 (ion killed), and the initialize
    segment (if any) is run.  The ion then is done with (attempts by
    the user to reset ion_splat are ignored as per SIMION 7 behavior).
  Affects: 8.0.0 (not 7)
  Resolved in 8.0.1

Issue I327 []
  2006-11-28-davidm
  Makes Particle Definition and Data Recording screens more accessible
  without needing to switch in and out of the Particles tabs.

Issue I328 []
  2006-11-28-davidm
  Make more convenient way to edit (via text editor) Lua or other file
  associated with current workbench in View.  Possibly via Browse
  button or button for Lua program.

Issue I329 [possiblynonissue,userprogramming]
  Writting to ion_splat inside initialize segment has no effect.
  2006-11-28-davidm
  If a particle originates in an electrode, the initialize segment
  is still called, but ion_splat is initialized to -1 (electrode hit).
  If initialize resets ion_splat to zero, this change has no effect:
  the particle will still immediately terminate afterward.  This behavior
  is unlike that of clearing ion_splat in an other_actions segment,
  which can even be used to cause a particle to fly through solid
  electrodes.  However, if an initialize segment moves a particle
  so that it is no longer inside an electrode, then the particle
  will continue flying.  This behavior exists in SIMION 7 and is
  currently preserved in 8.  Still, I think this behavior might
  not be the desired one.  Note that the SIMION 7 manual does
  indicate that ion_splat is writable in both initialize and 
  other_actions segments, though it appears that writing to it in
  initialize has no effect.
  Affects 7, 8.0.0, and above.
  See also I326 and I299.

Issue I330 []
  Better support for importing vector magnetic field arrays in SIMION.
  Possible also add example user programs.
  20061205 In regards to dank email.

Issue I331 [7,8,critical,resolved]
  Acceleration error in overlap of electrostatic PA with magnetic
    PA of higher grid density.
  Reported by simonp-20061206.
  Description:
    If an electrostatic PA overlaps a magnetic PA and the magnetic PA
    has a higher grid density, then the electrostatic accelerations in
    the overlap region are incorrectly multiplied by the ratio of the
    two grid densities.  This is a fairly serious error that
    surprisingly was not reported earlier, though in practice the
    necessary conditions might arrise in only small number of
    simulations assuming magnetic fields are not normally simulated to
    higher accuracy than electrostatic ones in SIMION.  This error was
    first detected when Data Recording reported a KE_error value that
    was enormous, indicating energy was obviously not being conserved.
  Affects: 7.0.0-7.0.3 and 8.0.0.
  Resolved in 7.0.4 and 8.0.1.

Issue I332 [8.0]
  The "fly" command-line command will not work if invoked
  outside the project directory.
  Reported by danr-20061213

  Example: C:\Program Files\SIMION-8.0>simion.exe
              --nogui fly examples\quad\quad.iob
  Fails.

  Affects: 8.0.0
  Resolve shortly in 8.0.x.

Issue I333 [8.0,high,resolved]
  Zoom was reset after fast adjust.
  Reported by matthiase-20061220
  Description:
    Ater each "fast adjust" the zoom is reset.
    This is especially bothering for simulations where you look 
    only at rays close to the axis, which is typical for most e-beam or 
    ion-beam applications.
  Reason: fast adjust screen caused simgui window to resize, resulting
    in zoom resetting.
  Affects: 8.0.0
  Resolved in 8.0.1.

Issue I334 [7.0,low]
  Rare mouse problems when using SIMION 7.0 under special terminal
  software, particularly in the Modify screen.

  Note: SIMION 7.0 does some tricky things with the mouse that
  in rare cases cause some mouse behavior issues as reported below.
  This special mouse control code was largely removed in SIMION 8.0.

  Report from lovemyvisor-2003-11-29 in user group message:
    SIMION works great in Linux using Wine. Since SIMION uses only a 
    minimal subset of Windows system calls, Wine seems to provide 
    everything needed to run. I discovered this after trying to 
    run it using VMware, which provides a completely virtualized 
    environment for running one operating system within another. 
    Unfortunately, SIMION seems to trigger mouse events in a 
    non-standard way which VMware does not handle well and makes 
    it very difficult to modify PAs. If anyone would like details 
    of how I got Simion/Wine working, just ask.

  Report from johnd-2004-09-17
    Description of problem: Odd, sporadic mouse behavior, especially
    in making a box selecting using the Modify function, with box
    selection jumping and sluggish mouse movement.  This was noticed
    with at least two different types of mice, on two systems, Win2000
    and WinXP, one within VirtualPC on a Mac.

    Reply: The only other mouse problem reported within the last year
    was in running SIMION under Linux via VMWare (which might be
    similar to running SIMION on a Mac via VirtualPC), with particular
    problems reported in modifying PAs.  On testing this as the time,
    I detemined that mouse movement was improved, but not completely
    fixed, by enabling the "XORed Rectangle Fix" option in SIMION.  To
    enable this, select "Adjust" then "Video Adjust" from the SIMION
    main menu and then enable the "XORed Rectangle Fix" button.  This
    option is described on p. F-15 of the SIMION 7.0 manual, which
    also reports that this change might make the mouse draw faster as
    well.  Left me know if these does offer improvement.

  Report from marky-20061220
    User has SIMION v7.0 (actually updated to
    7.0.3). The selection rectangle (for zoom or setting up
    electrodes) is invisible.  The selection also does not seem to
    correpsond to the area I select my click and drag. For instance, I
    try to "box" some grid points to generate an electrode. There is
    nothing on the screen to show I have selected anything. I then hit
    the "replace" button, the screen redraws and some of the grids
    points now show as electrodes but they are no where near the area
    I selected (or at least thought I selected). The same thing
    happens for generating a zoom rectangle; the window will zoom but
    it is pretty much random as to what exactly is zoomed.  I am
    running Windows XP. I have tried to change program compatibility
    mode and things like that to no available.  Adjusting the "color"
    settings in Simion itself don't seem to do anything either.
    Otherwise, click-drag in other Windows program works fine.

      User was running SIMION 7 via Microsoft Remote Desktop Client on
      a Mac with (but RDC has worked without issue for any number of
      windows programs over the years). Installing and running on a PC
      with a connected mouse and monitor worked.

  Something similar was also once reported concerning using the mouse on the
  SIMION 7.0 Modify screen in Windows 7 "virtual XP mode" in
    http://simion.com/discuss/topic/919-how-to-run-simion7-on-windows7/
  This behavior has been confirmed by SIS.

Issue I335 [8.0,low,minor,enhancement,resolved]
  Improve Lua output handling (e.g. print()/io output to log window
  and recording files).

  In 8.0.1, these things related to Lua output were made:
    - Output of "Run Lua Program" goes to and remains in Log window.
        In 8.0.0, this displayed in a Windows console window that
        immediately closed when the program completed, making it difficult
        to see and results printed.
    - Log window opens automatically when Lua outputs begins.
        In 8.0.0, entering "print(1+2)" in the command bar resulted
        in a crash.  In 8.0.1, a separate log window opens automatically
        displaying the result.
    - Lua print() function handles non-string variables better.
        8.0.0 may print some non-string variables as blank;
        for example, print(math.sqrt).  8.0.1 now is like standard Lua,
        which prints something like "function: 0x6853c0".
    - In GUI mode, standard input stream is now closed in 8.0.1.
        In 8.0.0, io.read() would freeze SIMION since standard input
        was not accessible to the user.

  UPDATE: 8.0.4-TEST18
    Lua standard input support re-enabled in non-GUI mode:
      Prior to 8.0.4-TEST18, Lua standard input was disabled even in
      non-GUI mode.  For example,
        simion.exe --nogui lua -e 'print(io.stdin:read())'
      failed, indicating file handle was closed.
      Support for this is re-enabled in 8.0.4-TEST18.

  UPDATE: 8.0.4-TEST23
    Fix problem print() not going to rec output file [r18]
    Reported by pypdjl-http://www.simion.com/discuss/viewtopic?p=2017

  UPDATE: 8.0.5-TEST10
    In prior versions, print() outputted to the data recording
    file, but f:write() for standard output handle did not.
    This is now fixed.

    In prior versions, methods seek, flush, and setvbuf on the
    standard output handle in did nothing in GUI mode (non-GUI mode
    was ok).  This is now implemented.  See related Issue I486
    (Data recording output taking long time to flush to disk).

  Affects 8.0.0.
  Resolved in 8.0.1. Improved in 8.0.4-TEST18. Improved in 8.0.4-TEST23.
  Improved in 8.0.5-TEST10.
  See also I229.

Issue I336 [8.0,resolved,high]
  Display error on attempt to run workbench Lua program outside workbench.
  Description:
    One mistake a few users had was to attempt to run a workbench Lua program
    (containing "simion.workbench_program()") via the "Run Lua Program" button
    on the SIMION main screen.  In 8.0.1, a more informative error message
    is given if the user attempts this.
  Update:
    As of 8.0.2, SIMION will check for "simion.workbench_program()" earlier.
    to address the issue in http://www.simion.com/discuss/viewtopic?p=1268#1268
  Affects 8.0.0.
  Resolved in 8.0.2. Was partially resolved in 8.0.1.

Issue I337 [8.0,minor,resolved]
  Fix window-style line editings in some Lua files.
  Description:
    Some files have *nix-style line endings that cause the
    files to not display well in Windows Notepad.
    These include trap\trap.lua, trap\tickle.lua,
    trap\inject.lua, trap\util.lua, icrcell\icr.lua.
  Affects 8.0.0.
  Resolved in 8.0.1

Issue I338 [emacs,minor]
  Syntax highlighting of quotes inside PRG comments in Emacs.
  Description:
    The Emacs text editor plugin for PRG does not render quotes
    inside comments very well.
  Reported by viatcheslav.
  Affects SIMION editor plugins as of 2006-12.

Issue I339 [stl,enhancement,resolved]
  Improve STL->PA CAD conversion accuracy

  Prior to SL Tools 1.2.0-TEST11, STL surfaces imported into PA files
  were often distorted by roughly +-1 grid unit (gu).  The primary
  reason for this is that SIMION PA's represent solid electrodes
  with two rows of electrode points (1 gu width), as shown in
  Figure 5.3 of the SIMION 8.0 manual.  The additional row to
  make a surface solid can move the surface from the correct
  position if the additional row is placed on the outside rather
  than inside of the electrode.  A secondary reason is that
  the triangle rasterization algorithm in 1.2.0 was less than
  ideal.  Both of these issues are addressed in SL Tools 1.2.0,
  but some care needs to be taken to ensure accuracy.
  
  In SL Tools 1.2.0-TEST11, using the STL->PA conversion function,
  selecting the option "Solid strategy" = "No extra solid points" will
  convert surfaces to a single row of electrode points and not
  add the additional row to make it a solid electrode.  This
  improves field calculation accuracy, anbd it is recommended,
  although the surface now won't necessarily splat particles.
  You could ignore that issue, touch up the surface using the
  SIMION Modify function or force an ion splat (ion_splat = 1)
  via a user program (Issue I340 when implemented could also help).
  
  SL Tools 1.2 also improves the triangle rasterization algorithm,
  so surfaces appear more regular (even under other choices of
  "Solid strategy").
  
  SIMION accuracy is highest when electrode surfaces align to
  PA grid units.  This is important to consider when converting
  the STL file.  If your STL file has electrode plates at
  x=0 and x=10.5 in STL units, and if you scale the STL file
  to 0.5 STL units/gu
  (e.g. by selecting region scale = 1 mm/STL units and
  grid cell size = 0.5 mm/gu or by selecting scale = 2 mm/STL units
  and grid cell size = 1 mm/gu), then these surfaces will be exact
  in the PA file.  You should confirm correct grid unit alignment
  by taking measurements with your mouse using the SL Tools View
  function, SIMION Modify 3D screen, or SIMION View screen.

  Reported by aiofmhope-20070103 and also
    http://www.simion.com/discuss/viewtopic?p=1236
    http://www.simion.com/discuss/viewtopic?p=744
    http://www.simion.com/discuss/viewtopic?p=2409
Issue I340 [enhancement,LOW-MED]
  Add flood-fill function to Modify.
  Reported by davidm-20070103.

Issue I341 [enhancement,high,resolved]
  Simplified auto-refining of PAs during IOB loading.
  Reported by gregx-20070103 in
    http://www.simion.com/discuss/viewtopic?t=431
  Description:
    In 7.0.x, 8.0.1, and prior versions, if you attempt to load a
    workbench (.IOB) file without first refining the potential array
    (.PA#) files, you'll get the error message "Failed opening PA, no
    such file or directory".  This error is not too informative, and
    the required process of then manually loading and refining each
    array is somewhat clumsy.

  Resolution:
    In 8.0.2, if you load an IOB file having unrefined potential
    arrays, SIMION now tells you this and asks whether you want to
    refine each array.  If you agree, SIMION automatically opens the
    Refine screen for each array to enable you to refine them.  Also,
    if the workbench references any .P[B-Z]0 files that don't exist,
    SIMION will now copy those from the .PA0 file.  Finally, the
    (refined) workbench is displayed in View.  This all is more
    convenient for the user, and it simplifies running the examples.

    The above process requires that SIMION determine whether a
    potential array is unrefined.  A .PA0 file is unrefined simply if
    it doesn't exist.  Determining whether a .PA file is unrefined is
    a bit more involed--see Issue I351 for details.  There are rare
    cases where you might want to fly ions in an unrefined PA
    (e.g. some tricks involving using Modify on a refined potential
    array), and this will now give a warning for .PA files, but you
    can still choose to ignore that warning.

  Affects: SIMION 7.0.x and 8.0.0-8.0.1.
  Status: Resolved in 8.0.2

Issue I342 [enhancement,LOW-MED]
  Add option to pre-refine all PA files during (or after?)
  SIMION installation (or during IOB loading).
  Reported by davidm-20070103.

Issue I343 [enhancement,med,resolved]
  Warn on attempt to modify/refine/view wrong PA type.
  Reported by davidm-20070104.
  Description:
    SIMION 7.0.x, 8.0.1, and prior versions give no warning if the
    user attempts to perform some types of actions on the wrong
    potential array type.  For example, the user could insert a
    .PA# file (or .PA[1..n] or .PA_ files) into a workbench IOB.
    Occasionally this is desired (e.g. Copy function
    described in 9.2.5 "Transferring Fields from Inner to Outer
    Instances" in the SIMION 8.0.0 manual), but typically it
    is a mistake.  This can occur, for example, if you select
    a .PA# file and press View on the main screen or you select Add on
    the View screen.  Normally, you instead want to load the (solution
    or refined) .PA0 file into the workbench.  Similarly, no warning
    occurs on attempt to refine a PA0 (rather than PA# file)
    or modify a PA0 (or PA[1..n]) file.
    New users have made such mistakes.

  Resolution:
    SIMION 8.0.2 provides a warning if the user attempts this.  In
    fact, when entering View, SIMION now offers to use the
    corresponding .PA0 file instead.

  Affects: 7.0.x and 8.0.0-8.0.1.
  Status: Resolved in 8.0.2.

Issue I344 [bug,gui,med-high,resolved]
  View PAs tab instance list not updated on loading IOB in View.
  Reported by davidm-20070105
  Description:
    If new IOB is loaded from the Load button in Workbench
    tab in View, the PA instance list is not updated. To
    update this list, one needs to enter and exit View.
  Affects: 8.0.0-8.0.1.
  Resolved in 8.0.2.

Issue I344.2 [70,bug,gui,view,minor,resolved]
  Drawing flags in PAs list get misordered when L+/L-/Add/Del used.

  To reproduce:
    View quad.iob.
    In PAs list, select quad.pa0 and disable Draw.
    Click L+.
    Notice that quadin.pa0 is now invisible.

  This is minor and easy to workaround in older versions.

  Affects: 7.0-8.0.5-TEST11
  Resolved in 8.0.5-TEST12

Issue I345 [bug]
  Reported by davidm-2007-01-09
  If attempt "ion_time_step = 1" in other_actions segment (which is 
  not even allowed), one gets the error message
    "Write accessed denied to ion_bfieldx_gu in this segment."
  which is referring to the wrong variable.
  Affects 8.0.0?-8.0.1

Issue I346 [80,med-high,resolved]
  Mouse remains locked in window upon task switching with CTRL key down.
  Reported by jasons-2007-01-10  
  Description:
    If the CTRL key is down in SIMION and the task switches,
    the mouse may remain locked inside the SIMION window.
    This can occur if you press CTRL+ALT+DELETE to open the Windows
    Task Manager.
  Reason:
    When CTRL is down, SIMION locks the cursor in the Windows for
    scroll effects.  This lock was not being released upon task switching.
  To reproduce:
    Example #1:
      Enter View or Modify screens.
      Click on main outer part of window (not center graphical simgui part)
        to place focus on it.
      Drag mouse into graphical simgui part.
      Hold down CTRL key.  Note: mouse is trapped in window.
      With CTRL down, press ALT+DELETE also to bring up task manager.
      Note: mouse is still trapped in window, even if you release CTRL.
    Original report-jasons:
      Twice now, I have had SIMION open on my desktop while locking my
      computer to walk away (<ctrl><alt><del>).  When I have come back
      and logged back in, my mouse pointer is stuck in an invisible
      frame in the SIMION window.  So, I cannot get to the minimize or
      close button or anything else to get out of it and have to
      <ctrl><alt><del> to restart. For now I will make sure that I
      minimize the SIMION window before locking my computer.
    Note: ALT+TAB sometimes helps to remove this lock.
  Affects 8.0.0-8.0.1
  Resolved in 8.0.2.

Issue I347 []
  Add current density plotting example via Excel.

Issue I348 [80,gui,med,resolved]
  View Variables tab list cut off and not updated in display.
  Reported by dfry-20061224
  Description:
    The View Variables tab list sometimes gets cut-off on
    the bottom in its display.  This is a display problem.
    The problem is fixed in 8.0.2.  A quick workaround
    if this occurs in 8.0.0-8.0.1 is to switch
    to the Hide tab and then back to the Variables tab.

    Also, variable list display wasn't updating at the
    end of Fly'm (e.g. if user changes variables during Fly'm).
  To reproduce:
    Example #1
      Load quad.iob.
      Select Variables tab and enable Show All.
      Switch to Workbench tab and then back to Variables tab.
      Note: variables list is cut-off.
      This can be corrected though with this workaround:
        Select Hide tab and then Variables tab
        (or check and uncheck Show All).
    Example #2:
      Load trap.iob.
      Switch to Variables tab.  All variables display.
      In Particles tab, click Define.... Then Cancel.
      Switch to Variables tab.  Variable list is cut-off.
      This can be corrected by the same workaround given above.
    Example #3:
      Load trap.iob.
      Switch to Variables tab.  All variables display.
      Switch to Workbench tab and back to Variables tab.
        Do this twice. Variables list is cut-off.
      This can be corrected by the same workaround given above.
    Original note by dfry-20061224:
      (2) The first time I go into the workbench I can see the
      adjustable variables. If I exit and go back into the workbench
      the variables list is reduced to maybe one or two out of 5 or 6
      variables. http://www.simion.com/discuss/viewtopic?p=1231
  Affects: 8.0.0-8.0.1
  NOT Resolved: 8.0.2
    Reopened (20070808) since this still affects 8.0.3 if "Show All" is
    clicked with quad.iob loaded.
  Resolved in 8.00.4-TEST25.

Issue I349 [80,low-med,resolved]
  Example tune\tune.lua doesn't update PE surface between flights. (minor)
  Reported by davidm-200701
  Description:
    The tune example does not update PE surface display between
    flights as specificed (update_pe variable was not being
    reset between flights).  This is resolved in tune.lua in 8.0.2.
  Affects: 8.0.0-8.0.1
  Resolved in 8.0.2

Issue I350 [70,enhancement,resolved]
  Remove warning on viewing on entering View with PA file not on disk.
  Reported by davidm-200701
  Description:
    If you attempt to view a modifed PA file that is not yet saved
    to disk (e.g. NONAME01.PA), then SIMION complains with
    warning about that PA not being saved to disk.  This is
    not really necessary.  As of 8.0.2, this warning is removed.
  Affects: 7.0.x and 8.0.0-8.0.1.
  Resolved in 8.0.2.

Issue I351 [80,enhancement,resolved]
  In main screen, non-refined PAs are now marked with "!".
  Description:
    Starting in 8.0.2, potential arrays that are determined to be
    unrefined (or are PA# files that are not solution arrays) are
    marked with '!' in the PA list on the main screen.  This is mostly
    as a safeguard/warning for users, especially new users.

    The criteria used to determine whether a potential array is
    unrefined is not precisely defined (it depends on what you
    consider an acceptable level of convergence).  So, a potential
    array not marked with '!' may still need to be refined.

    For purposes here, the criteria used by SIMION to determine if a
    PA should be considered unrefined is basically as follows.

    A .PA file is considered unrefined if the maximum refine
    convergence level in the .PA is above 0.01 times the maximum span
    of voltages in the .PA.  Determining that error requires basically
    that SIMION do a single refine iteration that only computes the
    maximum error (but does not modify the .PA).  A .PA file will also
    be considered unrefined if you modify it but don't subsequently
    re-refine it. Fast adjusting does not alter the refine status.

    .PA0 files (as well as .PA[1..n_] file) are normally always
    considered refined, even if the corresponding .PA# file is edited.
    However, if you edit one of these files directly (which you
    normally should not do), the file will be considered unrefined.
    
    .PA# files are themselves normally always considered unrefined,
    even if the corresponding .PA0 file exists.

  Update: 8.0.4-TEST12
    Display meaning of [!] and [*] as tooltips in statusbar.

  Resolved in 8.0.2.

Issue I352 [med,minor,resolved]
  Example trap\util.lua fast_adjust segment test first incorrectly (efficiency)
  Description:
    In trap\util.lua, is_first should be Boolean true/false not 1/0.
    This caused the first pass initialization in fast_adjust to be
    called on every time step, thereby reducing efficiency a bit.
    This issue only affects performance, not correctness.
  Affects 8.0.0-8.0.1
  Resolved in 8.0.2  

Issue I353 [80,prog,change,resolved]
  Change in behavior of adjustable variable assignments in
    Lua affecting current v.s. default values.
  Suggested by davidm-20070118 to improve ion trap example.

  As of 8.0.2, the behavior of when assignments to adjustable
  variables in Lua affect current v.s. default values was changed
  slightly to be more reasonable.  A quick executive summary is
  given first followed by the full excruciating details.

  Summary...

  This change is somewhat subtle and has no effect on most programs
  that simply define adjustable variables and use them in segments,
  but some programs that do more complicated things with adjustable
  variables can be affected (e.g. the "trap" example that redefines
  some adjustable variables from one Lua file in another Lua file),
  particularly when the user adjusts these variables from the
  Variables tab in View.  Under the old behavior, adjustments made to
  these variables in the Variables tab in View could get ignored
  (i.e. the program, in overriding these variables, also overrides the
  user).  Under the new behavior, the user adjustments are not
  ignored.

  Namely, under the new behavior, assignments to an adjustable
  variable from Lua programs ALWAYS affect the current value and not
  the default value.  Moreover, following program loading (and before
  the Fly'm), the current values are used to define the default
  values.

  Discussion...

  Each SIMION adjustable variable has both a "current value" and a
  "default value".  The default value is defined in the
  program.  It typically doesn't change, but it will be reset if
  changed in the user program source code that is then reloaded, as
  occurs on (re)loading the workbench and also starting a new Fly'm.
  The current value is initially set to the default value.  The user
  or the program can change the current value at run-time.  The
  current value is reset to the default value if you click "Reset
  Values" on the Variables tab.  SIMION also saves and restores the
  current value before and after a Fly'm so that the current value
  after a Fly'm is the current value before a Fly'm.

  In SIMION 8.0.0-8.0.1, the statement

    adjustable x = 3

  when executed sets the default value for the adjustable variable x
  to 3.  It leaves the current value unchanged except when the default
  value changes, in which case the current value is reset to the
  default value. In contrast, the following seemingly similar code has
  a different behavior:

    adjustable x
    x = 3

  The first line does not change the current/default values but the
  second line updates the current value.  Note that only "adjustable"
  assignment statements (which act as declarations) touch the default
  value.

  Typical usage is this:

    simion.workbench_program()
    adjustable x = 3   -- define default value
    function segment.other_actions()
      print(x)
      x = x + 1   -- update current value temporarily in Fly'm.
    end

  When the program is loaded, the default value becomes 3.  The
  current value is normally unchanged at that time, but it will reset
  to the default value if the default value changes (as might occur if
  you change the value in the second line of the program and then
  reload the program such as by reloading the workbench or starting a
  new Fly'm).  Later, when the other_actions segment runs during the
  Fly'm, the current value of x is updated.  Changes to the current
  value remain in effect until the Fly'm finishes, in which case the
  current value of x is reset to its current value before the Fly'm.

  The change in behavior in 8.0.2 is as follows.  The statement

    adjustable x = 3

  and the statements

    adjustable x
    x = 3

  now have the same effect (more consistent).  They both temporarily
  set the current value to 3 and leave the default value untouched.
  However, when the program finishes loading, SIMION now sets the
  default value for the adjustable variable to its current value.
  SIMION then resets its current value to the current value prior to
  loading except if the default value was changed.  CONCEPTUALLY YOU
  CAN THINK OF IT THIS WAY: DURING PROGRAM LOADING, THE PROGRAM -IN
  EFFECT- DEFINES THE DEFAULT VALUE, WHILE AT PROGRAM RUNNING THE
  PROGRAM MAY ONLY UPDATE (TEMPORARILY) AND ACCESS THE CURRENT VALUE.

  *Under the changed behavior, the end result of the typical usage
  given above is the same*, but the implementation is slightly
  differently.  During program loading, the current value temporarily
  changes to 3.  At the end of program loading, the default value is
  set to the then current value (3) and the current value is reset to
  the current value prior to loading (unless the default has changed).
  During the Fly'm, the current value is incremented.  At the end of
  the Fly'm the current value is reset to the current value prior to
  the Fly'm.

  The end results differs, however, under the new behavior for some
  more atypical cases such as in the trap example where adjustable
  variables are initially defined in one file (e.g. util.lua) and
  overriden by redefinitions in another file (e.g. inject.lua).

    -- util.lua file
    adjustable _mean_free_path = 4.0
    -- inject.lua file
    adjustable _mean_free_path = 1.0  

  Under the old behavior, when this is loaded, the default value
  changes to 4 and then to 1, which is ok.  However, if the user
  changes the current value in the Adjustable tab to, say, 8.0, then
  the current value specified by the user will always get reset to the
  default value on program reloading.  The first adjustable definition
  in util.lua temporarily resets the default value to 4.0 when it was
  previously most likely the 1.0 defined later.  SIMION sees that the
  default value has changed, so it **resets the current value to 4**
  (not wanted).  In inject.lua, this happens again and the current
  value is reset to 1.0.  So, the current value always becomes 1.0
  regardless what the user entered in the Variables tab.

  Under the new behavior, after loading, the default value becomes
  1.0, and the current value is reset to current value prior to
  loading (unless the default value changed).  This is the desired
  behavior.

  Consider this more atypical case:

    simion.workbench_program()
    adjustable x = 2
    x = 3
    function segment.other_actions()
      ...
    end

  Here, the second and third lines are both executed during program
  loading (not Fly'm).  Under the old behavior, after loading the
  default value becomes 2 and the current value permanently becomes 3.
  Under the new behavior, the default value becomes 3 and the current
  value remains unchanged (unless the default value changes).

  Consider this other more atypical case:

    simion.workbench_program()
    function segment.other_actions()
      adjustable linear_damping = 10
      print(linear_damping)
    end

  Here, the third line is executed during the Fly'm.
  Under the old behavior, during the Fly'm the default value
  becomes 10.  If the default value changes, the current value
  is changed to 10 until the end of the Fly'm, in which
  case it is reset to the value prior to the Fly'm.  This behavior
  is probably not so useful.  Under the new behavior, the
  current value changes to 10.

  If just this is done

    function segment.other_actions()
      adjustable linear_damping
      print(linear_damping)
    end

  Then under both the old and new behavior the default and current values
  are unchanged.

  Consider this:

    simion.workbench_program()
    adjustable x = 3
    adjustable y = x

  Initially, the default and current values of x and y are both 3.
  Now, say the user adjusts x to 4 and reloads the program by starting
  a new Fly'm.  Under the old behavior, the second line has no effect,
  but the third line sets the default value of y to 4.
  Under the new behavior, default and current values of both variables
  remain unchanged by the reloading.

  Changed in 8.0.2.

Issue I354 [80,high,resolved]
  Add C++ calling from Lua example.
  Scheduled for 8.0.3 (also C/Python/Java/etc. examples).

Issue I355 [80,batchmode,high,resolved]
  "fastadj" command in batch mode program may cause subsequent command to
    terminate when run in GUI mode.
  Reported by rbalthazor-20070124-http://www.simion.com/discuss/viewtopic?t=440
  Description:
    If a Lua batch mode program (e.g. "batch.lua") calls
    simion.command("fastadj ..."), and if
    this batch.lua program is run in the SIMION GUI
    ("Run Lua Program" button), it may prematurely terminate
    subsequent commands such as simion.command("fly ...").
    The program is not affected if run instead from the SIMION
    command-line mode ("simion.exe --nogui lua batch.lua").
  Workarounds in 8.0.1:
    Workaround #1:
      Run the batch mode program from a command-line (cmd.exe)
      window instead. For example, assuming your project folder
      is "c:\temp\test" and batch program is "batch.lua",

        cd /d c:\temp\test
        "c:\program files\simion-8.0\simion.exe" --nogui lua batch.lua 
    Workaround #2:
      Ensure your potentials always
      change during a fast adjust.  So, instead of
        simion.command("fastadj test.pa0 1=50,2=100")
      do this:
        simion.command("fastadj test.pa0 1=0,2=0")
        simion.command("fastadj test.pa0 1=50,2=100")

  Affects: 8.0.0-8.0.1
  Resolved in 8.0.2.

Issue I356 [70,80,hight,resolved]
  Warning "too many ions for list size" can display when
  loading ION file containing list size ions.
  Reported by rbalthazor-20070124-
              http://www.simion.com/discuss/viewtopic?p=1276
  Description:
    If an ION file is loaded containing the number of ions equal
    to the maximum ion limit specified, SIMION incorrectly
    gives the warning "Too Many Ions for List Size; Ion
    Definitions Missed".  However, the ions do otherwise load fine.
    Also affects converting FLY2 to ION file.
    This affects both SIMION 7.0.x and 8.0.x.
  Workaround in 7.0.x and 8.0.1:
    Just increase the maximum ion limit to one more than you need,
    and the warning will go away.    
  Affects: 7.0.x, 8.0.0-8.0.1
  Resolved in 8.0.2.

Issue I357 [80,high,resolved]
  Prevent simion.command() calls from having side-effects such as
    leaving additional PAs around in memory and parameters modified.
  Reported by rbalthazor-20070124 and bud
  Description:
    In SIMION 8.0.x versions prior to 8.0.2, at the completion of
    in-process Lua calls to "simion.command(...)" commands, SIMION
    did not properly unload PAs created in memory.  Commands could also
    affect and be affected by the current refine and fly parameters.
    This could result in memory exhaustion and hard to diagnose
    run-time side-effects between commands.
    However, equivalent commands executed from the command-line interface
    (e.g. "os.execute([['c:/program files/simion-8.0/simion.exe --nogui ...']])")
    are not affected since that creates a new, clean SIMION process
    for each command.
  Resolution:
    Starting in 8.0.2, all PAs created in memory by a
    "simion.command(...)" command are unloaded after the command
    finishes (i.e. no difference is seen in the PA list on the main
    screen before and after a command runs).  Also, default command
    parameters are now localized to defaults, which means that omitted
    default parameters are not affected by the current values prior to
    running, nor do included parameters affect the current values after
    running. In short, side-effects are eliminated.

    One exception to this rule is the "fly" command, which will also
    entirely clear any non-empty PA list and particle definitions
    after (and before) running.  This is designed to minimize side
    effects given technical limitations (that may be removed in the
    future), but it generally is not expected to present a problem.
    The "fly" command is currently prevently from executing in the
    View screen for this reason.

  Original report:
    http://www.simion.com/discuss/viewtopic?p=1273
  Workaround in 8.0.1:
    (1) Invoke a new SIMION process for each command,
        e.g. os.execute([['c:/program files/simion-8.0/simion.exe --nogui ...']])
        rather than an in-process simion.command("...") command.
  Affects: 8.0.0-8.0.1.
  Resolved in 8.0.2.

Issue I357 [programming,med-high,resolved]
  run_stop() now disables window frame (prevents other user actions)
  and properly functions in non-GUI batch mode.
  Affects: 8.0.0-8.0.1.
  Resolved in 8.0.2.

Issue I358 [programming]
  "fly" batch mode command not raising Lua error on failure.
  Reported by davidm-20070129
  Description:
    In 8.0.0-8.0.1, if the "fly" command is run in batch mode
    and error occurs during the Fly'm, an error message is
    written to the log but a Lua error is not raised, so the
    batch mode program continues anyway.
    In 8.0.2, a error is raised as well.
  Affects: 8.0.0-8.0.1
  Resolved in 8.0.2.    

Issue I358 [examples,resolved]
  Reported by davidm-20070130
  Example quad\quad.lua not using _quad_entrance_voltage,
          _quad_axis_voltage, and _quad_detector_voltage variables.
  Description:
    In the 8.0.x examples prior to 8.0.2, the quad.lua user program
    was not utilizing these variables to apply voltages to
    the entrance and exit regions.  This is corrected in the 8.0.2
    version of the example with a new init_p_values segment.
  Affects: 8.0.0-8.0.1 examples
  Resolved in 8.0.2 examples

Issue I359 [enhancement,resolved]
  Lua now binary compatibile with C/C++ extension modules.
  Reported by davidm-200701
  Description:
    The version of Lua in 8.0.0-8.0.1 does not maintain standard
    binary compatibility as defined by luabinaries.luaforge.net.
    In 8.0.2, binary compatibility is achieved.  This allows
    Lua code to load modules written in C (see also I354 -
    Add C++ calling example).

    In 8.0.2, the directory "lua/lib" relative to simion.exe is
    added to the LUA_PATH and LUA_CPATH.  Added lib/lua files.
  Resolved in 8.0.2.

Issue I360 [80,installer,high,resolved]
  Install/run fails if C: drive does not exist for FILES.GUI directory.
  Reported by: medb-20070201
  The installer expects to be able to write to c:\FILES.GUI.
  Some systems might not have a C: drive.

  Resolution in 8.0.2:
  - Installer no longer touches c:\FILES.GUI directory directory.
  - If SIMION can't create c:\FILES.GUI folder, SIMION will then
    try creating a "SIMION 8.0\FILES.GUI" folder
    in the user's "Application Data" folder (Windows convention).
    If an "INI_GUI" environment variable is set to some other directory,
    it will override this (undocumented feature - subject to change).
   
  Affects: 8.0.0-8.0.1.
  Resolved in 8.0.2.

Issue I361 [80,gui,focus,resolved]
  Keyboard tabbing problems.

  On the View screen, Adjustable Variables tab and PAs Position,
  tab traversal skips the child controls.   Resolved in 8.0.5-TEST37.

  Tabbing eventually gets stuck on various screens: View, Modify,
  Refine, Print, etc.  Resolved in 8.0.5-TEST37.

  The keyboard handling event loop has been reworked in 8.0.5-TEST37
  to address the above and other possible issues.

  Control with focus may become hidden if panel is scrolled. To
  resolve in 8.0.6.  Resolved in 8.0.6-TEST7.

  Reported by thomasb--http://www.simion.com/discuss/viewtopic?p=1307
  Also by erikm-20090821--http://www.simion.com/discuss/viewtopic?t=3198

  Affects: 8.0.0-8.0.4
  Partly resolved in 8.0.5-TEST37. [r2895,r2897]

Issue I362 [80,example,hs1collisionmodel,high,resolved]
  HS1 collision model did not accurately thermalize.
  Reported by davidl-200702.
  Description:
    It was reported that in the HS1 collision model, ions reach an
    equilibrium temperature somewhat lower than that of the gas
    temperature, when in fact the two should be equal (thermal
    equilibrium).  For example, at 300K, mass 100 amu, pressure
    0.1mbar, over 1ms, HS1 gives <KE> = 0.0259eV (~33% lower than gas
    KE = 0.0388eV), while a slightly different collision method gave
    0.0385.  HS1 also slightly underestimated dispersion.

    The problem was in the way impact_angle and gas velocity for the
    collision were handled. To be truly correct, one can first translate
    the velocity reference frame so that the gas particle is
    stationary.  Fixing that gives a much a more correct ion
    temperature at equilibrium (e.g. ~300K).

    This is fixed in REV-4 of the Lua code in 8.0.2 (as well as REV-4
    of the SL code on simion.com).

    Another unrelated change in REV-4 (of Lua version) is a slightly
    more accurate calculation of gas velocities at collisions.  REV-3
    assumed Maxwell-Boltzmann, which is a reasonable approximation,
    but it should actually deviate a bit from Maxwell-Boltzmann at low
    ion velocities.  This issue is explained in the new notes.pdf.  In
    practice, this probably doesn't makes much difference.

    Also, various other improvements were made to REV-4 (of Lua
    version), such as additional documentation, improved code
    structure, and enhanced statistical reporting.  See the new
    notes.pdf in SIMION 8.

  Affects: 8.0.0-8.0.1 (and version 2 of the SL version on simion.com).
    Resolved in 8.0.2 (and version 4 of the SL version on simion.com).

Issue I363 [80,pa,limit,high,resolved]
  --reserved-memory command-line option

  Allocating PAs of size 1-2 GB may require using the "--reserved-memory"
  command line option.  See http://www.simion.com/info/RAM_and_Memory and the
  manual for details.  This option was added in 8.0.0.

  Update 8.0.3 and sltools 1.1.1:
    Increase SL Tools and SL Libraries from 50 million
             (SIMION 7) to 200 million (SIMION 8).
             New command-line option (e.g. --reserved-memory=1.8G)
    Reported by Rajaat-20070213
      http://www.simion.com/discuss/viewtopic?p=1342#1342
    Description:
      SL Tools and SL Libraries were set to the 50 million point limit
      of SIMION 7 rather than the 200 million point limit of SIMION 8.

      This is now resolved in SL Tools (sltools.exe) version 1.1.1.
      HOWEVER, like in SIMION 8 itself, to fully utilize the largest
      arrays, you need to pass sltools.exe the "--reserved-memory"
      command line option (e.g. "sltools --reserved-memory=1.8G").
      (simion.exe version 8.0.3 forwards that
      option automatically if it is itself is passed that option.)

      Affects: 8.0.0-8.0.2.  Resolved in 8.0.3 (sltools 1.1.1).
        Patch sltools.exe is currently online (sltools 1.1.1-TEST2)

  Update 8.0.5-TEST27:
    Electrode solution arrays for .PA0 files are now loaded into the reserved
    memory pool (when the "--reserved-memory" command-line option enabled).
    Previously, they were always loaded into the standard memory pool.
    Therefore, fast adjusting .PA0 files in user programs might not have been
    able to take full advantage of reserved memory.

  Update 8.0.5-TEST28:
    Fix crash/leak on failure to allocate from reserved memory.
    One problem can be reproduced by opening up maybe four instances of SIMION
    using the "--reserved-memory=1.8G" option and attempting to allocate
    150 million point arrays in each, in which case even virtual memory
    will be exhausted.
    Alternately, terminating PA on load might cause leak.
    Crash report 20081024
      Address=471D2E; Code=C0000005; String=ACCESS_VIOLATION
      Version=8.0.5-TEST27-nosse2; Free Mem=5.94922 MB; Level=0; Address=471D2E; 
    Fixed in 8.0.5-TEST28.

  See also Issue I518 - Access memory dump (simion.debug.memory_dump)

  Resolved in 8.0.0.

Issue I364 [80,gui,enhancement,resolved]
  Flash taskbar icon and sound upon completion of long-running function.

  In 8.0.3-TEST6, taskbar icon flashes and click sound is made
  if long running function completes and windows is not active.

  In 8.0.4-TEST14, click sound (if enabled) is made whenever
  a long-running task completes.  This now occurs regardless
  of whether the window is active.

  Original report by bernheim-20070217
    A small improvement to help the user would be for a
    sound signal to tell the user as soon as the 
    PA adjust is finished. (In the case of large data
    file it might last several tens of second.

  Original report by bernheim-20070906
    It seems me convenient to add a sound signal in the end
    of the potential adjust procedure. The user may leave his
    temporary job to configure the beam condition and to start
    the particle path evaluation
    http://www.simion.com/discuss/viewtopic?p=1834#1834

  Implemented in 8.0.3-TEST6, 8.0.4-TEST14

Issue I365 [80,modify]
  Modify 3D not display electrodes selected via Find.
  Reported by simionp-20070215
    In Modify screen, if you have the "Find" box checked,
    then the electrode at the potential set does not appear in
    the 3D view.
  Affects: 8.0.0-8.0.2
  To resolve in 8.0.3

Issue I366 [80,lua]
  Excel COM handles not collected after rerun.
  Report by matthiase-20070223
    Each Lua run starts a excel-process that is not closed when the
    excel-window closes. So after some time the task-manager is full of
    excel-processes.
  Temporary workaround:
    Instead of
      local excel = luacom.CreateObject("Excel.Application")
    try this:
      _G.excel = _G.excel or luacom.CreateObject("Excel.Application")
      local excel = _G.excel
    The _G is the global namespace that persists across reruns.
    We can create an Excel object once and store it in _G and then
    reuse it for subsequent reruns.
  Notes:
    For this code:
      local excel = luacom.CreateObject("Excel.Application")
      excel.Visible = true
      excel.Workbooks:Add()
    The "excel" object is never released if the last line is
    executed; otherwise it will be released by "collectgarbage()"
  See also related Issue I262.
  Affects: 8.0.0 - 8.0.2
  To review by 8.0.3. -- Note: SIMION should at least manually call
    collectgarbage() at certain points in the operation.

Issue I367 [80,commandline,resolved]
  Command-line errors not always displaying/trapping.
  Prior to 8.0.3, errors when invoking SIMION from the command-line
  would not always display, particularly when "--nogui" is not specified.
  Prior to 8.0.3, running "simion.command('fly --help')" inside SIMION
  GUI mode would cause crash (error message not handled).
  This is resolved in 8.0.3.
  Affects: 8.0.0-8.0.2
  Resolved in 8.0.3.

Issue I368 [80,enhancement]
  Allow splat info to be turned off in the log in batch mode.
  See also http://www.simion.com/discuss/viewtopic?p=1373
  To review by 8.0.3.

Issue I369 [80,enhancement]
  Update Lua programming example for measured magnetic fields.
  See http://www.simion.com/sl/field_article.html
  To review by 8.0.3.

Issue I370 [80,programming,enhancement,resolved]
  New sim_trajectory_quality reserved variable.
  Description:
    Add new "sim_trajectory_quality" reserved variable readable
    and writable in the initialize, other_actions, and terminate
    segments.  This allows control of the trajectory quality
    factor (-500 to +500).
  Requested by davidl-20070309-http://www.simion.com/discuss/viewtopic?p=1396
    "I was wondering if the trajectory quality factor itself can be
     changed by a user program? So you could, for example, turn the
     boundary approach and velocity reversal checking on or off from
     within a user program."
  Largely resolved in 8.0.3.

  See also Issue I370.2 and Issue I370.3

Issue I370.2 [defect,prg,tqual,resolved]
  sim_trajectory_quality implemented in PRG as well.
  Resolved in 8.0.5-TEST8.

  See also Issue I370.

Issue I370.3 [enhancement,lua,tqual,resolved]
  sim_trajectory_quality now accessible at the top-level
  of a workbench program.

  As of 8.0.5-TEST10, the sim_trajectory_quality variable can be used
  at the top-level of a workbench program (outside of segments).  Such
  code gets executed immediately upon loading (or flying) the
  workbench.  So, this allows setting the parameter immediately upon
  loading (or flying) the workbench.  Example usage:

    simion.workbench_program()
    sim_trajectory_quality = 100

  Based on recommendation by thomasb-20080314.

  Resolved in 8.0.5-TEST10.

  See also Issue I370.

Issue I371 [70,80,gem,HIGH]
  0.5 gu adjustment for within{hyperbola(...)}
  Noted by emmah-20070309
  Description:
    When using "within" inside your GEM file:

      within{Hyperbola(0,0,25,25)}

    SIMION applies a +0.5 gu adjustment (as noted in the description
    of the "within" command in the SIMION manual).  So, the equation

      (y - yc)^2/ry^2 - (x-xc)^2/rx^2 = 1

    becomes

      (y - yc)^2/(ry-h)^2 - (x-xc)^2/(rx+h)^2 = 1
      where h = 0.5 gu

    However, if you use a "within_inside" instead:

      within_inside{Hyperbola(0,0,25,25)}

    SIMION applies no such adjustment (i.e. h=0).

    Typically, you want this adjustment so that the surface error is
    not just less than zero ("-1 < error < 0") but rather centered
    around 0 (i.e. "-1+0.5 < error < 0 + 0.5").  However,
    the hyperbola becomes somewhat off particularly in the far region
    when defined this way.  Typically this region is less important if
    ions don't fly in that region.  However, you might try the
    following to preserve the accuracy in the far region:

      within_inside{Hyperbola(0.5,-0.5,25,25)}

    Possibly SIMION should instead automatically define hyperbola in
    that way.

  Also noted by davew-20070806
    -- http://www.simion.com/discuss/viewtopic?p=1794#1794 

  Resolve by 8.0.5-production release.

Issue I372 [enhancement,high]
  Define open boundaries explicitly with Neumann conditions?
  See
    http://www.simion.com/info/First_Uniqueness_Theorem
    http://www.simion.com/discuss/viewtopic?p=948
    http://www.simion.com/discuss/viewtopic?p=1402
    http://simion.com/discuss/topic/1005-boundry-conditions/ ryan20100628
  Description:
    The following change to the "symmetry refining equations"
    shown near the beginning of the "Computational Methods"
    chapter of SIMION 7.0 and 8.0 manuals is suggested (davidm-200703).

    Non-mirrored 2D planar PA boundaries shall be changed from

      All edge points: P0 = (P1+P2+P3)/3 {top edge}   to
      All edge points: P0 = (P1+P2+P3+P4)/4 = (P1+P2+2*P3)/4 {top edge}
      (note: assuming P4 = P3)

    The latter is the same Neumann boundary condition imposed when
    mirroring is enabled.

    Non-mirrored 3D and 2D cylindrical PA boundaries shall be changed
    similarly.

    This change seems to make little numerical difference in practice
    (though perhaps further testing is needed), and it seems to put
    the non-mirrored open boundaries on firmer theoretical footing.
    At least, I'm not sure the current form has much theoretical
    justification, though it does work very much like a Neumann
    boundary in practice.

    The change will also more formalize the understanding that it is
    possible to define mirror planes on both left and right (X-plane)
    sides of a PA since the edges are in fact Neumann boundaries,
    which mirror planes behave identically to.

    The change is fairly trivial to make.

  Resolved in 8.1.0-TEST4 (for details, see the section titled
  "Neumann boundary conditions" in the SIMION 8.1 help file.

Issue I373 [enhancement] 
  Support fast scalables with offset.
  V = (V0 - c)*k + c rather than just V0*k.
  http://www.simion.com/discuss/viewtopic?p=1407

  See also Issue I172 in SIMION-8.0\docs\fast_scale_extension.html near "Note
  that you can apply an adjustable offset voltage to the entire system through
  a scalable electrode defined like this: [4] = {1, 1, 1, 1, 1}. Any
  adjustment to this electrode will be applied equally to the entire
  system."

  2009-01-07 - also noted by viatcheslav

Issue I374 [defect,80,resolved]
  "Use programs" checkbox out of sync.
  Reported by tbraun-20070411-http://www.simion.com/discuss/viewtopic?p=1510
  Description:
    The "Use programs" checkbox does not always reflect the
    true value in memory.
    To reproduce:
      - View quad\quad.iob.
      - Uncheck "Use programs" in Particles tab and click Fly'm.
      - Note: RF wrongly active.
      - Check and uncheck "Use programs" again and click Fly'm.
      - Note: RF correctly inactive.
  Affects: 8.0.2 (not 8.0.0-8.0.1).
  Resolved in 8.0.3-TEST2.

Issue I375 [defect,80,resolved]
  False warning that .PA/.PA# file is electrode solution
    file upon entering Modify if file has bad "short" 8.3-format name.
  To reproduce:
    - On an NTFS volume create a .PA file named "longfilename.pa"
    - Set the short name of the file to something with a bad or
      missing extension (e.g. "longfile").  For example, you can
      simulate this by this command-line command:
        "fsutil file setshortname longfilename.pa longfile"
      Note that "dir /X" now shows "LONGFILE" for the name.
    - Load the file in SIMION and open Modify.  SIMION gives false
      warning that "LONGFILE" is an electrode solution file.

  Original report by tbraun:
    I'm using SIMION 8.0.2 with files from a network share.
    If I load a PA# file lens.pa# from L:\komponen.ten\Stuff\
    Entwicklung\Projekte\Test(1111111)\Lens\LongerStuff(Final version)\
    and try to modify it, I get the attached error message.
    Although I'm trying to work on the correct file.
    If I do the same from a local disk d:\ with the pa# file
    "LENS-lens(too long).PA#" everything works as expected.
    ---
    Warning: The potential array "LAZEDM~R" is a electrode solution file.
    Normally, the corresponding definition file "LAXEDM~R.PA" is
    modified instead...
    ---

  Reason: SIMION was testing the short (8.3 form) file name,
    which in some cases might not have a valid file extension.
    This was a carryover of SIMION 7.  8.0.3 now tests the long name.
      
  Affects: 8.0.2 (related issues might exist in 8.0.0-8.0.1)
  Resolved in 8.0.3-TEST2

Issue I376 [80,defect,high,resolved]
  Lua file locked, preventing editing.

  Reported by rdanell-20040416.
    http://www.simion.com/discuss/viewtopic?p=1523
    ...
    On trying to edit and save (in Wordpad) a Lua file attached to an
    open IOB I get a "file in use" error and am unable to save it.
    Removing all PAs from RAM still does not solve this and SIMION has
    to be closed completely in order to be able to save the file.
    Notepad is able to save it though.

  Cause:
   This seems to be a bug in Lua, where if the standard input stream
   is closed (which is not usual, but which SIMION 8.0.2 does), Lua
   might not close the next Lua file after running it, so the file
   remains locked for writing.  This has been reported and will be
   resolved one way or another in 8.0.3.

  Temporary workaround:
    In the SIMION bottom command bar enter
      io.input("NUL")
    after starting SIMION.
  
  Affects 8.0.2 (probably not prior versions).
  Resolved in 8.0.3-TEST5

Issue I377 [80,fly2,gui,med,resolved]
  Particle definitions for FLY2 sometimes wrongly displayed "(special)"
  To reproduce:
    In Particle definitions, switch to "Grouped (.FLY2)" view.
    Delete and current groups and click Add to create default group.
    Next to "Source position", change from "single vector" to "x,y,z".
    Note that "X", "Y", and "Z" fields display "(special)"
      (but switch back to "single value" if you toggle Edit as Text on/off.
  Cause: display was not updating.
  Resolved in 8.0.3.

Issue I378 [80.fly2,gui,minor,resolved]
  "Clear All" disabled on FLY2 Particle Definitions screen
  "Clear All" button was disabled when list size was <= 1.
  Changed to list size == 0 only.
  Resolved in 8.0.3.

Issue I379 [med,gui]
  Have more than one display window for the  
  trajectories--i.e. to have different cuts shown in different windows  
  simultaneously so you could see different aspects of the same fly.
  Recommended by theo-20070423

  Would require infrastructure changes to support multiple windows.

  Maybe it would be easier to have a single window but with multiple
  stored views you can switch between.

  See also Issue I243 - Preserve zoom/cuts in IOB file.

Issue I380 [iob,HIGH]
  Loading Workbench from View does not remove all PAs from RAM.
  Reported by theo-20070426
  
  When you load a new iob shouldn't all the old pas be cleaned out
  automatically? I don't think that's happening and I'm wondering why
  not? Is there some reason for keeping the old pas?

  This behavior is described in p. 7-33 of the SIMION 8.0.0-2 manual.
  This behavior might not be desired and should be reviewed since
  since it can cause some undedesired behavior.

  To review by 8.0.5.

Issue I389 [gui,resolved]
  Checking "Rerun" does not clear trajectories.

  The SIMION manual states that checking the "Rerun" check box should
  clear trajectories (Section 8.5.2 - Discussion of Individual Ion
  Flying Controls - "The Rerun Check Box"), but this does not occur.

  Affects 8.0.0-8.0.2 (ok in 7.0)
  Resolved in 8.0.3-TEST5.

Issue I390 [gem,resolved]
  Buffer overflow on certain bad GEM syntax (minor)
  Resolved in 8.0.3-TEST6 and 7.0.5

Issue I391 [gem,prg,enhancement,resolved]
  Display full GEM and PRG errors immediately
                 (without requiring user to enter debugger)
  Note: Previous to 8.0.3-TEST6, if an error existed in a GEM and PRG files,
  user would need to enter the debugger before seeing the error message.
  Implemented in 8.0.3-TEST6.

Issue I392 [lua,enhancement,resolved]
  Display full Lua stack traceback on error.
  Implemented in 8.0.3-TEST6.
  8.0.4-TEST4 - also do on "Run Lua Program" button.

Issue I393 [lua,defect,resolved]
  Open file dialog box in current working directory.

  Prior to 8.0.3-TEST6, this dialog box opened in the most recently
  used directory (at least under win2000/xp).  This is undesirable
  when multiple copies of SIMION are open simultaneously because if a
  file in one directory is selected via this dialog box in one
  instance of SIMION, then this dialog box will open in that directory
  in all other instances of SIMION, which might not be the current
  project folder for that instance.

  In 8.0.3-TEST6, this dialog box opens in the most recently used
  directory on its first usage and opens in the current working
  directory for all subsequent usages.

  Resolved in 8.0.3-TEST6

Issue I394 [gem,80,defect,resolved]
  GEM "include" command fails unless .gem extension given in file name.

  In a GEM file, using an "include" command without a ".gem" file name
  extensions (e.g. "include(two)") fails in 8.0.x versions prior to
  8.0.3-TEST6, but it worked in 7.0.x versions.  Reason: There were
  extra spaces appended to the file name.

  Affects 8.0.0-8.0.2.
  Resolved in 8.0.3-TEST6

Issue I395 [80,defect,resolved]
  Execution of command 'C:\Program Files\SIMION-8.0\sltools.exe' failed
   (error 193: unknown error c1)

  If a file "c:\Program Files\SIMION" exists, when SIMION is installed
  in "C:\Program Files\SIMION-8.0\simion.exe" then pressing the "SL
  Tools" button in SIMION results in the error "Execution of command
  'C:\Program Files\SIMION-8.0\sltools.exe' failed (error 193: unknown
  error c1)"

  Reason: file names with spaces were not quoted.

  Affects 8.0.x up to 8.0.3-TEST7.  
  Resolved in 8.0.3-TEST7

Issue I396 [80,lua,defect,resolved]
  Programs still compiled if "Use programs" disabled.

  Prior to 8.0.3-TEST7, if "Use Programs" is not checked, program
  segments will (correctly) not run, but PRG and Lua programs do still
  compile and execute.  Any errors in the program will still display,
  any any side effects, such as top-level print statements in Lua code
  (see Issue I258) will still occur.

  As of 8.0.3-TEST7, programs aren't even compiled if "Use Programs"
  is checked.

  Affects 8.0.x up to 8.0.3-TEST7
  Resolved in 8.0.3-TEST7

Issue I397 [gui,enhancement,resolved]
  Add command-bar history.

  As of 8.0.3-TEST7, pressing the up or down array keys in the
  SIMION command bar recalls previously typed commands.
  (Max history size is currently five.)

  Resolved in 8.0.3-TEST7

  Sub-issues:
    Issue I397.2 - Increased command-bar history size to 20.
    Issue I397.3 - Lua commands with errors now saved in the history buffer
                   of the command bar.

Issue I397.2 [change,resolved]
  Increased command-bar history size to 20.

  In 8.0.5-TEST9, command-bar history size increased to 20 (from 5).

  Parent issue: Issue I397

Issue I397.3 [enhancement,resolved]
  Lua commands with errors now saved in the history buffer of the
  command bar.

  As of 8.0.5-TEST9, Lua commands with errors now saved in the history
  buffer of the command bar.

  Reported by adrian--20080313
    Example: Enter a command and get "variable undefined".
      Then define the variable, but previous command is now lost.

  Resolved in 8.0.5-TEST9.

  Parent issue: Issue I397

Issue I398 [lua,enhancement,resolved]
  New simion.VERSION variable.

  See simion.VERSION in "docs/lua_simion.html" for full documentation
  on this variable.

  As of 8.0.3-TEST8, simion.VERSION contains the SIMION version
  number string (e.g. "8.0.3" or "8.0.3-TEST8").
  Implemented in 8.0.3-TEST8

  As of 8.0.4-TEST19, simion.VERSION contains a version object
  and permits comparisons such as

    assert(getmetatable(simion.VERSION) and  -- optional for compatibility
           simion.VERSION >= simion.VERSION '8.0.5-TEST19',
           "version 8.0.5-TEST19 or above required")

  Update 8.0.5-TEST27:
    Fixed: tostring(simion.VERSION(s)) now works properly.

Issue I399 [lua,enhancement,resolved]
  Add lua51.dll (proxies lua5.1.dll) for improved Lua
  module compatibility.

  As of 8.0.3, Lua C DLLs can be linked against either lua5.1.dll
  (LuaBinaries style) or lua51.dll (Lua style).

  Implemented in 8.0.3.

Issue I400 [lua,libraries,resolved]
  New Lua simionx.* libraries.

  8.0.3 includes a variety of new Lua libraries:
    simionx.MField - Issue I287 Biot-Savart calculations
                     (see "solenoid" example).
    simionx.FieldArray - magnetic field import and interpolation
                         from grid in ASCII text file. (see "field_array"
                         example).
    simionx.CachedField - Represents a given field whose values are
                          computed and cached in a given field array.
                          (see "solenoid" example)
    simionx.Optimization - Issue I309 - simplex optimizer
                           (see "hda" example).
    simionx.SpecialFunctions - special math functions
                               Also, simionx.Support.
    See "Libraries API Reference" in "Help|Browse Documentation" for details.

  8.0.4 additions:
    simionx.FieldAnalysis - 
      Functions for analyzing fields (e.g. computing total
      charge via Gauss's Law or total energy).
    simionx.Integration - numerical integration routines.
    simionx.Format/simionx.Type - additional utilities

  8.0.5 additions:
    Issue I400.3 - simionx.Constants - common physical constants.

  Implemented in 8.0.3/8.0.4/8.0.5.

Issue I400.3 [enhancement,library,resolved]
  simionx.Constants - common physical constants library added.

  Implemented in 8.0.5.

  Parent issue: Issue I400

Issue I401 [sltools,sllibraries,enhancement,resolved]
  Order of magnitude increased PA load/save performance
  in SL Tools and SL Libraries for C++.

  Implemented in 8.0.3.

Issue I402 [examples,enhancement,resolved]
  New examples.

  These examples were added in 8.0.3:
    ims - ion mobility (IMS) example
    ionfunnel - ion funnel example
    hda - hemispherical deflection analyzer example,
      which includes simplex optimization and Excel surface plotting.
    solenoid - solenoid magnetic field Biot-Savart example
    field_array - loading magnetic field array from ASCII data file example
    child_particles - multiple child particles example
    collision_sds - SDS atmospheric pressure collision model.
    Documentation on the quad example in particular (and others) was
    improved.  http://www.simion.com/discuss/viewtopic?p=1443

  These examples were added in 8.0.4:
    Issue I428 - New charge repulsion examples ("repulsion")
    Issue I439 - New RF octupole ion guide example - examples/octupole.
    Issue I442 - New lens property examples.
    Issue I460 - Updated gauss_law example [r21]

  These examples were added in 8.0.5:
    Issue I484 - New example: Particle Teleportation across multiple
      SIMION processes ("multiprocess")
    Issue I221.2 - New example: Applies user program to record data on
      multiple non-orthogonal test planes ("test_plane")
    Issue I178.2 - New field lines/vector plotting example ("contour")
    Issue I515 - PA instance jumping trick example added
                 ("nonideal_grid/particle_jump")
    20090829 - Added ionfunnel\funnel3.iob example
      (more convenient to adjust voltages).

  Early access mode:
    Issue I499 - New induced current/charge example ("electrostatic_induction")
    Issue I502 - New  Bradbury-Nielson Grid example ("bradbury_nielson_grid")
    Issue I515 - PA instance jumping trick example added ("nonideal_grid/pa_jump")

  Implemented in 8.0.3/8.0.4.

Issue I403 [doc,enhancement,resolved]
  New "SIMION Libraries API" Documentation in HTML
    ("Libraries API Reference" in "Help|Browse Documentation")

  This documents the new libraries in Issue I400.  

  Implemented in 8.0.3

Issue I404 [lua,defect,resolved]
  Update Lua to latest 5.1.x release (bugfixes only update).

  8.0.3: Upgraded Lua from 5.1.1 to 5.1.2.
         This is a bug-fix only release.
  8.0.5-TEST1: Upgraded Lua from 5.1.2 to 5.1.3-rc3
         This is a bug-fix only release.
  8.0.5-TEST2: Upgraded Lua from 5.1.2-rc3 to 5.1.3
         This is a bug-fix only release.
  8.0.5-TEST25: Upgraded Lua from 5.1.3 to 5.1.4
         This is a bug-fix only release.

  Lua is very stable, and 5.1.x releases cover bug-fixes only,
  which in the past have generally been rare bugs.
  SIMION 8.0 policy is to apply all 5.1.x updates.
  A list and description of Lua bug fixes is at
  http://www.lua.org/bugs.html .

  Resolved.

Issue I405 [defect,examples,resolved]
  "sharing violation" opening results.csv in
    geometry_optimize.lua under Linux (find handle needs closed)

  geometry_optimize.lua may give "sharing violation" error on opening
  results.csv in notepad.  This occurs at least on Linux.  File handle
  now correctly closes in 8.0.3-TEST10.

  Affects some 8.0.x versions prior to 8.0.3-TEST10
  Resolved in 8.0.3-TEST10.

Issue I406 [enhancement,resolved]
  New simion.status Lua function to display text on status bar

  The simion.status command now displays a message on the status bar:
    simion.status("hello!")

  Related to request by jasons-20070529 for TOF display during
  ion flight:
    http://www.simion.com/discuss/viewtopic?p=1620

  Example usage in Lua workbench user program:

    simion.workbench_program()
    local last_status = 0
    local status_each_usec = 1  -- time (microseconds) between update
    function segment.other_actions()
      if abs(ion_time_of_flight - last_status) >= status_each_usec then
        simion.status(ion_time_of_flight)
        last_status = ion_time_of_flight
      end
    end

  Resolved in 8.0.4-TEST1

Issue I407 [80,resolved]
  Custom distributions in FLY2.

  As of 8.0.4-TEST2, a custom distribution can be incorporated as
  folllows in a FLY2 file.  The distribution is defined by a function
  that returns a random number.

    function my_dist() return simion.rand() ^ 2 end
    particles {
      standard_beam {
        n = 100,
        ...
        ke = distribution(my_dist)
      }
    }

  Feature is undocumented in SIMION 8.0.2 manual.

  FLY2 files with custom distributions cannot be fully saved from
  the SIMION GUI.  Edit with a text editor instead.

  Discussed further in http://www.simion.com/discuss/viewtopic?p=1628

  Resolved in 8.0.4-TEST2

Issue I408 [80,recording,resolved]
  False "The Data Recording (or Trajectory) File Has Filled Your Disk"
  message in batch mode.

  When flying an IOB file in batch mode, where the IOB records data
  to a file (such as from a workbench user program), you may see this
  error message in the output:

    error,Aborting Trajectories:
    The Data Recording (or Trajectory) File Has Filled Your Disk
    Either Remove Files From Your Disk to Increase Space or
    Depress Rerun Button AFTER Starting a Fly'm
    to Avoid Saving Trajectory Images to Disk

  Cause: SIMION was attempting to write to a closed file handle and
    was failing.

  To reproduce:
    In the Einzel example, create an einzel.lua workbench program
    that outputs something:

      simion.workbench_program()
      print(123)

    From batch mode (e.g. "simion.exe --nogui lua"), run this command
    twice:

      simion.command("fly --recording-output=out.txt einzel.iob")

    The second run gives the error message above.

  Note: also this error can display if SIMION cannot write a temporary
  trajectory file (e.g. write permissions are disabled on the current
  directory).  The error message is improved in 8.0.4-TEST21.

  Affects 8.0.3 and likely prior versions.
  Resolved in 8.0.4-TEST3.

Issue I409 [80,HIGH]
  Allow ion_color to be read in the terminate segment?

  Reported by adam-20070612
  http://www.simion.com/discuss/viewtopic?p=1670#1670

Issue I410 [80,recording,resolved]
  Crash on flying in batch mode when "Describe Ions" data recording
  option enabled.

  If a workbench is flown in batch mode and "Describe Ions" is enabled
  in the data recording options, SIMION may crash.  A workaround
  is to disable this option.

  Note: as of 8.0.4-TEST4, the header is now printed after the
  "Begin Next Fly'm" line in the data recording file.

  Reported by tbraun-20070618.

  Affects 8.0.3 (not 8.0.2).
  Resolved in 8.0.4-TEST4

Issue I411 [80,gem,resolved]
  GEM files with include statements and *nix line terminators may
  give false compilation errors.

  Reason: Prior to 8.0.4-TEST4, GEM was using seek/tellg calls, which have
  undefined behavior on *nix line terminators.

  Affects 8.0.0-8.0.3.
  Resolved in 8.0.4-TEST4

Issue I412 [80,printing,high,resolved]
  "File name too long" error message when printing.

  "File name too long" may display when printing.  This seems to only
  occur if an extension is not explicitly provided on the output file
  name (in the print options).  A workaround for now is to explicitly
  provide an extension on the file name (e.g. "output.wmf" rather than
  "output").

  Reported by bernheim-20070621:
    http://www.simion.com/discuss/viewtopic?p=1698#1698

  Also, problems if file name is abosolute path or contains dots.

  Affects 8.0.0-8.0.3
  Resolved in 8.0.4-TEST4

Issue I413 [refine,enhancement,med-high,mostlyresolved]
  Allow resume of a terminated PA# refine.

  Prior to 8.0.4-TEST14, if a refine of a PA# file was terminated,
  there was no easy way to resume the refine.  (In contrast, refines
  of regular PA files can be terminated and resumed quite simply.)
  One needed to restart a terminated PA# refine from the beginning.
  This remained true even if some electrode solution files (.PA_,
  .PA1, .PA2, etc.) were written do disk because there was no way to
  tell SIMION to reuse those files and resume at the next electrode.

  As of 8.0.4-TEST14, if a refine of a PA# file is terminated, SIMION
  can resume the refine by reusing any electrode solution files that
  exist on disk.  Any calculations on the current electrode are still
  discarded though because the solution file for an electrode is not
  written to disk until the electrode is fully calculated (there is
  room to enhance that in the future though).

  The way this now works is that if SIMION is told to refine a PA#
  file and the PA0 file does not exist (note: file is now generated
  last) AND only some electrode solution files exist AND the file
  modification date on the first solution file is after the file
  modification date on the PA# file, then SIMION will prompt the user
  if one wants to resume the refine.

  Requested by bernheim
    http://www.simion.com/discuss/viewtopic?p=1704
    http://www.simion.com/discuss/viewtopic?p=915

  Implemented in 8.0.4-TEST14

Issue I414 [pa,enhancement,resolved]
  Allow PA# electrode numbers to be non-sequential (skipped).

  Prior to 8.0.4-TEST4, electrode numbers in .PA# files
  had to be sequential starting from 1: 1V,2V,3V,....
  This restriction is removed in 8.0.4-TEST4.  For example,
  you could create a .PA# file with potentials 3V and 5V,
  in which case there will be two fast adjustable electrodes
  (3 and 5), with corresponding solution array files with
  extensions .PA3 and .PA5, and corresponding programming
  variables adj_elect[3] and adj_elect[5].

  This also works in conjunction with Issue I172 (multiple fast
  scalable electrodes).  For example, a PA+ file might contain

    potential_array {
      scalable_electrodes = {
        [3] = {[4] = 1, [6] = 2}
        [5] = {[10] = 1, [11] = 0.3, [14] = 0.7}
      }
    }

  Support for non-sequential numbering of electrodes has a number of
  uses, including if you have a GEM file for a PA# that you later
  split up into multiple PA# files.  You may wish to avoid renumbering
  electrodes in the splitted PA# files and instead preserve the same
  electrode numbering scheme throughout the workbench.

  In a user program, it is now not an error to write to an
  electrode (e.g. adj_elect[n] = 100) where the electrode number n
  does not exist in the current PA (identified by the ion_instance
  reserved variable) but does exist in another PA in the workbench.
  Doing so has no effect.

  Added in 8.0.4-TEST4

Issue I415 [gui,pe,enhancement,resolved]
  Allow PE/Contour views of PA's with no electrode points.

  Prior to 8.0.4-TEST5, SIMION refused to show PE views or auto
  contours of PA's containing no electrode points (even if the
  non-electrode points have meaningful potentials, such as due to
  cropping - Issue I313).  This restriction is now removed.

  Affects 7.0 and 8.0.x. Resolved in 8.0.4-TEST5 and 8.0.4-TEST9.

Issue I416 [annotation,resolved]
  Annotation (.ANN) file incompatibility between version 7 and 8.0.0.

  SIMION 8.0.0 accidentally broke compatibility with version 7 in
  annotation (.ANN) files.  .ANN files written in version 8.0.0 cannot
  be read in version 7 and vice versa.  This is fixed in 8.0.4-TEST6,
  which saves .ANN filse in the original version 7 format.  For
  compatibility, 8.0.4-TEST6 and above will load the 8.0.0 format but
  gives a warning message and prompts the user to save in the version
  7 compatible format.

  Affects 8.0.0 to 8.0.4-TEST5.  Resolved in 8.0.4-TEST6.

Issue I417 [wmf,print,resolved]
  Printing .WMF files broken.

  Printing of .WMF files was broken in 8.0.0 onward but is fixed
  in 8.0.4-TEST6.  .WMF files written were corrupted.

  Affects 8.0.0 to 8.0.4-TEST5.  Resolved in 8.0.4-TEST6.

Issue I418 [programming,gui,enhancement,resolved]
  Allow opening workbench user program from Particles tab in View.

  A new "User Program..." button the Particles tab in View can be
  used to view an existing workbench Lua user program or create a new
  one.
  
  Original request by timl-open Lua source from PAs tab.

  Implemented in 8.0.4-TEST6

Issue I419 [test,doc,resolved]
  Performance test 6_cylindrical_pa_test docs should indicate
  radius 300 mm not 30 mm.

  Affects 7.0 and 8.0.x. Resolved in 8.0.4-TEST6.

Issue I420 [libraries,enhancement,resolved]
  New Bessel functions in SIMION Lua libraries.

  As of 8.0.4-TEST6, New Bessel special functions have been added to
  the simionx.SpecialFunctions library.  These are useful for
  expressing analytic solutions to the Laplace equation under
  cylindrical symmetry.

  bessel_i0(x) - first kind, order 0
  bessel_i1(x) - first kind, order 1
  bessel_in(n, x) - first kind, order n (non-negative integer)
  bessel_i0_zero(k) - k-th zero of first kind, order 0
  bessel_y0(x) - second kind, order 0
  bessel_y1(x) - second kind, order 1
  bessel_yn(n, x) - second kind, order n (non-negative integer)
  bessel_i0(x) - modified first kind, order 0
  bessel_i1(x) - modified first kind, order 1
  bessel_k0(x) - modified second kind, order 0
  bessel_k1(x) - modified second kind, order 1

  See "Libraries API Reference" in "Help|Browse Documentation" for details.

  Implemented in 8.0.4-TEST6.  

Issue I421 [enhancement,resolved]
  New "early access" mode for accessing 8.1 (or 9.0?) features.

  The production release of the next version of SIMION, i.e. 8.1,
  is in development; in fact, the 8.0.x updates are still very
  much in development.  However, a few version 8.1 features are
  currently implemented and can be tried out now by placing SIMION
  8.0.x in "early access" mode.

  To enable early access mode, you must have the latest "development
  version" of simion.exe (downloadable from the "Check for Updates"
  button on the SIMION 8.0 main screen).  "Release versions" will not
  work.  Then enter the following into the bottom SIMION command bar
  to enabled 8.1 features:

    simion.early_access()

  The details of the 8.1 version of SIMION are still very much
  subject to change, but the 8.1 version is
  currently planned to be an upgrade that can be purchased
  and will come with free 8.1.x updates.  8.0 users are
  being provided free access to the early access software until the
  formal release of the 8.1 version (after which 8.0 users can
  purchase the upgrade for continued use of the these early access
  features).

  Implemented in 8.0.4-TEST7/8.0.5-TEST.

  The following 8.1 features are already implemented:

    Programming:
    - Issue I422 - Manipulating PAs from Lua inside SIMION
    - Issue I496 - Manipulating workbenches from Lua in SIMION
    - Issue I498 - Resize SIMION window programatically.
    - Issue I243 - Manipulate/save/load View display programmatically
                   (may be delayed to 8.2)
    - Issue I518 - Access memory dump.
    - Issue I521 - New simion.print_screen() function to print current image.
    - Issue I564 - Programatically draw 3D lines on View screen
    GUI
    - If GUI enabled, "fly" batch mode command (Issue I182) runs in View screen.
    Printing:
    - Issue I523 - Printing to BMP, PNG, and JPG files now supported.
    Refining/Repulsion:
    - Issue I482 - Poisson solver (enhancement to Refine to take
      space-charge arrays)
    - Issue I503 - Fast Parallel .PA# refines (one solution per CPU core)
    - Issue I452.2 - New sim_repulsion_amount reserved variable.
    - Issue I452.3 - New ion_effective_charge reserved variable.
    Data Recording
    - Issue I231 - Allow splitting data recording output into
                   multiple files.
    Examples:
    - Issue I502 - New Bradbury-Nielson Grid example ("bradbury_nielson_grid")
    - Issue I499 - New induced current/charge example ("electrostatic_induction")
    - Issue I515 - PA instance jumping trick example ("nonideal_grid/pa_jump")

Issue I422 [81,enhancement,largelyresolved]
  Manipulating PAs from Lua inside SIMION

  NOTE: This is currently an 8.1 feature that is only available in the
  8.1 "early access" mode.  See Issue I421 for details.

  There are new functions for manipulating potential arrays from Lua
  inside SIMION.  This is similar to the SL Libraries, but the
  functions are accessed in Lua and operate directly on the PAs
  loaded inside SIMION.

  Examples:

    local pa = simion.pas[1]  -- Get first SIMION PA in memory.
    v = pa:potential(10,20,0)  -- get potential
    pa:potential(10,20,0, v)  -- set potential
    b = pa:electrode(10,20,0)  -- is point an electrode point
    pa:electrode(10,20,0, b)  -- set whether is an electrode point

  There are numerous other functions and properties.  The API is
  documented fully in the electronic documentation (Help|Browse
  documentation) by selecting "Libraries API Reference" and then
  "simion.pas" (it is the file "docs\lua_simion.pas.html").  It is
  strongly recommended that you download the latest version of the
  electronic documentation ("simion8-docs*.zip" from "Check for
  Updates") since this API is changing frequently.

  CHANGES:
  Largely implemented in 8.0.3-TEST4  provided "early access"
  mode is enabled.
  8.0.3-TEST21 - updated/expanded + documented in supplementary docs.
  8.0.3-TEST22 - new pa:fast_adjust{...} function.
  8.0.5-TEST13 - pa:clear() sets all points to 0V nonelectrodes.
                 pa:potential_add(xi,yi,zi, val) adds potential
                   val to potential at point (xi,yi,zi).
                 pa:copy(pasrc) copies all points from pasrc to pa
                   assuming array size identical.
  8.0.5-TEST17 -  pa:potentials_scale(a, b)
                    Scales all potentials v(x,y,z) in array pa by the
                    formula vnew(x,y,z) = a + b*v(x,y,z), where a and b
                    are constant numbers.
                  vmin,vmax = pa:potentials_minmax()
                     Returns the minimum and maximum potentials in the
                     array pa.
  8.0.5-TEST18 -
    v = pa(x,y,z) -- Applying the call operator to the array is
      identical to pa:potential_vc.
    pa.symmetry values changed to 
      "2dcylindrical", "2dcylindrical[x]",
      "2dplanar", "2dplanar[x]", "2dplanar[y]", "2dplanar[xy]",
      "3dplanar", "3dplanar[x]", "3dplanar[y]", "3dplanar[xy]",
      "3dplanar[z]", "3dplanar[xz]", "3dplanar[yz]", "3dplanar[xyz]"
  8.0.5-TEST20
    pa:potential_vc and pa:field_vc now take an optional table
      parameter to specify fast adjust electrode potentials (similar
      to the fast_adjust segment):
        potential = pa:potential_vc(10,0,0, {[1]=100, [2]=-100})
        ex,ey,ez = pa:field_vc(10,0,0, {[1]=100, [2]=-100})
    New pa.electrode_numbers field is an array of fast adjustable
      electrode numbers.
  8.0.5-TEST21
    New methods: instance:pa_to_wb_coords and wb_to_pa_coords
           instance:pa_to_wb_orient, instance:wb_to_pa_orient,
           instance:pa_to_array_coords
  8.0.5-TEST27
    simion.pas:open now returns nothing on success and raises on error.
    pa:load now raises on error.
  8.0.5-TEST29
    pa:close now raises on error.
    pa.filename now contains long filename Issue I422.
  8.0.5-TEST30
    simion.pas:clear renamed simion.pas:close.
  8.0.6-TEST6
    pa:rescale added (e.g. double/halve array)
    pa:refine convergence objective maximum limit no longer imposed.
    pa:field_vc corrected for magnetic arrays (magnetic field was not properly scaled by ng)
  8.0.6-TEST13
    In pa:potential_vc(x,y,z, t) and pa:field_vc(x,y,z, t), the table t now
      accepts an additional "exclusive=true"
      field which causes all electrodes not mentioned in the table
      to be set to 0 V.  These electrode solution arrays are not
      are not loaded into memory.
      Also, solution arrays for electrode numbers not mentioned in t
      are no longer automatically unloaded. 
  
  Sub-issues:
    Issue I422.1 - Fixed array corruption when
      doing simion.pas[n]:fast_adjust{...}, particuarly inside View screen.
    Issue I422.2 - pa:refine if long running now updates screen and
      responds to abort requests.

  See also Issue I496 - Manipulating workbenches from Lua inside SIMION

Issue I422.1 [81,resolved]
  Fixed array corruption when doing simion.pas[n]:fast_adjust{...},
  particuarly inside View screen.

  Noted by adrianm-20080221.

  Resolved in 8.0.5-TEST5.

  Parent issue: Issue I422

Issue I422.2 [81,resolved]
  pa:refine if long running now updates screen and responds to abort requests.

  Resolved in 8.0.5-TEST9.

  Parent issue: Issue I422

Issue I423 [iob,resolved]
  "No Potential Change Requested" displayed when loading an IOB.

  The warning/error message "No Potential Change Requested" can
  incorrectly display when loading an IOB with multiple PAs that are
  fast scalable.  This message can usually be ignored.  If the message
  does not display, it's possible the PAs might not be adjusted.

  Affects 8.0.3.  Resolved in 8.0.4-TEST8.

Issue I424 [batchmode,enhancement,resolved]
  New gem2pa and refine command line options to override pa_define

  These command-line options were added.

  In gem2pa, these options override any settings in the pa_define
  statement in the GEM file.

    --nx=d  number of grid points in x direction
    --ny=d  number of grid points in y direction
    --nz=d  number of grid points in z direction
    --symmetry=s  symmetry.  examples: 'cylindrical', 'planar', 'planar[xyz]'
    potential_type=s  'electric' or 'magnetic'
    --ng=d    magnetic scaling factor

  In refine, these options were added:

    --skipped-point=b  enabled skipped point refine (0=no,1=yes[default])

  Added in 8.0.4-TEST9.

Issue I425 [sllibraries,sltools,resolved]
  Automatically increase a PA's max_voltage in SL Libraries and SL Tools.

  A PA has a "max_voltage" field used by SIMION to encode whether each
  point in the PA is an electrode or non-electrode (see SL Libraries
  API).  As of 2007-07-11, the SL Libraries (and SL Tools) automatically
  increase a PA's max_voltage setting if an attempt is made to set a
  potential exceeding max_voltage.  Also, changing the max_voltage field
  now results in the array points automatically being updated.

  Prior to 2007-07-11, the SL Libraries would assert if one attempted
  to set a potential greater than max_voltage in the PA, and changing
  the max_voltage field did not update the array points.  This was the
  intended behavior, but the non-debug version of SL Tools did not
  include the assertion checks and so could fail on converting a PATXT
  file to a PA file (reported by munami -
  http://www.simion.com/discuss/viewtopic?p=1755 ).

  Resolved in SL Libraries as of 2007-07-11 and SL Tools
  (1.1.2-TEST1). Will be included in 8.0.4 release.

Issue I426 [fly2,enhancement,resolved]
  In FLY2, new "window" standard_beam attribute.

  "window" works just like "pupil" except the particle
  velocity is in the opposite direction.

  As an example, define the source as a spherical distribution and the
  window as a point in the center of the sphere.  The particles will
  start on the sphere and move normal to the sphere surface (in on the
  convex side) rather than toward the sphere center (as in the pupil
  type).

  Added in 8.0.4-TEST10.

Issue I427 [81,enhancement,example,mostlyresolved]
  New multipole expansion cofficient calculation example.

  The "multipole_expansion" example calculates the multipole expansion
  from potentials defined analytically or in a SIMION PA.

  NOTE: This is currently an 8.1 feature that is only available in the
  8.1 "early access" mode.  See Issue I421 for details.

  NOTE: equation in paper not correct. See README file.

  Added in 8.0.4-TEST10 (for 8.1).

Issue I428 [80,enhancement,example,resolved]
  New charge repulsion examples ("repulsion")

  New "repulsion" examples demonstrate accuracy of SIMION space-charge
  repulsion estimation methods for a variety of situations.

  Added in 8.0.4-TEST10

Issue I429 [80,enhancement,med-high,resolved]
  Define behavior of adj_elect[i] and adj_electXX for non-existent
  electrode numbers and #adj_elect.

  == SUMMARY ==
  
  The behavior of the `adj_elect` variable in user programs is
  currently as follows.

  `#adj_elect` returns the last adjustable electrode
  number in the current PA (as of 8.0.6-TEST11).  For example,
  if your PA0 has electrodes numbered 1, 2, 3, and 10,
  then `#adj_elect == 10`.  If your PA0 only has fast scalable electrodes
  (i.e. adjustable potential #0), then `#adj_elect == 0`.  `#adj_elect`
  is not accessible for arrays with no adjustable potentials
  (e.g. `fast_adjust` segment is not called).

  `adj_elect[i]` returns `nil` if `i` is a non-existant
  electrode (as of 8.0.5-TEST2).  Writing to `adj_elect[i]`
  for non-existant electrode `i` raises an error.  If your user
  program is not sure whether an electrode exists and is able
  to be written to, it may use code like this:

    if adj_elect[20] then adj_elect[20] = 10 end
  
  To iterate through all electrodes, you can do this:
  
    for i=0, #adj_elect do
      if adj_elect[i] then
        print(i, adj_elect[i])
      end
    end

  `adj_pole` is a synonym of `adj_elect`.

  This is also supported in PRG code (as of 8.0.5-TEST26).  PRG behavior
  is as follows.  `0 arcl adj_elect` is supported.  Storing to a non-existant
  electrode results in an error.  Skipped electrodes are allowed (Issue I414).
  Reading from a non-existant electrode always returns 0 (not `nil` since
  PRG doesn't support the concept of `nil`).

  == CHANGES ==

  As of 8.0.6-TEST11, `#adj_elect` in user programs now returns
  the maximum electrode number in the current array.  Previously it returned
  the number of contiguous electrodes starting at #1, which wasn't
  as useful.  This only affects arrays with skipped electrodes.
  
  As of 8.0.5-TEST2, `adj_elect[i]` returns `nil` if `i`
  is a non-existant electrode.  Writing to `adj_elect[i]`
  for non-existant electrode `i` raises an error.

  In 8.0.5-TEST2 - 8.0.6-TEST9, `#adj_elect` returned the number of
  adjustable electrodes having consecutive numbers starting at 1.
  Electrode 0 or electrodes following skipped numbers were not counted.
  This followed Lua conventions for tables but was not always useful.

  Prior to 8.0.5-TEST2, the behavior of #adj_elect and
  adj_elect[n] for undefined electrode n was undefined.  However, in
  practice, reading or writing to a non-existance electrode raised an error
  (except in cases of skipped electrodes (Issue I414), where no error
  was generated).  Here is a workaround that can be used in versions
  prior to 8.0.5-TEST2 for detecting electrodes:
    -- Returns true/false whether electrode # n exists in active PA.
    local function exists_electrode(n)
      return (pcall(function() return adj_elect[n] end))
    end
    --Note also: adj_elect[0] returns electrode 0 even if not exist.
    --adj_elect[0] = 0 may crash if electrode 0 not exist

  Request based on tbraun-20070810/200801
    http://www.simion.com/discuss/viewtopic?p=1803

  Implemented in 8.0.5-TEST2 through 8.0.6-TEST11.

Issue I430 [defect,70,med-high,resolved]
  Longest time-step calculation incorrectly handles mm/gu scale factor.

  Prior to SIMION 8.0.4-TEST11, when a particle flew in PA instance
  with a scale factor different from 1 mm/gu, the time-step sizes were
  slightly different than as described in the manual (at least under
  non-zero accelerations).  As of SIMION 8.0.4-TEST11, SIMION was
  changed to be consistent with the manual.

  In Section H.21 "Adjustable Time Steps" of the SIMION 8.0 manual (or
  E-13 of the SIMION 7.0 manual), it says that

    t_v = a/dv and t_a = sqrt(2 * d / a)

  where d is the mm per grid unit scaling factor of the array (which
  by default is 1).  The manual is correct here, but the code was
  instead doing t_a = sqrt(2 / a), which omitted the d.  When d=1
  mm/gu (typical case), there is no difference between the two, but
  other values of d can cause the final time step size to deviate by
  a small factor of a few (typically << 10).  This problem was in fact
  first observed by emma1281, 2007-07-27 (
  http://www.simion.com/discuss/viewtopic?p=1780 ) in that the number
  of time steps was curiously dependent upon the mm/gu scaling factor.
  In theory, trajectories in electrostatic systems are completely
  independent of the scaling of the system, so it would seem
  reasonable even for the number of time-steps to be invariant under
  system scaling.

  Normally, this error does not cause a problem because the user
  typically does not require particular time step sizes: With properly
  set time-step sizes, the trajectories should be near identical if
  the time-step sizes increase or decrease an order of magnitude.
  SIMION is further allowed to modify time-step sizes when it seems
  useful.  You can attempt to force particular time step sizes with a
  tstep_adjust segment in a user program as below, though even this is
  only a "requested" time-step size:

    simion.workbench_program()
    function segment.tstep_adjust()
      -- force approx. one grid unit step
      ion_time_step = ion_mm_per_grid_unit / ion_vx_mm
    end

  The following steps reproduce this error in SIMION versions prior to
  8.0.4-TEST11:

    (1) In the "drag" example, add these lines to drag.lua to count the number
    of time steps:

      local count = 0
      function segment.other_actions()
        count = count + 1
        print("count=",count)
      end

    (2) Run the simulation with trajectory quality (TQual in PAs tab) set to
    0 and at 1, 100, and 0.01 mm/gu scaling factors (in the PAs tabs).
    The counts displayed in the Log window are

      mm/gu   count
      -----   -----
      0.01    1347
      0       1557
      100     3687

    (In SIMION 8.0.4-TEST11, the counts are now identical.)

  Affects 7.0 and 8.0.  Resolved in 8.0.4-TEST11

Issue I431 [80,batch,defect,resolved]
  Lua _G table wasn't shared between batch mode program and workbench
  program in non-GUI mode.

  The global table, _G, can be useful for communicating information
  between a Lua workbench user program and a Lua batch mode
  program call that flies the workbench.  For example,

    -- batch.lua (batch mode program)
    simion.command("fly test.iob")
    print(_G.result)  -- print result of Fly'm
    
    -- file: test.lua (workbench program attached to test.iob)
    simion.workbench_program()
    function segment.terminate()
      _G.result = ion_py_mm   -- return Fly'm result
    end

  Prior to SIMION 8.0.4-TEST11, this would only work if you ran the
  batch mode program via the SIMION GUI ("Run Lua Program" button").
  If you ran it from the command-line, the data will not get passed.
  The reason for this was that SIMION was actually creating two
  isolated Lua states for the batch mode and workbench programs
  (easily confirming by doing print(_G) in both programs).

  As of 8.0.4-TEST11, SIMION only creates a single Lua state, so you
  can use the above idiom.  In fact, the "geometry_optimize" example
  has been updated to use this new style (rather than passing data via
  a file).

  Resolved in 8.0.4-TEST11.

Issue I432 [sltools,resolved]
  SL Tools crashes if STL file name (or wildcard pattern '%') specified
  does not match any files.

  Related report: http://www.simion.com/discuss/viewtopic?p=1813

  Affects sltools 1.1.1 and below.  Resolved in 1.1.2.

Issue I433 [70,ion,resolved]
  Last field in ION file dropped if new-line or white-space missing
  at end of file.

  If there is not a new-line (or white-space) character at the end
  of an ION file, the last field on the last line (typically color)
  will be dropped.  This is fixed in 8.0.4-TEST12.

  Reported by dennisc-20070830.

  Affects 7.0 - 8.0.3.  Resolved in 8.0.4-TEST12.

Issue I434 [70,keep,minor,resolved]
  Pressing Keep twice in View clears trajectories.

  Prior to 8.0.4-TEST12, the current trajectories were
  swapped to the kept trajectories even if no new current
  trajectories existed (e.g. when pressing Keep a second time).
  In 8.0.4-TEST12, Keep has no effect if there are no
  current trajectories.

  Reported by dennisc-20070829.

  Affects 7.0 - 8.0.3.  Resolve in 8.0.4-TEST12.

Issue I435 [gui,resolved]
  When Fly'm terminates, display number of trajectories flown.

  Reported by dennisc-20070829.
    When Flying trajectories, status line displays the # of the current
    trajectory, but when done says "Fly completed" (in 8.0.3).  There
    are times when I see something happen with a particular trajectory,
    so I "Quit" to terminate the run.  It would very helpful if the
    status line said how many trajectories have been flown so far.

  Resolved in 8.0.4-TEST12.

Issue I436 [gui,minor,resolved]
  Unrefined status ("!") not display correctly after fast adjusting
  PA# file.

  If a .PA# file is loaded and you click Fast Adjust, the unrefined
  flag ("!") remains displaying on the .PA0 file that gets fast
  adjusted (until you reload the .PA0 file).

  Affects 8.0.2. Resolved in 8.0.4-TEST4

Issue I437 [enhancement,refine,resolved]
  Eliminate unnecessary .PA# reloading in Refine (performance)

  Prior to 8.0.4-TEST14, when SIMION refined a .PA# file, it would
  reload the .PA# file, reload the .PA# before each solution file refine
  (.PA0, .PA_, .PA1, .PA2, etc.), and reload the .PA# file following the
  refine.  Some of this reloading can be eliminated for improved performance.

    reload .PA#
    reload .PA# and refine .PA0
    reload .PA# and refine .PA1
    reload .PA# and refine .PA2
    ...
    reload .PA#

  As of 8.0.4-TEST4, the first two and final .PA# reloads are
  eliminated.  The .PA0 file is now generated last, and following a
  successful refine, the .PA0 remains in memory.  After all, the .PA0
  is the final solution file you subsequently fast adjust or add to a
  workbench.

    refine .PA1
    reload .PA# and refine .PA2
    ...
    reload .PA# and refine .PA0

  Reported by bernheim-20070906 in http://www.simion.com/discuss/viewtopic?p=1827

  Implemented in 8.0.4-TEST14

Issue I438 [enhancement,particledef,resolved]
  Extend az/el angle range in particle definitions from +-180 to +-360
  degrees.

  Prior to 8.0.4-TEST15, azimuth and elevation angles were
  limited to the range +-180 degrees in ION, FLY, and FLY2 files.
  This sometimes made beam definitions in the -X direction more difficult
  as noted in the below report.

  As of 8.0.4-TEST15, the azimuth and elevation angle range has
  been extended to +-360 degrees.

  Reported by bernheim-20070920
    - http://www.simion.com/discuss/viewtopic?p=1876
    I would like to apply an uniform distribution from 179 and 181°
    for instance).

  Implemented in 8.0.4-TEST15.

Issue I439 [enhancement,example,resolved]
  New RF octupole ion guide example - examples/octupole.

  Implemented in 8.0.4-TEST15.

Issue I440 [80,defect,fly2,resolved]
  KE precision error when defining very low speed or momentum in FLY2.

  Prior to 8.0.4-TEST16, if in FLY2 file "velocity format" was defined
  as "direction+speed" and v/c was small (< about 10^-7), where v is particle
  speed and c is speed of light, then particle KE can be off significantly
  (> about 3%).  The FLY2 code was using a full relativistic calculation
  for converting speed to KE, and that calculation lacked numerical precision
  at very low v/c.  This defect does not affect other parts of SIMION
  (e.g. speed_to_ke function).  As of 8.0.4-TEST16, the FLY2 code uses
  the built-in speed_to_ke function, which doesn't have this precision problem.

  Similarly, prior to 8.0.4-TEST14, if in FLY2 file "velocity format" was defined
  as "direction+momentum" and momentum/mass was small (< about 10^-4), where
  momentum in units of MeV/c and mass in units of u,
  then particle KE can be off significantly (> about 1%).

  Affects 8.0.0-8.0.4-TEST15.
  Resolved in 8.0.4-TEST16.

Issue I442 [80,enhancement,example,resolved]
  New lens property examples.

  The new "lens_properties" examples demonstrate analyzing basic
  electrostatic lens properties, such as determination of focus
  points, magnification, and aberration coefficients by ray tracing,
  as well as analyzing basic theorems (Helmholtz-Lagrange Law and
  Snell's Law) and plotting various lens curves.

  Implemented in 8.0.4-TEST16

Issue I443 [80,gui,minor,resolved-unresolved]
  Canceling PAs|Rpl or Saving .REC file stops display update.
  To reproduce:
    Case 1:
      Load IOB in View.
      In PAs tab click Rpl but immediately cancel the dialog box.
      Attempt to 2D zoom.  Display does not update.
      (Fixed in 8.0.4-TEST17)
    Case 2:
      Load IOB in View
      In Data Recording screen, save and then cancel the dialog box
      Attempt to 2D zoom.  Display does not update.
      (Fixed in 8.0.4-TEST19) 

  Affects 8.0.0
  Resolved in 8.0.4-TEST17/8.0.4-TEST19.

Issue I444 [80,enhancement,api,resolved]
  simion.import() now returns return values

  Prior to 8.0.4-TEST17, simion.import did not return
  any values.

  As of 8.0.4-TEST17, simion.import(filename) behaves more like
  dofile(filename) in that it returns any values returned by the
  script filename.  This is useful for things like

    -- util.lua
    local M = {}
    function M.test() print(ion_px_mm) end
    return M

    -- example.lua
    local util = simion.import 'util.lua'
    util.test()

  Implemented in 8.0.4-TEST17.

Issue I444.2 [80,exhancement,api,resolved]
  simion.import() now accepts parameters to forward to loaded function.

  As of 8.0.5-TEST13, simion.import() can accept additional parameters
  that will get passed to the function loaded.

    -- file: hello.lua
    local a,b,c = ...
    print(a,b,c)

    -- file: main.lua
    simion.import('hello.lua', 5,6,7)

  Implemented in 8.0-5-TEST13.

Issue I445 [80,defect,gui,resolved]
  Fast Adjust Voltages sometimes disabled on View screen.

  The "PAs|Fast Adjust Voltages" button on the View screen is sometimes
  wrongly disabled when the array has a long file name.

  Affects 8.0.0.
  Resolved in 8.0.4-TEST17.

Issue I446 [80,defect,lua,minor,resolved]
  Convert Lua errors to strings.

  The tostring() function is now applied to any Lua error
  object before displaying it.

  Example: Prior to 8.0.4-TEST17,
    error({}) resulted in "unrecognized lua error" rather than
    the string representation of the table.

  Affects 8.0.0.
  Resolved in 8.0.4-TEST17.

Issue I447 [80,defect,lua,minor,resolved]
  print() or print '' not output blank line

  Prior to 8.0.4-TEST17, a print statement having
  zero characters does not still generate the trailing
  new line in the Log window.  The new line is generated
  in 8.0.4-TEST17.

  Affects 8.0.1
  Resolved in 8.0.4-TEST17

Issue I448 [80,enhancement,resolved]
  Preserve adjustable electrode potentials when replacing PA in View.

  As of 8.0.4-TEST17, when an array instance is replaced with another
  ("PAs|Rpl" button), a new option is presented to fast adjust the
  adjustable electrode potentials in the new instance to match those
  of the old instance.  This option displays as the prompt "Restore
  adjustable electrode potentials in new array instance to match those
  of the array instance being replaced?"  This option is only provided
  when the orignal and new arrays are both fast adjustable solution
  arrays (e.g. .PA0 files).  Any electrode numbers defined in the new
  instance but absent in the old instance are left unchanged.

  Suggested by tbraun-20071007 due to frequently changing PA, saving
  as a new name, and replacing the new version into the workbench.

  Implemented in 8.0.4-TEST17

Issue I449 [70,defect,gui,minor,resolved]
  Preserve "nz use" value upon replacing 2D PA in View

  Prior to 8.0.4-TEST18, if 2D PA was replaced with another 2D PA in
  View, the "nz use" setting was reset to the default rather than
  using preserving the "nz use" setting of the original array.  For
  example, replacing quad.pa0 with itself (quad.pa0) in quad.iob
  causes quad.pa0 to be resized in z.  This is fixed in 8.0.4-TEST18.

  Affects 7.0.0.
  Resolved in 8.0.4-TEST18

Issue I450 [80,gui,enhancement,resolved]
  Lua expressions supported in text box controls.

  As of 8.0.4-TEST18, Lua expressions can now be used in most text
  box controls.  Just type '=' followed by the expression.  For
  example, with the "quad" example open in View, click on the
  Variables tab, and in the _percent_tune variable field type

    =20*4

  which results in 80.

  Implemented in 8.0.4-TEST18.

Issue I451 [80,fly2,gui,enhancement,resolved]
  Add line_distribution to FLY2 GUI

  In 8.0.4-TEST18, the "line_distribution" distribution has been
  added the GUI.  Previously this could only be input in text mode.

  Implemented in 8.0.4-TEST18.

Issue I452 [80,rec,enhancement,resolved]
  Add charge weighting factor (CWF) to Data Recording output and
  add new ion_cwf reserved variable.

  As of 8.0.4-TEST19, the CWF can be enabled for data recording.
  The REC format has been extended to support this selection.
  The REC format remains backward and forward compatible with
  earlier versions of SIMION.

  Furthermore, user programs can read or write the CWF through a new
  "ion_cwf" reserved variable.  ion_cwf has the same segment access
  permissions as ion_charge.

  Comment:
    This capability also allows the following useful trick.  Any CWF
    specified in an .ION input file can be carried over to the CWF
    field in the Data Recording output.  This is true even if charge
    repulsion effects are disabled, in which case SIMION otherwise
    ignores the CWF field, but you may use the CWF field for your own
    purpose to carrying over user-defined data concerning individual
    particles between input and output files.

  Requested by igor-20071024.

  Implemented in 8.0.4-TEST19.

Issue I452.2 [80,prog,81,enhancement,partlyresolved]
  New sim_repulsion_amount reserved variable.

  The "repulsion amount" used in SIMION's charge repulsion features is
  not currently controllable via a workbench user program (though
  there is a "--repulsion-amount" option to the "fly" command when
  running in batch mode -- see Appendix M of the manual).

  However, in 8.0.5-TEST15 (8.1 early access mode--Issue I421), a new
  "sim_repulsion_amount" variable is available that allows the
  repulsion amount to be read and written.  Reading is allowed in all
  segments.  Writing is allowed in the initialize, other_actions, and
  terminate segments and at the top-level.

  Requested by pegc-20080331
     http://www.simion.com/discuss/viewtopic?p=2292

  ALSO NOTE: controlling repulsion type via a user program? 
  e.g. none/beam/coul./factor.  This is related to programmatic
  control of the Grouped option that will be an 8.1 mode feature.  

  Added in 8.1 early access mode (8.0.5-TEST15).

Issue I452.3 [enhancement,prog,81,resolved]
  New ion_effective_charge reserved variable.

  The ion_charge variable contains the per-particle charge in
  elementary charge units.  However, when charge repulsion features
  are used (Beam, Coulombic, or Factor repulsion), each traced
  particle can represent more than one real particle (possibly
  millions).  The precise number is controlled by the global charge
  repulsion amount on the Particles tab (or the sim_repulsion_amount
  variable -- Issue I452.2) and the charge-weighting-factors on the
  individual particles (or the ion_cwf -- Issue I452).  The ion_charge
  variable does not take any of this into account.

  As of 8.0.5-TEST20, a new ion_effective_charge variable is
  available.  This value contains the real charge represented by the
  particle.

  When Coulombic or Factor repulsion is used, each particle traced
  represents a point (or cloud) of charges, and ion_effective_charge
  represents the total charge (in elementary charge units) of that
  point.

  When Beam repulsion is used, each particle trajectory instead
  represents a current (in A).  That is a density of charge B<per>
  time or distance traveled, so it's not as clear how to define
  ion_effective_charge.  We choose ion_effective_charge to represent
  the charge (in elementary charge units) in the current time-step.
  Current (in A) can be obtained by 1E+6 * 1.6021773349E-19 *
  ion_effective_charge / ion_time_step.  (In the initialize segment,
  ion_time_step is not defined; but you can treat it as 1 microsecond
  in the above formula.)

  ion_effective_charge can be read anywhere ion_charge can be read.
  It is not writable.

  Added in 8.1 early access mode (8.0.5-TEST20).

Issue I453 [70,chargerepulsion,critical,resolved]
  Modifying ion_charge can cause charge repulsion effects to be wrong.

  Prior to 8.0.4-TEST19, if a user program modifies the ion_charge
  variable, then charge repulsion effects (if enabled) may not
  calculate correctly.  This likely affects only beam and Coloumbic
  repulsion (but not factor repulsion).  This is because some charge
  repulsion variables were being precalculated before the Fly'm and
  not updated if ion_charge changes.

  As of 8.0.4-TEST19, it is safe to modify ion_charge (as well as the
  new ion_cwf variable) when using charge repulsion effects.

  Affects 7.0.
  Resolved in 8.0.4-TEST19 (test case t3).  Not patched in 7.0.

Issue I454 [80,programming,defect,resolved]
  Prohibited access to reserved variables not triggering
  error, or error message identifies wrong variable name.

  Prior to 8.0.4-TEST19, no error was raised on a Lua segment
  attempting to write to a reserved variable not writable in any
  segment.  For example, this did not trigger an
  error in Release builds (but only an assert in Debug builds):

    function segment.accel_adjust() ion_dvoltsy_mm = 1 end

  This correctly triggers an error but the error message identifies
  the wrong variable name:

    function segment.initialize() ion_mm_per_grid_unit = 1 end

  Affects 8.0.0
  Resolved in 8.0.4-TEST19 (test case t2)

Issue I455 [gui,defect,resolved]
  simion.redraw_screen() crashes if executed after exiting Modify/View screen.

  Affects 8.0.0
  Resolved in 8.0.4-TEST19

Issue I456 [ion,defect,resolved]
  ION definitions with parameters out of range can be loaded without
  warning and truncated by the particle definition screen.

  Prior to 8.0.4-TEST20, it was possible to load particle definitions
  from an ION file or FLY2 definition with parameters outside the
  normally permitted range (e.g. mass = 1E+200 u).  This may run fine,
  but the Particle Definition screen can silently truncate these
  parameters to their normal ranges when the user does not expect it.
  Also, if the certain parameters like mass were negative in the
  ION definitions, they were silently  converted to their absolute
  values (without warning).

  As of 8.0.4-TEST20, particle parameters are fully checked when
  loading from an .ION file or converting .FLY2 definitions to an .ION
  file.  Errors are also reported more precisely to the user.

  Reported by igor-20071031

  Affects 7.0
  Resolved in 8.0.4-TEST20

Issue I457 [ion,enhancement,resolved]
  Charge weighting factor (CWF) permitted range changed to [0, 1E+30].

  Prior to 8.0.4-TEST20, the CWF for particles was restricted to the
  range [0.001, 100] (though it was still possible to use values
  outside this range as noted in Issue I456).

  As of 8.0.4-TEST20, this range has been modified to [0, 1E+30].

  The original rationale for this change is related to Issue I452,
  where the CWF is not used for charge repulsion but rather for data
  recording purposes.  Also, having a CWF of 0 could be useful for
  some circumstances, and changes made in Issue I453 now allow
  this.

  Requseted by igor-20071031

  Implemented in 8.0.4-TEST20

Issue I458 [temppath,enhancement,resolving]
  New "--temp-path" command-line option for modifying default
  path for temporary files.

  By default, temporary files such as ion trajectories (trj*.tmp)
  are stored in the current working directory (normally the
  same directory as the IOB file).  A new "--temp-path" command
  line option in 8.0.4-TEST20 allows a different directory
  to be used.  An example of the command-line options for
  starting SIMION is
  
    simion.exe --temp-path=c:\temp

  Requested by igor-20071101

  Implemented in 8.0.4-TEST21

Issue I459 [sllibraries,critical,resolved]
  SL Libraries pa.field_real gives wrong signs for negative y or z in cylindrical symmetry.

  Resolved in 8.0.4-TEST21 (SL Libraries 2007-11-08)

Issue I460 [enhancement,example,resolved]
  Updated gauss_law example.

  This is based on the totalcharge example in 8.0.0/SL but rewritten
  in Lua and extended (e.g. new field energy calculation).  It uses
  new Lua simionx.FieldAnalysis and simionx.Integration libraries.

  Implemented in 8.0.4-TEST21 (Lua version requires 8.1 early access mode)

Issue I461 [defect,wine,resolved]
  Particle flying gets very slow after switching tab in View under
  Wine/Linux.

  Under Linux Wine 0.9.30 and below, particle flying can slow down
  considerably after switching to a different tab in View.  This
  primarily affects SIMION 8.0.3-TEST6 to 8.0.4-TEST23 but also
  affects 8.0.0-8.0.3 if the "Hide" tab is selected.

  The recommended resolution is to upgrade to the latest version of
  Wine since this was likely a bug Wine 0.9.30 and below.  Alternately
  (or also) upgrade to SIMION 8.0.4-TEST24, which implements a
  workaround that "seems" to work in Wine 0.9.30 and below.

  Reported by jonas-20071119
    http://www.simion.com/discuss/viewtopic?p=2020#2020

  Internal note: trigged by Freeze/Thaw in service_notebook.

  Affects wine-0.9.30 with SIMION-8.0.0 to SIMION-8.0.4-TEST23.
  Resolved in wine-0.9.31 and/or SIMION-8.0.4-TEST24.

Issue I462 [enhancement,lua,high,resolved]
  Add simion.sleep(seconds) function.

  The simion.sleep function sleeps (pauses SIMION) for the given
  number of seconds.  seconds is a real number and can represent
  fractions of seconds.  The sleep will be aborted if the user
  presses the ESC key.

  Using sleep is preferrable to a busy wait (e.g.
  "local t0 = os.time(); while os.time() < t0 + seconds do end")
  because sleep processes user input and screen updates during
  the sleep, thereby avoiding a screen freeze during the sleep.

  Note: a workaround in earlier version of SIMION is to define this
  function:

    local function sleep(seconds)
      local t0 = os.time()
      while os.time() < t0 + seconds and simion.key() ~= 27 do end
      -- note: 27 is ESC key
      -- note: fractional seconds are ignored
    end

  Suggested in http://www.simion.com/discuss/viewtopic?p=2092

  Implemented in 8.0.4-TEST25.

Issue I463 [80,mostlyresolved]
  Formal support for Intel-based Mac OS X running Windows version of SIMION

  Running the Windows version of SIMION 8.0 on Intel-based Mac OS X is now
  formally supported via the following three methods.  (Note: older
  PowerPC-based OS 9 Macs will generally not work well or at all.) 
  These methods have been tested by SIS and work quite well.

  * CrossOver Mac (Windows compatibility layer) - see Issue I464
    [ http://www.codeweavers.com/products/cxmac/ ]
  * VMWare Fusion (virtualization) - see Issue I466
    [ http://www.vmware.com/products/fusion/ ]
  * Parallels (virtualization) - see Issue I465
    [ http://www.parallels.com/en/products/desktop/ ]

  Other less-formally supported methods may work as well, particularly
  virtualization software like VMWare/Parallels.  See also
  http://www.simion.com/info/Mac_OS .

  WINDOWS LICENSING: Using CrossOver DOES NOT require a Windows
  license.  Using virtualization software like Parallels and VMWare
  VMWare DOES require you have and install a licensed copy of Windows
  into the virtual machine (Windows is purchased separately).  The
  CrossOver method can be more cost effective.

  PERFORMANCE: Both CrossOver and virtualization (VMWare and
  Parallels) run largely at native speeds, though CrossOver particle
  flying seem about half speed (see Issue I464).

  MEMORY USAGE: SIMION under both Parallels, VMWare, and CrossOver has
  a memory limit of roughly 1.2 GB, of 130 million points, or higher
  per PA (when the "--reserved-memory" option is used).  This may
  depend on guest OS and virtual machine memory allocation settings
  (which were not fully explored during testing).

  EXCEL [CONDITIONALY SUPPORTED]: Controlling Excel from SIMION is
  only supported via virtualization (i.e. Parallels/VMWare not
  CrossOver) and only if Excel is a Windows version installed on the
  virtual machine.  (See Issue I464 on this for details.)

  SIMION 8.0.5 may freeze when using CrossOver versions prior to 7.10.
  Either upgrade CrossOver to >= 7.10 or downgrade SIMION to <= 8.0.4.

  SUMMARY: SIMION 8.0 runs well on all the above options.  There is
  some slowdown in particle flying under CrossOver.  If you want
  integration with (Windows) Excel you should use virtualization
  (VMWare or Parallels), but if you want better integration with OS X
  applications you might want to instead use CrossOver since SIMION
  will then run more like an OS X application.  SIMION 7.0 works ok on
  all the above but seemed to run most smoothly under Parallels
  (SIMION 7.0 does some tricky things with the mouse that cause some
  non-critical mouse behavior issus under CrossOver and VMWare).

  Added December 2007.

Issue I464 [80,mostlyresolved]
  Formal support for CrossOver Mac on Intel-based Mac OS X.

  OVERVIEW: As of December 2007, SIS is formally supporting running
  the Windows version of SIMION 8.0.x on Intel-based Mac OS X via
  a third-party application called Codeweavers CrossOver Mac (
  http://www.codeweavers.com/products/cxmac/ ).
  
  For details, see http://simion.com/info/mac_os.html

Issue I465 [80,mostlyresolved]
  Formal support for Parallels on Intel-based Mac OS X.

  OVERVIEW: As of December 2007, SIS is formally supporting running
  the Windows version of SIMION 8.0.x on Intel-based Mac OS X via a
  third-party application called Parallels Desktop for Mac (
  http://www.parallels.com/en/products/desktop/ ).
  
  For details, see http://simion.com/info/mac_os.html

Issue I466 [80,mostlyresolved]
  Formal support for VMWare Fusion on Intel-based Mac OS X.

  OVERVIEW: As of January 2008, SIS is formally supporting running the
  Windows version of SIMION 8.0.x on Intel-based Mac OS X via a
  third-party application called VMWare Fusion for Mac (
  http://www.vmware.com/products/fusion/ ).
  
  For details, see http://simion.com/info/mac_os.html

Issue I467 [805,high,resolved]
  Fail saving an array larger than 64MB on a network share.

  Saving an array larger that 64MB on a network share
  can give the error message "Failed writing PA file: Invalid argument".
  This is due to a limitation in the operating system[*].

  References:
  [*] http://support.microsoft.com/default.aspx?scid=kb;en-us;899149

  Affects 8.0.0-8.0.4.
  Reported on WinXP (other OS's not tested).

  Resolved in 8.0.5-TEST1 (related to Issue I468).

Issue I468 [feature,resolved]
  Improve responsiveness on PA load/save (Asynchronous I/O).

  Prior to 8.0.5-TEST1, the SIMION GUI would freeze and not respond to
  events while a large PA was loading or saving (which can be over a
  minute for large PAs stored on a remote network share), and it was
  not possible to cancel the load/save other than by terminating
  the process.

  Reported by tbraun-20080116
    http://www.simion.com/discuss/viewtopic?p=2116

  In 8.0.5, SIMION responds to events while PA loading/saving occurs,
  and the operation can be aborted by pressing the ESC key.

  See also OS X CrossOver note in Issue I463.

  Implemented in 8.0.5-TEST1.

  Update: 8.0.5-TEST29:
    Load PA files without applying read lock.  Previous 8.0.5
      versions had a read lock preventing two SIMION processes loading the same PA
      simulataneously.
    Confirm any cancel requests (ESC key) by user.
    Also, possibly improved error checking.

  Update: 8.0.5-TEST30:
    Fixed freeze on PA load/save, particularly under Win2K and Wine/Linux,
    though also could occur on XP (selecting "Help|Browse Documentation"
    menu item when loading PA).
    Reported by glync-20081124
  
  Update 8.0.6-TEST10:
    Issue I558 fixes slowness introduced in 8.0.6-TEST8.
      "simion.debug.allow_asynchronous_io=false" can now be used to
      disable asynchronous I/O for debugging purposes.
  
  See also - Issue I560.

Issue I469 [80,mostlyresolved]
  Formal support for Intel-compatible Linux running Windows version of SIMION

  Running the Windows version of SIMION 8.0 on Intel-compatible Linux
  is formally supported via the following methods.
  These methods have been tested by SIS and work quite well:

  * Wine (Windows compatibility layer)
    [ http://www.winehq.org/ ]

  These methods also likely work well, though SIS itself might not
  have tested them:

  * VMWare (virtualization)
    [ http://www.vmware.com/ ]
  * Parallels (virtualization) - see Issue I465
    [ http://www.parallels.com/en/products/workstation/ ]

  For details, see http://simion.com/info/linux.html

Issue I470 [80,programming,lua,enhancement,resolved]
  Lua user programming.

  As of 8.0.0, user programs can be written in Lua scripting language
  (as well as PRG as in version 7.0).  Lua programs can also call in
  C/C++ routines (see the "extension" example), operate on COM objects
  (e.g. Excel -- see the "excel" example), and call external programs
  (os.execute or io.popen).

  For details, see Appendix L. "User Programming" in the SIMION 8.0
  user manual, as well as the many examples that make use of user
  programming.

  Furthermore, Lua commands can be entered into the bottom command-bar
  of the SIMION window.  Lua batch mode programs can be run by
  clicking the "Run Lua Program" button on the SIMION main screen (see
  also Issue I130).  You can also invoke the Lua interpreter as a
  command-line option ("simion.exe --nogui lua") as described in
  Appendix M "Command Line Interface").

  See also Issue I404 - "Update Lua to latest 5.1.x release"

  Implemented in 8.0.0.

Issue I471 [80,fly2,enhancement,resolved]
  New FLY2 particle definition format.

  SIMION 8.0.0 supports a new FLY2 particle definition format that
  supplants the FLY format of SIMION 7.0.  The FLY2 format is a text
  file (that can be built from the GUI or by hand) and supports
  substantially greater flexibility in beam definition.

  See Appendix K "FLY2 Particle Definition Format" of the SIMION 8.0
  manual for details.

  See also http://www.simion.com/info/Particle_Initial_Conditions .

  Implemented in 8.0.0.

Issue I472 [80,enhancement,resolved]
  Incorporate SL Libraries from the SL Toolkit into SIMION 8.0.

  The SL Libraries (C++/Perl/Python libraries for PA manipulation)
  from the SL Toolkit are now included in SIMION 8.0.0.

  For details, click the "Help|Browse Documentation" menu item
  in SIMION 8.0 and the click "Libraries API Reference" and then
  click "SIMION SL Libraries".  An older version is online at
  http://www.simion.com/sl/libraries.html .

  See also Issue 422 - "Manipulating PAs from Lua inside SIMION"
  for a newer way to do this.

  Added in 8.0.0.

Issue I473 [80,enhancement,resolved]
  GUI Enhancements in 8.0.

  The SIMION 8.0 GUI was enhanced in various ways, such as

  - Uses native Win32 controls with new GUI toolkit.
    - Includes eliminating GUI File Manager.
  - OpenGL viewing incorporated into a new "3D" view in Modify.
  - New detachable log window.
  - New command-bar at bottom of screen (accepts Lua commands).
  - Prevent display flicker with double buffering (Issue I17)

  For some screenshots see http://www.simion.com/info/Examples

  Implemented in 8.0.0.

Issue I474 [80,requirements,changes,resolved]
  SIMION 8.0 Hardware/Software Requirements.

  These have changed slightly.  Running the Windows version of SIMION
  on Linux (Issue I469) and Mac OS X (Issue I464) on Intel-compatible
  CPUs is now formally supported via a few methods.  See
  Appendix A "Hardware and Software Requirements" of the SIMION 8.0
  manual or the more up-to-date
  http://www.simion.com/info/System_Requirements for details.

  Implemented in 8.0.0.

Issue I475 [80,enhancements,resolving]
  SIMION 8.0.x updates.

  This issue report describes some of the software update practices
  for SIMION.

  As of this writing (Jan 2008), the current release version is 8.0.4,
  and 8.0.5 is in development.  An 8.1 version is planned but is not
  firmly set: no release date or list of features has been identified,
  though some work has started on it.

  SIMION 8.0 users were formally promised free updates to SIMION 8.0.x
  versions, for least a year following the 8.0.0 release--though in
  practice it will be longer (possibly until the 8.1 release).
  8.1 (or it might be called 9.0) will be a purchasable upgrade.

  Even though 8.1 is some time away, a small number of 8.1 features
  have actually already been implemented, and 8.0 users can experiment
  with them now using the "early access" mode -- see Issue I421 for
  details.

  The updates in 8.0.x versions have so far been fairly substantial --
  see http://www.simion.com/changes .  Bug fixes and small-to-moderate
  features/enhancments continue to be added to 8.0.x versions at a
  steady rate, while a few "very major" functional additions
  (e.g. Issue I422) are being allocated to 8.1 but can be accessed now
  in early access mode.  Following the 8.1 release, updates to 8.0.x
  versions will likely continue though take more the form of bug fixes
  and minor modifications while major development shifts toward 8.1
  (as was the case for the 7.0 to 8.0 transition).  It's worth noting
  that 7.0 was released in 2000, 8.0.0 was released in Nov 2006, and
  7.0.5 (with some minor but useful patches to 7.0) was released in
  May 2007 as a service to 7.0 users.

  As of this time, 7.0 versions are partially supported in practice.
  7.0 still works well, there are a lot of similarities between 7.0
  and 8.0, and 7.0 questions are generally responded to in the SIMION
  users' group.  6.0 and earlier versions are much less supported
  mainly because they are DOS and can be difficult to get running on
  modern operating systems, and very few people still use them, though
  you might have some luck with some types of support.

Issue I476 [80,high,resolved]
  Crash on accessing adj_elect[N] or adj_electN where N not a valid
  electrode number

  This is fixed in 8.0.5-TEST2.  See related Issue I429.

  Workaround for older versions:
    use simion-8.0.3 or simion-8.0.4-TEST18-20071026.exe.

  Reported by tbraun-20080125--
    http://www.simion.com/discuss/viewtopic?p=2130

  As of 8.0.5-TEST21, writing to adj_electXX style variables, where
    XX is not a valid number, raises an error too.

  Affects 8.0.4 (8.0.4-TEST19 to 8.0.5-TEST1).
  Resolved in 8.0.5-TEST2/8.0.5-TEST21.

  See also Issue I429
    Define behavior of adj_elect[i] and adj_electXX for non-existant
    electrode numbers and #adj_elect.

Issue I477 [80,recording,resolved]
  Precision ignored if width is zero in data recording.

  Under all versions of SIMION 7.0/8.0, the following works as
  specified in the manual: "Setting BOTH width and precision to zero
  gives variable [widths/precision] under program control" (p.8-25
  (7.0) or section 8.6.7 (8.0)).

  However, if width is zero (default) and precision is non-zero, the
  behevior depends on version:

    Prior to 8.0.5-TEST3, this causes variable widths/precision,
    (which might be unexpected).

    As of 8.0.5-TEST3, this causes the non-zero precision to be used
    (which is likely more as expected).

  This change likely has very little effect on compatibility since the
  old behavior was undefined, unexpected, not the default setting,
  and not the normal way of defining variable precision/width.

  Reported by charlottes-20080128
    --http://www.simion.com/discuss/viewtopic?p=2132#2132

  Affects 7.0-8.0.4
  Resolved in 8.0.5-TEST3

Issue I478 [GUI,mm-per-gu,enhancement,mostlyresolved]
  Reduce minimum PA mm/gu scaling from 1E-5 to 1E-6.

  Note: also precision of coordinates using "Where" function
  was increased.

  Note: min workbench size is still 1 mm^3 though (see Issue I513).

  Reported by mikhaily-20080211

  Implemented in 8.0.5-TEST4.

Issue I479 [enhancement,resolved]
  Default program folder name is now "SIMION-8.0" rather than
  "SIMION 8.0" (avoids spaces)

  By default SIMION now installs in a "SIMION-8.0" folder inside the
  user's program folder (which by default is "c:\Program Files" on
  most systems).  This is only a default since this folder can always
  be changed during (or even after) installation of SIMION.

  This change reduces the likelihood of issues relating to spaces in
  file names (do a web search on "spaces in filenames" for
  background).

  Implemented in 8.0.4-TEST22.

Issue I480 [issue,MED-HIGH]
  KE error loses meaning when time-dependent voltages/fields are used.

  If voltags/fields are modified during particle flight,
  the KE Error parameter in Data Recording typically loses meaning.
  For example, the KE Error gets offset by the voltage change.

  This is by design since as mentioned in the manual (8.6.6, SIMION
  8.0, "Selecting What to Record", or 8-22, SIMION 7.0), "[The KE
  Error] parameter has no meaning if time-changing fields are being
  applied via user programs."

  In fact, RF fields can themselves do work on a particle.

  For related discussions see

    http://www.simion.com/discuss/viewtopic?p=1420
    http://www.simion.com/discuss/viewtopic?p=2211

  Can this be improved?  Are there workarounds?  (To be determined.)
  This will be re-examined some today (djm-2008-02-29)

Issue I481 [HIGH,particletracing]

  The efield_adjust, mfield_adjust, fast_adjust, accel_adjust segments
  are called multiple times (usually five) between calls to
  other_actions.  These segment adjust variables such as ion_volts,
  ion_dvoltsx_gu, ion_bfieldx_gu, ion_ax_mm with given variables such
  as ion_time_of_flight and ion_time_step.

  Normally, in other_actions, variables (e.g. ion_time_of_flight and
  ion_px_mm) reflect values at the end of the current time-step.
  However, the variables above reflect values at the start of the
  current time step, assuming values are computed from
  ion_time_of_flight.  This is because in the last call to the above
  segments, ion_time_of_flight is set to the value at the start of the
  time step (however, other values, such as as ion_px_mm and ion_volts)
  reflect values at the end of the time-step....FIX-doc more

Issue I482 [81,enhancement,poisson,partiallyresolved]
  Refine extended to solve the Poisson Equation

  SIMION's electric field solver (Refine function) has been extended
  in SIMION 8.1.0 to support solving the Poisson Equation. As before, the
  Refine function can calculate potentials inside a volume defined by
  electrodes, but the new Poisson solving capability allows it to also
  handle the case when a known, arbitrary distribution of space-charge
  density also fills that volume (such as due to high current charged
  particle beams or charged insulators)

  For full details, see the "Poisson solver" section of the
  SIMION 8.1 supplementary documentation help file.
  See also SIMION Info:Poisson
  Equation ( http://www.simion.com/info/Poisson_Equation ).

  2D cases implemented in 8.0.5-TEST5 (early access mode).
  Poisson examples updated in 8.0.4-TEST13.
  Formally scheduled for 8.1.

  Update: 2008-04-14: Fixed a fairly critical error in piclib library
    in the Poisson examples.
    The following should be added to the top of segment.other_actions
    (just after the "if PIC_enable == 0 then return end"):
    "if ion_time_of_flight <= ion_time_of_birth then return end".

  Update: 2010-11-10 (8.0.6-TEST10): In 2D Poisson refine,
    always treat left and bottom edges as mirror planes (Issue I372)

  Update: 8.1.0-TEST4 - 3D and anisotropic cases implemented.

Issue I483 [enhancement,view,dots,resolved]
  Allow dot/marker size in View to be increased.

  As of 8.0.5-TEST7, there is a new text field in the View screen,
  under the Particles tab, under Trajectory Display|Dots.  This allows
  the dot/marker radius to be adjusted from 1 to 9 pixels (default 1).

  Recommended by corey (Kuzmich)-20080307
    http://www.simion.com/discuss/viewtopic?p=2224

  Resolved in 8.0.5-TEST7.

Issue I484 [example,added,resolved]
  New example: Particle Teleportation across multiple SIMION processes
  ("multiprocess")

  This examples illustrates how to teleport particles between PAs
  running on different SIMION processes (instances of simion.exe in
  memory) that communicate.

  This provides one method of simulating huge systems (e.g. greater 2
  GB RAM) that don't fit onto a single SIMION process or computer.
  Normally, SIMION 8.0 is limited by 32-bit versions of Windows to
  approximately 2 GB of RAM *per process*.  We can somewhat
  overcome this limit by running multiple SIMION processes, either on
  the same computer (if > 2 GB free RAM is available) or on
  different computers connected over a network.

  Resolved in 8.0.5-TEST7 (but works in 8.0.4)

Issue I485 [resolved,critical,prg,804,resolved]
  ion_charge and ion_cwf variables broken in PRG

  In versions 8.0.4-TEST19 to 8.0.5-TEST7, ion_charge and ion_cwf
  variables are broken when accessed in PRG or the PRG debugger (but
  they are fine in Lua).  Reading typically returns 0 and writing has
  no effect.

  Implementation details: This was caused by the following changes
  made in 8.0.4-TEST19.  The new functional access method to reserved
  variables was not implemented in PRG.

    Issue I453 - Modifying ion_charge can cause charge repulsion
                 effects to be wrong.
    Issue I452 - Add charge weighting factor (CWF) to Data Recording
                 output and add new ion_cwf reserved variable.
  
  Also see Issue I370.1 - sim_trajectory_quality variable now available
  in PRG too.

  Reported by muhui-20080310.  test:t6.

  Affects 8.0.4-TEST19 to 8.0.5-TEST7.
  Resolved in 8.0.5-TEST8.

Issue I486 [io,recording,70,80,partlyresolved]
  Data recording output taking long time to flush to disk.

  Since 7.0, the data recording output buffer is not flushed to disk
  until this buffer becomes full (enough data accumulates) or the
  Fly'm completes.  This may be a problem if SIMION is shutdown
  unexpectedly[*], thereby losing the data that was not flushed.

  As of SIMION 8.0.5-TEST10, the buffering can be controlled via Lua
  I/O methods, even in GUI mode (ref. Issue I335).  For example, to
  flush the output buffer to disk do

    io.stdout:flush()

  Alternately, you can disable the output buffering entirely or
  decrease the size of this buffer:

    io.stdout:setvbuf('no')       -- disable buffering
    io.stdout:stdvbuf('full', 20) -- enable buffering but limit to 20 bytes

  It is convenient to place this at the top-level of a workbench
  program:

    simion.workbench_program()
    io.stdout:setvbuf('no')
    ...

  Warning: disabling output buffering might degrade performance if there
  is a lot of output.

  Reported by ryand-http://www.simion.com/discuss/viewtopic?p=2258
    [*] If something goes wrong with the run - which can happen due to
    some other complexities of the particular simulation - or if the
    computer has an "issue" then I loose all the prior results if they
    are not written to the file.

    See also Issue I488 - Data Recording file not closed if Lua raises error.

  TODO - A possible further improvement may be to flush the buffer
  automatically every N seconds.

  Affects 7.0 and 8.0.

Issue I487 [80,lua,minor,resolved]
  ion_instance no longer accessible from top-level of workbench program.

  As of 8.0.5-TEST10, ion_instance is not accessible from the
  top-level of a workbench program (outside of segments).  In prior
  versions, ion_instance was accessible, but this variable has
  no meaning here.

  Note: in some cases, depending on run-time conditions, some other
  variables may have been accessible.

  Note: this defect would unlikely be seen in practice.

  Affects 8.0.0-8.0.5-TEST9.
  Resolved in 8.0.5-TEST10.

Issue I488 [80,defect,resolved]
  Data Recording file not closed if Lua workbench program fails at top-level.

  Example:

    simion.workbench_program()
    print 'hello' -- does not get flushed to disk until file is closed
    error 'fail'

  If Data Recording is enabled "hello" was not written to disk after
  Fly'm abort because the file remained open (though it is closed
  upon starting the next Fly'm). This was due to a change in 
  Issue I258 "Log window cleared after top-level print() statements
  in Lua workbench program.".

  This is fixed in 8.0.5-TEST10.

  Possibly reported by ryand-http://www.simion.com/discuss/viewtopic?p=2258
    relating to Issue I486 "Data recording output taking long time to
    flush to disk.":
      Observed a case where an automated run completed normally but the
      data to the data recording file never got written.  However, on
      manually stopping the ions from flying (by pressing "Fly'm"), the
      file is written at this point with all of the remaining
      information from the log window.

  Affects 8.0.3-TEST7 and above.
  Resolved in 8.0.5-TEST10.

Issue I489 [70,80,partly-resolved]
  Data recording disabled if rerun enabled at Fly'm start.

  The SIMION 7.0/8.0 manuals say (e.g. p. 8-14 SIMION 8.0 manual)
    "3. Third, if data recording to a file is active, SIMION will take
    note of the status of the Rerun at the instant when the Fly'm button
    is pressed to start flying ions. If Rerun is checked (at that instant)
    then no recorded data will be sent to the user designated data record
    file during the entire Fly'm. However, recorded data will always
    appear on the Data Monitoring Screen (if and when displayed)."

  This is specified behavior, but should it be changed?  Is the existing
  behavior at all useful?  Why is it defined explicitly this way?
  (TODO-check).

  Note: Use of both data recording and reruns is useful, such as for a
  lens tuning example that also data records.  In that case, the
  program itself will likely enable the reruns just after the Fly'm
  has started and terminate the reruns just before the end of the
  tune.  The data recording will occur provided the user does not have
  reruns enabled prior to clicking Fly'm.  However, if the user
  prematurely terminates the Fly'm, then the reruns option will remain
  active after the Fly'm is done, and the user MUST then manually
  disable rerurns before re-attempting another Fly'm or otherwise
  there will be no data recording.  This may be error prone.  Perhaps
  SIMION should reset the rerun state to what it was prior to the
  start of the Fly'm.  That is what SIMION does concerning adjustable
  variables.  Similar things might need to be said concerning Retain
  and View (trajectories) options.

  Some might temporarily enable the rerun option to see ions reflying,
  such as when tuning adjustable variables.  In such case, even if
  the system normally has data recording enabled, you might not
  want large amount of data from many reruns to fill the disk.

  Noted by ryand-20080321 -
    http://www.simion.com/discuss/viewtopic?p=2270
  Also noted by davidm once concerning a simulation (fly2rerun) that
    that did data recording and reruns.
Issue I490 [80,lua,enhancement,possiblyresolved]
  Improved detection of undefined variables ("checkglobals")

  In Lua programs, typos in variable names can be hard to spot because,
  in general, Lua will not complain that a variable is undefined.
  For example, consider this program that defines two functions:

    function f(x) print(X) end
    function g(x) print(X + 1) end

  Lua gives no error when loading this code.  The first two lines
  might be wrong (e.g. "x" mistyped as "X") or it might not be (maybe
  X is some other global variable).  In fact, Lua has no way of
  knowing if the code is wrong.  The reason is that if a variable is
  not recognized by Lua as a local variable (e.g. by static
  declaration of the variable using a "local" keyword, "adjustable"
  keyword, or function parameter definition), the variable is instead
  interpreted as a global variable (as is the case for "X").  Now,
  whether a global variable is defined is not as easy to determine or
  describe.  X has the value t['X'] where t is the "environment table"
  of the currently running function.  X always has a value, though it
  is probably nil if X were a typo.  We might interpret X being nil as
  X being undefined, but whether X is nil can only be determined at
  run-time.  For example:

            -- X is "undefined"
    f(10)   -- print nil
    X = 2   -- X is defined
    f(10)   -- prints 2
    X = nil -- X is "undefined" again
    f(10)   -- prints nil

  Even the above runs without error.  When X is nil, print(X) becomes
  print(nil), and it is valid to print a nil value.  However, consider
  calling the function g:

    g(10)

  This fails with the error "attempt to perform arithmetic on global
  'X' (a nil value)".  The reasons is that print(X + 1) becomes
  print(nil + 1), and it is invalid to add nil to a number.  The error
  is not observed, however, until the code "nil + 1" actually
  executes.

  Now, is there a way to detect undefined variables more preemptively?
  A number of methods have been described (
  http://lua-users.org/wiki/DetectingUndefinedVariables ).  Probably
  the most suitable for most purposes is the "checkglobals" function,
  which was added to SIMION 8.0.5-TEST12.

  Assuming you have 8.0.5-TEST12 or above installed, you may add
  the checkglobals() function call to the bottom of your code to validating
  global accesses:

    function f(x) print(X) end
    function g(x) print(X + 1) end    
    checkglobals()

  Assuming X is nil when checkglobals() is executed, the above code
  now raises the error 'test.lua:3: accessed undefined variable "X" at
  line 1'.

  If you tend to avoid declaring global variables (instead always using
  locals), you might even move the checkglobals function to the top
  of your program to provide slightly stronger globals checking:

    checkglobals()
    function f2(x) print(x) end
    function g2(x) print(x + 1) end    

  The above fails with error 'test1.lua: accessed undefined variable
  "f2" at line 2' since line 2 attempted to create a new global variable
  f2.  There are a few ways to address this error now:

    -- use locals only
    checkglobals()
    local function f2(x) print(x) end
    local function g2(x) print(x + 1) end    

    -- create globals explicitly through the environment table.
    local env = getfenv()
    function env.f2(x) print(x) end
    function env.g2(x) print(x + 1) end    

  Resolved in 8.0.5-TEST12.

Issue I491 [gui,contours]
  Allows PE/Contour views of fields defined by a user program.

  Currently the PE/Contours views only plot fields generated from
  a real potential array.  They do ignore fields generated from
  user programs (e.g. mfield_adjust and efield_adjust segments).

  One workaround is rather to plot contours using the method in Issue
  I178.2 "New field lines/vector plotting example ('contour')".

  Another method (suitable only really for potential arrays not
  magnetic arrays where you plot field vectors) is to programmatically
  build a real potential array given the space potentials you know.
  You may use the SL Libraries (Issue I472) or the newer simion.pas
  interface within SIMION (Issue I422).  

Issue I492 [defect,gui,keys]
  Keyboard input and shortcut/accelerator key conflicts lacking proper
  conflict resolution and precedence.

  In some cases, a key might have more than one action associated
  with it.  For example, on the Print screen, the 'L' key might load
  annotations (via the accelerator for the "Load" function), create a
  label on a box annotation (via the graphical window input handler),
  or be part of text typed into the command bar.  Prior to
  8.0.5-TEST16, this was inconsistently selecting which action to
  trigger or in some cases triggering multiple actions.  This was
  generally easy to work around but was inconsistent.

  Example:
    On a Print screen, add a Label.  Put focus on Print button.
    Type 'l' inside label text.  Load Annotations box opens
    and 'l' is typed.  (This only affects ~ 8.0.5-TEST12-TEST15
    due to Issue I90).  Workaround: click graphical window
    before doing this to put focus on graphical window.
    Reported by pegc-20080404-http://www.simion.com/discuss/viewtopic?p=2301
  Example:
    On a Print screen, add a Label.  Put focus on Print button.
    Hover mouse over label text.  Press left or right key.
    Both label cursor and Windows focus change.
  Example:
    Load quad\quadout.pa# in Modify.  In command bar, press key
    '+'.  The Layer Z is also incremented.

  Cause: The decision of who (e.g. graphical window, controls with
  accept_key handlers such as the command bar, controls with
  accelerators, and other controls) handles accelerator and other key
  input was not being handled properly.  This is complicated, but
  8.0.5-TEST16 removes dead-code from 7.0 and cleans this up.

  Resolved in 8.0.5-TEST16.

Issue I493 [enhancement,programming,waveform]
  Allow simpler definition of waveforms.

  See Issue I493.2 - New "waveform" example that implements a library
  that makes definition of segmented waveforms easier.

Issue I493.2 [enhancement,example,mostlyresolved]
  New "waveform" example - simplifies segmented waveform definition.

  A new "waveform" example is available that imports a library that
  makes segmented waveform definitions easier, such as waveforms
  defined by a series of line segments.

  8.0.5-TEST16 (8.1 early access)

Issue I494 [enhancement,constants]
  Update constants to CODATA2010.

  In SIMION 6.0/7.0/8.0, the constants are essentially CODATA1986
  values (see http://en.wikipedia.org/wiki/CODATA ).
  Dahl2000 notes "The physical constants used in version 6.0 and 7.0
  are from the 74th edition of the CRC Handbook of Chemistry and
  Physics [12] Values of these physical constants (e.g. c, electron
  mass, and elementary charge) are defined to 8 or 9 significant place
  accuracy".  The 74th edition (1993-1994) uses CODATA1986, which were
  the latest CODATA values at that time.  SIMION 8.0 also uses these
  constants.
  
  In SIMION 8.1.0, constants are now CODATA2010.
  Resolved in 8.1.0-TEST3.

Issue I495 [enhancement/bugfix,luacom,resolved]
  Upgrade LuaCOM to CVS version (2008-04-18)

  8.0.0-8.0.5-TEST17 use luacom 1.3.
  8.0.5-TEST18 upgraded to the CVS (2008-04-18) version of luacom.

  Note that due to a bugfix in the luacom in 8.0.5-TEST18, the
  row/column order when storing arrays in a range has been reversed:

    ws:Range("A1:B3").Value2 = {{1,2},{3,4},{5,6}}

  Resolved in 8.0.5-TEST18.

Issue I495.2 [com,MED-HIGH]
  Sending large tables to LuaCOM causes crash.

  There is a LuaCOM bug, where the Lua stack overflows if a large
  table is transfered via COM (e.g. sending many cells to Excel).

  A workaround is to not transfer large chunks of data but
  rather to send smaller chunks of data, e.g.

    -- workaround for http://simion.com/issue/495.2
    -- is to transfer data in chunks.
    local i=1
    while i <= nrows do
      local copy = {}
      for j=1,500 do copy[j] = t[i + j - 1] end
      ws:Range(ws.Cells(1+i,1), ws.Cells(1+i+#copy-1, ncols)).Value2 = copy
      i = i + 500
    end

  Reported by dcrizer-20080515 --
  http://www.simion.com/discuss/viewtopic?p=2392

  LuaCOM should be patched.  Unfortunately, it requires some
  changes to how table transfers are done.

Issue I496 [enhancement,81,inprogress]
  Manipulating workbenches from Lua in SIMION

  NOTE: This is currently an 8.1 feature that is only available for
  beta testing in the 8.1 "early access" mode.  See Issue I421 for
  details on the "early access" mode.

  There are new functions for manipulating workbenches from Lua
  inside SIMION.

  Examples:

    local wb = simion.wb     -- get workbench object
    print(wb)
    print(wb.bounds)
    local b = wb.bounds
    print(b.xl, b.yl, b.zl, b.xr, b.yr, b.zr)
    local inst = wb.instances[1] -- Get first PA instance
                                 --   in PAs instance list
    print(inst)
    local pa = inst.pa       -- Get associated PA object.
                             --   See Issue I422
    print(pa)

    print(inst.x, inst.y, inst.z)
    print(inst.ox, inst.oy, inst.oz)
    print(inst.az, inst.el, inst.rt)
    print(inst.nz_use)
    print(inst.mm_per_gu)
    print(inst.filename)

  There are numerous other functions and properties.  Details are in
  the Libraries API in Help|Browse Documentation in 8.0.5 or above.
  At this time, please download the latest SIMION documentation set
  (simion-docs), which contains an up-to-date
  "docs\lua_simion.wb.html" HTML page describing these functions.

  As of 8.0.5-TEST18 - Partly implemented provided "early access"
  mode is enabled.
  As of 8.0.5-TEST27, field simion.wb.instances[i].mm_per_grid_unit has been
  renamed simion.wb.instances[i].mm_per_gu.
  As of 8.0.6-TEST5 - Various fixes to simion.wb and
    simion.wb.instances, to ensure changes are propagated
    to the fly'm and GUI.
    Including Issue I541 Particles don't see resized workbench dimensions in
    batch mode. [*]
  As of 8.0.6-TEST6 - change pa:refine min iterations from 100 to 1.

  See also Issue I422 - Manipulating PAs from Lua inside SIMION

Issue I497 [enhancement,example,sds,resolved]
  SDS atmospheric pressure collision model (sds).

  This example was added in 8.0.3.

  As of 20080424, significant enhancements have been made:
   REV-3 some code restructuring
     renamed adjustable variables (now with SDS_ prefix).
     new SDS_enable variable
     New install() function and options opt.
     remove skip if "ion_instance ~= 1" in other_actions.
   REV-4b significant restructuring
     major code structure/quality improvements (without affecting calculation)
     pressure/temperature/velocity can now be defined via an analytical function.
     allow SDS to be disabled on certain instances numbers (i)
       via SDS.instances[i] = false.
     Fixed wb_orient_to_pa_orient -> pa_orient_to_wb_orient
       (this mistake was introduced in the port from the PRG code.
        The error only existed when using velocity arrays on a PA
        that was rotated from the original WB coordinates.)
     Allow vz component in velocity array even in 2D planar arrays.
   REV-4c 2008-04-26
     More minor code quality improvements
     Fixed "point_weights[3] = sfx*fy*fz" ->
       "... sfx*fy*sfz".  Error was introduced in
       conversion from PRG and only has a minor effect on 3D arrays.
     Support P/T/v arrays using real SIMION PAs (8.1 mode only).
     Add SDS.velocity_coords parameter.
   REV-4d 2008-05-08
     Added print_sds_parameters function (adrian-20080508)
   REV-4e 2008-05-08
     simion.VERSION check corrected in check_array
     test3.lua - unload PAs from previous runs.

Issue I498 [enhancement,81,resolved]
  Resize SIMION window programmatically (simion.window)

  In 8.1 early access mode (as of 8.0.5-TEST18 - Issue I421), the
  SIMION window can be resized programmatically:

    simion.window.x = 10
    simion.window.y = 10
    simion.window.width = 1200
    simion.window.height = 500
    simion.window.state = 'maximized'  -- 'minimized', 'normal'

  Requested by adrian-200804.

  Resolved in 8.1 early access mode (8.0.5-TEST18).

Issue I499 [enhancement,example,81,resolved]
  New induced current/charge example ("electrostatic_induction")

  This example shows how to calculate induced charges and currents on
  electrodes given particles in space (e.g. for ion detection ICR
  cells).

  These example uses some simion.pas features (Issue I422) added in
  8.0.5-TEST20.

  Based on suggestion by dcrizer--http://www.simion.com/discuss/viewtopic?p=2363

  Added in 8.1 early access mode (8.0.5-TEST20) - Issue I421.

Issue I115 [70,logic,med,resolved]
  SIMION may crash on startup if another SIMION7 or SIMION8 running and
  1000 GUI*.TMP files exist in C:\FILES.GUI

  Prior to 8.0.3-TEST9 and 7.0.5, SIMION could crash on startup
  if all 1000 GUI*.TMP files exist (no more unused file names available).
  SIMION would crash on attempting to write to an empty file handle.

  A workaround was to delete some or all of the C:\FILES.GUI\GUI*.TMP
  files.

  As of 8.0.3-TEST9 and 7.0.5, SIMION gracefully skips writing to
  a GUI*.TMP file if no more names exist.

  Affects 8.0.x and 7.0.x versions.
  Resolved in 8.0.3-TEST9 and 7.0.5.

Issue I116 [logic,low]
  Adjustable variables that get deleted in the PRG file can still
  (harmlessly) persist in memory.  e.g. in 7.0--fly ions, then delete
  variables from PRG file (or remove a PA), then fly ions again (note:
  old variables still listed).

Issue I117 [errorhandling]
  Report bugs, comments, crashes?

Issue I118 [errorhandling]
  Use native crash handler maybe

Issue I119 [errorhandling]
  Debugger detecting memory leak (e.g. on exit)

Issue I120 [review]
  Compile checks
   - is struct packing set appropriate?
     note: wx crash if struct=1char
   - dll dependencies?

Issue I121 [review]
  Check random number generator
  - seems to be doing stuff in the background.  is this time consuming?

Issue I122 [review]
  Screensaver bug still needed?

Issue I123 [review]
  Array saving not work (e.g. create blank array and save)--fixed?

Issue I124 [review]
  When saving IOB, does it prompt about saving autoloading files?

Issue I125 [review]
  In "compile/debug" function, it might be better to restore variables
  to the user-provided values rather than those defined in the PRG file

Issue I126 [review]
  If values of adjustable variables are changed in PRG code,
  how should these changes be reactivated without closing the files
  in SIMION?

Issue I127 [functional,resolved]
  Increase number of adjustable electrodes.
  
  SIMION 8.1.0 increases the number of adjustable electrode potentials
    to 1001 (# 0..1000).
  SIMION 8.0.0 increased the number of adjustable electrodes potentials
    to 128 (# 0..127).

  Note: rarely do you need this many adjustable electrodes.
  See Issue I172 for a way to reduce the number of adjustable electrodes
  (e.g. for resistor chains).
  
  See also http://www.simion.com/info/Max_Electrodes
   

  == I\'ve been running Simion for sometime and one of the problems I
  keep having is the limited number of Fast Adjust Electrodes. For
  some of my models we struggle to create an accurate representation
  with only 30 Fast Adjust Electrodes. There is not a clear boundary
  in the models so \'Stitching\' two or more instances together is not
  really an option.  Is there a way around this or can this be
  implemented into later versions of Simion? Ideally we would want
  upto 80 or even more Fast Adjust Electrodes. -- mark, 2005-09-19

  - note: refined PA# are named with .PA? where ?=[0-9A-Z].
  - note: PA0 format relies somewhat on max of 32 (not 31?) adjustables.
  - note: IOB format seems like it might rely on fixed number of adjustables

  for adj_electxx variables, it may be more convient to use arrays
    rather than individual variables
    (see also suggestion for increasing number of potentials)

  2006-02-03 - Resolved in 7.1beta6.  See details in link above.

Issue I128 2005-12-13 [enhancement,functional,low,partlyresolved]
  Allow PA to be halved/doubled/resized even if insufficient
  free room in PA in memory.

  Sub-issue I128.1: Reallocate block of memory if PA being loaded
  into block does not fit.

    Prior to 8.0.4-TEST21, if one attempts to load a PA inside
    a PA slot that with insufficient space, an error is reported:

      Abort: potential array is too big to fit existing PA's space.
      Required: X pts, Available: X pts.  Hint: Load into "--Empty PA--"
      slot instead.

    As of 8.0.4-TEST21, SIMION attempts to reallocate a sufficiently
    large block of memory in order to load the new array.

    Implemented in 8.0.4-TEST21.

  Sub-issue I128.2: Halve/Doubling (not implemented)

Issue I129 [functional]
  Why not allow FLY file to contain zero ions?
  (can ION files have zero?)

Issue I130 [functional,resolved]
  Add batch mode operation.

  As of SIMION 8.0, various common operations (e.g. gem2pa, refine,
  fast adjust, and fly) can be invoked in batch mode, from the
  simion.exe command line or from Lua.  See Appendix M. Command Line
  Interface of the SIMION 8.0 manual for details.  For an application
  of batch mode, see the "geometry_optimization" example in SIMION 8.0.

  Originally requested by a number of users including dennisc:
  - example: optimize instruments with ~500,000 trajectories
    and measure energy/angle response.  Adjust voltages and lens
    distances (e.g. from GEM file).
  - would like an editable ASCII batch file, e.g. geometry fredine,
    potentials, fly.
  - What I would really like is to be able to run simion in batch mode 
    e.g. I would like to write a batch type file as follows:-
    SIMION LOAD_GEM "test.gem" SAVE_PA "test.PA#"
    SIMION REFINE "test.PA#" + various parameters interation limit,
       convergence objective
    If No Refine Error then
    SIMION FAST_ADJUST "Test.PA#", Potentail1, Potential2 etc
    SIMION LOAD_IOB "IOB_definition_file"
    (IOB definition to be as ASCII file that can be edited or created
     by the user or another program, e.g. may want to adjust instances
     or conditions for subsequent runs)
    SIMION LOAD_REC "definition_file"
    SIMION LOAD_TTAJ_FILE "test.ion"
    SIMION FLY record o/p to "Test.txt"  etc
    Run my own program to analyze the recorded data, then come up with
    new voltages or electrode positions etc,
    Repeat the process --dennisc
  - martin: > - Batch mode (very important)
    -> The SW we made uses two loops, an inner loop where only potentials are
    > adjusted and ions flown, and an outer loop where the geometry is
    > changed. All changes are done automatically by two simplex optimizers
    > which evaluate a carefully crafted objective function calculated from
    > the ion trajectories. gem and ion files are generated by the 
    > optimizers as needed. All results are logged and after a while
    - (a day or two) they are reviewed manually. After some changes to the 
    > parametrization of the problem or the initial values of the
    > parameters the optimization process is restarted.

  Added in 8.0.

Issue I131 [80,enhancement,mostlyresolved]
  CAD Import/SL Tools included in SIMION 8.0.

  The SL Tools (sltools.exe) utlity for PA import/export, including
  CAD (.stl) file import/export is now included in SIMION 8.0.
  See http://www.simion.com/sl/tools_tut.html and Appendix J
  "CAD Import (STL Files)" in the SIMION 8.0 manual.

  Possibly in future: Integrate CAD and SL Tools functionality from
  the SL Toolkit into simion.exe.

  Added in 8.0.0.

Issue I83 2005-12-10 [functional,low]
  Allow PA modify/refine from within View screen.

Issue I135 2005-12-23 [functional,partlyresolved]
  Increase default max ion limit (was 500 in SIMION 7.0).
  Reported by a number of users.

  Report by dennisc: Regarding max number if ions (500,000) - It
  usually takes only ~2hrs or so to fly this many trajectories.
  Therefore I often run several copies of SIMION simultaneously, over
  night or the weekend.  I then add the results to improve statistics
  etc.  At these times data recording is used and Ion Trajectories
  Images are suppressed, so are the retention of trajectory
  images. (when data recording is selected do we really need to
  allocate and load all the trajectories, perhaps we could specify the
  trajectory input file without having to read it all in one go, then
  read them as needed into a buffer)

  Note: 8.0 increases max ion limit to a couple million effectively,
  depending on amount of RAM.  Still, this consumes a lot of RAM, and
  there is probably a better solution.

  2005-11-03-dennisc - increase ion limit from 500 to ~10,000 [7.1]
    -- note: it is 1000 in SIMION 8

  500K ion limit- michaelf
  
  Another limitation is the number of particles that can be 
    launched into SIMION.-mattb

Issue I145 2005-12-28 [functional]
  Should add "load workbench" function to main simion screen.

Issue I132 [new]
  Need to incorporate HS1 model example.

Issue I237 [beta,fly2,high,probablyresolved]
  FLY2 default coordinates should be workbench coordinates.
  Reported by theo-20061003
  When loading iob with more than one instance default position for  
  flying (Particle/define panel should be  coordinates relative to WORK  
  BENCH ORIGIN not present one which I assume goes to the instant in the  
  list at which  cursor was last on! This is just a small bother when I  
  have to keep remembering it. I don't know what Simion7 did.
  2006-11-15-probably resolved?

Issue I239 [fly2,high,resolved]
  Immediately splat FLY2 particles with parameters out of range.
  Reported by theo-20060924
  (e.g. lorentz distribution giving negative mass).
  Should probably discard (kill) these ions and -not- creating new
    ions in their place.  Similar to what is done when ions start
    inside electrodes.
  Resolved in 8.0.0rc5-20061115.

Issue I240 [fly2,high,resolved]
  In FLY2 definition, use term "half_angle" instead
    of "vertex_angle" for cone.
  Reported by theo.
  Resolved in some version prior to 8.0.0.

Issue I245 [med,display,beta,not-reproduced]
  Reported by theo-2006-09-19
  Description:
    Flying with dots option doesn't seem to stop when dots is  
    unchecked, nor when pause event or pause next. Dots just keeps flying  
    until it exhausts all trajectories.  Escape also doesn't work as it  
    used to in older Simion when everything stopped. A real pain if you  
    have a lot of trajectories. I just had to exit simion to get it to stop!
  DJM-2006-10-31 - this seems to work ok for me. When I uncheck dots, the
    dots stop and it redraws with lines. If I instead press Esc, the
    drawing terminates (tested with einzel lens with 6000 ions).

Issue I500 [beta,fly2,high,resolved]
  2006-09-18-theo
  Edit as text on FLY2 not work.
  Resolved in some version prior to 8.0.0.

Issue I501 [programming,HIGH]
  SIMION segments not called when particles are on array boundaries.

  By design, SIMION 7.0/8.0 segments in user programs are only called
  when particles are inside potential array instances (see picture in
  Issue I304).  This is because segments are executed within the
  context of particles flying in array instances (based on SIMION 7.0
  design).  For example, if all particles terminate or are created
  inside the workbench volume but outside any potential array
  instances, these segments are not called.

  One caveat is when particles are on array boundaries.  Generally,
  segments are not called either in this case (but possibly should be
  - TO REVIEW).  A number of users have been tripped up by this.

  Another caveat is that when the workbench volume fits tightly around
  the PA instances (e.g. clicking the "Min" button on the Workbench
  tab), then any particle exiting the workbench will also be exiting
  the PA at the same time, and the terminate segment will be called.
  However, the workbench volume does not always tightly fit.  For
  example, the "min" button sets the workbench size rounded to the
  nearest mm.  Also, workbench volumes are rectangular, so there will
  be dead-space if a cylindrical PA is used.

  The following trick with the other_actions segment is sometimes
  useful:

    print "loading IOB or starting Fly'm..."
    local first = true
    function segment.other_actions()
      if first then
        print "start"
        first = false
      end

      if ion_splat ~= 0 then
        print "stop"
      end
    end

  Noted by eloy-20080523 and others.

  Affects 7.0/8.0.  To review by 8.0.6.


Issue I502 [partlyresolved]
  New  Bradbury-Nielson Grid example ("bradbury_nielson_grid")

  Demonstrates splitting a system into multiple PAs and matching
  the fields when RF is applied.

  Required 8.0.5-TEST21 or above in early access mode.

  Added in 8.1 early access mode (8.0.5-TEST21)

Issue I503 [81,enhancement,partlyimplemented]
  Fast Parallel .PA# refines (one solution per CPU core)

  Normally, when SIMION refines a .PA# file, it refines each of the
  solution files (.PA0/.PA_, .PA1, .PA2, ...) in sequence.  However,
  one could increase the speed of this by refining these solutions
  separately, in parallel over multiple CPU cores.  This is possible
  only if you have more than one CPU core, such as a modern CPU with
  multiple CPU cores, a system with multiple CPUs, or even multiple
  computers.  In theory, you can cut your refine time down by a factor
  of 1/N where N is the number of adjustable electrodes, provided the
  individual solutions take about the same amount of time to refine,
  provided you have N cores, and provided there is little memory
  contention.

  In 8.1 early access mode (in 8.0.5-TEST22 or above), the "refine"
  function in the Lua simion.pas interface (Issue I422) has a new
  option in which you can specify that only a subset of the solution
  (0..N) should be refined in the current SIMION process.  So, to
  refine the solutions in parallel, you can start up multiple instances
  of SIMION and invoke the "refine" function with a disjoint subset
  of electrode solution numbers.

  For example, consider the quad1.pa# array (built from the quad1.gem
  file in "examples\performance_tests\7_dc_quadrupole_tests").  To
  build and refine only electrode solution #2 in the quad1.pa# array
  (i.e. quad1.pa2), you can run this Lua code:

    local pa = simion.pas:open('quad1.pa#')
    pa:refine{solutions={2}}

  The "solutions" option takes an array of electrode numbers, and here we
  only specified a single number.  Omitting this option will cause
  SIMION to generate all solutions in sequence.

  One can alternately invoke this from the command-line as follows as
  a Lua expression:

    simion.exe --nogui lua -e "local pa = simion.pas:open('quad1.pa#'); pa:refine{solutions={2}, convergence=1e-7}"

  In future SIMION updates, additional convenience methods for
  performing these actions will likely be provided.  In particular,
  there will likely be an option from the Refine screen (GUI) to run
  multiple threads.  For now, the only the most flexible Lua method is
  provided.

  So we could run the above code on three separate computers (or three
  separate CPU cores) while replacing the number 2 with 0, 1, or 2, to
  generate these three files in parallel.  Building the quad1.pa0 is
  virutally instantaneous, but the quad1.pa1 and quad1.pa2 files take
  some time to build, so it's really only useful to use two cores.  On
  a certain four core system tested (dual CPU, each with two cores),
  quad1.pa1 and quad2.pa2 take 13.3 seconds (6.5 seconds each) to
  refine in sequence but only 7.9 seconds to refine in parallel.

  As another example, icr.pa# takes 7.0 sec to refine sequentially to
  a 1e-7 convergence level (convergence=1e-7).  It takes 3.0 seconds
  when refined on three CPU cores on the same machine ({0,1,2}, {3,4},
  and {5,6}).

  If you are refining the solutions on multiple computers, it is
  recommended you set up a file share on one computer, place the .PA#
  file in that share and refine the three solutions for the .PA# file
  there.  Therefore, SIMION will place the solution files all in the
  same place.

  See the documentation on the simion.pas interface (Issue I422)
  for details on other parameters (e.g. convergence limit) that
  can be passed to the "refine" function.

  Implemented in 8.1 early access mode (8.0.5-TEST22).  

Issue I504 [gui,minor,resolved]
  Particle definition screen layout cut-off.

  To reproduce: In Particles tab, in Grouped .FLY2 definitions,
  Delete All, Add, change mass to arithmetic sequence, change "first,step"
  to "first,step,n".  Layout is cut-off on the bottom.

  Reported by tbraun-20080624.

  Resolved in 8.0.5-TEST23.

Issue I505 [quality,enhancement,mostlyresolved]
  New crash reporting feature.

  As of 8.0.5-TEST23, a new crashing reporting feature has been
  implemented.  In the event of a crash, technical information
  about the crash is saved, and the user is prompted to submit
  that information in order to improve the software.

  IMPROVE: crash handling currently only works in GUI mode.

  Resolved in 8.0.5-TEST23

Issue I506 [defect,core,resolved]
  Crash on failure to write temporary trajectory file (.trj).

  SIMION crashes on failure to write the trajectory (.trj) file
  (when retain trajectories is enabled).  This can happen if the
  user doesn't have write permissions to the project directory.
  It should instead report an error message and not crash.
  
  This is related to Issue I408.

  Affects 8.0.4-TEST21 to >= 8.0.5-TEST23.
  Resolved in 8.0.5-TEST24.

Issue I507 [core,defect,contours,resolved]
  Crash on loading workbench with contours.

  The following steps may cause a crash:
    - With workbench loaded, view contours tab.
    - Exit to main screen and reenter View screen.
    - Use Load button on Workbench tab to reload workbench
      (without reopening contours tab).

  Based on anonymous crash reports:

    Address=4D56B5; Code=C0000005; String=ACCESS_VIOLATION
    Version=8.0.5-TEST23
    Level=0; Address=4D56B5; Name=; Offset=0; 
    Level=1; Address=47EC69; Name=; Offset=0; 
    Level=2; Address=55BF12; Name=; Offset=0; 

    Address=47EE3A; Code=C0000005; String=ACCESS_VIOLATION
    Version=8.0.5-TEST24-nosse2
    Level=0; Address=47EE3A; Name=; Offset=0; 
    Level=1; Address=55C192; Name=; Offset=0;
    (adrianm-20080915)

  Affects 8.0.5-TEST23 and prior 8.0 versions.
  Not resolved in 8.0.5-TEST24
  Resolved in 8.0.5-TEST25

Issue I508 [core,fastadj,defect,resolved]
  "Illegal Fastadj Potential Count" error after fast adjust failure.

  If one is able to manually fast adjust a large fast adjustable
  potential array via the "Fast Adjust Button" but then attempts to
  fast adjust that array from a fast_adjust segment in a user program
  and that fails due to memory constraints ("Heap Allocation Problems"
  error), subsequent attempts to manually fast adjust the array from
  the "Fast Adjust Voltages" button will wrongly fail with the odd
  error message "Illegal Fastadj Potential Count in array.pa0".
  (Note: The manual fast adjust more efficiently uses memory, at the
  cost of performance, than the fast_adjust segment in a user program,
  so these two procedures are in fact different.)

  Reported by retronade--http://www.simion.com/discuss/viewtopic?p=2614

  Affects at least 8.0.4-8.0.5-TEST24 and possibly earlier.
  Resolved in 8.0.5-TEST27.

Issue I509 [defect,prg,resolved-in-8.0-only]
  "illegal start for seg" error.

  The following error:

    SIMION Error: Runtime Error: Illegal Start for Time_Step Seg

  may occur when using a workbench with overlapping electric and
  magnetic potential arrays that each have a PRG program attached.

  A workaround may be to define a tstep_adjust segment in both
  the magnetic and electric programs.

  Reported by steveb-20080806.  Already fixed in 8.0.5-TEST20.

  Also reported in http://www.simion.com/discuss/viewtopic?p=2923
  (7.0).

  Affects 8.0.0-8.0.5-TEST20.
  Resolved in 8.0.5-TEST21.

Issue I510 [defect,HIGH]
  Rpl button in View does not reload array
  Reported by thomasb-20080909

  > If I try to replace an existing PA in the WB View (using the Rpl Button)
  > with a PA with the same name and location on the HDD (but different size)
  > simion does not load this new PA from the disc but instead takes the one
  > from the memory.  So in the end the PA doesn't get replaced.

  Affects 8.0.4 and probably earlier versions too.

Issue I511 [enhancement,lua,resolved]
  Add standalone Lua interpreter lua.exe.

  Purpose: The file "lua.exe" inside the SIMION program folder is a
  Lua interpreter.  It is described in The Lua 5.1 Reference Manual:
  6. Lua Stand-alone.  Although you can run Lua programs inside
  SIMION, there may be times at which you may want to run Lua programs
  using the standard Lua interpreter interface.  Perhaps you want to
  run Lua programs outside of SIMION, or perhaps you need run some
  debugger or compile some code that depends on the existence of the
  lua.exe interpreter.

  Implementation: The "lua.exe" included here is actually just a proxy
  to the copy of Lua embedded inside the SIMION program (simion.exe).
  This proxy is included for your convenience.  Therefore, lua.exe
  depends on simion.exe, which must exist in the same folder as
  lua.exe for lua.exe to run.  (Conversely, simion.exe does not at all
  depend on lua.exe.)  Running lua.exe is actually equivalent to
  running "simion.exe --nogui lua" from the command line (see Appendix
  M "Command Line Interface" of the printed SIMION 8.0 manual).  In
  fact, if you rename the "simion.exe" file to anything prefixed by
  "lua" (e.g. "lua5.1.exe") and run that file, SIMION will behave as
  if you did "simion.exe --nogui lua" too.

  Multiple versions: If you have multiple versions of the simion.exe
  program (e.g. simion.exe, simion-8.0.5.exe, and
  simion-8.0.5-TEST25.exe) installed in the folder where lua.exe
  exists, then lua.exe points to simply simion.exe.  If you copy or
  rename lua.exe to lua-8.0.5.exe or lua-8.0.5-TEST25.exe, then it
  will point to simion-8.0.5.exe or simion-8.0.5-TEST25.exe
  respectively.  This allows you to have Lua interpreters
  corresponding to multiple versions of SIMION in the same program
  folder.

  Version-specific notes: The "lua.exe" proxy was added in SIMION
  8.0.5-TEST25.  The above comments do not apply to earlier versions
  of SIMION.

  Implemented in 8.0.5-TEST25.

Issue I512 [prg,high,7.0-compat,resolved]
  PRG user program fails with error when adj_elect not defined in previously
  loaded workbench.

  To reproduce,
    - Restart SIMION.
    - Run _RFdemo\FACTOR.IOB from SIMION 7.0.
    - Run _Tune\TUNE.IOB from SIMION 7.0.
      It gives this error on loading: 
        Error When Compiling: TUNE.prg
        Line    41:          sto adj_elect02
        ERROR --> Fast Adjust Elect/Pole {adj_elect02} Undefined in TUNE.PA0

  Related to Issue I429.

  Affects 8.0.4-TEST4 through 8.0.5-TEST25. Resolved in 8.0.5-TEST26.

Issue I513 [enhancement,resolved]
  Allow workbench size to be non-integral or smaller than 1 mm^3.

  Prior to 8.1 early access mode (8.0.5-TEST26), workbench dimensions were
  forced to be integers in units of mm.  This sometimes caused empty space
  around arrays even after minimizing the workbench ("Min" button on
  "Workbench" tab).  This also implied a minimum workbench size of 1 mm^3,
  which could be bothersome when modeling, say, a portion of a nanoscale field
  emitter.  A workaround, for the purpose of viewing, was to 3D zoom ("+Z3D")
  into a volume smaller than 1 mm^3.

  As of 8.1 early access mode (8.0.5-TEST26), the workbench dimensions can be
  non-integral.  This affects the Workbench tab in View and the IOB file
  format.  (Early access mode is described in Issue I421.  You should
  preferrably place SIMION in early access mode prior to loading/saving the
  workbench.)

  WARNING: At the submicrometer inter-electrode distances, the Casimir
  effect[1] can become significant.

    [1] http://en.wikipedia.org/wiki/Casimir_effect

  Compatibility note: IOB files with non-integral workbench sizes likely will
  load in earlier versions of SIMION though might give minor error messages
  upon attempts to further adjust the workbench size.

  Suggested by pypdjl-20081010-http://www.simion.com/discuss/viewtopic?p=2711

  Implemented in 8.1 early access mode (8.0.5-TEST26).

  See also Issue I478.

Issue I514 [programming,70,defect,resolved]
  Random number generator seed() function freezes when not preceded by rand()
  call.

  Prior to 8.0.5-TEST27, the seed() function generally froze when passed a
  non-zero value if not preceded by a rand() call.  (It crashed in 7.0, at
  least when an active.tbl file was defined.) The seed() call, unlike the
  rand(), call, was not initializing the random number generator.  This is now
  corrected in 8.0.5-TEST27.

  This is not currently corrected in 7.0 (a workaround is to call rand prior
  to seed).

  Affects 7.0.0-8.0.5-TEST26.  Resolved in 8.0.5-TEST27.

Issue I515 [examples,added,resolved]
  Particle and PA instance jumping trick examples added
  ("nonideal_grid/particle_jump" and "nonideal_grid/pa_jump")

  The new "examples\nonideal_grid\particle_jump" example demonstrates
  simulating non-ideal grids via the "particle jumping" ("ion jumping") trick.
  When the particle is approaching the grid (approximated as an ideal grid),
  it is temporarily jumped into a high resolution PA representing a small
  section of the non-ideal grid.  This is based on the older example in the
  SIS application notes.

  The new "examples\nonideal_grid\pa_jump" example demonstrates simulating
  non-ideal grids via the "PA instance jumping" trick.  A PA instance
  representing a high resolution section of the non-ideal grid is jumped
  around during the fly'm to wherever the particle is located.  This is an
  alternate method to the "particle jumping" trick.  It is generally more
  intuitive, but it does require the SIMION 8.1 early access mode (Issue 421).

  Added 2008-10-13/2008-10-14 (8.0.5-TEST26).

Issue I516 [programming,sllibraries,defect,resolved]
  Missing errno include for pa.cpp in SL Libraries
  
  When compiling lib/cpp/simion/pa.cpp, you may get the error

  ...lib/cpp/simion/pa.cpp: In member function «void simion::PA::load(const std::string&)»:
  ...lib/cpp/simion/pa.cpp:281: erreur: «errno» was not declared in this scope
  ...lib/cpp/simion/pa.cpp: In member function «void simion::PA::save(const std::string&, const simion::PAFormat&)»:
  ...lib/cpp/simion/pa.cpp:316: erreur: «errno» was not declared in this scope

  The pa.cpp should have the following line added to the top:

    #include <cerrno>

  Reported by pedregoj-20081013-http://www.simion.com/discuss/viewtopic?p=2718 .
  This is resolved as of 2008-10-13.
  
Issue I517 [gui,defect,resolved]
  Conditional crash on entering View.

  On certain rare conditions, SIMION may crash on entering the View screen.
  It likely only occurs if View was previously exited in a non-2D view, the PA
  size decreased, and the mouse cursor is at certain locations over the PA
  when re-entering the View.

  To reproduce:
    Create a blank 400x400x400 array.
    Enter View. Switch to 3D Iso view. Hover mouse cursor over PA for a
      few seconds. Exit View.
    Remove All PAs from RAM.
    Create a blank 100x100x100 array.
    With mouse cursor in center of window, enter View (with keyboard shorcuts "V").
    It then immediately crashes (sometimes).

  Reported by pypdjl-20081015 and an anonymous user-20080918 via crash
  reports.

  Crash reports:  
    Address=4FA878; Code=C0000005; String=ACCESS_VIOLATION
      Version=8.0.5-TEST24-nosse2; Level=0; Address=4FA878; (20080918)
    Address=4FB268; Code=C0000005; String=ACCESS_VIOLATION
      Version=8.0.5-TEST26-nosse2; Level=0; Address=4FB268; (20081015/20081022)
    Address=4FB32E; Code=C0000005; String=ACCESS_VIOLATION
      Version=8.0.5-TEST26-nosse2; Level=0; Address=4FB32E; (20081024)

  Affects up to 8.0.5-TEST26. Resolved in 8.0.5-TEST27.

Issue I518 [programming,81,enhancement]
  Access memory dump (simion.debug.memory_dump)

  As of 8.1 early access mode (Issue I421), under 8.0.5-TEST28,
  a dump of memory usage can be displayed.  Enter these two
  lines into the bottom SIMION command bar:

    print(simion.debug.memory_dump)

  It will display something like this in the Log:

    -- Note: Values are in megabytes.  "all" is all virtual memory (physical
    -- RAM + on-disk page-file) on this system. "physical" is only physical RAM
    -- memory on this system. "virtual" is virtual address space in THIS
    -- PROCESS. "virtual reserved" is a contiguous (unfragmented) block of the
    -- virtual address space specially reserved via the --reserved-memory
    -- command-line option for large objects. Memory blocks used by or reserved
    -- for large objects are listed. For optimal performance, don't exhaust
    -- physical RAM. Per-process address space may be smaller than system memory
    -- and vice-versa.
    memory_dump = {
      all_size = 4961.57, all_free = 3661.70,
      physical_size = 3071.00, physical_free = 2110.12,
      virtual_size = 2047.88, virtual_free = 168.59,
      virtual_reserved_size = 1843.20, virtual_reserved_free = 1366.36,
      blocks = {
        {first=14.31, last=395.79, size=381.47, state="used"},
        {first=395.79, last=491.16, size=95.37, state="used"},
        {first=491.16, last=1857.52, size=1366.36, state="reserved"},
      },
      blocks_used = 476.84
    }

  You can use this to understand SIMION memory usage, particularly
  for large objects (potential arrays).

  Implemented in 8.1 early access (8.0.5-TEST28).

Issue I519 [gui,resolved]
  "PAs require X MB RAM" on main screen was reporting in units of 10^6
  not 2^20 bytes.

  Prior to 8.0.5-TEST28, the "PAs require X MB RAM" field on the main
  screen was reporting in units of 10^6 = 1 000 000 not 2^20 = 1 048 576.
  This had a small effect on reported RAM usage.

  Resolved in 8.0.5-TEST28.

Issue I520 [print]

  Reported by theo-20080411:
  (2) When printing to eps I saw that the printed figure size changes  
  according to how big the actual simion window is. I think this is not  
  desirable. What you really want is that the print is always the same  
  size no matter how you resize your screen for better viewing. This  
  might also work in the same undesirable fashion in all other printing  
  options. i din't check since I normally only use eps with my Latex  
  paper writing.

Issue I521 [enhancement,inprogress]
  New simion.print_screen() function to print current image.

  A new simion.print_screen() function was added in 8.1 early access mode
  (8.0.5-TEST32) (Issue I421) to invoke the SIMION "print" function from
  View or Modify screens.  It uses the current printer options.
  If the image cannot be printed (e.g. not in a View or Modify screen),
  this function has no effect.

  Project files for new print screen feature in SIMION can be downloaded
  from the "Check for Updates" button in SIMION.

  - simion8-geometry_optimize-20090217.zip
      - new simion.exe and new example.
      - To use:
        - Unzip.
        - Copy your simion.key file (from your SIMION program foler) into this folder.
        - Run the simion*.exe program included in this folder.
        - Select geometry_optimize.lua" program from the "Run Lua Program" button.
        - PNG images and HTML file are written to this folder and displayed
      - See the included Lua programs for details on these new Lua interfaces:
          simion.print_screen()
          simion.printer.type
          simion.printer.filename

  - http://simion.com/tmp/df4s89a.pdf
      - PDF of the three emf files written by an older version of the example

  Current limitations:

    - The simion.printer Lua
      object lacks options on the print options screen and is not well documented.
      This interface will be expanded and improved

  The code may still be improved later.

  This issue was last updated 2009-02-16.

  Funded in part by kevins-200902 (extended support).

  Resolving in 8.1 early access (8.0.5-TEST32). - IN PROGRESS

  See also Issue I523 - printing to BMP/PNG/JPG files

Issue I522 [defect,gem/prog/core,resolved]
  Small defects in 90 degree rotations (GEM files and rotation functions)

  Small numerical defects may be observed in various locations in
  SIMION dealing with rotations by multiples of 90 degrees.
  For example, in the following GEM file, there is not complete
  planar symmetry along the cylinder axis:

  pa_define(21,51,21,p,n,electrostatic)
    electrode(2) {
      fill{
        locate(0,0,0,1,0,0,-90) {
          within_inside_or_on{cylinder(10,-10,80,2,2,100)}
        }
      }
    }

  Here's another example where this effect is more prevalent:

  pa_define(51,51,51,p,n,electrostatic)
    electrode(2) {
      fill{
        locate(0,0,0,1,0,0,-90) {
  # for x=0,50,10 do
  # for y=0,50,10 do
          within_inside_or_on{cylinder($(x),$(-y),80,2,2,100)}
  # end end
        }
      }
    }

  The problem tends to occur when you have a rotation that is a multiple
  of 90 degrees (excluding zero), as in the above examples.
  It also affects API functions like azimuth_rotate, elevation_rotate,
  polar3d_to_rect3d, and polar_to_rect.
  
  The problem is due to small defects in the rotation matrix, which in
  turn result from numerical approximations in the underlying trigonometry
  functions (e.g. `math.cos(math.pi/2) --> 6.1232339957368e-17`).  These occur
  in certain Intel CPU instructions and certain math libraries.
  (e.g. you see the same thing in Excel when evaluating `=COS(PI()/2)`).
  
  The problem is eliminated in 8.1.0-TEST5 (and 8.0.7-TEST5) by forcing
  rotation operations by multiples of 90 degrees in range -360 to 360 degrees
  to be exact. However, other such numerical round-off issues may still remain.
  Note: the underlying math.sin and math.cos functions (which are in radian
  not degrees) do not have this correction.

  Reported by
    bigtailwolf-20090216: http://www.simion.com/discuss/viewtopic?p=2860
    bud-20110723: http://simion.com/discuss/topic/1135-bug-with-anisotropic-scaling/

  Affects 7.0.0-8.0.6 and above.
  Resolved in 8.1.0-TEST5 (and 8.0.7-TEST5).

Issue I523 [enhancement,print]
  Printing to BMP, PNG, and JPG files now supported.

  Added in 8.1 (8.0.5-TEST32 early access mode - see Issue I421)

  See also Issue I521.

Issue I524 [defect,resolved]
  Python 3.0 (Python 3000) compatibility on examples.

  The SL Libraries for Python have been successfully tested on Python 3000.

  A few of the examples (swirl, pa2text, field), however, required a minor
  change to add parenthesis around the print statement argumements.  For
  example, changing print "done" to print("done").

  Question by eloy-20090218.

  Resolved as of 8.0.5-TEST32.

Issue I525 [defect,fastadj,resolved]
  Error on fast adjusting a cropped PA containing fast scalable (.pa_).

  Prior to 8.0.5-TEST32, attempting to fast adjusted a cropped (Issue I313)
  .PA0 file containing a fast scalable electrode (.pa_ solution file),
  results in this error if the reference point is outside of the array:
  
    SIMION Error
    Abort: Reference Point Not Electrode/Pole in
    1.pa_
    OK 

  Reported by retronade-20090313-
    http://www.simion.com/discuss/viewtopic?p=2910

  This error message should not exist for cropped arrays.

  Fixed in 8.0.5-TEST32

Issue I526 [defect,gem]
  Crash upon "No Fill Definitions Found" during
  GEM processing.

  Crash report 20090520.

  Affects some 8.0.5-test versions prior to 8.0.5-TEST33.
  Resolved in 8.0.5-TEST33.

Issue I527 [defect,high,gem]
  PA empty or truncated when importing from GEM.

  Upon converting a GEM file to a potential array, points
  outside certain X, Y, and Z bounds may be missing in the PA.
  Most likely, the PA is completely empty.

  The problem occurs only when the object in the GEM file
  has boundaries that extend to +- infinity.  For example, a
  "notin" fill contains all points outside the selected
  region, extending to infinity.  This bound was wrongly getting
  truncated to an integer following refactoring in 8.0.5-TEST26.

  One example that exhibited this is examples\gauss_law\sc2d.gem :

    pa_define(130,130,1,cylindrical,xy)
    e(-333.3333) { fill { notin  { circle(0,0,119) } } }
    e( 500.0000) { fill { within { circle(0,0,80) } } }

  Reported by Bouaziz-20090520
    -- http://www.simion.com/discuss/viewtopic?p=3031

  The problem only affects 8.0.5-TEST26 to 8.0.5-TEST32.
  Resolved in 8.0.5-TEST33.

Issue I528 [defect,gui,resolved]
  "Record data" and "Pause event" controls not properly updated.

  If loading an IOB, the "record data" check box might not
  be set to the proper state.  Also, toggling the "Record
  data" button does not enable/disable the "Pause event"
  check box.

  Affects 8.0.0 to 8.0.5-TEST33
  Resolved in 8.0.5-TEST34.

Issue I529 [enhancement,resolved]
  New "ion_run" reserved variable.

  A new "ion_run" reserved variable can be used in user programs.
  This is the current run number (integer >= 1).
  It is incremented on each rerun.  It is readable in all segments
  and writable in none.

  Example:

    simion.workbench_program()
    function segment.initialize()
      print('run number=', ion_run)
    end

  This variable is available in 8.1 early access mode (see Issue I421).

  The ion_run variable can also be used in the data recording output file
  (see Issue I231).

  A workaround for earlier versions:

    simion.workbench_program()

    local nrun = 0
    function segment.initialize()
      if ion_number == 1 then nrun = nrun + 1 end
      print('run number=', nrun)
    end
    -- warning: above assumes initialize segment is called
    -- for ion number 1 (requires that ion be created inside
    -- a potential array instance).

  Added in 8.1 (8.0.5-TEST34 - early access).

Issue I530 [defect,resolved]
  Fixed 2-4 GB RAM usage (/LARGEADDRESSAWARE /3GB).

  Access to the 2-4 GB RAM region (under 64-bit Windows or
  the /3GB 32-bit Windows startup option) worked in 8.0.4 but failed
  in 8.0.5-TEST16 to 8.0.5-TEST34 due to omission of the
  /LARGEADDRESSAWARE flag from the simion.exe binary.
  8.0.5-TEST35 re-adds this flag.

  Note: the 2-4 GB RAM region is somewhat experimental but probably
  does work.

  Reported by bud-20090903--http://www.simion.com/discuss/viewtopic?p=3214

  Resolved in 8.0.5-TEST35.

Issue I531 [defect,resolved]
  Cropping PA may wrongly remove Z mirroring. [*]

  Prior to 8.0.5-TEST36, the crop function in Modify would clear
  any z-mirroring on an array if the crop mark started at z=0.
  The correct behavior (fixed in 8.0.5-TEST36) is to only clear
  z-mirroring if the z-width of the crop mark is zero (i.e.
  3D array converted into a 2D array).

  A temporary workaround in older versions is to just re-enable Z
  mirroring using the "Set Params" button in Modify after cropping.

  Reported by pypdjl-20090911-http://www.simion.com/discuss/viewtopic?p=3227

  Resolved in 8.0.5-TEST36.

Issue I531 [enhancement,gui,resolved]
  Make Log window monospaced font.

  Requested by erikm-20090821--http://www.simion.com/discuss/viewtopic?p=3198

  Resolved in 8.0.5-TEST37/36.  [r2892,2893]

Issue I532 [enhancement,gui]
  Improved log window behavior on clicking.

  If log window clicked, text now remains unwrapped and
  scrollbar position is maintained in original location.

  Resolved in 8.0.5-TEST37/36.  [r2892,2893]

Issue I242 [fly2,high,resolved]
  "Text" option in FLY2 screen causes crash.
  Noted by theo-20061003
  Remove/resolve Text panels
  theo-I reproduced the crash. As soon as you load the text 
  option in the position distribution option it crashes.
  Resolved in some version prior to 8.0.0.

Issue I533 [defect,high]
  IOB only preserves first 31 adjustable potentials.

  The SIMION 7.0 IOB format is limited to storing potentials
  for 31 fast adjustable electrodes.  Although SIMION 8.0
  supports PAs with > 31 electrodes (Issue I127), these potentials
  are not preserved when saving an IOB file.

  Reported by various people, including dennisc-20091211

Issue I534 [feature,med-high]
  Access list of adjustable variables in Lua.
  
  Is it possible to access a list of all the adjustable variables in lua? So
  for example you could have some code that just steps through the list of all
  adjustables and writes them all out, instead of writing them out
  individually? -- pjpdjl-20100107
    http://simion.com/discuss/topic/882-recording-adjustable-variables-in-log/page__pid__3385__st__0&#entry3385

  Scheduled for 8.1 early access.

Issue I535 [lua,wb,high,earlyaccess,partlyresolved]
  Moving PA instances from Lua not effective in non-GUI mode.

  This type of thing might not work properly (particles not see the
  new array locations), especially if
  SIMION is run with the "--nogui" command-line option:

    pa1_inst = simion.wb.instances[1]
    pa1_inst.el = _G.V1

  reported by bax-20100108
    http://simion.com/discuss/topic/903-alignment-of-pa-inside-workbench-using-lua-via-command-line

  This feature was not yet fully implemented in early access mode (Issue I421).
  Screen refreshes (in GUI mode) tended to mitigate or remove this problem.

  Affects early access mode in 8.0.5 and prior.
  8.0.6-TEST1 - partially resolved (might work but needs further testing)


Issue I536 [aniso]
  See the "anisotropically scaled PAs" section of the SIMION 8.1
  supplementary documentation help file.

Issue I537 [pa,modify,resolved]
  "expected electrode point for adjustable electrode" on exiting Modify with .PA0 file.

  To reproduce:
    Load quad.pa0 in Modify.  Edit points.  Press Cancel and then Yes, Yes.
    This causes the error message below

    "Failed loading potential array file (QUAD.PA0).  Failed loading fast
    adjust details from end of .PA0 file. expected electrode point for
    adjustable electrode."

  The problem might also occur in other cases that trigger a reload of a .PA0
  file.

  Affects 8.0.6-TEST1 and probably other versions.
  Fix in 8.0.6-TEST2 (r2990)

Issue I538 [batch,enhancement,resolved]
  Allow some SIMION options (e.g. --noprompt) to simion.command.

  SIMION program command-line options like "--noprompt" previously could not
  be passed to simion.command:

    simion.command "--noprompt fly quad.iob"

  This is now supported.

  Only options that make sense inside simion.command have been supported
  though (e.g. --reserved-memory and --nogui are not supported).

  Requested by driley13-20100204-
    http://simion.com/discuss/topic/912-warning-message-on-resized-pa/

  Resolved in 8.0.6-TEST3 (r3000)

Issue I539 [batch,81,defect,resolved]
  Batch mode exited in fly batch mode command under early access.

  Prior to 8.0.5-TEST4 in early access mode, the "fly" batch mode command
  would exit batch mode.  This could cause some undesirable effects like
  prompting even when --noprompt is enabled:
  reported by driley13-20100205-
     http://simion.com/discuss/topic/915-simion-thinks-my-pa-isnt-refined/

  Related to Issue 421
   - If GUI enabled, "fly" batch mode command (Issue I182) runs in View screen.

  Affects 8.1 early access (8.0.6-TEST3 and below)
  Resolved in 8.0.6-TEST4 (r3005)

Issue I540 [batch,81,pa,resolved]
  Basic PAs loaded in batch mode may display a not refined flag (!) in the PA list.

  The problem only affects PAs loaded during batch mode operation.
  This warning flag is incorrect.

  The problem is minor.  Either ignore or update to 8.0.6-TEST4.

  reported by driley13-20100205-
     http://simion.com/discuss/topic/915-simion-thinks-my-pa-isnt-refined/

  Resolved in 8.0.6-TEST4 (r3006)

Issue I541 [81,lua,wb,resolved]
  Particles don't see resized workbench dimensions in batch mode.

  This affects commands like simion.wb.bounds.xr = 20 .

  reported by driley13-20100206-  
    http://simion.com/discuss/topic/915-simion-thinks-my-pa-isnt-refined/page__view__findpost__p__3449

  Affects 8.1 early access (8.0.6-TEST4 and prior)
  Resolved in 8.0.6-TEST5 (r3007)


Issue I542 [81,partlyimplemented,surfrefine]
  TODO-DOCUMENT  

Issue I543 [view,defect,INPROGRESS]
  Crash20100305 (note: similar to Crash20090306)

  Reproduced only on 8.0.6-TEST5 (not in older or newer versions).
   - Load gem file "pa_define (571,301,221, p, z) e(1) { fill { within { box3d(-1e6,-1e6,-1e6,1e6,1e6,1e6) } } }" or using "pa_define (111,31,11, p)" header.
   - In View screen, change scale from 1 to 2 mm/gu.  Note: that graphical image disappears.
     Left and/or right clicking (zoom/unzoom) the graphical view causes crash.
  Reported by muh-20100304.

Issue I544 [enhancement,example,resolved]
  Added helmholtz magnetic field example.

  This is based on the solenoid example but contains two coils
  in a Helmholtz configuration.

  Click the "Check for Updates" button on the SIMION 8.0 main screen
  and download the file simion8-helmholtz_coil-20100414.zip .

  Added 2010-04-14.

Issue I545 [defect]
  CTRL+V not work to paste values in SIMION fields.

  Workaround: use Shift+Ins.
  Note: due to graphics window capturing CTRL.

  Reported by sven-20100503

  Affects 8.0.5 (not 8.0.4)

Issue I546 [defect,osx]
  OS X CrossOver fail viewing 3D OpenGL view.

  Viewing a PA file in SL Tools gives error "Failed to create OpenGL display list".
  Viewing a PA file in the "3D" view in Modify gives "An unhandled exception occurrred" error.

  This does not seem to affect CrossOver 6.2.0 ( Issue I464 ) but does affect more
  recent versions including 9.0.1.

  Reported by jeffm-20100507

Issue I547 [defect,fly2]
  FLY2 crash for zero axis vector.

  Reported by ivan-20100506: Using (latest)
  SIMION-8.0.6-TEST5-20100415 (under WinXP) the program crashes for me
  whenever entering an axis vector (0,0,0) in the particles defintion
  template (source position e.g. as circle sequence or cylinder
  distribution) and then trying to fly'm particles. SIMION then
  crashes with a window showing the error message
  "./simlua/simion/fly2.lua:556: axis cannot be 0 vector stack
  traceback:" (stack traceback is empty, though). Of course it doesn't
  make sense to choose a null vector for an axis, but sometimes you do
  make erroneous inputs, and SIMION should not crash because of
  this. I suspect it's a classical division by zero error ;).  There
  was also an "error in error handling" error while deliberately
  playing around with (bogus) values.
  http://simion.com/discuss/topic/973-axis-cannot-be-0-vector-bug/

Issue I548 [enhance,secondarylib.lua,low]
  Allow secondarylib.lua to record data before and after secondary emission?
  http://simion.com/discuss/topic/950-record-ion-splat-energy-with-secondaryliblua/

Issue I548 [enhance]
  Don't disable 3D zoom controls when at zoom level 0.

  Noted by jeffm-20100528 email:
  > Would also be useful if:
  > - 3D zoom settings were enabled without having to use the mouse to first
  > drag to cut the display

  To resolve by 8.1-beta or 8.0.x

  Difficulty: easy

Issue I549 [resolved,sds]
  SDS cylindrical symmetry velocity arrays broken.

  In collision_sds.lua prior to 20100427, this line
    local vel_coords
  should instead be
    local vel_coords = (velx_defs or vely_defs or velz_defs) and "abs_gu" or nil
  That ensures that arrays loaded via load_array have the proper velocity coordinate system. 
  The older PRG version of SDS is not affected by this.

  reported by AEGatNSCL-20100426:
    http://simion.com/discuss/topic/964-sds-in-lua-cylindrical-symmetry-broken

  Resolved in 20100427 version of collision_sds example

Issue I550 [81,possion,resolved]
  Gaussian smoothing not correct in poisson piclib.lua.

  Although it shouldn't usually cause a problem,
  piclib.lua smooth_charge function doesn't smooth in the way
  intended (Gaussian).

  Occurrences of "smooth_radius" in the lines "local M =
  smooth_radius*2+1", "local xm,ym =
  xi-smooth_radius-1,yi-smooth_radius-1", and "local c =
  1+smooth_radius" should be changed to smooth_size.  Also, the
  "smooth_size" inside the math.exp should be changed to a
  smooth_radius.

  Discussed in
   http://simion.com/discuss/topic/940-poisson-example-continuous-beam/

  Resolved in 20100610 version of poission example (piclib.lua)

Issue I551 [81,poisson,HIGH]
  The Poisson version of Refine can take a long time to converge
  and may corrupt arrays (electrode status changed on points)
  if the charge density is enormous.

  This likely only occurs in practice if the charge density is
  improperly defined.  When this happens, you need to reload the array
  because it is corrupted.

  Reported by Whitestone-20100610
   http://simion.com/discuss/topic/940-poisson-example-continuous-beam/

  Affects 8.1 early access (all versions, including 8.0.6-TEST5 early access)
  To resolve in 8.1beta.

Issue I552 [contours,bug,resolved]
  Small anomaly in gradient contours for maximum positive z in 3D arrays.
  
  There is a small anomoly in gradient contors at the maximum positive
  Z coordinate in 3D arrays.  This is probably not normally noticeable, but
  if you create a (very small) 3x3x3 gu array with potential(z) = z and
  plot gradient contours, it is noticible at z=2.
  
  Affects 7.0.0-8.0.6-TEST6.  Resolved in 8.0.6-TEST7.

Issue I553 [defect/limitation]
  Small numerical errors in grid unit aligned polyline.
  
  pa_define(60,123,1,planar,none,electrostatic)
  electrode(0) {
    fill {
      within_inside_or_on {
        polyline(10,0, 20,0, 20,40, 10,40)
      }
    }
  }
  
  Right side x=20 is only partly filled due to very small numerical
  error.  This is in a way expected but probably can be improved.
  
  Affects 7.0.0-8.0.6-TEST6.
  
Issue I554 [defect/gui,HIGH,resolved]
  Text controls having up/down bottoms not updating properly in 8.0.6-TEST7.
  
  This causes various Modify and View screen problems.  For example,
    - The Modify "Set" function to resize would clear the array, and
       PA x/y/z dimensions did not transfer reliably to/from the GUI.
    - View screen display did not immediate update on changing
       display quality and PE grid steps.
        Reported by peg/brookhaven54-2010-10-22
          http://simion.com/discuss/topic/1057-806-test7-problems

  Affects: 8.0.6-TEST7.
  Resolved in 8.0.6-TEST8.

Issue I555 [defect/gui-editor,resolved]
  Launching text editor or SL Tools fails in 8.0.6-TEST7 due to
  extraneous quotes in command.

  In 8.0.6-TEST7, the text editor fails to launch, giving
  an error about about invalid command, where the command
  contains extraneous quotes.
  This affects, for example, the "User Program..." button on
  the Particles tab and the "Edit..." button in GeomF in Modify.
  
  Affects: 8.0.6-TEST7.
  Fixed in 8.0.6-TEST8.  SL Tools launching fixed in 8.0.6-TEST10.
  
  Reported by peg/brookhaven54-2010-10-22
    http://simion.com/discuss/topic/1057-806-test7-problems

Issue I556 [defect/gui-variables,resolved]
  Variables tab initially zero width in 8.0.6-TEST7.
  
  Note: it expands to normal size after resizing the window.
  
  Reported by peg/brookhaven54-2010-10-22
     http://simion.com/discuss/topic/1057-806-test7-problems
  
  Affects: 8.0.6-TEST7
  Resolved in 8.0.6-TEST8

Issue I557 [defect/gui-memory,resolved]
  GDI handle memory leakage on screen refresh.
  
  On every screen refresh (which can occur frequently
  during a Fly'm), GDI handles are created but not released.

  Reported by peg/brookhaven54-2010-10-25
  http://simion.com/discuss/topic/1059-test-8/
  
  Affects: 8.0.6-TEST7 - 8.0.6-TEST8
  Resolved in 8.0.6-TEST9

  Internal note: related to change from private to DC type change
    (See ::GetDC).

Issue I558 [defect/performance/resolved]
  File loading slowness.
  
  Loading files, particularly PAs, may be slowed down by the GUI.
  This is related to asynchronous I/O being (Issue I468) blocking on GUI update.
  
  Affects: 8.0.6-TEST8 - 8.0.6-TEST9.
  Resolved in 8.0.6-TEST10.

Issue I559 [defect-gui/resolved]
  Fast adjust screen controls don't show input focus cursor.

  Affects 8.0.6-TEST7-8.0.6-TEST9.
  Resolved in 8.0.6-TEST11.

Issue I560 [defect-gui,med-high]
  Fast adjust screen crash on GUI events when PA loading.
  
  Test quickly entering and exiting Fast Adjust screens,
  dozens of times in rapid succession.
  Holding down F key and then clicking Fast Adjust.

  More specifically, on main screen clicking Fast Adjust button
  and very shortly after pressing F key (before Fast Adjust screen
  opens).  After entering Fast Adjust
  screen press ESC.  This crashes it.

  Disabling asynchronous I/O ("simion.debug.allow_asynchronous_io=false" in 8.0.6-TEST10)
  stops this.
  
  Affects 8.0.6-TEST9 and probably certain earlier versions.
  Not yet resolved.

Issue I561 [defect-gui,resolved]
  Error: icon bundle doesn't contain any suitable icon
  
  This error may occur:
  
    ..\..\src\msw\toplevel.cpp(1079): assert "Assert failure" failed in wxTopLevelWindowMSW::SetIcons(): icon bundle doesn't contain any suitable icon
  
    Call stack:
    [00] RtlFreeHeap                             
    [01] 005E57C7
    [02] 0045C68E
    [03] 005E2B68
    [04] 006ECB02
    
    Do you want to stop the program?
    You can also choose [Cancel] to suppress further warnings.
    ---------------------------
    Yes   No   Cancel   
    ---------------------------
  
  The problem occurs when the video magnification on Windows is
  set to something other than 100%.
  Pressing "Cancel" allows you to continue using SIMION as normal
  and is a workaround for now.

  Reported by mu-20101122.
  
  Affects 8.0.6-TEST7 to 8.0.6-TEST9.
  Resolved in 8.0.6-TEST10.
  
Issue I563 [gui-defect,resolved]
  Particle trajectory color corruption.

  In 8.0.6-TEST38 - 8.0.6-TEST9,
  the particle trajectory color may be wrong, particularly
  in the time-step following a marker.  The color was being
  improperly initialized and might (unconfirmed) also lead to a crash.

  Resolved in 8.0.6-TEST10.
  
  [P]

Issue I564 [feature,gui,resolved,experimental]
  Programatically draw 3D lines on View screen
  
  Note: The following feature requires SIMION version 8.1 beta (or
  a development version of 8.0 running in early access mode - see Issue I421).

  simion.experimental.plot_line_segment(
    x1,y1,z1, x2,y2,z2, v1, v2, color1, color2, mark)

  This new function plots a 3D line segment using the same mechanism that SIMION
  uses to draw trajectories.  The given line segment is immediately drawn on
  the View screen GUI (if trajectory viewing or GUI mode is not suppressed)
  and/or written to any trajectory file (trj*.tmp or .kept_traj) for future re-display
  (if trajectory retaining is not suppressed).  You may use this function to plot
  trajectories calculated outside of SIMION or simply to draw lines on the screen
  (applications include drawing custom field/contour lines and drawing boundaries
  of otherwise invisible objects like gas flow arrays).

  For details, download the SIMION electronic documentation
  (simion8-docs-*.zip) version 2010-12-15 or above
  (and see the contained "docs\lua_simion.experimental.html" file).

  The trick of using particle trajectories to trace out contour/field lines
  (Issue I178.2 - "New field lines/vector plotting example ('contour')") is
  inferior to this approach and now largely obsolete.

  There currently are not many examples of using this, other than
  the FAIMS example version 20101216.

  Implemented in 8.1 early access (8.0.6-TEST10)
  Update 2010-12-24 (8.1 early access (8.0.6-TEST11)):
    fix to allow this to be used inside initialize segments.

Issue I565 [gui,defect,resolved]
  Command bar history corruption on repeated commands.
  
  Example: Enter these on SIMION command bar:
    print(123)
    print(234)
    print(123)
  Note: third command repeats existing command.  Command
  history (up/down arrows) now shows missing history,
  and this also raises an exception.
  
  Affects 8.0.6-TEST7 to 8.0.6-TEST9.
  Resolved in 8.0.6-TEST10.
  
Issue I566 [sds,defect,resolved]
  SDS model error "ion's x coord outside array"
  
  This line:
    if px > ysize then error" ERROR: ion's x coord outside array" end
  should instead read
    if px > xsize then error" ERROR: ion's x coord outside array" end
Issue I567 [gui,defect,simple]
  Mark color cannot be changed if time markers disabled.
  
  This pertains to the marker options on the Particles tab in View.

  See
    http://simion.com/discuss/topic/1086-different-time-marker-colors-for-different-groups-of-ions

  Likely affects 8.0.0 and above.

Issue I568 [fly2,defect,resolved]
  Globals Lua functions not accessible in FLY2 files.
  
  Errors like this occur on inserting custom Lua code into FLY2 files:
    example.fly2:1: attempt to call global 'print' (a nil value)
Issue I569
  see other

Issue I570
  see other

Issue I571
  see other

Issue I572 [fadj,defect,resolved]
  Fix "Illegal Fastadj Potential Count" error on
  fast adjusting array with 128 solution arrays (0..127).
  
  A PA# file with all 128 adjustable electrode indices 0..127 that is
  refined will wrongly give the error "Illegal Fastadj Potential Count"
  on attempting to fast adjust it.

  Mitigating factor: using all 128 adjustable electrodes is rare.
  
  Affects ~8.0.0 to 8.0.6-TEST11.
  Resolved in 8.0.6-TEST12.
  
Issue I573 [gui,defect,resolved]
  Fast adjust screen crash/error on more than five electrodes.

  assert "Assert failure" failed in wxGridSizer::DoInsert():
  too many items (11 > 10*1) in grid sizer (maybe you should
  omit the number of either rows or columns?)

  Call stack: (8.0.6-TEST10)
  [00] RtlFreeHeap                             
  [01] 00607B47
  [02] 004818FE
  [03] 00604D67
  [04] 00612562
  [05] 00629F6B
  [06] 004B60EB

  Note: this error should normally be harmless.  You can answer "No" or "Cancel"
  when prompted to "stop the program?".

  Reported by multiple users.

  Affects 8.0.6-TEST7 - 8.0.6-TEST11.
  Resolved in 8.0.6-TEST12.

Issue I574 [fadj,defect,resolved]
  .pa_ corruption using .pa+ file with .pa# file having integer electrode
  numbers exceeding fast adjustable limit
  
  When using a .pa# file with a .pa+ file (Issue I172), if the .pa# file
  contains electrodes with integer potentials exceeding the fast adjustable
  electrode limit (~127 in SIMION 8.0), then the .pa_ file generated by Refine
  may be corrupted and SIMION may crash.  Attempting to adjust the .pa0 file
  may give an error about the .pa_ file:
    `Abort: Wrong Zero Reference Scaling Potential in myarray.pa_`
  
  Resolved in 8.0.6-TEST12.

Issue I575 [pa,feature,inprogress]
  Add anti-mirror symmetry support.

  Anti-mirroring on PA's is similar to mirorr
  Anti-mirroring in X, Y, and Z directions is now directly supported
  in SIMION 8.1 arrays.  For example, X anti-mirroring means that
  phi(x,y,z) = -phi(-x,y,z) for all points (x,y,z).
  
  Anti-mirroring can be particularly useful for systems like
  hexapoles or more generally systems with (4*n - 2) poles.
  
  There were ways to simulate this in SIMION 8.0, such as making the
  X=0 plane be 0 V electrode points

  Implementation in progress for 8.1.0.

Issue I576 [faims,defect,resolved]
  Fixed FAIMS example pressure/temperature load_array coordinates.
  
  In \examples\faims\collision_sds.lua, for pressure and
  temperature arrays auto-loaded via load_array, the coordinates
  used to look up into the array were incorrectly in workbench
  (mm) units rather than absoluate array units (abs_gu).
  This problem affects "faims" since 2009-07-08.
  It does not affect the original "collision_sds" example.  It does
  not affect "faims" with pressure/temperature loaded via
  SDS.pressure or SDS.temperature, as in the included examples.

  Reported sa-2011-02-25.
  Resolved in faims-2011-02-25.

Issue I577 [electrostatic_induction,feature,resolved]
  More efficiently use fast adjust PA memory in induction calculation.
  
  In the electrostatic induction example (examples\electrostatic_induction),
  the electrode solution array memory is more efficiently utilized in the
  induction calculation.  It now only loads the solution array for the electrodes
  being measured rather than all solutions arrays.

  Reported by bijan-2011-02-17: http://simion.com/discuss/topic/1093-simion-error/

  Resolved in electrostatic_induction-20110226.

Issue I578 [81,pa,programming,defect,resolved]
  Crash on pa:potential_vc or pa:field_vc functions with non-fast adjustable PAs.
  
  This affects the Lua PA API (Issue I422).
  
  Crash Report 20110302 (8.0.6-TEST13 - 5AA602).
  Affects 8.1 early access mode (in 8.0.x).
  Resolved in 8.0.6-TEST14.

Issue I579 [81,traj,feature,resolved]
  Add option to omit relativistic effects (for debugging purposes).
  
  In 8.1.0, this is available via
  "View > Particles > more... > Omit relativistic effects" .
  
  See also http://simion.com/info/omit_relativistic_effects.html .
  
  Noted by theo-20110418.
  Implemented in 8.1.0-beta(20110423)

Issue I580 [errorhanding,resolved]
  Failed saving PA file: A
  
  In 8.0.6-TEST7 through 8.0.6-TEST16, trying to save a PA file
  in a directory you don't have permission to will give the error
  "Failed saving PA file: A".  This error message is not informative.
  It should instead read "Failed saving PA file: Access is denied."
  
  Fixed in 8.0.6-TEST17.

Issue I581 [prg,resolved]
  In PRG code, ARCL from adj_elect crashes.
  
  Affects - 8.0.6-TEST12 to 8.0.6-TEST16.  Fixed in 8.0.6-TEST17

Issue I582 [flym,bug,minor,resolved]
  Trajetory CV value reinitialization between integrations.

  Trajectory CV related values (for positive T.Qual values) were
  potentially not being reinitialized between particle integrations, which
  may have (unconfirmed) caused very small anomalies in time-steps at the
  very start of trajectory integration.
  
  Likely affects 7.0 and before.  Resolved in 8.0.6-TEST17 and 8.1.0-TEST2.

Issue I583 [gui,modify,defect,resolved]
  Fix in Modify 3D view, Faces/Lines/Points checkboxes sometimes missing
  Affects 8.0.6-TEST7 - 8.0.6-TEST16.  Fixed in 8.0.6-TEST17.
  
Issue I584 [core,refine,defect,resolved]
  For "pa+" files, fixed ASSERT error if scalable_electrodes[i][j] ...
  is negative and exceed magnitude of of that for all other j values

  On refining a PA# file using a PA+ file where scalable_electrodes[i][j]
  is a negative value exceeding all other scalable_electrodes[i][j] for the
  same i and different j, you may get an ASSERT error message, and the refine
  will abort.

  Reported by nicke-20110714.

  Affects 8.0.7-TEST2 and previous versions
  Resolved in 8.0.7-TEST3.

Issue I585 [gem,81,resolved]
  GEM: Fixed locate X,Y,Z scalings to be applied after rotation.
  
  In the `locate` statement, the scalings should be applied after the
  rotations, as described in the GEM appendix of the manual.
  This order does not matter under isotropic scaling (same in all
  directions), but it does in anisotropic scaling.

  The following should be equivalent:

  locate(0,0,0,, 0,0,0, $(scalex),$(scaley),$(scalez)) { 
    locate(0,0,0,, 0,45,0) { 
      electrode(1) { fill { within { circle(0,0, 10) } } } 
    } 
  }
  
  locate(0,0,0,, 0,45,0, $(scalex),$(scaley),$(scalez)) { 
    electrode(1) { fill { within { circle(0,0, 10) } } } 
  }

  They were not in 8.1.0-TEST4, but this is now fixed in 8.1.0-TEST5.
  (i.e. Constrn checkbox unchecked) 3D views of the View screen to
  be slightly off.
  
  Reported by bud-20110719 - http://simion.com/discuss/topic/1134-anisotropic-scaling-issue/
  points.  Enable 3D ISO view, disable Constrn and
  start rotating.  Lines get out of alignment
  upon rotation.  It's somewhat less noticible for
  larger arrays.
  
  Affects 8.0.6-TEST17 and above.  Resolved.
  
Issue I586 [view,graphics,defect,resolved]
  Distortions in drawing PA's in non-constrained 3D View screen.
Issue I587 [defect,critical,resolved]
  Corrupted Data Recording Events flag (Ion's Start or Ion's Every Time Step events).
  
  In the Data Recording output, the Events flag may be corrupted
  on the first “Ion’s Start” or “Ion’s Every Time Step” Data Recording
  event on each particle.  This may occur only if
  “Ion’s Start” and/or “Ion’s Every Time Step” is selected and
  “Entering an Instance”, “Field Discontinuity”, “Velocity Reversal”,
  and/or “Crossed X/Y/Z” are also selected in “What to Record”.  Under
  these conditions, some of the selected bits in the latter set
  might be wrongly marked in the Events flag (this only happens sometimes).
  
  The error likely occurs in SIMION 7.0 but has only been demonstrated as
  far back as 8.0.0.
  
  Typical examples:
    Ion(1) Event(Ion Created, Crossed X = 150 Plane) TOF(0 usec)
Issue I588 [defect,important,resolved]
  Fixed View screen crashing in drawing certain PA instance rotations.
  
  Affected 7.0.0-8.1.0.47 in rare cases but was more prevalent
  (and only reported) since 8.0.7-TEST5.  Only some PA's tended
  to be affected.  Resolved in 8.0.7.47 and 8.1.0.47.
  
  This improvement in theory might also have a very small
  improvement in particle splat detection in rare cases
  (Issue I223 - clip detection) because it shares the same code.
  
  Reported in a number of 2011 crash reports including 
    http://simion.com/discuss/topic/1223-simion-81047-2012-01-11-bugcrash/
  The temporary workaround there was to disable drawing of the
  affected PA instance (select PA instance on PAs tab and uncheck "Draw").
Any comments on this web page? (will be sent to IMI Adaptas SIMION Support)
[Optional] Your name: email: phone: