Refactored some variable names and updated descriptions

This commit is contained in:
yosata committed 2020-08-03 11:07:42 +02:00
1 parent e9e4b4ccd6
commit 502183889b
4 files changed
+107 -93

No files matched your search

+47 -41
View File
@@ -39,39 +39,45 @@ class dispersion(Observatory):
Methods Methods
------- -------
setReducedHeight(p, rho)
Sets the reduced atmospheric height.
planeParallel(n1, n2, zenith)
Returns the atmospheric dispersion assuming a plane parallel
atmosphere
cassini(n1, n2, zenith, reduced_height=None) cassini(n1, n2, zenith, reduced_height=None)
Returns the atmospheric dispersion asusming Cassini's homegeneous Returns the atmospheric dispersion assuming Cassini's homegeneous
atmosphere model atmosphere model.
tan5(n1, n2, zenith, reduced_height=None)
Returns the atmospheric dispersion following Oriani's theorem,
including a fifth order term in the expansion.
oriani(n1, n2, zenith, reduced_height=None)
Returns the atmospheric dispersion following the classic version
of Oriani's theorem.
corbard(n1, n2, zenith, reduced_height=None)
Returns the atmospheric dispersion following the method described
in Corbard et al., 2019.
refractionIntegral(n1, n2, z0, R0=None, useStandardAtmosphere=True, heightData=None, rhoData=None)
Returns the atmospheric dispersion following the refraction integral.
psi(x)
Submethod for corbard()
set_rc()
Sets the local radius of curvature of the Earth at the observer.
set_H(p, rho)
Sets the reduced height for the conditions at the observer, assuming
an adiabatic atmosphere.
H_isotherm(T)
Sets the reduced height for the conditions at the observer, assuming
an isothermal atmosphere.
cassiniError(z, l1, l2, T, p, RH, xc, dl1=0, dl2=0, dT=0.2, dP=20, cassiniError(z, l1, l2, T, p, RH, xc, dl1=0, dl2=0, dT=0.2, dP=20,
dRH=0.02, dCO2=20, dz=0, lat=None, h=None) dRH=0.02, dCO2=20, dz=0, lat=None, h=None)
Returns the uncertainty in the atmospheric dispersion, assuming Returns the uncertainty in the atmospheric dispersion, assuming
Cassini's homegeneous atmosphere model and the given parameters. Cassini's homegeneous atmosphere model and the given parameters.
corbard(n1, n2, zenith, reduced_height=None)
Returns the atmospheric dispersion following the method described
in Corbard et al., 2019.
gammaCoefficients(n1, reduced_height=None)
Helper function for matharExponential(), that calculates the gamma
coefficients.
H_isotherm(T)
Sets the reduced height for the conditions at the observer, assuming
an isothermal atmosphere.
matharExponential(n1, n2, zenith, reduced_height=None)
Returns the atmospheric dispersion assuming Mathar's barometric
exponential model.
oriani(n1, n2, zenith, reduced_height=None)
Returns the atmospheric dispersion following the classic version
of Oriani's theorem.
planeParallel(n1, n2, zenith)
Returns the atmospheric dispersion assuming a plane parallel
atmosphere.
psi(x)
Submethod for corbard().
refractionIntegral(n1, n2, zenith, R0=None, useStandardAtmosphere=True, heightData=None, rhoData=None)
Returns the atmospheric dispersion following the refraction integral.
setReducedHeight(p, rho)
Sets the reduced atmospheric height.
set_H(p, rho)
Sets the reduced height for the conditions at the observer, assuming
an adiabatic atmosphere.
set_rc()
Sets the local radius of curvature of the Earth at the observer.
tan5(n1, n2, zenith, reduced_height=None)
Returns the atmospheric dispersion following Oriani's theorem,
including a fifth order term in the expansion.
Other Observatory() methods Other Observatory() methods
''' '''
def __init__(self, lat, h): def __init__(self, lat, h):
@@ -113,7 +119,7 @@ class dispersion(Observatory):
return np.degrees(_R1) - np.degrees(_R2) return np.degrees(_R1) - np.degrees(_R2)
def cassiniError(self, z, l1, l2, T, p, RH, xc, dl1=0, dl2=0, dT=0.2, dP=20, def cassiniError(self, zenith, l1, l2, T, p, RH, xc, dl1=0, dl2=0, dT=0.2, dP=20,
dRH=0.02, dCO2=20, dz=0, lat=None, h=None): dRH=0.02, dCO2=20, dz=0, lat=None, h=None):
''' '''
Calculates the uncertainty in the atmospheric dispersion, Calculates the uncertainty in the atmospheric dispersion,
@@ -128,7 +134,7 @@ class dispersion(Observatory):
Parameters Parameters
---------- ----------
z : float zenith : float
Angle of observation in degrees. Angle of observation in degrees.
zenith = 0 means the observation is directly overhead. zenith = 0 means the observation is directly overhead.
l1 : float l1 : float
@@ -222,7 +228,7 @@ class dispersion(Observatory):
_rho_obs = self.rho(p, T, RH, xc) _rho_obs = self.rho(p, T, RH, xc)
self.rc = self.set_rc() * 1000 self.rc = self.set_rc() * 1000
self.H = self.set_H(p, _rho_obs) self.H = self.set_H(p, _rho_obs)
_alpha = self.rc * np.sin(np.deg2rad(z)) / (self.rc + self.H) _alpha = self.rc * np.sin(np.deg2rad(zenith)) / (self.rc + self.H)
_p_a = p - RH*self.svp(T) _p_a = p - RH*self.svp(T)
_p_w = RH*self.svp(T) _p_w = RH*self.svp(T)
_x_w_a = self.xw(_p_a, T, _RH_a) _x_w_a = self.xw(_p_a, T, _RH_a)
@@ -369,7 +375,7 @@ class dispersion(Observatory):
# Partial derivatives for derivation to z # Partial derivatives for derivation to z
_zenith = np.deg2rad(z) _zenith = np.deg2rad(zenith)
_dz = np.deg2rad(dz) _dz = np.deg2rad(dz)
_R = self.rc _R = self.rc
_H = self.H _H = self.H
@@ -420,14 +426,14 @@ class dispersion(Observatory):
return _rList[0] - _rList[1] return _rList[0] - _rList[1]
def gammaCoefficients(self, n0, reduced_height=None): def gammaCoefficients(self, n1, reduced_height=None):
''' '''
Submethod for matharExponential(). Calculates the gamma Submethod for matharExponential(). Calculates the gamma
coefficients. coefficients.
Parameters Parameters
---------- ----------
n0 : float n1 : float
Refractive index at the wavelength of interest at the observer Refractive index at the wavelength of interest at the observer
reduced_height : float (optional) reduced_height : float (optional)
Reduced height of the atmosphere. Default value is calculated Reduced height of the atmosphere. Default value is calculated
@@ -444,7 +450,7 @@ class dispersion(Observatory):
else: else:
H = self.H H = self.H
_chi0 = n0**2 - 1 _chi0 = n1**2 - 1
_Khat = H / self.rc _Khat = H / self.rc
_g1 = (1 - 5/24 * _Khat * _chi0**2 - 3/4 * _chi0 - 3/8 * _Khat**2 * _chi0 \ _g1 = (1 - 5/24 * _Khat * _chi0**2 - 3/4 * _chi0 - 3/8 * _Khat**2 * _chi0 \
@@ -483,7 +489,7 @@ class dispersion(Observatory):
* _chi0**2 - 180 * _Khat**3 * _chi0 - 9/5 * _Khat * _chi0**4) * 35/128 * _chi0**2 - 180 * _Khat**3 * _chi0 - 9/5 * _Khat * _chi0**4) * 35/128
g = np.array([_g1, _g3, _g5, _g7, _g9]) g = np.array([_g1, _g3, _g5, _g7, _g9])
g*= n0*_chi0/2 g*= n1*_chi0/2
return g return g
@@ -659,7 +665,7 @@ class dispersion(Observatory):
return np.exp(x**2) * _int[0] return np.exp(x**2) * _int[0]
def refractionIntegral(self, n1, n2, z0, R0=None, useStandardAtmosphere=True, def refractionIntegral(self, n1, n2, zenith, R0=None, useStandardAtmosphere=True,
heightData=None, rhoData=None): heightData=None, rhoData=None):
''' '''
Using data that gives temperature, pressure and density as a Using data that gives temperature, pressure and density as a
@@ -678,7 +684,7 @@ class dispersion(Observatory):
Refractive index at the shortest wavelength of interest Refractive index at the shortest wavelength of interest
n2 : float n2 : float
Refractive index at the longest wavelength of interest Refractive index at the longest wavelength of interest
z0 : float zenith : float
Angle of observation in degrees. Angle of observation in degrees.
zenith = 0 means the observation is directly overhead. zenith = 0 means the observation is directly overhead.
R0 : float (optional) R0 : float (optional)
@@ -711,7 +717,7 @@ class dispersion(Observatory):
_rList = [] _rList = []
z0 = np.deg2rad(z0) zenith = np.deg2rad(zenith)
# Integration of the refraction integral over the atmosphere layers. # Integration of the refraction integral over the atmosphere layers.
for _n in [n1, n2]: for _n in [n1, n2]:
@@ -723,7 +729,7 @@ class dispersion(Observatory):
_n_h = 1 + (_n - 1) / _Dens[0] * _Dens _n_h = 1 + (_n - 1) / _Dens[0] * _Dens
# Calculation of the zenith angle for given height and refractive index, from the refractive invariant # Calculation of the zenith angle for given height and refractive index, from the refractive invariant
_z = np.arcsin( (_n * R0) / (_n_h * _R) * np.sin(z0) ) _z = np.arcsin( (_n * R0) / (_n_h * _R) * np.sin(zenith) )
# Calculation of log space derivative of n and r # Calculation of log space derivative of n and r
_lnn = np.log(_n_h) _lnn = np.log(_n_h)
+10 -8
View File
@@ -68,7 +68,7 @@ def quick_refractive_index(l, conditions='STANDARD', T=288.15, p=101325,
return n return n
def quick_refraction(l, z, conditions='STANDARD', T=288.15, p=101325, def quick_refraction(l, zenith, conditions='STANDARD', T=288.15, p=101325,
H=0.0, xc=450, lat=0, h=0): H=0.0, xc=450, lat=0, h=0):
''' '''
Function to quickly calculate the refraction Function to quickly calculate the refraction
@@ -79,8 +79,9 @@ def quick_refraction(l, z, conditions='STANDARD', T=288.15, p=101325,
---------- ----------
l : float l : float
Wavelength in microns Wavelength in microns
z : float zenith : float
Zenith angle of the observation Angle of observation in degrees.
zenith = 0 means the observation is directly overhead.
conditions : string conditions : string
'STANDARD' or 'CERRO_ARMAZONES', refers 'STANDARD' or 'CERRO_ARMAZONES', refers
to the standard atmospheric conditions. to the standard atmospheric conditions.
@@ -132,10 +133,10 @@ def quick_refraction(l, z, conditions='STANDARD', T=288.15, p=101325,
# Initializing refraction model and setting the reduced height # Initializing refraction model and setting the reduced height
ref = refraction(lat, h) ref = refraction(lat, h)
ref.setReducedHeight(p, rho) ref.setReducedHeight(p, rho)
return ref.cassini(n, z) return ref.cassini(n, zenith)
def quick_dispersion(l1, l2, z, conditions='STANDARD', T=288.15, def quick_dispersion(l1, l2, zenith, conditions='STANDARD', T=288.15,
p=101325, H=0.0, xc=450, lat=0, h=0): p=101325, H=0.0, xc=450, lat=0, h=0):
''' '''
Function to quickly calculate the dispersion Function to quickly calculate the dispersion
@@ -148,8 +149,9 @@ def quick_dispersion(l1, l2, z, conditions='STANDARD', T=288.15,
Shortest wavelength of interest in micron. Shortest wavelength of interest in micron.
l2 : float l2 : float
Longest wavelength of interest in micron. Longest wavelength of interest in micron.
z : float zenith : float
Zenith angle of the observation Angle of observation in degrees.
zenith = 0 means the observation is directly overhead.
conditions : string conditions : string
'STANDARD' or 'CERRO_ARMAZONES', refers 'STANDARD' or 'CERRO_ARMAZONES', refers
to the standard atmospheric conditions. to the standard atmospheric conditions.
@@ -202,4 +204,4 @@ def quick_dispersion(l1, l2, z, conditions='STANDARD', T=288.15,
# Initializing refraction model and setting the reduced height # Initializing refraction model and setting the reduced height
disp = dispersion(lat, h) disp = dispersion(lat, h)
disp.setReducedHeight(p, rho) disp.setReducedHeight(p, rho)
return disp.cassini(n1, n2, z) return disp.cassini(n1, n2, zenith)
+48 -42
View File
@@ -38,39 +38,45 @@ class refraction(Observatory):
Methods Methods
------- -------
setReducedHeight(p, rho)
Sets the reduced atmospheric height.
planeParallel(n1, n2, zenith)
Returns the atmospheric refraction assuming a plane parallel
atmosphere
cassini(n1, n2, zenith, reduced_height=None) cassini(n1, n2, zenith, reduced_height=None)
Returns the atmospheric refraction asusming Cassini's homegeneous Returns the atmospheric refraction assuming Cassini's homegeneous
atmosphere model atmosphere model.
tan5(n1, n2, zenith, reduced_height=None)
Returns the atmospheric refraction following Oriani's theorem,
including a fifth order term in the expansion.
oriani(n1, n2, zenith, reduced_height=None)
Returns the atmospheric refraction following the classic version
of Oriani's theorem.
corbard(n1, n2, zenith, reduced_height=None)
Returns the atmospheric refraction following the method described
in Corbard et al., 2019.
refractionIntegral(n1, n2, z0, R0=None, useStandardAtmosphere=True, heightData=None, rhoData=None)
Returns the atmospheric refraction following the refraction integral.
psi(x)
Submethod for corbard()
set_rc()
Sets the local radius of curvature of the Earth at the observer.
set_H(p, rho)
Sets the reduced height for the conditions at the observer, assuming
an adiabatic atmosphere.
H_isotherm(T)
Sets the reduced height for the conditions at the observer, assuming
an isothermal atmosphere.
cassiniError(z, l1, l2, T, p, RH, xc, dl1=0, dl2=0, dT=0.2, dP=20, cassiniError(z, l1, l2, T, p, RH, xc, dl1=0, dl2=0, dT=0.2, dP=20,
dRH=0.02, dCO2=20, dz=0, lat=None, h=None) dRH=0.02, dCO2=20, dz=0, lat=None, h=None)
Returns the uncertainty in the atmospheric refraction, assuming Returns the uncertainty in the atmospheric refraction, assuming
Cassini's homegeneous atmosphere model and the given parameters. Cassini's homegeneous atmosphere model and the given parameters.
corbard(n1, n2, zenith, reduced_height=None)
Returns the atmospheric refraction following the method described
in Corbard et al., 2019.
gammaCoefficients(n1, reduced_height=None)
Helper function for matharExponential(), that calculates the gamma
coefficients.
H_isotherm(T)
Sets the reduced height for the conditions at the observer, assuming
an isothermal atmosphere.
matharExponential(n1, zenith, reduced_height=None)
Returns the atmospheric refraction assuming Mathar's barometric
exponential model.
oriani(n1, n2, zenith, reduced_height=None)
Returns the atmospheric refraction following the classic version
of Oriani's theorem.
planeParallel(n1, n2, zenith)
Returns the atmospheric refraction assuming a plane parallel
atmosphere.
psi(x)
Submethod for corbard().
refractionIntegral(n1, n2, zenith, R0=None, useStandardAtmosphere=True, heightData=None, rhoData=None)
Returns the atmospheric refraction following the refraction integral.
setReducedHeight(p, rho)
Sets the reduced atmospheric height.
set_H(p, rho)
Sets the reduced height for the conditions at the observer, assuming
an adiabatic atmosphere.
set_rc()
Sets the local radius of curvature of the Earth at the observer.
tan5(n1, n2, zenith, reduced_height=None)
Returns the atmospheric refraction following Oriani's theorem,
including a fifth order term in the expansion.
Other Observatory() methods Other Observatory() methods
''' '''
def __init__(self, lat, h): def __init__(self, lat, h):
@@ -141,13 +147,13 @@ class refraction(Observatory):
else: else:
_H = self.H _H = self.H
_zenith = np.deg2rad(zenith) _zenith = np.deg2rad(zenith)
_dz = np.deg2rad(dz) _dz = np.deg2rad(dz)
_R = self.rc _R = self.rc
_dRdn = (_R * np.sin(_zenith)) / ((_R + _H) * np.sqrt(1 - ((n**2 * _R**2 * np.sin(_zenith)**2)/(_R + _H)**2))) _dRdn = (_R * np.sin(_zenith)) / ((_R + _H) * np.sqrt(1 - ((n**2 * _R**2 * np.sin(_zenith)**2)/(_R + _H)**2)))
_dRdz = (_R * np.cos(_zenith)) / (_R + _H) * ( n / np.sqrt(1-(n**2 * _R**2 * np.sin(_zenith)**2)/(_R + _H)**2) - 1 / np.sqrt(1-(_R**2 * np.sin(_zenith)**2)/(_R + _H)**2) ) _dRdz = (_R * np.cos(_zenith)) / (_R + _H) * ( n / np.sqrt(1-(n**2 * _R**2 * np.sin(_zenith)**2)/(_R + _H)**2) - 1 / np.sqrt(1-(_R**2 * np.sin(_zenith)**2)/(_R + _H)**2) )
_dR = np.sqrt( (_dRdn * dn)**2 + (_dRdz * _dz)**2) _dR = np.sqrt( (_dRdn * dn)**2 + (_dRdz * _dz)**2)
return np.degrees(_dR) return np.degrees(_dR)
@@ -185,14 +191,14 @@ class refraction(Observatory):
return np.degrees(_R) return np.degrees(_R)
def gammaCoefficients(self, n0, reduced_height=None): def gammaCoefficients(self, n1, reduced_height=None):
''' '''
Submethod for matharExponential(). Calculates the gamma Submethod for matharExponential(). Calculates the gamma
coefficients. coefficients.
Parameters Parameters
---------- ----------
n0 : float n1 : float
Refractive index at the wavelength of interest at the observer Refractive index at the wavelength of interest at the observer
reduced_height : float (optional) reduced_height : float (optional)
Reduced height of the atmosphere. Default value is calculated Reduced height of the atmosphere. Default value is calculated
@@ -210,7 +216,7 @@ class refraction(Observatory):
else: else:
H = self.H H = self.H
_chi0 = n0**2 - 1 _chi0 = n1**2 - 1
_Khat = H / self.rc _Khat = H / self.rc
_g1 = (1 - 5/24 * _Khat * _chi0**2 - 3/4 * _chi0 - 3/8 * _Khat**2 * _chi0 \ _g1 = (1 - 5/24 * _Khat * _chi0**2 - 3/4 * _chi0 - 3/8 * _Khat**2 * _chi0 \
@@ -249,7 +255,7 @@ class refraction(Observatory):
* _chi0**2 - 180 * _Khat**3 * _chi0 - 9/5 * _Khat * _chi0**4) * 35/128 * _chi0**2 - 180 * _Khat**3 * _chi0 - 9/5 * _Khat * _chi0**4) * 35/128
g = np.array([_g1, _g3, _g5, _g7, _g9]) g = np.array([_g1, _g3, _g5, _g7, _g9])
g*= n0*_chi0/2 g*= n1*_chi0/2
return g return g
@@ -408,7 +414,7 @@ class refraction(Observatory):
return np.exp(x**2) * _int[0] return np.exp(x**2) * _int[0]
def refractionIntegral(self, n1, z0, R0=None, useStandardAtmosphere=True, def refractionIntegral(self, n1, zenith, R0=None, useStandardAtmosphere=True,
heightData=None, rhoData=None): heightData=None, rhoData=None):
''' '''
Using data that gives temperature, pressure and density as a Using data that gives temperature, pressure and density as a
@@ -425,7 +431,7 @@ class refraction(Observatory):
---------- ----------
n1 : float n1 : float
Refractive index at the wavelength of interest Refractive index at the wavelength of interest
z0 : float zenith : float
Angle of observation in degrees. Angle of observation in degrees.
zenith = 0 means the observation is directly overhead. zenith = 0 means the observation is directly overhead.
R0 : float (optional) R0 : float (optional)
@@ -457,7 +463,7 @@ class refraction(Observatory):
_Dens = rhoData _Dens = rhoData
_h = heightData _h = heightData
z0 = np.deg2rad(z0) zenith = np.deg2rad(zenith)
_Dens = np.asarray(_Dens) _Dens = np.asarray(_Dens)
_h = np.asarray(_h) _h = np.asarray(_h)
_R = R0 + _h * 1000 _R = R0 + _h * 1000
@@ -466,7 +472,7 @@ class refraction(Observatory):
_n_h = 1 + (n0 - 1) / _Dens[0] * _Dens _n_h = 1 + (n0 - 1) / _Dens[0] * _Dens
# Calculation of the zenith angle for given height and refractive index, from the refractive invariant # Calculation of the zenith angle for given height and refractive index, from the refractive invariant
_z = np.arcsin( (n0 * R0) / (_n_h * _R) * np.sin(z0) ) _z = np.arcsin( (n0 * R0) / (_n_h * _R) * np.sin(zenith) )
# Calculation of log space derivative of n and r # Calculation of log space derivative of n and r
_lnn = np.log(_n_h) _lnn = np.log(_n_h)
+2 -2
View File
@@ -21,14 +21,14 @@ def setup_package():
# write_version_py() # write_version_py()
setup(name='AstroAtmosphere', setup(name='AstroAtmosphere',
version='1.0', version='1.1',
description='Collection of equations for refractive index, refraction and dispersion calculations of atmospheric air.', description='Collection of equations for refractive index, refraction and dispersion calculations of atmospheric air.',
long_description=__readme__, long_description=__readme__,
long_description_content_type='text/markdown', long_description_content_type='text/markdown',
author='Joost van den Born', author='Joost van den Born',
author_email='born@astron.nl', author_email='born@astron.nl',
url='https://gitlab.astro-wise.org/micado/atmosphericmodel', url='https://gitlab.astro-wise.org/micado/atmosphericmodel',
download_url='https://gitlab.astro-wise.org/micado/atmosphericmodel/-/archive/v1/atmosphericmodel-v1.tar.gz', download_url='https://gitlab.astro-wise.org/micado/atmosphericmodel/-/archive/v11/atmosphericmodel-v1.1.tar.gz',
license='GNU General Public License v3', license='GNU General Public License v3',
data_files = [('',['LICENSE.txt'])], data_files = [('',['LICENSE.txt'])],
package_dir={'AstroAtmosphere': 'AstroAtmosphere'}, package_dir={'AstroAtmosphere': 'AstroAtmosphere'},