tidy3d.GaussianBeam#
- class GaussianBeam[source]#
Bases:
AngledFieldSource,PlanarSource,BroadbandSourceGaussian distribution on finite extent plane.
- 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 injected field. A Chebyshev interpolation is used, thus, only a small number of points, i.e., less than 20, is typically sufficient to obtain converged results.
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_radius (PositiveFloat = 1.0) β [units = um]. Radius of the beam at the waist.
waist_distance (float = 0.0) β [units = um]. Distance from the beam waist along the propagation direction. A positive value means the waist is positioned behind the source, considering the propagation direction. For example, for a beam propagating in the
+direction, a positive value ofbeam_distancemeans the beam waist is positioned in the-direction (behind the source). A negative value means the beam waist is in the+direction (in front of the source). For an angled source, the distance is defined along the rotated propagation direction.
Example
>>> from tidy3d import GaussianPulse >>> pulse = GaussianPulse(freq0=200e12, fwidth=20e12) >>> gauss = GaussianBeam( ... size=(0,3,3), ... source_time=pulse, ... pol_angle=np.pi / 2, ... direction='+', ... waist_radius=1.0)
Notes
If one wants the focus βin frontβ of the source, a negative value of
beam_distanceis needed.
See also
- Notebooks:
Attributes
Methods
Inherited Common Usage
- waist_radius#
- waist_distance#
- __hash__()#
Hash method.