Optical Forces

The Forces module allows to compute optical forces on electric and magnetic point dipoles with deterministic input fields. The list of functions is given below. Note that N is the number of dipoles in the system.

Functions Documentation

Main.CoupledElectricMagneticDipoles.Forces.force_eFunction
force_e(kr,alpha_e_dl, Ainv, e_0, dxe_0, dye_0, dze_0)

Computes the optical forces on a system made out of electric dipoles for deterministic input fields. The output force has units of the input electric field squared. To get unit of forces, it is necessary to multiply by a factor $\epsilon_0\epsilon_h 4\pi/k^2$, taking care that the units of the field, the vacuum permittivity and the wavevector are in accordance.

Arguments

  • kr: 2D float array of size $N\times 3$ containing the dimensionless position $k\mathbf{r}$ of each dipole.
  • alpha_e_dl: complex dimensionless electric polarizability of each dipole. See the Alphas module documentation for accepted formats.
  • Ainv: (inverse) DDA matrix.
  • e_0: 2D complex array of size $N\times 3$ containing the external input field.
  • dxe_0: 2D complex array of size $N\times 3$ containing the derivative with regard to the $k*x$ argument of the external input field.
  • dye_0: 2D complex array of size $N\times 3$ containing the derivative with regard to the $k*y$ argument of the external input field.
  • dze_0: 2D complex array of size $N\times 3$ containing the derivative with regard to the $k*z$ argument of the external input field.

Outputs

  • fx: float array of Size $N$ with the value of the force along the $x$-axis at each dipole.
  • fy: float array of Size $N$ with the value of the force along the $y$-axis at each dipole.
  • fz: float array of Size $N$ with the value of the force along the $z$-axis at each dipole.
source
Main.CoupledElectricMagneticDipoles.Forces.force_e_mMethod
force_e_m(kr,alpha_e_dl, alpha_m_dl, Ainv, e_0, dxe_0, dye_0, dze_0)

Computes the optical forces on a system made out of electric and magnetic dipoles for deterministic input fields. The output force has units of the input electric field squared. To get unit of forces, it is necessary to multiply by a factor $\epsilon_0\epsilon_h 4\pi/k^2$, taking care that the units of the field, the vacuum permittivity and the wavevector are in accordance.

Arguments

  • kr: 2D float array of size $N\times 3$ containing the dimensionless position $k\mathbf{r}$ of each dipole.
  • alpha_e_dl: complex dimensionless electric polarizability of each dipole. See the Alphas module documentation for accepted formats.
  • alpha_m_dl: complex dimensionless magnetic polarizability of each dipole. See the Alphas module documentation for accepted formats.
  • Ainv: (inverse) DDA matrix.
  • e_0: 2D complex array of size $N\times 6$ containing the external input field.
  • dxe_0: 2D complex array of size $N\times 6$ containing the derivative with regard to the $k*x$ argument of the external input field.
  • dye_0: 2D complex array of size $N\times 6$ containing the derivative with regard to the $k*y$ argument of the external input field.
  • dze_0: 2D complex array of size $N\times 6$ containing the derivative with regard to the $k*z$ argument of the external input field.

Outputs

  • fx: float array of Size $N$ with the value of the force along the $x$-axis at each dipole.
  • fy: float array of Size $N$ with the value of the force along the $y$-axis at each dipole.
  • fz: float array of Size $N$ with the value of the force along the $z$-axis at each dipole.
source
Main.CoupledElectricMagneticDipoles.Forces.force_e_mMethod
force_e_m(kr,alpha_dl, Ainv, e_0, dxe_0, dye_0, dze_0)

Same as force_e_m(knorm,kr,alpha_e_dl, alpha_m_dl, Ainv, e_0, dxe_0, dye_0, dze_0), but the electric and magnetic polarizabilities of each dipole are given by a single 6x6 complex matrix. See the Alphas module documentation for accepted formats. The output force has units of the input electric field squared. To get unit of forces, it is necessary to multiply by a factor $\epsilon_0\epsilon_h 4\pi/k^2$, taking care that the units of the field, the vacuum permittivity and the wavevector are in accordance.

source
Main.CoupledElectricMagneticDipoles.Forces.force_factor_gaussianbeamsFunction
force_factor_gaussianbeams(kbw0,power,eps_h;n=0,m=0,,kind="hermite", e0 = 1, paraxial=true, kmax = nothing, maxe=Int(1e4), int_size = 5)

Computes the proportionality factor to get the forces in units of Newtons when the forces are calculated using the Gaussian beams (Hermite and Laguerre) implemented in the library. By default, the factor is calculated for a Gaussian Beam in the paraxial approximation.

Arguments

  • kbw0: float with the dimensionless beam waist radius ($kw_0$, where $w_0$ is the beam waist radius).
  • power: float with the power of the beam.
  • eps_h: float with the relative permittivity of the host medium.
  • n: non-negative integer with the radial order of the beam.
  • m: integer with the azimuthal order of the beam.
  • e0: float with the modulus of the electric field used in the calculation of the beam profile.
  • kind: string with the kind of beam ("hermite" or "laguerre"). By default set to "hermite".
  • paraxial: boolean setting if the calculation is done in the paraxial approximation.
  • kmax: float setting the limit of the radial integration (it should be kmax < 1).
  • maxe: maximum number of evaluations in the adaptative integral (see Cubature.jl for more details).
  • int_size: size of the integration area in units of kbw0. For high-order beams this parameter should be adjusted.

Outputs

  • force_factor: proportionality factor to get the forces in units of Newtons.
source