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

dummy files

parent 2bf8a17d
No related branches found
No related tags found
No related merge requests found
from dartwrf import utils
from dartwrf.utils import Experiment
exp = utils.Experiment()
exp.expname = "template_experiment"
exp = Experiment()
exp.expname = "exp_test"
exp.model_dx = 2000
exp.n_ens = 40
exp.superob_km = False # False or int (spatial averaging of observations, unit: km)
exp.do_quality_control = False # bool
exp.n_ens = 4
exp.do_quality_control = False
# Use existing observations (path to obs_seq.out) or generate observations (False)
exp.use_existing_obsseq = False
#exp.use_existing_obsseq = '/users/students/lehre/advDA_s2023/dartwrf_tutorial/very_cold_observation.out'
# path from where observations can be generated
# path to the nature run, where we take observations from
#exp.nature_wrfout_pattern = '/jetfs/home/lkugler/data/sim_archive/exp_v1.18_P1_nature+1/*/1/wrfout_d01_%Y-%m-%d_%H:%M:%S'
#exp.nature_wrfout_pattern = '/jetfs/home/lkugler/data/sim_archive/exp_v1.18_P1_nature/*/1/wrfout_d01_%Y-%m-%d_%H:%M:%S'
exp.nature_wrfout_pattern = '/jetfs/home/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_nat/*/1/wrfout_d01_%Y-%m-%d_%H:%M:%S'
# for initialization profiles
exp.input_profile = '/mnt/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof'
exp.dart_nml = {'&assim_tools_nml':
dict(filter_kind='1',
sampling_error_correction='.false.',
sampling_error_correction='.true.',
# obs_impact_filename='/jetfs/home/lkugler/DART-WRF/templates/impactfactor_T.txt',
),
'&filter_nml':
dict(ens_size=exp.n_ens,
dict( ens_size=exp.n_ens,
num_output_state_members=exp.n_ens,
num_output_obs_members=exp.n_ens,
inf_flavor=['0', '0'],
inf_flavor=['0', '4'],
inf_initial=[1.04, 0.5],
inf_initial_from_restart='.false.',
output_members='.true.',
output_mean='.true.',
output_sd='.true.',
stages_to_write='output',
),
'&quality_control_nml':
'&quality_control_nml':
dict(outlier_threshold='-1',
),
'&obs_def_radar_mod_nml':
dict(apply_ref_limit_to_obs = '.true.',
reflectivity_limit_obs = 5.0,
lowest_reflectivity_obs = 5.0,
apply_ref_limit_to_fwd_op = '.true.',
reflectivity_limit_fwd_op = 5.0,
lowest_reflectivity_fwd_op = 5.0,
microphysics_type = '5',
),
'&location_nml':
dict(horiz_dist_only='.true.',
dict(horiz_dist_only='.false.',
),
'&model_nml':
dict(wrf_state_variables =
......@@ -47,38 +54,69 @@ exp.dart_nml = {'&assim_tools_nml':
['PH', 'QTY_GEOPOTENTIAL_HEIGHT', 'TYPE_GZ', 'UPDATE','999',],
['THM', 'QTY_POTENTIAL_TEMPERATURE','TYPE_T', 'UPDATE','999',],
['MU', 'QTY_PRESSURE', 'TYPE_MU', 'UPDATE','999',],
['QVAPOR','QTY_VAPOR_MIXING_RATIO', 'TYPE_QV', 'UPDATE','999',],
['QICE', 'QTY_ICE_MIXING_RATIO', 'TYPE_QI', 'UPDATE','999',],
['QCLOUD','QTY_CLOUDWATER_MIXING_RATIO','TYPE_QC', 'UPDATE','999',],
['QICE', 'QTY_ICE_MIXING_RATIO', 'TYPE_QI', 'UPDATE','999',],
# ['QRAIN','QTY_RAINWATER_MIXING_RATIO','TYPE_QR', 'UPDATE','999',],
# ['QSNOW','QTY_SNOW_MIXING_RATIO','TYPE_QS', 'UPDATE','999',],
# ['QGRAUP','QTY_GRAUPEL_MIXING_RATIO','TYPE_QG', 'UPDATE','999',],
['CLDFRA','QTY_CLOUD_FRACTION', 'TYPE_CFRAC','UPDATE','999',],
['PSFC', 'QTY_SURFACE_PRESSURE', 'TYPE_PSFC', 'UPDATE','999',],
['T2', 'QTY_2M_TEMPERATURE', 'TYPE_T', 'UPDATE','999',],
['TSK', 'QTY_SKIN_TEMPERATURE', 'TYPE_T', 'UPDATE','999',],
['REFL_10CM','QTY_RADAR_REFLECTIVITY','TYPE_REFL', 'UPDATE','999',]]),
['REFL_10CM','QTY_RADAR_REFLECTIVITY','TYPE_REFL', 'UPDATE','999',]],
wrf_state_bounds =
[['QVAPOR','0.0','NULL','CLAMP'],
['QCLOUD','0.0','NULL','CLAMP'],
['QICE','0.0','NULL','CLAMP'],
['CLDFRA','0.0','1.0','CLAMP'],
# ['QRAIN','0.0','NULL','CLAMP'],
# ['QSNOW','0.0','NULL','CLAMP'],
# ['QGRAUP','0.0','NULL','CLAMP'],
],
),
'&ensemble_manager_nml':
dict(layout = 1,
tasks_per_node = 12,
communication_configuration = 1,
),
}
# n_obs can be 22500: 2km, 5776: 4km, 121: 30km, 256:16x16 (20km); 961: 10km resoltn
# if radar: then n_obs is for each observation height level
oeinf = 4.**.5
vis = dict(var_name='VIS 0.6µm', unit='[1]',
kind='MSG_4_SEVIRI_BDRF', sat_channel=1,
n_obs=256, obs_locations='square_array_evenly_on_grid',
n_obs=961, obs_locations='square_array_evenly_on_grid',
# n_obs=1, obs_locations=[(44.141, -0.99)],
error_generate=0.03, error_assimilate=0.03,
loc_horiz_km=10)
wv62 = dict(var_name='Brightness temperature WV 6.2µm', unit='[K]',
kind='MSG_4_SEVIRI_TB', sat_channel=5,
n_obs=961, obs_locations='square_array_evenly_on_grid',
error_generate=1., error_assimilate=2.,
loc_horiz_km=20)
error_generate=0.03, error_assimilate=0.03*oeinf,
loc_horiz_km=20,
#height=4000, loc_vert_km=3
)
wv73 = dict(var_name='Brightness temperature WV 7.3µm', unit='[K]',
kind='MSG_4_SEVIRI_TB', sat_channel=6,
n_obs=961, obs_locations='square_array_evenly_on_grid',
error_generate=1., error_assimilate=3.,
loc_horiz_km=20)
error_generate=1, error_assimilate=1*oeinf,
loc_horiz_km=20,
#height=7000, loc_vert_km=3
)
wv62 = dict(var_name='Brightness temperature WV 6.2µm', unit='[K]',
kind='MSG_4_SEVIRI_TB', sat_channel=5,
n_obs=961, obs_locations='square_array_evenly_on_grid',
# n_obs=1, obs_locations=[(44.141, -0.99)],
error_generate=1, error_assimilate=1*oeinf,
loc_horiz_km=20,
#height=10000, loc_vert_km=3
)
ir108 = dict(var_name='Brightness temperature IR 10.8µm', unit='[K]',
kind='MSG_4_SEVIRI_TB', sat_channel=9,
......@@ -88,10 +126,11 @@ ir108 = dict(var_name='Brightness temperature IR 10.8µm', unit='[K]',
radar = dict(var_name='Radar reflectivity', unit='[dBz]',
kind='RADAR_REFLECTIVITY',
n_obs=5776, obs_locations='square_array_evenly_on_grid',
error_generate=2.5, error_assimilate=2.5,
n_obs=961, obs_locations='square_array_evenly_on_grid',
# n_obs=2, obs_locations=[(45.332, 0.4735), (45.332, 0.53)],
heights=range(2000, 14001, 2000),
loc_horiz_km=20, loc_vert_km=2.5)
error_generate=2.5, error_assimilate=2.5*oeinf,
loc_horiz_km=20, loc_vert_km=3)
t = dict(var_name='Temperature', unit='[K]',
kind='RADIOSONDE_TEMPERATURE',
......@@ -102,25 +141,33 @@ t = dict(var_name='Temperature', unit='[K]',
loc_horiz_km=50, loc_vert_km=2.5)
q = dict(var_name='Specific humidity', unit='[kg/kg]',
kind='RADIOSONDE_SPECIFIC_HUMIDITY',
n_obs=961, obs_locations='square_array_evenly_on_grid',
kind='RADIOSONDE_SPECIFIC_HUMIDITY', n_obs=1,
error_generate=0., error_assimilate=5*1e-5,
heights=[1000], #range(1000, 17001, 2000),
loc_horiz_km=0.1, loc_vert_km=2.5)
loc_horiz_km=50, loc_vert_km=2.5)
t2m = dict(var_name='SYNOP Temperature', unit='[K]',
kind='SYNOP_TEMPERATURE',
n_obs=961, obs_locations='square_array_evenly_on_grid',
error_generate=0.1, error_assimilate=0.1,
loc_horiz_km=40, loc_vert_km=2.5)
n_obs=256, obs_locations='square_array_evenly_on_grid',
error_generate=0.3, error_assimilate=0.3,
loc_horiz_km=10, loc_vert_km=2)
psfc = dict(var_name='SYNOP Pressure', unit='[Pa]',
kind='SYNOP_SURFACE_PRESSURE',
n_obs=961, obs_locations='square_array_evenly_on_grid',
kind='SYNOP_SURFACE_PRESSURE', n_obs=1,
error_generate=50., error_assimilate=100.,
loc_horiz_km=32, loc_vert_km=5)
exp.observations = [vis]
exp.observations = [t, radar, ]
# the variables which will be replaced in the WRF initial conditions file
exp.update_vars = ['U', 'V', 'W', 'THM', 'PH', 'MU', 'QVAPOR', 'QCLOUD', 'QICE', 'PSFC']
#exp.update_vars = ['U', 'V', 'W', 'THM', 'PH', 'MU', 'QVAPOR', 'PSFC']
#exp.update_vars = ['U', 'V', 'W', 'THM', 'PH', 'MU', 'QVAPOR', 'QCLOUD', 'QICE', 'QRAIN', 'QSNOW', 'QGRAUP', 'PSFC']
#exp.update_vars = ['QVAPOR', 'QCLOUD', 'QICE', 'PSFC']
exp.use_existing_obsseq = False
# exp.use_existing_obsseq='/jetfs/home/lkugler/data/sim_archive/exp_v1.22_P2_rr_WV73_obs10_loc20_oe1/obs_seq_out/%Y-%m-%d_%H:%M_obs_seq.out'
......@@ -6,15 +6,15 @@ cluster = utils.ClusterConfig(exp)
cluster.name = 'jet'
cluster.max_nproc = 12
cluster.use_slurm = True
cluster.size_jobarray = 40
cluster.size_WRF_jobarray = exp.n_ens
cluster.np_WRF = 12
# binaries
cluster.python = '/jetfs/home/lkugler/miniconda3/envs/DART/bin/python'
cluster.python_verif = '/jetfs/home/lkugler/miniconda3/envs/enstools/bin/python'
cluster.ncks = '/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1/nco-5.1.0-izrhxv24jqco5epjhf5ledsqwanojc5m/bin/ncks'
cluster.ideal = '/jetfs/home/lkugler/bin/ideal-v4.3_v1.22.exe'
cluster.wrfexe = '/jetfs/home/lkugler/bin/wrf-v4.3_v1.22_ifort_20230413.exe'
cluster.dart_modules = 'module purge; module load netcdf-fortran/4.5.3-gcc-8.5.0-qsqbozc;'
cluster.dart_modules = 'module purge; module load rttov/v13.2-gcc-8.5.0; '
cluster.wrf_modules = """module purge; module load intel-oneapi-compilers/2022.2.1-zkofgc5 hdf5/1.12.2-intel-2021.7.1-w5sw2dq netcdf-fortran/4.5.3-intel-2021.7.1-27ldrnt netcdf-c/4.7.4-intel-2021.7.1-lnfs5zz intel-oneapi-mpi/2021.7.1-intel-2021.7.1-pt3unoz
export HDF5=/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1/hdf5-1.12.2-w5sw2dqpcq2orlmeowleamoxr65dhhdc
"""
......@@ -26,7 +26,7 @@ cluster.archive_base = '/jetfs/home/lkugler/data/sim_archive/'
# paths used as input
cluster.srcdir = '/jetfs/home/lkugler/data/compile/WRF-4.3/run'
cluster.dart_srcdir = '/jetfs/home/lkugler/data/compile/DART/DART-10.5.3/models/wrf/work'
cluster.dart_srcdir = '/jetfs/home/lkugler/data/compile/DART/DART-10.8.3/models/wrf/work'
cluster.rttov_srcdir = '/jetfs/home/lkugler/data/compile/RTTOV13/rtcoef_rttov13/'
cluster.dartwrf_dir = '/jetfs/home/lkugler/DART-WRF/'
......@@ -37,5 +37,5 @@ cluster.namelist = cluster.dartwrf_dir+'/templates/namelist.input'
cluster.run_WRF = '/jetfs/home/lkugler/DART-WRF/dartwrf/run_ens.jet.sh'
cluster.slurm_cfg = {"account": "lkugler", "partition": "compute", #"nodelist": "jet07",
"ntasks": "1", "ntasks-per-core": "1", "mem": "50G",
"ntasks": "1", "ntasks-per-core": "1", "mem": "30G",
"mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment