diff --git a/config/jet.py b/config/jet.py
index 6eaf448a35666664ee9ff824ab075e143d8e786e..ebb475d6120fc2e88ed44c90aec7644f1cd2972c 100755
--- a/config/jet.py
+++ b/config/jet.py
@@ -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",  
diff --git a/config/templates/namelist.input b/config/templates/namelist.input
index 02d0422b6357120a7b78654c1a8f81a299d965db..74cfd66dd9973319d823ee07118496cd1d5ea401 100644
--- a/config/templates/namelist.input
+++ b/config/templates/namelist.input
@@ -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
  /
diff --git a/config/templates/obs_def_rttov.VIS.nml b/config/templates/obs_def_rttov.VIS.nml
deleted file mode 100644
index 50099921558e3ecd438fac23c97c86b24d4cb3b9..0000000000000000000000000000000000000000
--- a/config/templates/obs_def_rttov.VIS.nml
+++ /dev/null
@@ -1,71 +0,0 @@
-&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.
-/
diff --git a/cycled_exp.py b/cycled_exp.py
index 42b71b51688e12b62a41a86590da62c6cc51932c..91ab2babbb42b59569ad5e44f4a1f5a1cee7c496 100755
--- a/cycled_exp.py
+++ b/cycled_exp.py
@@ -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',
 
diff --git a/dartwrf/dart_nml.py b/dartwrf/dart_nml.py
index a0474ee7b08efee5fad3c6ed330651a1c4ab0cb6..08204b7af47c93778cea9bf5e58bbd55107e688c 100644
--- a/dartwrf/dart_nml.py
+++ b/dartwrf/dart_nml.py
@@ -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
 
diff --git a/dartwrf/server_config.py b/dartwrf/server_config.py
index 54df3835c982d055e9825b0f4162dcd68b94a0dc..ebb475d6120fc2e88ed44c90aec7644f1cd2972c 100755
--- a/dartwrf/server_config.py
+++ b/dartwrf/server_config.py
@@ -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"  
diff --git a/free_forecast.py b/free_forecast.py
index 17286a898f7317ac1f909ba7dcf8404fe1c439c7..9a8c3976b53a3392b0fd36b1f5f36b18ab679013 100755
--- a/free_forecast.py
+++ b/free_forecast.py
@@ -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)