Skip to content
Snippets Groups Projects
Commit 2ab4b71b authored by Kaushambi Jyoti's avatar Kaushambi Jyoti :white_sun_rain_cloud:
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