Skip to content
Snippets Groups Projects
Select Git revision
  • 4e1a36c69adaf02f7c2bb6700a93d7dff93fbdb4
  • master default protected
  • dev-lkugler
  • teaching-2024
  • old_config_2023-05 protected
  • v2025.2
  • v2024.6
  • v2024.2.20
8 results

link_dart_rttov.py

Blame
  • test_dart-rttov.py 3.66 KiB
    import os, filecmp, shutil
    import numpy as np
    import datetime as dt
    import pandas as pd
    
    from dartwrf.obs import obsseq
    import dartwrf.obs.create_obsseq_in as osq
    import dartwrf.assim_synth_obs as aso
    from dartwrf import wrfout_add_geo
    
    import matplotlib as mpl
    import proplot as plt
    import xarray as xr
    
    n_obs = 22500
    vis = dict(plotname='VIS06',  plotunits='[1]',
            kind='MSG_4_SEVIRI_BDRF', sat_channel=1, n_obs=n_obs, 
            error_generate=0, error_assimilate=0.12,
            cov_loc_radius_km=20)
    wv62 = dict(plotname='WV62',  plotunits='[K]',
                kind='MSG_4_SEVIRI_TB', sat_channel=5, n_obs=n_obs, 
                error_generate=0, error_assimilate=False, 
                cov_loc_radius_km=20)
    wv73 = dict(plotname='WV73',  plotunits='[K]',
                kind='MSG_4_SEVIRI_TB', sat_channel=6, n_obs=n_obs, 
                error_generate=0, error_assimilate=False, 
                cov_loc_radius_km=20)
    
    vsc = True if 'jet' not in os.uname().nodename else False
    if vsc:
        datadir = '/gpfs/data/fs71386/lkugler/sim_archive/'
        img_dir = '/gpfs/data/fs71386/lkugler/analysis/'
    else:
        datadir = '/jetfs/home/lkugler/data/sim_archive/'
        img_dir = '/jetfs/home/lkugler/analysis_plots/'
    
    dart_rundir = datadir+'/../run_DART/test_jet'
    
    def test_rttov():
    
        times = pd.date_range(start=dt.datetime(2008, 7, 30, 13,30),
                                  end=dt.datetime(2008, 7, 30, 14,30),
                                  freq=dt.timedelta(minutes=30))
    
        case = 'exp_v1.19_P3_wbub7_nat'
    
    
        for obscfg in [wv73, vis, wv62]:
    
            for time in times:
    
                fname = img_dir+'/'+case+'/dart-rttov-compare_'+obscfg['plotname']+time.strftime('_%H:%M')+'.png'
    
                ds = xr.open_dataset(datadir+'/'+case+'/2008-07-30_12:00/1/'+time.strftime('RT_wrfout_d01_2008-07-30_%H:%M:00.nc'))
                if obscfg['plotname'] not in ds.data_vars:
                    raise KeyError(obscfg['plotname']+' not in dataset')
                da = ds[obscfg['plotname']].squeeze()
    
    
                shutil.copy(datadir+'/'+case+'/2008-07-30_12:00/1/'+time.strftime('wrfout_d01_2008-07-30_%H:%M:00'), 
                            dart_rundir + "/wrfout_d01")
    
                wrfout_add_geo.run(datadir+ "/geo_em.d01.nc", dart_rundir + "/wrfout_d01")
               
    
                osq.create_obsseqin_alltypes(time, [obscfg])
                aso.set_DART_nml()
                aso.run_perfect_model_obs(nproc=1) 
    
    
                obs = obsseq.ObsSeq(dart_rundir+'/obs_seq.out')
                obs_map = obs.df.truth.values.reshape(150,150)
    
    
                fig, ax = plt.subplots(ncols=2)
    
                if obscfg['plotname'] == 'VIS06':
                    norm = mpl.colors.Normalize(vmin=0, vmax=1)
                    levels = plt.arange(0, 1, .05)
                else:
                    norm = mpl.colors.Normalize(vmin=210, vmax=260)
                    levels = plt.arange(200, 260, 5)
    
                ax[0].pcolormesh(obs_map, norm=norm, levels=levels)
                ax[0].set_title('DART-RTTOV')
                m1 = ax[1].pcolormesh(da.values[24:175,24:175], norm=norm, levels=levels) 
                ax[1].set_title('py-RTTOV')
                fig.colorbar(m1, loc='r')
                fig.suptitle(time.strftime('%H:%M'))
                
                fig.savefig(fname)
                print(fname)
    
    
    
                fig, ax = plt.subplots()
                diff =  da.values[25:175,25:175] - obs_map
    
                ax[0].pcolormesh(diff, cmap='RdBu_r')
                ax[0].set_title('pyRTTOV - DART-RTTOV')
                fig.colorbar(m1, loc='r')
                fig.suptitle(time.strftime('%H:%M'))
                
                fname = img_dir+'/'+case+'/dart-rttov-compare_'+obscfg['plotname']+time.strftime('_%H:%M')+'-diff.png'
                fig.savefig(fname)
                print(fname)
    
    
    
    
    if __name__ == '__main__':
        test_rttov()
        pass