One more update about circular
polarizations. They can be directly obtained from current version
of ADDA (in the master branch) using the built-in Bessel beams.
Most straightforward is to add the following to the command line:
-scat_matr none -sym enf -iter bicgstab
-beam besselM 0 0 0 0 0 0.7071067812 0 0 7071067812 0
-scat_matr none -sym enf -iter
bicgstab -beam besselM 0 0 0 0 0 0.7071067812 0 0 -7071067812 0
```
for right and left circular
polarizations, respectively. The corresponding Cext, etc. can be
found in files CrossSec-Y.
A few comments:
- the numerical values are 1/sqrt(2)
(+ or -)
- I have explained the need for
`-iter bicgstab` previously (we actually noticed such behavior
for Bessel beams long ago, but I have only recently remembered
that)
- `-sym enf` ensures that only one
polarization is computed (for each run), since the other one in
the framework of Bessel beams will be obtained by rotation
(leading to the one proportional to the original one for
circular polarization) and is, thus, redundant.
- ` -scat_matr none` turns off the
calculation of both Mueller and amplitude matrices. On the one
hand, they will be hard to interpret anyway. If one tries to
extend the definition of these matrices to some beams other than
linearly-polarized plane waves, it is natural to require two
incident beams to be related by rotation. However, this makes
little sense for circular polarizations (for which rotation is
equivalent to multiplication by a scalar). This has been
discussed in Section IV.A of
Glukhova
S.A. and Yurkin M.A. Vector Bessel beams: General
classification and scattering
simulations, Phys. Rev.
A 106, 033508 (2022). (
PDF).
On the other hand, if the scattering
matrices are desired, it is best to calculate them for standard
linear polarizations. Then they can be used to compute any
measureable quantities for circular polarizations, as we
discussed previously.
This way to compute CD values has
been implemented in the script `/tests/equiv/ext_CD.py` (I have
just committed a new version), where it is successfully tested
against the previous options. The updated script also tests
several other ways to imitate circular polarization through
Bessel beams (see comments inside). Some of them are
significantly more complicated.
Note also, that you can add
`-store_beam -prognosis` to the above command lines to obtain
incident circular polarizations without any Python
post-processing.
Maxim.