Boundary Conditions
This page describes the available external boundary conditions in Flexcompute RF (also Flex RF).
Boundary conditions specify the constraints on the field solution along the external boundaries of the simulation domain. In order to achieve good agreement with the physical problem, it is important that the appropriate boundary condition is chosen for the application.
Basic Usage
Section titled “Basic Usage”The BoundarySpec object is the base object that contains boundary information on the external faces normal to the three Cartesian axes x, y, and z. Along every axis, the Boundary object records the specific boundary condition for the plus-side and minus-side faces.
Simulation├── boundary_spec: BoundarySpec # BoundarySpec for base Simulation│ ├── x: Boundary # Boundary along x-axis│ │ ├── plus: ... # Boundary for +x (accepts any type of boundary)│ │ └── minus: ... # Boundary for -x│ ├── y: Boundary # Boundary for +/-y│ │ └── ...│ └── z: Boundary # Boundary for +/-z│ └── ...└── ...Commonly used boundary condition types include PML, PECBoundary, PMCBoundary, Periodic, BlochBoundary, and Absorber.
It is usually not required to manually specify the boundary condition for all six sides. Below are some quick methods to specify boundary conditions.
# Use the same boundary condition for all six sidesmy_boundary_spec = BoundarySpec.all_sides(boundary=PML())
# Use the same boundary condition for each Cartesian axismy_boundary_spec = BoundarySpec( x = Boundary.periodic(), y = Boundary.pec(), z = Boundary.pml(),)
# For full control, manually specify all six sidesmy_boundary_spec = BoundarySpec( x = Boundary(plus=PECBoundary(), minus=PMCBoundary()), y = Boundary(plus=Periodic(), minus=Periodic()), z = Boundary(plus=PML(), minus=PECBoundary()),)Types of Boundaries
Section titled “Types of Boundaries”In this section, we introduce some commonly used boundary types.
PEC/PMC
Section titled “PEC/PMC”The PECBoundary and PMCBoundary boundary types simulate a perfect electric or magnetic conductor by placing constraints on the normal and tangential components of the electric/magnetic fields. The PEC boundary condition is commonly used to represent large physical ground planes.
Absorbing (also Open)
Section titled “Absorbing (also Open)”The PML condition (in full: perfectly matched layer) and the Absorber condition represent open boundary conditions. These boundary types are designed to absorb outgoing flux and minimize reflection back into the simulation domain. They are typically used in open-space setups where the device under simulation is expected to radiate significantly.
The PML condition achieves absorption through coordinate stretching. In contrast, the Absorber condition uses a fictitious lossy medium with ramped conductivity to attenuate outgoing waves. The Absorber boundary is more numerically stable, but the PML type typically achieves better absorption performance.
Note that external PML boudaries implement structure extrusion by default - any structures which come within two grid cells of the PML are extruded through the PML. Physically, this can be thought of as extending those structures to infinity.
Periodic
Section titled “Periodic”Periodic boundary conditions are commonly used in unit cell simulations. The Periodic condition enforces field continuity, i.e.
where and are matching positions on the respective pair of periodic boundaries. This is commonly used in conjunction with a normal-incidence PlaneWave excitation.
The BlochBoundary boundary type implements Bloch periodicity, i.e.
where is the Bloch periodicity vector. This is typically used together with an off-normal-incidence PlaneWave excitation, where the Bloch vector corresponds to the lateral phase difference due to the off-normal plane wave. For user convenience, the Boundary.bloch_from_source() method automatically specifies the BlochBoundary based on a user-specified excitation.