HomerReid / scuff-em

A comprehensive and full-featured computational physics suite for boundary-element analysis of electromagnetic scattering, fluctuation-induced phenomena (Casimir forces and radiative heat transfer), nanophotonics, RF device engineering, electrostatics, and more. Includes a core library with C++ and python APIs as well as many command-line applications.
http://www.homerreid.com/scuff-em
GNU General Public License v2.0
125 stars 50 forks source link

From T-matrix to Mueller matrix #162

Open fnencio opened 6 years ago

fnencio commented 6 years ago

Hi,

I am interested in modelling optical scattering from phytoplankton cells. For my particular application I need to reconstruct the volume scattering function (scattering intensity as a function of scattering angle).

My question is: is it possible to reconstruct the elements of the amplitude matrix (Equation (4), chapter 1 in Mishchenko "Light scattering by non-spherical particles") and thus the Mueller matrix (phase matrix in the same book, equation (13), Chapter 1) from the elements of the T-matrix obtained from your code?

If so, is this functionality already available in scuff-em? Otherwise, any advice on possible alternative resources we could use?

Thanks a lot in advance for your help, francesco

HomerReid commented 6 years ago

One thing you could do right now is to run calculations in SCUFF-SCATTER with plane-wave incident fields and extract the scattering coefficients from the scattered fields---for example, you could use an --EPFile to specify a set of evaluation points lying on a large bounding sphere, in which case SCUFF-SCATTER will report values of scattered fields at each evaluation point, and you could post-process that data to evaluate a projection integral (the overlap of the scattered fields with a k-directed p-polarized plane wave will give you the scattering coefficient for the p-polarization in the k-direction).

Alternatively, there is a more direct way to compute scattering coefficients directly from surface currents, bypassing the calculation of scattered fields---see e.g. equation (18) in this paper. This isn't exposed in any of the command-line codes, but it would be easy to write a python or C++ API code to do it, or the functionality could be added to one of the existing application codes, probably SCUFF-TRANSMISSION.