tidy3d.PlaneWave#
- class PlaneWave[source]#
Bases:
AngledFieldSource,PlanarSource,BroadbandSourceUniform current distribution on an infinite extent plane. One element of size must be zero.
- 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 = 3) – Number of points used to approximate the frequency dependence of the injected field. Default is 3, which should cover even very broadband plane waves. For simulations which are not very broadband and the source is very large (e.g. metalens simulations), decreasing the value to 1 may lead to a speed up in the preprocessing.
broadband_method (Literal['chebyshev'] = chebyshev) – PlaneWave only supports the Chebyshev broadband method.
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.angular_spec (Union[
FixedInPlaneKSpec,FixedAngleSpec] = FixedInPlaneKSpec()) – Specification of plane wave propagation direction dependence on wavelength.
Notes
For oblique incidence, there are two possible settings: fixed in-plane k-vector and fixed-angle mode. The first requires Bloch periodic boundary conditions, and the incidence angle is exact only at the central wavelength. The latter requires periodic boundary conditions and maintains a constant propagation angle over a broadband spectrum. For more information and important notes, see this example: Broadband PlaneWave With Constant Oblique Incident Angle.
Example
>>> from tidy3d import GaussianPulse >>> pulse = GaussianPulse(freq0=200e12, fwidth=20e12) >>> pw_source = PlaneWave(size=(inf,0,inf), source_time=pulse, pol_angle=0.1, direction='+')
See also
Attributes
A Chebyshev grid used to approximate frequency dependence.
angle_thetaangle_phipol_angledirectionuse_colocated_integrationsource_timesizecentername- angular_spec#
- num_freqs#
- broadband_method#
- property frequency_grid#
A Chebyshev grid used to approximate frequency dependence.