SMRT

smrt.permittivity package

Submodules

smrt.permittivity.brine module

brine_conductivity(temperature)

computes ionic conductivity of dissolved salts, Stogryn and Desargant, 1985

Parameters:temperature – thermometric temperature [K]
brine_relaxation_time(temperature)

computes relaxation time of brine, Stogryn and Desargant, 1985

Parameters:temperature – thermometric temperature [K]
static_brine_permittivity(temperature)

computes static dielectric constant of brine, Stogryn and Desargant, 1985

Parameters:temperature – thermometric temperature [K]
calculate_brine_salinity(temperature)

Computes the salinity of brine (in ppt) for a given temperature (Cox and Weeks, 1975)

Parameters:temperature – snow temperature in K

:return salinity_brine in ppt

permittivity_high_frequency_limit(temperature)

computes permittivity.

Parameters:temperature – ice or snow temperature in K
brine_volume(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
calculate_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)

smrt.permittivity.generic_mixing_formula module

This 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.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

Usage 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
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

Usage 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

Usage example:

from smrt.permittivity.ice import ice_permittivity_tiuri84
eps_ice = ice_permittivity_tiuri84(frequency=1.9e9, temperature=250)

smrt.permittivity.saline_ice module

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.saline_snow module

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 Contsant of Saline Snow.

Assumptions: (1) Brine inclusion geometry as oblate spheroids

Depolarization factor, A0 = 0.053 (Denoth, 1980)
  1. 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.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.

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.

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
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.

smrt.permittivity.snow_mixing_formula module

Mixing formulae relevant to snow. This module contains equations to compute the effective permittivity of snow.

Note that by default most emmodels (IBA, DMRT, SFT Rayleigh) uses the generic mixing formula Polder van Staten that 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. See py:meth:~smrt.emmolde.derived_IBA.

Many semi-empirical mixing formulae have been developed for specific mixture of materials (e.g. snow). They can be used to replace the Polder van Staten in the EM models. They should not be used to set the material permittivities as input of py:meth:~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)
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)

compute 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)

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)

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)

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)

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)

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)

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)

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)

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.test_generic_mixing_formula module

test_isotropic_default_depolarization_factors()
test_plates_depol()
test_hoar_columns_depol()
test_depol_approach_to_isotropy_above()
test_depol_approach_to_isotropy_below()
test_pvsl_spheres()
test_pvsl_needles()
test_pvsl_mix_spheres_needles()

smrt.permittivity.test_ice module

test_ice_permittivity_output_matzler_temp_270()
test_ice_permittivity_output_matzler_temp_250()
test_imaginary_ice_permittivity_output_matzler_temp_270_freq_20GHz()
test_imaginary_ice_permittivity_output_matzler_temp_250_freq_20GHz()
test_imaginary_ice_permittivity_output_matzler_temp_270_freq_30GHz()
test_imaginary_ice_permittivity_output_matzler_temp_250_freq_30GHz()
test_imaginary_ice_permittivity_output_matzler_temp_270_freq_40GHz()
test_imaginary_ice_permittivity_output_matzler_temp_250_freq_40GHz()
test_real_ice_permittivity_output_maetzler87_temp_268()
test_imag_ice_permittivity_output_maetzler87_temp_minus5()
test_imag_ice_permittivity_output_maetzler87_temp_minus15()
test_ice_permittivity_output_tuiri84_temp_minus10_freq_10GHz()
test_ice_permittivity_output_tuiri84_temp_minus10_freq_40GHz()
test_ice_permittivity_output_tuiri84_temp_250K_freq_10GHz()
test_ice_permittivity_output_tuiri84_temp_250K_freq_40GHz()
test_real_ice_permittivity_output_HUT()
test_imaginary_ice_permittivity_output_HUT()
test_real_ice_permittivity_output_DMRTML()
test_imaginary_ice_permittivity_output_DMRTML()
test_real_ice_permittivity_output_matzler_temp_270_MEMLS()
test_imaginary_ice_permittivity_output_matzler_temp_270_freq_10GHz()
test_salty_imaginary_ice_permittivity_output_matzler_temp_270_freq_10GHz()

smrt.permittivity.test_saline_ice module

test_impure_permittivity_same_as_pure_for_zero_salinty()
test_impure_ice_freezing_point_0p013psu_10GHz()
test_saline_permittivity_same_as_pure_for_zero_salinity()
test_saline_permittivity_with_mixtures()

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

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

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.)

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

:param 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

:param liquid_water (fractional volume of water with respect to ice+water volume). :returns: Complex permittivity of pure ice

smrt.permittivity.wetsnow module

wetsnow_permittivity(frequency, temperature, liquid_water)

calculate the dielectric constant of wet particule 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

:param liquid_water (fractional volume of water with respect to ice+water volume) :returns: Complex permittivity of pure ice

Module contents

This module contains permittivity formulations for different materials. They are organised in different files for easy access but this is not strictly required.

E.g. ice.py contains formulation for pure ice permittivity.

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. E.g.:

@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, we recommend 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_snowpack() or smrt.core.layer:make_snow_layer().