tidy3d.AstigmaticGaussianBeam#
- class AstigmaticGaussianBeam[source]#
Bases:
AngledFieldSource,PlanarSource,BroadbandSourceThe simple astigmatic Gaussian distribution allows both an elliptical intensity profile and different waist locations for the two principal axes of the ellipse. When equal waist sizes and equal waist distances are specified in the two directions, this source becomes equivalent to
GaussianBeam.- 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,
attrsare mutable. For example, the following is allowed for setting anattrobj.attrs['foo'] = bar. Also note that Tidy3D` will raise aTypeErrorifattrscontain objects that can not be serialized. One can check ifattrsare serializable by callingobj.json().name (Optional[str] = None) β Optional name for the source.
center (Union[tuple[Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box]], Box] = (0.0, 0.0, 0.0)) β [units = um]. Center of object in x, y, and z.
size (Union[tuple[Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box]], Box]) β [units = um]. Size in x, y, and z directions.
source_time (Union[GaussianPulse, ContinuousWave, CustomSourceTime]) β Specification of the source time-dependence.
num_freqs (ConstrainedIntValue = 1) β Number of points used to approximate the frequency dependence of the injected field. For broadband, angled Gaussian beams it is advisable to check the beam propagation in an empty simulation to ensure there are no injection artifacts when βnum_freqsβ > 1. Note that larger values of βnum_freqsβ could spread out the source time signal and introduce numerical noise, or prevent timely field decay.
direction (Literal['+', '-']) β Specifies propagation in the positive or negative direction of the injection axis.
angle_theta (float = 0.0) β [units = rad]. Polar angle of the propagation axis from the injection axis.
angle_phi (float = 0.0) β [units = rad]. Azimuth angle of the propagation axis in the plane orthogonal to the injection axis.
pol_angle (float = 0) β [units = rad]. Specifies the angle between the electric field polarization of the source and the plane defined by the injection axis and the propagation axis (rad).
pol_angle=0(default) specifies P polarization, whilepol_angle=np.pi/2specifies S polarization. At normal incidence when S and P are undefined,pol_angle=0defines: -Eypolarization for propagation alongx.-Expolarization for propagation alongy.-Expolarization for propagation alongz.waist_sizes (Tuple[PositiveFloat, PositiveFloat] = (1.0, 1.0)) β [units = um]. Size of the beam at the waist in the local x and y directions.
waist_distances (Tuple[float, float] = (0.0, 0.0)) β [units = um]. Distance to the beam waist along the propagation direction for the waist sizes in the local x and y directions. When
directionis+andwaist_distancesare positive, the waist is on the-side (behind) the source plane. Whendirectionis+andwaist_distancesare negative, the waist is on the+side (in front) of the source plane.
Notes
This class implements the simple astigmatic Gaussian beam described in [1].
References:
Example
>>> from tidy3d import GaussianPulse >>> pulse = GaussianPulse(freq0=200e12, fwidth=20e12) >>> gauss = AstigmaticGaussianBeam( ... size=(0,3,3), ... source_time=pulse, ... pol_angle=np.pi / 2, ... direction='+', ... waist_sizes=(1.0, 2.0), ... waist_distances = (3.0, 4.0))
Attributes
Methods
Inherited Common Usage
- waist_sizes#
- waist_distances#
- num_freqs#
- __hash__()#
Hash method.