tidy3d.Absorber#
- class Absorber[source]#
Bases:
AbsorberSpec
Specifies an adiabatic absorber along a single dimension.
- Parameters:
attrs (dict = {}) β Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields,
attrs
are mutable. For example, the following is allowed for setting anattr
obj.attrs['foo'] = bar
. Also note that Tidy3D` will raise aTypeError
ifattrs
contain objects that can not be serialized. One can check ifattrs
are serializable by callingobj.json()
.name (Optional[str] = None) β Optional unique name for boundary.
num_layers (ConstrainedIntValue = 40) β Number of layers of absorber to add to + and - boundaries.
parameters (AbsorberParams = AbsorberParams(attrs={}, sigma_order=3, sigma_min=0.0, sigma_max=6.4, type='AbsorberParams')) β Adiabatic absorber parameters.
Notes
This absorber is well-suited for dispersive materials intersecting with absorbing edges of the simulation at the expense of more layers.
Usage Caveats
Using absorber boundary is often a good remedy to resolve divergence issues related to
PML
. The adiabatic absorber is a multilayer system with gradually increasing conductivity. The absorber usually has a larger undesired reflection compared toPML
. In practice, this small difference rarely matters, but is important to understand for simulations that require high accuracy.There are two possible sources for the reflection from absorbers. The first, and more common one, is that the ramping up of the conductivity is not sufficiently slow, which can be remedied by increasing the number of absorber layers (40 by default). The second one is that the absorption is not high enough, such that the light reaches the
PEC
boundary at the end of theAbsorber
, travels back through it, and is still not fully attenuated before re-entering the simulation region. If this is the case, increasing the maximum conductivityAbsorberParams
can help. In both cases, changing the order of the scaling of the conductivity (tidy3d.AbsorberParams.sigma_order
) can also have an effect, but this is a more advanced setting that we typically do not recommend modifying.Example
>>> pml = Absorber(num_layers=40)
See also
PML
:A standard PML along a single dimension.
- Notebooks:
Attributes
Methods
Inherited Common Usage
- num_layers#
- parameters#
- __hash__()#
Hash method.