Source code for refractiveIndex.utilities

""" refractive.utilities module

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

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

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

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

This module provides a short list of utilities and complementary functions
for the refractive index module.

Basic conversion from refractive index to dielectric permittivity
(and viceversa) is implemented.
The module also provides a conversion function from dielectric permittivity to
radar dielectric factor K2 which is of great importance in radar applications

"""

from __future__ import absolute_import

import numpy as np

[docs]speed_of_light = 299792458.0
[docs]def eps2n(eps): return np.sqrt(eps)
[docs]def n2eps(n): return n*n
[docs]def wavenumber(frequency=None,wavelength=None): if (frequency is None): if (wavelength is None): raise AttributeError('Either frequency or wavelength must be not None') else: return 2.0*np.pi/wavelength elif (wavelength is None): if (frequency is None): raise AttributeError('Either frequency or wavelength must be not None') else: return 2.0*np.pi*frequency/speed_of_light else: raise AttributeError('You cannot pass both frequency and wavelength')
[docs]def K(eps): """ Rayleigh complex dielectric factor This is basically the K complex factor that defines the Radar dielectric factor |K|**2. It is useful in Rayleigh theory to define absorption cross section from its imaginary part Parameters ---------- eps : complex nd array of complex relative dielectric constants Returns ------- nd - float Rayleigh complex dielectric factor K """ return (eps-1.0)/(eps+2.0)
[docs]def K2(eps): """ Radar dielectric factor |K|**2 Parameters ---------- eps : complex nd array of complex relative dielectric constants Returns ------- nd - float Radar dielectric factor |K|**2 real """ K_complex = (eps-1.0)/(eps+2.0) return (K_complex*K_complex.conj()).real