tidy3d.DiffractionData#
- class DiffractionData[source]#
- Bases: - AbstractFieldProjectionData- Data for a - DiffractionMonitor: complex components of diffracted far fields.- Parameters:
- monitor (DiffractionMonitor) – Diffraction monitor associated with the data. 
- Er (DiffractionDataArray) – Spatial distribution of r-component of the electric field. 
- Etheta (DiffractionDataArray) – Spatial distribution of the theta-component of the electric field. 
- Ephi (DiffractionDataArray) – Spatial distribution of phi-component of the electric field. 
- Hr (DiffractionDataArray) – Spatial distribution of r-component of the magnetic field. 
- Htheta (DiffractionDataArray) – Spatial distribution of theta-component of the magnetic field. 
- Hphi (DiffractionDataArray) – Spatial distribution of phi-component of the magnetic field. 
- medium (Union[Medium, AnisotropicMedium, PECMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, FullyAnisotropicMedium, CustomMedium, CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomAnisotropicMedium, PerturbationMedium, PerturbationPoleResidue, Medium2D] = Medium(name=None, frequency_range=None, allow_gain=False, nonlinear_spec=None, modulation_spec=None, heat_spec=None, type='Medium', permittivity=1.0, conductivity=0.0)) – Background medium through which to project fields. 
- sim_size (Tuple[float, float]) – [units = um]. Size of the near field in the local x and y directions. 
- bloch_vecs (Tuple[float, float]) – Bloch vectors along the local x and y directions in units of - 2 * pi / (simulation size along the respective dimension).
 
 - Example - >>> from tidy3d import DiffractionDataArray >>> f = np.linspace(1e14, 2e14, 10) >>> orders_x = list(range(-4, 5)) >>> orders_y = list(range(-6, 7)) >>> pol = ["s", "p"] >>> coords = dict(orders_x=orders_x, orders_y=orders_y, f=f) >>> values = (1+1j) * np.random.random((len(orders_x), len(orders_y), len(f))) >>> field = DiffractionDataArray(values, coords=coords) >>> monitor = DiffractionMonitor( ... center=(1,2,3), size=(np.inf,np.inf,0), freqs=f, name='diffraction' ... ) >>> data = DiffractionData( ... monitor=monitor, sim_size=[1,1], bloch_vecs=[1,2], ... Etheta=field, Ephi=field, Er=field, ... Htheta=field, Hphi=field, Hr=field, ... ) - Attributes - Complex power amplitude in each order for 's' and 'p' polarizations, normalized so that the power carried by the wave of that order and polarization equals - abs(amps)^2.- The (theta, phi) angles corresponding to each allowed pair of diffraction orders storeds as data arrays. - Coordinates grid for the fields in the spherical system. - Get all field components in Cartesian coordinates relative to the monitor's local origin for all allowed diffraction orders and frequencies specified in the - DiffractionMonitor.- Get all field components in spherical coordinates relative to the monitor's local origin for all allowed diffraction orders and frequencies specified in the - DiffractionMonitor.- Allowed orders along x. - Allowed orders along y. - Total power in each order, summed over both polarizations. - Get the normalized "ux" and "uy" reciprocal vectors. - Normalized wave vector along x relative to - local_originand oriented with respect to- monitor.normal_dir, normalized by the wave number in the projection medium.- Normalized wave vector along y relative to - local_originand oriented with respect to- monitor.normal_dir, normalized by the wave number in the projection medium.- Methods - compute_angles(reciprocal_vectors)- Compute the polar and azimuth angles associated with the given reciprocal vectors. - reciprocal_coords(orders, size, bloch_vec, ...)- Get the normalized "u" reciprocal coords for a vector of orders, size, and bloch vec. - shifted_orders(orders, bloch_vec)- Diffraction orders shifted by the Bloch vector. - monitor#
 - Er#
 - Etheta#
 - Ephi#
 - Hr#
 - Htheta#
 - Hphi#
 - sim_size#
 - bloch_vecs#
 - static reciprocal_coords(orders, size, bloch_vec, f, medium)[source]#
- Get the normalized “u” reciprocal coords for a vector of orders, size, and bloch vec. 
 - static compute_angles(reciprocal_vectors)[source]#
- Compute the polar and azimuth angles associated with the given reciprocal vectors. 
 - property coords_spherical#
- Coordinates grid for the fields in the spherical system. 
 - property orders_x#
- Allowed orders along x. 
 - property orders_y#
- Allowed orders along y. 
 - property reciprocal_vectors#
- Get the normalized “ux” and “uy” reciprocal vectors. 
 - property ux#
- Normalized wave vector along x relative to - local_originand oriented with respect to- monitor.normal_dir, normalized by the wave number in the projection medium.
 - property uy#
- Normalized wave vector along y relative to - local_originand oriented with respect to- monitor.normal_dir, normalized by the wave number in the projection medium.
 - property angles#
- The (theta, phi) angles corresponding to each allowed pair of diffraction orders storeds as data arrays. Disallowed angles are set to - np.nan.
 - property amps#
- Complex power amplitude in each order for ‘s’ and ‘p’ polarizations, normalized so that the power carried by the wave of that order and polarization equals - abs(amps)^2.
 - property power#
- Total power in each order, summed over both polarizations. 
 - property fields_spherical#
- Get all field components in spherical coordinates relative to the monitor’s local origin for all allowed diffraction orders and frequencies specified in the - DiffractionMonitor.- Returns:
- xarray dataset containing ( - Er,- Etheta,- Ephi,- Hr,- Htheta,- Hphi) in spherical coordinates.
- Return type:
- xarray.Dataset
 
 - property fields_cartesian#
- Get all field components in Cartesian coordinates relative to the monitor’s local origin for all allowed diffraction orders and frequencies specified in the - DiffractionMonitor.- Returns:
- xarray dataset containing ( - Ex,- Ey,- Ez,- Hx,- Hy,- Hz) in Cartesian coordinates.
- Return type:
- xarray.Dataset
 
 - __hash__()#
- Hash method.