4.12.1.5. singleScattering.scattering_utilities

singleScattering.scattering_utilities.py

Copyright (C) 2017 - 2018 Davide Ori dori@uni-koeln.de Institute for Geophysics and Meteorology - University of Cologne

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This submodule implements useful functions that helps in the definition of the scatterer geometry and the conversion among diverse scattering frameworks

4.12.1.5.1. Module Contents

4.12.1.5.1.1. Classes

amplitude_matrix

Complex 2x2 amplitude matrix as defined in Bohren and Huffman

scattering_matrix

Real 4x4 scattering matrix as defined in Bohren and Huffman

spheroid

4.12.1.5.1.2. Functions

amplitude2mueller(ampl)

This function implement the conversion between complex 2x2 amplitude matrix

size_parameter(radius, wavelength)

Computes the classic size parameter of the scatterer

scattering_angle(theta_inc, theta_sca, phi_inc, phi_sca)

Calculates the scattering angle in radians given the full set of four

module_angle(angle)

This function takes any angle (even negative) and unfolds it returning the

polar2cartesian(r=1.0, t=0.0, p=0.0)

Takes the three polar coordinates radius, theta(zenith), phi(azimuth) and

cartesian2polar(x, y, z)

Takes the tern of cartesian coordinates x, y, z and returns the three

rotation2(ang)

Returns the classic 2x2 counterclockwise rotation matrix

transformation_matrices(alpha, beta, phi_inc, phi_sca)

This function returns two 2x2 rotation matrix specified by the

class amplitude_matrix(S)[source]

Bases: object

Complex 2x2 amplitude matrix as defined in Bohren and Huffman | S2 S3 | | | | S4 S1 |

property S1(self)[source]
property S2(self)[source]
property S3(self)[source]
property S4(self)[source]
to_mueller(self)[source]
class scattering_matrix(Z)[source]

Bases: object

Real 4x4 scattering matrix as defined in Bohren and Huffman

amplitude2mueller(ampl)[source]

This function implement the conversion between complex 2x2 amplitude matrix to the real 4x4 scattering Mueller matrix according to Bohren Huffman pp 65 actually according to Mishchenko (2000) pp 51-52 It should not be dependent on the reference fo S, so it is invariant by rotations around the propagation vector However, better to check, I see a sign problem in Z13 and Z14, also Z23 and Z24 and probably more …

size_parameter(radius, wavelength)[source]

Computes the classic size parameter of the scatterer given the radius and the wavelength For nonspherical targets the radius equals size/2

class spheroid[source]

Bases: object

abstract mass(self)[source]
abstract volume(self)[source]
abstract density(self)[source]
abstract effective_volume_diameter(self)[source]
scattering_angle(theta_inc, theta_sca, phi_inc, phi_sca)[source]

Calculates the scattering angle in radians given the full set of four angles that defines the scattering geometry from the incident and the scattered wave directions

The reference frame is assumed to be set with the polar angle theta measured from the vertical axis z, and the azimuth angle phi measured from the axis x???

It also returns the rotation angle alpha which is the angle between the scattering plane and the plane defined by the scattering direction and z. This angle is needed to transform S matrix components from the Bohren and Huffman convention (parallel and perpendicular) to the Mishchenko convention (theta and phi) and viceversa

module_angle(angle)[source]

This function takes any angle (even negative) and unfolds it returning the corresponding angle within [0, 2pi]

polar2cartesian(r=1.0, t=0.0, p=0.0)[source]

Takes the three polar coordinates radius, theta(zenith), phi(azimuth) and returns the tern of cartesian coordinates x, y, z

cartesian2polar(x, y, z)[source]

Takes the tern of cartesian coordinates x, y, z and returns the three polar coordinates radius, theta(zenith), phi(azimuth)

rotation2(ang)[source]

Returns the classic 2x2 counterclockwise rotation matrix

transformation_matrices(alpha, beta, phi_inc, phi_sca)[source]

This function returns two 2x2 rotation matrix specified by the arguments alpha and beta, it should comes handy when you have to transform amplitude matrices from the Bohren and Huffman (parallel, perpendicular) basis to the Mishchenko (theta, phi) convention Ra Rb are actually improper rotations (rotoreflection)