Calculate internal fields inside scatterers

Registered by Jerome Fung

For some applications (topological derivatives, visualizations, pedagogy) it may be useful to calculate the internal field inside a scatterer. Currently, trying to calculate a field inside a scatterer gives something unphysical.

Blueprint information

Status:
Started
Approver:
Tom Dimiduk
Priority:
Low
Drafter:
Jerome Fung
Direction:
Approved
Assignee:
DanHickstein
Definition:
New
Series goal:
None
Implementation:
Good progress
Milestone target:
milestone icon 3.0
Started by
Jerome Fung

Related branches

Sprints

Whiteboard

For Mie, this is relatively easy: get internal coefficients c_l and d_l from known external coefficients a_l and b_l. Internal fields go as vector spherical harmonics with j_l(r) radial dependence.

HoloPy follows the conventions of Bohren and Huffman [1], so this implementation should use the internal field conventions from that source.
[1] http://books.google.com/books/about/Absorption_and_scattering_of_light_by_sm.html?id=S1RCZ8BjgN0C

Note from JF: use logarithmic derivatives and ratios of \psi_l(mx).

Multilayer: slightly harder; field expansion is different in each layer.

Multisphere: hard. Requires some analytical work to calculate explicit forms for internal coefficients in terms of final sphere-centered expansions, plus deep hacking of SCSMFO.

The code for this can go in a (Mie or Multisphere)._set_internal_fields function. See FortranTheory._set_internal_fields for an ideas (though it just sets stuff equal to 0).

A pure python implementation would be fine for now since we can just call it for internal fields which in general there will not be that many of.

Eventually faster implementation will have a fortran mie_internal_fields like mie_f.mieangfuncs.mie_fields, and an efficient way to construct a set of the internal points.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.