tidy3d.Boundary#
- class Boundary[source]#
- Bases: - Tidy3dBaseModel- Boundary conditions at the minus and plus extents along a dimension. - Parameters:
- plus (Union[Periodic, PECBoundary, PMCBoundary, PML, StablePML, Absorber, BlochBoundary] = PML(name=None, type='PML', num_layers=12, parameters=PMLParams(sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0))) – Boundary condition on the plus side along a dimension. 
- minus (Union[Periodic, PECBoundary, PMCBoundary, PML, StablePML, Absorber, BlochBoundary] = PML(name=None, type='PML', num_layers=12, parameters=PMLParams(sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0))) – Boundary condition on the minus side along a dimension. 
 
 - Notes - To specify individual boundary conditions along different dimensions, instead of - BoundarySpec, this class is used, which defines the- plusand- minusboundaries along a single dimension.- Example - >>> boundary = Boundary(plus = PML(), minus = PECBoundary()) - See also - BoundarySpec
- Specifies boundary conditions on each side of the domain and along each dimension. 
- PML
- A standard PML along a single dimension. 
- Notebooks
 - Attributes - Methods - absorber([num_layers, parameters])- Adiabatic absorber boundary specification on both sides along a dimension. - bloch(bloch_vec)- Bloch boundary specification on both sides along a dimension. - bloch_from_source(source, domain_size, axis)- Bloch boundary specification on both sides along a dimension based on a given source. - bloch_on_both_sides(values)- Error if a Bloch boundary is applied on only one side. - pec()- PEC boundary specification on both sides along a dimension. - periodic()- Periodic boundary specification on both sides along a dimension. - periodic_with_pec_pmc(values)- If a PBC is specified along with PEC or PMC on the other side, manually set the PBC to PEC or PMC so that no special treatment of halos is required. - periodic_with_pml(values)- Error if PBC is specified with a PML. - pmc()- PMC boundary specification on both sides along a dimension. - pml([num_layers, parameters])- PML boundary specification on both sides along a dimension. - stable_pml([num_layers, parameters])- Stable PML boundary specification on both sides along a dimension. - plus#
 - minus#
 - classmethod bloch_on_both_sides(values)[source]#
- Error if a Bloch boundary is applied on only one side. 
 - classmethod periodic_with_pec_pmc(values)[source]#
- If a PBC is specified along with PEC or PMC on the other side, manually set the PBC to PEC or PMC so that no special treatment of halos is required. 
 - classmethod periodic()[source]#
- Periodic boundary specification on both sides along a dimension. - Example - >>> pbc = Boundary.periodic() 
 - classmethod bloch(bloch_vec)[source]#
- Bloch boundary specification on both sides along a dimension. - Parameters:
- bloch_vec (complex) – Normalized component of the Bloch vector in units of 2 * pi / (size along dimension) in the background medium, along the dimension in which the boundary is specified. 
 - Example - >>> bloch = Boundary.bloch(bloch_vec=1) 
 - classmethod bloch_from_source(source, domain_size, axis, medium=None)[source]#
- Bloch boundary specification on both sides along a dimension based on a given source. - Parameters:
- source (Union[ - GaussianBeam,- ModeSource,- PlaneWave]) – Angled source.
- domain_size (float) – Size of the domain in the direction normal to the Bloch boundary 
- axis (int) – Axis normal to the Bloch boundary 
- medium ( - Medium) – Background medium associated with the Bloch vector. Default: free space.
 
 - Example - >>> from tidy3d import GaussianPulse, PlaneWave, inf >>> pulse = GaussianPulse(freq0=200e12, fwidth=20e12) >>> pw_source = PlaneWave( ... size=(inf,inf,0), source_time=pulse, direction='+', angle_theta=0.2, angle_phi=0.3) >>> bloch = Boundary.bloch_from_source(source=pw_source, domain_size=5, axis=0) 
 - classmethod pec()[source]#
- PEC boundary specification on both sides along a dimension. - Example - >>> pec = Boundary.pec() 
 - classmethod pmc()[source]#
- PMC boundary specification on both sides along a dimension. - Example - >>> pmc = Boundary.pmc() 
 - classmethod pml(num_layers=12, parameters=PMLParams(sigma_order=3, sigma_min=0.0, sigma_max=1.5, type='PMLParams', kappa_order=3, kappa_min=1.0, kappa_max=3.0, alpha_order=1, alpha_min=0.0, alpha_max=0.0))[source]#
- PML boundary specification on both sides along a dimension. - Parameters:
- num_layers (int = 12) – Number of layers of standard PML to add to + and - boundaries. 
- parameters ( - PMLParams) – Parameters of the complex frequency-shifted absorption poles.
 
 - Example - >>> pml = Boundary.pml(num_layers=20) 
 - classmethod stable_pml(num_layers=40, parameters=PMLParams(sigma_order=3, sigma_min=0.0, sigma_max=1.0, type='PMLParams', kappa_order=3, kappa_min=1.0, kappa_max=5.0, alpha_order=1, alpha_min=0.0, alpha_max=0.9))[source]#
- Stable PML boundary specification on both sides along a dimension. - Parameters:
- num_layers (int = 40) – Number of layers of ‘stable’ PML to add to + and - boundaries. 
- parameters ( - PMLParams) – ‘Stable’ parameters of the complex frequency-shifted absorption poles.
 
 - Example - >>> stable_pml = Boundary.stable_pml(num_layers=40) 
 - classmethod absorber(num_layers=40, parameters=AbsorberParams(sigma_order=3, sigma_min=0.0, sigma_max=6.4, type='AbsorberParams'))[source]#
- Adiabatic absorber boundary specification on both sides along a dimension. - Parameters:
- num_layers (int = 40) – Number of layers of absorber to add to + and - boundaries. 
- parameters ( - PMLParams) – Adiabatic absorber parameters.
 
 - Example - >>> absorber = Boundary.absorber(num_layers=40) 
 - __hash__()#
- Hash method.