System and memory requirements and maximum numbers of segments etc for the 32-bit programs.


Introduced in 2023, the freely available 32-bit versions of cpo2ds and cpo3ds have some limitations.  The maximum numbers of segments are 1500 and 3000 for cpo2ds and cpo3ds respectively and the following options are not available: scattering, stochastic, user cathodes, dielectrics, field import.

System and memory requirements for the full versions:


The software will run on any intel or intel-compatible processor running Windows 7, 8, 10 and 11.


The CPO software for the full versions requires at least 4Gb of RAM and a reasonable amount of free disc space. We recommend 4Gb of RAM, on a 32 bit Windows system and Windows 10 or later. At present the programs do not support multi-threading but will run on a multi core system.


If the full versions crash with a message about the memory stack, try increasing the maximum size of the virtual memory, as follows:

Start->Control Panel->(Performance)->System->Advanced->Performance settings

->Advanced->Virtual Memory

Maximum number of segments for 32-bit programs


Specific numbers concerned with memory are fixed in advanced when the program is compiled. At present the maximum number, maxseg, of segments for the full 64-bit versions is 12k, while for the 32-bit free versions it is 1500 for cpo2ds and 3000 for cpo3ds.


Note that high accuracy can often be obtained with less than 2k segments, as the “test” files show. If you have usually used FDM or FEM programs in the past - that is, programs that are based on a 'grid' of points, such as SIMION- you will almost certainly be very surprised at how few segments you need to obtain high accuracy.


Maxseg is much smaller than 8k in the evaluation versions and is smaller still in the free versions..


Other maximum numbers are related to maxseg by:


mesh points: maxseg**2/9 for CPO2D and CPO2DS

 (maxseg**2 - 21*maxseg)/8 for CPO3D

 (maxseg**2 - 21*maxseg)/12 for CPO3DS

ray plotting points:  maxseg**2/18 for CPO2D and CPO2DS

 (maxseg**2 - 21*maxseg)/16 for CPO3D

 (maxseg**2 - 21*maxseg)/24 for CPO3DS

voltages: maxseg/8

rays: maxseg*2

lens axis points:  maxseg*8 for CPO2D and CPO2DS

secondary productions, per ray maxseg/60

space-charges: maxseg*50

The number of space-charges refers to the number of either cells or tubes.


The programs also contain other maximum numbers that are independent of maxseg. These include the maximum number of focus points that can be read (250), the maximum number of potentials or fields along a line (250), the maximum number of space charge repeat items (1000).



The time taken to invert a matrix of dimension N*N should go as N^3 (see Numerical Recipes, by W. H. Press et al, Cambridge University Press) but in practice in the CPO programs the exponent has usually been found to be higher than 3, typically 3.5. When N = 8000 with a 32-bit, 2.2 GHz, Vista computer the time to invert is approximately 5hrs. Also, when N is higher than about 6k communication with the main screen seems to be lost sometimes while the matrix is being inverted.




All programs:


The actual numbers of segments etc. are of course increased by a factor of 2 for each reflection in a plane of symmetry.