Skip to content
Snippets Groups Projects
Commit dc6da0b4 authored by tomrink's avatar tomrink
Browse files

snapshot...

parent f7b06653
Branches
No related tags found
No related merge requests found
...@@ -14,7 +14,7 @@ from util.gfs_reader import * ...@@ -14,7 +14,7 @@ from util.gfs_reader import *
from util.geos_nav import GEOSNavigation from util.geos_nav import GEOSNavigation
from aeolus.datasource import GFSfiles from aeolus.datasource import GFSfiles
import cartopy.crs as ccrs import cartopy.crs as ccrs
from metpy.calc import shearing_deformation, static_stability from metpy.calc import shearing_deformation, static_stability, wind_speed, first_derivative
from metpy.units import units from metpy.units import units
gfs_files = GFSfiles('/Users/tomrink/data/contrail/gfs/') gfs_files = GFSfiles('/Users/tomrink/data/contrail/gfs/')
...@@ -68,9 +68,8 @@ def extract(mask_image, image_ts, clavrx_path): ...@@ -68,9 +68,8 @@ def extract(mask_image, image_ts, clavrx_path):
contrail_lons = contrail_lons[keep] contrail_lons = contrail_lons[keep]
contrail_lats = contrail_lats[keep] contrail_lats = contrail_lats[keep]
bins = np.arange(100, 1000, 100)
# Indexes of contrail_press for individual bins # Indexes of contrail_press for individual bins
bins = np.arange(100, 1000, 100)
binned_indexes = np.digitize(contrail_press, bins) binned_indexes = np.digitize(contrail_press, bins)
# Store the indexes in a dictionary where the key is the bin number and value is the list of indexes # Store the indexes in a dictionary where the key is the bin number and value is the list of indexes
...@@ -78,19 +77,19 @@ def extract(mask_image, image_ts, clavrx_path): ...@@ -78,19 +77,19 @@ def extract(mask_image, image_ts, clavrx_path):
for bin_num in np.unique(binned_indexes): for bin_num in np.unique(binned_indexes):
bins_dict[bin_num] = np.where(binned_indexes == bin_num)[0] bins_dict[bin_num] = np.where(binned_indexes == bin_num)[0]
# MetPy for shearing deformation, static stability, vertical shear?, others... # # This does point by point computation of model parameters for each contrail pixel
# This does point by point computation of model parameters for each contrail pixel # voxel_dict = {key: [] for key in bins_dict.keys()}
voxel_dict = {key: [] for key in bins_dict.keys()} # for key in bins_dict.keys():
for key in bins_dict.keys(): # print('working on pressure level: ', bins[key])
print('working on pressure level: ', bins[key]) # for c_idx in bins_dict[key]:
for c_idx in bins_dict[key]: # lon = contrail_lons[c_idx]
lon = contrail_lons[c_idx] # lat = contrail_lats[c_idx]
lat = contrail_lats[c_idx] # press = contrail_press[c_idx]
press = contrail_press[c_idx] #
# wind_3d = get_voxel_s(xr_dataset, ['u-wind','v-wind'], lon, lat, press)
wind_3d = get_voxel_s(xr_dataset, ['u-wind','v-wind'], lon, lat, press) # if wind_3d is not None:
if wind_3d is not None: # voxel_dict[key].append(wind_3d)
voxel_dict[key].append(wind_3d) # ------------------------------------------------------------------------------------
# This section will compute model parameters in bulk for the region then pull for each contrail pixel # This section will compute model parameters in bulk for the region then pull for each contrail pixel
lon_range = [np.min(contrail_lons), np.max(contrail_lons)] lon_range = [np.min(contrail_lons), np.max(contrail_lons)]
...@@ -99,6 +98,7 @@ def extract(mask_image, image_ts, clavrx_path): ...@@ -99,6 +98,7 @@ def extract(mask_image, image_ts, clavrx_path):
uwind_3d = get_volume(xr_dataset, 'u-wind', 'm s-1', lon_range=[lon_range[0], lon_range[1]], lat_range=[lat_range[0], lat_range[1]]) uwind_3d = get_volume(xr_dataset, 'u-wind', 'm s-1', lon_range=[lon_range[0], lon_range[1]], lat_range=[lat_range[0], lat_range[1]])
vwind_3d = get_volume(xr_dataset, 'v-wind', 'm s-1', lon_range=[lon_range[0], lon_range[1]], lat_range=[lat_range[0], lat_range[1]]) vwind_3d = get_volume(xr_dataset, 'v-wind', 'm s-1', lon_range=[lon_range[0], lon_range[1]], lat_range=[lat_range[0], lat_range[1]])
temp_3d = get_volume(xr_dataset, 'temperature', 'degK', lon_range=[lon_range[0], lon_range[1]], lat_range=[lat_range[0], lat_range[1]]) temp_3d = get_volume(xr_dataset, 'temperature', 'degK', lon_range=[lon_range[0], lon_range[1]], lat_range=[lat_range[0], lat_range[1]])
rh_3d = get_volume(xr_dataset, 'rh', '%', lon_range=[lon_range[0], lon_range[1]], lat_range=[lat_range[0], lat_range[1]])
uwind_3d = uwind_3d.transpose('Pressure', 'Latitude', 'Longitude') uwind_3d = uwind_3d.transpose('Pressure', 'Latitude', 'Longitude')
vwind_3d = vwind_3d.transpose('Pressure', 'Latitude', 'Longitude') vwind_3d = vwind_3d.transpose('Pressure', 'Latitude', 'Longitude')
...@@ -108,8 +108,10 @@ def extract(mask_image, image_ts, clavrx_path): ...@@ -108,8 +108,10 @@ def extract(mask_image, image_ts, clavrx_path):
# vwind_2d = get_horz_layer(xr_dataset, 'v-wind', 500.0, lon_range=[lon_range[0], lon_range[1]], lat_range=[lat_range[0], lat_range[1]]) # vwind_2d = get_horz_layer(xr_dataset, 'v-wind', 500.0, lon_range=[lon_range[0], lon_range[1]], lat_range=[lat_range[0], lat_range[1]])
# shear_2d = shearing_deformation(uwind_2d, vwind_2d) # shear_2d = shearing_deformation(uwind_2d, vwind_2d)
shear_3d = shearing_deformation(uwind_3d, vwind_3d) horz_shear_3d = shearing_deformation(uwind_3d, vwind_3d)
static_3d = static_stability(temp_3d.coords['Pressure'] * units.hPa, temp_3d) static_3d = static_stability(temp_3d.coords['Pressure'] * units.hPa, temp_3d)
horz_wind_spd_3d = wind_speed(uwind_3d, vwind_3d)
vert_shear_3d = first_derivative(horz_wind_spd_3d, axis=0, x=temp_3d.coords['Pressure'] * units.hPa)
xr_dataset.close() xr_dataset.close()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment