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
3