From ebeaba1eced0ec7aa33a588e838e1aca20933230 Mon Sep 17 00:00:00 2001
From: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com>
Date: Tue, 7 May 2024 21:31:58 -0400
Subject: [PATCH 1/7] add license (#745)
---
LICENSE.md | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 157 insertions(+)
create mode 100644 LICENSE.md
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000000..0927556b54
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,157 @@
+### GNU LESSER GENERAL PUBLIC LICENSE
+
+Version 3, 29 June 2007
+
+Copyright (C) 2007 Free Software Foundation, Inc.
+
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+This version of the GNU Lesser General Public License incorporates the
+terms and conditions of version 3 of the GNU General Public License,
+supplemented by the additional permissions listed below.
+
+#### 0. Additional Definitions.
+
+As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the
+GNU General Public License.
+
+"The Library" refers to a covered work governed by this License, other
+than an Application or a Combined Work as defined below.
+
+An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+#### 1. Exception to Section 3 of the GNU GPL.
+
+You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+#### 2. Conveying Modified Versions.
+
+If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+- a) under this License, provided that you make a good faith effort
+ to ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+- b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+#### 3. Object Code Incorporating Material from Library Header Files.
+
+The object code form of an Application may incorporate material from a
+header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+- a) Give prominent notice with each copy of the object code that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+- b) Accompany the object code with a copy of the GNU GPL and this
+ license document.
+
+#### 4. Combined Works.
+
+You may convey a Combined Work under terms of your choice that, taken
+together, effectively do not restrict modification of the portions of
+the Library contained in the Combined Work and reverse engineering for
+debugging such modifications, if you also do each of the following:
+
+- a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+- b) Accompany the Combined Work with a copy of the GNU GPL and this
+ license document.
+- c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+- d) Do one of the following:
+ - 0) Convey the Minimal Corresponding Source under the terms of
+ this License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+ - 1) Use a suitable shared library mechanism for linking with
+ the Library. A suitable mechanism is one that (a) uses at run
+ time a copy of the Library already present on the user's
+ computer system, and (b) will operate properly with a modified
+ version of the Library that is interface-compatible with the
+ Linked Version.
+- e) Provide Installation Information, but only if you would
+ otherwise be required to provide such information under section 6
+ of the GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the Application
+ with a modified version of the Linked Version. (If you use option
+ 4d0, the Installation Information must accompany the Minimal
+ Corresponding Source and Corresponding Application Code. If you
+ use option 4d1, you must provide the Installation Information in
+ the manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.)
+
+#### 5. Combined Libraries.
+
+You may place library facilities that are a work based on the Library
+side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+- a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities, conveyed under the terms of this License.
+- b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+#### 6. Revised Versions of the GNU Lesser General Public License.
+
+The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+as you received it specifies that a certain numbered version of the
+GNU Lesser General Public License "or any later version" applies to
+it, you have the option of following the terms and conditions either
+of that published version or of any later version published by the
+Free Software Foundation. If the Library as you received it does not
+specify a version number of the GNU Lesser General Public License, you
+may choose any version of the GNU Lesser General Public License ever
+published by the Free Software Foundation.
+
+If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
From 59d7578b31454140cb38bf65b27e3cffb02c7e3e Mon Sep 17 00:00:00 2001
From: DavidBurrows-NCO <82525974+DavidBurrows-NCO@users.noreply.github.com>
Date: Mon, 20 May 2024 11:51:45 -0400
Subject: [PATCH 2/7] Update module files to build gsi on Gaea-C5 (#746)
---
modulefiles/gsi_gaea.intel.lua | 26 ++++++++------------------
regression/regression_param.sh | 34 +++++++++++++++++-----------------
regression/regression_var.sh | 16 ++++++----------
ush/module-setup.sh | 4 +---
ush/sub_gaea | 12 ++++++------
5 files changed, 38 insertions(+), 54 deletions(-)
diff --git a/modulefiles/gsi_gaea.intel.lua b/modulefiles/gsi_gaea.intel.lua
index 96643202a7..799822caa8 100644
--- a/modulefiles/gsi_gaea.intel.lua
+++ b/modulefiles/gsi_gaea.intel.lua
@@ -1,18 +1,13 @@
help([[
]])
-unload("intel")
-unload("cray-mpich")
-unload("cray-python")
-unload("darshan")
+prepend_path("MODULEPATH", "/ncrc/proj/epic/spack-stack/spack-stack-1.6.0/envs/gsi-addon-dev/install/modulefiles/Core")
-prepend_path("MODULEPATH", "/lustre/f2/dev/wpo/role.epic/contrib/spack-stack/spack-stack-1.4.1-c4/envs/unified-env/install/modulefiles/Core")
-prepend_path("MODULEPATH", "/lustre/f2/pdata/esrl/gsd/spack-stack/modulefiles")
-
-local stack_python_ver=os.getenv("stack_python_ver") or "3.9.12"
-local stack_intel_ver=os.getenv("stack_intel_ver") or "2022.0.2"
-local stack_cray_mpich_ver=os.getenv("stack_cray_mpich_ver") or "7.7.20"
+local stack_python_ver=os.getenv("stack_python_ver") or "3.11.6"
+local stack_intel_ver=os.getenv("stack_intel_ver") or "2023.1.0"
+local stack_cray_mpich_ver=os.getenv("stack_cray_mpich_ver") or "8.1.25"
local cmake_ver=os.getenv("cmake_ver") or "3.23.1"
+local prod_util_ver=os.getenv("prod_util_ver") or "2.1.1"
load(pathJoin("stack-intel", stack_intel_ver))
load(pathJoin("stack-cray-mpich", stack_cray_mpich_ver))
@@ -20,23 +15,18 @@ load(pathJoin("stack-python", stack_python_ver))
load(pathJoin("cmake", cmake_ver))
load("gsi_common")
-
-local prod_util_ver=os.getenv("prod_util_ver") or "1.2.2"
-load(pathJoin("prod-util", prod_util_ver))
-
--- Needed at runtime:
-load("alps")
+load(pathJoin("prod_util", prod_util_ver))
local MKLROOT="/opt/intel/oneapi/mkl/2022.0.2/"
prepend_path("LD_LIBRARY_PATH",pathJoin(MKLROOT,"lib/intel64"))
pushenv("MKLROOT", MKLROOT)
-pushenv("GSI_BINARY_SOURCE_DIR", "/lustre/f2/dev/role.epic/contrib/GSI_data/fix/20240208")
+pushenv("GSI_BINARY_SOURCE_DIR", "/gpfs/f5/ufs-ard/world-shared/GSI_data/fix/gsi/20240208")
setenv("CC","cc")
setenv("FC","ftn")
setenv("CXX","CC")
pushenv("CRAYPE_LINK_TYPE","dynamic")
+unload("cray-libsci")
whatis("Description: GSI environment on Gaea with Intel Compilers")
-
diff --git a/regression/regression_param.sh b/regression/regression_param.sh
index a4f5d7035c..6ee72f14da 100755
--- a/regression/regression_param.sh
+++ b/regression/regression_param.sh
@@ -26,8 +26,8 @@ case $machine in
;;
Gaea)
sub_cmd="sub_gaea"
- memnode=64
- numcore=36
+ memnode=251
+ numcore=128
;;
wcoss2)
sub_cmd="sub_wcoss2"
@@ -69,8 +69,8 @@ case $regtest in
topts[1]="0:30:00" ; popts[1]="48/2" ; ropts[1]="/1"
topts[2]="0:30:00" ; popts[2]="60/3" ; ropts[2]="/2"
elif [[ "$machine" = "Gaea" ]]; then
- topts[1]="0:10:00" ; popts[1]="18/8/" ; ropts[1]="/1"
- topts[2]="0:10:00" ; popts[2]="18/10/" ; ropts[2]="/2"
+ topts[1]="0:10:00" ; popts[1]="12/8/" ; ropts[1]="/1"
+ topts[2]="0:10:00" ; popts[2]="12/10/" ; ropts[2]="/2"
elif [[ "$machine" = "wcoss2" ]]; then
topts[1]="0:10:00" ; popts[1]="12/8/" ; ropts[1]="/1"
topts[2]="0:10:00" ; popts[2]="12/10/" ; ropts[2]="/2"
@@ -99,8 +99,8 @@ case $regtest in
topts[1]="0:15:00" ; popts[1]="5/4/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="10/4/" ; ropts[2]="/1"
elif [[ "$machine" = "Gaea" ]]; then
- topts[1]="0:15:00" ; popts[1]="18/1/" ; ropts[1]="/1"
- topts[2]="0:15:00" ; popts[2]="18/2/" ; ropts[2]="/1"
+ topts[1]="0:15:00" ; popts[1]="64/1/" ; ropts[1]="/1"
+ topts[2]="0:15:00" ; popts[2]="128/2/" ; ropts[2]="/1"
elif [[ "$machine" = "wcoss2" ]]; then
topts[1]="0:15:00" ; popts[1]="64/1/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="128/2/" ; ropts[2]="/1"
@@ -129,8 +129,8 @@ case $regtest in
topts[1]="0:15:00" ; popts[1]="5/4/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="10/4/" ; ropts[2]="/1"
elif [[ "$machine" = "Gaea" ]]; then
- topts[1]="0:15:00" ; popts[1]="18/1/" ; ropts[1]="/1"
- topts[2]="0:15:00" ; popts[2]="18/2/" ; ropts[2]="/1"
+ topts[1]="0:15:00" ; popts[1]="64/1/" ; ropts[1]="/1"
+ topts[2]="0:15:00" ; popts[2]="128/2/" ; ropts[2]="/1"
elif [[ "$machine" = "wcoss2" ]]; then
topts[1]="0:15:00" ; popts[1]="64/1/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="128/2/" ; ropts[2]="/1"
@@ -158,8 +158,8 @@ case $regtest in
topts[1]="0:15:00" ; popts[1]="5/4/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="10/4/" ; ropts[2]="/1"
elif [[ "$machine" = "Gaea" ]]; then
- topts[1]="0:15:00" ; popts[1]="18/1/" ; ropts[1]="/1"
- topts[2]="0:15:00" ; popts[2]="18/2/" ; ropts[2]="/1"
+ topts[1]="0:15:00" ; popts[1]="64/1/" ; ropts[1]="/1"
+ topts[2]="0:15:00" ; popts[2]="128/2/" ; ropts[2]="/1"
elif [[ "$machine" = "wcoss2" ]]; then
topts[1]="0:15:00" ; popts[1]="64/1/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="128/2/" ; ropts[2]="/1"
@@ -188,8 +188,8 @@ case $regtest in
topts[1]="0:15:00" ; popts[1]="4/4/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="6/6/" ; ropts[2]="/1"
elif [[ "$machine" = "Gaea" ]]; then
- topts[1]="0:15:00" ; popts[1]="4/4/" ; ropts[1]="/1"
- topts[2]="0:15:00" ; popts[2]="6/6/" ; ropts[2]="/1"
+ topts[1]="0:15:00" ; popts[1]="28/1/" ; ropts[1]="/1"
+ topts[2]="0:15:00" ; popts[2]="28/2/" ; ropts[2]="/1"
elif [[ "$machine" = "wcoss2" ]]; then
topts[1]="0:15:00" ; popts[1]="28/1/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="28/2/" ; ropts[2]="/1"
@@ -218,8 +218,8 @@ case $regtest in
topts[1]="0:30:00" ; popts[1]="6/12/" ; ropts[1]="/1"
topts[2]="0:30:00" ; popts[2]="8/12/" ; ropts[2]="/1"
elif [[ "$machine" = "Gaea" ]]; then
- topts[1]="0:30:00" ; popts[1]="8/6/" ; ropts[1]="/1"
- topts[2]="0:30:00" ; popts[2]="8/8/" ; ropts[2]="/1"
+ topts[1]="0:30:00" ; popts[1]="14/8/" ; ropts[1]="/1"
+ topts[2]="0:30:00" ; popts[2]="14/14/" ; ropts[2]="/1"
elif [[ "$machine" = "wcoss2" ]]; then
topts[1]="0:30:00" ; popts[1]="14/8/" ; ropts[1]="/1"
topts[2]="0:30:00" ; popts[2]="14/14/" ; ropts[2]="/2"
@@ -248,8 +248,8 @@ case $regtest in
topts[1]="0:10:00" ; popts[1]="12/3/" ; ropts[1]="/1"
topts[2]="0:10:00" ; popts[2]="12/5/" ; ropts[2]="/2"
elif [[ "$machine" = "Gaea" ]]; then
- topts[1]="0:10:00" ; popts[1]="12/3/" ; ropts[1]="/1"
- topts[2]="0:10:00" ; popts[2]="12/5/" ; ropts[2]="/2"
+ topts[1]="0:10:00" ; popts[1]="16/2/" ; ropts[1]="/1"
+ topts[2]="0:10:00" ; popts[2]="16/4/" ; ropts[2]="/2"
elif [[ "$machine" = "wcoss2" ]]; then
topts[1]="0:10:00" ; popts[1]="16/2/" ; ropts[1]="/1"
topts[2]="0:10:00" ; popts[2]="16/4/" ; ropts[2]="/2"
@@ -315,7 +315,7 @@ elif [[ "$machine" = "Gaea" ]]; then
export MPI_BUFS_PER_PROC=256
export MPI_BUFS_PER_HOST=256
export MPI_GROUP_MAX=256
- export APRUN="srun --export=ALL --mpi=pmi2 -n \$ntasks"
+ export APRUN="srun --export=ALL -n \$ntasks"
elif [[ "$machine" = "wcoss2" ]]; then
export OMP_PLACES=cores
export OMP_STACKSIZE=2G
diff --git a/regression/regression_var.sh b/regression/regression_var.sh
index 315028675c..aebbccab8b 100755
--- a/regression/regression_var.sh
+++ b/regression/regression_var.sh
@@ -36,7 +36,7 @@ elif [[ -d /mnt/lfs4 || -d /jetmon || -d /mnt/lfs1 ]]; then # Jet
export machine="Jet"
elif [[ -d /discover ]]; then # NCCS Discover
export machine="Discover"
-elif [[ -d /sw/gaea ]]; then # Gaea
+elif [[ -d /ncrc ]]; then # Gaea
export machine="Gaea"
elif [[ -d /data/prod ]]; then # S4
export machine="S4"
@@ -52,17 +52,13 @@ echo "Running Regression Tests on '$machine'";
case $machine in
Gaea)
export queue="normal"
- export noscrub="/lustre/f2/scratch/$LOGNAME/gsi_tmp/noscrub"
- export ptmp="/lustre/f2/scratch/$LOGNAME/gsi_tmp/ptmp"
- export casesdir="/lustre/f2/dev/role.epic/contrib/GSI_data/CASES/regtest"
-
- export group="global"
- if [[ "$cmaketest" = "false" ]]; then
- export basedir="/lustre/f2/dev/$LOGNAME/sandbox/GSI"
- fi
+ export group="ufs-ard"
+ export noscrub="/gpfs/f5/${group}/scratch/${USER}/$LOGNAME/gsi_tmp/noscrub"
+ export ptmp="/gpfs/f5/${group}/scratch/${USER}/$LOGNAME/gsi_tmp/ptmp"
+ export casesdir="/gpfs/f5/ufs-ard/world-shared/GSI_data/CASES/regtest"
export check_resource="no"
- export accnt="nggps_emc"
+ export accnt="ufs-ard"
;;
wcoss2)
export local_or_default="${local_or_default:-/lfs/h2/emc/da/noscrub/$LOGNAME}"
diff --git a/ush/module-setup.sh b/ush/module-setup.sh
index f587842f0f..299e13aa4e 100755
--- a/ush/module-setup.sh
+++ b/ush/module-setup.sh
@@ -56,10 +56,8 @@ elif [[ $MACHINE_ID = gaea* ]] ; then
# the module command fails. Hence we actually have to source
# /etc/profile here.
source /etc/profile
- __ms_source_etc_profile=yes
fi
-
- source /lustre/f2/dev/role.epic/contrib/Lmod_init.sh
+ module reset
elif [[ $MACHINE_ID = expanse* ]]; then
# We are on SDSC Expanse
diff --git a/ush/sub_gaea b/ush/sub_gaea
index afad6aa7ab..9c4e253c93 100755
--- a/ush/sub_gaea
+++ b/ush/sub_gaea
@@ -88,8 +88,8 @@ output=${output:-$jobname.out}
myuser=$LOGNAME
myhost=$(hostname)
-if [ -d /lustre/f2/scratch/$LOGNAME ]; then
- DATA=/lustre/f2/scratch/$LOGNAME/tmp
+if [ -d /gpfs/f5/epic/scratch/${USER}/$LOGNAME ]; then
+ DATA=/gpfs/f5/epic/scratch/${USER}/$LOGNAME/tmp
fi
DATA=${DATA:-$ptmp/tmp}
@@ -110,7 +110,7 @@ echo ""
echo "#SBATCH --output=$output" >> $cfile
echo "#SBATCH --job-name=$jobname" >> $cfile
echo "#SBATCH --qos=$queue" >> $cfile
-echo "#SBATCH --clusters=c4" >> $cfile
+echo "#SBATCH --clusters=c5" >> $cfile
echo "#SBATCH --time=$timew" >> $cfile
echo "#SBATCH --nodes=$nodes --ntasks-per-node=$procs --cpus-per-task=$threads" >> $cfile
echo "#SBATCH --account=$accnt" >> $cfile
@@ -121,13 +121,13 @@ echo "export ntasks=$(( $nodes * $procs ))" >> $cfile
echo "export ppn=$procs" >> $cfile
echo "export threads=$threads" >> $cfile
echo "export OMP_NUM_THREADS=$threads" >> $cfile
-echo "ulimit -s unlimited" >> $cfile
+echo "ulimit -s unlimited" >> $cfile
echo "" >>$cfile
echo ". "$(awk '{ print $1, $2, $3, $4, $5, $6, $7, $8, $9 }' $regdir/regression_var.out) >>$cfile
echo "" >>$cfile
-echo "source /lustre/f2/dev/role.epic/contrib/Lmod_init.sh" >> $cfile
+echo "module reset" >> $cfile
echo "module use $modulefiles" >> $cfile
echo "module load gsi_gaea.intel" >> $cfile
echo "module list" >> $cfile
@@ -158,7 +158,7 @@ sbatch=${sbatch:-sbatch}
ofile=$DATA/subout$$
>$ofile
chmod 777 $ofile
-$sbatch --export=ALL $cfile >$ofile
+$sbatch $cfile >$ofile
rc=$?
cat $ofile
if [[ -w $SUBLOG ]];then
From f82dc3405704d0022c20b200f053272e9bbb3383 Mon Sep 17 00:00:00 2001
From: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com>
Date: Fri, 21 Jun 2024 10:01:21 -0400
Subject: [PATCH 3/7] add two band sdl to global_4denvar namelist (#758)
---
regression/regression_namelists.sh | 6 ++++--
regression/regression_namelists_db.sh | 9 ++++++---
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/regression/regression_namelists.sh b/regression/regression_namelists.sh
index 620f776526..d360dfd870 100755
--- a/regression/regression_namelists.sh
+++ b/regression/regression_namelists.sh
@@ -195,10 +195,12 @@ OBS_INPUT::
/
&HYBRID_ENSEMBLE
- l_hyb_ens=.true.,n_ens=$NMEM_ENKF,beta_s0=0.125,readin_beta=.false.,s_ens_h=800,s_ens_v=-0.8,
+ l_hyb_ens=.true.,n_ens=$NMEM_ENKF,beta_s0=0.125,readin_beta=.false.,
generate_ens=.false.,uv_hyb_ens=.true.,jcap_ens=48,nlat_ens=98,nlon_ens=192,
- ANISO_A_EN=.false.,jcap_ens_test=48,oz_univ_static=.false.,readin_localization=.true.,
+ ANISO_A_EN=.false.,jcap_ens_test=48,oz_univ_static=.false.,
ensemble_path='./ensemble_data/',ens_fast_read=.true.,write_ens_sprd=.false.,
+ s_ens_h=1000.0,450.0,685.0,s_ens_v=-0.5,-0.5,0.0,readin_localization=.false.,
+ global_spectral_filter_sd=.false.,r_ensloccov4scl=1,nsclgrp=2,naensloc=3,
$HYBRID_ENSEMBLE
/
&RAPIDREFRESH_CLDSURF
diff --git a/regression/regression_namelists_db.sh b/regression/regression_namelists_db.sh
index e03917e888..83718b50d5 100755
--- a/regression/regression_namelists_db.sh
+++ b/regression/regression_namelists_db.sh
@@ -174,9 +174,12 @@ OBS_INPUT::
$LAGDATA
/
&HYBRID_ENSEMBLE
- l_hyb_ens=.true.,n_ens=10,beta_s0=0.125,readin_beta=.false.,s_ens_h=800,s_ens_v=-0.8,generate_ens=.false.,uv_hyb_ens=.true.,jcap_ens=190,
- nlat_ens=194,nlon_ens=384,aniso_a_en=.false.,jcap_ens_test=62,oz_univ_static=.false.,readin_localization=.true.,ensemble_path='./ensemble_data/',
- ens_fast_read=.true.,write_ens_sprd=.false.,
+ l_hyb_ens=.true.,n_ens=$NMEM_ENKF,beta_s0=0.125,readin_beta=.false.,
+ generate_ens=.false.,uv_hyb_ens=.true.,jcap_ens=48,nlat_ens=98,nlon_ens=192,
+ ANISO_A_EN=.false.,jcap_ens_test=48,oz_univ_static=.false.,
+ ensemble_path='./ensemble_data/',ens_fast_read=.true.,write_ens_sprd=.false.,
+ s_ens_h=1000.0,450.0,685.0,s_ens_v=-0.5,-0.5,0.0,readin_localization=.false.,
+ global_spectral_filter_sd=.false.,r_ensloccov4scl=1,nsclgrp=2,naensloc=3,
$HYBRID_ENSEMBLE
/
&RAPIDREFRESH_CLDSURF
From 6a87460bd9d116d3e4b0ceadc565f66496443636 Mon Sep 17 00:00:00 2001
From: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com>
Date: Tue, 25 Jun 2024 08:12:01 -0400
Subject: [PATCH 4/7] update path to global ctest model data (#762)
---
regression/global_4denvar.sh | 6 +++---
regression/global_enkf.sh | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/regression/global_4denvar.sh b/regression/global_4denvar.sh
index 177ce0f8a9..945200eb66 100755
--- a/regression/global_4denvar.sh
+++ b/regression/global_4denvar.sh
@@ -61,7 +61,7 @@ suffix=tm00.bufr_d
dumpges=gdas
COMROOTgfs=$casesdir/gfs/prod
datobs=$COMROOTgfs/$dumpobs.$PDYa/${cyca}/obs
-dathis=$COMROOTgfs/$dumpges.$PDYg/${cycg}/model_data/atmos/history
+dathis=$COMROOTgfs/$dumpges.$PDYg/${cycg}/model/atmos/history
datanl=$COMROOTgfs/gdas.$PDYg/${cycg}/analysis/atmos
datens=$COMROOTgfs/enkfgdas.$PDYg/${cycg}
@@ -291,7 +291,7 @@ $nln $dathis/${prefix_ges}.atmf007.nc ./sigf07
$nln $dathis/${prefix_ges}.atmf008.nc ./sigf08
$nln $dathis/${prefix_ges}.atmf009.nc ./sigf09
-$nln $datens/ensstat/model_data/atmos/history/${prefix_ens}.sfcf006.ensmean.nc ./sfcf06_anlgrid
+$nln $datens/ensstat/model/atmos/history/${prefix_ens}.sfcf006.ensmean.nc ./sfcf06_anlgrid
export ENS_PATH='./ensemble_data/'
mkdir -p ${ENS_PATH}
@@ -301,7 +301,7 @@ for fh in $flist; do
imem=1
while [[ $imem -le $NMEM_ENKF ]]; do
member="mem"`printf %03i $imem`
- $nln $datens/$member/model_data/atmos/history/$sigens ${ENS_PATH}sigf${fh}_ens_${member}
+ $nln $datens/$member/model/atmos/history/$sigens ${ENS_PATH}sigf${fh}_ens_${member}
(( imem = $imem + 1 ))
done
done
diff --git a/regression/global_enkf.sh b/regression/global_enkf.sh
index ca40abda52..a35f8d109f 100755
--- a/regression/global_enkf.sh
+++ b/regression/global_enkf.sh
@@ -163,13 +163,13 @@ nfhrs=`echo $IAUFHRS_ENKF | sed 's/,/ /g'`
for fhr in $nfhrs; do
for imem in $(seq 1 $NMEM_ENKF); do
memchar="mem"$(printf %03i $imem)
- $nln $datens/$memchar/model_data/atmos/history/${prefix_ens}.atmf00${fhr}.nc sfg_${global_adate}_fhr0${fhr}_${memchar}
+ $nln $datens/$memchar/model/atmos/history/${prefix_ens}.atmf00${fhr}.nc sfg_${global_adate}_fhr0${fhr}_${memchar}
if [ $cnvw_option = ".true." ]; then
- $nln $datens/$memchar/model_data/atmos/history/${prefix_ens}sfcf00${fhr}.nc sfgsfc_${global_adate}_fhr0${fhr}_${memchar}
+ $nln $datens/$memchar/model/atmos/history/${prefix_ens}sfcf00${fhr}.nc sfgsfc_${global_adate}_fhr0${fhr}_${memchar}
fi
(( imem = $imem + 1 ))
done
- $nln $datens/ensstat/model_data/atmos/history/${prefix_ens}.atmf00${fhr}.ensmean.nc sfg_${global_adate}_fhr0${fhr}_ensmean
+ $nln $datens/ensstat/model/atmos/history/${prefix_ens}.atmf00${fhr}.ensmean.nc sfg_${global_adate}_fhr0${fhr}_ensmean
if [ $cnvw_option = ".true." ]; then
$nln $datens/${prefix_ens}.sfcf00${fhr}.ensmean.nc sfgsfc_${global_adate}_fhr0${fhr}_ensmean
fi
From 24b731a6c6574bd93586bedd694bac7ac60cd7b8 Mon Sep 17 00:00:00 2001
From: Ming Hu
Date: Thu, 27 Jun 2024 08:11:01 -0400
Subject: [PATCH 5/7] Update RRFS regression test cases (#750)
1) Change RRFS case from rrfs_3denvar_glbens to rrfs_3denvar_rdasens.
The new RRFS case has the same configuration as RRFS_A warm cycles.
2) delete case netcdf_fv3_regional
3) add RRFS EnKF case for conventional observations: rrfs_enkf_conv
---
fix | 2 +-
regression/CMakeLists.txt | 14 +-
regression/multi_regression.sh | 8 +-
regression/netcdf_fv3_regional.sh | 207 ------------
regression/regression_driver.sh | 2 +-
regression/regression_namelists.sh | 302 ++++++++++--------
regression/regression_namelists_db.sh | 190 +++--------
regression/regression_param.sh | 24 +-
regression/regression_test_enkf.sh | 99 ++++--
regression/regression_var.sh | 14 +-
...nvar_glbens.sh => rrfs_3denvar_rdasens.sh} | 181 +++++++++--
regression/rrfs_enkf_conv.sh | 223 +++++++++++++
12 files changed, 708 insertions(+), 558 deletions(-)
delete mode 100755 regression/netcdf_fv3_regional.sh
rename regression/{rrfs_3denvar_glbens.sh => rrfs_3denvar_rdasens.sh} (55%)
create mode 100755 regression/rrfs_enkf_conv.sh
diff --git a/fix b/fix
index a801d5cf07..15ffa60307 160000
--- a/fix
+++ b/fix
@@ -1 +1 @@
-Subproject commit a801d5cf07c3955e71258a0c8e9b074bb0f03fe4
+Subproject commit 15ffa60307bbc19746d8caeb41782de0b7604be6
diff --git a/regression/CMakeLists.txt b/regression/CMakeLists.txt
index 99d92162e6..e36cca605b 100644
--- a/regression/CMakeLists.txt
+++ b/regression/CMakeLists.txt
@@ -40,14 +40,20 @@ endif()
list(APPEND GSI_REG_TEST_NAMES
global_4denvar
rtma
- rrfs_3denvar_glbens netcdf_fv3_regional
+ rrfs_3denvar_rdasens
hafs_4denvar_glbens hafs_3denvar_hybens
)
# EnKF regression test names
-list(APPEND ENKF_REG_TEST_NAMES
- global_enkf
-)
+if(ENKF_MODE MATCHES "^(FV3REG)$")
+ list(APPEND ENKF_REG_TEST_NAMES
+ rrfs_enkf_conv
+ )
+else()
+ list(APPEND ENKF_REG_TEST_NAMES
+ global_enkf
+ )
+endif()
# Add GSI regression tests to list of tests
if(GSICONTROLEXEC)
diff --git a/regression/multi_regression.sh b/regression/multi_regression.sh
index 4df5581097..d01492aa44 100755
--- a/regression/multi_regression.sh
+++ b/regression/multi_regression.sh
@@ -1,16 +1,16 @@
#!/bin/sh --login
regtests_all="global_4denvar
- netcdf_fv3_regional
- rrfs_3denvar_glbens
+ rrfs_3denvar_rdasens
hafs_4denvar_glbens
hafs_3denvar_hybens
rtma
global_enkf"
+# rrfs_enkf_conv : comment out RRFS enkf case for now
+# need to update EnKF code
regtests_debug="global_4denvar
- netcdf_fv3_regional
- rrfs_3denvar_glbens
+ rrfs_3denvar_rdasens
hafs_4denvar_glbens
hafs_3denvar_hybens
rtma
diff --git a/regression/netcdf_fv3_regional.sh b/regression/netcdf_fv3_regional.sh
deleted file mode 100755
index e6188f51c6..0000000000
--- a/regression/netcdf_fv3_regional.sh
+++ /dev/null
@@ -1,207 +0,0 @@
-
-set -x
-
-# Set analysis date
-#adate=2015061000
-
-# Set experiment name
-exp=$jobname
-
-# Set runtime and save directories
-tmpdir=$tmpdir/tmpreg_netcdf_fv3_regional/${exp}
-savdir=$savdir/outreg_netcdf_fv3_regional/${exp}
-
-# Set variables used in script
-# CLEAN up $tmpdir when finished (YES=remove, NO=leave alone)
-# ncp is cp replacement, currently keep as /bin/cp
-
-UNCOMPRESS=gunzip
-CLEAN=NO
-ncp=/bin/cp
-
-
-# Set up $tmpdir
-rm -rf $tmpdir
-mkdir -p $tmpdir
-chgrp rstprod $tmpdir
-chmod 750 $tmpdir
-cd $tmpdir
-
-#FIXnam=/da/save/Michael.Lueken/trunk/fix
-fixcrtm=${fixcrtm:-$CRTM_FIX}
-
-berror=$fixgsi/nam_nmm_berror.f77.gcv
-anavinfo=$fixgsi/anavinfo_fv3
-
-
-# Make gsi namelist
-
-. $scripts/regression_nl_update.sh
-
-SETUP="$SETUP_update"
-GRIDOPTS="$GRIDOPTS_update"
-BKGVERR="$BKGVERR_update"
-ANBKGERR="$ANBKERR_update"
-JCOPTS="$JCOPTS_update"
-STRONGOPTS="$STRONGOPTS_update"
-OBSQC="$OBSQC_update"
-OBSINPUT="$OBSINPUT_update"
-SUPERRAD="$SUPERRAD_update"
-HYBRID_ENSEMBLE='ensemble_path="",'
-SINGLEOB="$SINGLEOB_update"
-
-if [ "$debug" = ".false." ]; then
- . $scripts/regression_namelists.sh netcdf_fv3_regional
-else
- . $scripts/regression_namelists_db.sh netcdf_fv3_regional
-fi
-
-# dmesh(1)=120.0,time_window_max=1.5,ext_sonde=.true.,
-
-cat << EOF > gsiparm.anl
-
-$gsi_namelist
-
-EOF
-
-emiscoef_IRwater=$fixcrtm/Nalli.IRwater.EmisCoeff.bin
-emiscoef_IRice=$fixcrtm/NPOESS.IRice.EmisCoeff.bin
-emiscoef_IRland=$fixcrtm/NPOESS.IRland.EmisCoeff.bin
-emiscoef_IRsnow=$fixcrtm/NPOESS.IRsnow.EmisCoeff.bin
-emiscoef_VISice=$fixcrtm/NPOESS.VISice.EmisCoeff.bin
-emiscoef_VISland=$fixcrtm/NPOESS.VISland.EmisCoeff.bin
-emiscoef_VISsnow=$fixcrtm/NPOESS.VISsnow.EmisCoeff.bin
-emiscoef_VISwater=$fixcrtm/NPOESS.VISwater.EmisCoeff.bin
-emiscoef_MWwater=$fixcrtm/FASTEM6.MWwater.EmisCoeff.bin
-aercoef=$fixcrtm/AerosolCoeff.bin
-cldcoef=$fixcrtm/CloudCoeff.bin
-satinfo=$fixgsi/nam_regional_satinfo.txt
-cloudyinfo=$fixgsi/cloudy_radiance_info.txt
-scaninfo=$fixgsi/global_scaninfo.txt
-pcpinfo=$fixgsi/nam_global_pcpinfo.txt
-ozinfo=$fixgsi/nam_global_ozinfo.txt
-errtable=$fixgsi/nam_errtable.r3dv
-convinfo=$fixgsi/nam_regional_convinfo.txt
-mesonetuselist=$fixgsi/nam_mesonet_uselist.txt
-stnuselist=$fixgsi/nam_mesonet_stnuselist.txt
-qdaylist=$fixgsi/rtma_q_day_rejectlist
-qnightlist=$fixgsi/rtma_q_night_rejectlist
-tdaylist=$fixgsi/rtma_t_day_rejectlist
-tnightlist=$fixgsi/rtma_t_night_rejectlist
-wbinuselist=$fixgsi/rtma_wbinuselist
-locinfo=$fixgsi/nam_hybens_d01_locinfo
-### add 9 tables
-errtable_pw=$fixgsi/prepobs_errtable_pw.global
-errtable_ps=$fixgsi/prepobs_errtable_ps.global_nqcf
-errtable_t=$fixgsi/prepobs_errtable_t.global_nqcf
-errtable_q=$fixgsi/prepobs_errtable_q.global_nqcf
-errtable_uv=$fixgsi/prepobs_errtable_uv.global_nqcf
-btable_ps=$fixgsi/nqc_b_ps.global_nqcf
-btable_t=$fixgsi/nqc_b_t.global_nqcf
-btable_q=$fixgsi/nqc_b_q.global_nqcf
-btable_uv=$fixgsi/nqc_b_uv.global_nqcf
-
-# add vertical profile of localization and beta_s,beta_e weights for hybrid ensemble runs
-hybens_info=$fixgsi/nam_hybens_d01_info
-
-
-# Copy executable and fixed files to $tmpdir
-if [[ $exp == *"updat"* ]]; then
- $ncp $gsiexec_updat ./gsi.x
-elif [[ $exp == *"contrl"* ]]; then
- $ncp $gsiexec_contrl ./gsi.x
-fi
-
-cp $anavinfo ./anavinfo
-cp $berror ./berror_stats
-cp $errtable ./errtable
-cp $emiscoef_IRwater ./Nalli.IRwater.EmisCoeff.bin
-cp $emiscoef_IRice ./NPOESS.IRice.EmisCoeff.bin
-cp $emiscoef_IRsnow ./NPOESS.IRsnow.EmisCoeff.bin
-cp $emiscoef_IRland ./NPOESS.IRland.EmisCoeff.bin
-cp $emiscoef_VISice ./NPOESS.VISice.EmisCoeff.bin
-cp $emiscoef_VISland ./NPOESS.VISland.EmisCoeff.bin
-cp $emiscoef_VISsnow ./NPOESS.VISsnow.EmisCoeff.bin
-cp $emiscoef_VISwater ./NPOESS.VISwater.EmisCoeff.bin
-cp $emiscoef_MWwater ./FASTEM6.MWwater.EmisCoeff.bin
-cp $aercoef ./AerosolCoeff.bin
-cp $cldcoef ./CloudCoeff.bin
-cp $satinfo ./satinfo
-cp $cloudyinfo ./cloudy_radiance_info.txt
-cp $scaninfo ./scaninfo
-cp $pcpinfo ./pcpinfo
-cp $ozinfo ./ozinfo
-cp $convinfo ./convinfo
-cp $mesonetuselist ./mesonetuselist
-cp $stnuselist ./mesonet_stnuselist
-cp $qdaylist ./q_day_rejectlist
-cp $qnightlist ./q_night_rejectlist
-cp $tdaylist ./t_day_rejectlist
-cp $tnightlist ./t_night_rejectlist
-cp $wbinuselist ./wbinuselist
-#cp $locinfo ./hybens_info
-#add 9 tables for new varqc
-$ncp $errtable_pw ./errtable_pw
-$ncp $errtable_ps ./errtable_ps
-$ncp $errtable_t ./errtable_t
-$ncp $errtable_q ./errtable_q
-$ncp $errtable_uv ./errtable_uv
-$ncp $btable_ps ./btable_ps
-$ncp $btable_t ./btable_t
-$ncp $btable_q ./btable_q
-$ncp $btable_uv ./btable_uv
-
-$ncp $hybens_info ./hybens_info
-
-
-###### crtm coeff's #######################
-set +x
-for file in `awk '{if($1!~"!"){print $1}}' satinfo | sort | uniq` ;do
- cp $fixcrtm/${file}.SpcCoeff.bin ./
- cp $fixcrtm/${file}.TauCoeff.bin ./
-done
-set -x
-
-PDY=`echo $adate | cut -c1-8`
-CYC=`echo $adate | cut -c9-10`
-
-#datdir=/meso/noscrub/Wanshu.Wu/CASE/$adate
-
-cp $fv3_netcdf_obs/ndas.t06z.radwnd.tm06.bufr_d ./radarbufr
-cp $fv3_netcdf_obs/ndas.t06z.prepbufr.tm06 ./prepbufr
-cp $fv3_netcdf_obs/ndas.t06z.1bamua.tm06.bufr_d ./amsuabufr
-cp $fv3_netcdf_obs/ndas.t06z.1bmhs.tm06.bufr_d ./mhsbufr
-cp $fv3_netcdf_obs/ndas.t06z.goesfv.tm06.bufr_d ./gsnd1bufr
-cp $fv3_netcdf_obs/ndas.t06z.airsev.tm06.bufr_d ./airsbufr
-cp $fv3_netcdf_obs/ndas.t06z.satwnd.tm06.bufr_d ./satwndbufr
-
-cp $fv3_netcdf_ges/coupler.res coupler.res
-cp $fv3_netcdf_ges/fv_core.res.nest02.nc fv3_akbk
-cp $fv3_netcdf_ges/grid_spec.nest02.nc fv3_grid_spec
-#the current GSI parallel IO for fv3-lam require the netcdf 4 format for nc files containing 3d fields
-nccopy -4 $fv3_netcdf_ges/fv_core.res.nest02.tile7.nc fv3_dynvars
-nccopy -4 $fv3_netcdf_ges/fv_tracer.res.nest02.tile7.nc fv3_tracer
-cp $fv3_netcdf_ges/sfc_data.nest02.tile7.nc fv3_sfcdata
-
-
-cp $fv3_netcdf_ges/nam.t06z.satbias_pc.tm04 ./satbias_pc
-cp $fv3_netcdf_ges/nam.t06z.satbias.tm04 ./satbias_in
-cp $fv3_netcdf_ges/nam.t06z.radstat.tm04 ./radstat.gdas
-
-listdiag=`tar xvf radstat.gdas | cut -d' ' -f2 | grep _ges`
-for type in $listdiag; do
- diag_file=`echo $type | cut -d',' -f1`
- fname=`echo $diag_file | cut -d'.' -f1`
- date=`echo $diag_file | cut -d'.' -f2`
- $UNCOMPRESS $diag_file
- fnameanl=$(echo $fname|sed 's/_ges//g')
- mv $fname.$date $fnameanl
-done
-
-
-# Run GSI
-cd $tmpdir
-echo "run gsi now"
-eval "$APRUN $tmpdir/gsi.x > stdout 2>&1"
-rc=$?
-exit $rc
diff --git a/regression/regression_driver.sh b/regression/regression_driver.sh
index 38329778a4..805a9dd1fb 100755
--- a/regression/regression_driver.sh
+++ b/regression/regression_driver.sh
@@ -59,7 +59,7 @@ if [ "$debug" == ".false." ]; then
export scripts=${scripts_updat:-$scripts}
- if [ $regtest = 'global_enkf' ]; then
+ if [ $regtest = 'global_enkf' ] || [ $regtest = 'rrfs_enkf_conv' ]; then
/bin/sh $scripts/regression_test_enkf.sh ${job[1]} ${job[2]} ${job[3]} ${job[4]} ${tmpregdir} ${result} ${scaling[1]} ${scaling[2]} ${scaling[3]}
else
/bin/sh $scripts/regression_test.sh ${job[1]} ${job[2]} ${job[3]} ${job[4]} ${tmpregdir} ${result} ${scaling[1]} ${scaling[2]} ${scaling[3]}
diff --git a/regression/regression_namelists.sh b/regression/regression_namelists.sh
index d360dfd870..a4f283f92b 100755
--- a/regression/regression_namelists.sh
+++ b/regression/regression_namelists.sh
@@ -319,7 +319,7 @@ OBS_INPUT::
/
"
;;
- rrfs_3denvar_glbens)
+ rrfs_3denvar_rdasens)
# Define namelist for rrfs 3d hybrid envar run with global ensembles
@@ -328,13 +328,14 @@ export gsi_namelist="
&SETUP
miter=2,niter(1)=5,niter(2)=5,
write_diag(1)=.true.,write_diag(2)=.false.,write_diag(3)=.true.,
- qoption=2,print_obs_para=.true.,diag_radardbz=.false.,
- if_model_dbz=.false., static_gsi_nopcp_dbz=0.0,
+ qoption=2,print_obs_para=.true.,diag_fed=.true.,diag_radardbz=.false.,
+ if_model_dbz=.true.,if_model_fed=.true.,static_gsi_nopcp_dbz=0.0,if_use_w_vr=.false.,
rmesh_dbz=4.0,rmesh_vr=4.0,zmesh_dbz=1000.0,zmesh_vr=1000.0,
- missing_to_nopcp=.false.,radar_no_thinning=.true.,
+ inflate_dbz_obserr=.true.,missing_to_nopcp=.false.,radar_no_thinning=.true.,
gencode=78,factqmin=0.0,factqmax=0.0,
- iguess=-1,
+ iguess=-1,crtm_coeffs_path='./',
lread_obs_save=.false.,lread_obs_skip=.false.,
+ ens_nstarthr=01,
oneobtest=.false.,retrieval=.false.,
nhr_assimilation=3,l_foto=.false.,
use_pbl=.false.,use_prepb_satwnd=.false.,
@@ -343,8 +344,10 @@ export gsi_namelist="
diag_precon=.true.,step_start=1.e-3,
l4densvar=.false.,nhr_obsbin=3,
use_gfs_nemsio=.false.,use_gfs_ncio=.true.,reset_bad_radbc=.true.,
- netcdf_diag=.false.,binary_diag=.true.,
+ netcdf_diag=.true.,binary_diag=.false.,
l_obsprvdiag=.false.,
+ lwrite_peakwt=.true.,
+ innov_use_model_fed=.true.,
/
&GRIDOPTS
fv3_regional=.true.,grid_ratio_fv3_regional=2.0,nvege_type=20,
@@ -372,7 +375,9 @@ export gsi_namelist="
/
OBS_INPUT::
! dfile dtype dplat dsis dval dthin dsfcalc
+ pm25bufr pm2_5 null TEOM 1.0 0 0
dbzobs.nc dbz null dbz 1.0 0 0
+ fedobs.nc fed null fed 1.0 0 0
prepbufr ps null ps 1.0 0 0
prepbufr t null t 1.0 0 0
prepbufr q null q 1.0 0 0
@@ -389,6 +394,12 @@ OBS_INPUT::
sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0
sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0
sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0
+ hirs3bufr hirs3 n16 hirs3_n16 0.0 1 0
+ hirs3bufr hirs3 n17 hirs3_n17 0.0 1 0
+ hirs4bufr hirs4 metop-a hirs4_metop-a 0.0 2 0
+ hirs4bufr hirs4 n18 hirs4_n18 0.0 1 0
+ hirs4bufr hirs4 n19 hirs4_n19 0.0 2 0
+ hirs4bufr hirs4 metop-b hirs4_metop-b 0.0 2 0
gimgrbufr goes_img g11 imgr_g11 0.0 1 0
gimgrbufr goes_img g12 imgr_g12 0.0 1 0
airsbufr airs aqua airs_aqua 0.0 2 0
@@ -397,12 +408,14 @@ OBS_INPUT::
amsuabufr amsua n19 amsua_n19 0.0 2 0
amsuabufr amsua metop-a amsua_metop-a 0.0 2 0
amsuabufr amsua metop-b amsua_metop-b 0.0 2 0
+ amsuabufr amsua metop-c amsua_metop-c 0.0 2 0
airsbufr amsua aqua amsua_aqua 0.0 2 0
amsubbufr amsub n17 amsub_n17 0.0 1 0
mhsbufr mhs n18 mhs_n18 0.0 2 0
mhsbufr mhs n19 mhs_n19 0.0 2 0
mhsbufr mhs metop-a mhs_metop-a 0.0 2 0
mhsbufr mhs metop-b mhs_metop-b 0.0 2 0
+ mhsbufr mhs metop-c mhs_metop-c 0.0 2 0
ssmitbufr ssmi f13 ssmi_f13 0.0 2 0
ssmitbufr ssmi f14 ssmi_f14 0.0 2 0
ssmitbufr ssmi f15 ssmi_f15 0.0 2 0
@@ -431,11 +444,23 @@ OBS_INPUT::
gsnd1bufr sndrd4 g15 sndrD4_g15 0.0 2 0
iasibufr iasi metop-a iasi_metop-a 0.0 2 0
gomebufr gome metop-a gome_metop-a 0.0 2 0
+ omibufr omi aura omi_aura 0.0 2 0
+ sbuvbufr sbuv2 n19 sbuv8_n19 0.0 0 0
+ tcvitl tcp null tcp 0.0 0 0
+ seviribufr seviri m08 seviri_m08 0.0 2 0
+ seviribufr seviri m09 seviri_m09 0.0 2 0
+ seviribufr seviri m10 seviri_m10 0.0 2 0
+ seviribufr seviri m11 seviri_m11 0.0 2 0
+ iasibufr iasi metop-b iasi_metop-b 0.0 2 0
+ iasibufr iasi metop-c iasi_metop-c 0.0 2 0
+ gomebufr gome metop-b gome_metop-b 0.0 2 0
atmsbufr atms npp atms_npp 0.0 2 0
atmsbufr atms n20 atms_n20 0.0 2 0
+ atmsbufr atms n21 atms_n21 0.0 2 0
crisbufr cris npp cris_npp 0.0 2 0
crisfsbufr cris-fsr npp cris-fsr_npp 0.0 2 0
crisfsbufr cris-fsr n20 cris-fsr_n20 0.0 2 0
+ crisfsbufr cris-fsr n21 cris-fsr_n21 0.0 2 0
abibufr abi g16 abi_g16 0.0 2 0
mlsbufr mls30 aura mls30_aura 0.0 0 0
oscatbufr uv null uv 0.0 0 0
@@ -444,6 +469,7 @@ OBS_INPUT::
refInGSI rad_ref null rad_ref 1.0 0 0
lghtInGSI lghtn null lghtn 1.0 0 0
larcInGSI larccld null larccld 1.0 0 0
+ abibufr abi g18 abi_g18 0.0 2 0
::
&SUPEROB_RADAR
del_azimuth=5.,del_elev=.25,del_range=5000.,del_time=.5,elev_angle_max=5.,minnum=50,range_max=100000., l2superob_only=.false.,
@@ -456,17 +482,30 @@ OBS_INPUT::
q_hyb_ens=.false.,
aniso_a_en=.false.,generate_ens=.false.,
n_ens=${nummem},
- beta_s0=0.15,s_ens_h=110,s_ens_v=3,
- regional_ensemble_option=1,
+ l_both_fv3sar_gfs_ens=.false.,n_ens_gfs=0,n_ens_fv3sar=30,
+ weight_ens_gfs=1.0,weight_ens_fv3sar=1.0,
+ beta_s0=0.15,s_ens_h=328.632,82.1580,4.10790,4.10790,82.1580,s_ens_v=3,3,-0.30125,-0.30125,0.0,
+ regional_ensemble_option=5,
pseudo_hybens = .false.,
- grid_ratio_ens = 3,
+ grid_ratio_ens = 1,
l_ens_in_diff_time=.true.,
ensemble_path='',
i_en_perts_io=1,
jcap_ens=574,
fv3sar_bg_opt=0,
- readin_localization=.true.,
- ens_fast_read=.false.,
+ readin_localization=.false.,
+ parallelization_over_ensmembers=.false.,
+ nsclgrp=2,l_timloc_opt=.false.,ngvarloc=2,naensloc=5,
+ r_ensloccov4tim=1.0,r_ensloccov4var=0.05,r_ensloccov4scl=1.0,
+ global_spectral_filter_sd=.false.,assign_vdl_nml=.false.,vdl_scale=0,
+ vloc_varlist(1,1)='sf ',vloc_varlist(2,1)='w ',vloc_varlist(3,1)='sf ',vloc_varlist(4,1)='w ',
+ vloc_varlist(1,2)='vp ',vloc_varlist(2,2)='qr ',vloc_varlist(3,2)='vp ',vloc_varlist(4,2)='qr ',
+ vloc_varlist(1,3)='ps ',vloc_varlist(2,3)='qs ',vloc_varlist(3,3)='ps ',vloc_varlist(4,3)='qs ',
+ vloc_varlist(1,4)='t ',vloc_varlist(2,4)='qi ',vloc_varlist(3,4)='t ',vloc_varlist(4,4)='qi ',
+ vloc_varlist(1,5)='q ',vloc_varlist(2,5)='qg ',vloc_varlist(3,5)='q ',vloc_varlist(4,5)='qg ',
+ vloc_varlist(1,6)='sst',vloc_varlist(2,6)='ql ',vloc_varlist(3,6)='sst',vloc_varlist(4,6)='ql ',
+ vloc_varlist(1,7)='stl',vloc_varlist(2,7)='dbz',vloc_varlist(3,7)='stl',vloc_varlist(4,7)='dbz',
+ vloc_varlist(1,8)='sti',vloc_varlist(2,8)='aaa',vloc_varlist(3,8)='sti',vloc_varlist(4,8)='aaa',
/
&RAPIDREFRESH_CLDSURF
dfi_radar_latent_heat_time_period=20.0,
@@ -506,6 +545,8 @@ OBS_INPUT::
i_gsdqc=2,
/
&CHEM
+ laeroana_fv3smoke=.false.,
+ berror_fv3_cmaq_regional=.false.,
/
&NST
/
@@ -516,6 +557,7 @@ OBS_INPUT::
/
"
;;
+
hafs_envar)
# Define namelist for hafs 3denvar run with global ensembles
export gsi_namelist="
@@ -777,130 +819,128 @@ SUPEROB_RADAR::
/
"
;;
- netcdf_fv3_regional)
+ rrfs_enkf_conv)
-# Define namelist for netcdf fv3 run
+# Define namelist for rrfs EnKF run
export gsi_namelist="
- &SETUP
- miter=2,niter(1)=5,niter(2)=5,niter_no_qc(1)=2,
- write_diag(1)=.true.,write_diag(2)=.false.,write_diag(3)=.true.,
- qoption=2,
- factqmin=0.0,factqmax=0.0,deltim=$DELTIM,
- iguess=-1,
- newpc4pred=.true., adp_anglebc=.true., angord=4,
- diag_precon=.true., step_start=1.e-3,
- nhr_assimilation=3,l_foto=.false.,
- use_pbl=.false.,use_compress=.false.,gpstop=30.,
- lrun_subdirs=.true.,
- $SETUP
- /
- &GRIDOPTS
- fv3_regional=.true.,grid_ratio_fv3_regional=3.0,
- /
- &BKGERR
- hzscl=0.373,0.746,1.50,
- vs=0.6,bw=0.,fstat=.false.,
- /
- &ANBKGERR
- anisotropic=.false.,
- /
- &JCOPTS
- /
- &STRONGOPTS
- /
- &OBSQC
- dfact=0.75,dfact1=3.0,noiqc=.true.,c_varqc=0.02,
- vadfile='prepbufr',oberrflg=.false.,njqc=.false.,vqc=.true.,
- /
- &OBS_INPUT
- dmesh(1)=120.0,dmesh(2)=60.0,dmesh(3)=60.0,dmesh(4)=60.0,dmesh(5)=120,time_window_max=1.5,ext_sonde=.true.,
- /
-OBS_INPUT::
-! dfile dtype dplat dsis dval dthin dsfcalc
- prepbufr ps null ps 0.0 0 0
- prepbufr t null t 0.0 0 0
- prepbufr q null q 0.0 0 0
- prepbufr pw null pw 0.0 0 0
- prepbufr uv null uv 0.0 0 0
- prepbufr spd null spd 0.0 0 0
- prepbufr dw null dw 0.0 0 0
- radarbufr rw null rw 0.0 0 0
- prepbufr sst null sst 0.0 0 0
- gpsrobufr gps_bnd null gps_bnd 0.0 0 0
- ssmirrbufr pcp_ssmi dmsp pcp_ssmi 0.0 -1 0
- tmirrbufr pcp_tmi trmm pcp_tmi 0.0 -1 0
- sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0
- sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0
- sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0
- gsndrbufr sndr g11 sndr_g11 0.0 1 0
- gsndrbufr sndr g12 sndr_g12 0.0 1 0
- gimgrbufr goes_img g11 imgr_g11 0.0 1 0
- gimgrbufr goes_img g12 imgr_g12 0.0 1 0
- airsbufr airs aqua airs281_aqua 0.0 1 0
- msubufr msu n14 msu_n14 0.0 1 0
- amsuabufr amsua n15 amsua_n15 0.0 1 0
- amsuabufr amsua n16 amsua_n16 0.0 1 0
- amsuabufr amsua n17 amsua_n17 0.0 1 0
- amsuabufr amsua n18 amsua_n18 0.0 1 0
- amsuabufr amsua metop-a amsua_metop-a 0.0 1 0
- amsuabufr amsua metop-b amsua_metop-b 0.0 1 0
- airsbufr amsua aqua amsua_aqua 0.0 1 0
- amsubbufr amsub n15 amsub_n15 0.0 1 0
- amsubbufr amsub n16 amsub_n16 0.0 1 0
- amsubbufr amsub n17 amsub_n17 0.0 1 0
- mhsbufr mhs n18 mhs_n18 0.0 1 0
- mhsbufr mhs metop-a mhs_metop-a 0.0 1 0
- mhsbufr mhs metop-b mhs_metop-b 0.0 1 0
- ssmitbufr ssmi f13 ssmi_f13 0.0 1 0
- ssmitbufr ssmi f14 ssmi_f14 0.0 1 0
- ssmitbufr ssmi f15 ssmi_f15 0.0 1 0
- amsrebufr amsre_low aqua amsre_aqua 0.0 1 0
- amsrebufr amsre_mid aqua amsre_aqua 0.0 1 0
- amsrebufr amsre_hig aqua amsre_aqua 0.0 1 0
- ssmisbufr ssmis f16 ssmis_f16 0.0 1 0
- iasibufr iasi metop-a iasi_metop-a 0.0 1 0
- gomebufr gome metop-a gome_metop-a 0.0 1 0
- iasibufr iasi metop-b iasi_metop-b 0.0 1 0
- omibufr omi aura omi_aura 0.0 1 0
- sbuvbufr sbuv2 n19 sbuv8_n19 0.0 1 0
- amsuabufr amsua n19 amsua_n19 0.0 1 0
- mhsbufr mhs n19 mhs_n19 0.0 1 0
- tcvitl tcp null tcp 0.0 0 0
- satwndbufr uv null uv 0.0 0 0
- atmsbufr atms npp atms_npp 0.0 1 0
- crisbufr cris npp cris_npp 0.0 1 0
- crisfsbufr cris-fsr npp cris-fsr_npp 0.0 1 0
- seviribufr seviri m08 seviri_m08 0.0 1 0
- seviribufr seviri m09 seviri_m09 0.0 1 0
- seviribufr seviri m10 seviri_m10 0.0 1 0
- seviribufr seviri m11 seviri_m11 0.0 1 0
- gsnd1bufr sndrd1 g15 sndrD1_g15 0.0 1 0
- gsnd1bufr sndrd2 g15 sndrD2_g15 0.0 1 0
- gsnd1bufr sndrd3 g15 sndrD3_g15 0.0 1 0
- gsnd1bufr sndrd4 g15 sndrD4_g15 0.0 1 0
- prepbufr mta_cld null mta_cld 1.0 0 0
- prepbufr gos_ctp null gos_ctp 1.0 0 0
- lgycldbufr larccld null larccld 1.0 0 0
-::
- &SUPEROB_RADAR
- del_azimuth=5.,del_elev=.25,del_range=5000.,del_time=.5,elev_angle_max=5.,minnum=50,range_max=100000.,
- l2superob_only=.false.,
- /
- &LAG_DATA
- /
- &HYBRID_ENSEMBLE
- /
- &RAPIDREFRESH_CLDSURF
- dfi_radar_latent_heat_time_period=30.0,
- /
- &CHEM
- /
- &SINGLEOB_TEST
- /
- &NST
- /
+ &nam_enkf
+ datestring=${rrfs_enkf_adate},datapath='${tmpdir}/',
+ analpertwtnh=1.10,analpertwtsh=1.10,analpertwttr=1.10,
+ covinflatemax=1.e2,covinflatemin=1,pseudo_rh=.true.,iassim_order=0,
+ corrlengthnh=300,corrlengthsh=300,corrlengthtr=300,
+ lnsigcutoffnh=0.5,lnsigcutoffsh=0.5,lnsigcutofftr=0.5,
+ lnsigcutoffpsnh=0.5,lnsigcutoffpssh=0.5,lnsigcutoffpstr=0.5,
+ lnsigcutoffsatnh=0.5,lnsigcutoffsatsh=0.5,lnsigcutoffsattr=0.5,
+ obtimelnh=1.e30,obtimelsh=1.e30,obtimeltr=1.e30,
+ saterrfact=1.0,numiter=1,
+ sprd_tol=1.e30,paoverpb_thresh=0.98,
+ nlons=420,nlats= 252, nlevs= 65,nanals=5,
+ deterministic=.true.,sortinc=.true.,lupd_satbiasc=.false.,
+ reducedgrid=.true.,readin_localization=.false.,
+ use_gfs_nemsio=.true.,imp_physics=99,lupp=.false.,
+ univaroz=.false.,adp_anglebc=.true.,angord=4,use_edges=.false.,emiss_bc=.true.,
+ lobsdiag_forenkf=.false.,
+ write_spread_diag=.false.,
+ netcdf_diag=.true.,
+ fv3_native=.true.,
+ /
+ &satobs_enkf
+ sattypes_rad(1) = 'amsua_n15', dsis(1) = 'amsua_n15',
+ sattypes_rad(2) = 'amsua_n18', dsis(2) = 'amsua_n18',
+ sattypes_rad(3) = 'amsua_n19', dsis(3) = 'amsua_n19',
+ sattypes_rad(4) = 'amsub_n16', dsis(4) = 'amsub_n16',
+ sattypes_rad(5) = 'amsub_n17', dsis(5) = 'amsub_n17',
+ sattypes_rad(6) = 'amsua_aqua', dsis(6) = 'amsua_aqua',
+ sattypes_rad(7) = 'amsua_metop-a', dsis(7) = 'amsua_metop-a',
+ sattypes_rad(8) = 'airs_aqua', dsis(8) = 'airs_aqua',
+ sattypes_rad(9) = 'hirs3_n17', dsis(9) = 'hirs3_n17',
+ sattypes_rad(10)= 'hirs4_n19', dsis(10)= 'hirs4_n19',
+ sattypes_rad(11)= 'hirs4_metop-a', dsis(11)= 'hirs4_metop-a',
+ sattypes_rad(12)= 'mhs_n18', dsis(12)= 'mhs_n18',
+ sattypes_rad(13)= 'mhs_n19', dsis(13)= 'mhs_n19',
+ sattypes_rad(14)= 'mhs_metop-a', dsis(14)= 'mhs_metop-a',
+ sattypes_rad(15)= 'goes_img_g11', dsis(15)= 'imgr_g11',
+ sattypes_rad(16)= 'goes_img_g12', dsis(16)= 'imgr_g12',
+ sattypes_rad(17)= 'goes_img_g13', dsis(17)= 'imgr_g13',
+ sattypes_rad(18)= 'goes_img_g14', dsis(18)= 'imgr_g14',
+ sattypes_rad(19)= 'goes_img_g15', dsis(19)= 'imgr_g15',
+ sattypes_rad(20)= 'avhrr_n18', dsis(20)= 'avhrr3_n18',
+ sattypes_rad(21)= 'avhrr_metop-a', dsis(21)= 'avhrr3_metop-a',
+ sattypes_rad(22)= 'avhrr_n19', dsis(22)= 'avhrr3_n19',
+ sattypes_rad(23)= 'amsre_aqua', dsis(23)= 'amsre_aqua',
+ sattypes_rad(24)= 'ssmis_f16', dsis(24)= 'ssmis_f16',
+ sattypes_rad(25)= 'ssmis_f17', dsis(25)= 'ssmis_f17',
+ sattypes_rad(26)= 'ssmis_f18', dsis(26)= 'ssmis_f18',
+ sattypes_rad(27)= 'ssmis_f19', dsis(27)= 'ssmis_f19',
+ sattypes_rad(28)= 'ssmis_f20', dsis(28)= 'ssmis_f20',
+ sattypes_rad(29)= 'sndrd1_g11', dsis(29)= 'sndrD1_g11',
+ sattypes_rad(30)= 'sndrd2_g11', dsis(30)= 'sndrD2_g11',
+ sattypes_rad(31)= 'sndrd3_g11', dsis(31)= 'sndrD3_g11',
+ sattypes_rad(32)= 'sndrd4_g11', dsis(32)= 'sndrD4_g11',
+ sattypes_rad(33)= 'sndrd1_g12', dsis(33)= 'sndrD1_g12',
+ sattypes_rad(34)= 'sndrd2_g12', dsis(34)= 'sndrD2_g12',
+ sattypes_rad(35)= 'sndrd3_g12', dsis(35)= 'sndrD3_g12',
+ sattypes_rad(36)= 'sndrd4_g12', dsis(36)= 'sndrD4_g12',
+ sattypes_rad(37)= 'sndrd1_g13', dsis(37)= 'sndrD1_g13',
+ sattypes_rad(38)= 'sndrd2_g13', dsis(38)= 'sndrD2_g13',
+ sattypes_rad(39)= 'sndrd3_g13', dsis(39)= 'sndrD3_g13',
+ sattypes_rad(40)= 'sndrd4_g13', dsis(40)= 'sndrD4_g13',
+ sattypes_rad(41)= 'sndrd1_g14', dsis(41)= 'sndrD1_g14',
+ sattypes_rad(42)= 'sndrd2_g14', dsis(42)= 'sndrD2_g14',
+ sattypes_rad(43)= 'sndrd3_g14', dsis(43)= 'sndrD3_g14',
+ sattypes_rad(44)= 'sndrd4_g14', dsis(44)= 'sndrD4_g14',
+ sattypes_rad(45)= 'sndrd1_g15', dsis(45)= 'sndrD1_g15',
+ sattypes_rad(46)= 'sndrd2_g15', dsis(46)= 'sndrD2_g15',
+ sattypes_rad(47)= 'sndrd3_g15', dsis(47)= 'sndrD3_g15',
+ sattypes_rad(48)= 'sndrd4_g15', dsis(48)= 'sndrD4_g15',
+ sattypes_rad(49)= 'iasi_metop-a', dsis(49)= 'iasi_metop-a',
+ sattypes_rad(50)= 'seviri_m08', dsis(50)= 'seviri_m08',
+ sattypes_rad(51)= 'seviri_m09', dsis(51)= 'seviri_m09',
+ sattypes_rad(52)= 'seviri_m10', dsis(52)= 'seviri_m10',
+ sattypes_rad(53)= 'seviri_m11', dsis(53)= 'seviri_m11',
+ sattypes_rad(54)= 'amsua_metop-b', dsis(54)= 'amsua_metop-b',
+ sattypes_rad(55)= 'hirs4_metop-b', dsis(55)= 'hirs4_metop-b',
+ sattypes_rad(56)= 'mhs_metop-b', dsis(56)= 'mhs_metop-b',
+ sattypes_rad(57)= 'iasi_metop-b', dsis(57)= 'iasi_metop-b',
+ sattypes_rad(58)= 'avhrr_metop-b', dsis(58)= 'avhrr3_metop-b',
+ sattypes_rad(59)= 'atms_npp', dsis(59)= 'atms_npp',
+ sattypes_rad(60)= 'atms_n20', dsis(60)= 'atms_n20',
+ sattypes_rad(61)= 'cris_npp', dsis(61)= 'cris_npp',
+ sattypes_rad(62)= 'cris-fsr_npp', dsis(62)= 'cris-fsr_npp',
+ sattypes_rad(63)= 'cris-fsr_n20', dsis(63)= 'cris-fsr_n20',
+ sattypes_rad(64)= 'gmi_gpm', dsis(64)= 'gmi_gpm',
+ sattypes_rad(65)= 'saphir_meghat', dsis(65)= 'saphir_meghat',
+ sattypes_rad(66)= 'amsua_metop-c', dsis(66)= 'amsua_metop-c',
+ sattypes_rad(67)= 'mhs_metop-c', dsis(67)= 'mhs_metop-c',
+ sattypes_rad(68)= 'ahi_himawari8', dsis(68)= 'ahi_himawari8',
+ sattypes_rad(69)= 'abi_g16', dsis(69)= 'abi_g16',
+ sattypes_rad(70)= 'abi_g17', dsis(70)= 'abi_g17',
+ sattypes_rad(71)= 'iasi_metop-c', dsis(71)= 'iasi_metop-c',
+ sattypes_rad(72)= 'viirs-m_npp', dsis(72)= 'viirs-m_npp',
+ sattypes_rad(73)= 'viirs-m_j1', dsis(73)= 'viirs-m_j1',
+ sattypes_rad(74)= 'avhrr_metop-c', dsis(74)= 'avhrr3_metop-c',
+ sattypes_rad(75)= 'abi_g18', dsis(75)= 'abi_g18',
+ sattypes_rad(76)= 'ahi_himawari9', dsis(76)= 'ahi_himawari9',
+ sattypes_rad(77)= 'viirs-m_j2', dsis(77)= 'viirs-m_j2',
+ sattypes_rad(78)= 'atms_n21', dsis(78)= 'atms_n21',
+ sattypes_rad(79)= 'cris-fsr_n21', dsis(79)= 'cris-fsr_n21',
+ /
+ &ozobs_enkf
+ sattypes_oz(1) = 'sbuv2_n16',
+ sattypes_oz(2) = 'sbuv2_n17',
+ sattypes_oz(3) = 'sbuv2_n18',
+ sattypes_oz(4) = 'sbuv2_n19',
+ sattypes_oz(5) = 'omi_aura',
+ sattypes_oz(6) = 'gome_metop-a',
+ sattypes_oz(7) = 'gome_metop-b',
+ sattypes_oz(8) = 'mls30_aura',
+ /
+ &nam_fv3
+ fv3fixpath="XXX",nx_res=${NX_RES:-420},ny_res=${NY_RES-252},ntiles=1,
+ l_fv3reg_filecombined=.false.,
+ /
"
;;
global_enkf)
diff --git a/regression/regression_namelists_db.sh b/regression/regression_namelists_db.sh
index 83718b50d5..b96c208070 100755
--- a/regression/regression_namelists_db.sh
+++ b/regression/regression_namelists_db.sh
@@ -301,7 +301,7 @@ OBS_INPUT::
"
;;
- rrfs_3denvar_glbens)
+ rrfs_3denvar_rdasens)
# Define namelist for rrfs 3d hybrid envar run with global ensembles
@@ -310,13 +310,14 @@ export gsi_namelist="
&SETUP
miter=1,niter(1)=2,niter(2)=2,
write_diag(1)=.true.,write_diag(2)=.false.,write_diag(3)=.true.,
- qoption=2,print_obs_para=.true.,diag_radardbz=.false.,
- if_model_dbz=.false., static_gsi_nopcp_dbz=0.0,
+ qoption=2,print_obs_para=.true.,diag_fed=.true.,diag_radardbz=.false.,
+ if_model_dbz=.true.,if_model_fed=.true.,static_gsi_nopcp_dbz=0.0,if_use_w_vr=.false.,
rmesh_dbz=4.0,rmesh_vr=4.0,zmesh_dbz=1000.0,zmesh_vr=1000.0,
- missing_to_nopcp=.false.,radar_no_thinning=.true.,
+ inflate_dbz_obserr=.true.,missing_to_nopcp=.false.,radar_no_thinning=.true.,
gencode=78,factqmin=0.0,factqmax=0.0,
- iguess=-1,
+ iguess=-1,crtm_coeffs_path='./',
lread_obs_save=.false.,lread_obs_skip=.false.,
+ ens_nstarthr=01,
oneobtest=.false.,retrieval=.false.,
nhr_assimilation=3,l_foto=.false.,
use_pbl=.false.,use_prepb_satwnd=.false.,
@@ -325,8 +326,10 @@ export gsi_namelist="
diag_precon=.true.,step_start=1.e-3,
l4densvar=.false.,nhr_obsbin=3,
use_gfs_nemsio=.false.,use_gfs_ncio=.true.,reset_bad_radbc=.true.,
- netcdf_diag=.false.,binary_diag=.true.,
+ netcdf_diag=.true.,binary_diag=.false.,
l_obsprvdiag=.false.,
+ lwrite_peakwt=.true.,
+ innov_use_model_fed=.true.,
/
&GRIDOPTS
fv3_regional=.true.,grid_ratio_fv3_regional=2.0,nvege_type=20,
@@ -354,7 +357,9 @@ export gsi_namelist="
/
OBS_INPUT::
! dfile dtype dplat dsis dval dthin dsfcalc
+ pm25bufr pm2_5 null TEOM 1.0 0 0
dbzobs.nc dbz null dbz 1.0 0 0
+ fedobs.nc fed null fed 1.0 0 0
prepbufr ps null ps 1.0 0 0
prepbufr t null t 1.0 0 0
prepbufr q null q 1.0 0 0
@@ -371,6 +376,12 @@ OBS_INPUT::
sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0
sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0
sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0
+ hirs3bufr hirs3 n16 hirs3_n16 0.0 1 0
+ hirs3bufr hirs3 n17 hirs3_n17 0.0 1 0
+ hirs4bufr hirs4 metop-a hirs4_metop-a 0.0 2 0
+ hirs4bufr hirs4 n18 hirs4_n18 0.0 1 0
+ hirs4bufr hirs4 n19 hirs4_n19 0.0 2 0
+ hirs4bufr hirs4 metop-b hirs4_metop-b 0.0 2 0
gimgrbufr goes_img g11 imgr_g11 0.0 1 0
gimgrbufr goes_img g12 imgr_g12 0.0 1 0
airsbufr airs aqua airs_aqua 0.0 2 0
@@ -379,12 +390,14 @@ OBS_INPUT::
amsuabufr amsua n19 amsua_n19 0.0 2 0
amsuabufr amsua metop-a amsua_metop-a 0.0 2 0
amsuabufr amsua metop-b amsua_metop-b 0.0 2 0
+ amsuabufr amsua metop-c amsua_metop-c 0.0 2 0
airsbufr amsua aqua amsua_aqua 0.0 2 0
amsubbufr amsub n17 amsub_n17 0.0 1 0
mhsbufr mhs n18 mhs_n18 0.0 2 0
mhsbufr mhs n19 mhs_n19 0.0 2 0
mhsbufr mhs metop-a mhs_metop-a 0.0 2 0
mhsbufr mhs metop-b mhs_metop-b 0.0 2 0
+ mhsbufr mhs metop-c mhs_metop-c 0.0 2 0
ssmitbufr ssmi f13 ssmi_f13 0.0 2 0
ssmitbufr ssmi f14 ssmi_f14 0.0 2 0
ssmitbufr ssmi f15 ssmi_f15 0.0 2 0
@@ -413,11 +426,23 @@ OBS_INPUT::
gsnd1bufr sndrd4 g15 sndrD4_g15 0.0 2 0
iasibufr iasi metop-a iasi_metop-a 0.0 2 0
gomebufr gome metop-a gome_metop-a 0.0 2 0
+ omibufr omi aura omi_aura 0.0 2 0
+ sbuvbufr sbuv2 n19 sbuv8_n19 0.0 0 0
+ tcvitl tcp null tcp 0.0 0 0
+ seviribufr seviri m08 seviri_m08 0.0 2 0
+ seviribufr seviri m09 seviri_m09 0.0 2 0
+ seviribufr seviri m10 seviri_m10 0.0 2 0
+ seviribufr seviri m11 seviri_m11 0.0 2 0
+ iasibufr iasi metop-b iasi_metop-b 0.0 2 0
+ iasibufr iasi metop-c iasi_metop-c 0.0 2 0
+ gomebufr gome metop-b gome_metop-b 0.0 2 0
atmsbufr atms npp atms_npp 0.0 2 0
atmsbufr atms n20 atms_n20 0.0 2 0
+ atmsbufr atms n21 atms_n21 0.0 2 0
crisbufr cris npp cris_npp 0.0 2 0
crisfsbufr cris-fsr npp cris-fsr_npp 0.0 2 0
crisfsbufr cris-fsr n20 cris-fsr_n20 0.0 2 0
+ crisfsbufr cris-fsr n21 cris-fsr_n21 0.0 2 0
abibufr abi g16 abi_g16 0.0 2 0
mlsbufr mls30 aura mls30_aura 0.0 0 0
oscatbufr uv null uv 0.0 0 0
@@ -426,6 +451,7 @@ OBS_INPUT::
refInGSI rad_ref null rad_ref 1.0 0 0
lghtInGSI lghtn null lghtn 1.0 0 0
larcInGSI larccld null larccld 1.0 0 0
+ abibufr abi g18 abi_g18 0.0 2 0
::
&SUPEROB_RADAR
del_azimuth=5.,del_elev=.25,del_range=5000.,del_time=.5,elev_angle_max=5.,minnum=50,range_max=100000., l2superob_only=.false.,
@@ -438,17 +464,30 @@ OBS_INPUT::
q_hyb_ens=.false.,
aniso_a_en=.false.,generate_ens=.false.,
n_ens=${nummem},
- beta_s0=0.15,s_ens_h=110,s_ens_v=3,
- regional_ensemble_option=1,
+ l_both_fv3sar_gfs_ens=.false.,n_ens_gfs=0,n_ens_fv3sar=30,
+ weight_ens_gfs=1.0,weight_ens_fv3sar=1.0,
+ beta_s0=0.15,s_ens_h=328.632,82.1580,4.10790,4.10790,82.1580,s_ens_v=3,3,-0.30125,-0.30125,0.0,
+ regional_ensemble_option=5,
pseudo_hybens = .false.,
- grid_ratio_ens = 3,
+ grid_ratio_ens = 1,
l_ens_in_diff_time=.true.,
ensemble_path='',
i_en_perts_io=1,
jcap_ens=574,
fv3sar_bg_opt=0,
- readin_localization=.true.,
- ens_fast_read=.false.,
+ readin_localization=.false.,
+ parallelization_over_ensmembers=.false.,
+ nsclgrp=2,l_timloc_opt=.false.,ngvarloc=2,naensloc=5,
+ r_ensloccov4tim=1.0,r_ensloccov4var=0.05,r_ensloccov4scl=1.0,
+ global_spectral_filter_sd=.false.,assign_vdl_nml=.false.,vdl_scale=0,
+ vloc_varlist(1,1)='sf ',vloc_varlist(2,1)='w ',vloc_varlist(3,1)='sf ',vloc_varlist(4,1)='w ',
+ vloc_varlist(1,2)='vp ',vloc_varlist(2,2)='qr ',vloc_varlist(3,2)='vp ',vloc_varlist(4,2)='qr ',
+ vloc_varlist(1,3)='ps ',vloc_varlist(2,3)='qs ',vloc_varlist(3,3)='ps ',vloc_varlist(4,3)='qs ',
+ vloc_varlist(1,4)='t ',vloc_varlist(2,4)='qi ',vloc_varlist(3,4)='t ',vloc_varlist(4,4)='qi ',
+ vloc_varlist(1,5)='q ',vloc_varlist(2,5)='qg ',vloc_varlist(3,5)='q ',vloc_varlist(4,5)='qg ',
+ vloc_varlist(1,6)='sst',vloc_varlist(2,6)='ql ',vloc_varlist(3,6)='sst',vloc_varlist(4,6)='ql ',
+ vloc_varlist(1,7)='stl',vloc_varlist(2,7)='dbz',vloc_varlist(3,7)='stl',vloc_varlist(4,7)='dbz',
+ vloc_varlist(1,8)='sti',vloc_varlist(2,8)='aaa',vloc_varlist(3,8)='sti',vloc_varlist(4,8)='aaa',
/
&RAPIDREFRESH_CLDSURF
dfi_radar_latent_heat_time_period=20.0,
@@ -488,6 +527,8 @@ OBS_INPUT::
i_gsdqc=2,
/
&CHEM
+ laeroana_fv3smoke=.false.,
+ berror_fv3_cmaq_regional=.false.,
/
&NST
/
@@ -761,133 +802,6 @@ SUPEROB_RADAR::
obhourset=0.,
/
"
-;;
-
- netcdf_fv3_regional)
-
-# Define namelist for netcdf fv3 run
-
-export gsi_namelist="
-
- &SETUP
- miter=2,niter(1)=2,niter(2)=1,niter_no_qc(1)=1,
- write_diag(1)=.true.,write_diag(2)=.false.,write_diag(3)=.true.,
- qoption=2,
- factqmin=0.0,factqmax=0.0,deltim=$DELTIM,
- iguess=-1,
- newpc4pred=.true., adp_anglebc=.true., angord=4,
- diag_precon=.true., step_start=1.e-3,
- nhr_assimilation=3,l_foto=.false.,
- use_pbl=.false.,use_compress=.false.,gpstop=30.,
- lrun_subdirs=.true.,
- $SETUP
- /
- &GRIDOPTS
- fv3_regional=.true.,grid_ratio_fv3_regional=3.0,
- /
- &BKGERR
- hzscl=0.373,0.746,1.50,
- vs=0.6,bw=0.,fstat=.false.,
- /
- &ANBKGERR
- anisotropic=.false.,
- /
- &JCOPTS
- /
- &STRONGOPTS
- /
- &OBSQC
- dfact=0.75,dfact1=3.0,noiqc=.true.,c_varqc=0.02,
- vadfile='prepbufr',oberrflg=.false.,njqc=.false.,vqc=.true.,
- /
- &OBS_INPUT
- dmesh(1)=120.0,dmesh(2)=60.0,dmesh(3)=60.0,dmesh(4)=60.0,dmesh(5)=120,time_window_max=1.5,ext_sonde=.true.,
- /
-OBS_INPUT::
-! dfile dtype dplat dsis dval dthin dsfcalc
- prepbufr ps null ps 0.0 0 0
- prepbufr t null t 0.0 0 0
- prepbufr q null q 0.0 0 0
- prepbufr pw null pw 0.0 0 0
- prepbufr uv null uv 0.0 0 0
- prepbufr spd null spd 0.0 0 0
- prepbufr dw null dw 0.0 0 0
- radarbufr rw null rw 0.0 0 0
- prepbufr sst null sst 0.0 0 0
- gpsrobufr gps_bnd null gps_bnd 0.0 0 0
- ssmirrbufr pcp_ssmi dmsp pcp_ssmi 0.0 -1 0
- tmirrbufr pcp_tmi trmm pcp_tmi 0.0 -1 0
- sbuvbufr sbuv2 n16 sbuv8_n16 0.0 0 0
- sbuvbufr sbuv2 n17 sbuv8_n17 0.0 0 0
- sbuvbufr sbuv2 n18 sbuv8_n18 0.0 0 0
- gsndrbufr sndr g11 sndr_g11 0.0 1 0
- gsndrbufr sndr g12 sndr_g12 0.0 1 0
- gimgrbufr goes_img g11 imgr_g11 0.0 1 0
- gimgrbufr goes_img g12 imgr_g12 0.0 1 0
- airsbufr airs aqua airs281_aqua 0.0 1 0
- msubufr msu n14 msu_n14 0.0 1 0
- amsuabufr amsua n15 amsua_n15 0.0 1 0
- amsuabufr amsua n16 amsua_n16 0.0 1 0
- amsuabufr amsua n17 amsua_n17 0.0 1 0
- amsuabufr amsua n18 amsua_n18 0.0 1 0
- amsuabufr amsua metop-a amsua_metop-a 0.0 1 0
- amsuabufr amsua metop-b amsua_metop-b 0.0 1 0
- airsbufr amsua aqua amsua_aqua 0.0 1 0
- amsubbufr amsub n15 amsub_n15 0.0 1 0
- amsubbufr amsub n16 amsub_n16 0.0 1 0
- amsubbufr amsub n17 amsub_n17 0.0 1 0
- mhsbufr mhs n18 mhs_n18 0.0 1 0
- mhsbufr mhs metop-a mhs_metop-a 0.0 1 0
- mhsbufr mhs metop-b mhs_metop-b 0.0 1 0
- ssmitbufr ssmi f13 ssmi_f13 0.0 1 0
- ssmitbufr ssmi f14 ssmi_f14 0.0 1 0
- ssmitbufr ssmi f15 ssmi_f15 0.0 1 0
- amsrebufr amsre_low aqua amsre_aqua 0.0 1 0
- amsrebufr amsre_mid aqua amsre_aqua 0.0 1 0
- amsrebufr amsre_hig aqua amsre_aqua 0.0 1 0
- ssmisbufr ssmis f16 ssmis_f16 0.0 1 0
- iasibufr iasi metop-a iasi_metop-a 0.0 1 0
- gomebufr gome metop-a gome_metop-a 0.0 1 0
- iasibufr iasi metop-b iasi_metop-b 0.0 1 0
- omibufr omi aura omi_aura 0.0 1 0
- sbuvbufr sbuv2 n19 sbuv8_n19 0.0 1 0
- amsuabufr amsua n19 amsua_n19 0.0 1 0
- mhsbufr mhs n19 mhs_n19 0.0 1 0
- tcvitl tcp null tcp 0.0 0 0
- satwndbufr uv null uv 0.0 0 0
- atmsbufr atms npp atms_npp 0.0 1 0
- crisbufr cris npp cris_npp 0.0 1 0
- crisfsbufr cris-fsr npp cris-fsr_npp 0.0 1 0
- seviribufr seviri m08 seviri_m08 0.0 1 0
- seviribufr seviri m09 seviri_m09 0.0 1 0
- seviribufr seviri m10 seviri_m10 0.0 1 0
- seviribufr seviri m11 seviri_m11 0.0 1 0
- gsnd1bufr sndrd1 g15 sndrD1_g15 0.0 1 0
- gsnd1bufr sndrd2 g15 sndrD2_g15 0.0 1 0
- gsnd1bufr sndrd3 g15 sndrD3_g15 0.0 1 0
- gsnd1bufr sndrd4 g15 sndrD4_g15 0.0 1 0
- prepbufr mta_cld null mta_cld 1.0 0 0
- prepbufr gos_ctp null gos_ctp 1.0 0 0
- lgycldbufr larccld null larccld 1.0 0 0
-::
- &SUPEROB_RADAR
- del_azimuth=5.,del_elev=.25,del_range=5000.,del_time=.5,elev_angle_max=5.,minnum=50,range_max=100000.,
- l2superob_only=.false.,
- /
- &LAG_DATA
- /
- &HYBRID_ENSEMBLE
- /
- &RAPIDREFRESH_CLDSURF
- dfi_radar_latent_heat_time_period=30.0,
- /
- &CHEM
- /
- &SINGLEOB_TEST
- /
- &NST
- /
-"
;;
*)
diff --git a/regression/regression_param.sh b/regression/regression_param.sh
index 6ee72f14da..bfc6f042fc 100755
--- a/regression/regression_param.sh
+++ b/regression/regression_param.sh
@@ -84,17 +84,17 @@ case $regtest in
;;
- rrfs_3denvar_glbens)
+ rrfs_3denvar_rdasens)
if [[ "$machine" = "Hera" ]]; then
- topts[1]="0:15:00" ; popts[1]="5/4/" ; ropts[1]="/1"
- topts[2]="0:15:00" ; popts[2]="10/4/" ; ropts[2]="/1"
+ topts[1]="0:05:00" ; popts[1]="40/3/" ; ropts[1]="/1"
+ topts[2]="0:05:00" ; popts[2]="40/5/" ; ropts[2]="/1"
elif [[ "$machine" = "Orion" ]]; then
topts[1]="0:15:00" ; popts[1]="5/4/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="10/4/" ; ropts[2]="/2"
elif [[ "$machine" = "Hercules" ]]; then
- topts[1]="0:15:00" ; popts[1]="5/4/" ; ropts[1]="/1"
- topts[2]="0:15:00" ; popts[2]="10/4/" ; ropts[2]="/2"
+ topts[1]="0:05:00" ; popts[1]="40/3/" ; ropts[1]="/1"
+ topts[2]="0:05:00" ; popts[2]="40/5/" ; ropts[2]="/2"
elif [[ "$machine" = "Jet" ]]; then
topts[1]="0:15:00" ; popts[1]="5/4/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="10/4/" ; ropts[2]="/1"
@@ -173,17 +173,17 @@ case $regtest in
;;
- netcdf_fv3_regional)
+ rrfs_enkf_conv)
if [[ "$machine" = "Hera" ]]; then
- topts[1]="0:15:00" ; popts[1]="4/4/" ; ropts[1]="/1"
- topts[2]="0:15:00" ; popts[2]="6/6/" ; ropts[2]="/1"
+ topts[1]="0:05:00" ; popts[1]="40/2/" ; ropts[1]="/1"
+ topts[2]="0:05:00" ; popts[2]="40/4/" ; ropts[2]="/1"
elif [[ "$machine" = "Orion" ]]; then
topts[1]="0:15:00" ; popts[1]="4/4/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="6/6/" ; ropts[2]="/1"
elif [[ "$machine" = "Hercules" ]]; then
- topts[1]="0:15:00" ; popts[1]="4/4/" ; ropts[1]="/1"
- topts[2]="0:15:00" ; popts[2]="6/6/" ; ropts[2]="/1"
+ topts[1]="0:05:00" ; popts[1]="40/2/" ; ropts[1]="/1"
+ topts[2]="0:05:00" ; popts[2]="40/4/" ; ropts[2]="/1"
elif [[ "$machine" = "Jet" ]]; then
topts[1]="0:15:00" ; popts[1]="4/4/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="6/6/" ; ropts[2]="/1"
@@ -191,8 +191,8 @@ case $regtest in
topts[1]="0:15:00" ; popts[1]="28/1/" ; ropts[1]="/1"
topts[2]="0:15:00" ; popts[2]="28/2/" ; ropts[2]="/1"
elif [[ "$machine" = "wcoss2" ]]; then
- topts[1]="0:15:00" ; popts[1]="28/1/" ; ropts[1]="/1"
- topts[2]="0:15:00" ; popts[2]="28/2/" ; ropts[2]="/1"
+ topts[1]="0:15:00" ; popts[1]="64/1/" ; ropts[1]="/1"
+ topts[2]="0:15:00" ; popts[2]="64/2/" ; ropts[2]="/1"
fi
if [ "$debug" = ".true." ] ; then
diff --git a/regression/regression_test_enkf.sh b/regression/regression_test_enkf.sh
index 38ee20ce99..ac839631c2 100755
--- a/regression/regression_test_enkf.sh
+++ b/regression/regression_test_enkf.sh
@@ -35,16 +35,30 @@ maxtime=1200
# Copy stdout and incr files
# from $savdir to $tmpdir
list="$exp1 $exp2 $exp3"
-for exp in $list; do
- $ncp $savdir/$exp/stdout ./stdout.$exp
- nmem=10
- imem=1
- while [[ $imem -le $nmem ]]; do
- member="_mem"`printf %03i $imem`
- $ncp $savdir/$exp/incr_${global_adate}_fhr06$member $tmpdir/incr$member.$exp
- (( imem = $imem + 1 ))
+if [[ $(expr substr $exp1 1 4) = "rrfs" ]]; then
+ for exp in $list; do
+ $ncp $savdir/$exp/stdout ./stdout.$exp
+ nmem=5
+ imem=1
+ while [[ $imem -le $nmem ]]; do
+ member="_mem"`printf %03i $imem`
+ $ncp $savdir/$exp/fv3sar_tile1_mem${member}_dynvars $tmpdir/dynvars$member.$exp
+ $ncp $savdir/$exp/fv3sar_tile1_mem${member}_tracer $tmpdir/tracer$member.$exp
+ (( imem = $imem + 1 ))
+ done
done
-done
+else
+ for exp in $list; do
+ $ncp $savdir/$exp/stdout ./stdout.$exp
+ nmem=10
+ imem=1
+ while [[ $imem -le $nmem ]]; do
+ member="_mem"`printf %03i $imem`
+ $ncp $savdir/$exp/incr_${global_adate}_fhr06$member $tmpdir/incr$member.$exp
+ (( imem = $imem + 1 ))
+ done
+ done
+fi
# Grep out ensemble mean increment information, run time, and maximum resident memory from stdout file
list="$exp1 $exp2 $exp3"
@@ -223,16 +237,36 @@ fi
# Next, check reproducibility of results between exp1 and exp2
-if [[ `expr substr $exp1 1 4` = "rtma" ]]; then
+if [[ $(expr substr $exp1 1 4) = "rrfs" ]]; then
{
-if cmp -s siganl.${exp1} siganl.${exp2}
-then
- echo 'The results between the two runs ('${exp1}' and '${exp2}') are reproducible'
- echo 'since the corresponding results are identical.'
- echo
-fi
+nmem=5
+imem=1
+while [[ $imem -le $nmem ]]; do
+ member="_mem"`printf %03i $imem`
+ ncdump dynvars$member.${exp1} > dynvars$member.${exp1}.out
+ ncdump dynvars$member.${exp2} > dynvars$member.${exp2}.out
+ if [ ! diff dynvars$member.${exp1}.out dynvars$member.${exp2}.out ]; then
+ echo 'dynvars'$member'.'${exp1}' dynvars'$member'.'${exp2}' are NOT identical'
+ failed_test=1
+ else
+ rm -f dynvars$member.${exp1}.out dynvars$member.${exp2}.out
+ echo 'dynvars'$member'.'${exp1}' dynvars'$member'.'${exp2}' are identical'
+ fi
+ ncdump tracer$member.${exp1} > tracers$member.${exp1}.out
+ ncdump tracer$member.${exp2} > tracers$member.${exp2}.out
+ if [ ! diff tracers$member.${exp1}.out tracers$member.${exp2}.out ]; then
+ echo 'tracer'$member'.'${exp1}' tracer'$member'.'${exp2}' are NOT identical'
+ failed_test=1
+ else
+ rm -f tracers$member.${exp1}.out tracers$member.${exp2}.out
+ echo 'tracer'$member'.'${exp1}' tracer'$member'.'${exp2}' are identical'
+ q
+ fi
+ (( imem = $imem + 1 ))
+done
+echo
} >> $output
@@ -321,16 +355,35 @@ else
# Next, check reproducibility of results between exp1 and exp3
- if [[ `expr substr $exp1 1 4` = "rtma" ]]; then
+ if [[ $(expr substr $exp1 1 4) = "rrfs" ]]; then
{
- if cmp -s wrf_inout.${exp1} wrf_inout.${exp3}
- then
- echo 'The results between the two runs ('${exp1}' and '${exp3}') are reproducible'
- echo 'since the corresponding results are identical.'
- echo
- fi
+ nmem=5
+ imem=1
+ while [[ $imem -le $nmem ]]; do
+ member="_mem"`printf %03i $imem`
+ ncdump dynvars$member.${exp1} > dynvars$member.${exp1}.out
+ ncdump dynvars$member.${exp3} > dynvars$member.${exp3}.out
+ if [ ! diff dynvars$member.${exp1}.out dynvars$member.${exp3}.out ]; then
+ echo 'dynvars'$member'.'${exp1}' dynvars'$member'.'${exp3}' are NOT identical'
+ failed_test=1
+ else
+ rm -f dynvars$member.${exp1}.out dynvars$member.${exp3}.out
+ echo 'dynvars'$member'.'${exp1}' dynvars'$member'.'${exp3}' are identical'
+ fi
+ ncdump tracer$member.${exp1} > tracers$member.${exp1}.out
+ ncdump tracer$member.${exp3} > tracers$member.${exp3}.out
+ if [ ! diff tracers$member.${exp1}.out tracers$member.${exp3}.out ]; then
+ echo 'tracer'$member'.'${exp1}' tracer'$member'.'${exp3}' are NOT identical'
+ failed_test=1
+ else
+ rm -f tracers$member.${exp1}.out tracers$member.${exp3}.out
+ echo 'tracer'$member'.'${exp1}' tracer'$member'.'${exp3}' are identical'
+ fi
+ (( imem = $imem + 1 ))
+ done
+ echo
} >> $output
diff --git a/regression/regression_var.sh b/regression/regression_var.sh
index aebbccab8b..3e5487009d 100755
--- a/regression/regression_var.sh
+++ b/regression/regression_var.sh
@@ -188,19 +188,19 @@ export JCAP="62"
# Case Study analysis dates
export global_adate="2024022300"
export rtma_adate="2020022420"
-export fv3_netcdf_adate="2017030100"
-export rrfs_3denvar_glbens_adate="2021072518"
+export rrfs_enkf_adate="2023061012"
+export rrfs_3denvar_rdasens_adate="2023061012"
export hafs_envar_adate="2020082512"
# Paths for canned case data.
export global_data="$casesdir/gfs/prod"
export rtma_obs="$casesdir/regional/rtma_binary/$rtma_adate"
export rtma_ges="$casesdir/regional/rtma_binary/$rtma_adate"
-export fv3_netcdf_obs="$casesdir/regional/fv3_netcdf/$fv3_netcdf_adate"
-export fv3_netcdf_ges="$casesdir/regional/fv3_netcdf/$fv3_netcdf_adate"
-export rrfs_3denvar_glbens_obs="$casesdir/regional/rrfs/$rrfs_3denvar_glbens_adate/obs"
-export rrfs_3denvar_glbens_ges="$casesdir/regional/rrfs/$rrfs_3denvar_glbens_adate/ges"
-export rrfs_3denvar_glbens_ens="$casesdir/regional/rrfs/$rrfs_3denvar_glbens_adate/ens"
+export rrfs_enkf_diag="$casesdir/regional/rrfs/$rrfs_enkf_adate/diag"
+export rrfs_enkf_ges="$casesdir/regional/rrfs/$rrfs_enkf_adate/ens"
+export rrfs_3denvar_rdasens_obs="$casesdir/regional/rrfs/$rrfs_3denvar_rdasens_adate/obs"
+export rrfs_3denvar_rdasens_ges="$casesdir/regional/rrfs/$rrfs_3denvar_rdasens_adate/ges"
+export rrfs_3denvar_rdasens_ens="$casesdir/regional/rrfs/$rrfs_3denvar_rdasens_adate/ens"
export hafs_envar_obs="$casesdir/regional/hafs_RTdata/$hafs_envar_adate/obs"
export hafs_envar_ges="$casesdir/regional/hafs_RTdata/$hafs_envar_adate/ges"
export hafs_envar_ens="$casesdir/regional/hafs_RTdata/$hafs_envar_adate/ens"
diff --git a/regression/rrfs_3denvar_glbens.sh b/regression/rrfs_3denvar_rdasens.sh
similarity index 55%
rename from regression/rrfs_3denvar_glbens.sh
rename to regression/rrfs_3denvar_rdasens.sh
index af5da51172..b00047ec65 100755
--- a/regression/rrfs_3denvar_glbens.sh
+++ b/regression/rrfs_3denvar_rdasens.sh
@@ -21,7 +21,7 @@ exp=$jobname
#
#-----------------------------------------------------------------------
#
-adate=${rrfs_3denvar_glbens_adate}
+adate=${rrfs_3denvar_rdasens_adate}
YYYYMMDDHH=$(date +%Y%m%d%H -d "${adate:0:8} ${adate:8:2}")
JJJ=$(date +%j -d "${adate:0:8} ${adate:8:2}")
@@ -31,9 +31,6 @@ DD=${YYYYMMDDHH:6:2}
HH=${YYYYMMDDHH:8:2}
YYYYMMDD=${YYYYMMDDHH:0:8}
#
-#MESO_USELIST_FN=$(date +%Y-%m-%d -d "${START_DATE} -1 day")_meso_uselist.txt
-#AIR_REJECT_FN=$(date +%Y%m%d -d "${START_DATE} -1 day")_rejects.txt
-
#
#-----------------------------------------------------------------------
#
@@ -42,17 +39,16 @@ YYYYMMDD=${YYYYMMDDHH:0:8}
#
#-----------------------------------------------------------------------
# Set runtime and save directories
-tmpdir=$tmpdir/tmpreg_rrfs_3denvar_glbens/${exp}
-savdir=$savdir/outreg_rrfs_3denvar_glbens/${exp}
+tmpdir=$tmpdir/tmpreg_rrfs_3denvar_rdasens/${exp}
+savdir=$savdir/outreg_rrfs_3denvar_rdasens/${exp}
# Set up $tmpdir
rm -rf $tmpdir
mkdir -p $tmpdir
-chgrp rstprod $tmpdir
chmod 750 $tmpdir
cd $tmpdir
-bkpath=${rrfs_3denvar_glbens_ges}
+bkpath=${rrfs_3denvar_rdasens_ges}
# decide background type
if [ -r "${bkpath}/fv3_coupler.res" ]; then
BKTYPE=0 # warm start
@@ -68,19 +64,59 @@ fixcrtm=${fixcrtm:-$CRTM_FIX}
#
#---------------------------------------------------------------------
#
-echo "regional_ensemble_option is ",${regional_ensemble_option:-1}
-
+regional_ensemble_option=${regional_ensemble_option:-5}
+NUM_ENS_MEMBERS=5
+echo "regional_ensemble_option is ",${regional_ensemble_option}
+echo "regional_ensemble number is ",${NUM_ENS_MEMBERS}
echo "$VERBOSE" "fixgsi is $fixgsi"
-echo "$VERBOSE" "fixgriddir is $fixgriddir"
echo "$VERBOSE" "default bkpath is $bkpath"
echo "$VERBOSE" "background type is is $BKTYPE"
ifhyb=.false.
-if [[ ${regional_ensemble_option:-1} -eq 1 ]]; then #using GDAS
+#
+# Check if we have enough FV3-LAM ensembles when regional_ensemble_option=5
+#
+if [[ ${regional_ensemble_option} -eq 5 ]]; then
+
+ imem=1
+ ifound=0
+ while [[ $imem -le ${NUM_ENS_MEMBERS} ]];do
+ memcharv0=$( printf "%03d" $imem )
+ memchar=mem$( printf "%04d" $imem )
+
+ restart_prefix="${YYYYMMDD}.${HH}0000."
+ slash_ensmem_subdir=$memchar
+ bkpathmem=${rrfs_3denvar_rdasens_ens}/${slash_ensmem_subdir}/fcst_fv3lam/RESTART
+
+ dynvarfile=${bkpathmem}/${restart_prefix}fv_core.res.tile1.nc
+ tracerfile=${bkpathmem}/${restart_prefix}fv_tracer.res.tile1.nc
+ phyvarfile=${bkpathmem}/${restart_prefix}phy_data.nc
+ if [ -r "${dynvarfile}" ] && [ -r "${tracerfile}" ] && [ -r "${phyvarfile}" ] ; then
+ ln -snf ${bkpathmem}/${restart_prefix}fv_core.res.tile1.nc fv3SAR01_ens_mem${memcharv0}-fv3_dynvars
+ ln -snf ${bkpathmem}/${restart_prefix}fv_tracer.res.tile1.nc fv3SAR01_ens_mem${memcharv0}-fv3_tracer
+ ln -snf ${bkpathmem}/${restart_prefix}phy_data.nc fv3SAR01_ens_mem${memcharv0}-fv3_phyvars
+ (( ifound += 1 ))
+ else
+ print_info_msg "WARNING: Cannot find ensemble files: ${dynvarfile} ${tracerfile} ${phyvarfile} "
+ fi
+ (( imem += 1 ))
+ done
+
+ ifhyb=.true.
+ nummem=${NUM_ENS_MEMBERS}
+ if [[ $ifound -ne ${NUM_ENS_MEMBERS} ]] || [[ ${BKTYPE} -eq 1 ]]; then
+ print_info_msg "Not enough FV3_LAM ensembles, will fall to GDAS"
+ regional_ensemble_option=1
+ l_both_fv3sar_gfs_ens=.false.
+ ifhyb=.false.
+ fi
+fi
+#
+if [[ ${regional_ensemble_option} -eq 1 ]]; then #using GDAS
#-----------------------------------------------------------------------
# Make a list of the latest GFS EnKF ensemble
#-----------------------------------------------------------------------
- ls ${rrfs_3denvar_glbens_ens}/*gdas.t??z.atmf009.mem0??.nc >> filelist03
+ ls ${rrfs_3denvar_rdasens_ens}/*gdas.t??z.atmf009.mem0??.nc >> filelist03
nummem=$(more filelist03 | wc -l)
nummem=$((nummem - 3 ))
@@ -109,12 +145,13 @@ ln -snf ${bkpath}/fv3_akbk fv3_akbk
ln -snf ${bkpath}/fv3_grid_spec fv3_grid_spec
if [ ${BKTYPE} -eq 1 ]; then # cold start uses background from INPUT
- ln -snf ${bkpath}/phis.nc phis.nc
- ncks -A -v phis phis.nc ${bkpath}/gfs_data.tile7.halo0.nc
- ln_vrfy -snf ${bkpath}/sfc_data.tile7.halo0.nc fv3_sfcdata
- ln_vrfy -snf ${bkpath}/gfs_data.tile7.halo0.nc fv3_dynvars
- ln_vrfy -s fv3_dynvars fv3_tracer
+ cp ${bkpath}/sfc_data.tile7.halo0.nc fv3_sfcdata
+ cp ${bkpath}/gfs_data.tile7.halo0.nc fv3_dynvars
+ ln_vrfy -s fv3_dynvars fv3_tracer
+
+ ln -snf ${bkpath}/phis.nc phis.nc
+ ncks -A -v phis phis.nc fv3_dynvars
fv3lam_bg_type=1
else # cycle uses background from restart
@@ -133,7 +170,6 @@ sed -i "s/mm/${MM}/" coupler.res
sed -i "s/dd/${DD}/" coupler.res
sed -i "s/hh/${HH}/" coupler.res
-
#
#-----------------------------------------------------------------------
#
@@ -143,7 +179,7 @@ sed -i "s/hh/${HH}/" coupler.res
#-----------------------------------------------------------------------
obs_source=rap
obsfileprefix=${YYYYMMDDHH}.${obs_source}
- obspath_tmp=${rrfs_3denvar_glbens_obs}
+ obspath_tmp=${rrfs_3denvar_rdasens_obs}
obs_files_source[0]=${obspath_tmp}/${obsfileprefix}.t${HH}${SUBH}z.prepbufr.tm00
obs_files_target[0]=prepbufr
@@ -156,6 +192,73 @@ sed -i "s/hh/${HH}/" coupler.res
obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}${SUBH}z.nexrad.tm00.bufr_d
obs_files_target[${obs_number}]=l2rwbufr
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${YYYYMMDDHH}.Gridded_ref.nc
+ obs_files_target[${obs_number}]=dbzobs.nc
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${YYYYMMDDHH}.fedobs.nc
+ obs_files_target[${obs_number}]=fedobs.nc
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.1bamua.tm00.bufr_d
+ obs_files_target[${obs_number}]=amsuabufr
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.esamua.tm00.bufr_d
+ obs_files_target[${obs_number}]=amsuabufrears
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.1bmhs.tm00.bufr_d
+ obs_files_target[${obs_number}]=mhsbufr
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.esmhs.tm00.bufr_d
+ obs_files_target[${obs_number}]=mhsbufrears
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.atms.tm00.bufr_d
+ obs_files_target[${obs_number}]=atmsbufr
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.esatms.tm00.bufr_d
+ obs_files_target[${obs_number}]=atmsbufrears
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.atmsdb.tm00.bufr_d
+ obs_files_target[${obs_number}]=atmsbufr_db
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.crisf4.tm00.bufr_d
+ obs_files_target[${obs_number}]=crisfsbufr
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.crsfdb.tm00.bufr_d
+ obs_files_target[${obs_number}]=crisfsbufr_db
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.mtiasi.tm00.bufr_d
+ obs_files_target[${obs_number}]=iasibufr
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.esiasi.tm00.bufr_d
+ obs_files_target[${obs_number}]=iasibufrears
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.iasidb.tm00.bufr_d
+ obs_files_target[${obs_number}]=iasibufr_db
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.gsrcsr.tm00.bufr_d
+ obs_files_target[${obs_number}]=abibufr
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.ssmisu.tm00.bufr_d
+ obs_files_target[${obs_number}]=ssmisbufr
+
+ obs_number=${#obs_files_source[@]}
+ obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}z.sevcsr.tm00.bufr_d
+ obs_files_target[${obs_number}]=sevcsr
obs_number=${#obs_files_source[@]}
for (( i=0; i<${obs_number}; i++ ));
@@ -176,7 +279,7 @@ done
#
#-----------------------------------------------------------------------
-ANAVINFO=${fixgsi}/anavinfo.rrfs
+ANAVINFO=${fixgsi}/anavinfo.rrfs_conv_dbz
CONVINFO=${fixgsi}/convinfo.rrfs
HYBENSINFO=${fixgsi}/hybens_info.rrfs
OBERROR=${fixgsi}/errtable.rrfs
@@ -198,9 +301,31 @@ cp $OBERROR errtable
cp $ATMS_BEAMWIDTH atms_beamwidth.txt
cp ${HYBENSINFO} hybens_info
-cp ${bkpath}/gsd_sfcobs_provider.txt gsd_sfcobs_provider.txt
-cp ${bkpath}/current_bad_aircraft current_bad_aircraft
-cp ${bpath}/gsd_sfcobs_uselist.txt gsd_sfcobs_uselist.txt
+cp ${obspath_tmp}/gsd_sfcobs_provider.txt gsd_sfcobs_provider.txt
+cp ${obspath_tmp}/current_bad_aircraft current_bad_aircraft
+cp ${obspath_tmp}/gsd_sfcobs_uselist.txt gsd_sfcobs_uselist.txt
+
+#-----------------------------------------------------------------------
+#
+# cycling radiance bias corretion files
+#
+#-----------------------------------------------------------------------
+
+cp $obspath_tmp/rrfs.prod.${YYYYMMDDHH}_satbias_pc ./satbias_pc
+cp $obspath_tmp/rrfs.prod.${YYYYMMDDHH}_satbias ./satbias_in
+cp $obspath_tmp/rrfs.prod.${YYYYMMDDHH}_radstat ./radstat.rrfs
+
+if [ -r radstat.rrfs ]; then
+ listdiag=$(tar xvf radstat.rrfs | cut -d' ' -f2 | grep _ges)
+ for type in $listdiag; do
+ diag_file=$(echo $type | cut -d',' -f1)
+ fname=$(echo $diag_file | cut -d'.' -f1)
+ date=$(echo $diag_file | cut -d'.' -f2)
+ gunzip $diag_file
+ fnameanl=$(echo $fname|sed 's/_ges//g')
+ mv $fname.$date* $fnameanl
+ done
+fi
#-----------------------------------------------------------------------
#
@@ -261,9 +386,9 @@ HYBRID_ENSEMBLE='ensemble_path="",'
SINGLEOB="$SINGLEOB_update"
if [ "$debug" = ".false." ]; then
- . $scripts/regression_namelists.sh rrfs_3denvar_glbens
+ . $scripts/regression_namelists.sh rrfs_3denvar_rdasens
else
- . $scripts/regression_namelists_db.sh rrfs_3denvar_glbens
+ . $scripts/regression_namelists_db.sh rrfs_3denvar_rdasens
fi
cat << EOF > gsiparm.anl
@@ -279,10 +404,6 @@ elif [[ $exp == *"contrl"* ]]; then
$ncp $gsiexec_contrl ./gsi.x
fi
-#cp $fv3_netcdf_ges/nam.t06z.satbias_pc.tm04 ./satbias_pc
-#cp $fv3_netcdf_ges/nam.t06z.satbias.tm04 ./satbias_in
-#cp $fv3_netcdf_ges/nam.t06z.radstat.tm04 ./radstat.gdas
-
# Run GSI
cd $tmpdir
echo "run gsi now"
diff --git a/regression/rrfs_enkf_conv.sh b/regression/rrfs_enkf_conv.sh
new file mode 100755
index 0000000000..21f7aacee2
--- /dev/null
+++ b/regression/rrfs_enkf_conv.sh
@@ -0,0 +1,223 @@
+
+set -x
+
+# Set variables used in script
+# CLEAN up $tmpdir when finished (YES=remove, NO=leave alone)
+# ncp is cp replacement, currently keep as /bin/cp
+
+UNCOMPRESS=gunzip
+CLEAN=NO
+ncp=/bin/cp
+#
+# Set experiment name
+#
+exp=$jobname
+
+#-----------------------------------------------------------------------
+#
+# Extract from ADATE the starting year, month, day, and hour of the
+# forecast. These are needed below for various operations.
+#
+#-----------------------------------------------------------------------
+#
+
+adate=${rrfs_enkf_adate}
+YYYYMMDDHH=$(date +%Y%m%d%H -d "${adate:0:8} ${adate:8:2}")
+JJJ=$(date +%j -d "${adate:0:8} ${adate:8:2}")
+
+YYYY=${YYYYMMDDHH:0:4}
+MM=${YYYYMMDDHH:4:2}
+DD=${YYYYMMDDHH:6:2}
+HH=${YYYYMMDDHH:8:2}
+YYYYMMDD=${YYYYMMDDHH:0:8}
+
+#
+#-----------------------------------------------------------------------
+#
+# go to working directory and save directory.
+# define fix and background path
+#
+#-----------------------------------------------------------------------
+# Set runtime and save directories
+tmpdir=$tmpdir/tmpreg_rrfs_enkf_conv/${exp}
+savdir=$savdir/outreg_rrfs_enkf_conv/${exp}
+
+# Set up $tmpdir
+rm -rf $tmpdir
+mkdir -p $tmpdir
+chmod 750 $tmpdir
+cd $tmpdir
+
+fixcrtm=${fixcrtm:-$CRTM_FIX}
+
+cp ${rrfs_3denvar_rdasens_ges}/fv3_coupler.res coupler.res
+cp ${rrfs_3denvar_rdasens_ges}/fv3_akbk fv3sar_tile1_akbk.nc
+cp ${rrfs_3denvar_rdasens_ges}/fv3_grid_spec fv3sar_tile1_grid_spec.nc
+
+#
+#-----------------------------------------------------------------------
+#
+# Loop through the members, link the background and copy over
+# observer output (diag*ges*) files to the running directory
+#
+#-----------------------------------------------------------------------
+#
+ob_type="conv"
+DO_ENS_RADDA="false"
+nens=${nens:-5}
+netcdf_diag=".true."
+for imem in $(seq 1 $nens) ensmean; do
+
+ if [ "${imem}" = "ensmean" ]; then
+ memchar="ensmean"
+ memcharv0="ensmean"
+ restart_prefix=""
+ else
+ memchar="mem"$(printf %04i $imem)
+ memcharv0="mem"$(printf %03i $imem)
+ restart_prefix="${YYYYMMDD}.${HH}0000."
+ fi
+ slash_ensmem_subdir=$memchar
+ bkpath=${rrfs_enkf_ges}/${slash_ensmem_subdir}/fcst_fv3lam/RESTART
+ observer_nwges_dir="${rrfs_enkf_diag}/${slash_ensmem_subdir}/observer_gsi"
+
+ cp ${bkpath}/${restart_prefix}fv_core.res.tile1.nc fv3sar_tile1_${memcharv0}_dynvars
+ cp ${bkpath}/${restart_prefix}fv_tracer.res.tile1.nc fv3sar_tile1_${memcharv0}_tracer
+ cp ${bkpath}/${restart_prefix}sfc_data.nc fv3sar_tile1_${memcharv0}_sfcdata
+ cp ${bkpath}/${restart_prefix}phy_data.nc fv3sar_tile1_${memcharv0}_phyvar
+
+ #
+#-----------------------------------------------------------------------
+#
+# Copy observer outputs (diag*ges*) to the working directory
+#
+#-----------------------------------------------------------------------
+#
+ if [ "${netcdf_diag}" = ".true." ] ; then
+ # Note, listall_rad is copied from exrrfs_run_analysis.sh
+ listall_rad="hirs2_n14 msu_n14 sndr_g08 sndr_g11 sndr_g11 sndr_g12 sndr_g13 sndr_g08_prep sndr_g11_prep sndr_g12_prep sndr_g13_prep sndrd1_g11 sndrd2_g11 sndrd3_g11 sndrd4_g11 sndrd1_g15 sndrd2_g15 sndrd3_g15 sndrd4_g15 sndrd1_g13 sndrd2_g13 sndrd3_g13 sndrd4_g13 hirs3_n15 hirs3_n16 hirs3_n17 amsua_n15 amsua_n16 amsua_n17 amsua_n18 amsua_n19 amsua_metop-a amsua_metop-b amsua_metop-c amsub_n15 amsub_n16 amsub_n17 hsb_aqua airs_aqua amsua_aqua imgr_g08 imgr_g11 imgr_g12 pcp_ssmi_dmsp pcp_tmi_trmm conv sbuv2_n16 sbuv2_n17 sbuv2_n18 omi_aura ssmi_f13 ssmi_f14 ssmi_f15 hirs4_n18 hirs4_metop-a mhs_n18 mhs_n19 mhs_metop-a mhs_metop-b mhs_metop-c amsre_low_aqua amsre_mid_aqua amsre_hig_aqua ssmis_las_f16 ssmis_uas_f16 ssmis_img_f16 ssmis_env_f16 iasi_metop-a iasi_metop-b iasi_metop-c seviri_m08 seviri_m09 seviri_m10 seviri_m11 cris_npp atms_npp ssmis_f17 cris-fsr_npp cris-fsr_n20 atms_n20 abi_g16"
+
+
+ if [ "${ob_type}" = "conv" ]; then
+ list_ob_type="conv_ps conv_q conv_t conv_uv conv_pw conv_rw conv_sst"
+
+ if [ "${DO_ENS_RADDA}" = "TRUE" ]; then
+ list_ob_type="$list_ob_type $listall_rad"
+ fi
+ fi
+
+ if [ "${ob_type}" = "radardbz" ]; then
+ if [ ${DO_GLM_FED_DA} == "TRUE" ]; then
+ list_ob_type="conv_dbz conv_fed"
+ else
+ list_ob_type="conv_dbz"
+ fi
+ fi
+ for sub_ob_type in ${list_ob_type} ; do
+ diagfile0=${observer_nwges_dir}/diag_${sub_ob_type}_ges.${YYYYMMDDHH}.nc4.gz
+ if [ -s $diagfile0 ]; then
+ diagfile=$(basename $diagfile0)
+ cp $diagfile0 $diagfile
+ gzip -d $diagfile && rm -f $diagfile
+ ncfile0=$(basename -s .gz $diagfile)
+ ncfile=$(basename -s .nc4 $ncfile0)
+ mv $ncfile0 ${ncfile}_${memcharv0}.nc4
+ fi
+ done
+ else
+ for diagfile0 in $(ls ${observer_nwges_dir}/diag*${ob_type}*ges* ) ; do
+ if [ -s $diagfile0 ]; then
+ diagfile=$(basename $diagfile0)
+ cp $diagfile0 diag_conv_ges.$memcharv0
+ fi
+ done
+ fi
+done
+
+#
+#-----------------------------------------------------------------------
+#
+# Set GSI fix files
+#
+#----------------------------------------------------------------------
+#
+found_ob_type=0
+
+CONVINFO=${fixgsi}/convinfo.rrfs
+
+if [ "${ob_type}" = "conv" ]; then
+ ANAVINFO=${fixgsi}/anavinfo.rrfs
+ found_ob_type=1
+fi
+if [ "${ob_type}" = "radardbz" ]; then
+ ANAVINFO=${fixgsi}/anavinfo.enkf.rrfs_dbz
+ CORRLENGTH="18"
+ LNSIGCUTOFF="0.5"
+ found_ob_type=1
+fi
+if [ ${found_ob_type} == 0 ]; then
+ err_exit "Unknown observation type: ${ob_type}"
+fi
+stdout_name=stdout.${ob_type}
+stderr_name=stderr.${ob_type}
+
+SATINFO=${fixgsi}/global_satinfo.txt
+OZINFO=${fixgsi}/global_ozinfo.txt
+
+cp ${ANAVINFO} anavinfo
+cp $SATINFO satinfo
+cp $CONVINFO convinfo
+cp $OZINFO ozinfo
+
+#
+#-----------------------------------------------------------------------
+#
+# Get nlons (NX_RES), nlats (NY_RES) and nlevs
+#
+#-----------------------------------------------------------------------
+#
+NX_RES=$(ncdump -h fv3sar_tile1_grid_spec.nc | grep "grid_xt =" | cut -f3 -d" " )
+NY_RES=$(ncdump -h fv3sar_tile1_grid_spec.nc | grep "grid_yt =" | cut -f3 -d" " )
+nlevs=$(ncdump -h fv3sar_tile1_mem001_tracer | grep "zaxis_1 =" | cut -f3 -d" " )
+#
+#----------------------------------------------------------------------
+#
+# Set namelist parameters for EnKF
+#
+#----------------------------------------------------------------------
+#
+EnKFTracerVars=${EnKFTracerVar:-"sphum,o3mr"}
+ldo_enscalc_option=${ldo_enscalc_option:-0}
+
+# Make gsi namelist
+
+. $scripts/regression_namelists.sh rrfs_enkf_conv
+
+#
+
+cat << EOF > enkf.nml
+
+$gsi_namelist
+
+EOF
+
+#
+#-----------------------------------------------------------------------
+#
+# Run the EnKF
+#
+#-----------------------------------------------------------------------
+#
+# Copy executable and fixed files to $tmpdir
+if [[ $exp == *"updat"* ]]; then
+ $ncp $enkfexec_updat ./enkf.x
+elif [[ $exp == *"contrl"* ]]; then
+ $ncp $enkfexec_contrl ./enkf.x
+fi
+
+# Run enkf
+cd $tmpdir
+echo "run rrfs enkf now"
+eval "$APRUN $tmpdir/enkf.x < enkf.nml > stdout 2>&1"
+rc=$?
+exit $rc
From b37b7d73270bed86a1c80fd2013982948ece4955 Mon Sep 17 00:00:00 2001
From: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com>
Date: Thu, 27 Jun 2024 08:59:16 -0400
Subject: [PATCH 6/7] Update Jet directories (#763)
---
regression/regression_var.sh | 10 +++++-----
ush/detect_machine.sh | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/regression/regression_var.sh b/regression/regression_var.sh
index 3e5487009d..401c7e0022 100755
--- a/regression/regression_var.sh
+++ b/regression/regression_var.sh
@@ -32,7 +32,7 @@ fi
# Determine the machine
if [[ -d /scratch1 ]]; then # Hera
export machine="Hera"
-elif [[ -d /mnt/lfs4 || -d /jetmon || -d /mnt/lfs1 ]]; then # Jet
+elif [[ -d /mnt/lfs4 || -d /jetmon || -d /mnt/lfs5 ]]; then # Jet
export machine="Jet"
elif [[ -d /discover ]]; then # NCCS Discover
export machine="Discover"
@@ -137,16 +137,16 @@ case $machine in
;;
Jet)
- export noscrub=/lfs1/NESDIS/nesdis-rdo2/$LOGNAME/noscrub
- export ptmp=/lfs1/NESDIS/nesdis-rdo2/$LOGNAME/ptmp
- export casesdir="/lfs1/NESDIS/nesdis-rdo2/David.Huber/save/CASES/regtest"
+ export noscrub=/lfs5/NESDIS/nesdis-rdo2/$LOGNAME/noscrub
+ export ptmp=/lfs5/NESDIS/nesdis-rdo2/$LOGNAME/ptmp
+ export casesdir="/lfs5/NESDIS/nesdis-rdo2/David.Huber/save/CASES/regtest"
export check_resource="no"
export accnt="nesdis-rdo2"
export group="global"
export queue="batch"
if [[ "$cmaketest" = "false" ]]; then
- export basedir="/lfs1/NESDIS/nesdis-rdo2/$LOGNAME/save/git/gsi"
+ export basedir="/lfs5/NESDIS/nesdis-rdo2/$LOGNAME/save/git/gsi"
fi
# On Jet, there are no scrubbers to remove old contents from stmp* directories.
diff --git a/ush/detect_machine.sh b/ush/detect_machine.sh
index 683ee0db7f..6562b183b6 100755
--- a/ush/detect_machine.sh
+++ b/ush/detect_machine.sh
@@ -67,7 +67,7 @@ if [[ -d /lfs/h3 ]]; then
elif [[ -d /lfs/h1 && ! -d /lfs/h3 ]]; then
# We are on NOAA TDS Acorn
MACHINE_ID=acorn
-elif [[ -d /mnt/lfs1 ]]; then
+elif [[ -d /mnt/lfs5 ]]; then
# We are on NOAA Jet
MACHINE_ID=jet
elif [[ -d /scratch1 ]]; then
From 529bb796bea0e490f186729cd168a91c034bb12d Mon Sep 17 00:00:00 2001
From: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com>
Date: Fri, 28 Jun 2024 16:10:41 -0400
Subject: [PATCH 7/7] Updates to build and run on Orion Rocky 9 (#764)
note; while this commit enables gsi.x and enkf.x to be built on Orion Rocky 9,
both executables run 2x slower on Orion Rocky 9 than Orion Centos 7
---
modulefiles/gsi_orion.intel.lua | 9 +++++----
regression/regression_var.sh | 11 +++++++----
ush/detect_machine.sh | 4 ++--
ush/sub_orion | 8 +++++---
4 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/modulefiles/gsi_orion.intel.lua b/modulefiles/gsi_orion.intel.lua
index 03ea22018d..d05bda5b2e 100644
--- a/modulefiles/gsi_orion.intel.lua
+++ b/modulefiles/gsi_orion.intel.lua
@@ -1,11 +1,11 @@
help([[
]])
-prepend_path("MODULEPATH", "/work/noaa/epic/role-epic/spack-stack/orion/spack-stack-1.6.0/envs/gsi-addon-env/install/modulefiles/Core")
+prepend_path("MODULEPATH", "/work/noaa/epic/role-epic/spack-stack/orion/spack-stack-1.6.0/envs/gsi-addon-env-rocky9/install/modulefiles/Core")
-local stack_python_ver=os.getenv("python_ver") or "3.11.6"
-local stack_intel_ver=os.getenv("stack_intel_ver") or "2022.0.2"
-local stack_impi_ver=os.getenv("stack_impi_ver") or "2021.5.1"
+local stack_python_ver=os.getenv("stack_python_ver") or "3.11.6"
+local stack_intel_ver=os.getenv("stack_intel_ver") or "2021.9.0"
+local stack_impi_ver=os.getenv("stack_impi_ver") or "2021.9.0"
local cmake_ver=os.getenv("cmake_ver") or "3.23.1"
local prod_util_ver=os.getenv("prod_util_ver") or "2.1.1"
@@ -16,6 +16,7 @@ load(pathJoin("cmake", cmake_ver))
load("gsi_common")
load(pathJoin("prod_util", prod_util_ver))
+load("intel-oneapi-mkl/2022.2.1")
pushenv("CFLAGS", "-xHOST")
pushenv("FFLAGS", "-xHOST")
diff --git a/regression/regression_var.sh b/regression/regression_var.sh
index 401c7e0022..4a2bc85874 100755
--- a/regression/regression_var.sh
+++ b/regression/regression_var.sh
@@ -40,10 +40,13 @@ elif [[ -d /ncrc ]]; then # Gaea
export machine="Gaea"
elif [[ -d /data/prod ]]; then # S4
export machine="S4"
-elif [[ -d /work && $(hostname) =~ "Orion" ]]; then # Orion
- export machine="Orion"
-elif [[ -d /work && $(hostname) =~ "hercules" ]]; then # Hercules
- export machine="Hercules"
+elif [[ -d /work ]]; then # Orion or Hercules
+ mount=$(findmnt -n -o SOURCE /home)
+ if [[ ${mount} =~ "hercules" ]]; then
+ export machine="Hercules"
+ else
+ export machine="Orion"
+ fi
elif [[ -d /lfs/h2 ]]; then # wcoss2
export machine="wcoss2"
fi
diff --git a/ush/detect_machine.sh b/ush/detect_machine.sh
index 6562b183b6..0beb937f7e 100755
--- a/ush/detect_machine.sh
+++ b/ush/detect_machine.sh
@@ -75,8 +75,8 @@ elif [[ -d /scratch1 ]]; then
MACHINE_ID=hera
elif [[ -d /work ]]; then
# We are on MSU Orion or Hercules
- if [[ -d /apps/other ]]; then
- # We are on Hercules
+ mount=$(findmnt -n -o SOURCE /home)
+ if [[ ${mount} =~ "hercules" ]]; then
MACHINE_ID=hercules
else
MACHINE_ID=orion
diff --git a/ush/sub_orion b/ush/sub_orion
index b810576379..371c30e321 100755
--- a/ush/sub_orion
+++ b/ush/sub_orion
@@ -115,23 +115,25 @@ echo "#SBATCH --nodes=$nodes --ntasks-per-node=$procs --exclusive" >> $cfile
echo "#SBATCH --account=$accnt" >> $cfile
echo "" >>$cfile
+echo "set -x" >> $cfile
echo "export ntasks=$(( $nodes * $procs ))" >> $cfile
echo "export ppn=$procs" >> $cfile
echo "export threads=$threads" >> $cfile
echo "export OMP_NUM_THREADS=$threads" >> $cfile
-##echo "export OMP_STACKSIZE=2048M" >> $cfile
echo "ulimit -s unlimited" >> $cfile
echo "" >>$cfile
echo ". "$(awk '{ print $1, $2, $3, $4, $5, $6, $7, $8, $9 }' $regdir/regression_var.out) >>$cfile
echo "" >>$cfile
-echo ". /apps/lmod/lmod/init/sh" >> $cfile
+echo ". /apps/other/lmod/lmod/init/sh" >> $cfile
echo "module purge" >> $cfile
echo "module use $modulefiles" >> $cfile
echo "module load gsi_orion.intel" >> $cfile
echo "module list" >> $cfile
-echo "" >> $cfile
+#TODO reenable I_MPI_EXTRA_FILESYSTEM once regional ctests can properly handle parallel I/O on Orion
+echo "unset I_MPI_EXTRA_FILESYSTEM" >> $cfile
+
cat $exec >> $cfile
if [[ $nosub = YES ]];then