xmpl2d06, 6th 'example' data file for CPO2D
An example of iterative subdivision (that is, adaptive segmentation), for a double-cylinder lens.
The geometry is identical to that in the first example file xmpl2d01.dat. Iterative subdivision (also called adaptive segmentation) is used to increase the number of subdivisions from 10 to 50, in 4 stages. At each stage the segments that carry the largest charges are subdivided the most, so that eventually all the segments carry approximately the same charge.
The number of segments used in the present example is small enough for the example to be run with the ‘demo’ version of CPO2D. Higher accuracy could of course be obtained with more segments, using the standard or full versions of CPO2D.
The following data were obtained when the memory and speed of PC's was much more limited than at present, so the available number of segments was small and the requested inaccuracies were fairly high to give a quick demonstration.
This example is identical to that in the first example file xmpl2d01.dat, with the following exceptions:
(1) the highest printing level ('a', for 'all') is used, so that the final sizes of the segments and the charges on them can be inspected,
(2) the initial total number of subdivisions is 10 (it is 50 in the first example file), and the method of subdivision is always '0' (for uniform),
(3) 'iterative subdivision' (that is, 'adaptive segmentation') is used to increase the number of subdivisions to 50, using 4 stages and a 'weight-charge' factor of 1.0 (as explained in the relevant note),
(4) less lens and ray information is requested.
The charge density on the cylinders is highest at the ends near the gap, so the segments into which the cylinders are subdivided should be the smallest there. The segment nearest to the gap is the last in the list of segments (in this example), and it can be seen from the output file temp6a.dat that this segment has been given a final length of 0.0016, after the 4 stages of iterative subdivision (that is, adaptive segmentation). This can be compared with the length of 0.0037 given to this segment in the first example file xmpl2d01.dat, by using 'type 1' of subdivision (see the relevant note to see how this length is calculated by the program, given that the number of subdivisions is 16 and the electrode length is 0.95).
It can also be seen from the output file that all the segments except the first one carry approximately the same charge (within a factor of about 2, higher or lower).
The lens parameters are almost the same as those obtained in the first example file.
Iterative subdivision (that is, adaptive segmentation) has automatically given a distribution of segment sizes similar to that imposed by the user in the first example file.
WARNING: iterative subdivision cannot always be relied upon to give an appropriate distribution of segment sizes. For example when it is used for double-aperture or double-slit lenses (see the 2nd and 4th example files, and the notes at the ends of those files) it tends to give segments that are not dense enough at the edges of the apertures or slits, and so the fields in these regions are not as accurate as they could be. In other words, iterative subdivision optimises the fields in the whole system, sometimes at the expense of the fields in regions that are critical for the simulation in hand. A way of overcoming this difficulty is to start with high numbers of segments in the critical regions (since iterative subdivision cannot remove any of the initial segments).