tidy3d.ThinLensBeam#
- class ThinLensBeam[source]#
Bases:
AbstractThinLens,AbstractGaussianBeamFocused beam generated by a vectorial thin-lens angular spectrum.
- Parameters:
name (Optional[str] = None) – Optional name for the source.
center (tuple[Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box]] = (0.0, 0.0, 0.0)) – [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 (Union[float, autograd.tracer.Box] = 0.0) – [units = rad]. Polar angle of the propagation axis from the injection axis.
angle_phi (Union[float, autograd.tracer.Box] = 0.0) – [units = rad]. Azimuth angle of the propagation axis in the plane orthogonal to the injection axis.
pol_angle (Union[float, autograd.tracer.Box] = 0.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.numerical_aperture (PositiveFloat) – Numerical aperture of the focused beam in the background medium. This must be less than the real refractive index on the component plane.
waist_distance (float = 0.0) – [units = um]. Signed axial distance from the thin-lens focal plane to the component plane, measured along the rotated beam propagation direction. A positive value places the focal plane behind the component plane.
fill_lens (bool = True) – If
True, use a uniform circular pupil over the numerical aperture. IfFalse, use a Gaussian under-filled pupil defined bylens_diameterandbeam_diameter. If not provided, the lens is filled.lens_diameter (Optional[PositiveFloat] = None) – [units = um]. Physical lens diameter used for Gaussian under-filled pupils. Required when
fill_lens=Falseand ignored whenfill_lens=True.beam_diameter (Optional[PositiveFloat] = None) – [units = um]. Incident Gaussian beam diameter used for Gaussian under-filled pupils. Required when
fill_lens=Falseand ignored whenfill_lens=True.num_plane_waves (Union[PositiveInt, tuple[PositiveInt, PositiveInt]] = 51) – Number of angular-spectrum samples in the two tangential directions. If an integer is supplied, the same value is used in both directions. If not provided, 51 samples are used in each direction. Each direction is limited to 1000 samples.
lens_offset (tuple[float, float] = (0.0, 0.0)) – [units = um]. Tangential offset of the focused field relative to the beam axis, implemented as a pupil phase ramp. The two entries follow the component’s tangential-axis order after removing the normal axis from
(x, y, z). For example, a y-normal component uses(x, z). This shifts the ideal focal field but does not model a decentered finite aperture with clipping or changed pupil amplitude. If not provided, the focal field is centered on the optical axis.beams (The source uses the same analytic field injection machinery as Gaussian)
field (but the)
model. (profile is generated from a thin-lens pupil instead of a paraxial Gaussian waist)
Attributes
numerical_aperturewaist_distancefill_lenslens_diameterbeam_diameternum_plane_waveslens_offsetangle_thetaangle_phipol_anglenum_freqsdirectionuse_colocated_integrationbroadband_methodsource_timesizecenternameMethods
compute_beam_fields_on_grid(*, pose, grid, ...)Compute thin-lens beam fields from compact pose/grid context.