# Exploiting Mirror Symmetry¶

With this project you solve precisely the same project as in the parent section but on a quarter computational domain equipped with mirror boundary conditions. Since the incoming fields are not mirror symmetric, the fields are expanded into for discrete modes (combinations of symmetric- and anti-symmetric fields for both mirrors). This is done automatically by the solver.

In this example the geometry in `layout.jcm`

is defined as an extrusion of a 2D rectangular domain with a slit. To impose mirror boundary conditions the 2D base computational domain is first restricted to the upper right quadrant by halfing of the `Width`

and `Height`

dimensions and usage of the the lower left point `Point1`

as the `Port`

. The mirror boundary conditions can be specified either directly on the computational domain polygon or via the global `BoundaryCondition`

section where a `Boundary`

with `Class = Mirror`

is introduced in the appropriate directions (selected via the outward facing normals):

```
Layout3D {
...
BoundaryConditions {
Boundary {
Direction = [-X,-Y]
Class = Mirror
}
Boundary {
Direction = [X,Y,-Z,Z]
Class = Transparent
}
}
Extrusion {
Objects {
Parallelogram {
DomainId = 1
Priority = ComputationalDomain
Height = 200
Width = 50
Port=Point1
}
```