Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Single polarization calculation #30

Open
GoogleCodeExporter opened this issue Aug 12, 2015 · 9 comments
Open

Single polarization calculation #30

GoogleCodeExporter opened this issue Aug 12, 2015 · 9 comments
Labels
comp-Logic Related to internal code logic feature Allows new functionality pri-Low Kept mostly for reference usability Makes using code more convenient

Comments

@GoogleCodeExporter
Copy link

Implement simulation for single given incident polarization (complex
amplitude). It will cut down simulation time twice for certain applications.

Original issue reported on code.google.com by yurkin on 24 Dec 2008 at 6:55

@GoogleCodeExporter
Copy link
Author

Currently, there is a workaround for simulating only "Y" incident polarization 
by adding "-sym enf" in the command line. See section 6.7 (Particle symmetries) 
of the manual for details about this option. 

The idea is that ADDA will assume the symmetry and get the results that require 
two incident polarizations (like Mueller of amplitude matrices) from one 
incident polarization and two scattering planes. If the particle is 
non-symmetric, these scattering quantities will be wrong. However, other ones 
that are produced for each incident polarization independently (they usually 
have Y in the filename) should be correct.

Moreover, any linear polarization can be transformed into Y polarization by a 
proper rotation of particle (using "-orient ..." command line option).

Original comment by yurkin on 9 Feb 2011 at 6:06

@GoogleCodeExporter
Copy link
Author

Addition to the previous comment:
To remove angle-resolved quantities completely, use "-scat_matr none". One may 
also compute only the amplitude matrix in the yz-plane: "-scat_matr ampl". 
Elements S2 and S4 of this matrix (corresponding to columns 4,5 and 8,9) of the 
file 'ampl' in the obtained file would be correct, since they are computed from 
Y-polarization of the incident field alone.

Original comment by yurkin on 8 Nov 2011 at 6:24

  • Added labels: Milestone-1.2

@GoogleCodeExporter GoogleCodeExporter added OpSys-All usability Makes using code more convenient comp-Logic Related to internal code logic pri-Medium Worth assigning to a milestone labels Aug 12, 2015
@GoogleCodeExporter
Copy link
Author

Original comment by yurkin on 28 Mar 2013 at 2:41

  • Removed labels: Milestone-1.2

@GoogleCodeExporter
Copy link
Author

The one important implication of this issue is that circular incident 
polarization is not fully supported. Scattered fields (far from particle) can 
be obtained (for any incident polarization) from the computed amplitude and 
Mueller matrices. Other linear (in incident field) scattering properties (like 
dipole polarization, internal field) can be obtained by linear combination of 
the results for two default linear incident polarizations.

However, there is problem with other quantities, like absorption and extinction 
cross-sections or radiation forces, although (at least) some of them can be 
computed from the far-fields. The possible workaround for this limitation is to 
implement a small hack in the code, which will replace "Y" polarization by a 
circular one (see AddingBeam). But then some changes will be required in other 
places in the code that use incPolY variable.

Original comment by yurkin on 10 Nov 2013 at 1:12

@GoogleCodeExporter
Copy link
Author

Concerning the circular (or arbitrary complex) incident polarization - there 
actually exist a workaround for that. One can use '-beam read ...' to insert 
the correct incident beam from file. The latter can be either generated 
independently (really easy for the plane wave) or as a linear combination of 
two linear polarizations, saved by command line option '-store_beam' from a 
preliminary run for the same geometry (one can additionally add '-eps 0.01' to 
this run to save computational time).

Original comment by yurkin on 23 Nov 2013 at 5:29

@GoogleCodeExporter
Copy link
Author

Actually, Cext for circular incident polarization (of plane wave) can be 
obtained from amplitude matrix at forward direction through extinction matrix - 
see issue 192.

Original comment by yurkin on 11 Mar 2014 at 2:15

@myurkin myurkin added feature Allows new functionality and removed Type-Enhancement labels Aug 13, 2015
This was referenced Aug 14, 2015
@myurkin myurkin self-assigned this Nov 12, 2015
@myurkin myurkin added pri-Low Kept mostly for reference and removed pri-Medium Worth assigning to a milestone labels Jul 10, 2018
@myurkin myurkin removed their assignment Apr 24, 2021
@myurkin
Copy link
Member

myurkin commented Jan 26, 2022

When implementing single-polarization calculation, quadratic quantities can also be calculated (4 quantities, similar to the Mueller matrix - see how it is done in DDSCAT - Section 26.6 of manual v.7.3.3). But the names of the output files should probably be changed from mueller and ampl to avoid confusion during post-processing.

@myurkin
Copy link
Member

myurkin commented Oct 29, 2022

Recently, we stumbled upon an issue for certain Bessel beams with very small half-cone angles (e.g., CS', TEL, and TML beams of order 2), which are almost proportional to circularly-polarized plane waves. They cause the failure of the QMR_CS iterative solver, since the pseudo-product of incident beam by itself is almost zero. The same problem is expected for circular plane waves, if generated directly.

The current workaround is to use a different iterative solver (like BiCGStab or CSYM), but we may think of some automatic processing (switch of the iterative solver or of the initial vector) in the future.

@myurkin
Copy link
Member

myurkin commented May 1, 2024

Many workarounds for simulating circular polarization (including computing circular dichroism) are discussed at https://groups.google.com/g/adda-discuss/c/k-ClVwvwQQk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comp-Logic Related to internal code logic feature Allows new functionality pri-Low Kept mostly for reference usability Makes using code more convenient
Projects
None yet
Development

No branches or pull requests

2 participants