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
# 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",
......
......@@ -103,6 +103,7 @@
mix_full_fields = .true., .true., .true.,
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
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.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)
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