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.