diff --git a/config/cfg.py b/config/cfg.py index 8a833a6659cd82e4498917e0e87079e07c6f0a5c..c20d3519f2c725284efb88b5d9a0e4d8fe962cfb 100755 --- a/config/cfg.py +++ b/config/cfg.py @@ -1,12 +1,13 @@ from dartwrf import utils exp = utils.Experiment() -exp.expname = "obs-cold_localization-narrow" +exp.expname = "obs-T_inflation-1.1" exp.model_dx = 2000 exp.n_ens = 10 exp.filter_kind = 1 exp.prior_inflation = 0 +exp.inf_initial = 1.1 exp.post_inflation = 4 exp.sec = True exp.cov_loc_vert_km_horiz_km = (4, 40) @@ -14,7 +15,7 @@ exp.superob_km = False # False or int (spatial averaging of observations) exp.adjust_obs_impact = False exp.use_existing_obsseq = False # False or pathname (use precomputed obs_seq.out files) -exp.use_existing_obsseq = '/users/students/lehre/advDA_s2023/dartwrf_tutorial/very_cold_observation.out' +#exp.use_existing_obsseq = '/users/students/lehre/advDA_s2023/dartwrf_tutorial/very_cold_observation.out' # path to the nature run, where we take observations from exp.nature = '/users/students/lehre/advDA_s2023/data/sample_nature/' @@ -58,11 +59,11 @@ radar = dict(plotname='Radar reflectivity', plotunits='[dBz]', t = dict(plotname='Temperature', plotunits='[K]', kind='RADIOSONDE_TEMPERATURE', - #n_obs=22500, obs_locations='square_array_evenly_on_grid', - n_obs=1, obs_locations=[(45., 0.)], + n_obs=961, obs_locations='square_array_evenly_on_grid', + #n_obs=1, obs_locations=[(45., 0.)], error_generate=0.2, error_assimilate=0.2, heights=[1000,], #range(1000, 17001, 2000), - cov_loc_radius_km=50) + cov_loc_radius_km=30) q = dict(plotname='Specific humidity', plotunits='[kg/kg]', kind='RADIOSONDE_SPECIFIC_HUMIDITY', n_obs=1, @@ -80,7 +81,6 @@ psfc = dict(plotname='SYNOP Pressure', plotunits='[Pa]', error_generate=50., error_assimilate=100., cov_loc_radius_km=32) -exp.observations = [t2m] +exp.observations = [t] exp.update_vars = ['U', 'V', 'W', 'THM', 'PH', 'MU', 'QVAPOR', 'QCLOUD', 'QICE', 'PSFC'] -#exp.update_vars = ['U', 'V', 'W', 'T', 'PH', 'MU', 'QVAPOR', 'PSFC'] diff --git a/dartwrf/assim_synth_obs.py b/dartwrf/assim_synth_obs.py index 7fcc052fb996cee0e9342832c4ffbb2a0ebf7c06..b67196dd856344202e94d54f33a60436c78eb3d8 100755 --- a/dartwrf/assim_synth_obs.py +++ b/dartwrf/assim_synth_obs.py @@ -46,6 +46,7 @@ def set_DART_nml(just_prior_values=False): "<sampling_error_correction>": '.true.' if exp.sec else '.false.', "<prior_inflation>": str(exp.prior_inflation), "<post_inflation>": str(exp.post_inflation), + "<inf_initial>": str(exp.inf_initial), "<n_ens>": str(int(exp.n_ens)), "<cov_loc_radian>": "0.00000001", # dummy value, used for types not mentioned below "<list_obstypes>": "'" + "','".join(list_obstypes) + "'", @@ -220,11 +221,11 @@ def archive_filteroutput(time): ) try: # not necessary for next forecast run - for iens in range(1, exp.n_ens + 1): - copy( - cluster.dartrundir + "/postassim_member_" + str(iens).zfill(4) + ".nc", - archive_assim + "/postassim_member_" + str(iens).zfill(4) + ".nc", - ) + ftypes = ['preassim', 'postassim'] + for ftype in ftypes: + for iens in range(1, exp.n_ens + 1): + fname = "/"+ftype+"_member_" + str(iens).zfill(4) + ".nc" + copy(cluster.dartrundir + fname, archive_assim + fname) for f in ["output_mean.nc", "output_sd.nc"]: # copy mean and sd to archive copy(cluster.dartrundir + "/" + f, archive_assim + "/" + f) diff --git a/templates/input.nml b/templates/input.nml index 38edbde9bd8e107176766e6fadeb563c7d3f3670..3b673a710dcb1d17aa2972f668e547a6a6ab82d3 100644 --- a/templates/input.nml +++ b/templates/input.nml @@ -60,7 +60,7 @@ inf_flavor = <prior_inflation>, <post_inflation>, inf_initial_from_restart = .true., .false., inf_sd_initial_from_restart = .true., .false., - inf_initial = 1.00, 0.90, + inf_initial = <inf_initial>, 0.90, inf_lower_bound = 1.0, 1.0, inf_upper_bound = 1000000.0, 1000000.0, inf_damping = 0.9, 1.0,