Skip to content

Commit

Permalink
Merge pull request #268 from AdamTheisen/master
Browse files Browse the repository at this point in the history
ENH: Updating to work with both astral versions for conda forge
  • Loading branch information
AdamTheisen authored Nov 14, 2020
2 parents 49833f5 + 42769a9 commit 635e48e
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
18 changes: 15 additions & 3 deletions act/retrievals/radiation.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,14 @@

import numpy as np
import xarray as xr
import astral
from scipy.constants import Stefan_Boltzmann
from act.utils.datetime_utils import datetime64_to_datetime
import astral
try:
from astral import Observer
ASTRAL = True
except ImportError:
ASTRAL = False


def calculate_dsh_from_dsdh_sdn(obj, dsdh='down_short_diffuse_hemisp',
Expand Down Expand Up @@ -47,11 +52,18 @@ def calculate_dsh_from_dsdh_sdn(obj, dsdh='down_short_diffuse_hemisp',

# Calculating Derived Down Short Hemisp

obs = astral.Observer(latitude=obj[lat], longitude=obj[lon])
if ASTRAL:
obs = Observer(latitude=obj[lat], longitude=obj[lon])
else:
a = astral.Astral()

tt = datetime64_to_datetime(obj['time'].values)
solar_zenith = np.full(len(tt), np.nan)
for ii, tm in enumerate(tt):
solar_zenith[ii] = np.cos(np.radians(astral.sun.zenith(obs, tt[ii])))
if ASTRAL:
solar_zenith[ii] = np.cos(np.radians(astral.sun.zenith(obs, tt[ii])))
else:
solar_zenith[ii] = np.cos(np.radians(a.solar_zenith(tt[ii], obj[lat], obj[lon])))

dsh = (obj[dsdh].values + (solar_zenith * obj[sdn].values))

Expand Down
4 changes: 2 additions & 2 deletions act/tests/test_retrievals.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,12 @@ def test_calculate_sirs_variable():
met_object = act.io.armfiles.read_netcdf(act.tests.sample_files.EXAMPLE_MET1)

obj = act.retrievals.radiation.calculate_dsh_from_dsdh_sdn(sirs_object)
assert np.ceil(np.nansum(obj['derived_down_short_hemisp'].values)) == 61159
assert 61159 <= np.ceil(np.nansum(obj['derived_down_short_hemisp'].values)) <= 61160

obj = act.retrievals.radiation.calculate_irradiance_stats(obj, variable='derived_down_short_hemisp',
variable2='down_short_hemisp',
threshold=60)
assert np.ceil(np.nansum(obj['diff_derived_down_short_hemisp'].values)) == 1336
assert 1336 <= np.ceil(np.nansum(obj['diff_derived_down_short_hemisp'].values)) <= 1337
assert np.ceil(np.nansum(obj['ratio_derived_down_short_hemisp'].values)) == 401

obj = act.retrievals.radiation.calculate_net_radiation(obj, smooth=30)
Expand Down

0 comments on commit 635e48e

Please sign in to comment.