smrt.interface package
Contains different types of boundary conditions between the layers.
- ..admonition:: For developers
All the different types of interface must define the methods: - ‘specular_reflection_matrix’ - ‘coherent_transmission_matrix’
smrt.interface.flat module
Implements the flat interface boundary condition between layers characterized by their effective permittivities. The reflection and transmission are computed using the Fresnel coefficient.
- class Flat(**kwargs)
Bases:
InterfaceRepresents a flat surface. The reflection is in the specular direction and the coefficient is calculated with the Fresnel coefficients.
- specular_reflection_matrix(frequency, eps_1, eps_2, mu1, npol)
Computes the reflection coefficients for an array of incidence angles (given by their cosine) in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu1 – Array of cosine of incident angles.
npol – Number of polarization.
- Returns:
The reflection matrix.
- coherent_transmission_matrix(frequency, eps_1, eps_2, mu1, npol)
Computes the transmission coefficients for an array of incidence angles (given by their cosine) in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu1 – Array of cosine of incident angles.
npol – Number of polarization.
- Returns:
The transmission matrix.
smrt.interface.geometrical_optics module
Implements the interface boundary condition under the Geometrical Approximation between layers characterized by their effective permittivities. This approximation is suitable for surfaces with roughness much larger than the roughness scales, typically k*s >> 1 and k*l >> 1, where s is the rms height and l is the correlation length. The precise validity range must be investigated by the user, this code does not raise any warning. An important characteristic of this approximation is that the scattering does not directly depend on frequency, the only (probably weak) dependence is through the permittivities of the media.
The model is parameterized by the mean_square_slope which can be calculated as mean_square_slope = 2*s**2/l**2 for surface with a Gaussian autocorrelation function. Other equations may exist for other autocorrelation function.
This implementation is largely based on Tsang and Kong, Scattering of Electromagnetic Waves: Advanced Topics, 2001 (Tsang_tomeIII in the following).
Note
This implementation sets coherent reflection and transmission to zero, which is expected theoretically for a very rough surface. However, first order radiative transfer solvers (such as nadir_lrm_altimetry) do not work well in this case because the transmission through the layers is neglected. In such case, it is recommended to use smrt.interface.geometrical_optics_backscatter which provides an approximation that sets the coherent transmission based on energy conservation assuming all the transmitted energy is in the refracted direction.
- class GeometricalOptics(**kwargs)
Bases:
InterfaceRepresents a very rough surface.
- specular_reflection_matrix(frequency, eps_1, eps_2, mu1, npol)
Computes the reflection coefficients for an array of incidence angles (given by their cosine) in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu1 – Array of cosine of incident angles.
npol – Number of polarization.
- Returns:
The reflection matrix.
- diffuse_reflection_matrix(frequency, eps_1, eps_2, mu_s, mu_i, dphi, npol)
Computes the reflection coefficients for an array of incident, scattered and azimuth angles in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu_s – Array of cosine of scattered angles.
mu_i – Array of cosine of incident angles.
dphi – Azimuth angles.
npol – Number of polarization.
- Returns:
The reflection matrix.
- coherent_transmission_matrix(frequency, eps_1, eps_2, mu1, npol)
Computes the transmission coefficients for the azimuthal mode m and for an array of incidence angles (given by their cosine) in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu1 – Array of cosine of incident angles.
npol – Number of polarization.
- Returns:
The transmission matrix.
- diffuse_transmission_matrix(frequency, eps_1, eps_2, mu_t, mu_i, dphi, npol)
Computes the transmission coefficients for an array of incident, scattered and azimuth angles in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu_t – Array of cosine of transmitted wave angles.
mu_i – Array of cosine of incident angles.
dphi – Azimuth angles.
npol – Number of polarization.
- Returns:
The transmission matrix.
- reflection_integrand_for_energy_conservation_test(frequency, eps_1, eps_2, mu_s, mu_i, dphi)
Computes the function relevant to compute energy conservation. See p87 in Tsang_tomeIII.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu_s – Array of cosine of scattered angles.
mu_i – Array of cosine of incident angles.
dphi – Azimuth angles.
- Returns:
Tuple of coefficients for energy conservation.
- transmission_integrand_for_energy_conservation_test(frequency, eps_1, eps_2, mu_t, mu_i, dphi)
Computes an integrand relevant to compute energy conservation. See p87 in Tsang_tomeIII.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu_t – Array of cosine of transmitted wave angles.
mu_i – Array of cosine of incident angles.
dphi – Azimuth angles.
- Returns:
Tuple of coefficients for energy conservation.
- shadow_function(mean_square_slope, cotan)
Return the shadow function
smrt.interface.geometrical_optics_backscatter module
Implement the interface boundary condition under the Geometrical Approximation between layers characterized by their
effective permittivities. This code is for backscatter only, that is, to use as a substrate and at low frequency when
the backscatter is the main mecahnism, and conversely when mulitple scattering and double bounce between snow and
substrate are negligible. In other case, it is recommended to use
geometrical_optics.
The transmitted energy is also computed in an approximate way suitable for first order scattering such as smrt.rtsolver.nadir_lrm_altimetry. It uses energy conservation to compute the total transmitted energy and considers that all this energy is transmitted in the refracted direction. This approach compensates for the deficiencies of first order scattering RT solvers.
- class GeometricalOpticsBackscatter(**kwargs)
Bases:
GeometricalOpticsRepresents a very rough surface.
- specular_reflection_matrix(frequency, eps_1, eps_2, mu1, npol)
Computes the reflection coefficients for an array of incidence angles (given by their cosine) in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu1 – Array of cosine of incident angles.
npol – Number of polarization.
- Returns:
The reflection matrix.
- diffuse_reflection_matrix(frequency, eps_1, eps_2, mu_s, mu_i, dphi, npol)
Computes the reflection coefficients for an array of incident, scattered and azimuth angles in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu_s – Array of cosine of scattered angles.
mu_i – Array of cosine of incident angles.
dphi – Azimuth angles.
npol – Number of polarization.
- Returns:
The reflection matrix.
- coherent_transmission_matrix(frequency, eps_1, eps_2, mu1, npol)
Computes the transmission coefficients for an array of incidence angles (given by their cosine) in medium 1. Medium 2 is where the beam is transmitted. While Geometrical Optics, it here considers that power not reflected is scattered in the specular transmitted direction. This is an approximation which is reasonable in the context of a “1st order” geometrical optics.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu1 – Array of cosine of incident angles.
npol – Number of polarization.
- Returns:
The transmission matrix.
smrt.interface.iem_fung92 module
Implement the interface boundary condition under IEM formulation provided by Fung et al. 1992. in IEEE TGRS. Use of this code requires special attention because of two issues:
1) it only computes the backscatter diffuse reflection as described in Fung et al. 1992, the specular reflection and the coherent transmission. It does not compute the full bi-static diffuse reflection and transmission. As a consequence it is only suitable for emissivity calculation and when single scattering is dominant, usually at low frequency when the medium is weakly scattering. This happends when the main mechanism is the backscatter from the interface attenuated by the medium. Another case is when the rough surface is relatively smooth, the specular reflection is relatively strong and the energy can be scattered back by the medium (double bounce). For other situations, this code is not recommended.
2) Additionaly, IEM is known to work for a limited range of roughness. Usually it is considered valid for ks < 3 and ks*kl < sqrt(eps) where k is the wavenumber, s the rms height and l the correlation length. The code print a warning when out of this range. There is also limitation for smooth surfaces but no warning is printed.
Example:
# rms height and corr_length values work at 10 GHz
substrate = make_soil("iem_fung92", "dobson85", temperature=260,
roughness_rms=1e-3,
corr_length=5e-2,
autocorrelation_function="exponential",
moisture=moisture,
clay=clay, sand=sand, drymatter=drymatter)
- class IEM_Fung92(**kwargs)
Bases:
InterfaceRepresents a moderate rough surface model with backscatter, specular reflection and transmission only. It is not suitable for emissivity calculations. Use with care!
- specular_reflection_matrix(frequency, eps_1, eps_2, mu1, npol)
Computes the reflection coefficients for an array of incidence angles (given by their cosine) in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu1 – Array of cosine of incident angles.
npol – Number of polarization.
- Returns:
The reflection matrix.
- fresnel_coefficients(eps_1, eps_2, mu_i, ks, kl)
calculate the fresnel coefficients at the angle mu_i whatever is ks and kl according to the original formulation of Fung 1992
- diffuse_reflection_matrix(frequency, eps_1, eps_2, mu_s, mu_i, dphi, npol, debug=False)
Computes the reflection coefficients for an array of incident, scattered and azimuth angles in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu_s – Array of cosine of scattered angles.
mu_i – Array of cosine of incident angles.
dphi – Azimuth angles.
npol – Number of polarization.
- Returns:
The reflection matrix.
- coherent_transmission_matrix(frequency, eps_1, eps_2, mu1, npol)
Computes the transmission coefficients for the azimuthal mode m and for an array of incidence angles (given by their cosine) in medium 1. Medium 2 is where the beam is transmitted.
- Parameters:
frequency – Frequency of the incident wave.
eps_1 – Permittivity of the medium where the incident beam is propagating.
eps_2 – Permittivity of the other medium.
mu1 – Array of cosine of incident angles.
npol – Number of polarization.
- Returns:
The transmission matrix.
smrt.interface.iem_fung92_brogioni10 module
Implements the interface boundary condition under IEM formulation provided by Fung et al. 1992 in IEEE TGRS with an extended domain of validity (for large roughness or correlation length) by switching the Fresnel coefficients according to Brogioni et al. 2010, IJRS (doi: 10.1080/01431160903232808). A better but more complex approach is given by Wu et al. 2003 (to be implemented).
Use of this code requires special attention.
- class IEM_Fung92_Briogoni10(**kwargs)
Bases:
IEM_Fung92Represents a moderate rough surface model with backscatter, specular reflection and transmission only. Use with care!
- fresnel_coefficients(eps_1, eps_2, mu_i, ks, kl)
calculate the fresnel coefficients at the angle mu_i or 0° depending on ks*kl. The transition is abrupt.
smrt.interface.radar_calibration_sphere module
Implements a surface with a backscatter of 4pi.
smrt.interface.transparent module
Implements a transparent interface (no reflection). Useful mainly for unit tests.