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_e
— Functionforce_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.
Main.CoupledElectricMagneticDipoles.Forces.force_e_m
— Methodforce_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.
Main.CoupledElectricMagneticDipoles.Forces.force_e_m
— Methodforce_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.
Main.CoupledElectricMagneticDipoles.Forces.force_factor_gaussianbeams
— Functionforce_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 bekmax < 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 ofkbw0
. For high-order beams this parameter should be adjusted.
Outputs
force_factor
: proportionality factor to get the forces in units of Newtons.