2020-03-01

2020-03-01#

  • The below notebook was adjusted from COMBLE-MIP.

  • It compares selected simulations against observational targets that were collected from satellite and ground-based retrievals.

  • In case of questions or concerns, please notify Ann Fridlind and Florian Tornow.

  • Please check out our description of this case.

%run functions_plotting.py 
 
## select simulations to plot
sim_keyword = '20200301'  
## load ERA5 fields
#era5_1d, era5_2d = load_era5(PATH='../data_files/')
era5_1d = load_era5csv(PATH='../data_files/')

## load radiosondes
#rs_dat = load_rs(t_filter = 7.)

## load ACTIVATE data
activate_insitu_dat = load_activate_insitu(case=sim_keyword)
activate_remote_dat = load_activate_remote(case=sim_keyword)
activate_dropsonde_dat = load_activate_dropsonde(case=sim_keyword)

## load MAC-LWP
maclwp_dat = load_maclwp(case=sim_keyword,t_filter = 0.) 

## load MODIS, VIIRS, and SENTINEL retrievals
modis_dat = load_modis(case=sim_keyword,t_filter = 0.,sza_filter = 65.)
viirs_dat = load_viirs(case=sim_keyword,t_filter = 0.,sza_filter = 65.)
goes_dat  = load_goes(case=sim_keyword,t_filter = 0.,sza_filter = 65.)

## load CERES retrievals
ceres_dat = load_ceres(case=sim_keyword,t_filter = 0.)

## load CALIPSO retrievals (note the increased time window)
#calipso_dat = load_calipso(case=sim_keyword,t_filter = 3.)
## load all simulations located in subfolders of the given directory
var_vec_1d = ['z0','z0h','z0q','hfss','hfls','ts'] # variables with ERA5 (longer time axis)
var_vec_2d = ['theta','qv','ua','va']
df_col_1d_les,df_col_2d_les = load_sims('../output_les/',var_vec_1d,var_vec_2d,keyword=sim_keyword,subfolder='s',ignore='2D')
df_col_1d_scm,df_col_2d_scm = load_sims('../output_scm/',var_vec_1d,var_vec_2d,keyword=sim_keyword,subfolder='s',ignore='2D')
Loading variables: f(time)
../output_les/dharma/activate_20200301_progNa.nc
../output_les/dharma/activate_20200301_diagNa.nc
../output_les/dharma/activate_20200301_diagNa_noice.nc
../output_les/dharma/activate_20200301_noice.nc
Loading variables: f(time,height)
../output_les/dharma/activate_20200301_progNa.nc
../output_les/dharma/activate_20200301_diagNa.nc
../output_les/dharma/activate_20200301_diagNa_noice.nc
../output_les/dharma/activate_20200301_noice.nc
Loading variables: f(time)
../output_scm/modele/activate_20200301_diagNa.nc
../output_scm/modele/activate_20200301_diagNa_noice.nc
Loading variables: f(time,height)
../output_scm/modele/activate_20200301_diagNa.nc
../output_scm/modele/activate_20200301_diagNa_noice.nc
%run functions_plotting.py 

## plot variables that have only time dependence
#plot_1d(pd.concat([df_col_1d,era5_1d,carra_dat,srfflux_dat]),var_vec_1d)dependence
plot_1d(pd.concat([df_col_1d_les,df_col_1d_scm,era5_1d]),var_vec_1d)
../_images/c79efbfccccc37307961094c002a528084d0e568d6c80460f20ab7740aee2f5a.png
%run functions_plotting.py 

