dimensional visualization via VIS5D -Be free for anyone inside IBM to use
and, most importantly,
-Provide a powerful way to optimize structures for a given purpose, e.g. couplers, masks, antennas, and so forth.
To avoid wasted effort, as much as possible of the information generated by the simulation needs to be kept for further use and for sanity checks along the way. It should also be possible to stop an optimization run in the middle and restart it without losing the previous results, using the RESTART command line option (see Section 3.1.1). The current release of POEMS does all of these things.
1.1.2. Structure
POEMS consists of a front-end script that handles all the housekeeping, optimization, and interface duties, a simulation engine, a postprocessor to turn raw values of E and H into useful output, and a visualization system based on VIS5D. The simulation engines are currently TEMPEST, a finite-difference time-domain (FDTD) simulation code developed by Alfred Wong and Tom Pistor at the University of California at Berkeley, whose single- processor form is widely available in C source; and FIDO, a plug-compatible program written from scratch. FIDO accepts the subset of the TEMPEST input file format used by POEMS, with some extensions, so that single-processor simulation can be run on both, and the results compared. FIDO is a significantly more advanced design than TEMPEST, since it precomputes a strategy for the computation instead of just putting a huge switch statement inside a triply-nested for() loop. In addition, it is multithreaded, which allows efficient utilization of symmetric multiprocessor (SMP) machines without additional user effort. On a dual-processor 2.8 GHz Xeon machine running Windows XP, FIDO is about 2.5x faster than TEMPEST on a typical problem--2x for two CPUs, and 25% faster on a per- CPU basis. With this release, FIDO can now run on clusters of Linux, Windows, or OS/2 clusters connected over a TCP/IP network. There is some performance penalty for this, mainly due to communications latency, but for simulations large enough that each time step takes at least 0.5 second, the scaling is excellent.
The user interacts with the front-end script via a high-level input file. Commands in the input file are parsed in the order written. For example, you can’t use a variable at a point above its definition in the file.
1.1.3. Optimization
The POEMS optimizer is currently a vanilla Nelder-Mead downhill simplex algorithm, similar to the Numerical Recipes AMOEBA routine. (A simplex is an N-dimensional figure with N+1 vertices--examples are triangles and tetrahedrons.) Nelder-Mead stays out of trouble pretty well in optimizing continuous functions, unless the simplex gets pathologically long and skinny, in which case it complains. Most of the time, though, we’re optimizing simulation geometry, i.e. which block gets which material. Object dimensions come only in integer multiples of the local cell size, so rounding occurs before the object is generated. Changing the requested size has no effect whatever until it