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

minor changes

parent 972961b5
Branches
Tags
No related merge requests found
......@@ -12,12 +12,10 @@ cluster.np_WRF = 16
# binaries
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.ideal = '/jetfs/home/lkugler/data/compile/bin/ideal-v4.3-quarter_ss-20250204.exe'
cluster.wrfexe = '/jetfs/home/lkugler/bin/wrf-v4.3_v1.22_ifort_20230413.exe'
cluster.ideal = '/jetfs/home/lkugler/data/compile/bin/ideal-v4.6.0_20250210_StS.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.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
"""
cluster.wrf_modules = """module purge; module load netcdf-fortran/4.5.3-intel-2021.7.1-27ldrnt"""
# paths for data output
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/'
# other inputs
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.obs_impact_filename = cluster.dartwrf_dir+'/templates/impactfactor_T.txt'
cluster.namelist = cluster.dartwrf_dir+'/config/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.slurm_cfg = {"account": "lkugler", "partition": "all",
......
......@@ -101,8 +101,9 @@
tke_adv_opt = 1, 1, 1,
non_hydrostatic = .true., .true., .true.,
mix_full_fields = .true., .true., .true.,
use_theta_m = 1,
use_theta_m = 1,
top_lid = .true.,
pert_coriolis = .true.,
/
&bdy_control
......@@ -127,5 +128,5 @@
/
&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__":
"""
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_btw_assim = dt.timedelta(minutes=15)
......@@ -46,7 +46,7 @@ if __name__ == "__main__":
init_time = dt.datetime(2008, 7, 30, 11,45)
time = dt.datetime(2008, 7, 30, 12)
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)
# id = w.run_ideal(depends_on=id)
......@@ -61,17 +61,16 @@ if __name__ == "__main__":
# i.e. 13z as a prior to assimilate 12z observations
prior_valid_time = time
if False:
if True:
ACF_config = dict(
var='WV73',
# 192, 96, 48, 24, 12), #(256, 128, 64, 32, 16), # #
scales_km=(12,), #192, 96, 48, 24, 12),
scales_km=(192, 96, 48, 24, 12),
observed_width_km=384,
dx_km_obs=1.0,
dx_km_forecast=2.0,
# ('value', 0.6), #('percentile', 30), #('value', 230), #('value', 0.6), #('value', 230), #('percentile', 90), # ('value', 0.6), #
threshold=('value', 230),
difference=False,
difference=True,
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',
......@@ -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_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_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_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_SO_difference.csv',
......
......@@ -423,9 +423,8 @@ def write_namelist(just_prior_values=False):
write_namelist_from_dict(nml, cluster.dart_rundir + "/input.nml")
# append section for RTTOV
rttov_nml = cluster.dartwrf_dir + "/templates/obs_def_rttov.VIS.nml"
append_file(cluster.dart_rundir + "/input.nml", rttov_nml)
# alternatively, we could do this in cfg.py or the template input.nml in DART's model/wrf/work folder
if hasattr(cluster, 'rttov_nml'):
append_file(cluster.dart_rundir + "/input.nml", cluster.rttov_nml)
return nml # in case we want to access namelist settings in python
......
......@@ -4,20 +4,18 @@ from dartwrf.exp_config import exp
cluster = utils.ClusterConfig(exp)
cluster.name = 'jet'
cluster.max_nproc = 12
cluster.max_nproc = 20
cluster.use_slurm = True
cluster.size_WRF_jobarray = exp.n_ens
cluster.np_WRF = 12
cluster.np_WRF = 16
# 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.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 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
"""
cluster.ideal = '/jetfs/home/lkugler/data/compile/bin/ideal-v4.6.0_20250210_StS.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.wrf_modules = """module purge; module load netcdf-fortran/4.5.3-intel-2021.7.1-27ldrnt"""
# paths for data output
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/'
# 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.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.dartwrf_dir = '/jetfs/home/lkugler/DART-WRF/'
# other inputs
cluster.geo_em_for_WRF_ideal = '/jetfs/home/lkugler/data/geo_em.d01.nc'
cluster.obs_impact_filename = cluster.dartwrf_dir+'/templates/impactfactor_T.txt'
cluster.namelist = cluster.dartwrf_dir+'/templates/namelist.input'
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.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.slurm_cfg = {"account": "lkugler", "partition": "compute", #"nodelist": "jet07",
cluster.slurm_cfg = {"account": "lkugler", "partition": "all",
"ntasks": "1", "ntasks-per-core": "1", "mem": "30G",
"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)
inits = [dt.datetime(2008, 7, 30, 8)]
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)))
input_is_restart = False
# w.prepare_WRFrundir(inits[0]) # create initial conditions
#id = w.run_ideal(depends_on=id)
#sys.exit()
w.prepare_WRFrundir(inits[0]) # create initial conditions
id = w.run_ideal(depends_on=id)
# id = wrfinput_insert_wbubble(perturb=True, depends_on=id)
time = inits[0]
......@@ -147,28 +146,28 @@ if True: # do a free run (all inits)
w.verify_sat(depends_on=id_sat)
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)
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 = '/jetfs/scratch/lkugler/data/sim_archive/exp_v1.23_P2_noDA+1'
# prior_init_time = dt.datetime(2008, 7, 30, 13, 15)
# prior_valid_time = start
# id = w.prepare_IC_from_prior(
# prior_path_exp, prior_init_time, prior_valid_time, depends_on=id)
# id = w.run_ENS(begin=start, end=end,
# input_is_restart=True,
# #output_restart_interval=(end-start).total_seconds()/60,
# output_restart_interval=9999,
# depends_on=id)
# id = w.create_satimages(start, depends_on=id)
# w.verify_sat(id)
# w.verify_wrf(id)
prior_path_exp = w.cluster.archivedir
# prior_path_exp = '/jetfs/scratch/lkugler/data/sim_archive/exp_v1.23_P2_noDA+1'
prior_init_time = dt.datetime(2008, 7, 30, 8)
prior_valid_time = start
id = w.prepare_IC_from_prior(
prior_path_exp, prior_init_time, prior_valid_time, depends_on=id)
id = w.run_ENS(begin=start, end=end,
input_is_restart=True,
#output_restart_interval=(end-start).total_seconds()/60,
output_restart_interval=9999,
depends_on=id)
id = w.create_satimages(start, depends_on=id)
w.verify_sat(id)
w.verify_wrf(id)
if False: # to continue a free run after spinup
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