Skip to content
Snippets Groups Projects
Commit 68fc2efe authored by lkugler's avatar lkugler
Browse files

update

parent ad19784d
No related branches found
No related tags found
No related merge requests found
...@@ -9,7 +9,7 @@ class ExperimentConfiguration(object): ...@@ -9,7 +9,7 @@ class ExperimentConfiguration(object):
exp = ExperimentConfiguration() exp = ExperimentConfiguration()
exp.expname = "exp_v1.17_Pwbub-1_WV_obs20_loc5" exp.expname = "exp_v1.17_P1-1_WV_10z"
exp.model_dx = 2000 exp.model_dx = 2000
exp.n_ens = 40 exp.n_ens = 40
exp.n_nodes = 10 exp.n_nodes = 10
...@@ -17,19 +17,19 @@ exp.n_nodes = 10 ...@@ -17,19 +17,19 @@ exp.n_nodes = 10
# localize vertically, if it has a vertical position # localize vertically, if it has a vertical position
# needs a horizontal scale too, to calculate the vertical normalization # needs a horizontal scale too, to calculate the vertical normalization
# since you can not specify different vertical localizations for diff. variables # since you can not specify different vertical localizations for diff. variables
exp.cov_loc_vert_km_horiz_km = (3, 5) exp.cov_loc_vert_km_horiz_km = (2, 20)
n_obs = 256 #121: 30km, 256:16x16 (20km); 961: 10km resoltn # radar: n_obs for each observation height level n_obs = 961 #121: 30km, 256:16x16 (20km); 961: 10km resoltn # radar: n_obs for each observation height level
vis = dict(plotname='VIS 0.6µm', plotunits='[1]', vis = dict(plotname='VIS 0.6µm', plotunits='[1]',
kind='MSG_4_SEVIRI_BDRF', sat_channel=1, n_obs=n_obs, kind='MSG_4_SEVIRI_BDRF', sat_channel=1, n_obs=n_obs,
error_generate=0.03, error_assimilate=0.06, error_generate=0.03, error_assimilate=0.06,
cov_loc_radius_km=7.5) cov_loc_radius_km=20)
wv73 = dict(plotname='Brightness temperature WV 7.3µm', plotunits='[K]', wv73 = dict(plotname='Brightness temperature WV 7.3µm', plotunits='[K]',
kind='MSG_4_SEVIRI_TB', sat_channel=6, n_obs=n_obs, kind='MSG_4_SEVIRI_TB', sat_channel=6, n_obs=n_obs,
error_generate=1., error_assimilate=False, # error_generate=1., error_assimilate=False,
cov_loc_radius_km=5) cov_loc_radius_km=20)
ir108 = dict(plotname='Brightness temperature IR 10.8µm', plotunits='[K]', ir108 = dict(plotname='Brightness temperature IR 10.8µm', plotunits='[K]',
kind='MSG_4_SEVIRI_TB', sat_channel=9, n_obs=n_obs, kind='MSG_4_SEVIRI_TB', sat_channel=9, n_obs=n_obs,
...@@ -39,8 +39,8 @@ ir108 = dict(plotname='Brightness temperature IR 10.8µm', plotunits='[K]', ...@@ -39,8 +39,8 @@ ir108 = dict(plotname='Brightness temperature IR 10.8µm', plotunits='[K]',
radar = dict(plotname='Radar reflectivity', plotunits='[dBz]', radar = dict(plotname='Radar reflectivity', plotunits='[dBz]',
kind='RADAR_REFLECTIVITY', n_obs=n_obs, kind='RADAR_REFLECTIVITY', n_obs=n_obs,
error_generate=2.5, error_assimilate=5., error_generate=2.5, error_assimilate=5.,
heights=[7000,], #np.arange(1000, 15001, 1000), heights=np.arange(2000, 14001, 2000),
cov_loc_radius_km=5) cov_loc_radius_km=20)
t2m = dict(plotname='SYNOP Temperature', plotunits='[K]', t2m = dict(plotname='SYNOP Temperature', plotunits='[K]',
kind='SYNOP_TEMPERATURE', n_obs=n_obs, kind='SYNOP_TEMPERATURE', n_obs=n_obs,
...@@ -53,9 +53,9 @@ psfc = dict(plotname='SYNOP Pressure', plotunits='[dBz]', ...@@ -53,9 +53,9 @@ psfc = dict(plotname='SYNOP Pressure', plotunits='[dBz]',
cov_loc_radius_km=32) cov_loc_radius_km=32)
exp.observations = [radar] # 108, wv73, vis] exp.observations = [wv73] #radar] # 108, wv73, vis]
exp.update_vars = ['T', 'QVAPOR', 'QCLOUD', 'QICE','CLDFRA'] #exp.update_vars = ['T', 'QVAPOR', 'QCLOUD', 'QICE','CLDFRA']
#exp.update_vars = ['U', 'V', 'T', 'PH', 'MU', 'QVAPOR', 'QCLOUD', 'QICE', 'TSK', 'CLDFRA'] exp.update_vars = ['U', 'V', 'T', 'PH', 'MU', 'QVAPOR', 'QCLOUD', 'QICE', 'TSK', 'CLDFRA']
# directory paths depend on the name of the experiment # directory paths depend on the name of the experiment
cluster.expname = exp.expname cluster.expname = exp.expname
...@@ -25,6 +25,7 @@ class ClusterConfig(object): ...@@ -25,6 +25,7 @@ class ClusterConfig(object):
vsc = ClusterConfig() vsc = ClusterConfig()
vsc.name = 'vsc' vsc.name = 'vsc'
vsc.python = '/home/fs71386/lkugler/miniconda3/envs/DART/bin/python' vsc.python = '/home/fs71386/lkugler/miniconda3/envs/DART/bin/python'
vsc.python_enstools = '/home/fs71386/lkugler/miniconda3/envs/enstools/bin/python'
vsc.ncks = '/home/fs71386/lkugler/miniconda3/envs/DART/bin/ncks' vsc.ncks = '/home/fs71386/lkugler/miniconda3/envs/DART/bin/ncks'
vsc.tmpfiledir = '/gpfs/data/fs71386/lkugler' vsc.tmpfiledir = '/gpfs/data/fs71386/lkugler'
vsc.userdir = '/home/fs71386/lkugler' vsc.userdir = '/home/fs71386/lkugler'
...@@ -34,10 +35,9 @@ vsc.dart_srcdir = '/home/fs71386/lkugler/DART/DART-9.11.9/models/wrf/work' ...@@ -34,10 +35,9 @@ vsc.dart_srcdir = '/home/fs71386/lkugler/DART/DART-9.11.9/models/wrf/work'
vsc.dartrundir = '/gpfs/data/fs71386/lkugler/run_DART' vsc.dartrundir = '/gpfs/data/fs71386/lkugler/run_DART'
vsc.scriptsdir = '/home/fs71386/lkugler/DART-WRF/scripts/' vsc.scriptsdir = '/home/fs71386/lkugler/DART-WRF/scripts/'
vsc.nature_wrfout = '/home/fs71386/lkugler/data/sim_archive/exp_v1.16_Pwbub_nat/2008-07-30_09:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S' vsc.nature_wrfout = '/home/fs71386/lkugler/data/sim_archive/exp_v1.17_P1_nature/2008-07-30_06:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S'
#vsc.nature_wrfout = '/home/fs71386/lkugler/data/sim_archive/wrfout_d01_%Y-%m-%d_%H:%M:%S'
#vsc.input_profile = '/home/fs71386/lkugler/wrf_profiles/data/wrf/ens/from_LMU/raso.nat.<iens>.wrfprof' #vsc.input_profile = '/home/fs71386/lkugler/wrf_profiles/data/wrf/ens/from_LMU/raso.nat.<iens>.wrfprof'
vsc.input_profile = '/home/fs71386/lkugler/wrf_profiles/data/wrf/ens/2021-05-04/raso.nat.001.wrfprof' vsc.input_profile = '/home/fs71386/lkugler/wrf_profiles/data/wrf/ens/2021-05-04/raso.fc.<iens>.wrfprof'
vsc.ideal = vsc.userdir+'/compile/bin/ideal-v4.2.2_v1.16.exe' vsc.ideal = vsc.userdir+'/compile/bin/ideal-v4.2.2_v1.16.exe'
vsc.wrfexe = vsc.userdir+'/compile/bin/wrf-v4.3_v1.16.exe' vsc.wrfexe = vsc.userdir+'/compile/bin/wrf-v4.3_v1.16.exe'
...@@ -45,7 +45,7 @@ vsc.namelist = vsc.scriptsdir+'/../templates/namelist.input' ...@@ -45,7 +45,7 @@ vsc.namelist = vsc.scriptsdir+'/../templates/namelist.input'
vsc.run_WRF = '/home/fs71386/lkugler/DART-WRF/scripts/run_ens.vsc.sh' vsc.run_WRF = '/home/fs71386/lkugler/DART-WRF/scripts/run_ens.vsc.sh'
vsc.slurm_cfg = {"account": "p71386", "partition": "mem_0384", "qos": "p71386_0384", vsc.slurm_cfg = {"account": "p71386", "partition": "mem_0384", "qos": "p71386_0384",
"ntasks": "1", "nodes": "1", "ntasks-per-node": "48", "ntasks-per-core": "1", "nodes": "1", "ntasks": "1", "ntasks-per-node": "48", "ntasks-per-core": "1",
"mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"} "mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"}
......
...@@ -29,32 +29,22 @@ print('starting osse') ...@@ -29,32 +29,22 @@ print('starting osse')
backup_scripts() backup_scripts()
id = None id = None
init_time = dt.datetime(2008, 7, 30, 9) init_time = dt.datetime(2008, 7, 30, 6)
id = prepare_wrfinput(init_time) # create initial conditions id = prepare_wrfinput(init_time) # create initial conditions
# get initial conditions from archive if False:
integration_end_time = dt.datetime(2008, 7, 30, 12) init_time = dt.datetime(2008, 7, 30, 8)
#exppath_arch = '/gpfs/data/fs71386/lkugler/sim_archive/exp_v1.16_P1_40mem' # get initial conditions from archive
#id = update_wrfinput_from_archive(integration_end_time, init_time, exppath_arch, depends_on=id) integration_end_time = dt.datetime(2008, 7, 30, 9)
exppath_arch = cluster.archivedir #'/gpfs/data/fs71386/lkugler/sim_archive/exp_v1.16_P1_40mem'
id = update_wrfinput_from_archive(integration_end_time, init_time, exppath_arch, depends_on=id)
#id = wrfinput_insert_wbubble(depends_on=id)
id = wrfinput_insert_wbubble(depends_on=id) begin = dt.datetime(2008, 7, 30, 6)
end = dt.datetime(2008, 7, 31, 0)
begin = dt.datetime(2008, 7, 30, 9, 0) id = run_ENS(begin=begin, end=end, first_minute=False, depends_on=id)
end = dt.datetime(2008, 7, 30, 12, 0) create_satimages(begin, depends_on=id)
# whole forecast timespan
hist_interval = 5
radt = 5
s = my_Slurm("namelist", cfg_update=dict(time="2"))
id = s.run(' '.join([cluster.python,
cluster.scriptsdir+'/prepare_namelist.py',
begin.strftime('%Y-%m-%d_%H:%M'),
end.strftime('%Y-%m-%d_%H:%M'),
str(hist_interval), str(radt),]),
depends_on=[id])
s = my_Slurm("EnsWRF", cfg_update={"nodes": "1", "array": "1-"+str(exp.n_nodes),
"mem-per-cpu": "2G", "mail-type": "BEGIN,FAIL,END"})
cmd = script_to_str(cluster.run_WRF).replace('<expname>', exp.expname)
id = s.run(cmd, depends_on=[id])
...@@ -207,7 +207,7 @@ def assimilate(assim_time, prior_init_time, ...@@ -207,7 +207,7 @@ def assimilate(assim_time, prior_init_time,
def create_satimages(init_time, depends_on=None): def create_satimages(init_time, depends_on=None):
s = my_Slurm("pRTTOV", cfg_update={"ntasks": "48", "time": "30"}) s = my_Slurm("pRTTOV", cfg_update={"ntasks": "48", "time": "30", "nodes": "1"})
s.run(cluster.python+' /home/fs71386/lkugler/RTTOV-WRF/run_init.py '+cluster.archivedir s.run(cluster.python+' /home/fs71386/lkugler/RTTOV-WRF/run_init.py '+cluster.archivedir
+init_time.strftime('/%Y-%m-%d_%H:%M/'), +init_time.strftime('/%Y-%m-%d_%H:%M/'),
depends_on=[depends_on]) depends_on=[depends_on])
...@@ -219,20 +219,31 @@ def mailme(depends_on=None): ...@@ -219,20 +219,31 @@ def mailme(depends_on=None):
def gen_obsseq(depends_on=None): def gen_obsseq(depends_on=None):
s = my_Slurm("obsseq_netcdf", cfg_update={"time": "10", "mail-type": "FAIL,END"}) s = my_Slurm("obsseq_netcdf", cfg_update={"time": "10", "mail-type": "FAIL,END"})
s.run(cluster.python+' '+cluster.scripts_rundir+'/obsseq_to_netcdf.py', id = s.run(cluster.python+' '+cluster.scripts_rundir+'/obsseq_to_netcdf.py',
depends_on=[depends_on])
return id
def verify(depends_on=None):
s = my_Slurm("verify", cfg_update={"time": "180", "mail-type": "FAIL,END",
"ntasks": "96", "ntasks-per-node": "96", "ntasks-per-core": "2"})
s.run(cluster.python_enstools+' '+cluster.userdir+'/osse_analysis/analyze_fc.py '+exp.expname+' has_node',
depends_on=[depends_on]) depends_on=[depends_on])
def copy_to_jet(depends_on=None): def copy_to_jet(depends_on=None):
s = my_Slurm("rsync-jet", cfg_update={"time": "1", "mail-type": "FAIL"}) Slurm('rsync-jet', slurm_kwargs={"time": "30",
s.run('bash rsync -avh '+cluster.archivedir+' lkugler@jet01.img.univie.ac.at:/jetfs/home/lkugler/data_jetfs/sim_archive/ &', "account": "p71386", "partition": "mem_0384", "qos": "p71386_0384",
"ntasks": "1", "mem": "5gb",
"mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"},
log_dir=log_dir, scripts_dir=slurm_scripts_dir,
).run("bash -c 'nohup rsync -avh "+cluster.archivedir+" lkugler@jet01.img.univie.ac.at:/jetfs/home/lkugler/data/sim_archive/ &'",
depends_on=[depends_on]) depends_on=[depends_on])
################################ ################################
if __name__ == "__main__": if __name__ == "__main__":
print('starting osse') print('starting osse')
timedelta_integrate = dt.timedelta(minutes=10) timedelta_integrate = dt.timedelta(minutes=15)
timedelta_btw_assim = dt.timedelta(minutes=10) timedelta_btw_assim = dt.timedelta(minutes=15)
backup_scripts() backup_scripts()
id = None id = None
...@@ -257,10 +268,10 @@ if __name__ == "__main__": ...@@ -257,10 +268,10 @@ if __name__ == "__main__":
id = prepare_wrfinput(init_time) # create initial conditions id = prepare_wrfinput(init_time) # create initial conditions
# get initial conditions from archive # get initial conditions from archive
integration_end_time = dt.datetime(2008, 7, 30, 13) integration_end_time = dt.datetime(2008, 7, 30, 10)
exppath_arch = '/gpfs/data/fs71386/lkugler/sim_archive/exp_v1.16_P1_40mem' exppath_arch = '/gpfs/data/fs71386/lkugler/sim_archive/exp_v1.16_P1_40mem'
#id = update_wrfinput_from_archive(integration_end_time, init_time, exppath_arch, depends_on=id) id = update_wrfinput_from_archive(integration_end_time, init_time, exppath_arch, depends_on=id)
id = wrfinput_insert_wbubble(depends_on=id) #id = wrfinput_insert_wbubble(depends_on=id)
prior_path_exp = exppath_arch # for next assimilation prior_path_exp = exppath_arch # for next assimilation
# values for assimilation # values for assimilation
...@@ -268,7 +279,7 @@ if __name__ == "__main__": ...@@ -268,7 +279,7 @@ if __name__ == "__main__":
assim_time = integration_end_time assim_time = integration_end_time
prior_init_time = init_time prior_init_time = init_time
while time <= dt.datetime(2008, 7, 30, 14): while time <= dt.datetime(2008, 7, 30, 10, 30):
id = assimilate(assim_time, id = assimilate(assim_time,
prior_init_time, prior_init_time,
...@@ -280,8 +291,8 @@ if __name__ == "__main__": ...@@ -280,8 +291,8 @@ if __name__ == "__main__":
this_forecast_init = assim_time # start integration from here this_forecast_init = assim_time # start integration from here
timedelta_integrate = timedelta_btw_assim timedelta_integrate = timedelta_btw_assim
if this_forecast_init.minute == 0 and this_forecast_init.hour != dt.datetime(2008, 7, 30, 13): # longer forecast every full hour if this_forecast_init.minute in [30, 0]: # longer forecast every full hour
timedelta_integrate = dt.timedelta(minutes=3*60) timedelta_integrate = dt.timedelta(hours=2)
this_forecast_end = assim_time + timedelta_integrate this_forecast_end = assim_time + timedelta_integrate
...@@ -298,5 +309,6 @@ if __name__ == "__main__": ...@@ -298,5 +309,6 @@ if __name__ == "__main__":
assim_time = time assim_time = time
prior_init_time = time - timedelta_btw_assim prior_init_time = time - timedelta_btw_assim
gen_obsseq(id) # mailme(id) id = gen_obsseq(id)
copy_to_jet(id) verify(id)
# copy to jet
...@@ -33,7 +33,7 @@ if __name__ == '__main__': ...@@ -33,7 +33,7 @@ if __name__ == '__main__':
savedir = cluster.archivedir+'/obs_seq_final_1min/' savedir = cluster.archivedir+'/obs_seq_final_1min/'
aso.set_DART_nml(just_prior_values=True) aso.set_DART_nml(just_prior_values=True)
osq.create_obsseqin_alltypes(time, exp.observations, obs_errors=False) osq.create_obsseqin_alltypes(time, exp.observations, 0.)
# prepare dummy nature (this Hx is irrelevant) # prepare dummy nature (this Hx is irrelevant)
os.chdir(cluster.dartrundir) os.chdir(cluster.dartrundir)
......
...@@ -97,7 +97,8 @@ def replace_errors_obsseqout(f, new_errors): ...@@ -97,7 +97,8 @@ def replace_errors_obsseqout(f, new_errors):
previous_err_var = obsseq[line_error_obs_i] previous_err_var = obsseq[line_error_obs_i]
new_err_obs_i = new_errors[i_obs]**2 # variance in obs_seq.out new_err_obs_i = new_errors[i_obs]**2 # variance in obs_seq.out
if debug: print('previous err var ', float(previous_err_var.strip()), 'new error', new_err_obs_i) if debug:
print(line.strip(), 'previous err var ', float(previous_err_var.strip()), 'new error', new_err_obs_i)
obsseq[line_error_obs_i] = ' '+str(new_err_obs_i)+' \n' obsseq[line_error_obs_i] = ' '+str(new_err_obs_i)+' \n'
i_obs += 1 # next iteration i_obs += 1 # next iteration
...@@ -411,12 +412,9 @@ if __name__ == "__main__": ...@@ -411,12 +412,9 @@ if __name__ == "__main__":
n_obs_z = len(obscfg.get('heights', [1,])) n_obs_z = len(obscfg.get('heights', [1,]))
n_obs_3d = n_obs * n_obs_z n_obs_3d = n_obs * n_obs_z
parametrized = obscfg.get('sat_channel') == 6 do_error_parametrization = ((obscfg['error_assimilate'] == False) and (obscfg.get('sat_channel') == 6))
if not parametrized: if do_error_parametrization:
err_assim = np.zeros(n_obs_3d) + obscfg['error_assimilate']
else: # error parametrization for WV73
# get observations for sat 6 # get observations for sat 6
osq.create_obsseqin_alltypes(time, [obscfg,], np.zeros(n_obs_3d)) osq.create_obsseqin_alltypes(time, [obscfg,], np.zeros(n_obs_3d))
run_perfect_model_obs() run_perfect_model_obs()
...@@ -426,6 +424,8 @@ if __name__ == "__main__": ...@@ -426,6 +424,8 @@ if __name__ == "__main__":
Hx_prior = obs_operator_ensemble(istage) # files are already linked to DART directory Hx_prior = obs_operator_ensemble(istage) # files are already linked to DART directory
err_assim = calc_obserr_WV73(Hx_nat, Hx_prior) err_assim = calc_obserr_WV73(Hx_nat, Hx_prior)
else:
err_assim = np.zeros(n_obs_3d) + obscfg['error_assimilate']
error_assimilate.extend(err_assim) # the obs-error we assume for assimilating observations error_assimilate.extend(err_assim) # the obs-error we assume for assimilating observations
...@@ -437,7 +437,7 @@ if __name__ == "__main__": ...@@ -437,7 +437,7 @@ if __name__ == "__main__":
for i, obscfg in enumerate(exp.observations): for i, obscfg in enumerate(exp.observations):
error_generate.extend(np.zeros(n_obs_3d) + obscfg['error_generate']) error_generate.extend(np.zeros(n_obs_3d) + obscfg['error_generate'])
osq.create_obsseqin_alltypes(time, exp.observations, obs_errors=error_generate) osq.create_obsseqin_alltypes(time, exp.observations, error_generate)
set_DART_nml() set_DART_nml()
......
...@@ -140,6 +140,7 @@ def calc_obs_locations(n_obs, coords_from_domaincenter=True, ...@@ -140,6 +140,7 @@ def calc_obs_locations(n_obs, coords_from_domaincenter=True,
n_obs_x = int(np.sqrt(n_obs)) n_obs_x = int(np.sqrt(n_obs))
nx = len(ds.south_north) # number of gridpoints in one direction nx = len(ds.south_north) # number of gridpoints in one direction
model_dx_km = exp.model_dx/1000 model_dx_km = exp.model_dx/1000
print('assuming', model_dx_km, 'km model grid')
omit_covloc_radius_on_boundary = True omit_covloc_radius_on_boundary = True
if omit_covloc_radius_on_boundary: # in order to avoid an increment step on the boundary if omit_covloc_radius_on_boundary: # in order to avoid an increment step on the boundary
...@@ -382,8 +383,7 @@ def create_obsseqin_alltypes(time_dt, list_obscfg, obs_errors, archive_obs_coord ...@@ -382,8 +383,7 @@ def create_obsseqin_alltypes(time_dt, list_obscfg, obs_errors, archive_obs_coord
Args: Args:
time_dt (dt.datetime): time of observation time_dt (dt.datetime): time of observation
list_obscfg (list of dict) list_obscfg (list of dict)
obs_errors (list of float, False): contains observation errors, one for each observation obs_errors (np.array): contains observation errors, one for each observation
if False: use zero error
archive_obs_coords (bool, str): False or str (filepath where `obs_seq.in` will be saved) archive_obs_coords (bool, str): False or str (filepath where `obs_seq.in` will be saved)
""" """
print('creating obs_seq.in:') print('creating obs_seq.in:')
...@@ -411,13 +411,7 @@ def create_obsseqin_alltypes(time_dt, list_obscfg, obs_errors, archive_obs_coord ...@@ -411,13 +411,7 @@ def create_obsseqin_alltypes(time_dt, list_obscfg, obs_errors, archive_obs_coord
coords = append_hgt_to_coords(coords, vert_coords) coords = append_hgt_to_coords(coords, vert_coords)
n_obs_3d_thistype = len(coords) n_obs_3d_thistype = len(coords)
# define obs error obserr_std = np.zeros(n_obs_3d_thistype) + obs_errors
if obs_errors == False:
obs_errors = np.zeros(n_obs_3d_thistype)
assert len(obs_errors) == n_obs_3d_thistype, 'len(obs_errors) == n_obs_3d_thistype'
obserr_std = obs_errors #np.zeros(n_obs_3d_thistype)
#if obs_errors:
# obserr_std += obscfg[obs_errors]
sat_info = write_sat_angle_appendix(sat_channel, lat0, lon0, time_dt) sat_info = write_sat_angle_appendix(sat_channel, lat0, lon0, time_dt)
...@@ -455,7 +449,7 @@ def create_obsseqin_alltypes(time_dt, list_obscfg, obs_errors, archive_obs_coord ...@@ -455,7 +449,7 @@ def create_obsseqin_alltypes(time_dt, list_obscfg, obs_errors, archive_obs_coord
if __name__ == '__main__': if __name__ == '__main__':
# for testing # for testing
time_dt = dt.datetime(2008, 7, 30, 9, 0) time_dt = dt.datetime(2008, 7, 30, 9, 0)
n_obs = 900 # radar: n_obs for each observation height level n_obs = 22801 # radar: n_obs for each observation height level
vis = dict(plotname='VIS 0.6µm', plotunits='[1]', vis = dict(plotname='VIS 0.6µm', plotunits='[1]',
kind='MSG_4_SEVIRI_BDRF', sat_channel=1, n_obs=n_obs, kind='MSG_4_SEVIRI_BDRF', sat_channel=1, n_obs=n_obs,
...@@ -490,10 +484,11 @@ if __name__ == '__main__': ...@@ -490,10 +484,11 @@ if __name__ == '__main__':
#create_obsseq_in(time_dt, radar, archive_obs_coords=False) #'./coords_stage1.pkl') #create_obsseq_in(time_dt, radar, archive_obs_coords=False) #'./coords_stage1.pkl')
create_obsseqin_alltypes(time_dt, [vis, wv73], obs_errors='error_generate', archive_obs_coords='./obs_coords.pkl') create_obsseqin_alltypes(time_dt, [wv73], obs_errors=False, archive_obs_coords=False) #'./obs_coords.pkl')
error_assimilate = 5.*np.ones(n_obs*len(radar['heights'])) if False:
import assim_synth_obs as aso error_assimilate = 5.*np.ones(n_obs*len(radar['heights']))
#aso.replace_errors_obsseqout(cluster.dartrundir+'/obs_seq.out', error_assimilate) import assim_synth_obs as aso
aso.replace_errors_obsseqout(cluster.dartrundir+'/obs_seq.out', error_assimilate)
...@@ -174,12 +174,12 @@ ...@@ -174,12 +174,12 @@
# #
&obs_def_radar_mod_nml &obs_def_radar_mod_nml
apply_ref_limit_to_obs = .false., apply_ref_limit_to_obs = .true.,
reflectivity_limit_obs = -10.0, reflectivity_limit_obs = 5.0,
lowest_reflectivity_obs = -10.0, lowest_reflectivity_obs = 5.0,
apply_ref_limit_to_fwd_op = .false., apply_ref_limit_to_fwd_op = .true.,
reflectivity_limit_fwd_op = -10.0, reflectivity_limit_fwd_op = 5.0,
lowest_reflectivity_fwd_op = -10.0, lowest_reflectivity_fwd_op = 5.0,
max_radial_vel_obs = 1000000, max_radial_vel_obs = 1000000,
allow_wet_graupel = .false., allow_wet_graupel = .false.,
microphysics_type = 5 , microphysics_type = 5 ,
......
...@@ -176,12 +176,12 @@ ...@@ -176,12 +176,12 @@
# #
&obs_def_radar_mod_nml &obs_def_radar_mod_nml
apply_ref_limit_to_obs = .false., apply_ref_limit_to_obs = .true.,
reflectivity_limit_obs = -10.0, reflectivity_limit_obs = 5.0,
lowest_reflectivity_obs = -10.0, lowest_reflectivity_obs = 5.0,
apply_ref_limit_to_fwd_op = .false., apply_ref_limit_to_fwd_op = .true.,
reflectivity_limit_fwd_op = -10.0, reflectivity_limit_fwd_op = 5.0,
lowest_reflectivity_fwd_op = -10.0, lowest_reflectivity_fwd_op = 5.0,
max_radial_vel_obs = 1000000, max_radial_vel_obs = 1000000,
allow_wet_graupel = .false., allow_wet_graupel = .false.,
microphysics_type = 5 , microphysics_type = 5 ,
......
...@@ -170,12 +170,12 @@ ...@@ -170,12 +170,12 @@
# #
&obs_def_radar_mod_nml &obs_def_radar_mod_nml
apply_ref_limit_to_obs = .false., apply_ref_limit_to_obs = .true.,
reflectivity_limit_obs = -10.0, reflectivity_limit_obs = 5.0,
lowest_reflectivity_obs = -10.0, lowest_reflectivity_obs = 5.0,
apply_ref_limit_to_fwd_op = .false., apply_ref_limit_to_fwd_op = .true.,
reflectivity_limit_fwd_op = -10.0, reflectivity_limit_fwd_op = 5.0,
lowest_reflectivity_fwd_op = -10.0, lowest_reflectivity_fwd_op = 5.0,
max_radial_vel_obs = 1000000, max_radial_vel_obs = 1000000,
allow_wet_graupel = .false., allow_wet_graupel = .false.,
microphysics_type = 5 , microphysics_type = 5 ,
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
end_hour = <HH2>, 00, 00, end_hour = <HH2>, 00, 00,
end_minute = <MM2>, 120, 120, end_minute = <MM2>, 120, 120,
end_second = 0, 00, 00, end_second = 0, 00, 00,
interval_seconds = 86400
history_interval = <hist_interval>, 15, 15, history_interval = <hist_interval>, 15, 15,
frames_per_outfile = 1, 1, 1, frames_per_outfile = 1, 1, 1,
history_outname = '<archivedir>/wrfout_d<domain>_<date>' history_outname = '<archivedir>/wrfout_d<domain>_<date>'
...@@ -30,7 +31,6 @@ ...@@ -30,7 +31,6 @@
starting_time_step = 8, starting_time_step = 8,
max_time_step = 16, max_time_step = 16,
min_time_step = 6, min_time_step = 6,
step_to_output_time = .true.,
time_step = 8, time_step = 8,
time_step_fract_num = 0, time_step_fract_num = 0,
time_step_fract_den = 1, time_step_fract_den = 1,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment