Implement a calc_cross_sections method in instances of scatterpy.Theory
Scattering cross sections (or efficiencies) are often useful in a variety of contexts. First, they allow for the sanity-checking of scattering codes both inherently and by comparison with published literature. Second, certain experimental measurements (such as transmittance) really do measure, directly or indirectly, these integrated scattering quantities. Currently scatterpy does not calculate scattering cross sections. Adding a calc_cross_sections method to be implemented by each instance of Theory seems like the most straightforward way to do this.
Blueprint information
- Status:
- Started
- Approver:
- None
- Priority:
- Medium
- Drafter:
- None
- Direction:
- Needs approval
- Assignee:
- Jerome Fung
- Definition:
- New
- Series goal:
- None
- Implementation:
- Good progress
- Milestone target:
- 3.0
- Started by
- Jerome Fung
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
Report dimensional cross sections.
For multisphere code, analytical calculation of asymmetry parameter is only tractable due to VSH identities for unpolarized illumination (see SCMSFO.ps and subroutine scatexp in scsmfo_min.for). For polarized illumination numerical quadrature would be necessary.
In particular: scipy.integrate
dblquad(f, 0, 2*pi, lambda theta:0., lambda theta:pi)
Two possibilities for Multisphere: use partial field expansion about each sphere, or use cluster-centered field expansion. Former approach may be more precise, and getting out the partial field coefficients for each sphere would also be useful for calculating holograms of spheres that are very far apart.
Implement idea from Vinny: use optical thm to get C_ext for fixed polarization.
Currently: have C_scat for arbitrary polarization from summation of cluster-centered VSH coefficients for Multisphere.
Work Items
Work items:
mie: DONE
multisphere: DONE
DDA: TODO