tidy3d.GaussianBeam#
- class GaussianBeam[source]#
Bases:
AngledFieldSource,PlanarSource,BroadbandSourceGaussian distribution on finite extent plane.
- 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_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 places the waist behind the source plane (toward the negative normal axis). A negative value places the waist in front of the source plane (toward the positive normal axis). This definition is independent of the
directionparameter, ensuring consistent waist positioning for both forward- and backward-propagating beams. For an angled source, the distance is measured 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)
See also
- Notebooks:
Attributes
angle_thetaangle_phipol_angledirectionuse_colocated_integrationbroadband_methodsource_timesizecentername- waist_radius#
- waist_distance#
- num_freqs#