Skip to content
Snippets Groups Projects
Commit 22aec756 authored by Lukas Kugler's avatar Lukas Kugler
Browse files

minor changes

parent 972961b5
No related branches found
No related tags found
No related merge requests found
...@@ -12,12 +12,10 @@ cluster.np_WRF = 16 ...@@ -12,12 +12,10 @@ cluster.np_WRF = 16
# binaries # binaries
cluster.python = '/jetfs/home/lkugler/miniforge3/envs/verif/bin/python' cluster.python = '/jetfs/home/lkugler/miniforge3/envs/verif/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 = '/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1/nco-5.1.0-izrhxv24jqco5epjhf5ledsqwanojc5m/bin/ncks'
cluster.ideal = '/jetfs/home/lkugler/data/compile/bin/ideal-v4.3-quarter_ss-20250204.exe' cluster.ideal = '/jetfs/home/lkugler/data/compile/bin/ideal-v4.6.0_20250210_StS.exe'
cluster.wrfexe = '/jetfs/home/lkugler/bin/wrf-v4.3_v1.22_ifort_20230413.exe' cluster.wrfexe = '/jetfs/home/lkugler/data/compile/bin/wrf-v4.6.0_20250210_StS.exe'
cluster.dart_modules = 'module purge; module load rttov/v13.2-gcc-8.5.0' 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 cluster.wrf_modules = """module purge; module load netcdf-fortran/4.5.3-intel-2021.7.1-27ldrnt"""
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 = '/jetfs/home/lkugler/data/run_WRF/' # path for temporary files
...@@ -33,8 +31,9 @@ cluster.dartwrf_dir = '/jetfs/home/lkugler/DART-WRF/' ...@@ -33,8 +31,9 @@ cluster.dartwrf_dir = '/jetfs/home/lkugler/DART-WRF/'
# other inputs # other inputs
cluster.geo_em_nature = '/jetfs/home/lkugler/data/sim_archive/geo_em.d01.nc.250m_1600x1600' cluster.geo_em_nature = '/jetfs/home/lkugler/data/sim_archive/geo_em.d01.nc.250m_1600x1600'
cluster.geo_em_forecast = '/jetfs/home/lkugler/data/sim_archive/geo_em.d01.nc.2km_200x200' cluster.geo_em_forecast = '/jetfs/home/lkugler/data/sim_archive/geo_em.d01.nc.2km_200x200'
cluster.obs_impact_filename = cluster.dartwrf_dir+'/templates/impactfactor_T.txt' #cluster.obs_impact_filename = cluster.dartwrf_dir+'/templates/impactfactor_T.txt'
cluster.namelist = cluster.dartwrf_dir+'/config/templates/namelist.input' cluster.namelist = cluster.dartwrf_dir+'/config/templates/namelist.input_nat_exact'
cluster.rttov_nml = cluster.dartwrf_dir + "/config/templates/obs_def_rttov.VIS+WV.nml"
cluster.run_WRF = '/jetfs/home/lkugler/DART-WRF/dartwrf/run_ens.jet.sh' cluster.run_WRF = '/jetfs/home/lkugler/DART-WRF/dartwrf/run_ens.jet.sh'
cluster.slurm_cfg = {"account": "lkugler", "partition": "all", cluster.slurm_cfg = {"account": "lkugler", "partition": "all",
......
...@@ -103,6 +103,7 @@ ...@@ -103,6 +103,7 @@
mix_full_fields = .true., .true., .true., mix_full_fields = .true., .true., .true.,
use_theta_m = 1, use_theta_m = 1,
top_lid = .true., top_lid = .true.,
pert_coriolis = .true.,
/ /
&bdy_control &bdy_control
...@@ -127,5 +128,5 @@ ...@@ -127,5 +128,5 @@
/ /
&ideal &ideal
ideal_case = 2 ideal_case = 9 ! les
/ /
&obs_def_rttov_nml
rttov_sensor_db_file = 'rttov_sensor_db.csv'
first_lvl_is_sfc = .true.
mw_clear_sky_only = .false.
interp_mode = 1
do_checkinput = .true.
apply_reg_limits = .true.
verbose = .true.
fix_hgpl = .false.
do_lambertian = .false.
lambertian_fixed_angle = .true.
rad_down_lin_tau = .true.
use_q2m = .false.
use_uv10m = .false.
use_wfetch = .false.
use_water_type = .false.
addrefrac = .true.
plane_parallel = .false.
use_salinity = .false.
cfrac_data = .true.
clw_data = .true.
rain_data = .false.
ciw_data = .true.
snow_data = .false.
graupel_data = .false.
hail_data = .false.
w_data = .false.
clw_scheme = 2
clw_cloud_top = 322.
fastem_version = 6
supply_foam_fraction = .false.
use_totalice = .true.
use_zeeman = .false.
cc_threshold = 0.05
ozone_data = .false.
co2_data = .false.
n2o_data = .false.
co_data = .false.
ch4_data = .false.
so2_data = .false.
addsolar = .true.
rayleigh_single_scatt = .false.
do_nlte_correction = .false.
solar_sea_brdf_model = 2
ir_sea_emis_model = 2
use_sfc_snow_frac = .false.
add_aerosl = .false.
aerosl_type = 1
add_clouds = .true.
ice_scheme = 1
use_icede = .true.
idg_scheme = 1
user_aer_opt_param = .false.
user_cld_opt_param = .false.
grid_box_avg_cloud = .true.
cldcol_threshold = -1.0
cloud_overlap = 1
ir_scatt_model = 2
vis_scatt_model = 3
dom_nstreams = 8
dom_accuracy = 0.0
dom_opdep_threshold = 0.0
addpc = .false.
npcscores = -1
addradrec = .false.
ipcreg = 1
use_htfrtc = .false.
htfrtc_n_pc = -1
htfrtc_simple_cloud = .false.
htfrtc_overcast = .false.
/
...@@ -9,7 +9,7 @@ if __name__ == "__main__": ...@@ -9,7 +9,7 @@ if __name__ == "__main__":
""" """
Run a cycled OSSE with WRF and DART. Run a cycled OSSE with WRF and DART.
""" """
w = WorkFlows(exp_config='exp_hires.py', server_config='jet.py') w = WorkFlows(exp_config='exp_hires.py', server_config='jet_ACF.py')
timedelta_integrate = dt.timedelta(minutes=15) timedelta_integrate = dt.timedelta(minutes=15)
timedelta_btw_assim = dt.timedelta(minutes=15) timedelta_btw_assim = dt.timedelta(minutes=15)
...@@ -46,7 +46,7 @@ if __name__ == "__main__": ...@@ -46,7 +46,7 @@ if __name__ == "__main__":
init_time = dt.datetime(2008, 7, 30, 11,45) init_time = dt.datetime(2008, 7, 30, 11,45)
time = dt.datetime(2008, 7, 30, 12) time = dt.datetime(2008, 7, 30, 12)
last_assim_time = dt.datetime(2008, 7, 30, 13) last_assim_time = dt.datetime(2008, 7, 30, 13)
forecast_until = dt.datetime(2008, 7, 30, 13,15) forecast_until = dt.datetime(2008, 7, 30, 18)
w.prepare_WRFrundir(init_time) w.prepare_WRFrundir(init_time)
# id = w.run_ideal(depends_on=id) # id = w.run_ideal(depends_on=id)
...@@ -61,17 +61,16 @@ if __name__ == "__main__": ...@@ -61,17 +61,16 @@ if __name__ == "__main__":
# i.e. 13z as a prior to assimilate 12z observations # i.e. 13z as a prior to assimilate 12z observations
prior_valid_time = time prior_valid_time = time
if False: if True:
ACF_config = dict( ACF_config = dict(
var='WV73', var='WV73',
# 192, 96, 48, 24, 12), #(256, 128, 64, 32, 16), # # scales_km=(192, 96, 48, 24, 12),
scales_km=(12,), #192, 96, 48, 24, 12),
observed_width_km=384, observed_width_km=384,
dx_km_obs=1.0, dx_km_obs=1.0,
dx_km_forecast=2.0, dx_km_forecast=2.0,
# ('value', 0.6), #('percentile', 30), #('value', 230), #('value', 0.6), #('value', 230), #('percentile', 90), # ('value', 0.6), # # ('value', 0.6), #('percentile', 30), #('value', 230), #('value', 0.6), #('value', 230), #('percentile', 90), # ('value', 0.6), #
threshold=('value', 230), threshold=('value', 230),
difference=False, difference=True,
first_guess_pattern='/RT_wrfout_d01_%Y-%m-%d_%H:%M:%S.nc', first_guess_pattern='/RT_wrfout_d01_%Y-%m-%d_%H:%M:%S.nc',
# observed_data='/jetfs/scratch/a11716773/master_thesis_2023/data2/sim_archive/nature_dx=2000m/RT_wrfout_d01_%Y-%m-%d_%H:%M:%S.nc', # observed_data='/jetfs/scratch/a11716773/master_thesis_2023/data2/sim_archive/nature_dx=2000m/RT_wrfout_d01_%Y-%m-%d_%H:%M:%S.nc',
...@@ -82,8 +81,8 @@ if __name__ == "__main__": ...@@ -82,8 +81,8 @@ if __name__ == "__main__":
# obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_VIS/OE_VIS_CF_0.6.csv', # obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_VIS/OE_VIS_CF_0.6.csv',
# obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_VIS/OE_VIS_CF_0.6_difference.csv', # obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_VIS/OE_VIS_CF_0.6_difference.csv',
# obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_VIS/OE_VIS_SO_difference.csv', # obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_VIS/OE_VIS_SO_difference.csv',
obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_IR/OE-WV73_CF_230.csv', #obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_IR/OE-WV73_CF_230.csv',
# obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_IR/OE-WV73_CF_230_difference.csv', obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_IR/OE-WV73_CF_230_difference.csv',
# obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_IR/OE-WV73_superobs.csv', # obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_IR/OE-WV73_superobs.csv',
# obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_IR/OE-WV73_SO_difference.csv', # obs_err_csv='/jetfs/home/lkugler/CloudfractionDA/data/hrNat_IR/OE-WV73_SO_difference.csv',
......
...@@ -423,9 +423,8 @@ def write_namelist(just_prior_values=False): ...@@ -423,9 +423,8 @@ def write_namelist(just_prior_values=False):
write_namelist_from_dict(nml, cluster.dart_rundir + "/input.nml") write_namelist_from_dict(nml, cluster.dart_rundir + "/input.nml")
# append section for RTTOV # append section for RTTOV
rttov_nml = cluster.dartwrf_dir + "/templates/obs_def_rttov.VIS.nml" if hasattr(cluster, 'rttov_nml'):
append_file(cluster.dart_rundir + "/input.nml", rttov_nml) append_file(cluster.dart_rundir + "/input.nml", cluster.rttov_nml)
# alternatively, we could do this in cfg.py or the template input.nml in DART's model/wrf/work folder
return nml # in case we want to access namelist settings in python return nml # in case we want to access namelist settings in python
......
...@@ -4,20 +4,18 @@ from dartwrf.exp_config import exp ...@@ -4,20 +4,18 @@ from dartwrf.exp_config import exp
cluster = utils.ClusterConfig(exp) cluster = utils.ClusterConfig(exp)
cluster.name = 'jet' cluster.name = 'jet'
cluster.max_nproc = 12 cluster.max_nproc = 20
cluster.use_slurm = True cluster.use_slurm = True
cluster.size_WRF_jobarray = exp.n_ens cluster.size_WRF_jobarray = exp.n_ens
cluster.np_WRF = 12 cluster.np_WRF = 16
# binaries # binaries
cluster.python = '/jetfs/home/lkugler/miniconda3/envs/DART/bin/python' cluster.python = '/jetfs/home/lkugler/miniforge3/envs/verif/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 = '/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.ideal = '/jetfs/home/lkugler/data/compile/bin/ideal-v4.6.0_20250210_StS.exe'
cluster.wrfexe = '/jetfs/home/lkugler/bin/wrf-v4.3_v1.22_ifort_20230413.exe' cluster.wrfexe = '/jetfs/home/lkugler/data/compile/bin/wrf-v4.6.0_20250210_StS.exe'
cluster.dart_modules = 'module purge; module load rttov/v13.2-gcc-8.5.0; ' 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 cluster.wrf_modules = """module purge; module load netcdf-fortran/4.5.3-intel-2021.7.1-27ldrnt"""
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 = '/jetfs/home/lkugler/data/run_WRF/' # path for temporary files
...@@ -26,16 +24,32 @@ cluster.archive_base = '/jetfs/home/lkugler/data/sim_archive/' ...@@ -26,16 +24,32 @@ cluster.archive_base = '/jetfs/home/lkugler/data/sim_archive/'
# paths used as input # paths used as input
cluster.srcdir = '/jetfs/home/lkugler/data/compile/WRF-4.3/run' cluster.srcdir = '/jetfs/home/lkugler/data/compile/WRF-4.3/run'
cluster.dart_srcdir = '/jetfs/home/lkugler/data/compile/DART/DART-10.8.3/models/wrf/work' cluster.dart_srcdir = '/jetfs/home/lkugler/data/compile/DART/DART-10.8.3_10pct/models/wrf/work/'
cluster.rttov_srcdir = '/jetfs/home/lkugler/data/compile/RTTOV13/rtcoef_rttov13/' cluster.rttov_srcdir = '/jetfs/home/lkugler/data/compile/RTTOV13/rtcoef_rttov13/'
cluster.dartwrf_dir = '/jetfs/home/lkugler/DART-WRF/' cluster.dartwrf_dir = '/jetfs/home/lkugler/DART-WRF/'
# other inputs # other inputs
cluster.geo_em_for_WRF_ideal = '/jetfs/home/lkugler/data/geo_em.d01.nc' cluster.geo_em_nature = '/jetfs/home/lkugler/data/sim_archive/geo_em.d01.nc.250m_1600x1600'
cluster.obs_impact_filename = cluster.dartwrf_dir+'/templates/impactfactor_T.txt' cluster.geo_em_forecast = '/jetfs/home/lkugler/data/sim_archive/geo_em.d01.nc.2km_200x200'
cluster.namelist = cluster.dartwrf_dir+'/templates/namelist.input' #cluster.obs_impact_filename = cluster.dartwrf_dir+'/templates/impactfactor_T.txt'
cluster.namelist = cluster.dartwrf_dir+'/config/templates/namelist.input_nat_exact'
cluster.rttov_nml = cluster.dartwrf_dir + "/config/templates/obs_def_rttov.VIS+WV.nml"
cluster.run_WRF = '/jetfs/home/lkugler/DART-WRF/dartwrf/run_ens.jet.sh' 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 = {"account": "lkugler", "partition": "all",
"ntasks": "1", "ntasks-per-core": "1", "mem": "30G", "ntasks": "1", "ntasks-per-core": "1", "mem": "30G",
"mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"} "mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"}
# WRF file format, will only change if WRF changes
cluster.wrfout_format = '/wrfout_d01_%Y-%m-%d_%H:%M:%S'
# pattern for the init_time folder in sim_archive
cluster.pattern_init_time = "/%Y-%m-%d_%H:%M/"
# how an obs_seq.out file is archived
cluster.pattern_obs_seq_out = cluster.archivedir + \
"/diagnostics/%Y-%m-%d_%H:%M_obs_seq.out"
# how an obs_seq.final file is archived
cluster.pattern_obs_seq_final = cluster.archivedir + \
"/diagnostics/%Y-%m-%d_%H:%M_obs_seq.final"
...@@ -95,14 +95,13 @@ if True: # do a free run (all inits) ...@@ -95,14 +95,13 @@ if True: # do a free run (all inits)
inits = [dt.datetime(2008, 7, 30, 8)] inits = [dt.datetime(2008, 7, 30, 8)]
inits += list(pd.date_range(start=dt.datetime(2008, 7, 30, 11), inits += list(pd.date_range(start=dt.datetime(2008, 7, 30, 11),
end=dt.datetime(2008, 7, 30, 14), end=dt.datetime(2008, 7, 30, 15),
freq=dt.timedelta(minutes=15))) freq=dt.timedelta(minutes=15)))
input_is_restart = False input_is_restart = False
# w.prepare_WRFrundir(inits[0]) # create initial conditions w.prepare_WRFrundir(inits[0]) # create initial conditions
#id = w.run_ideal(depends_on=id) id = w.run_ideal(depends_on=id)
#sys.exit()
# id = wrfinput_insert_wbubble(perturb=True, depends_on=id) # id = wrfinput_insert_wbubble(perturb=True, depends_on=id)
time = inits[0] time = inits[0]
...@@ -147,28 +146,28 @@ if True: # do a free run (all inits) ...@@ -147,28 +146,28 @@ if True: # do a free run (all inits)
w.verify_sat(depends_on=id_sat) w.verify_sat(depends_on=id_sat)
if False: # to continue a free run if False: # to continue a free run
start = dt.datetime(2008, 7, 30, 13, 30) start = dt.datetime(2008, 7, 30, 14)
end = dt.datetime(2008, 7, 30, 18) end = dt.datetime(2008, 7, 30, 18)
w.prepare_WRFrundir(start) w.prepare_WRFrundir(start)
id = w.run_ideal(depends_on=id) # id = w.run_ideal(depends_on=id)
# prior_path_exp = w.cluster.archivedir prior_path_exp = w.cluster.archivedir
# # prior_path_exp = '/jetfs/scratch/lkugler/data/sim_archive/exp_v1.23_P2_noDA+1' # prior_path_exp = '/jetfs/scratch/lkugler/data/sim_archive/exp_v1.23_P2_noDA+1'
# prior_init_time = dt.datetime(2008, 7, 30, 13, 15) prior_init_time = dt.datetime(2008, 7, 30, 8)
# prior_valid_time = start prior_valid_time = start
# id = w.prepare_IC_from_prior( id = w.prepare_IC_from_prior(
# prior_path_exp, prior_init_time, prior_valid_time, depends_on=id) prior_path_exp, prior_init_time, prior_valid_time, depends_on=id)
# id = w.run_ENS(begin=start, end=end, id = w.run_ENS(begin=start, end=end,
# input_is_restart=True, input_is_restart=True,
# #output_restart_interval=(end-start).total_seconds()/60, #output_restart_interval=(end-start).total_seconds()/60,
# output_restart_interval=9999, output_restart_interval=9999,
# depends_on=id) depends_on=id)
# id = w.create_satimages(start, depends_on=id) id = w.create_satimages(start, depends_on=id)
# w.verify_sat(id) w.verify_sat(id)
# w.verify_wrf(id) w.verify_wrf(id)
if False: # to continue a free run after spinup if False: # to continue a free run after spinup
start = dt.datetime(2008, 7, 30, 12) start = dt.datetime(2008, 7, 30, 12)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment