tidy3d.ThinLensBeam#

class ThinLensBeam[source]#

Bases: AbstractThinLens, AbstractGaussianBeam

Focused 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). If False, uses fields at native Yee grid positions (non-colocated). Should match the use_colocated_integration setting 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, while pol_angle=np.pi/2 specifies S polarization. At normal incidence when S and P are undefined, pol_angle=0 defines: - Ey polarization for propagation along x.- Ex polarization for propagation along y.- Ex polarization for propagation along z.

  • 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. If False, use a Gaussian under-filled pupil defined by lens_diameter and beam_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=False and ignored when fill_lens=True.

  • beam_diameter (Optional[PositiveFloat] = None) – [units = um]. Incident Gaussian beam diameter used for Gaussian under-filled pupils. Required when fill_lens=False and ignored when fill_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_aperture

waist_distance

fill_lens

lens_diameter

beam_diameter

num_plane_waves

lens_offset

angle_theta

angle_phi

pol_angle

num_freqs

direction

use_colocated_integration

broadband_method

source_time

size

center

name

Methods

compute_beam_fields_on_grid(*, pose, grid, ...)

Compute thin-lens beam fields from compact pose/grid context.

compute_beam_fields_on_grid(*, pose, grid, normalize, params=None)[source]#

Compute thin-lens beam fields from compact pose/grid context.