Another way of stating this is that if a symmetry plane is like a mirror, then we’d expect
that a block pushed right up against it would look like two blocks. With POEMS, we have
to think of it as pushing a block up to and halfway through the mirror, so it still looks like
one block. A one-block layer at the symmetry axis unfolds to one block, a two-block
layer unfolds to three blocks, and in general N blocks unfold to 2N-1 blocks. Furthermore,
you can’t have symmetry just on one side--if X is a symmetry direction, both the xmin
and xmax faces are symmetry planes.
We’re typically using symmetry to improve the tradeoff between the block size and the
number of blocks required-in other words, trying to get the finest level of detail we can
afford. Implementing symmetry the other way, so that a one-block layer at the symmetry
axis unfolds to 2 blocks, means that there is no way to get 1-block details at the
symmetry axis. At least one symmetry plane is usually right in the middle of the region
of interest, so this reduces the value of symmetry in saving computation. Thus this
seemingly odd choice is in fact superior. However, it does have significant consequences
for postprocessing, e.g. you can’t just compute the flux over half the area and double it,
because that will count the blocks on the symmetry axis twice. The postprocessor code
handles this by halving the weights of blocks lying against the symmetry axis. The
halving happens separately for each axis, so that if there are two symmetry directions, the
symmetry face blocks have weight 0.5 and the ones down the intersections of the
symmetry planes have weight 0.25. Thus the integrals and fluxes computed by POEMS can
be simply multiplied by a factor of 2 per symmetry axis to yield the correct result for the
unfolded domain.
We commonly want to run a symmetric simulation once in the full domain and once in
the halved or quartered domain, to make sure everything comes out the same. To do this
in POEMS, remember that if the folded dimension has N cells, its invisible other side has
N-2 cells. (The end cells are special.) Thus the full domain will be 2N-2 cells wide. If
you run the full domain first, you must give it an even number of cells in the symmetry
direction.
Symmetrical domains of course must have symmetrical illumination. The TEMPEST
approach is to forbid such domains to have off-axis plane waves applied to them. The
other approach would have been to double each plane wave source, so that their result
was symmetric, which would be preferable. Since the xxBEAM source statements are
implemented as sums of plane waves, we can’t use them on symmetric domains. Use
mode sources instead. It isn’t difficult to make a mode source out of a beam source: just
run a three-cycle simulation of the desired beam shining into an empty domain, and
make the mode file in a plane near the source.
3.3. OBJECTS
Everything in the simulation domain is made up of cubical blocks arranged in a simple
cubic lattice, so there’s a limit to how subtle we can be in specifying curves and angles.
Nonetheless, POEMS provides a wide array of object types that can be parameterized in
powerful ways, as discussed in the command reference.
32