Skip to content
Snippets Groups Projects
Commit 2ab4b71b authored by Kaushambi Jyoti's avatar Kaushambi Jyoti
Browse files

config for teachinghub, update

parent 21c50dcc
No related branches found
No related tags found
No related merge requests found
...@@ -6,12 +6,12 @@ import datetime as dt ...@@ -6,12 +6,12 @@ import datetime as dt
from dartwrf.workflows import WorkFlows from dartwrf.workflows import WorkFlows
prior_path_exp = '/users/students/lehre/advDA_s2023/data/sample_ensemble/' prior_path_exp = '/lehre/advDA_s2023/data/sample_ensemble/'
prior_init_time = dt.datetime(2008,7,30,12) prior_init_time = dt.datetime(2008,7,30,12)
prior_valid_time = dt.datetime(2008,7,30,13) prior_valid_time = dt.datetime(2008,7,30,13)
assim_time = prior_valid_time assim_time = prior_valid_time
w = WorkFlows(exp_config='exp_template.py', server_config='srvx1.py') w = WorkFlows(exp_config='exp_template.py', server_config='teaching.py')
id = w.assimilate(assim_time, prior_init_time, prior_valid_time, prior_path_exp) id = w.assimilate(assim_time, prior_init_time, prior_valid_time, prior_path_exp)
......
...@@ -5,13 +5,13 @@ Copy and customize it as you wish. ...@@ -5,13 +5,13 @@ Copy and customize it as you wish.
from dartwrf.utils import Experiment from dartwrf.utils import Experiment
exp = Experiment() exp = Experiment()
exp.expname = "exp_test" exp.expname = "exp_2"
exp.model_dx = 2000 exp.model_dx = 2000
exp.n_ens = 4 exp.n_ens = 40
exp.do_quality_control = False exp.do_quality_control = False
# Path to the nature run. From there, observations are generated. Wildcards "*" are allowed in this path. # Path to the nature run. From there, observations are generated. Wildcards "*" are allowed in this path.
exp.nature_wrfout_pattern = '/users/students/lehre/advDA_s2023/data/sample_nature/wrfout_d01_%Y-%m-%d_%H:%M:%S' exp.nature_wrfout_pattern = '/lehre/advDA_s2023/data/sample_nature/wrfout_d01_%Y-%m-%d_%H:%M:%S'
# Path to sounding profiles for ensemble initialization. Not used in the Advanced DA course. # Path to sounding profiles for ensemble initialization. Not used in the Advanced DA course.
exp.input_profile = '/mnt/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof' exp.input_profile = '/mnt/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof'
...@@ -31,7 +31,7 @@ exp.dart_nml = {'&assim_tools_nml': ...@@ -31,7 +31,7 @@ exp.dart_nml = {'&assim_tools_nml':
output_members='.true.', output_members='.true.',
output_mean='.true.', output_mean='.true.',
output_sd='.true.', output_sd='.true.',
stages_to_write='output', stages_to_write=['output', 'preassim', 'postassim'],
), ),
'&quality_control_nml': '&quality_control_nml':
dict(outlier_threshold='-1', dict(outlier_threshold='-1',
......
"""
This configuration file is designed for the course Advanced Data Assimilation at the University of Vienna.
Copy and customize it as you wish.
"""
from dartwrf.utils import Experiment
exp = Experiment()
exp.expname = "exp_test11"
exp.model_dx = 2000
exp.n_ens = 10
exp.do_quality_control = False
# Path to the nature run. From there, observations are generated. Wildcards "*" are allowed in this path.
exp.nature_wrfout_pattern = '/lehre/advDA_s2023/data/sample_nature/wrfout_d01_%Y-%m-%d_%H:%M:%S'
# Path to sounding profiles for ensemble initialization. Not used in the Advanced DA course.
exp.input_profile = '/mnt/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof'
# Configuration of DART. For details see the DART or DART-WRF documentation.
exp.dart_nml = {'&assim_tools_nml':
dict(filter_kind='1',
sampling_error_correction='.true.',
),
'&filter_nml':
dict( ens_size=exp.n_ens,
num_output_state_members=exp.n_ens,
num_output_obs_members=exp.n_ens,
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':
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='.false.',
),
'&model_nml':
dict(wrf_state_variables =
[['U', 'QTY_U_WIND_COMPONENT', 'TYPE_U', 'UPDATE','999',],
['V', 'QTY_V_WIND_COMPONENT', 'TYPE_V', 'UPDATE','999',],
['W', 'QTY_VERTICAL_VELOCITY', 'TYPE_W', 'UPDATE','999',],
['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',],
['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',]],
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 is the number of observations
# currently allowed values are 22500 for one observation approximately every 2km; 5776 for 4km, and 961 for 10km resolution; 256 for 20km; 121 for 30km
# Note for radar, n_obs is the number of observations at each observation height level
# oeinf is the observation inflation factor (1 means no inflation)
oeinf = 1
vis = dict(var_name='VIS 0.6µm', unit='[1]',
kind='MSG_4_SEVIRI_BDRF', sat_channel=1,
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*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=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,
n_obs=1, obs_locations='square_array_evenly_on_grid',
error_generate=5., error_assimilate=10.,
loc_horiz_km=32)
radar = dict(var_name='Radar reflectivity', unit='[dBz]',
kind='RADAR_REFLECTIVITY',
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),
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',
#n_obs=22500, 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),
loc_horiz_km=50, loc_vert_km=2.5)
q = dict(var_name='Specific humidity', unit='[kg/kg]',
kind='RADIOSONDE_SPECIFIC_HUMIDITY', n_obs=1,
error_generate=0., error_assimilate=5*1e-5,
heights=[1000], #range(1000, 17001, 2000),
loc_horiz_km=50, loc_vert_km=2.5)
t2m = dict(var_name='SYNOP Temperature', unit='[K]',
kind='SYNOP_TEMPERATURE',
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=1,
error_generate=50., error_assimilate=100.,
loc_horiz_km=32, loc_vert_km=5)
exp.observations = [t]
# 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'
"""Cluster configuration file, see docstring of ClusterConfig class in dartwrf/utils.py for details"""
from dartwrf import utils
from dartwrf.exp_config import exp
cluster = utils.ClusterConfig(exp)
cluster.name = 'teaching'
cluster.max_nproc = 6
cluster.use_slurm = False
# binaries
cluster.python = 'python'
cluster.python_verif = '/users/staff/lkugler/miniconda3/bin/python'
cluster.ncks = '/headless/envs/rttov/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.exe'
cluster.dart_modules = 'pip install scipy; '
cluster.wrf_modules = ''
# paths for data output
cluster.wrf_rundir_base = utils.userhome+'/AdvDA/run_WRF/' # path for temporary files
cluster.dart_rundir_base = utils.userhome+'/AdvDA/run_DART/' # path for temporary files
cluster.archive_base = utils.userhome+'/data/sim_archive/'
# paths used as input
cluster.srcdir = '/users/staff/lkugler/AdvDA23/DART/WRF-4.3/run'
cluster.dart_srcdir = '/headless/envs/DART/models/wrf/work'
cluster.rttov_srcdir = '/headless/envs/rttov/rtcoef_rttov13/'
cluster.dartwrf_dir = utils.userhome+'/AdvDA/DART-WRF/'
cluster.geo_em_for_WRF_ideal = '/lehre/advDA_s2023/data/geo_em.d01.nc'
# templates/run scripts
cluster.namelist = cluster.dartwrf_dir+'/../templates/namelist.input'
cluster.run_WRF = cluster.dartwrf_dir+'/run_ens.jet.sh'
cluster.slurm_cfg = None
from dartwrf import utils """
This configuration file is designed for the course Advanced Data Assimilation at the University of Vienna.
exp = utils.Experiment() Copy and customize it as you wish.
exp.expname = "template_experiment" """
from dartwrf.utils import Experiment
exp = Experiment()
exp.expname = "exp_2"
exp.model_dx = 2000 exp.model_dx = 2000
exp.n_ens = 40 exp.n_ens = 40
exp.superob_km = False # False or int (spatial averaging of observations, unit: km) exp.do_quality_control = False
exp.do_quality_control = False # bool
# 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. From there, observations are generated. Wildcards "*" are allowed in this path.
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' exp.nature_wrfout_pattern = '/lehre/advDA_s2023/data/sample_nature/wrfout_d01_%Y-%m-%d_%H:%M:%S'
# for initialization profiles # Path to sounding profiles for ensemble initialization. Not used in the Advanced DA course.
exp.input_profile = '/mnt/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof' exp.input_profile = '/mnt/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof'
# Configuration of DART. For details see the DART or DART-WRF documentation.
exp.dart_nml = {'&assim_tools_nml': exp.dart_nml = {'&assim_tools_nml':
dict(filter_kind='1', 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': '&filter_nml':
dict( ens_size=exp.n_ens, dict( ens_size=exp.n_ens,
num_output_state_members=exp.n_ens, num_output_state_members=exp.n_ens,
num_output_obs_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_members='.true.',
output_mean='.true.', output_mean='.true.',
output_sd='.true.', output_sd='.true.',
stages_to_write='output', stages_to_write=['output', 'preassim', 'postassim'],
), ),
'&quality_control_nml': '&quality_control_nml':
dict(outlier_threshold='-1', 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': '&location_nml':
dict(horiz_dist_only='.true.', dict(horiz_dist_only='.false.',
), ),
'&model_nml': '&model_nml':
dict(wrf_state_variables = dict(wrf_state_variables =
...@@ -47,38 +56,72 @@ exp.dart_nml = {'&assim_tools_nml': ...@@ -47,38 +56,72 @@ exp.dart_nml = {'&assim_tools_nml':
['PH', 'QTY_GEOPOTENTIAL_HEIGHT', 'TYPE_GZ', 'UPDATE','999',], ['PH', 'QTY_GEOPOTENTIAL_HEIGHT', 'TYPE_GZ', 'UPDATE','999',],
['THM', 'QTY_POTENTIAL_TEMPERATURE','TYPE_T', 'UPDATE','999',], ['THM', 'QTY_POTENTIAL_TEMPERATURE','TYPE_T', 'UPDATE','999',],
['MU', 'QTY_PRESSURE', 'TYPE_MU', 'UPDATE','999',], ['MU', 'QTY_PRESSURE', 'TYPE_MU', 'UPDATE','999',],
['QVAPOR','QTY_VAPOR_MIXING_RATIO', 'TYPE_QV', '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',], ['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',], ['CLDFRA','QTY_CLOUD_FRACTION', 'TYPE_CFRAC','UPDATE','999',],
['PSFC', 'QTY_SURFACE_PRESSURE', 'TYPE_PSFC', 'UPDATE','999',], ['PSFC', 'QTY_SURFACE_PRESSURE', 'TYPE_PSFC', 'UPDATE','999',],
['T2', 'QTY_2M_TEMPERATURE', 'TYPE_T', 'UPDATE','999',], ['T2', 'QTY_2M_TEMPERATURE', 'TYPE_T', 'UPDATE','999',],
['TSK', 'QTY_SKIN_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 # n_obs is the number of observations
# currently allowed values are 22500 for one observation approximately every 2km; 5776 for 4km, and 961 for 10km resolution; 256 for 20km; 121 for 30km
# Note for radar, n_obs is the number of observations at each observation height level
# oeinf is the observation inflation factor (1 means no inflation)
oeinf = 1
vis = dict(var_name='VIS 0.6µm', unit='[1]', vis = dict(var_name='VIS 0.6µm', unit='[1]',
kind='MSG_4_SEVIRI_BDRF', sat_channel=1, kind='MSG_4_SEVIRI_BDRF', sat_channel=1,
n_obs=256, 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', n_obs=961, obs_locations='square_array_evenly_on_grid',
error_generate=1., error_assimilate=2., # n_obs=1, obs_locations=[(44.141, -0.99)],
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]', wv73 = dict(var_name='Brightness temperature WV 7.3µm', unit='[K]',
kind='MSG_4_SEVIRI_TB', sat_channel=6, kind='MSG_4_SEVIRI_TB', sat_channel=6,
n_obs=961, obs_locations='square_array_evenly_on_grid', n_obs=961, obs_locations='square_array_evenly_on_grid',
error_generate=1., error_assimilate=3., error_generate=1, error_assimilate=1*oeinf,
loc_horiz_km=20) 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]', ir108 = dict(var_name='Brightness temperature IR 10.8µm', unit='[K]',
kind='MSG_4_SEVIRI_TB', sat_channel=9, kind='MSG_4_SEVIRI_TB', sat_channel=9,
...@@ -88,10 +131,11 @@ ir108 = dict(var_name='Brightness temperature IR 10.8µm', unit='[K]', ...@@ -88,10 +131,11 @@ ir108 = dict(var_name='Brightness temperature IR 10.8µm', unit='[K]',
radar = dict(var_name='Radar reflectivity', unit='[dBz]', radar = dict(var_name='Radar reflectivity', unit='[dBz]',
kind='RADAR_REFLECTIVITY', kind='RADAR_REFLECTIVITY',
n_obs=5776, obs_locations='square_array_evenly_on_grid', n_obs=961, obs_locations='square_array_evenly_on_grid',
error_generate=2.5, error_assimilate=2.5, # n_obs=2, obs_locations=[(45.332, 0.4735), (45.332, 0.53)],
heights=range(2000, 14001, 2000), 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]', t = dict(var_name='Temperature', unit='[K]',
kind='RADIOSONDE_TEMPERATURE', kind='RADIOSONDE_TEMPERATURE',
...@@ -102,25 +146,33 @@ t = dict(var_name='Temperature', unit='[K]', ...@@ -102,25 +146,33 @@ t = dict(var_name='Temperature', unit='[K]',
loc_horiz_km=50, loc_vert_km=2.5) loc_horiz_km=50, loc_vert_km=2.5)
q = dict(var_name='Specific humidity', unit='[kg/kg]', q = dict(var_name='Specific humidity', unit='[kg/kg]',
kind='RADIOSONDE_SPECIFIC_HUMIDITY', kind='RADIOSONDE_SPECIFIC_HUMIDITY', n_obs=1,
n_obs=961, obs_locations='square_array_evenly_on_grid',
error_generate=0., error_assimilate=5*1e-5, error_generate=0., error_assimilate=5*1e-5,
heights=[1000], #range(1000, 17001, 2000), 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]', t2m = dict(var_name='SYNOP Temperature', unit='[K]',
kind='SYNOP_TEMPERATURE', kind='SYNOP_TEMPERATURE',
n_obs=961, obs_locations='square_array_evenly_on_grid', n_obs=256, obs_locations='square_array_evenly_on_grid',
error_generate=0.1, error_assimilate=0.1, error_generate=0.3, error_assimilate=0.3,
loc_horiz_km=40, loc_vert_km=2.5) loc_horiz_km=10, loc_vert_km=2)
psfc = dict(var_name='SYNOP Pressure', unit='[Pa]', psfc = dict(var_name='SYNOP Pressure', unit='[Pa]',
kind='SYNOP_SURFACE_PRESSURE', kind='SYNOP_SURFACE_PRESSURE', n_obs=1,
n_obs=961, obs_locations='square_array_evenly_on_grid',
error_generate=50., error_assimilate=100., error_generate=50., error_assimilate=100.,
loc_horiz_km=32, loc_vert_km=5) loc_horiz_km=32, loc_vert_km=5)
exp.observations = [vis] exp.observations = [t]
# 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', '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'
...@@ -3,39 +3,33 @@ from dartwrf import utils ...@@ -3,39 +3,33 @@ from dartwrf import utils
from dartwrf.exp_config import exp from dartwrf.exp_config import exp
cluster = utils.ClusterConfig(exp) cluster = utils.ClusterConfig(exp)
cluster.name = 'jet' cluster.name = 'teaching'
cluster.max_nproc = 12 cluster.max_nproc = 6
cluster.use_slurm = True cluster.use_slurm = False
cluster.size_jobarray = 40
# binaries # binaries
cluster.python = '/jetfs/home/lkugler/miniconda3/envs/DART/bin/python' cluster.python = 'python'
cluster.python_verif = '/jetfs/home/lkugler/miniconda3/envs/enstools/bin/python' cluster.python_verif = '/users/staff/lkugler/miniconda3/bin/python'
cluster.ncks = '/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1/nco-5.1.0-izrhxv24jqco5epjhf5ledsqwanojc5m/bin/ncks' cluster.ncks = '/headless/envs/rttov/bin/ncks'
cluster.ideal = '/jetfs/home/lkugler/bin/ideal-v4.3_v1.22.exe' 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.wrfexe = '' #/jetfs/home/lkugler/bin/wrf-v4.3_v1.22.exe'
cluster.dart_modules = 'module purge; module load netcdf-fortran/4.5.3-gcc-8.5.0-qsqbozc;' cluster.dart_modules = 'pip install scipy; '
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 cluster.wrf_modules = ''
export HDF5=/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1/hdf5-1.12.2-w5sw2dqpcq2orlmeowleamoxr65dhhdc
"""
# paths for data output # paths for data output
cluster.wrf_rundir_base = '/jetfs/home/lkugler/data/run_WRF/' # path for temporary files cluster.wrf_rundir_base = utils.userhome+'/AdvDA/run_WRF/' # path for temporary files
cluster.dart_rundir_base = '/jetfs/home/lkugler/data/run_DART/' # path for temporary files cluster.dart_rundir_base = utils.userhome+'/AdvDA/run_DART/' # path for temporary files
cluster.archive_base = '/jetfs/home/lkugler/data/sim_archive/' cluster.archive_base = utils.userhome+'/data/sim_archive/'
# paths used as input # paths used as input
cluster.srcdir = '/jetfs/home/lkugler/data/compile/WRF-4.3/run' cluster.srcdir = '/users/staff/lkugler/AdvDA23/DART/WRF-4.3/run'
cluster.dart_srcdir = '/jetfs/home/lkugler/data/compile/DART/DART-10.5.3/models/wrf/work' cluster.dart_srcdir = '/headless/envs/DART/models/wrf/work'
cluster.rttov_srcdir = '/jetfs/home/lkugler/data/compile/RTTOV13/rtcoef_rttov13/' cluster.rttov_srcdir = '/headless/envs/rttov/rtcoef_rttov13/'
cluster.dartwrf_dir = '/jetfs/home/lkugler/DART-WRF/' cluster.dartwrf_dir = utils.userhome+'/AdvDA/DART-WRF/'
cluster.geo_em_for_WRF_ideal = '/lehre/advDA_s2023/data/geo_em.d01.nc'
# other inputs # templates/run scripts
cluster.geo_em_for_WRF_ideal = '/jetfs/home/lkugler/data/geo_em.d01.nc' cluster.namelist = cluster.dartwrf_dir+'/../templates/namelist.input'
cluster.obs_impact_filename = cluster.dartwrf_dir+'/templates/impactfactor_T.txt' cluster.run_WRF = cluster.dartwrf_dir+'/run_ens.jet.sh'
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", cluster.slurm_cfg = None
"ntasks": "1", "ntasks-per-core": "1", "mem": "50G",
"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.
Please register or to comment