diff --git a/analysis_only.py b/analysis_only.py index 3076265ab1939ce1e0981aef681b57b549e10f9d..899241dfb06ab119b28906723e76bb43002f1163 100755 --- a/analysis_only.py +++ b/analysis_only.py @@ -6,9 +6,9 @@ import datetime as dt from dartwrf.workflows import WorkFlows -prior_path_exp = '/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_noDA' +prior_path_exp = '/users/students/lehre/advDA_s2023/data/sample_ensemble/' prior_init_time = dt.datetime(2008,7,30,12) -prior_valid_time = dt.datetime(2008,7,30,12,30) +prior_valid_time = dt.datetime(2008,7,30,13) assim_time = prior_valid_time w = WorkFlows(exp_config='cfg.py', server_config='srvx1.py') diff --git a/config/cfg.py b/config/cfg.py index 46ea5e79ed96bff447c0cc862e01b85d9f09aea8..8a833a6659cd82e4498917e0e87079e07c6f0a5c 100755 --- a/config/cfg.py +++ b/config/cfg.py @@ -1,7 +1,7 @@ from dartwrf import utils exp = utils.Experiment() -exp.expname = "test_newcode" +exp.expname = "obs-cold_localization-narrow" exp.model_dx = 2000 exp.n_ens = 10 @@ -9,30 +9,20 @@ exp.filter_kind = 1 exp.prior_inflation = 0 exp.post_inflation = 4 exp.sec = True -exp.reject_smallFGD = False -exp.cov_loc_vert_km_horiz_km = (3, 20) +exp.cov_loc_vert_km_horiz_km = (4, 40) exp.superob_km = False # False or int (spatial averaging of observations) exp.adjust_obs_impact = False exp.use_existing_obsseq = False # False or pathname (use precomputed obs_seq.out files) -#exp.use_existing_obsseq = '/jetfs/home/lkugler/data/sim_archive/NoImpactFactors/obs_seq_out/2008-07-30_%H:%M_obs_seq.out' -#exp.use_existing_obsseq = '/jetfs/home/lkugler/data/sim_archive/exp_v1.21_P3_wbub7_VIS_obs10_loc20/obs_seq_out/2008-07-30_%H:%M_obs_seq.out' -#exp.use_existing_obsseq = '/gpfs/data/fs71386/lkugler/sim_archive/exp_v1.21_P3_wbub7_REFL2D_obs10_loc20_oe5/obs_seq_out/2008-07-30_%H:%M_obs_seq.out' -#exp.use_existing_obsseq = '/gpfs/data/fs71386/lkugler/sim_archive/exp_v1.21_P2_rr_VIS_obs20_loc4/obs_seq_out/2008-07-30_%H:%M_obs_seq.out' +exp.use_existing_obsseq = '/users/students/lehre/advDA_s2023/dartwrf_tutorial/very_cold_observation.out' -#exp.nature = '/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_nat/2008-07-30_12:00/1' -exp.nature = '/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.18_P1_nature/2008-07-30_06:00/1' +# path to the nature run, where we take observations from +exp.nature = '/users/students/lehre/advDA_s2023/data/sample_nature/' exp.input_profile = '/mnt/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof' -#exp.input_profile = '/gpfs/data/fs71386/lkugler/initial_profiles/wrf/ens/2022-03-31/raso.nat.<iens>.wrfprof' -#exp.input_profile = '/gpfs/data/fs71386/lkugler/initial_profiles/wrf/ens/2022-05-18/raso.fc.<iens>.wrfprof' - -# localize vertically, if it has a vertical position -# needs a horizontal scale too, to calculate the vertical normalization -# since you can not specify different vertical localizations for diff. variables - -# n_obs= 22500: 2km, 5776: 4km, 121: 30km, 256:16x16 (20km); 961: 10km resoltn # radar: n_obs for each observation height level +# 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 vis = dict(plotname='VIS 0.6µm', plotunits='[1]', kind='MSG_4_SEVIRI_BDRF', sat_channel=1, @@ -82,15 +72,15 @@ q = dict(plotname='Specific humidity', plotunits='[kg/kg]', t2m = dict(plotname='SYNOP Temperature', plotunits='[K]', kind='SYNOP_TEMPERATURE', n_obs=1, - error_generate=0.1, error_assimilate=1., - cov_loc_radius_km=20) + error_generate=0.1, error_assimilate=0.1, + cov_loc_radius_km=40) psfc = dict(plotname='SYNOP Pressure', plotunits='[Pa]', kind='SYNOP_SURFACE_PRESSURE', n_obs=1, error_generate=50., error_assimilate=100., cov_loc_radius_km=32) -exp.observations = [t] +exp.observations = [t2m] exp.update_vars = ['U', 'V', 'W', 'THM', 'PH', 'MU', 'QVAPOR', 'QCLOUD', 'QICE', 'PSFC'] #exp.update_vars = ['U', 'V', 'W', 'T', 'PH', 'MU', 'QVAPOR', 'PSFC'] diff --git a/config/jet.py b/config/jet.py index 24bb5338f15119c870e88c294e9b656740a87836..757b95ca10c01d845b393f2733ef81f3dc39304b 100755 --- a/config/jet.py +++ b/config/jet.py @@ -56,6 +56,9 @@ cluster.ncks = '/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1 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 netcdf-fortran/4.5.3-gcc-8.5.0-qsqbozc;' +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 +""" # paths for data output cluster.wrf_rundir_base = '/jetfs/home/lkugler/data/run_WRF/' # path for temporary files diff --git a/config/srvx1.py b/config/srvx1.py index 6e1cf0a49e1039c53b2a6dd6579731a11295a491..afbc74bcc2a1271fa2cc5b1793a97d86a450b49f 100755 --- a/config/srvx1.py +++ b/config/srvx1.py @@ -63,7 +63,7 @@ cluster.archive_base = utils.userhome+'/data/sim_archive/' cluster.srcdir = '/users/staff/lkugler/AdvDA23/DART/WRF-4.3/run' cluster.dart_srcdir = '/users/students/lehre/advDA_s2023/DART/models/wrf/work' cluster.rttov_srcdir = '/users/students/lehre/advDA_s2023/RTTOV13/rtcoef_rttov13/' -cluster.scriptsdir = utils.userhome+'/DART-WRF/dartwrf/' +cluster.scriptsdir = utils.userhome+'/AdvDA23/DART-WRF/dartwrf/' cluster.geo_em = '/users/students/lehre/advDA_s2023/data/geo_em.d01.nc' # templates/run scripts diff --git a/dartwrf/run_ens.jet.sh b/dartwrf/run_ens.jet.sh index b2aa49aeb732e8b838963c25f25d8a89c57f8630..52aa2fc9d2acb60c53bcefa2fa65cd93e69cbbb0 100755 --- a/dartwrf/run_ens.jet.sh +++ b/dartwrf/run_ens.jet.sh @@ -1,6 +1,4 @@ -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> export SLURM_STEP_GRES=none echo "SLURM_ARRAY_TASK_ID:"$SLURM_ARRAY_TASK_ID diff --git a/dartwrf/workflows.py b/dartwrf/workflows.py index 96883bb7b1de1b531aaf5e2ba41eae2a92ccdae8..69ca06ab8ca92fb9d79852b18add1f2cff61064d 100644 --- a/dartwrf/workflows.py +++ b/dartwrf/workflows.py @@ -226,8 +226,11 @@ class WorkFlows(object): id = self.cluster.run_job(' '.join(args), "preWRF", cfg_update=dict(time="2"), depends_on=[depends_on]) - cmd = script_to_str(self.cluster.run_WRF).replace('<exp.expname>', exp.expname - ).replace('<cluster.wrf_rundir_base>', self.cluster.wrf_rundir_base) + cmd = script_to_str(self.cluster.run_WRF + ).replace('<exp.expname>', exp.expname + ).replace('<cluster.wrf_rundir_base>', self.cluster.wrf_rundir_base + ).replace('<cluster.wrf_modules>', self.cluster.wrf_modules) + time_in_simulation_hours = (end-begin).total_seconds()/3600 runtime_wallclock_mins_expected = int(8+time_in_simulation_hours*9.5) # usually below 9 min/hour diff --git a/docs/source/conf.py b/docs/source/conf.py index 673128efa9e14de1d9091624975b651fdc2a0736..cdc7c648e5f2e92ab089e0392f4cdccd563c585f 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -23,7 +23,8 @@ extensions = [ 'sphinx.ext.autosummary', 'sphinx.ext.intersphinx', 'sphinx.ext.napoleon', - 'nbsphinx' + 'nbsphinx', + 'sphinx_rtd_theme', ] autodoc_mock_imports = ['numpy','scipy','xarray','pandas','netCDF4','osselyze','osselyze.utils'] diff --git a/env-minimal.yml b/env-minimal.yml deleted file mode 100644 index e02578e729020fd7eb937eb801a24e74758006a6..0000000000000000000000000000000000000000 --- a/env-minimal.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: DART -channels: - - conda-forge - - defaults -dependencies: - - cdo - - docopt - - hdf5 - - ipython - - matplotlib - - nco - - netcdf-fortran - - netcdf4 - - numpy - - pandas - - pip - - python - - python-dateutil - - pytz - - proj4 - - scipy - - setuptools - - wrf-python - - xarray - - yaml - - pysolar>=0.10.0 diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 7665a709edc1694b4e8d48d0190183d564c1f6cb..0000000000000000000000000000000000000000 --- a/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -pysolar=0.10=pypi_0 diff --git a/templates/input.nml b/templates/input.nml index 3cc9b63416f67b10e1660c02c3ec9aa3ce1c083e..38edbde9bd8e107176766e6fadeb563c7d3f3670 100644 --- a/templates/input.nml +++ b/templates/input.nml @@ -51,7 +51,7 @@ output_timestamps = .false., trace_execution = .false., - stages_to_write = 'output' + stages_to_write = 'preassim', 'postassim' output_members = .true. output_mean = .true. output_sd = .true.