smrt.interface package
Contains different types of boundary conditions between the layers.
For developers
All the different types of interface must define the methods: - ‘specular_reflection_matrix’ - ‘coherent_transmission_matrix’
smrt.interface.flat module
Provide the flat interface boundary condition between layers characterized by their effective permittivities.
The reflection and transmission are computed using the Fresnel coefficient from smrt.core.fresnel.
- class Flat(**kwargs)
Bases:
InterfaceImplement 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)
Compute the reflection coefficients.
Coefficients are calculated 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)
Compute the transmission coefficients.
Coefficients are calculated 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
Implement 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 set 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 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:
InterfaceImplement a very rough surface.
- Parameters:
mean_square_slope – Roughness parameter of a gaussian surface,
mean_square_slope = 2*roughness_rms**2/corr_length**2.roughness_rms – [Optional] Root-Mean-Squared surface roughness.
corr_length – [Optional] Correlation length of the surface.
shadow_correction – [Optional] Use a shadow correction of the rough surface when dealing with significant surface roughness or large scattering angles. Default is
True.autocorrelation_function – [Optional] Type of autocorrelation function to use. Default is “gaussian”.
- specular_reflection_matrix(frequency, eps_1, eps_2, mu1, npol)
Compute the specular reflection coefficients.
Coefficients are calculated 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)
Compute the diffuse reflection coefficients.
Coefficients are calculated 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.
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)
Compute the coherent transmission coefficients.
Coefficients are calculated 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)
Compute the diffuse transmission coefficients.
Coefficient are calculated 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.
smrt.interface.geometrical_optics_backscatter module
Provide 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.
Note
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:
GeometricalOpticsImplement a very rough surface for backscatter.
- specular_reflection_matrix(frequency, eps_1, eps_2, mu1, npol)
Compute the specular reflection coefficients.
Coefficients are calculated 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)
Compute the diffuse reflection coefficients.
Coefficients are calculated 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.
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)
Compute the coherent transmission coefficients.
Coefficients are calculated 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
Provide the interface boundary condition under IEM formulation provided by Fung et al. 1992.
Notes
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.
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.
Usage:
# 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)
References
Fung, A.K, Zongqian, L., and Chen, K.S. (1992). Backscattering from a randomly rough dielectric surface. IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING, 30-2. https://doi.org/10.1109/36.134085
- class IEM_Fung92(**kwargs)
Bases:
KirchoffApproximationCoherentInterfaceMixin,InterfaceImplement a moderate rough surface model with backscatter, specular reflection and transmission only.
It is not suitable for emissivity calculations. Use with care!
- Parameters:
roughness_rms – Root-Mean-Squared surface roughness.
corr_length – Correlation length of the surface.
autocorrelation_function – [Optional] Type of autocorrelation function to use. Default is “exponential”.
warning_handling – [Optional] Parameter that dictates how to handle wanring. Default is “print”.
series_truncation – [Optional] Number of iterations to use in the summation of roughness spectra.
- 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)
Compute the diffuse reflection coefficients.
Coefficients are calculated 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.
smrt.interface.iem_fung92_brogioni10 module
Provide interface boundary condition under IEM formulation with an extended domain.
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. A better but more complex approach is given by Wu et al. 2004 (to be implemented).
Note
Reflection and transmission matrix are the same as py. Only change are the fresnel coefficients.
References
Brogioni, M., Pettinato, S., Macelloni, G., Paloscia, S., Pampaloni, P., Pierdicca, N., & Ticconi, F. (2010). Sensitivity of bistatic scattering to soil moisture and surface roughness of bare soils. International Journal of Remote Sensing, 31(15), 4227–4255. https://doi.org/10.1080/01431160903232808
Fung, A.K, Zongqian, L., and Chen, K.S. (1992). Backscattering from a randomly rough dielectric surface. IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING, 30-2. https://doi.org/10.1109/36.134085
Wu, T-D. and Chen, K-S. (2004). A reappraisal of the validity of the IEM model for backscattering from rough surfaces. IEEE Transactions on Geoscience and Remote Sensing, 42-4. https://doi.org/10.1109/TGRS.2003.815405
- class IEM_Fung92_Briogoni10(**kwargs)
Bases:
IEM_Fung92Implement a moderate rough surface model with backscatter, specular reflection and transmission only. Use with care!
Calculate the fresnel coefficients at the angle mu_i or 0° depending on ks*kl. The transition is abrupt. The fresnel coefficients are computed with mu = 1 for ks * kl > np.sqrt(eps_2 / eps_1).
- 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
smrt.interface.radar_calibration_sphere module
Implement a surface with a backscatter of 4pi.
smrt.interface.transparent module
Implement a transparent interface (no reflection). Useful mainly for unit tests.