psf_generator.propagators.vectorial_cartesian_propagator#
The propagator for the vectorial field in the Cartesian coordinates.
Classes#
Propagator for the vectorial case of the Richard's-Wolf integral in Cartesian parameterization. |
Module Contents#
- class psf_generator.propagators.vectorial_cartesian_propagator.VectorialCartesianPropagator(n_pix_pupil=128, n_pix_psf=128, device='cpu', zernike_coefficients=None, special_phase_mask=None, e0x=1.0, e0y=0.0, wavelength=632, na=1.3, pix_size=10, defocus_step=0, n_defocus=1, apod_factor=False, envelope=None, gibson_lanni=False, z_p=1000.0, n_s=1.3, n_g=1.5, n_g0=1.5, t_g=170000.0, t_g0=170000.0, n_i=1.5, n_i0=1.5, t_i0=100000.0)[source]#
Bases:
psf_generator.propagators.cartesian_propagator.CartesianPropagatorPropagator for the vectorial case of the Richard’s-Wolf integral in Cartesian parameterization.
In the vectorial model, the far field \(\boldsymbol{e}_{\infty}\) depends on the vectorial incident field \(\boldsymbol{e}_{\textrm{inc}} = [\boldsymbol{e}_{\textrm{inc}}^x, \boldsymbol{e}_{\textrm{inc}}^y, 0]\) as follows:
\[\begin{split}\boldsymbol{e}_{\infty}(\theta,\phi) = \begin{bmatrix} (\cos\theta+1)+(\cos\theta-1)\cos2\phi \\ (\cos\theta-1)\sin2\phi \\ -2 \cos\phi \sin\theta \end{bmatrix} \frac{\boldsymbol{e}_{\textrm{inc}}^x}{2} + \begin{bmatrix} (\cos\theta-1)\sin2\phi \\ (\cos\theta+1)-(\cos\theta-1)\cos2\phi \\ - 2 \sin\phi \sin\theta \end{bmatrix} \frac{\boldsymbol{e}_{\textrm{inc}}^y}{2}.\end{split}\]The equation to compute the electric field is
\[\mathbf{E}(\boldsymbol{\rho}) = -\frac{\mathrm{i} fk}{2\pi}\iint\limits_{s_x^2+s_y^2 \leq s_{M}^2} \frac{\boldsymbol{e}_{\infty}(s_x, s_y) \mathrm{e}^{\mathrm{i} kz}}{s_z} \mathrm{e}^{\mathrm{i} k(s_x x + s_y y)} ds_x ds_y.\]Parameters#
- self.e0xfloat, optional
Initial electric field component \(\mathbf{e}_0^x\). Default value is 1.0.
- self.e0yfloat, optional
Initial electric field component \(\mathbf{e}_0^y\). Default value is 0.0.
Notes#
The vectorial propagators have two additional arguments apart from those inherited form the base propagator to account for polarization.
- initialize_input_field() torch.Tensor[source]#
Compute the corresponding input field.