## load all simulations located in subfolders of the given directory
var_vec_1d = ['lwpr','lwpc','iwp','od','cfc','rlut','clt','nqc'] # variables without ERA5 (shorter time axis)
var_vec_2d_les = ['theta','qv','qlc','qlr','ta','ua','va','qic','qis','qig','ua','va','ta','prf']
var_vec_2d_scm = ['theta','qv','qlc','qlr','ta','ua','va','qicc','qics','qipc','qips','ua','va','ta','prf','fc']
df_col_1d_les,df_col_2d_les = load_sims('../output_les/',var_vec_1d,var_vec_2d_les,keyword=sim_keyword,diag_zi_ctt=True,ignore='2D')
df_col_1d_scm,df_col_2d_scm = load_sims('../output_scm/',var_vec_1d,var_vec_2d_scm,keyword=sim_keyword,diag_zi_ctt=True,ignore='2D')
Loading variables: f(time)
../output_les/dharma/activate_20200301_progNa.nc
cfc not found in ../output_les/dharma/activate_20200301_progNa.nc
../output_les/dharma/activate_20200301_diagNa.nc
cfc not found in ../output_les/dharma/activate_20200301_diagNa.nc
../output_les/dharma/activate_20200301_diagNa_noice.nc
iwp shows NAN values in ../output_les/dharma/activate_20200301_diagNa_noice.nc
cfc not found in ../output_les/dharma/activate_20200301_diagNa_noice.nc
../output_les/dharma/activate_20200301_noice.nc
iwp shows NAN values in ../output_les/dharma/activate_20200301_noice.nc
cfc not found in ../output_les/dharma/activate_20200301_noice.nc
Loading variables: f(time,height)
../output_les/dharma/activate_20200301_progNa.nc
../output_les/dharma/activate_20200301_diagNa.nc
../output_les/dharma/activate_20200301_diagNa_noice.nc
qic shows NAN values in ../output_les/dharma/activate_20200301_diagNa_noice.nc
qis shows NAN values in ../output_les/dharma/activate_20200301_diagNa_noice.nc
qig shows NAN values in ../output_les/dharma/activate_20200301_diagNa_noice.nc
../output_les/dharma/activate_20200301_noice.nc
qic shows NAN values in ../output_les/dharma/activate_20200301_noice.nc
qis shows NAN values in ../output_les/dharma/activate_20200301_noice.nc
qig shows NAN values in ../output_les/dharma/activate_20200301_noice.nc
computing inversion height, cloud-top height, and cloud-top temperature
using liquid(-ice) potential temperature
dharma/activate_20200301_diagNa.nc
dharma/activate_20200301_diagNa_noice.nc
dharma/activate_20200301_noice.nc
dharma/activate_20200301_progNa.nc
Loading variables: f(time)
../output_scm/modele/activate_20200301_diagNa.nc
../output_scm/modele/activate_20200301_diagNa_noice.nc
iwp shows NAN values in ../output_scm/modele/activate_20200301_diagNa_noice.nc
Loading variables: f(time,height)
../output_scm/modele/activate_20200301_diagNa.nc
../output_scm/modele/activate_20200301_diagNa_noice.nc
qicc shows NAN values in ../output_scm/modele/activate_20200301_diagNa_noice.nc
qics shows NAN values in ../output_scm/modele/activate_20200301_diagNa_noice.nc
qipc shows NAN values in ../output_scm/modele/activate_20200301_diagNa_noice.nc
qips shows NAN values in ../output_scm/modele/activate_20200301_diagNa_noice.nc
computing inversion height, cloud-top height, and cloud-top temperature
modele/activate_20200301_diagNa.nc
modele/activate_20200301_diagNa_noice.nc
%run functions_plotting.py 
## plot variables that have only time dependence
#plot_1d(pd.concat([df_col_1d,maclwp_dat,modis_dat,viirs_dat,sentinel_dat,kazrkollias_dat,kazrclough_dat,calipso_dat,radflux_dat]),['zi','od','lwp','iwp','ctt'])

#plot_1d(pd.concat([df_col_1d,maclwp_dat,kazrkollias_dat,kazrclough_dat,calipso_dat,radflux_dat]),['cth','od','lwp','iwp','ctt'],longnames=['cloud-top height','cloud optical depth','liquid water path','ice water path','cloud-top temperature'],units=['m','','kg m^-2','kg m^-2','C'])
plot_1d(pd.concat([df_col_1d_les,df_col_1d_scm,ceres_dat,maclwp_dat,modis_dat,viirs_dat,goes_dat,activate_remote_dat,activate_insitu_dat]),['cth','clt','od','nqc','lwp','iwp','ctt','rlut','cfc'],longnames=['cloud-top height','cloud cover','cloud optical depth','cloud droplet number concentration','liquid water path','ice water path','cloud-top temperature','TOA LW upwelling Flux','area fraction of convective hydrometeors'],units=['m','','','cm^-3','kg m^-2','kg m^-2','C','W m^-2',' '])

## plot variables that have only time dependence (for now excluding imager retrievals that are mostly SZA > 70)
#plot_1d(pd.concat([df_col_1d,maclwp_dat,kazrkollias_dat,kazrclough_dat,calipso_dat,gongiwp_dat,radflux_dat]),['od','lwp','iwp']) #'zi','od','lwp','iwp
/gpfsm/dhome/tflorian/LES-SCM/notebooks/functions_plotting.py:1425: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df['lwp'] = df['lwp_bu']
/gpfsm/dhome/tflorian/LES-SCM/notebooks/functions_plotting.py:1426: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df['lwp.25'] = df['lwp_bu.25']
/gpfsm/dhome/tflorian/LES-SCM/notebooks/functions_plotting.py:1427: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df['lwp.75'] = df['lwp_bu.75']
../_images/7cb170531d92ae571fdd2678c938002c41d91aeb7a52d258d5afbbc9df256bf7.png
%run functions_plotting.py

## plot all variables that have time and height dependence
#plot_2d(df_col_2d,var_vec_2d,[0,3,6,9,12,15,18],z_max=6000)
     
## example where ERA5 and radiosonde are included
#plot_2d(pd.concat([df_col_2d,era5_2d,rs_dat,aeri_dat]),var_vec = ['ta','theta','qv','ws','wd'],times=[-1.5,0,4,8,18],z_max=6000)
plot_2d(pd.concat([df_col_2d_les,df_col_2d_scm,activate_dropsonde_dat]),var_vec = ['ta','theta','qv','ws','wd','fc'],times=[4,10,18,24],z_max=5000)
Computing wind speed
Computing wind direction
temporal averaging over 1.0 h interval
../_images/3e083ba1b8806ec3ecaee91b79c1afab00e75fab3660afac2dc7edd4101fcaf6.png
<Figure size 1000x600 with 0 Axes>