tidy3d.BlochBoundary#
- class BlochBoundary[source]#
Bases:
BoundaryEdge
Specifies a Bloch boundary condition along a single dimension.
- Parameters:
name (Attribute:
name
) โType
Optional[str]
Default
= None
Description
Optional unique name for boundary.
bloch_vec (Attribute:
bloch_vec
) โType
float
Default
Description
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 = BlochBoundary(bloch_vec=1)
See also
Attributes
Returns the forward phase factor associated with bloch_vec.
Methods
from_source
(source,ย domain_size,ย axis[,ย medium])Set the Bloch vector component based on a given angled source and its center frequency.
- bloch_vec#
- property bloch_phase#
Returns the forward phase factor associated with bloch_vec.
- classmethod from_source(source, domain_size, axis, medium=None)[source]#
- Set the Bloch vector component based on a given angled source and its center frequency.
Note that if a broadband angled source is used, only the frequency components near the center frequency will exhibit angled incidence at the expect angle. In this case, a narrowband source is recommended.
- Parameters:
source (Union[
GaussianBeam
,ModeSource
,PlaneWave
]) โ Angled source.domain_size (float) โ Size of the domain (micron) 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.
- Returns:
Bloch boundary condition with wave vector defined based on the source angles and center frequency.
- Return type:
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 = BlochBoundary.from_source(source=pw_source, domain_size=5, axis=0)
- __hash__()#
Hash method.