diff --git a/tools/RAiDER/models/gmao.py b/tools/RAiDER/models/gmao.py index 67000cd87..8a286c1a5 100755 --- a/tools/RAiDER/models/gmao.py +++ b/tools/RAiDER/models/gmao.py @@ -11,6 +11,9 @@ from RAiDER.models.weatherModel import WeatherModel from RAiDER.logger import * from RAiDER.utilFcns import writeWeatherVars2NETCDF4, roundTime, requests_retry_session +from RAiDER.models.model_levels import ( + LEVELS_137_HEIGHTS, +) class GMAO(WeatherModel): @@ -41,6 +44,8 @@ def __init__(self): self._x_res = 0.3125 self._y_res = 0.25 + self._zlevels = np.flipud(LEVELS_137_HEIGHTS) + self._Name = 'GMAO' self.files = None self._bounds = None diff --git a/tools/RAiDER/models/hrrr.py b/tools/RAiDER/models/hrrr.py index 229b859ba..14aac16bd 100644 --- a/tools/RAiDER/models/hrrr.py +++ b/tools/RAiDER/models/hrrr.py @@ -7,6 +7,9 @@ from RAiDER.logger import * from RAiDER.models.weatherModel import WeatherModel +from RAiDER.models.model_levels import ( + LEVELS_137_HEIGHTS, +) class HRRR(WeatherModel): @@ -40,6 +43,7 @@ def __init__(self): self._Npl = 0 self.files = None self._bounds = None + self._zlevels = np.flipud(LEVELS_137_HEIGHTS) # Projection # See https://github.com/blaylockbk/pyBKB_v2/blob/master/demos/HRRR_earthRelative_vs_gridRelative_winds.ipynb and code lower down @@ -56,6 +60,7 @@ def __init__(self): p1 = CRS('+proj=lcc +lat_1={lat1} +lat_2={lat2} +lat_0={lat0} +lon_0={lon0} +x_0={x0} +y_0={y0} +a={a} +b={a} +units=m +no_defs'.format(lat1=lat1, lat2=lat2, lat0=lat0, lon0=lon0, x0=x0, y0=y0, a=earth_radius)) self._proj = p1 + def _fetch(self, lats, lons, time, out, Nextra=2): ''' Fetch weather model data from HRRR diff --git a/tools/RAiDER/models/merra2.py b/tools/RAiDER/models/merra2.py index 3ee69be61..dffe0ab69 100755 --- a/tools/RAiDER/models/merra2.py +++ b/tools/RAiDER/models/merra2.py @@ -10,6 +10,9 @@ from RAiDER.models.weatherModel import WeatherModel from RAiDER.logger import * from RAiDER.utilFcns import writeWeatherVars2NETCDF4 +from RAiDER.models.model_levels import ( + LEVELS_137_HEIGHTS, +) def Model(): @@ -54,6 +57,7 @@ def __init__(self): self._Name = 'MERRA2' self.files = None self._bounds = None + self._zlevels = np.flipud(LEVELS_137_HEIGHTS) # Projection self._proj = CRS.from_epsg(4326) diff --git a/tools/RAiDER/models/ncmr.py b/tools/RAiDER/models/ncmr.py index e82250491..c4a9977c3 100755 --- a/tools/RAiDER/models/ncmr.py +++ b/tools/RAiDER/models/ncmr.py @@ -18,6 +18,9 @@ read_NCMR_loginInfo, show_progress ) +from RAiDER.models.model_levels import ( + LEVELS_137_HEIGHTS, +) class NCMR(WeatherModel): @@ -52,6 +55,8 @@ def __init__(self): self._x_res = .17578125 # same as longitude self._y_res = .11718750 # same as latitude + self._zlevels = np.flipud(LEVELS_137_HEIGHTS) + self._bounds = None # Projection diff --git a/tools/RAiDER/models/template.py b/tools/RAiDER/models/template.py index 9ab91c8a8..c1e2f165d 100644 --- a/tools/RAiDER/models/template.py +++ b/tools/RAiDER/models/template.py @@ -1,4 +1,7 @@ from RAiDER.models.weatherModel import WeatherModel +from RAiDER.models.model_levels import ( + LEVELS_137_HEIGHTS, +) class customModelReader(WeatherModel): @@ -29,6 +32,9 @@ def __init__(self): self._y_res = 3. # y-direction grid spacing in the weather model native projection # (if the projection is in lat/lon, it is the same as "self._lat_res") + # zlevels specify fixed heights at which to interpolate the weather model variables + self._zlevels = np.flipud(LEVELS_137_HEIGHTS) + self._Name = 'ABCD' # name of the custom weather model (better to be capitalized) # Projections in RAiDER are defined using pyproj (python wrapper around Proj)