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:
name (Optional[str] = None) – Optional name for the source.
center (Optional[tuple[Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box]]] = None) – [units = um]. Center of object in x, y, and z.
size (tuple[Union[NonNegativeFloat, autograd.tracer.Box], Union[NonNegativeFloat, autograd.tracer.Box], Union[NonNegativeFloat, autograd.tracer.Box]]) – [units = um]. Size in x, y, and z directions.
source_time (Union[
GaussianPulse,ContinuousWave,CustomSourceTime,BroadbandPulse,BasebandStep,BasebandGaussianPulse,BasebandRectangularPulse,BasebandCustomSourceTime]) – Specification of the source time-dependence.num_freqs (int = 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.
broadband_method (Literal['chebyshev', 'pole_residue'] = chebyshev) – Method for representing the frequency dependence of the injected field. ‘chebyshev’ uses Chebyshev polynomial interpolation (default). ‘pole_residue’ uses a pole-residue (vector fitting) decomposition with auxiliary differential equation (ADE) time stepping. The pole-residue method can be more accurate for highly dispersive modes and uses fewer broadband terms than frequency samples.
use_colocated_integration (bool = True) – If
True(default), source power normalization uses fields interpolated to grid cell boundaries (colocated). IfFalse, uses fields at native Yee grid positions (non-colocated). Should match theuse_colocated_integrationsetting on monitors for consistent power normalization. Experimental feature that can give improved accuracy by avoiding interpolation of fields to Yee cell positions for integration.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. Positive values place the waist behind the source plane (toward the negative normal axis); negative values place the waist in front of the source plane. This definition is independent of the
directionparameter.
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
angle_thetaangle_phipol_angledirectionuse_colocated_integrationbroadband_methodsource_timesizecenternameMethods
Emit warning about changed waist distance interpretation.
- waist_sizes#
- waist_distances#
- num_freqs#
- backward_waist_warning()#
Emit warning about changed waist distance interpretation.