smrt.permittivity package
Provides many formulations for the permittivity of various materials (ice, water, etc.) or for mixing
formulae. The former are to be used as input of the functions in smrt.inputs in order
to prescribe the scatterers and background permittivity, while the latter are to be used in smrt.emmodels to
reformulate how the effective permittivity is calculated. This latter usage is very specific and should not concern most
users. See smrt.emmodel.symsce_torquato21.derived_SymSCETK21 and
smrt.emmodel.iba.derived_IBA.
..admonition:: For developers
To add a new permittivity function proceed as follows:
1. To add a new permittivity formulation add a function either in an existing file or in a new file (recommended for testing). E.g. for salty ice permittivity formulations should be in saltyice.py and so on.
2. Any function defining a permittivity model must declare the mapping between the layer properties and the arguments of the function (see ice.py for examples). It means that the arguments of the function must be listed (in order) in the @required_layer_properties decorator. In most cases, the name of the arguments should be the same as a properties, but this is not strictly necessary, only the order matters. For example:
@required_layer_properties("temperature", "salinity") def permittivity_something(frequency, t, s):maps the layer property “temperature” to the argument “t” of the function (and “salinity” to s) However, it is recommended to change t into temperature for sake of clarity.
For curious ones, this declaration is required because the function can be called either with its arguments (normal case) or with only two arguments like this (frequency, layer). In this latter case, the arguments required by the original function are automatically extracted from the layer attributes (=properties) based on the declaration in @required_layer_properties. This complication is necessary because there is no way in Python to inspect the name of the arguments of a function, so the need for explicit declaration.
3. To use the new function, import the module (e.g. from smrt.permittivity.ice import permittivity_something) and pass this function to
smrt.core.snowpack.make_snowpackorsmrt.core.layer:make_snow_layer.
smrt.permittivity.ice module
- ice_permittivity_maetzler06(frequency, temperature)
Calculates the complex ice dielectric constant depending on the frequency and temperature.
Based on Mätzler, C. (2006). Thermal Microwave Radiation: Applications for Remote Sensing p456-461 This is the default model used in smrt.inputs.make_medium.make_snow_layer().
- Parameters:
frequency – frequency in Hz
temperature – temperature in K
- Returns:
complex permittivity of pure ice
Example:
from smrt.permittivity.ice import ice_permittivity_maetzler06 eps_ice = ice_permittivity_maetzler06(frequency=18e9, temperature=270)
Note
Ice permittivity is automatically calculated in smrt.inputs.make_medium.make_snow_layer() and is not set by the electromagnetic model module. An alternative to ice_permittivity_maetzler06 may be specified as an argument to the make_snow_layer function. The usage example is provided for external reference or testing purposes.
- ice_permittivity_maetzler98(frequency, temperature)
Computes permittivity of ice (accounting for ionic impurities in ice?), equations from Hufford (1991) as given in Maetzler (1998): ‘Microwave properties of ice and snow’, in B. Schmitt et al. (eds.): ‘Solar system ices’, p. 241-257, Kluwer.
- Parameters:
temperature – ice temperature in K
frequency – Frequency in Hz
- Returns:
complex permittivity of pure ice
- ice_permittivity_maetzler87(frequency, temperature)
Calculates the complex ice dielectric constant depending on the frequency and temperature.
Based on Mätzler, C. and Wegmüller (1987). Dielectric properties of fresh-water ice at microwave frequencies. J. Phys. D: Appl. Phys. 20 (1987) 1623-1630.
- Parameters:
frequency – frequency in Hz
temperature – temperature in K
- Returns:
complex permittivity of pure ice
Example:
from smrt.permittivity.ice import ice_permittivity_maetzler87 eps_ice = ice_permittivity_maetzler87(frequency=18e9, temperature=270)
Note
This is only suitable for testing at -5 deg C and -15 deg C. If used at other temperatures a warning will be displayed.
- ice_permittivity_tiuri84(frequency, temperature)
Calculates the complex ice dielectric constant depending on the frequency and temperature.
Based on Tiuri et al. (1984). The Complex Dielectric Constant of Snow at Microwave Frequencies. IEEE Journal of Oceanic Engineering, vol. 9, no. 5., pp. 377-382
- Parameters:
frequency – frequency in Hz
temperature – temperature in K
- Returns:
complex permittivity of pure ice
Example:
from smrt.permittivity.ice import ice_permittivity_tiuri84 eps_ice = ice_permittivity_tiuri84(frequency=1.9e9, temperature=250)
- ice_permittivity_hufford91_maetzler87(frequency, temperature)
Calculates the complex ice dielectric constant depending on the frequency and temperature.
Real part of permittivity follows Mätzler and Wegmuller (1987): Dielectric properties of freshwater ice at microwave frequencies, 10.1088/0022-3727/20/12/013. The imaginary part is based on Hufford 1991: A model for the complex permittivity of ice at frequencies below 1 THz, 10.1007/BF01008898. The Hufford model is derived for frequencies up to 1000 GHz and temperatures from -40°C to 0°C. This gives exact agreement with the MEMLS_ice model version used in Rückert et al., 2023.
- Parameters:
frequency – Frequency in Hz
temperature – ice temperature in K
- Returns:
complex permittivity of pure ice
smrt.permittivity.water module
- water_permittivity_maetzler87(frequency, temperature)
Calculates the complex water dielectric constant depending on the frequency and temperature Based on Mätzler, C., & Wegmuller, U. (1987). Dielectric properties of freshwater ice at microwave frequencies. Journal of Physics D: Applied Physics, 20(12), 1623-1630.
- Parameters:
frequency – Frequency in Hz.
temperature – Temperature in K.
- Raises:
Exception – If liquid water > 0 or salinity > 0 (model unsuitable).
- Returns:
Complex permittivity of pure ice.
- Return type:
complex
- water_permittivity(frequency, temperature)
Calculates the complex water dielectric constant depending on the frequency and temperature Based on Mätzler, C., & Wegmuller, U. (1987). Dielectric properties of freshwater ice at microwave frequencies. Journal of Physics D: Applied Physics, 20(12), 1623-1630.
- Parameters:
frequency – Frequency in Hz.
temperature – Temperature in K.
- Raises:
Exception – If liquid water > 0 or salinity > 0 (model unsuitable).
- Returns:
Complex permittivity of pure ice.
- Return type:
complex
- water_permittivity_tiuri80(frequency, temperature)
Calculates the complex water dielectric constant reported by:
Tiuri, M. and Schultz, H., Theoretical and experimental studies of microwave radiation from a natural snow field. In Rango, A. , ed. Microwave remote sensing of snowpack properties. Proceedings of a workshop … Fort Collins, Colorado, May 20-22, 1980. Washington, DC, National Aeronautics and Space Center, 225-234. (Conference Publication 2153.)
https://ntrs.nasa.gov/api/citations/19810010984/downloads/19810010984.pdf
- Parameters:
frequency – Frequency in Hz.
temperature – Temperature in K.
- Raises:
SMRTError – If the water temperature is below the freezing point.
- Returns:
Complex permittivity of water.
- Return type:
complex
smrt.permittivity.wetice module
- wetice_permittivity_bohren83(frequency, temperature, liquid_water)
Calculate the dielectric constant of wet particules of ice using Maxwell Garnet equation using water as the background and ice as the inclusions. As reported by Bohren and Huffman 1983 according to Ya Qi Jin, eq 8-69, 1996 p282.
See also: K L CHOPRA and G B REDDY, Praman.a- Optically selective coatings, J. Phys., Vol. 27, Nos 1 & 2, July & August 1986, pp. 193-217.
- Parameters:
frequency – Frequency in Hz.
temperature – Temperature in K.
liquid_water – Fractional volume of water with respect to ice+water volume.
- Returns:
Complex permittivity of pure ice.
- symmetric_wetice_permittivity(frequency, temperature, liquid_water)
Calculate the dielectric constant of wet particules of ice using Polder van Santen Maxwell equation assuming both ice and water are fully mixed. This applies to intermediate content of wetness. Typically liquid_water=0.5.
- Parameters:
frequency – Frequency in Hz.
temperature – Temperature in K.
liquid_water – Fractional volume of water with respect to ice+water volume.
- Returns:
Complex permittivity of pure ice.
smrt.permittivity.saline_ice module
Provides permittivity formulations for use with saline ice, and possibly in some cases with saline snow. See also saline_snow.py in the latter case.
- impure_ice_permittivity_maetzler06(frequency, temperature, salinity)
- Computes permittivity of impure ice from Maetzler 2006 - Thermal Microwave Radiation: Applications for Remote Sensing.
Model developed for salinity around 0.013 PSU. The extrapolation is based on linear assumption to salinity, so it is not recommended for much higher salinity.
- param temperature:
ice temperature in K
- param salinity:
salinity of ice in kg/kg (see PSU constant in smrt module)
Usage example:
from smrt.permittivity.saline_ice import impure_ice_permittivity_maetzler06 eps_ice = impure_ice_permittivity_maetzler06(frequency=18e9, temperature=270, salinity=0.013)
- saline_ice_permittivity_pvs_mixing(frequency, temperature, brine_volume_fraction, brine_inclusion_shape='spheres', brine_mixing_ratio=1, ice_permittivity_model=None, brine_permittivity_model=None)
Computes effective permittivity of saline ice using the Polder Van Santen mixing formulaes.
- Parameters:
frequency – frequency in Hz
temperature – ice temperature in K
brine_volume_fraction – brine / liquid water fraction in sea ice
brine_inclusion_shape – Assumption for shape(s) of brine inclusions. Can be a string for single shape, or a list/tuple/dict of strings for mixture of shapes. So far, we have the following shapes: “spheres” and “random_needles” (i.e. randomly-oriented elongated ellipsoidal inclusions). If the argument is a dict, the keys are the shapes and the values are the mixing ratio. If it is a list, the mixing_ratio argument is required.
brine_mixing_ratio – The mixing ratio of the shapes. This is only relevant when inclusion_shape is a list/tuple. Mixing ratio must be a sequence with length len(inclusion_shape)-1. The mixing ratio of the last shapes is deduced as the sum of the ratios must equal to 1.
ice_permittivity_model – pure ice permittivity formulation (default is ice_permittivity_matzler87)
brine_permittivity_model – brine permittivity formulation (default is brine_permittivity_stogryn85)
smrt.permittivity.brine module
Contains functions to compute various properties of brines.
- brine_conductivity_stogryn85(temperature)
Computes ionic conductivity of dissolved salts, Stogryn and Desargant, 1985
- Parameters:
temperature – thermometric temperature [K]
References
Stogryn, A., & Desargant, G. (1985). The dielectric properties of brine in sea ice at microwave frequencies. IEEE Transactions on Antennas and Propagation, 33(5), 523–532. https://doi.org/10.1109/tap.1985.1143610
- brine_relaxation_time_stogryn85(temperature)
Computes relaxation time of brine, Stogryn and Desargant, 1985
- Parameters:
temperature – thermometric temperature [K]
References
Stogryn, A., & Desargant, G. (1985). The dielectric properties of brine in sea ice at microwave frequencies. IEEE Transactions on Antennas and Propagation, 33(5), 523–532. https://doi.org/10.1109/tap.1985.1143610
- brine_salinity(temperature)
Computes the salinity of brine (in ppt) for a given temperature. The origin of this code is unknown, to be investigate. It was attributed to (Cox and Weeks, 1975) in earlier commits but their Eq 15 is different.
- Parameters:
temperature – snow temperature in K
- Returns:
salinity_brine in ppt
- brine_salinity_coxandweeks75(temperature)
Computes the salinity of brine (in ppt) for a given temperature (Cox and Weeks, 1975, equation 15)
- Parameters:
temperature – snow temperature in K
- Returns:
salinity_brine in ppt
Reference: Cox, G. F. N., Wilford F. Weeks, and Cold Regions Research and Engineering Laboratory (U.S.). 1975. Brine Drainage and Initial Salt Entrapment in Sodium Chloride Ice. Hanover, N.H.: U.S. Dept. of Defense, Dept. of the Army, Corps of Engineers, Cold Regions Research and Engineering Laboratory.
- brine_salinity_assur60poe72(temperature)
Computes the salinity of brine (in psu) for a given temperature (Assur, 1960; Poe et al., 1972; as cited in Ulaby&Long 2014 (equation 4.46))
Validity range:
-43.2°C <= temperature in K <= -2°C :param temperature: snow temperature in K
- Returns:
salinity_brine in psu
Reference: Ulaby, Fawwaz, and David Long. Microwave Radar and Radiometric Remote Sensing. University of Michigan Press, 2014. https://doi.org/10.3998/0472119356.
- static_brine_permittivity_stogryn85(temperature)
Computes static dielectric constant of brine, after Stogryn and Desargant, 1985
- Parameters:
temperature – thermometric temperature [K]
References
Stogryn, A., & Desargant, G. (1985). The dielectric properties of brine in sea ice at microwave frequencies. IEEE Transactions on Antennas and Propagation, 33(5), 523–532. https://doi.org/10.1109/tap.1985.1143610
- permittivity_high_frequency_limit_stogryn85(temperature)
Computes permittivity.
- Parameters:
temperature – ice or snow temperature in K, after Stogryn and Desargant, 1985
References
Stogryn, A., & Desargant, G. (1985). The dielectric properties of brine in sea ice at microwave frequencies. IEEE Transactions on Antennas and Propagation, 33(5), 523–532. https://doi.org/10.1109/tap.1985.1143610
- water_freezing_temperature(salinity)
Calculates temperature at which saline water freezes using polynomial fits of the Gibbs function given in TEOS-10: The international thermodynamic equation of seawater - 2010 (’http://www.teos-10.org/pubs/TEOS-10_Manual.pdf). The error of this fit ranges between -5e-4 K and 6e-4 K when compared with the temperature calculated from the exact in-situ freezing temperature, which is found by a Newton-Raphson iteration of the equality of the chemical potentials of water in seawater and in ice.
- Parameters:
salinity – salinity of ice in kg/kg (see PSU constant in smrt module)
- brine_volume_cox83_lepparanta88(temperature, salinity, porosity=0, bulk_density=None)
Computes brine volume fraction using coefficients from Cox and Weeks (1983): ‘Equations for determining the gas and brine volumes in sea-ice samples’, J. of Glac. if ice temperature is below -2 deg C or coefficients determined by Lepparanta and Manninen (1988): ‘The brine and gas content of sea ice with attention to low salinities and high temperatures’ for warmer temperatures.
- Parameters:
temperature – ice temperature in K
salinity – salinity of ice in kg/kg (see PSU constant in smrt module)
porosity – fractional air volume in ice (0..1). Default is 0.
bulk_density – density of bulk ice in kg m -3
- brine_volume(*args, **kwargs)
- brine_volume_frankenstein67(temperature, salinity)
Computes brine volume fraction using the simpliest equation of Frankenstein and Garner 1967: ‘Frankenstein G, Garner R. Equations for Determining the Brine Volume of Sea Ice from −0.5° to −22.9°C. Journal of Glaciology. 1967;6(48):943-944. https://doi.org:/10.3189/S0022143000020244’
- Parameters:
temperature – ice temperature in K
salinity – salinity of ice in kg/kg (see PSU constant in smrt module)
- brine_volume_function_stogryn_1987(temperature, salinity)
computes brine volume fraction using coefficients from Stogryn (1987): ‘An analysis of the tensor dielectric constant of sea ice at microwave frequencies’ (10.1109/TGRS.1987.289814), where the values are compared to measurements from 0 to -32 ° C and frequencies from 0.1 to 40 GHz.
- Parameters:
temperature – ice temperature in K
salinity – salinity of ice in kg/kg (see PSU constant in smrt module)
Example usage: salinity = 33*PSU temperature = 270 make_ice_column(‘firstyear’, thickness=[1.0], microstructure_model=’exponential’,
- temperature=temperature, salinity=salinity, corr_length=[0.2e-3], water_salinity=34,
brine_volume_fraction=brine_volume_function_stogryn_1987(temperature,salinity))
note: example usage might change
smrt.permittivity.saline_water module
- seawater_permittivity_klein76(frequency, temperature, salinity)
Calculates permittivity (dielectric constant) of water using an empirical relationship described by Klein and Swift (1976).
- Parameters:
frequency – frequency in Hz
temperature – water temperature in K
salinity – water salinity in kg/kg (see PSU constant in smrt module)
- Returns:
complex water permittivity for a frequency f.
- Raises:
SMRTError – If the water temperature is lower than the freezing point at the given salinity.
- seawater_permittivity_stogryn71(frequency, temperature)
Computes dielectric constant of brine, complex_b (Stogryn, 1971 approach)
Input parameters: from polynomial fit in Stogryn and Desargent, 1985
Source: Matlab code, Ludovic Brucker
- Parameters:
frequency – frequency in Hz
temperature – water temperature in K
- Returns:
complex water permittivity for a frequency f.
References
A. Stogryn, “Equations for Calculating the Dielectric Constant of Saline Water (Correspondence),” in IEEE Transactions on Microwave Theory and Techniques, vol. 19, no. 8, pp. 733-736, Aug. 1971, doi: 10.1109/TMTT.1971.1127617
- brine_permittivity_stogryn85(frequency, temperature)
Computes permittivity and loss of brine using equations given in Stogryn and Desargant (1985): ‘The Dielectric Properties of Brine in Sea Ice at Microwave Frequencies’, IEEE.
- Parameters:
frequency – em frequency [Hz]
temperature – ice temperature in K
- Returns:
complex water permittivity for a frequency f.
- seawater_permittivity_stogryn95(frequency, temperature, salinity)
Computes seawater dielectric constant using Stogryn 1995.
source: Stogryn 1995 + http://rime.aos.wisc.edu/MW/models/src/eps_sea_stogryn.f90; Matlab code, Ludovic Brucker
- Parameters:
frequency – frequency in Hz
temperature – water temperature in K
salinity – water salinity in kg/kg (see PSU constant in smrt module)
- Returns:
complex water permittivity for a frequency f.
- seawwater_permittivity_boutin23_2function(frequency, temperature, salinity)
Compute the permittivity using BVZ 2 from Boutin et al. (2023, IEEE TGRS, doi : 10.1109/TGRS.2023.3257923) Equations (7) and (8)
BVZ 2functions’ has been derived from L-Band GW2020 measurements, following the assumptions of Somaraju and Trumpf (2006). It reasonnably fits P-Band dielectric constants laboratory measurements over the 0-150 pss range (Levine et al. 2025, IEEE TGRS). With respect to the BV (Boutin et al. 2020) model, the following changes have been performed:
Conductivity=pss78 conductivity-salinity relationship from TEOS10 tau=tauMW(1+gSST) instead of tau=tauMW alpha=(par(1)-par(2).SST)
This function requires the Gibbs SeaWater Oceanographic Toolbox package (gsw): https://github.com/TEOS-10/GSW-python
- Parameters:
frequency – em frequency [Hz]
temperature – ice temperature in K
- Returns:
complex water permittivity for a frequency f.
- seawwater_permittivity_boutin23_3function(frequency, temperature, salinity)
Compute the permittivity using BVZ 2 from Boutin et al. (2023, IEEE TGRS, doi : 10.1109/TGRS.2023.3257923) Equations (9,10,11)
Model derived from L-Band GW2020 measurements and validated wit SMOS SSS retrievals. In order to better fit GW2020 measurements, and with respect to Somaraju and Trumpf (2006) assumptions. An additional dependency of alpha with S has been introduced. This parametization is not valid outside the 0-38pss range. With respect to the BV (Boutin et al. 2020) model, the following changes have been performed:
Conductivity=pss78 conductivity-salinity relationship (TEOS10) tau=tauMW(1+gSST) instead of tau=tauMW alpha=(par(1)-par(2).SST)(1+hSSS) gSST and hSSS are polynomial functions of SST and SSS respectively par(1) and par(2) : linear fit parameters of alpha
Notations and fresh parameters as in MW (Meissner and Wentz (2004))
This function requires the Gibbs SeaWater Oceanographic Toolbox package (gsw): https://github.com/TEOS-10/GSW-python
- Parameters:
frequency – em frequency [Hz]
temperature – ice temperature in K
- Returns:
complex water permittivity for a frequency f.
smrt.permittivity.generic_mixing_formula module
Contains functions that are not tied to a particular electromagnetic model and are available to be imported by any electromagnetic model. It is the responsibility of the developer to ensure these functions, if used, are appropriate and consistent with the physics of the electromagnetic model.
- depolarization_factors(length_ratio=None)
Calculates depolarization factors for use in effective permittivity models. These are a measure of the anisotropy of the snow. Default is spherical isotropy.
- Parameters:
length_ratio – [Optional] ratio of microstructure length measurement in x/y direction to z-direction [unitless].
- Returns:
[x, y, z] depolarization factor array
Usage example:
from smrt.permittivity.generic_mixing_formula import depolarization_factors depol_xyz = depolarization_factors(length_ratio=1.2) depol_xyz = depolarization_factors()
- polder_van_santen(frac_volume, e0=1, eps=3.185, depol_xyz=None, length_ratio=None, inclusion_shape=None, mixing_ratio=1)
Calculates effective permittivity of snow by solution of quadratic Polder Van Santen equation for spherical inclusion.
- Parameters:
frac_volume – Fractional volume of inclusions
e0 – Permittivity of background (default is 1)
eps – Permittivity of scattering material (default is 3.185 to compare with MEMLS)
depol_xyz – [Optional] Depolarization factors, spherical isotropy is default. It is not taken into account here.
length_ratio – Length_ratio. Used to estimate depolarization factors when they are not given.
inclusion_shape – Assumption for shape(s) of brine inclusions. Can be a string for single shape, or a list/tuple/dict of strings for mixture of shapes. So far, we have the following shapes: “spheres” and “random_needles” (i.e. randomly-oriented elongated ellipsoidal inclusions). If the argument is a dict, the keys are the shapes and the values are the mixing ratio. If it is a list, the mixing_ratio argument is required.
mixing_ratio – The mixing ratio of the shapes. This is only relevant when inclusion_shape is a list/tuple. Mixing ratio must be a sequence with length len(inclusion_shape)-1. The mixing ratio of the last shapes is deduced as the sum of the ratios must equal to 1.
- Returns:
Effective permittivity
Usage example:
from smrt.permittivity.generic_mixing_formula import polder_van_santen effective_permittivity = polder_van_santen(frac_volume, e0, eps) # for a mixture of 30% spheres and 70% needles effective_permittivity = polder_van_santen(frac_volume, e0, eps, inclusion_shape={"spheres": 0.3, "random_needles": 0.7}) # or effective_permittivity = polder_van_santen(frac_volume, e0, eps, inclusion_shape=("spheres", "random_needles"), mixing_ratio=0.3)
Todo
Extend Polder Van Santen model to account for ellipsoidal inclusions
- bruggeman(frac_volume, e0=1, eps=3.185, depol_xyz=None, length_ratio=None, inclusion_shape=None, mixing_ratio=1)
Calculates effective permittivity of snow by solution of quadratic Polder Van Santen equation for spherical inclusion.
- Parameters:
frac_volume – Fractional volume of inclusions
e0 – Permittivity of background (default is 1)
eps – Permittivity of scattering material (default is 3.185 to compare with MEMLS)
depol_xyz – [Optional] Depolarization factors, spherical isotropy is default. It is not taken into account here.
length_ratio – Length_ratio. Used to estimate depolarization factors when they are not given.
inclusion_shape – Assumption for shape(s) of brine inclusions. Can be a string for single shape, or a list/tuple/dict of strings for mixture of shapes. So far, we have the following shapes: “spheres” and “random_needles” (i.e. randomly-oriented elongated ellipsoidal inclusions). If the argument is a dict, the keys are the shapes and the values are the mixing ratio. If it is a list, the mixing_ratio argument is required.
mixing_ratio – The mixing ratio of the shapes. This is only relevant when inclusion_shape is a list/tuple. Mixing ratio must be a sequence with length len(inclusion_shape)-1. The mixing ratio of the last shapes is deduced as the sum of the ratios must equal to 1.
- Returns:
Effective permittivity
Usage example:
from smrt.permittivity.generic_mixing_formula import polder_van_santen effective_permittivity = polder_van_santen(frac_volume, e0, eps) # for a mixture of 30% spheres and 70% needles effective_permittivity = polder_van_santen(frac_volume, e0, eps, inclusion_shape={"spheres": 0.3, "random_needles": 0.7}) # or effective_permittivity = polder_van_santen(frac_volume, e0, eps, inclusion_shape=("spheres", "random_needles"), mixing_ratio=0.3)
Todo
Extend Polder Van Santen model to account for ellipsoidal inclusions
- polder_van_santen_three_spherical_components(f1, f2, eps0, eps1, eps2)
Calculates effective permittivity using Polder and van Santen with three components assuming spherical inclusions
- Parameters:
f1 – fractional volume of component 1
f2 – fractional volume of component 2
eps0 – permittivity of material 0
eps1 – permittivity of material 1
eps2 – permittivity of material 2
- polder_van_santen_three_components(f1, f2, eps0, eps1, eps2, A1, A2)
Calculates effective permittivity using Polder and van Santen with three components
- Parameters:
f1 – fractional volume of component 1
f2 – fractional volume of component 2
eps0 – permittivity of material 0
eps1 – permittivity of material 1
eps2 – permittivity of material 2
A1 – depolarization factor for material 1
A2 – depolarization factor for material 2
- maxwell_garnett(frac_volume, e0, eps, depol_xyz=None, inclusion_shape=None, length_ratio=None)
Calculates effective permittivity using Maxwell-Garnett equation.
- Parameters:
frac_volume – Fractional volume of snow
e0 – Permittivity of background (no default, must be provided)
eps – Permittivity of scattering material (no default, must be provided)
depol_xyz – [Optional] Depolarization factors, spherical isotropy is default. It is not taken into account here.
length_ratio – Length_ratio. Used to estimate depolarization factors when they are not given.
inclusion_shape – Assumption for shape(s) of brine inclusions. Can be a string for single shape, or a list/tuple/dict of strings for mixture of shapes. So far, we have the following shapes: “spheres” and “random_needles” (i.e. randomly-oriented elongated ellipsoidal inclusions). If the argument is a dict, the keys are the shapes and the values are the mixing ratio. If it is a list, the mixing_ratio argument is required.
- Returns:
random orientation effective permittivity
Usage example:
# If used by electromagnetic model module: from .commonfunc import maxwell_garnett effective_permittivity = maxwell_garnett(frac_volume=0.2, e0=1, eps=3.185, depol_xyz=[0.3, 0.3, 0.4]) # If accessed from elsewhere, use absolute import from smrt.emmodel.commonfunc import maxwell_garnett
- maxwell_garnett_for_spheres(frac_volume, e0, eps)
Calculates effective permittivity using Maxwell-Garnett equation assuming spherical inclusion. This function is essentially an optimized version of py:func:maxwell_garnett.
smrt.permittivity.saline_snow module
Provides mixing formulae relevant to saline snow. Contains equations to compute the effective permittivity of saline snow.
These functions are to be used with smrt.emmodel.iba.derived_IBA or
smrt.emmodel.symsce_torquato21.derived_SymSCETK21 to change the default of most emmodels (IBA, DMRT, SFT
Rayleigh, SCE) using the generic mixing formula Polder van Staten that automatically mixes the permittivities of the
background (e.g.) and the scatterer materials (e.g. saline ice) to compute the effective permittivity of snow in a proportion
determined by frac_volume.
They should not be used to set the material permittivities as input of smrt.smrt_inputs.make_snowpack and
similar functions (because the emmodel would re-mix the already mixed materials with the background material).
- saline_snow_permittivity_geldsetzer09(frequency, density, temperature, salinity)
Computes permittivity of saline snow using the frequency dispersion model published by Geldsetzer et al., 2009 (CRST). DOI: 10.1016/j.coldregions.2009.03.009. In-situ measurements collected had salinity concentration between 0.1e-3 and 12e3 kg/kg, temperatures ranging between 257 and 273 K, and a mean snow density of 352 kg/m3.
Validity between 10 MHz and 40 GHz.
Source: Matlab code, Ludovic Brucker
- Parameters:
frequency – frequency in Hz
density – snow density in kg m-3
temperature – ice temperature in K
salinity – salinity of ice in kg/kg (see PSU constant in smrt module)
- saline_snow_permittivity_scharien_with_stogryn71(frequency, density, temperature, salinity)
Computes permittivity of saline snow. See saline_snow_permittivity_scharien documentation
- saline_snow_permittivity_scharien_with_stogryn95(frequency, density, temperature, salinity)
Computes permittivity of saline snow. See saline_snow_permittivity_scharien documentation
- saline_snow_permittivity_scharien(density, temperature, salinity, brine_permittivity)
Computes permittivity of saline snow using the Denoth / Matzler Mixture Model - Dielectric Constant of Saline Snow.
Assumptions: (1) Brine inclusion geometry as oblate spheroids. Depolarization factor, A0 = 0.053 (Denoth, 1980) (2) Brine inclusions are isotropically oriented. Coupling factor, X = 2/3 (Drinkwater and Crocker, 1988)
Validity ranges: (1) Temperature, Ts, down to - 22.9 degrees Celcius; (2) Brine salinity, Sb, up to 157ppt; i.e.up to a Normality of 3 for NaCl Not valid for wet snow
Source: Matlab code, Randall Scharien
- Parameters:
density – snow density in kg m-3
temperature – snow temperature in K
salinity – snow salinity in kg/kg (see PSU constant in smrt module)
brine_permittivity – brine_permittivity
smrt.permittivity.snow_mixing_formula module
Provides mixing formulae relevant to snow. Contains equations to compute the effective permittivity of snow.
These functions are to be used with smrt.emmodel.iba.derived_IBA or
smrt.emmodel.symsce_torquato21.derived_SymSCETK21 to change the default of most emmodels (IBA, DMRT, SFT
Rayleigh, SCE) using the generic mixing formula Polder van Staten that automatically mixes the permittivities of the
background (e.g.) and the scatterer materials (e.g. ice) to compute the effective permittivity of snow in a proportion
determined by frac_volume.
They should not be used to set the material permittivities as input of smrt.smrt_inputs.make_snowpack and
similar functions (because the emmodel would re-mix the already mixed materials with the background material).
- wetsnow_permittivity_tinga73(frequency, temperature, density, liquid_water, ice_permittivity_model=None, water_permittivity_model=None)
Computes the effective permittivity proposed by Tinga et al. 1973 for three-component mixing. The component 1 is the background (“a” here), the compoment 2 (“w” here) is a spherical shell surrounding the component 3 (“i” here).
It was used by Tiuri as well as T. Mote to compute wet snolw permittivity.
Tinga, W.R., Voss, W.A.G. and Blossey, D. F.: General approach to multiphase dielectric mixture theory. Journal of Applied Physics, Vol.44(1973) No.9,pp.3897-3902. doi: /10.1063/1.1662868
Tiuri, M. and Schultz, H., Theoretical and experimental studies of microwave radiation from a natural snow field. In Rango, A. , ed. Microwave remote sensing of snowpack properties. Proceedings of a workshop … Fort Collins, Colorado, May 20-22, 1980. Washington, DC, National Aeronautics and Space Center, 225-234. (Conference Publication 2153.)
- compute_frac_volumes(density, liquid_water)
Computes the fractional volume of ice+water, the fractional volume of ice, and the fractional volume of water from the (wet) snow density and the liquid_water which is the volume fraction of liquid with respect to ice + liquid (but no air).
- Parameters:
density – density of the snow, including the ice and water phases.
liquid_water – (fractional volume of water with respect to ice+water volume).
- Returns:
frac_volume, fi, fw
- wetsnow_permittivity_colbeck80_caseI(frequency, temperature, density, liquid_water, ice_permittivity_model=None, water_permittivity_model=None)
Computes the effective permittivity proposed by Colbeck, 1980 for the pendular regime.
Colbeck, S. C. (1980). Liquid distribution and the dielectric constant of wet snow. Goddard Space Flight Center Microwave Remote Sensing of Snowpack Properties, 21–40.
- wetsnow_permittivity_colbeck80_caseII(frequency, temperature, density, liquid_water, ice_permittivity_model=None, water_permittivity_model=None)
Computes the effective permittivity proposed by Colbeck, 1980 for the funicular regime and low dry snow density.
Colbeck, S. C. (1980). Liquid distribution and the dielectric constant of wet snow. Goddard Space Flight Center Microwave Remote Sensing of Snowpack Properties, 21–40.
- wetsnow_permittivity_colbeck80_caseIII(frequency, temperature, density, liquid_water, ice_permittivity_model=None, water_permittivity_model=None)
Computes the effective permittivity proposed by Colbeck, 1980 for the low porosity.
Colbeck, S. C. (1980). Liquid distribution and the dielectric constant of wet snow. Goddard Space Flight Center Microwave Remote Sensing of Snowpack Properties, 21–40.
- wetsnow_permittivity_hallikainen86(frequency, density, liquid_water)
Computes the effective permittivity of a snow mixture calculated with the Modified Debye model by Hallikainen 1986
The implemented equation are 10, 11 and 13a-c.
- The validity of the model is: frequency between 3 and 37GHz;
mv between 1% and 12%; dry_snow_density between 0.09 and 0.38g/cm3.
The implementation of this function follows the equations formulation of the original paper Hallikainen, M., F. Ulaby, and M. Abdelrazik, “Dielectric properties of snow in 3 to 37 GHz range,” IEEE Trans. on Antennasand Propagation,Vol. 34, No. 11, 1329–1340, 1986. DOI: 10.1109/TAP.1986.1143757 Anyway this formulation does not allow the reproduction of the results as reported in the paper. A new formulation of eq. 12a have been presented in the book Microwave Radar and Radiometric Remote Sensing by Ulaby et al. 2014 from which the SMRT function wetsnow_permittivity_hallikainen86_ulaby14 have been implemented. The users are pointed to that definition.
- wetsnow_permittivity_hallikainen86_ulaby14(frequency, density, liquid_water)
Computes the effective permittivity of a snow mixture calculated with the Modified Debye model by Hallikainen 1986 and revised in Microwave Radar and Radiometric Remote Sensing by Ulaby et al. 2014 Equations implemented are ch 4 pp 143-15 4.60a - 4.61h.
- The validity of the model is: frequency between 3 and 37GHz;
mv between 1% and 12%; dry_snow_density between 0.09 and 0.38g/cm3.
Same formulation can be reproduced by the book code https://mrs.eecs.umich.edu/codes/Module4_6/Module4_6.html
- wetsnow_permittivity_wiesmann99(frequency, temperature, density, liquid_water, ice_permittivity_model=None)
Computes the effective permittivity of a snow mixture as presented in MEMLS by Wiesmann and Matzler, 1999. Note that the version implemented in MEMLS v3 is different.
- wetsnow_permittivity_memls(frequency, temperature, density, liquid_water, ice_permittivity_model=None, water_permittivity_model=None)
Computes the effective permittivity of a snow mixture as calculated in MEMLS using Maxwell-Garnett Mixing rule of water in dry snow for prolate spheroidal water with experimentally determined. Dry snow permittivity is here determined with Polder van Santen.
- wetsnow_permittivity_three_component_polder_van_santen(frequency, temperature, density, liquid_water, ice_permittivity_model=None, water_permittivity_model=None)
Computes the effective permittivity of a snow mixture using the three components polder_van_santen, assuming spherical inclusions
- depolarization_factors_maetzler96(density)
- The empirical depolarization factors of snow estimated by Mäzler 1996. It is supposed to provide more accurate
permittivity=f(density) than using constant depolarization factors in Polder van Santen (e.g. spheres)
Biblio: C. Mäzler, Microwave Permittivity of dry snow, IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING, VOL. 34, NO. 2, MARCH 1996
- drysnow_permittivity_maetzler96(density, e0=1, eps=3.185)
- default_ice_water_permittivity(ice_permittivity_model, water_permittivity_model)
smrt.permittivity.wetsnow module
- wetsnow_permittivity(frequency, temperature, liquid_water)
Calculate the dielectric constant of wet particles of ice using Bohren and Huffman 1983 according to Ya Qi Jin, eq 8-69, 1996 p282.
- Parameters:
frequency – frequency in Hz
temperature – temperature in K
liquid_water – fractional volume of water with respect to ice+water volume
- Returns:
complex permittivity of pure ice