There are two kinds of memory available to a Windows application: Random Access Memory (RAM), which is real memory chips, and Virtual Memory (VM) which is an area of a hard-disk drive that looks like memory to the operating system. An application is normally allocated RAM on opening, but if it needs more RAM than is available, virtual memory is used instead.
The problem is that virtual memory is many thousands of times slower than real memory. Having enough RAM memory for ZEMAX and all your other applications is essential. If ZEMAX is required to use virtual memory, it will run slowly enough that users can be fooled into thinking it has crashed.
Windows is currently a 32-bit operating system, and so can address 4GB of memory space. This is usually partioned as 2GB for the operating system, and 2GB for the applications running on the machine. In reality, only about 1.4 GB is ever allocated to a single program.
There is a boot-time switch that allows this memory to be partitioned to allow applications to use up to 3GB of the 4GB limit, and ZEMAX supports the use of this switch. Again, the reality is that a single application never gets more than about 2.4 GB of memory. You can get more information on the /3GB switch
here.
How much memory ZEMAX needs is a strong function of what you are using it for. Sequential ray-tracing does not use much memory, and our minimum specification of 256 MB minimum/512 MB recommended is sufficient. However, users perfroming large Physical Optics Propagation (POP) studies, or using large CAD files in non-sequential mode, may need considerably more.
Clearly the memory footprint of a CAD file is dependent on how complex the file is, and how efficiently it was exported, and it is hard to generalize about the memory requirements in this case.
With Physical Optics, the calculation is simpler. Each pixel in the data array represents the complex amplitude (i.e. amplitude and phase) of a coherent beam at that point. Therefore two double-precision words are needed per pixel. If polarization is used, four double-precision words are needed, two for each polarization state. Therefore either 16 or 32 bytes are needed per pixel, depending on polarization, just to store the data. Propagating through surfaces requires 56 bytes per pixel for standard surfaces, although more complex surfaces may need up to 90 bytes.
For example, propagating a 2048 x 2048 unpolarized beam through normal refractive surfaces will require about 288 Mb. Making it polarized will require 576. Note this is in addition to the other memory ZEMAX requires.
To propagate an 8K x 8K polarized beam will require more than 9GB of memory. This is currently not possible on 32-bit Windows. Howver, 64-bit versions of Windows XP will allow almost unlimited amounts of memory to be addressed.
To summarize this section, ZEMAX must have enough memory for your intended application. Having too little will slow ZEMAX dramatically, as it is forced to use virtual memory. Having more free memory than is needed will not, however, give any speed advantage.