diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..04832590e --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,24 @@ +# Description + + + +# Companion PRs + + + +# Issues + + + +# Automated CI tests to run in Global Workflow + +- [ ] atm_jjob +- [ ] C96C48_ufs_hybatmDA +- [ ] C96C48_hybatmaerosnowDA +- [ ] C48mx500_3DVarAOWCDA +- [ ] C48mx500_hybAOWCDA +- [ ] C96C48_hybatmDA diff --git a/ci/ci_tests.sh b/ci/ci_tests.sh new file mode 100644 index 000000000..43e8eb2fb --- /dev/null +++ b/ci/ci_tests.sh @@ -0,0 +1,6 @@ +CI_TESTS=("atm_jjob" + "C96C48_ufs_hybatmDA" + "C96C48_hybatmaerosnowDA" + "C48mx500_3DVarAOWCDA" + "C48mx500_hybAOWCDA" + "C96C48_hybatmDA") diff --git a/ci/driver.sh b/ci/driver.sh index 933b9223b..e66929350 100755 --- a/ci/driver.sh +++ b/ci/driver.sh @@ -1,6 +1,6 @@ #!/bin/bash --login -echo "Start at $(date)" +echo "Starting automated testing at $(date)" my_dir="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" echo "Set my_dir ${my_dir}" @@ -13,6 +13,7 @@ usage() { echo echo " -t target/machine script is running on DEFAULT: $(hostname)" echo " -h display this message and quit" + echo " -w run workflow tests on $(hostname)" echo exit 1 } @@ -22,7 +23,8 @@ usage() { export TARGET="$(hostname)" -while getopts "t:h" opt; do +TEST_WORKFLOW=0 +while getopts "t:h:w" opt; do case $opt in t) TARGET=$OPTARG @@ -30,12 +32,16 @@ while getopts "t:h" opt; do h|\?|:) usage ;; + w) + TEST_WORKFLOW=1 + ;; esac done +echo "Running automated testing on $TARGET" + case ${TARGET} in - hera | orion) - echo "Running Automated Testing on $TARGET" + hera | orion | hercules) source $MODULESHOME/init/sh source $my_dir/${TARGET}.sh module purge @@ -49,106 +55,176 @@ case ${TARGET} in ;; esac +# ============================================================================== +# set list of available CI tests to run on the Global Workflow +source $my_dir/ci_tests.sh + +# ============================================================================== +# set things that depend on whether running workflow tests or not +gdasapp_url="https://github.com/NOAA-EMC/GDASApp.git" +if [[ $TEST_WORKFLOW == 1 ]]; then + echo "Testing GDASApp inside the Global Workflow" + + CI_LABEL="${GDAS_CI_HOST}-GW-RT" + OPEN_PR_LIST_DIR=$GDAS_CI_ROOT/open_pr_list_gw + PR_TEST_DIR=$GDAS_CI_ROOT/workflow/PR + BASE_REPO=global-workflow + + # Default Global Workflow repo and branch if no companion PR found + workflow_url="https://github.com/NOAA-EMC/global-workflow.git" + workflow_branch="develop" +else + echo "Testing stand-alone GDASApp" + + CI_LABEL="${GDAS_CI_HOST}-RT" + OPEN_PR_LIST_DIR=$GDAS_CI_ROOT/open_pr_list + PR_TEST_DIR=$GDAS_CI_ROOT/PR + BASE_REPO=GDASApp +fi + # ============================================================================== # pull on the repo and get list of open PRs + cd $GDAS_CI_ROOT/repo -CI_LABEL="${GDAS_CI_HOST}-RT" -gh pr list --label "$CI_LABEL" --state "open" | awk '{print $1;}' > $GDAS_CI_ROOT/open_pr_list -open_pr=`cat $GDAS_CI_ROOT/open_pr_list | wc -l` +gh pr list --label "$CI_LABEL" --state "open" | awk '{print $1;}' > $OPEN_PR_LIST_DIR + +open_pr=`cat $OPEN_PR_LIST_DIR | wc -l` if (( $open_pr == 0 )); then echo "No open PRs with ${CI_LABEL}, exit." - echo "Finish at $(date)" + echo "Finished automated testing at $(date)" exit fi -open_pr_list=$(cat $GDAS_CI_ROOT/open_pr_list) +open_pr_list=$(cat $OPEN_PR_LIST_DIR) # ============================================================================== # clone, checkout, build, test, etc. -repo_url="https://github.com/NOAA-EMC/GDASApp.git" # loop through all open PRs for pr in $open_pr_list; do echo " " - echo "Start processing Pull Request #${pr} at $(date)" + echo "Starting processing of pull request #${pr} at $(date)" # get the branch name used for the PR gdasapp_branch=$(gh pr view $pr --json headRefName -q ".headRefName") - # get additional branch information - branch_owner=$(gh pr view $pr --repo ${repo_url} --json headRepositoryOwner --jq '.headRepositoryOwner.login') - branch_name=$(gh pr view $pr --repo ${repo_url} --json headRepository --jq '.headRepository.name') - pr_assignees=$(gh pr view $pr --repo ${repo_url} --json assignees --jq '.assignees[].login') - + # get additional branch informatio + branch_owner=$(gh pr view $pr --repo ${gdasapp_url} --json headRepositoryOwner --jq '.headRepositoryOwner.login') + branch_name=$(gh pr view $pr --repo ${gdasapp_url} --json headRepository --jq '.headRepository.name') + pr_assignees=$(gh pr view $pr --repo ${gdasapp_url} --json assignees --jq '.assignees[].login') + # check if any assignee is authorized to run CI - authorized_by="" + rc=1 for str in ${pr_assignees[@]}; do - grep $str /scratch1/NCEPDEV/da/role.jedipara/CI/GDASApp/authorized_users - rc=$? + grep $str $AUTHORIZED_USERS_FILE > /dev/null + if (( rc != 0 )); then + rc=$? + fi if (( rc == 0 )); then - authorized_by=${str} - echo "FOUND MATCH $str, rc $rc" - break + echo "Authorized user $str assigned to this PR" fi done # Authorized to run CI if (( rc == 0 )); then - echo "Run CI" + echo "CI authorized. Running CI..." # update PR label gh pr edit $pr --remove-label $CI_LABEL --add-label ${CI_LABEL}-Running - - # construct the fork URL - gdasapp_url="https://github.com/$branch_owner/${branch_name}.git" - + echo "GDASApp URL: $gdasapp_url" echo "GDASApp branch Name: $gdasapp_branch" - echo "CI authorized by $authorized_by at $(date)" + + if [[ $TEST_WORKFLOW == 1 ]]; then + # check for a companion PR in the global-workflow + companion_pr_exists=$(gh pr list --repo ${workflow_url} --head ${gdasapp_branch} --state open) + + if [ -n "$companion_pr_exists" ]; then + # get the PR number + companion_pr=$(echo "$companion_pr_exists" | awk '{print $1;}') + + # extract the necessary info + branch_owner=$(gh pr view $companion_pr --repo $workflow_url --json headRepositoryOwner --jq '.headRepositoryOwner.login') + branch_name=$(gh pr view $companion_pr --repo $workflow_url --json headRepository --jq '.headRepository.name') + + # Construct fork URL. Update workflow branch name + workflow_url="https://github.com/$branch_owner/$branch_name.git" + workflow_branch=$gdasapp_branch + fi + + echo "Found companion Global Workflow PR #${companion_pr}!" + echo "Global Workflow URL: $workflow_url" + echo "Global Workflow branch name: $workflow_branch" + fi - # create PR specific directory - if [ -d $GDAS_CI_ROOT/PR/$pr ]; then - rm -rf $GDAS_CI_ROOT/PR/$pr + # create PR specific directory + if [ -d $PR_TEST_DIR/$pr ]; then + rm -rf $PR_TEST_DIR/$pr fi - mkdir -p $GDAS_CI_ROOT/PR/$pr - cd $GDAS_CI_ROOT/PR/$pr + mkdir -p $PR_TEST_DIR/$pr + cd $PR_TEST_DIR/$pr pwd # clone copy of repo - git clone --recursive --jobs 8 --branch $gdasapp_branch $gdasapp_url - cd GDASApp + if [[ $TEST_WORKFLOW == 1 ]]; then + echo "Cloning Global Workflow branch $workflow_branch from $workflow_url at $(date)" + git clone --recursive --jobs 8 --branch $workflow_branch $workflow_url + cd global-workflow/sorc/gdas.cd + else + echo "Cloning GDASApp branch $workflow_branch at $(date)" + git clone --recursive --jobs 8 --branch $gdasapp_branch $gdasapp_url + cd GDASApp + fi pwd # checkout GDASApp pull request - git pull gh pr checkout $pr git submodule update --init --recursive # get commit hash commit=$(git log --pretty=format:'%h' -n 1) - echo "$commit" > $GDAS_CI_ROOT/PR/$pr/commit + echo "$commit" > $PR_TEST_DIR/$pr/commit # run build and testing command - echo "Execute $my_dir/run_ci.sh for $GDAS_CI_ROOT/PR/$pr/GDASApp at $(date)" - $my_dir/run_ci.sh -d $GDAS_CI_ROOT/PR/$pr/GDASApp -o $GDAS_CI_ROOT/PR/$pr/output_${commit} + echo "Running run_ci.sh for $PR_TEST_DIR/$pr/$BASE_REPO at $(date)" + run_ci_cmd="$my_dir/run_ci.sh -d $PR_TEST_DIR/$pr/$BASE_REPO -o $PR_TEST_DIR/$pr/output_${commit}" + if [[ $TEST_WORKFLOW == 1 ]]; then + # get ci tests from PR description and convert into a regular expressions to be excluded + branch_body=$(gh pr view $pr --repo ${gdasapp_url} --json body --jq '.body') + ci_checklist=$(echo "$branch_body" | grep '\[x\]') + ctest_regex_exclude="" + for ci_test in ${CI_TESTS[@]}; do + if ! echo "$ci_checklist" | grep -q "$ci_test"; then + ctest_regex_exclude+="${ctest_regex_exclude:+|}$ci_test" + fi + done + + # setup run_ci.sh arguments to test in the Global Workflow and exclude chosen CI tests + run_ci_cmd+=" -w" + if [ -n "$ctest_regex_exclude" ]; then + run_ci_cmd+=" -E $ctest_regex_exclude" + fi + fi + $run_ci_cmd ci_status=$? - echo "After run_ci.sh with ci_status ${ci_status} at $(date)" - gh pr comment $pr --repo ${repo_url} --body-file $GDAS_CI_ROOT/PR/$pr/output_${commit} + echo "Finished running run_ci.sh with ci_status ${ci_status} at $(date)" + + gh pr comment $pr --repo ${gdasapp_url} --body-file $PR_TEST_DIR/$pr/output_${commit} if [ $ci_status -eq 0 ]; then - gh pr edit $pr --repo ${repo_url} --remove-label ${CI_LABEL}-Running --add-label ${CI_LABEL}-Passed + gh pr edit $pr --repo ${gdasapp_url} --remove-label ${CI_LABEL}-Running --add-label ${CI_LABEL}-Passed else - gh pr edit $pr --repo ${repo_url} --remove-label ${CI_LABEL}-Running --add-label ${CI_LABEL}-Failed + gh pr edit $pr --repo ${gdasapp_url} --remove-label ${CI_LABEL}-Running --add-label ${CI_LABEL}-Failed fi # Not authorized to run CI else - echo "Do NOT run CI" + echo "No authorized users assigned to this PR. Aborting CI..." fi - echo "Finish processing Pull Request #{pr} at $(date)" + echo "Finished processing Pull Request #${pr} at $(date)" done # ============================================================================== # scrub working directory for older files -find $GDAS_CI_ROOT/PR/* -maxdepth 1 -mtime +3 -exec rm -rf {} \; -echo "Finish at $(date)" +find $PR_TEST_DIR/* -maxdepth 1 -mtime +3 -exec rm -rf {} \; +echo "Finished automated testing at $(date)" diff --git a/ci/gw_driver.sh b/ci/gw_driver.sh deleted file mode 100755 index c40ff4026..000000000 --- a/ci/gw_driver.sh +++ /dev/null @@ -1,169 +0,0 @@ -#!/bin/bash --login - -echo "Start at $(date)" - -my_dir="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" -echo "Set my_dir ${my_dir}" - -# ============================================================================== -usage() { - set +x - echo - echo "Usage: $0 -t -h" - echo - echo " -t target/machine script is running on DEFAULT: $(hostname)" - echo " -h display this message and quit" - echo - exit 1 -} - -# ============================================================================== -# First, set up runtime environment - -export TARGET="$(hostname)" - -while getopts "t:h" opt; do - case $opt in - t) - TARGET=$OPTARG - ;; - h|\?|:) - usage - ;; - esac -done - -case ${TARGET} in - hera | orion) - echo "Running Automated GW Testing on $TARGET" - source $MODULESHOME/init/sh - source $my_dir/${TARGET}.sh - module purge - module use $GDAS_MODULE_USE - module load GDAS/$TARGET - module list - ;; - *) - echo "Unsupported platform. Exiting with error." - exit 1 - ;; -esac - -# ============================================================================== -# pull on the repo and get list of open PRs -cd $GDAS_CI_ROOT/repo -CI_LABEL="${GDAS_CI_HOST}-GW-RT" -gh pr list --label "$CI_LABEL" --state "open" | awk '{print $1;}' > $GDAS_CI_ROOT/open_pr_list_gw - -open_pr=`cat $GDAS_CI_ROOT/open_pr_list_gw | wc -l` -if (( $open_pr == 0 )); then - echo "No open PRs with ${CI_LABEL}, exit." - echo "Finish at $(date)" - exit -fi - -open_pr_list=$(cat $GDAS_CI_ROOT/open_pr_list_gw) - -# ============================================================================== -# clone, checkout, build, test, etc. -repo_url="https://github.com/NOAA-EMC/GDASApp.git" -workflow_url="https://github.com/NOAA-EMC/global-workflow.git" -workflow_branch="develop" -# loop through all open PRs -for pr in $open_pr_list; do - echo " " - echo "Start processing Pull Request #${pr} at $(date)" - - # get the branch name used for the PR - gdasapp_branch=$(gh pr view $pr --json headRefName -q ".headRefName") - - # get additional branch information - branch_owner=$(gh pr view $pr --repo ${repo_url} --json headRepositoryOwner --jq '.headRepositoryOwner.login') - branch_name=$(gh pr view $pr --repo ${repo_url} --json headRepository --jq '.headRepository.name') - pr_assignees=$(gh pr view $pr --repo ${repo_url} --json assignees --jq '.assignees[].login') - - # check if any assignee is authorized to run CI - authorized_by="" - for str in ${pr_assignees[@]}; do - grep $str /scratch1/NCEPDEV/da/role.jedipara/CI/GDASApp/authorized_users - rc=$? - if (( rc == 0 )); then - authorized_by=${str} - echo "FOUND MATCH $str, rc $rc" - break - fi - done - - # Authorized to run CI - if (( rc == 0 )); then - echo "Run CI" - - # update PR label - gh pr edit $pr --remove-label $CI_LABEL --add-label ${CI_LABEL}-Running - - # check for a companion PR in the global-workflow - companion_pr_exists=$(gh pr list --repo ${workflow_url} --head ${gdasapp_branch} --state open) - if [ -n "$companion_pr_exists" ]; then - # get the PR number - companion_pr=$(echo "$companion_pr_exists" | awk '{print $1;}') - - # extract the necessary info - branch_owner=$(gh pr view $companion_pr --repo $workflow_url --json headRepositoryOwner --jq '.headRepositoryOwner.login') - branch_name=$(gh pr view $companion_pr --repo $workflow_url --json headRepository --jq '.headRepository.name') - - # Construct fork URL. Update workflow branch name - workflow_url="https://github.com/$branch_owner/$branch_name.git" - workflow_branch=$gdasapp_branch - - fi - - echo "Workflow URL: $workflow_url" - echo "Workflow branch name: $workflow_branch" - echo "GDASApp branch name: $gdasapp_branch" - echo "CI authorized by $authorized_by at $(date)" - - # create PR specific directory - if [ -d $GDAS_CI_ROOT/workflow/PR/$pr ]; then - rm -rf $GDAS_CI_ROOT/workflow/PR/$pr - fi - mkdir -p $GDAS_CI_ROOT/workflow/PR/$pr - cd $GDAS_CI_ROOT/workflow/PR/$pr - pwd - - # clone global workflow develop branch - git clone --recursive --jobs 8 --branch $workflow_branch $workflow_url - - # checkout GDASApp pull request - cd $GDAS_CI_ROOT/workflow/PR/$pr/global-workflow/sorc/gdas.cd - git pull - gh pr checkout $pr - git submodule update --init --recursive - - # get commit hash - commit=$(git log --pretty=format:'%h' -n 1) - echo "$commit" > $GDAS_CI_ROOT/workflow/PR/$pr/commit - - # run build and testing command - echo "Execute $my_dir/run_gw_ci.sh for $GDAS_CI_ROOT/PR/workflow/PR/$pr/global-workflow at $(date)" - $my_dir/run_gw_ci.sh -d $GDAS_CI_ROOT/workflow/PR/$pr/global-workflow -o $GDAS_CI_ROOT/workflow/PR/$pr/output_${commit} - ci_status=$? - echo "After run_gw_ci.sh with ci_status ${ci_status} at $(date)" - gh pr comment $pr --body-file $GDAS_CI_ROOT/workflow/PR/$pr/output_${commit} - if [ $ci_status -eq 0 ]; then - gh pr edit $pr --remove-label ${CI_LABEL}-Running --add-label ${CI_LABEL}-Passed - else - gh pr edit $pr --remove-label ${CI_LABEL}-Running --add-label ${CI_LABEL}-Failed - fi - - # Not authorized to run CI - else - echo "Do NOT run CI" - fi - - echo "Finish processing Pull Request #{pr} at $(date)" -done - -# ============================================================================== -# scrub working directory for older files -find $GDAS_CI_ROOT/workflow/PR/* -maxdepth 1 -mtime +3 -exec rm -rf {} \; -echo "Finish at $(date)" diff --git a/ci/hera.sh b/ci/hera.sh index 8a9518f8b..c9c5f892c 100644 --- a/ci/hera.sh +++ b/ci/hera.sh @@ -7,3 +7,4 @@ export SBATCH_ACCOUNT=$SLURM_ACCOUNT export SLURM_QOS=debug export PATH=$PATH:/home/role.jedipara/bin export NTASKS_TESTS=12 +export AUTHORIZED_USERS_FILE=/scratch1/NCEPDEV/da/role.jedipara/CI/GDASApp/authorized_users diff --git a/ci/hercules.sh b/ci/hercules.sh new file mode 100644 index 000000000..663bc44c6 --- /dev/null +++ b/ci/hercules.sh @@ -0,0 +1,13 @@ +export GDAS_CI_ROOT=/work2/noaa/da/role-da/CI/hercules/GDASApp +export GDAS_CI_HOST='hercules' +export GDAS_MODULE_USE=$GDAS_CI_ROOT/repo/modulefiles +export SLURM_ACCOUNT=da-cpu +export SALLOC_ACCOUNT=$SLURM_ACCOUNT +export SBATCH_ACCOUNT=$SLURM_ACCOUNT +export SLURM_QOS=debug +export SLURM_EXCLUSIVE=user +export OMP_NUM_THREADS=1 +ulimit -s unlimited +export PATH=$PATH:/home/role-da/bin +export NTASKS_TESTS=12 +export AUTHORIZED_USERS_FILE=$GDAS_CI_ROOT/authorized_users diff --git a/ci/orion.sh b/ci/orion.sh index 8c2cf9a5f..9d0674688 100644 --- a/ci/orion.sh +++ b/ci/orion.sh @@ -1,4 +1,4 @@ -export GDAS_CI_ROOT=/work2/noaa/stmp/cmartin/CI/GDASApp +export GDAS_CI_ROOT=/work2/noaa/da/role-da/CI/orion/GDASApp export GDAS_CI_HOST='orion' export GDAS_MODULE_USE=$GDAS_CI_ROOT/repo/modulefiles export SLURM_ACCOUNT=da-cpu @@ -8,4 +8,6 @@ export SLURM_QOS=debug export SLURM_EXCLUSIVE=user export OMP_NUM_THREADS=1 ulimit -s unlimited +export PATH=$PATH:/home/role-da/bin export NTASKS_TESTS=12 +export AUTHORIZED_USERS_FILE=$GDAS_CI_ROOT/authorized_users diff --git a/ci/run_ci.sh b/ci/run_ci.sh index 917f70e90..e92d943ae 100755 --- a/ci/run_ci.sh +++ b/ci/run_ci.sh @@ -9,13 +9,17 @@ usage() { echo echo " -d Run build and ctest for clone in " echo " -o Path to output message detailing results of CI tests" + echo " -w Test GDASApp within the Global Workflow" + echo " -E Regular expression of CTests to exclude" echo " -h display this message and quit" echo exit 1 } # ============================================================================== -while getopts "d:o:h" opt; do +TEST_WORKFLOW=0 +ctest_regex_exclude="" +while getopts "d:o:h:E:w" opt; do case $opt in d) repodir=$OPTARG @@ -23,26 +27,54 @@ while getopts "d:o:h" opt; do o) outfile=$OPTARG ;; + E) + ctest_regex_exclude+=$OPTARG + ;; + w) + TEST_WORKFLOW=1 + ;; h|\?|:) usage ;; esac done +if [[ $TEST_WORKFLOW == 1 ]]; then + export WORKFLOW_BUILD="ON" + + workflow_dir=$repodir + gdasapp_dir=$workflow_dir/sorc/gdas.cd + + build_cmd_dir=$workflow_dir/sorc + build_cmd="./build_all.sh -ug &>> log.build" + build_dir=$workflow_dir/build +else + export BUILD_JOBS=8 + + gdasapp_dir=$repodir + + build_cmd_dir=$gdasapp_dir + build_cmd="./build.sh -t $TARGET &>> log.build" + build_dir=$gdasapp_dir/build +fi + # ============================================================================== # start output file -echo "Automated GDASApp Testing Results:" > $outfile +if [[ $TEST_WORKFLOW == 1 ]]; then + echo "Automated GW-GDASApp Testing Results:" > $outfile +else + echo "Automated GDASApp Testing Results:" > $outfile +fi echo "Machine: ${TARGET}" >> $outfile echo '```' >> $outfile echo "Start: $(date) on $(hostname)" >> $outfile echo "---------------------------------------------------" >> $outfile # ============================================================================== # run build script -cd $repodir +cd $build_cmd_dir module purge -export BUILD_JOBS=8 rm -rf log.build -./build.sh -t $TARGET &>> log.build +$build_cmd build_status=$? if [ $build_status -eq 0 ]; then echo "Build: *SUCCESS*" >> $outfile @@ -50,18 +82,27 @@ if [ $build_status -eq 0 ]; then else echo "Build: *FAILED*" >> $outfile echo "Build: Failed at $(date)" >> $outfile - echo "Build: see output at $repodir/log.build" >> $outfile + echo "Build: see output at $build_cmd_dir/log.build" >> $outfile echo '```' >> $outfile exit $build_status fi +if [[ $TEST_WORKFLOW == 1 ]]; then + ./link_workflow.sh +fi # ============================================================================== # run ctests -cd $repodir/build -module use $GDAS_MODULE_USE +cd $gdasapp_dir/build +module use $gdasapp_dir/modulefiles module load GDAS/$TARGET echo "---------------------------------------------------" >> $outfile rm -rf log.ctest -ctest -j${NTASKS_TESTS} -R gdasapp --output-on-failure &>> log.ctest +ctest_cmd="ctest -j${NTASKS_TESTS} -R gdasapp" +if [ -n "$ctest_regex_exclude" ]; then + ctest_cmd+=" -E $ctest_regex_exclude" +fi +pwd +echo "Tests: $ctest_cmd" >> $outfile +$ctest_cmd --timeout 7200 --output-on-failure &>> log.ctest ctest_status=$? npassed=$(cat log.ctest | grep "tests passed") if [ $ctest_status -eq 0 ]; then @@ -73,7 +114,8 @@ else echo "Tests: Failed at $(date)" >> $outfile echo "Tests: $npassed" >> $outfile cat log.ctest | grep "(Failed)" >> $outfile - echo "Tests: see output at $repodir/build/log.ctest" >> $outfile + cat log.ctest | grep "(Timeout)" >> $outfile + echo "Tests: see output at $gdasapp_dir/build/log.ctest" >> $outfile fi echo '```' >> $outfile exit $ctest_status diff --git a/ci/run_gw_ci.sh b/ci/run_gw_ci.sh deleted file mode 100755 index d3b7de9d0..000000000 --- a/ci/run_gw_ci.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash -set -u - -# ============================================================================== -usage() { - set +x - echo - echo "Usage: $0 -d -o -h" - echo - echo " -d Run build and ctest for clone in " - echo " -o Path to output message detailing results of CI tests" - echo " -h display this message and quit" - echo - exit 1 -} - -# ============================================================================== -while getopts "d:o:h" opt; do - case $opt in - d) - repodir=$OPTARG - ;; - o) - outfile=$OPTARG - ;; - h|\?|:) - usage - ;; - esac -done - -# ============================================================================== -# start output file -echo "Automated GW GDASApp Testing Results:" > $outfile -echo "Machine: ${TARGET}" >> $outfile -echo '```' >> $outfile -echo "Start: $(date) on $(hostname)" >> $outfile -echo "---------------------------------------------------" >> $outfile -# ============================================================================== -# run build and link as part of the workflow -export WORKFLOW_BUILD="ON" -cd $repodir/sorc -module purge -rm -rf log.build -./build_all.sh -u &>> log.build -build_status=$? -if [ $build_status -eq 0 ]; then - echo "Build: *SUCCESS*" >> $outfile - echo "Build: Completed at $(date)" >> $outfile -else - echo "Build: *FAILED*" >> $outfile - echo "Build: Failed at $(date)" >> $outfile - echo "Build: see output at $repodir/sorc/log.build" >> $outfile - echo '```' >> $outfile - exit $build_status -fi -./link_workflow.sh -# ============================================================================== -# run ctests -cd $repodir/sorc/gdas.cd/build -module use $repodir/sorc/gdas.cd/modulefiles -module load GDAS/$TARGET -echo "---------------------------------------------------" >> $outfile -rm -rf log.ctest -ctest -j${NTASKS_TESTS} -R gdasapp --output-on-failure &>> log.ctest -ctest_status=$? -npassed=$(cat log.ctest | grep "tests passed") -if [ $ctest_status -eq 0 ]; then - echo "Tests: *SUCCESS*" >> $outfile - echo "Tests: Completed at $(date)" >> $outfile - echo "Tests: $npassed" >> $outfile -else - echo "Tests: *Failed*" >> $outfile - echo "Tests: Failed at $(date)" >> $outfile - echo "Tests: $npassed" >> $outfile - cat log.ctest | grep "(Failed)" >> $outfile - echo "Tests: see output at $repodir/sorc/gdas.cd/build/log.ctest" >> $outfile -fi -echo '```' >> $outfile -exit $ctest_status diff --git a/ci/stable_driver.sh b/ci/stable_driver.sh index 4172d6659..ca51f6f7c 100755 --- a/ci/stable_driver.sh +++ b/ci/stable_driver.sh @@ -53,6 +53,7 @@ repo_url="https://github.com/NOAA-EMC/GDASApp.git" workflow_url="https://github.com/NOAA-EMC/global-workflow.git" stableroot=$GDAS_CI_ROOT/stable +[[ -d $stableroot/$datestr ]] && rm -rf $stableroot/$datestr mkdir -p $stableroot/$datestr cd $stableroot/$datestr @@ -63,15 +64,21 @@ git clone --recursive $workflow_url cd $stableroot/$datestr/global-workflow/sorc/gdas.cd git checkout develop git pull +git submodule update --init --recursive # ============================================================================== # update the hashes to the most recent gdasdir=$stableroot/$datestr/global-workflow/sorc/gdas.cd -$my_dir/../ush/submodules/update_develop.sh $gdasdir +$gdasdir/ush/submodules/update_develop.sh $gdasdir + +# ============================================================================== +# email information +PEOPLE="Cory.R.Martin@noaa.gov Russ.Treadon@noaa.gov Guillaume.Vernieres@noaa.gov David.New@noaa.gov" +BODY=$stableroot/$datestr/stable_nightly # ============================================================================== # run the automated testing -$my_dir/run_gw_ci.sh -d $stableroot/$datestr/global-workflow -o $stableroot/$datestr/output +$my_dir/run_ci.sh -d $stableroot/$datestr/global-workflow -o $stableroot/$datestr/output -w ci_status=$? total=0 if [ $ci_status -eq 0 ]; then @@ -106,7 +113,6 @@ if [ $ci_status -eq 0 ]; then fi git diff-index --quiet HEAD || git commit -m "Update to new stable build on $datestr" total=$(($total+$?)) - caution="" if [ $total -ne 0 ]; then echo "Unable to commit" >> $stableroot/$datestr/output fi @@ -116,22 +122,30 @@ if [ $ci_status -eq 0 ]; then echo "Unable to push" >> $stableroot/$datestr/output fi if [ $total -ne 0 ]; then - echo "Issue merging with develop. please manually fix" - PEOPLE="Cory.R.Martin@noaa.gov Russ.Treadon@noaa.gov Guillaume.Vernieres@noaa.gov" SUBJECT="Problem updating feature/stable-nightly branch of GDASApp" - BODY=$stableroot/$datestr/output_stable_nightly cat > $BODY << EOF -Problem updating feature/stable-nightly branch of GDASApp. Please check $stableroot/$datestr/GDASApp +Problem updating feature/stable-nightly branch of GDASApp. Please check $stableroot/$datestr/global-workflow EOF - mail -r "Darth Vader - NOAA Affiliate " -s "$SUBJECT" "$PEOPLE" < $BODY + else - echo "Stable branch updated" + SUBJECT="Success updating feature/stable-nightly branch of GDASApp" + cat > $BODY << EOF +feature/stable-nightly branch of GDASApp updated successfully. See $stableroot/$datestr/global-workflow for details. + +EOF + fi else # do nothing - echo "Testing failed, stable branch will not be updated" + SUBJECT="Testing or building of feature/stable-nightly branch of GDASApp failed" + cat > $BODY << EOF +Testing or building of feature/stable-nightly branch of GDASApp failed. Please check $stableroot/$datestr/global-workflow. + +EOF fi +echo $SUBJECT +mail -r "Darth Vader - NOAA Affiliate " -s "$SUBJECT" "$PEOPLE" < $BODY # ============================================================================== # publish some information to RZDM for quick viewing # THIS IS A TODO FOR NOW diff --git a/parm/aero/berror/aero_diagb.yaml.j2 b/parm/aero/berror/aero_diagb.yaml.j2 index c62947f1e..95be9e474 100644 --- a/parm/aero/berror/aero_diagb.yaml.j2 +++ b/parm/aero/berror/aero_diagb.yaml.j2 @@ -76,25 +76,25 @@ variables: - mass_fraction_of_sea_salt003_in_air - mass_fraction_of_sea_salt004_in_air -#global rescale: -# geometry: -# fms initialization: -# namelist filename: ./fv3jedi/fmsmpp.nml -# field table filename: ./fv3jedi/field_table -# akbk: ./fv3jedi/akbk.nc4 -# layout: -# - {{ layout_x }} -# - {{ layout_y }} -# npx: {{ npx_rescale }} -# npy: {{ npy_rescale }} -# npz: {{ npz_ges }} -# field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml -# rescale stddev: -# filetype: fms restart -# skip coupler file: true -# dateapath: ./stddev -# filename_trcr: rescale.fv_tracer.res.nc -# filename_cplr: rescale.coupler.res +global rescale: + geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ layout_x }} + - {{ layout_y }} + npx: {{ npx_rescale }} + npy: {{ npy_rescale }} + npz: {{ npz_ges }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml + rescale stddev: + filetype: fms restart + skip coupler file: true + dateapath: ./stddev + filename_trcr: rescale.fv_tracer.res.nc + filename_cplr: rescale.coupler.res number of halo points: {{ aero_diagb_n_halo }} number of neighbors: {{ aero_diagb_n_neighbors }} diff --git a/parm/aero/jcb-base.yaml.j2 b/parm/aero/jcb-base.yaml.j2 index 86988206d..6d1cf7b7f 100644 --- a/parm/aero/jcb-base.yaml.j2 +++ b/parm/aero/jcb-base.yaml.j2 @@ -74,19 +74,22 @@ aero_background_error_time_fv3: "{{ background_time | to_fv3time }}" # Background error aero_berror_data_directory: "{{ DATA }}/berror" aero_berror_diffusion_directory: "{{ DATA }}/diffusion" -aero_standard_devation_path: ./stddev +aero_standard_deviation_path: ./stddev aero_climatological_b_path: ./clm_stddev +aero_rescale_b_path: ./rescale aero_diagb_weight: {{ aero_diagb_weight | default(1.0, true) }} aero_diagb_static_rescale_factor: {{aero_staticb_rescaling_factor | default(1.0, true) }} -aero_diagb_rescale_factor: {{aero_diagb_rescale | default(1.0, true) }} -aero_diagb_n_halo: {{ aero_diagb_n_halo | default(1, true) }} -aero_diagb_n_neighbors: {{ aero_diagb_n_neighbors | default(1, true) }} -aero_diagb_smooth_horiz_iter: {{ aero_diagb_smooth_horiz_iter | default(1, true) }} -aero_diagb_smooth_vert_iter: {{ aero_diagb_smooth_vert_iter | default(1, true) }} -aero_diffusion_iter: {{ aero_diffusion_iter | default(1, true) }} +aero_diagb_n_halo: {{ aero_diagb_n_halo | default(0) }} +aero_diagb_n_neighbors: {{ aero_diagb_n_neighbors | default(0) }} +aero_diagb_smooth_horiz_iter: {{ aero_diagb_smooth_horiz_iters | default(0) }} +aero_diagb_smooth_vert_iter: {{ aero_diagb_smooth_vert_iters | default(0) }} +aero_diffusion_iter: {{ aero_diffusion_iter | default(0) }} aero_diffusion_horiz_len: {{ aero_diffusion_horiz_len | default(1.0, true)}} aero_diffusion_fixed_val: {{ aero_diffusion_fixed_val | default(1.0, true)}} +# Analysis +aero_analysis_path: ./anl + # Forecasting aero_forecast_timestep: "{{ BKG_TSTEP }}" diff --git a/parm/jcb-algorithms b/parm/jcb-algorithms index 0f4423943..e854bd87f 160000 --- a/parm/jcb-algorithms +++ b/parm/jcb-algorithms @@ -1 +1 @@ -Subproject commit 0f4423943e1c2bdd4b9d0a4218e30df83c5e2c66 +Subproject commit e854bd87ff18ca053b2fe558b57b212ff159fe72 diff --git a/parm/jcb-gdas b/parm/jcb-gdas index c9f2d7983..8ee71d261 160000 --- a/parm/jcb-gdas +++ b/parm/jcb-gdas @@ -1 +1 @@ -Subproject commit c9f2d79833de83f342055140cac679e6e7ec9ff7 +Subproject commit 8ee71d26111a46d01f0dc9796d49e19fdcf2cf4f diff --git a/parm/snow/letkfoi/apply_incr_nml.j2 b/parm/snow/apply_incr_nml.j2 similarity index 100% rename from parm/snow/letkfoi/apply_incr_nml.j2 rename to parm/snow/apply_incr_nml.j2 diff --git a/parm/snow/letkfoi/ens_apply_incr_nml.j2 b/parm/snow/ens_apply_incr_nml.j2 similarity index 74% rename from parm/snow/letkfoi/ens_apply_incr_nml.j2 rename to parm/snow/ens_apply_incr_nml.j2 index edd4b116f..4a85b8416 100644 --- a/parm/snow/letkfoi/ens_apply_incr_nml.j2 +++ b/parm/snow/ens_apply_incr_nml.j2 @@ -3,8 +3,8 @@ hour_str = "{{ current_cycle | strftime('%H') }}", res = {{ CASE_ENS[1:] }}, frac_grid = .true., - rst_path = "{{ DATAROOT }}/anl/mem{{ MYMEM }}", - inc_path = "{{ DATAROOT }}/inc/ensmean", + rst_path = "{{ DATA }}/anl/mem{{ MYMEM }}", + inc_path = "{{ DATA }}/anl", orog_path = "{{ HOMEgfs }}/fix/orog/{{ CASE_ENS }}", otype = "{{ CASE_ENS }}.mx{{ OCNRES }}_oro_data" / diff --git a/parm/snow/jcb-base.yaml.j2 b/parm/snow/jcb-base.yaml.j2 index 672b1bf8f..69e097d74 100644 --- a/parm/snow/jcb-base.yaml.j2 +++ b/parm/snow/jcb-base.yaml.j2 @@ -3,15 +3,13 @@ algorithm_path: "{{PARMgfs}}/gdas/jcb-algorithms" app_path_algorithm: "{{PARMgfs}}/gdas/jcb-gdas/algorithm/snow" app_path_model: "{{PARMgfs}}/gdas/jcb-gdas/model/snow" -app_path_observations: "{{PARMgfs}}/gdas/jcb-gdas/observations/atmosphere" -app_path_observation_chronicle: "{{PARMgfs}}/gdas/jcb-gdas/observation_chronicle/atmosphere" +app_path_observations: "{{PARMgfs}}/gdas/jcb-gdas/observations/snow" +app_path_observation_chronicle: "{{PARMgfs}}/gdas/jcb-gdas/observation_chronicle/snow" # Places where we deviate from the generic file name of a yaml # ------------------------------------------------------------ -#final_increment_file: final_increment_gaussian -final_increment_file: final_increment_cubed_sphere -output_ensemble_increments_file: output_ensemble_increments_gaussian +final_increment_file: snow_final_increment_fms model_file: model_pseudo initial_condition_file: background # Initial conditions for 4D apps is background @@ -23,60 +21,52 @@ window_length: "{{ SNOW_WINDOW_LENGTH }}" bound_to_include: begin # Default background time is for 3D applications -{% if DOIAU %} -{% set bkg_time_iso = SNOW_WINDOW_BEGIN | to_isotime %} -{% set bkg_time_fv3 = SNOW_WINDOW_BEGIN | to_fv3time %} -{% else %} {% set bkg_time_iso = current_cycle | to_isotime %} {% set bkg_time_fv3 = current_cycle | to_fv3time %} -{% endif %} snow_background_time_iso: "{{ bkg_time_iso }}" +snow_background_time_fv3: "{{ bkg_time_fv3 }}" snow_increment_time_iso: "{{ bkg_time_iso }}" snow_increment_time_fv3: "{{ bkg_time_fv3 }}" # Analysis standard things # ------------------------ -analysis_variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] +analysis_variables: [totalSnowDepth] minimizer: DRPCG final_diagnostics_departures: anlmob final_prints_frequency: PT3H cost_type: 3D-Var -number_of_outer_loops: 2 +number_of_outer_loops: 1 # Model things # ------------ # Geometry -layout_x: {{ layout_x | default(1, true) }} -layout_y: {{ layout_y | default(1, true) }} -npx_ges: {{ npx_ges | default(49, true) }} -npy_ges: {{ npy_ges | default(49, true) }} -npz_ges: {{ npz_ges | default(127, true) }} -npx_anl: {{ npx_anl | default(49, true) }} -npy_anl: {{ npy_anl | default(49, true) }} -npz_anl: {{ npz_anl | default(127, true) }} - -fv3jedi_files_path: ./fv3jedi # Ideally this would be {{DATA}}/fv3jedi but FMS +snow_layout_x: {{ layout_x | default(1, true) }} +snow_layout_y: {{ layout_y | default(1, true) }} +snow_npx_ges: {{ npx_ges | default(49, true) }} +snow_npy_ges: {{ npy_ges | default(49, true) }} +snow_npz_ges: {{ npz_ges | default(127, true) }} +snow_npx_anl: {{ npx_ges | default(49, true) }} +snow_npy_anl: {{ npy_ges | default(49, true) }} +snow_npz_anl: {{ npz_ges | default(127, true) }} + +snow_fv3jedi_files_path: ./fv3jedi # Ideally this would be {{DATA}}/fv3jedi but FMS +snow_orog_files_path: "{{ FIXgfs }}/orog/{{ CASE }}" +snow_orog_prefix: "{{ CASE }}.mx{{ OCNRES }}" # Background -background_path: ./bkg +snow_background_path: {{snow_bkg_path}} background_ensemble_path: ./ens/mem%mem% # Background error -bump_data_directory: "{{ DATA }}/berror" -gsibec_path: "{{ DATA }}/berror" +snow_bump_data_directory: "{{ DATA }}/berror" number_ensemble_members: {{ NMEM_ENS | default(1, true) }} -layout_gsib_x: {{ layout_gsib_x | default(1, true) }} -layout_gsib_y: {{ layout_gsib_y | default(1, true) }} -background_error_file: "{{BERROR_YAML}}" +snow_background_error_file: "{{BERROR_YAML}}" # Forecasting -forecast_length: "{{ ATM_WINDOW_LENGTH }}" -forecast_timestep: "{{ BKG_TSTEP }}" - -# Write final increment on Guassian grid in variational -final_increment_prefix: "./anl/atminc." +snow_forecast_length: "{{ SNOW_WINDOW_LENGTH }}" +snow_forecast_timestep: "{{ BKG_TSTEP }}" # Observation things @@ -86,29 +76,32 @@ observations: all_observations crtm_coefficient_path: "{{ DATA }}/crtm/" # Naming conventions for observational files -atm_obsdatain_path: "{{atm_obsdatain_path}}" -atm_obsdatain_prefix: "{{OPREFIX}}" -atm_obsdatain_suffix: ".tm00.nc" +snow_obsdataroot_path: "{{COMIN_OBS}}" +snow_obsdatain_path: "{{snow_obsdatain_path}}" +snow_obsdatain_prefix: "{{OPREFIX}}" +snow_obsdatain_suffix: ".tm00.bufr_d" -atm_obsdataout_path: "{{atm_obsdataout_path}}" -atm_obsdataout_prefix: diag_ -atm_obsdataout_suffix: "_{{ current_cycle | to_YMDH }}.nc" +snow_obsdataout_path: "{{snow_obsdataout_path}}" +snow_obsdataout_prefix: diag_ +snow_obsdataout_suffix: "_{{ current_cycle | to_YMDH }}.nc" # Naming conventions for bias correction files -atm_obsbiasin_path: "{{DATA}}/obs/" -atm_obsbiasin_prefix: "{{GPREFIX}}" -atm_obsbiasin_suffix: ".satbias.nc" -atm_obstlapsein_prefix: "{{GPREFIX}}" -atm_obstlapsein_suffix: ".tlapse.txt" -atm_obsbiascovin_prefix: "{{GPREFIX}}" -atm_obsbiascovin_suffix: ".satbias_cov.nc" - -atm_obsbiasout_path: "{{DATA}}/bc/" -atm_obsbiasout_prefix: "{{APREFIX}}" -atm_obsbiasout_suffix: ".satbias.nc" -atm_obsbiascovout_prefix: "{{APREFIX}}" -atm_obsbiascovout_suffix: ".satbias_cov.nc" - +snow_obsbiasin_path: "{{DATA}}/obs/" +snow_obsbiasin_prefix: "{{GPREFIX}}" +snow_obsbiasin_suffix: ".satbias.nc" +snow_obstlapsein_prefix: "{{GPREFIX}}" +snow_obstlapsein_suffix: ".tlapse.txt" +snow_obsbiascovin_prefix: "{{GPREFIX}}" +snow_obsbiascovin_suffix: ".satbias_cov.nc" + +snow_obsbiasout_path: "{{DATA}}/bc/" +snow_obsbiasout_prefix: "{{APREFIX}}" +snow_obsbiasout_suffix: ".satbias.nc" +snow_obsbiascovout_prefix: "{{APREFIX}}" +snow_obsbiascovout_suffix: ".satbias_cov.nc" + +# Ensemble mean things +snow_number_ensemble_members: {{NMEM_ENS}} # Local Ensemble DA (LETKF) # ------------------------- @@ -133,5 +126,5 @@ driver_save_posterior_mean_increment: false driver_save_posterior_ensemble_increments: true # Diagnostics -ensemble_increment_prefix: "./anl/mem%{member}%/atminc." -#posterior_output_gaussian: "./mem%{member}%/atmanl." +ensemble_increment_prefix: "./anl/mem%{member}%/snowinc." +#posterior_output_gaussian: "./mem%{member}%/snowanl." diff --git a/parm/snow/jcb-prototype_2dvar.yaml.j2 b/parm/snow/jcb-prototype_2dvar.yaml.j2 new file mode 100644 index 000000000..5fb43600c --- /dev/null +++ b/parm/snow/jcb-prototype_2dvar.yaml.j2 @@ -0,0 +1,12 @@ +# Algorithm +# --------- +algorithm: 3dvar + +# Observation things +# ------------------ +observations: +# - adpsfc_snow + - ims_snow +# - ghcn_snow + - sfcsno + - snocvr_snow diff --git a/parm/snow/letkfoi/letkfoi.yaml.j2 b/parm/snow/letkfoi/letkfoi.yaml.j2 deleted file mode 100644 index e96425581..000000000 --- a/parm/snow/letkfoi/letkfoi.yaml.j2 +++ /dev/null @@ -1,66 +0,0 @@ -geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml - time invariant fields: - state fields: - datetime: '{{ SNOW_WINDOW_BEGIN | to_isotime }}' - filetype: fms restart - skip coupler file: true - state variables: [orog_filt] - datapath: {{ FIXgfs }}/orog/{{ CASE }}/ - filename_orog: {{ CASE }}.mx{{ OCNRES }}_oro_data.nc - -time window: - begin: '{{ SNOW_WINDOW_BEGIN | to_isotime }}' - length: {{ SNOW_WINDOW_LENGTH }} - bound to include: begin - -background: - datetime: '{{ current_cycle | to_isotime }}' - members from template: - template: - datetime: '{{ current_cycle | to_isotime }}' - filetype: fms restart - state variables: [snodl,vtype,slmsk] - datapath: ./bkg/mem%mem%/RESTART - filename_sfcd: '{{ current_cycle | to_fv3time }}.sfc_data.nc' - filename_cplr: '{{ current_cycle | to_fv3time }}.coupler.res' - pattern: '%mem%' - nmembers: 2 - zero padding: 3 - -observations: -{% filter indent(width=2) %} -{% set snow_obs_list = 'OBS_LIST' | getenv('snow/obs/lists/obs_list.yaml.j2') %} -{% include snow_obs_list %} -{% endfilter %} - -driver: - save posterior mean: false - save posterior ensemble: false - save posterior mean increment: true - -local ensemble DA: - solver: LETKF - inflation: - rtps: 0.0 - rtpp: 0.0 - mult: 1.0 - -output increment: - datapath: ./anl - prefix: snowinc - filetype: fms restart - filename_sfcd: '{{ current_cycle | to_fv3time }}.sfc_data.nc' - filename_cplr: '{{ current_cycle | to_fv3time }}.coupler.res' - state variables: [snodl,vtype,slmsk] - diff --git a/parm/snow/obs/config/adpsfc_snow.yaml.j2 b/parm/snow/obs/config/adpsfc_snow.yaml.j2 deleted file mode 100644 index 1ddcb7e21..000000000 --- a/parm/snow/obs/config/adpsfc_snow.yaml.j2 +++ /dev/null @@ -1,109 +0,0 @@ -- obs space: - name: adpsfc_snow - distribution: - name: Halo - halo size: 250e3 - obsdatain: - engine: - type: H5File - obsfile: './obs/{{ OPREFIX }}adpsfc_snow.nc4' - obsdataout: - engine: - type: H5File - obsfile: './diags/diag_adpsfc_snow.nc4' - simulated variables: [totalSnowDepth] - obs operator: - name: Composite - components: - - name: Identity - - name: BackgroundErrorIdentity - obs error: - covariance model: diagonal - obs localizations: - - localization method: Horizontal SOAR - lengthscale: 250e3 - soar horizontal decay: 0.000021 - max nobs: 50 - - localization method: Vertical Brasnett - vertical lengthscale: 700 - obs pre filters: - - filter: Perform Action - filter variables: - - name: totalSnowDepth - action: - name: assign error - error parameter: 40.0 - - filter: Variable Assignment - assignments: - - name: GrossErrorProbability/totalSnowDepth - type: float - value: 0.02 - - name: BkgError/totalSnowDepth_background_error - type: float - value: 30.0 - obs prior filters: - - filter: Bounds Check - filter variables: - - name: totalSnowDepth - minvalue: 0.0 - maxvalue: 2000.0 - action: - name: reject - - filter: Domain Check - where: - - variable: - name: MetaData/stationElevation - minvalue: -999.0 - - filter: Domain Check # land only - where: - - variable: - name: GeoVaLs/slmsk - minvalue: 0.5 - maxvalue: 1.5 - - filter: RejectList # no land-ice - where: - - variable: - name: GeoVaLs/vtype - minvalue: 14.5 - maxvalue: 15.5 - - filter: BlackList - where: - - variable: - name: MetaData/stationIdentification - is_in: [71120,71397,71621,71727,71816] - size where true: 5 - obs post filters: - - filter: Background Check # gross error check - filter variables: - - name: totalSnowDepth - threshold: 6.25 - action: - name: reject - - filter: Temporal Thinning - min_spacing: '{{ SNOW_WINDOW_LENGTH }}' - seed_time: '{{ current_cycle | to_isotime }}' - category_variable: - name: MetaData/stationIdentification - - filter: Met Office Buddy Check - filter variables: - - name: totalSnowDepth - rejection_threshold: 0.5 - traced_boxes: # trace all observations - min_latitude: -90 - max_latitude: 90 - min_longitude: -180 - max_longitude: 180 - search_radius: 150 # km - station_id_variable: - name: MetaData/stationIdentification - num_zonal_bands: 24 - sort_by_pressure: false - max_total_num_buddies: 15 - max_num_buddies_from_single_band: 10 - max_num_buddies_with_same_station_id: 5 - use_legacy_buddy_collector: false - horizontal_correlation_scale: { "-90": 150, "90": 150 } - temporal_correlation_scale: PT6H - damping_factor_1: 1.0 - damping_factor_2: 1.0 - background_error_group: BkgError diff --git a/parm/snow/obs/config/ghcn_snow.yaml.j2 b/parm/snow/obs/config/ghcn_snow.yaml.j2 deleted file mode 100644 index b2a037cf1..000000000 --- a/parm/snow/obs/config/ghcn_snow.yaml.j2 +++ /dev/null @@ -1,53 +0,0 @@ -- obs space: - name: ghcn_snow - distribution: - name: Halo - simulated variables: [totalSnowDepth] - obsdatain: - engine: - type: H5File - obsfile: './obs/{{ OPREFIX }}ghcn_snow_{{ current_cycle | to_YMDH }}.nc4' - obsdataout: - engine: - type: H5File - obsfile: './diags/diag_ghcn_snow_{{ current_cycle | to_YMDH }}.nc4' - - obs operator: - name: Identity - obs error: - covariance model: diagonal - obs localizations: - - localization method: Horizontal SOAR - lengthscale: 250e3 - soar horizontal decay: 0.000021 - max nobs: 50 - - localization method: Vertical Brasnett - vertical lengthscale: 700 - obs filters: - - filter: Bounds Check - filter variables: - - name: totalSnowDepth - minvalue: 0.0 - - filter: Domain Check - where: - - variable: - name: MetaData/height - minvalue: -999.0 - - filter: Domain Check # land only - where: - - variable: - name: GeoVaLs/slmsk - minvalue: 0.5 - maxvalue: 1.5 - - filter: RejectList # no land-ice - where: - - variable: - name: GeoVaLs/vtype - minvalue: 14.5 - maxvalue: 15.5 - - filter: Background Check - filter variables: - - name: totalSnowDepth - threshold: 6.25 - action: - name: reject diff --git a/parm/snow/obs/config/ims_snow.yaml.j2 b/parm/snow/obs/config/ims_snow.yaml.j2 deleted file mode 100644 index c222d0dfe..000000000 --- a/parm/snow/obs/config/ims_snow.yaml.j2 +++ /dev/null @@ -1,46 +0,0 @@ -- obs space: - name: ims_snow - distribution: - name: Halo - halo size: 250e3 - obsdatain: - engine: - type: H5File - obsfile: './obs/{{ OPREFIX }}ims_snow.nc4' - obsdataout: - engine: - type: H5File - obsfile: './diags/diag_ims_snow.nc4' - simulated variables: [totalSnowDepth] - obs operator: - name: Identity - obs error: - covariance model: diagonal - obs localizations: - - localization method: Horizontal SOAR - lengthscale: 250e3 - soar horizontal decay: 0.000021 - max nobs: 1 - obs filters: - - filter: Bounds Check - filter variables: - - name: totalSnowDepth - minvalue: 0.0 - - filter: Domain Check # land only - where: - - variable: - name: GeoVaLs/slmsk - minvalue: 0.5 - maxvalue: 1.5 - - filter: RejectList # no land-ice - where: - - variable: - name: GeoVaLs/vtype - minvalue: 14.5 - maxvalue: 15.5 - - filter: Background Check # gross error check - filter variables: - - name: totalSnowDepth - threshold: 6.25 - action: - name: reject diff --git a/parm/snow/obs/config/sfcsno_snow.yaml.j2 b/parm/snow/obs/config/sfcsno_snow.yaml.j2 deleted file mode 100644 index 960ea8f64..000000000 --- a/parm/snow/obs/config/sfcsno_snow.yaml.j2 +++ /dev/null @@ -1,110 +0,0 @@ -- obs space: - name: sfcsno_snow - distribution: - name: Halo - halo size: 250e3 - obsdatain: - engine: - type: bufr - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}sfcsno.tm00.bufr_d' - mapping file: '{{ DATA }}/obs/bufr_sfcsno_mapping.yaml' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_sfcsno_snow.nc4' - simulated variables: [totalSnowDepth] - obs operator: - name: Composite - components: - - name: Identity - - name: BackgroundErrorIdentity - obs error: - covariance model: diagonal - obs localizations: - - localization method: Horizontal SOAR - lengthscale: 250e3 - soar horizontal decay: 0.000021 - max nobs: 50 - - localization method: Vertical Brasnett - vertical lengthscale: 700 - obs pre filters: - - filter: Perform Action - filter variables: - - name: totalSnowDepth - action: - name: assign error - error parameter: 40.0 - - filter: Variable Assignment - assignments: - - name: GrossErrorProbability/totalSnowDepth - type: float - value: 0.02 - - name: BkgError/totalSnowDepth_background_error - type: float - value: 30.0 - obs prior filters: - - filter: Bounds Check - filter variables: - - name: totalSnowDepth - minvalue: 0.0 - maxvalue: 2000.0 - action: - name: reject - - filter: Domain Check - where: - - variable: - name: MetaData/stationElevation - minvalue: -999.0 - - filter: Domain Check # land only - where: - - variable: - name: GeoVaLs/slmsk - minvalue: 0.5 - maxvalue: 1.5 - - filter: RejectList # no land-ice - where: - - variable: - name: GeoVaLs/vtype - minvalue: 14.5 - maxvalue: 15.5 - - filter: BlackList - where: - - variable: - name: MetaData/stationIdentification - is_in: [71120,71397,71621,71727,71816] - size where true: 5 - obs post filters: - - filter: Background Check # gross error check - filter variables: - - name: totalSnowDepth - threshold: 6.25 - action: - name: reject - - filter: Temporal Thinning - min_spacing: '{{ SNOW_WINDOW_LENGTH }}' - seed_time: '{{ current_cycle | to_isotime }}' - category_variable: - name: MetaData/stationIdentification - - filter: Met Office Buddy Check - filter variables: - - name: totalSnowDepth - rejection_threshold: 0.5 - traced_boxes: # trace all observations - min_latitude: -90 - max_latitude: 90 - min_longitude: -180 - max_longitude: 180 - search_radius: 150 # km - station_id_variable: - name: MetaData/stationIdentification - num_zonal_bands: 24 - sort_by_pressure: false - max_total_num_buddies: 15 - max_num_buddies_from_single_band: 10 - max_num_buddies_with_same_station_id: 5 - use_legacy_buddy_collector: false - horizontal_correlation_scale: { "-90": 150, "90": 150 } - temporal_correlation_scale: PT6H - damping_factor_1: 1.0 - damping_factor_2: 1.0 - background_error_group: BkgError diff --git a/parm/snow/obs/config/snocvr_snow.yaml.j2 b/parm/snow/obs/config/snocvr_snow.yaml.j2 deleted file mode 100644 index 45a361f32..000000000 --- a/parm/snow/obs/config/snocvr_snow.yaml.j2 +++ /dev/null @@ -1,103 +0,0 @@ -- obs space: - name: snocvr_snow - distribution: - name: Halo - halo size: 250e3 - obsdatain: - engine: - type: H5File - obsfile: './obs/{{ OPREFIX }}snocvr_snow.nc4' - obsdataout: - engine: - type: H5File - obsfile: './diags/diag_snocvr_snow.nc4' - simulated variables: [totalSnowDepth] - obs operator: - name: Composite - components: - - name: Identity - - name: BackgroundErrorIdentity - obs error: - covariance model: diagonal - obs localizations: - - localization method: Horizontal SOAR - lengthscale: 250e3 - soar horizontal decay: 0.000021 - max nobs: 50 - - localization method: Vertical Brasnett - vertical lengthscale: 700 - obs pre filters: - - filter: Perform Action - filter variables: - - name: totalSnowDepth - action: - name: assign error - error parameter: 40.0 - - filter: Variable Assignment - assignments: - - name: GrossErrorProbability/totalSnowDepth - type: float - value: 0.02 - - name: BkgError/totalSnowDepth_background_error - type: float - value: 30.0 - obs prior filters: - - filter: Bounds Check - filter variables: - - name: totalSnowDepth - minvalue: 0.0 - maxvalue: 2000.0 - action: - name: reject - - filter: Domain Check - where: - - variable: - name: MetaData/stationElevation - minvalue: -999.0 - - filter: Domain Check # land only - where: - - variable: - name: GeoVaLs/slmsk - minvalue: 0.5 - maxvalue: 1.5 - - filter: RejectList # no land-ice - where: - - variable: - name: GeoVaLs/vtype - minvalue: 14.5 - maxvalue: 15.5 - obs post filters: - - filter: Background Check # gross error check - filter variables: - - name: totalSnowDepth - threshold: 6.25 - action: - name: reject - - filter: Temporal Thinning - min_spacing: '{{ SNOW_WINDOW_LENGTH }}' - seed_time: '{{ current_cycle | to_isotime }}' - category_variable: - name: MetaData/stationIdentification - - filter: Met Office Buddy Check - filter variables: - - name: totalSnowDepth - rejection_threshold: 0.5 - traced_boxes: # trace all observations - min_latitude: -90 - max_latitude: 90 - min_longitude: -180 - max_longitude: 180 - search_radius: 150 # km - station_id_variable: - name: MetaData/stationIdentification - num_zonal_bands: 24 - sort_by_pressure: false - max_total_num_buddies: 15 - max_num_buddies_from_single_band: 10 - max_num_buddies_with_same_station_id: 5 - use_legacy_buddy_collector: false - horizontal_correlation_scale: { "-90": 150, "90": 150 } - temporal_correlation_scale: PT6H - damping_factor_1: 1.0 - damping_factor_2: 1.0 - background_error_group: BkgError diff --git a/parm/snow/prep/fims.nml.j2 b/parm/snow/prep/fims.nml.j2 index 9b8408b32..b9a8ded59 100644 --- a/parm/snow/prep/fims.nml.j2 +++ b/parm/snow/prep/fims.nml.j2 @@ -6,7 +6,7 @@ yyyymmddhh = "{{ current_cycle | to_YMD }}.{{ current_cycle.strftime('%H') }}", imsformat = 1, imsversion = "1.3", - fcst_path = "./bkg/" + fcst_path = "{{ ims_fcst_path }}" IMS_OBS_PATH = "./obs/", IMS_IND_PATH = "./obs/" / diff --git a/parm/snow/prep/prep_ims.yaml.j2 b/parm/snow/prep/prep_ims.yaml.j2 index 0c2bbc163..938d0503c 100644 --- a/parm/snow/prep/prep_ims.yaml.j2 +++ b/parm/snow/prep/prep_ims.yaml.j2 @@ -2,9 +2,9 @@ calcfims: mkdir: - '{{ DATA }}/obs' copy: - - ['{{ COM_OBS }}/{{ OPREFIX }}imssnow96.asc', '{{ DATA }}/obs/ims{{ current_cycle | to_julian }}_4km_v1.3.asc'] + - ['{{ COMIN_OBS }}/{{ OPREFIX }}imssnow96.asc', '{{ DATA }}/obs/ims{{ current_cycle | to_julian }}_4km_v1.3.asc'] - ['{{ FIXgfs }}/gdas/obs/ims/IMS_4km_to_{{ CASE }}.mx{{ OCNRES }}.nc', '{{ DATA }}/obs/IMS4km_to_FV3_mapping.{{ CASE }}_oro_data.nc'] ims2ioda: copy: - - ['{{ DATA }}/ims_snow_{{ current_cycle | to_YMDH }}.nc4', '{{ COM_OBS }}/{{ OPREFIX }}ims_snow.nc4'] + - ['{{ DATA }}/ims_snow_{{ current_cycle | to_YMDH }}.nc4', '{{ DATA }}/obs/{{ OPREFIX }}ims_snow.tm00.nc'] diff --git a/parm/soca/marine-jcb-base.yaml b/parm/soca/marine-jcb-base.yaml index 7ca450c7c..5bbabe4c5 100644 --- a/parm/soca/marine-jcb-base.yaml +++ b/parm/soca/marine-jcb-base.yaml @@ -24,7 +24,15 @@ minimizer: RPCG final_diagnostics_departures: oman final_prints_frequency: PT3H number_of_outer_loops: 1 -analysis_variables: [sea_ice_area_fraction, sea_ice_thickness, sea_ice_snow_thickness, sea_water_salinity, sea_water_potential_temperature, eastward_sea_water_velocity, northward_sea_water_velocity, sea_surface_height_above_geoid] +analysis_variables: +- sea_ice_area_fraction +- sea_ice_thickness +- sea_ice_snow_thickness +- sea_water_salinity +- sea_water_potential_temperature +#- eastward_sea_water_velocity +#- northward_sea_water_velocity +- sea_surface_height_above_geoid # Model things # ------------ @@ -49,7 +57,7 @@ marine_forecast_timestep: PT3H # Background error model background_error_file: '{{berror_model}}' marine_number_ensemble_members: '{{NMEM_ENS}}' -marine_stddev_time: '{{MARINE_WINDOW_MIDDLE}}' +marine_stddev_time: '{{ MARINE_WINDOW_MIDDLE | to_isotime }}' # Observations observations: all_observations diff --git a/parm/soca/obsprep/obsprep_config.yaml b/parm/soca/obsprep/obsprep_config.yaml index df7481ebf..02f4edb5d 100644 --- a/parm/soca/obsprep/obsprep_config.yaml +++ b/parm/soca/obsprep/obsprep_config.yaml @@ -67,7 +67,7 @@ observations: provider: MIRS dmpdir subdir: ocean/icec type: nc - dmpdir regex: 'NPR-MIRS-IMG_v11r9_ma1_s*.nc' + dmpdir regex: 'NPR-MIRS-IMG_v11r?_ma1_s*.nc' ocean basin: RECCAP2_region_masks_all_v20221025.nc - obs space: @@ -75,7 +75,7 @@ observations: provider: MIRS dmpdir subdir: ocean/icec type: nc - dmpdir regex: 'NPR-MIRS-IMG_v11r9_n20_s*.nc' + dmpdir regex: 'NPR-MIRS-IMG_v11r?_n20_s*.nc' ocean basin: RECCAP2_region_masks_all_v20221025.nc - obs space: @@ -83,7 +83,7 @@ observations: provider: MIRS dmpdir subdir: ocean/icec type: nc - dmpdir regex: 'NPR-MIRS-IMG_v11r9_n21_s*.nc' + dmpdir regex: 'NPR-MIRS-IMG_v11r?_n21_s*.nc' ocean basin: RECCAP2_region_masks_all_v20221025.nc - obs space: @@ -91,7 +91,7 @@ observations: provider: MIRS dmpdir subdir: ocean/icec type: nc - dmpdir regex: 'NPR-MIRS-IMG_v11r4_npp_s*.nc' + dmpdir regex: 'NPR-MIRS-IMG_v11r?_npp_s*.nc' ocean basin: RECCAP2_region_masks_all_v20221025.nc - obs space: @@ -99,7 +99,7 @@ observations: provider: MIRS dmpdir subdir: ocean/icec type: nc - dmpdir regex: 'NPR-MIRS-IMG_v11r9_gpm_s*.nc' + dmpdir regex: 'NPR-MIRS-IMG_v11r?_gpm_s*.nc' ocean basin: RECCAP2_region_masks_all_v20221025.nc - obs space: @@ -107,7 +107,7 @@ observations: provider: MIRS dmpdir subdir: ocean/icec type: nc - dmpdir regex: 'NPR-MIRS-IMG_v11r4_f17_s*.nc' + dmpdir regex: 'NPR-MIRS-IMG_v11r?_f17_s*.nc' ocean basin: RECCAP2_region_masks_all_v20221025.nc # SST diff --git a/sorc/land-imsproc b/sorc/land-imsproc index bbe3f311d..7ca1c7441 160000 --- a/sorc/land-imsproc +++ b/sorc/land-imsproc @@ -1 +1 @@ -Subproject commit bbe3f311dc310020319c313cde1a2ee8a3c47a36 +Subproject commit 7ca1c7441042558cf41a0753f80191a0026a1126 diff --git a/test/atm/global-workflow/CMakeLists.txt b/test/atm/global-workflow/CMakeLists.txt index daa5b8edf..1741a20f6 100644 --- a/test/atm/global-workflow/CMakeLists.txt +++ b/test/atm/global-workflow/CMakeLists.txt @@ -1,7 +1,7 @@ # test for creating an experiment directory within the global-workflow file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/test/atm/global-workflow/testrun) -ecbuild_add_test(TARGET test_gdasapp_setup_atm_cycled_exp +ecbuild_add_test(TARGET test_gdasapp_setup_atm_jjob_cycled_exp TYPE SCRIPT COMMAND ${PROJECT_SOURCE_DIR}/test/atm/global-workflow/setup_workflow_exp.sh ARGS ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR} @@ -12,7 +12,7 @@ ecbuild_add_test(TARGET test_gdasapp_atm_jjob_var_init COMMAND ${PROJECT_SOURCE_DIR}/test/atm/global-workflow/jjob_var_init.sh ARGS ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR} WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/test/atm/global-workflow/testrun - TEST_DEPENDS test_gdasapp_setup_atm_cycled_exp) + TEST_DEPENDS test_gdasapp_setup_atm_jjob_cycled_exp) ecbuild_add_test(TARGET test_gdasapp_atm_jjob_var_run TYPE SCRIPT @@ -40,7 +40,7 @@ ecbuild_add_test(TARGET test_gdasapp_atm_jjob_ens_init COMMAND ${PROJECT_SOURCE_DIR}/test/atm/global-workflow/jjob_ens_init.sh ARGS ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR} WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/test/atm/global-workflow/testrun - TEST_DEPENDS test_gdasapp_setup_atm_cycled_exp) + TEST_DEPENDS test_gdasapp_setup_atm_jjob_cycled_exp) ecbuild_add_test(TARGET test_gdasapp_atm_jjob_ens_letkf TYPE SCRIPT diff --git a/test/gw-ci/CMakeLists.txt b/test/gw-ci/CMakeLists.txt index 54f5d4637..35c66d0cd 100644 --- a/test/gw-ci/CMakeLists.txt +++ b/test/gw-ci/CMakeLists.txt @@ -6,16 +6,9 @@ function(add_task task_name test_prefix is_full_cycle HALF_CYCLE FULL_CYCLE pslo set(subtask_names_list "gdas_fcst_seg0") elseif("${task_name}" STREQUAL "enkfgdas_fcst") - if("${pslot}" STREQUAL "C48mx500_hybAOWCDA") - set(subtask_names_list - "enkfgdas_fcst_mem001" - "enkfgdas_fcst_mem002" - "enkfgdas_fcst_mem003") - else() set(subtask_names_list "enkfgdas_fcst_mem001" "enkfgdas_fcst_mem002") - endif() elseif("${task_name}" STREQUAL "gdas_atmos_prod") set(subtask_names_list "gdas_atmos_prod_f000" @@ -248,7 +241,7 @@ if (WORKFLOW_TESTS) option(TEST_GFS18 "Enable the GFSv18 Atmos JEDI tests" ON) option(TEST_AERO_LAND "Enable the GFSv17 Aero-Land JEDI tests" ON) option(TEST_MARINE_VAR "Enable the GFSv17 Marine JEDI 3D VAR FGAT tests" ON) - option(TEST_MARINE_HYB "Enable the GFSv17 Marine JEDI 3d HYB VAR tests" OFF) + option(TEST_MARINE_HYB "Enable the GFSv17 Marine JEDI 3d HYB VAR tests" ON) option(TEST_GFS17 "Enable the GFSv17 WCDA tests" OFF) # Setup the environement diff --git a/test/testreference/C96C48_ufs_hybatmDA_3dvar-fv3inc.ref b/test/testreference/C96C48_ufs_hybatmDA_3dvar-fv3inc.ref index 6f3adb18d..9f351467f 100644 --- a/test/testreference/C96C48_ufs_hybatmDA_3dvar-fv3inc.ref +++ b/test/testreference/C96C48_ufs_hybatmDA_3dvar-fv3inc.ref @@ -2,40 +2,40 @@ Background State: ---------------------------------------------------------------------------------------------------- State print | number of fields = 9 | cube sphere face size: C96 -eastward_wind | Min:-8.7593299865722656e+01 Max:+1.1421906280517578e+02 RMS:+1.7446423933066384e+01 -northward_wind | Min:-9.0978759765625000e+01 Max:+8.9302459716796875e+01 RMS:+9.8048456519148388e+00 -air_temperature | Min:+1.7290483093261719e+02 Max:+3.1017132568359375e+02 RMS:+2.5022377762999352e+02 -air_pressure_at_surface | Min:+5.1309082031250000e+04 Max:+1.0433011718750000e+05 RMS:+9.8914626690611054e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+9.9999986069576607e-10 Max:+2.1381899714469910e-02 RMS:+5.0230919069545812e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+5.7223520707339048e-04 RMS:+9.4296924830407741e-06 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.6279185656458139e-03 RMS:+3.7809568286336720e-05 -ozone_mass_mixing_ratio | Min:+3.6120087476554374e-10 Max:+1.7313132048002444e-05 RMS:+4.4655432291945023e-06 +eastward_wind | Min:-8.7592636108398438e+01 Max:+1.1416704559326172e+02 RMS:+1.7446457173999249e+01 +northward_wind | Min:-9.0989822387695312e+01 Max:+8.9292556762695312e+01 RMS:+9.8047448525826173e+00 +air_temperature | Min:+1.7290489196777344e+02 Max:+3.1016726684570312e+02 RMS:+2.5022379933353739e+02 +air_pressure_at_surface | Min:+5.1309156250000000e+04 Max:+1.0433031250000000e+05 RMS:+9.8914639246899416e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+9.9999986069576607e-10 Max:+2.1401712670922279e-02 RMS:+5.0230810220772519e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+5.6316837435588241e-04 RMS:+9.4319632692495166e-06 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.6321672592312098e-03 RMS:+3.7885306687823480e-05 +ozone_mass_mixing_ratio | Min:+3.6092406840992908e-10 Max:+1.7313830539933406e-05 RMS:+4.4655431091584869e-06 geopotential_height_at_surface | Min:-2.9894643783569336e+01 Max:+5.3870561523437500e+03 RMS:+6.4442219321892003e+02 ---------------------------------------------------------------------------------------------------- JEDI Increment: ---------------------------------------------------------------------------------------------------- Increment print | number of fields = 8 | cube sphere face size: C48 -eastward_wind | Min:-2.1115621251510674e-07 Max:+1.1444664416160322e-07 RMS:+1.8401316033983295e-09 -northward_wind | Min:-1.0219621415785696e-07 Max:+2.6249988138715707e-07 RMS:+1.8295902505163720e-09 -air_temperature | Min:-5.2000757477799198e-08 Max:+6.6504355800134363e-08 RMS:+7.1626194815483433e-10 -air_pressure_at_surface | Min:-2.0445149857550859e-06 Max:+9.8957389127463102e-07 RMS:+4.2160438885855514e-08 -water_vapor_mixing_ratio_wrt_moist_air | Min:-3.5212104499554586e-11 Max:+2.4915642032191654e-11 RMS:+2.7352479311235747e-13 -cloud_liquid_ice | Min:-5.2622388732733935e-13 Max:+3.8117236092690345e-13 RMS:+3.4198803820164734e-15 -cloud_liquid_water | Min:-1.1565164516162685e-11 Max:+3.1649457890922744e-12 RMS:+1.5995494806702646e-14 -ozone_mass_mixing_ratio | Min:-1.0346794247831136e-06 Max:+1.3451623930433847e-06 RMS:+3.6858146749007146e-08 +eastward_wind | Min:-2.1094110991271009e-07 Max:+1.1717330217209110e-07 RMS:+1.8406442199343545e-09 +northward_wind | Min:-1.0218003509976370e-07 Max:+2.6284932985731757e-07 RMS:+1.8321568102519878e-09 +air_temperature | Min:-5.2967720876040403e-08 Max:+6.6442652268960956e-08 RMS:+7.1529564595995224e-10 +air_pressure_at_surface | Min:-2.0471925381571054e-06 Max:+9.5464929472655058e-07 RMS:+4.2656890498660969e-08 +water_vapor_mixing_ratio_wrt_moist_air | Min:-3.5909499332409389e-11 Max:+2.5060615908845119e-11 RMS:+2.7346125979528040e-13 +cloud_liquid_ice | Min:-5.5298263899525562e-13 Max:+3.6544474506536037e-13 RMS:+3.3630266932071384e-15 +cloud_liquid_water | Min:-1.0711521106947577e-11 Max:+3.1052085273756969e-12 RMS:+1.7896344450957455e-14 +ozone_mass_mixing_ratio | Min:-1.0347839576407838e-06 Max:+1.3449736530190683e-06 RMS:+3.6860537521399650e-08 ---------------------------------------------------------------------------------------------------- FV3 Increment: ---------------------------------------------------------------------------------------------------- Increment print | number of fields = 9 | cube sphere face size: C48 -eastward_wind | Min:-2.1115621251510674e-07 Max:+1.1444664416160322e-07 RMS:+1.8401316033983295e-09 -northward_wind | Min:-1.0219621415785696e-07 Max:+2.6249988138715707e-07 RMS:+1.8295902505163720e-09 -air_temperature | Min:-5.2000757477799198e-08 Max:+6.6504355800134363e-08 RMS:+7.1626194815483433e-10 -water_vapor_mixing_ratio_wrt_moist_air | Min:-3.5212104499554586e-11 Max:+2.4915642032191654e-11 RMS:+2.7352479311235747e-13 -cloud_liquid_ice | Min:-5.2622388732733935e-13 Max:+3.8117236092690345e-13 RMS:+3.4198803820164734e-15 -cloud_liquid_water | Min:-1.1565164516162685e-11 Max:+3.1649457890922744e-12 RMS:+1.5995494806702646e-14 -ozone_mass_mixing_ratio | Min:-1.0346794247831136e-06 Max:+1.3451623930433847e-06 RMS:+3.6858146749007146e-08 -air_pressure_thickness | Min:-3.8906364352442324e-08 Max:+1.7884758563013747e-08 RMS:+4.2747856122164087e-10 -layer_thickness | Min:-1.9763365344260819e-07 Max:+1.8311084204469807e-07 RMS:+3.6402384455212584e-09 +eastward_wind | Min:-2.1094110991271009e-07 Max:+1.1717330217209110e-07 RMS:+1.8406442199343545e-09 +northward_wind | Min:-1.0218003509976370e-07 Max:+2.6284932985731757e-07 RMS:+1.8321568102519878e-09 +air_temperature | Min:-5.2967720876040403e-08 Max:+6.6442652268960956e-08 RMS:+7.1529564595995224e-10 +water_vapor_mixing_ratio_wrt_moist_air | Min:-3.5909499332409389e-11 Max:+2.5060615908845119e-11 RMS:+2.7346125979528040e-13 +cloud_liquid_ice | Min:-5.5298263899525562e-13 Max:+3.6544474506536037e-13 RMS:+3.3630266932071384e-15 +cloud_liquid_water | Min:-1.0711521106947577e-11 Max:+3.1052085273756969e-12 RMS:+1.7896344450957455e-14 +ozone_mass_mixing_ratio | Min:-1.0347839576407838e-06 Max:+1.3449736530190683e-06 RMS:+3.6860537521399650e-08 +air_pressure_thickness | Min:-3.8967755244811997e-08 Max:+1.7229922377737239e-08 RMS:+4.3178264898018102e-10 +layer_thickness | Min:-1.9750632418435998e-07 Max:+1.8317587091587484e-07 RMS:+3.6300478031517017e-09 ---------------------------------------------------------------------------------------------------- diff --git a/test/testreference/C96C48_ufs_hybatmDA_3dvar.ref b/test/testreference/C96C48_ufs_hybatmDA_3dvar.ref index 711f08fb2..06cb7c5c8 100644 --- a/test/testreference/C96C48_ufs_hybatmDA_3dvar.ref +++ b/test/testreference/C96C48_ufs_hybatmDA_3dvar.ref @@ -1,53 +1,53 @@ CostJb : Nonlinear Jb = 0.0000000000000000e+00 -CostJo : Nonlinear Jo(Aircraft) = 6.0590797038184456e+05, nobs = 504555, Jo/n = 1.2008759607611550e+00, err = 2.2437239435917040e+00 -CostJo : Nonlinear Jo(ascatw_ascat_metop-b) = 1.5949936485170507e+04, nobs = 26314, Jo/n = 6.0613880387514274e-01, err = 1.8277692518568445e+00 -CostJo : Nonlinear Jo(ATMS N20) = 4.8387730216799086e+04, nobs = 156588, Jo/n = 3.0901301643037199e-01, err = 5.2594000470964719e+00 -CostJo : Nonlinear Jo(surface_ps) = 2.6308196193705146e+04, nobs = 107322, Jo/n = 2.4513330159431565e-01, err = 5.9305643428180190e+02 -CostJo : Nonlinear Jo(gnssrobndnbam) = 6.1501893265653157e+05, nobs = 473864, Jo/n = 1.2978806844506685e+00, err = 3.2933330370258057e-04 -CostJo : Nonlinear Jo(ompsnp_npp) = 2.1269336098572853e+03, nobs = 3087, Jo/n = 6.8899695816562534e-01, err = 2.4001367423170068e+00 -CostJo : Nonlinear Jo(ompstc_npp) = 3.3784707883660294e+03, nobs = 3696, Jo/n = 9.1408841676570063e-01, err = 6.0000000000000000e+00 -CostJo : Nonlinear Jo(satwind_goes-16) = 6.9383960384868606e+03, nobs = 193154, Jo/n = 3.5921575729660586e-02, err = 1.1892541771722902e+01 -CostFunction: Nonlinear J = 1.3240165663707610e+06 -DRPCGMinimizer: reduction in residual norm = 2.8257552285466486e-01 +CostJo : Nonlinear Jo(Aircraft) = 6.0586857580910716e+05, nobs = 504553, Jo/n = 1.2008026427533027e+00, err = 2.2437136734248115e+00 +CostJo : Nonlinear Jo(ascatw_ascat_metop-b) = 1.5969417839194493e+04, nobs = 26328, Jo/n = 6.0655643570322448e-01, err = 1.8362571773983374e+00 +CostJo : Nonlinear Jo(ATMS N20) = 4.8397895213825170e+04, nobs = 156648, Jo/n = 3.0895954760881195e-01, err = 5.2724142689429563e+00 +CostJo : Nonlinear Jo(surface_ps) = 2.6309839844535789e+04, nobs = 107320, Jo/n = 2.4515318528266669e-01, err = 5.9306444356854104e+02 +CostJo : Nonlinear Jo(gnssrobndnbam) = 6.1543420655506197e+05, nobs = 473850, Jo/n = 1.2987954132216144e+00, err = 3.2896403090661679e-04 +CostJo : Nonlinear Jo(ompsnp_npp) = 2.1270332920540864e+03, nobs = 3087, Jo/n = 6.8902924912668817e-01, err = 2.4001367423170068e+00 +CostJo : Nonlinear Jo(ompstc_npp) = 3.3787920743968766e+03, nobs = 3696, Jo/n = 9.1417534480434970e-01, err = 6.0000000000000000e+00 +CostJo : Nonlinear Jo(satwind_goes-16) = 6.9382686620861832e+03, nobs = 193152, Jo/n = 3.5921288219051231e-02, err = 1.1892539752006376e+01 +CostFunction: Nonlinear J = 1.3244240292902619e+06 +DRPCGMinimizer: reduction in residual norm = 2.8257030182760973e-01 CostFunction::addIncrement: Analysis: ---------------------------------------------------------------------------------------------------- State print | number of fields = 22 | cube sphere face size: C96 -eastward_wind | Min:-8.7593299865709369e+01 Max:+1.1421906280506562e+02 RMS:+1.7446423933063677e+01 -northward_wind | Min:-9.0978759765616502e+01 Max:+8.9302459716826505e+01 RMS:+9.8048456519093889e+00 -air_temperature | Min:+1.7290483093261747e+02 Max:+3.1017132568363934e+02 RMS:+2.5022377762999326e+02 -air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7837935791015625e+03 RMS:+9.5699700087025974e+02 -air_pressure_at_surface | Min:+5.1309082031249884e+04 Max:+1.0433011718749903e+05 RMS:+9.8914626690610530e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+9.9999986088507587e-10 Max:+2.1381899714470930e-02 RMS:+5.0230919069543158e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+5.7223520707321528e-04 RMS:+9.4296924830162644e-06 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.6279185656660684e-03 RMS:+3.7809568286304757e-05 -ozone_mass_mixing_ratio | Min:+3.8859406171368113e-10 Max:+1.7313133576612057e-05 RMS:+4.4663053755671636e-06 +eastward_wind | Min:-8.7592636108385108e+01 Max:+1.1416704559315106e+02 RMS:+1.7446457173996492e+01 +northward_wind | Min:-9.0989822387686885e+01 Max:+8.9292556762725127e+01 RMS:+9.8047448525772207e+00 +air_temperature | Min:+1.7290489196777401e+02 Max:+3.1016726684575099e+02 RMS:+2.5022379933353719e+02 +air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7837973632812500e+03 RMS:+9.5699713772439975e+02 +air_pressure_at_surface | Min:+5.1309156249999876e+04 Max:+1.0433031249999903e+05 RMS:+9.8914639246898892e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+9.9999986073430897e-10 Max:+2.1401712670923338e-02 RMS:+5.0230810220769934e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+5.6316837435572314e-04 RMS:+9.4319632692245291e-06 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.6321672592384501e-03 RMS:+3.7885306687792885e-05 +ozone_mass_mixing_ratio | Min:+3.8830337803893365e-10 Max:+1.7313832023368078e-05 RMS:+4.4663045051813113e-06 geopotential_height_at_surface | Min:-2.9894643783569336e+01 Max:+5.3870561523437500e+03 RMS:+6.4442219321892003e+02 slmsk | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+00 RMS:+6.5312859958249614e-01 -sheleg | Min:+0.0000000000000000e+00 Max:+2.6371386718750000e+02 RMS:+2.2054824502787593e+01 -skin_temperature_at_surface | Min:+2.1746235656738281e+02 Max:+3.2932260131835938e+02 RMS:+2.8737006087270038e+02 +sheleg | Min:+0.0000000000000000e+00 Max:+2.6371389770507812e+02 RMS:+2.2054840004716052e+01 +skin_temperature_at_surface | Min:+2.1746269226074219e+02 Max:+3.2931939697265625e+02 RMS:+2.8736957533345463e+02 vtype | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+01 RMS:+5.8667091445155686e+00 stype | Min:+0.0000000000000000e+00 Max:+1.6000000000000000e+01 RMS:+4.3549806522511076e+00 vfrac | Min:+0.0000000000000000e+00 Max:+9.8026573181152344e+01 RMS:+1.9275201636346665e+01 -stc | Min:+2.0000000000000000e+02 Max:+3.2045886230468750e+02 RMS:+2.8806776004459306e+02 -soilMoistureVolumetric | Min:+2.1923782303929329e-02 Max:+1.0000000000000000e+00 RMS:+8.6145451167852249e-01 -totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.2327475547790527e+00 RMS:+1.5878111306662487e-01 -eastward_wind_at_surface | Min:-1.8106302261352539e+01 Max:+2.0922132492065430e+01 RMS:+5.2142386237867280e+00 -northward_wind_at_surface | Min:-2.0834318161010742e+01 Max:+1.9025196075439453e+01 RMS:+4.8322666159970842e+00 -f10m | Min:+9.3901658058166504e-01 Max:+1.0698120594024658e+00 RMS:+9.9592865511053685e-01 +stc | Min:+2.0000000000000000e+02 Max:+3.2046520996093750e+02 RMS:+2.8806775091395389e+02 +soilMoistureVolumetric | Min:+2.1923717111349106e-02 Max:+1.0000000000000000e+00 RMS:+8.6145441587921456e-01 +totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.2327473163604736e+00 RMS:+1.5878116415501689e-01 +eastward_wind_at_surface | Min:-1.8027540206909180e+01 Max:+2.1014362335205078e+01 RMS:+5.2149711165295214e+00 +northward_wind_at_surface | Min:-2.0649587631225586e+01 Max:+1.8741132736206055e+01 RMS:+4.8319693225541691e+00 +f10m | Min:+9.3893665075302124e-01 Max:+1.0697331428527832e+00 RMS:+9.9592909655665096e-01 ---------------------------------------------------------------------------------------------------- Obs bias coefficients: --------------------------------------------------------------- - constant: Min= -0.8381630182271099, Max= 0.8200770020481498, Norm= 2.2810923110282308 - lapseRate_order_2: Min= -0.2969009876260876, Max= 0.3889850080012900, Norm= 0.7014865852485521 - lapseRate: Min= -0.5954660177230082, Max= 1.6232719421370738, Norm= 2.1316868531033393 - emissivityJacobian: Min= -0.0097089996561411, Max= 8.3582897185072884, Norm= 10.2580018725806656 -sensorScanAngle_order_4: Min= -3.4036920070662289, Max= 0.8113600015621025, Norm= 4.8886281019448123 -sensorScanAngle_order_3: Min= -0.7697319984440882, Max= 0.3303030133246191, Norm= 0.9762309707883376 -sensorScanAngle_order_2: Min= -0.5401099920283099, Max= 2.2389800548543319, Norm= 2.4920946301939773 - sensorScanAngle: Min= -0.1069049984217430, Max= 0.4472059905526856, Norm= 0.8480380113023768 + constant: Min= -0.8381630182271099, Max= 0.8200770020481515, Norm= 2.2810923110282304 + lapseRate_order_2: Min= -0.2969009876260582, Max= 0.3889850080012890, Norm= 0.7014865852485411 + lapseRate: Min= -0.5954660177230151, Max= 1.6232719421371147, Norm= 2.1316868531033766 + emissivityJacobian: Min= -0.0097089996561411, Max= 8.3582897185072635, Norm= 10.2580018725805822 +sensorScanAngle_order_4: Min= -3.4036920070662386, Max= 0.8113600015621431, Norm= 4.8886281019448230 +sensorScanAngle_order_3: Min= -0.7697319984441072, Max= 0.3303030133246302, Norm= 0.9762309707883602 +sensorScanAngle_order_2: Min= -0.5401099920282910, Max= 2.2389800548543497, Norm= 2.4920946301939995 + sensorScanAngle: Min= -0.1069049984217406, Max= 0.4472059905526843, Norm= 0.8480380113023683 --------------------------------------------------------------- @@ -55,56 +55,56 @@ sensorScanAngle_order_2: Min= -0.5401099920283099, Max= 2.2389800548543319, N -CostJb : Nonlinear Jb = 0.0000000000001377 -CostJo : Nonlinear Jo(Aircraft) = 605907.9700265740975738, nobs = 504555, Jo/n = 1.2008759600570287, err = 2.2437239435917040 -CostJo : Nonlinear Jo(ascatw_ascat_metop-b) = 15949.9364848986988363, nobs = 26314, Jo/n = 0.6061388038648133, err = 1.8277692518568445 -CostJo : Nonlinear Jo(ATMS N20) = 48387.7302149529932649, nobs = 156588, Jo/n = 0.3090130164185825, err = 5.2594000470964719 -CostJo : Nonlinear Jo(surface_ps) = 26308.1961930343022686, nobs = 107322, Jo/n = 0.2451333015880649, err = 593.0564342818018986 -CostJo : Nonlinear Jo(gnssrobndnbam) = 615018.9326265617273748, nobs = 473864, Jo/n = 1.2978806843874229, err = 0.0003293333037026 -CostJo : Nonlinear Jo(ompsnp_npp) = 1931.1242066182112467, nobs = 3087, Jo/n = 0.6255666364166541, err = 2.4001367423170068 -CostJo : Nonlinear Jo(ompstc_npp) = 1175.2354163386241908, nobs = 3696, Jo/n = 0.3179749503080693, err = 6.0000000000000000 -CostJo : Nonlinear Jo(satwind_goes-16) = 6938.3960383742578415, nobs = 193154, Jo/n = 0.0359215757290776, err = 11.8925417717229021 -CostFunction: Nonlinear J = 1321617.5212073526345193 -DRPCGMinimizer: reduction in residual norm = 0.8446076379600224 +CostJb : Nonlinear Jb = 0.0000000000001371 +CostJo : Nonlinear Jo(Aircraft) = 605868.5754523422801867, nobs = 504553, Jo/n = 1.2008026420462117, err = 2.2437136734248115 +CostJo : Nonlinear Jo(ascatw_ascat_metop-b) = 15969.4178389218141092, nobs = 26328, Jo/n = 0.6065564356928674, err = 1.8362571773983374 +CostJo : Nonlinear Jo(ATMS N20) = 48397.8952120999601902, nobs = 156648, Jo/n = 0.3089595475977986, err = 5.2724142689429563 +CostJo : Nonlinear Jo(surface_ps) = 26309.8398438642980182, nobs = 107320, Jo/n = 0.2451531852764098, err = 593.0644435685410372 +CostJo : Nonlinear Jo(gnssrobndnbam) = 615434.2065248880535364, nobs = 473850, Jo/n = 1.2987954131579362, err = 0.0003289640309066 +CostJo : Nonlinear Jo(ompsnp_npp) = 1931.2294941937966541, nobs = 3087, Jo/n = 0.6256007431790724, err = 2.4001367423170068 +CostJo : Nonlinear Jo(ompstc_npp) = 1175.5454767024434659, nobs = 3696, Jo/n = 0.3180588410991460, err = 6.0000000000000000 +CostJo : Nonlinear Jo(satwind_goes-16) = 6938.2686619732694453, nobs = 193152, Jo/n = 0.0359212882184666, err = 11.8925397520063765 +CostFunction: Nonlinear J = 1322024.9785049860365689 +DRPCGMinimizer: reduction in residual norm = 0.8446464058086658 CostFunction::addIncrement: Analysis: ---------------------------------------------------------------------------------------------------- State print | number of fields = 22 | cube sphere face size: C96 -eastward_wind | Min:-8.7593299865597274e+01 Max:+1.1421906280413639e+02 RMS:+1.7446423933041416e+01 -northward_wind | Min:-9.0978759765544794e+01 Max:+8.9302459717076374e+01 RMS:+9.8048456518642482e+00 -air_temperature | Min:+1.7290483093261994e+02 Max:+3.1017132568402411e+02 RMS:+2.5022377762999653e+02 -air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7837935791015625e+03 RMS:+9.5699700087025974e+02 -air_pressure_at_surface | Min:+5.1309082031248872e+04 Max:+1.0433011718749085e+05 RMS:+9.8914626690605888e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+9.9999986293294490e-10 Max:+2.1381899714479527e-02 RMS:+5.0230919069522385e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+5.7223520707173773e-04 RMS:+9.4296924828094189e-06 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.6279185658369072e-03 RMS:+3.7809568286035265e-05 -ozone_mass_mixing_ratio | Min:+0.0000000000000000e+00 Max:+1.7393152519974760e-05 RMS:+4.4687802775349384e-06 +eastward_wind | Min:-8.7592636108272671e+01 Max:+1.1416704559221755e+02 RMS:+1.7446457173973780e+01 +northward_wind | Min:-9.0989822387615689e+01 Max:+8.9292556762976545e+01 RMS:+9.8047448525325454e+00 +air_temperature | Min:+1.7290489196777892e+02 Max:+3.1016726684615486e+02 RMS:+2.5022379933354054e+02 +air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7837973632812500e+03 RMS:+9.5699713772439975e+02 +air_pressure_at_surface | Min:+5.1309156249998850e+04 Max:+1.0433031249999082e+05 RMS:+9.8914639246894265e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+9.9999986150945930e-10 Max:+2.1401712670932254e-02 RMS:+5.0230810220750072e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+5.6316837435437916e-04 RMS:+9.4319632690136399e-06 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.6321672592995262e-03 RMS:+3.7885306687535055e-05 +ozone_mass_mixing_ratio | Min:+0.0000000000000000e+00 Max:+1.7394005756664486e-05 RMS:+4.4687792881256477e-06 geopotential_height_at_surface | Min:-2.9894643783569336e+01 Max:+5.3870561523437500e+03 RMS:+6.4442219321892003e+02 slmsk | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+00 RMS:+6.5312859958249614e-01 -sheleg | Min:+0.0000000000000000e+00 Max:+2.6371386718750000e+02 RMS:+2.2054824502787593e+01 -skin_temperature_at_surface | Min:+2.1746235656738281e+02 Max:+3.2932260131835938e+02 RMS:+2.8737006087270038e+02 +sheleg | Min:+0.0000000000000000e+00 Max:+2.6371389770507812e+02 RMS:+2.2054840004716052e+01 +skin_temperature_at_surface | Min:+2.1746269226074219e+02 Max:+3.2931939697265625e+02 RMS:+2.8736957533345463e+02 vtype | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+01 RMS:+5.8667091445155686e+00 stype | Min:+0.0000000000000000e+00 Max:+1.6000000000000000e+01 RMS:+4.3549806522511076e+00 vfrac | Min:+0.0000000000000000e+00 Max:+9.8026573181152344e+01 RMS:+1.9275201636346665e+01 -stc | Min:+2.0000000000000000e+02 Max:+3.2045886230468750e+02 RMS:+2.8806776004459306e+02 -soilMoistureVolumetric | Min:+2.1923782303929329e-02 Max:+1.0000000000000000e+00 RMS:+8.6145451167852249e-01 -totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.2327475547790527e+00 RMS:+1.5878111306662487e-01 -eastward_wind_at_surface | Min:-1.8106302261352539e+01 Max:+2.0922132492065430e+01 RMS:+5.2142386237867280e+00 -northward_wind_at_surface | Min:-2.0834318161010742e+01 Max:+1.9025196075439453e+01 RMS:+4.8322666159970842e+00 -f10m | Min:+9.3901658058166504e-01 Max:+1.0698120594024658e+00 RMS:+9.9592865511053685e-01 +stc | Min:+2.0000000000000000e+02 Max:+3.2046520996093750e+02 RMS:+2.8806775091395389e+02 +soilMoistureVolumetric | Min:+2.1923717111349106e-02 Max:+1.0000000000000000e+00 RMS:+8.6145441587921456e-01 +totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.2327473163604736e+00 RMS:+1.5878116415501689e-01 +eastward_wind_at_surface | Min:-1.8027540206909180e+01 Max:+2.1014362335205078e+01 RMS:+5.2149711165295214e+00 +northward_wind_at_surface | Min:-2.0649587631225586e+01 Max:+1.8741132736206055e+01 RMS:+4.8319693225541691e+00 +f10m | Min:+9.3893665075302124e-01 Max:+1.0697331428527832e+00 RMS:+9.9592909655665096e-01 ---------------------------------------------------------------------------------------------------- Obs bias coefficients: --------------------------------------------------------------- - constant: Min= -0.8381630182312128, Max= 0.8200770020452602, Norm= 2.2810923110345662 - lapseRate_order_2: Min= -0.2969009876342316, Max= 0.3889850080009739, Norm= 0.7014865852476552 - lapseRate: Min= -0.5954660177223734, Max= 1.6232719421235957, Norm= 2.1316868530892328 - emissivityJacobian: Min= -0.0097089996561434, Max= 8.3582897174897202, Norm= 10.2580018711068170 -sensorScanAngle_order_4: Min= -3.4036920070781176, Max= 0.8113600015458797, Norm= 4.8886281019598847 -sensorScanAngle_order_3: Min= -0.7697319984481772, Max= 0.3303030133236201, Norm= 0.9762309707916220 -sensorScanAngle_order_2: Min= -0.5401099920369742, Max= 2.2389800548457712, Norm= 2.4920946301898259 - sensorScanAngle: Min= -0.1069049984223674, Max= 0.4472059905508586, Norm= 0.8480380112990616 + constant: Min= -0.8381630182312133, Max= 0.8200770020452758, Norm= 2.2810923110345596 + lapseRate_order_2: Min= -0.2969009876339544, Max= 0.3889850080009647, Norm= 0.7014865852475514 + lapseRate: Min= -0.5954660177224381, Max= 1.6232719421239783, Norm= 2.1316868530895849 + emissivityJacobian: Min= -0.0097089996561437, Max= 8.3582897174893915, Norm= 10.2580018711058969 +sensorScanAngle_order_4: Min= -3.4036920070782095, Max= 0.8113600015462609, Norm= 4.8886281019599895 +sensorScanAngle_order_3: Min= -0.7697319984483566, Max= 0.3303030133237251, Norm= 0.9762309707918347 +sensorScanAngle_order_2: Min= -0.5401099920367962, Max= 2.2389800548459413, Norm= 2.4920946301900422 + sensorScanAngle: Min= -0.1069049984223444, Max= 0.4472059905508466, Norm= 0.8480380112989835 --------------------------------------------------------------- @@ -112,13 +112,13 @@ sensorScanAngle_order_2: Min= -0.5401099920369742, Max= 2.2389800548457712, N -CostJb : Nonlinear Jb = 0.0000000000008880 -CostJo : Nonlinear Jo(Aircraft) = 605907.9670297848060727, nobs = 504555, Jo/n = 1.2008759541175587, err = 2.2437239435917040 -CostJo : Nonlinear Jo(ascatw_ascat_metop-b) = 15949.9364826060973428, nobs = 26314, Jo/n = 0.6061388037776886, err = 1.8277692518568445 -CostJo : Nonlinear Jo(ATMS N20) = 48387.7301996692985995, nobs = 156588, Jo/n = 0.3090130163209780, err = 5.2594000470964719 -CostJo : Nonlinear Jo(surface_ps) = 26308.1961873747168283, nobs = 107322, Jo/n = 0.2451333015353303, err = 593.0564342818018986 -CostJo : Nonlinear Jo(gnssrobndnbam) = 615018.9323734971694648, nobs = 473864, Jo/n = 1.2978806838533781, err = 0.0003293333037026 -CostJo : Nonlinear Jo(ompsnp_npp) = 1105.2453930547394521, nobs = 3087, Jo/n = 0.3580321972966438, err = 2.4001367423170068 -CostJo : Nonlinear Jo(ompstc_npp) = 842.3521445536282499, nobs = 3696, Jo/n = 0.2279091300199211, err = 6.0000000000000000 -CostJo : Nonlinear Jo(satwind_goes-16) = 6938.3960374245170897, nobs = 193154, Jo/n = 0.0359215757241606, err = 11.8925417717229021 -CostFunction: Nonlinear J = 1320458.7558479649014771 +CostJb : Nonlinear Jb = 0.0000000000008861 +CostJo : Nonlinear Jo(Aircraft) = 605868.5724426389206201, nobs = 504553, Jo/n = 1.2008026360811230, err = 2.2437136734248115 +CostJo : Nonlinear Jo(ascatw_ascat_metop-b) = 15969.4178366216237919, nobs = 26328, Jo/n = 0.6065564356055008, err = 1.8362571773983374 +CostJo : Nonlinear Jo(ATMS N20) = 48397.8951984271625406, nobs = 156648, Jo/n = 0.3089595475105151, err = 5.2724142689429563 +CostJo : Nonlinear Jo(surface_ps) = 26309.8398381981351122, nobs = 107320, Jo/n = 0.2451531852236129, err = 593.0644435685410372 +CostJo : Nonlinear Jo(gnssrobndnbam) = 615434.2062702839029953, nobs = 473850, Jo/n = 1.2987954126206265, err = 0.0003289640309066 +CostJo : Nonlinear Jo(ompsnp_npp) = 1105.2563637508856118, nobs = 3087, Jo/n = 0.3580357511340737, err = 2.4001367423170068 +CostJo : Nonlinear Jo(ompstc_npp) = 842.7302103307468997, nobs = 3696, Jo/n = 0.2280114205440333, err = 6.0000000000000000 +CostJo : Nonlinear Jo(satwind_goes-16) = 6938.2686610208002094, nobs = 193152, Jo/n = 0.0359212882135355, err = 11.8925397520063765 +CostFunction: Nonlinear J = 1320866.1868212721310556 diff --git a/test/testreference/C96C48_ufs_hybatmDA_lgetkf-fv3inc.ref b/test/testreference/C96C48_ufs_hybatmDA_lgetkf-fv3inc.ref index 103e05260..9e3d92b61 100644 --- a/test/testreference/C96C48_ufs_hybatmDA_lgetkf-fv3inc.ref +++ b/test/testreference/C96C48_ufs_hybatmDA_lgetkf-fv3inc.ref @@ -2,81 +2,81 @@ Background State for member 0: ---------------------------------------------------------------------------------------------------- State print | number of fields = 9 | cube sphere face size: C48 -eastward_wind | Min:-8.4384330749511719e+01 Max:+1.1146717834472656e+02 RMS:+1.7423407399233511e+01 -northward_wind | Min:-8.6144805908203125e+01 Max:+8.9331993103027344e+01 RMS:+1.0017299694477177e+01 -air_temperature | Min:+1.7350303649902344e+02 Max:+3.0961535644531250e+02 RMS:+2.5015669840056216e+02 -air_pressure_at_surface | Min:+5.2320046875000000e+04 Max:+1.0452482812500000e+05 RMS:+9.8914997456124955e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+1.6847316430812498e-08 Max:+2.2395884618163109e-02 RMS:+5.0107896876815721e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.1855275048874319e-04 RMS:+1.0354889627583217e-05 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.3839458115398884e-03 RMS:+3.5588872198565466e-05 -ozone_mass_mixing_ratio | Min:+1.1339260641562987e-09 Max:+1.7277885490329936e-05 RMS:+4.4686682637740296e-06 +eastward_wind | Min:-8.4381935119628906e+01 Max:+1.1147341156005859e+02 RMS:+1.7423562537923519e+01 +northward_wind | Min:-8.6138259887695312e+01 Max:+8.9330894470214844e+01 RMS:+1.0017174203028123e+01 +air_temperature | Min:+1.7350219726562500e+02 Max:+3.0963690185546875e+02 RMS:+2.5015657367644263e+02 +air_pressure_at_surface | Min:+5.2319625000000000e+04 Max:+1.0452528906250000e+05 RMS:+9.8915012275401939e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+1.6836553484722572e-08 Max:+2.2505994886159897e-02 RMS:+5.0110427820345893e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.2010331526398659e-04 RMS:+1.0363528039971751e-05 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.3888616813346744e-03 RMS:+3.5573039146049825e-05 +ozone_mass_mixing_ratio | Min:+1.1367524699323894e-09 Max:+1.7277665392612107e-05 RMS:+4.4686688193802981e-06 geopotential_height_at_surface | Min:-2.7018375396728516e+01 Max:+5.2697558593750000e+03 RMS:+6.3772571434211386e+02 ---------------------------------------------------------------------------------------------------- JEDI Increment for member 0: ---------------------------------------------------------------------------------------------------- Increment print | number of fields = 8 | cube sphere face size: C48 -eastward_wind | Min:-2.6713170463703555e+01 Max:+2.7247719731829164e+01 RMS:+7.7003410130506966e-01 -northward_wind | Min:-2.2266548354929135e+01 Max:+2.4111106836816546e+01 RMS:+7.7874592260732178e-01 -air_temperature | Min:-1.0204740456386372e+01 Max:+1.0612363461439131e+01 RMS:+3.2383456606394428e-01 -air_pressure_at_surface | Min:-1.6632427368676872e-03 Max:+1.3842245934938546e-03 RMS:+8.3556099392947144e-05 -water_vapor_mixing_ratio_wrt_moist_air | Min:-1.0075023053001828e-02 Max:+1.3216991071147419e-02 RMS:+1.3161159034094137e-04 -cloud_liquid_ice | Min:-3.2384493993478425e-04 Max:+2.5782120798697029e-04 RMS:+3.5186992249237140e-06 -cloud_liquid_water | Min:-1.3410840615217380e-03 Max:+1.0793991164780980e-03 RMS:+1.2675198989331570e-05 -ozone_mass_mixing_ratio | Min:-1.7321578649115885e-06 Max:+2.2122365151317159e-06 RMS:+3.4501654041399942e-08 +eastward_wind | Min:-2.6755148704831090e+01 Max:+2.7445134265820300e+01 RMS:+7.6898038333711749e-01 +northward_wind | Min:-2.2178789491077385e+01 Max:+2.4185475371090597e+01 RMS:+7.7710948888854692e-01 +air_temperature | Min:-1.0784516433515279e+01 Max:+1.0549022663102676e+01 RMS:+3.2384375878820826e-01 +air_pressure_at_surface | Min:-1.6484601914328323e-03 Max:+1.3856849856779263e-03 RMS:+8.3530946702052195e-05 +water_vapor_mixing_ratio_wrt_moist_air | Min:-1.0021503370922452e-02 Max:+1.3243901954678224e-02 RMS:+1.3115100578902817e-04 +cloud_liquid_ice | Min:-3.2925003109779221e-04 Max:+3.0772213252633877e-04 RMS:+3.4572125152726005e-06 +cloud_liquid_water | Min:-1.3730991635473452e-03 Max:+1.0331594047075395e-03 RMS:+1.3213296694607966e-05 +ozone_mass_mixing_ratio | Min:-1.7236144371589322e-06 Max:+2.2084475912612794e-06 RMS:+3.4502781461392678e-08 ---------------------------------------------------------------------------------------------------- FV3 Increment for member 0: ---------------------------------------------------------------------------------------------------- Increment print | number of fields = 9 | cube sphere face size: C48 -eastward_wind | Min:-2.6713170463703555e+01 Max:+2.7247719731829164e+01 RMS:+7.7003410130506966e-01 -northward_wind | Min:-2.2266548354929135e+01 Max:+2.4111106836816546e+01 RMS:+7.7874592260732178e-01 -air_temperature | Min:-1.0204740456386372e+01 Max:+1.0612363461439131e+01 RMS:+3.2383456606394428e-01 -water_vapor_mixing_ratio_wrt_moist_air | Min:-1.0075023053001828e-02 Max:+1.3216991071147419e-02 RMS:+1.3161159034094137e-04 -cloud_liquid_ice | Min:-3.2384493993478425e-04 Max:+2.5782120798697029e-04 RMS:+3.5186992249237140e-06 -cloud_liquid_water | Min:-1.3410840615217380e-03 Max:+1.0793991164780980e-03 RMS:+1.2675198989331570e-05 -ozone_mass_mixing_ratio | Min:-1.7321578649115885e-06 Max:+2.2122365151317159e-06 RMS:+3.4501654041399942e-08 -air_pressure_thickness | Min:-3.7230194720905274e-05 Max:+3.0984621844254434e-05 RMS:+9.4295307947072803e-07 -layer_thickness | Min:-5.0314572597610095e+01 Max:+3.1207257614340051e+01 RMS:+6.5903625246599373e-01 +eastward_wind | Min:-2.6755148704831090e+01 Max:+2.7445134265820300e+01 RMS:+7.6898038333711749e-01 +northward_wind | Min:-2.2178789491077385e+01 Max:+2.4185475371090597e+01 RMS:+7.7710948888854692e-01 +air_temperature | Min:-1.0784516433515279e+01 Max:+1.0549022663102676e+01 RMS:+3.2384375878820826e-01 +water_vapor_mixing_ratio_wrt_moist_air | Min:-1.0021503370922452e-02 Max:+1.3243901954678224e-02 RMS:+1.3115100578902817e-04 +cloud_liquid_ice | Min:-3.2925003109779221e-04 Max:+3.0772213252633877e-04 RMS:+3.4572125152726005e-06 +cloud_liquid_water | Min:-1.3730991635473452e-03 Max:+1.0331594047075395e-03 RMS:+1.3213296694607966e-05 +ozone_mass_mixing_ratio | Min:-1.7236144371589322e-06 Max:+2.2084475912612794e-06 RMS:+3.4502781461392678e-08 +air_pressure_thickness | Min:-3.6899298720527440e-05 Max:+3.1017312721814960e-05 RMS:+9.4266922617364414e-07 +layer_thickness | Min:-5.0014265823861933e+01 Max:+3.0898151477016654e+01 RMS:+6.5848460245493412e-01 ---------------------------------------------------------------------------------------------------- Background State for member 1: ---------------------------------------------------------------------------------------------------- State print | number of fields = 9 | cube sphere face size: C48 -eastward_wind | Min:-8.5966735839843750e+01 Max:+1.1211631774902344e+02 RMS:+1.7425666524535583e+01 -northward_wind | Min:-8.5594192504882812e+01 Max:+8.9450973510742188e+01 RMS:+1.0012910607932993e+01 -air_temperature | Min:+1.7322386169433594e+02 Max:+3.1173611450195312e+02 RMS:+2.5015480177211401e+02 -air_pressure_at_surface | Min:+5.2300289062500000e+04 Max:+1.0443091406250000e+05 RMS:+9.8912612346289476e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+1.7588122958045460e-08 Max:+2.1704806014895439e-02 RMS:+4.9960608009716814e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.2980920989066362e-04 RMS:+9.7698907168770129e-06 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.4689513482153416e-03 RMS:+3.5167035611299903e-05 -ozone_mass_mixing_ratio | Min:+2.9807353807420611e-10 Max:+1.7195472537423484e-05 RMS:+4.4692040486361164e-06 +eastward_wind | Min:-8.5966087341308594e+01 Max:+1.1214591979980469e+02 RMS:+1.7425599693772437e+01 +northward_wind | Min:-8.5568969726562500e+01 Max:+8.9453910827636719e+01 RMS:+1.0012870700458961e+01 +air_temperature | Min:+1.7322422790527344e+02 Max:+3.1173190307617188e+02 RMS:+2.5015468888662974e+02 +air_pressure_at_surface | Min:+5.2301363281250000e+04 Max:+1.0443097656250000e+05 RMS:+9.8912628070817751e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+1.7570943811051620e-08 Max:+2.1611798554658890e-02 RMS:+4.9962964224344337e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.2922049760818481e-04 RMS:+9.7733563609262597e-06 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.4694335404783487e-03 RMS:+3.5085536774868749e-05 +ozone_mass_mixing_ratio | Min:+2.9826621728012981e-10 Max:+1.7195881810039282e-05 RMS:+4.4692050652263310e-06 geopotential_height_at_surface | Min:-2.7018375396728516e+01 Max:+5.2697558593750000e+03 RMS:+6.3772571434211386e+02 ---------------------------------------------------------------------------------------------------- JEDI Increment for member 1: ---------------------------------------------------------------------------------------------------- Increment print | number of fields = 8 | cube sphere face size: C48 -eastward_wind | Min:-2.7118603154153071e+01 Max:+2.5039255461317936e+01 RMS:+7.9016696986758683e-01 -northward_wind | Min:-1.9134521911266908e+01 Max:+1.8052220490594621e+01 RMS:+8.1416259656824774e-01 -air_temperature | Min:-1.0334410919697632e+01 Max:+1.0023267385714213e+01 RMS:+3.2993662752227909e-01 -air_pressure_at_surface | Min:-1.7015457730735761e-03 Max:+1.4328894367281464e-03 RMS:+8.3597529649529631e-05 -water_vapor_mixing_ratio_wrt_moist_air | Min:-1.0940498213010061e-02 Max:+1.4176037926216224e-02 RMS:+1.3345901067359821e-04 -cloud_liquid_ice | Min:-2.7333859171390946e-04 Max:+4.8852641654798684e-04 RMS:+3.6400194778040982e-06 -cloud_liquid_water | Min:-1.1354531767787950e-03 Max:+1.0641496243961217e-03 RMS:+1.3080375599165519e-05 -ozone_mass_mixing_ratio | Min:-1.8008616277179968e-06 Max:+2.4391037763833551e-06 RMS:+3.6841977469037158e-08 +eastward_wind | Min:-2.6410153938847341e+01 Max:+2.5235761322385869e+01 RMS:+7.8807971535887589e-01 +northward_wind | Min:-1.9157350680375867e+01 Max:+1.8014563258468129e+01 RMS:+8.1243167055864374e-01 +air_temperature | Min:-1.0920589024778607e+01 Max:+9.9577809464591880e+00 RMS:+3.3031798515011768e-01 +air_pressure_at_surface | Min:-1.6866912601756212e-03 Max:+1.4343651471904195e-03 RMS:+8.3571864435256723e-05 +water_vapor_mixing_ratio_wrt_moist_air | Min:-1.0886759940962830e-02 Max:+1.4203573478151255e-02 RMS:+1.3382079171167500e-04 +cloud_liquid_ice | Min:-4.8110709002814226e-04 Max:+4.7713624443900487e-04 RMS:+3.6873612628849232e-06 +cloud_liquid_water | Min:-1.4786335187316954e-03 Max:+1.0680992980876744e-03 RMS:+1.3548790780449636e-05 +ozone_mass_mixing_ratio | Min:-1.7924423988974384e-06 Max:+2.4353626139035565e-06 RMS:+3.6860276654647647e-08 ---------------------------------------------------------------------------------------------------- FV3 Increment for member 1: ---------------------------------------------------------------------------------------------------- Increment print | number of fields = 9 | cube sphere face size: C48 -eastward_wind | Min:-2.7118603154153071e+01 Max:+2.5039255461317936e+01 RMS:+7.9016696986758683e-01 -northward_wind | Min:-1.9134521911266908e+01 Max:+1.8052220490594621e+01 RMS:+8.1416259656824774e-01 -air_temperature | Min:-1.0334410919697632e+01 Max:+1.0023267385714213e+01 RMS:+3.2993662752227909e-01 -water_vapor_mixing_ratio_wrt_moist_air | Min:-1.0940498213010061e-02 Max:+1.4176037926216224e-02 RMS:+1.3345901067359821e-04 -cloud_liquid_ice | Min:-2.7333859171390946e-04 Max:+4.8852641654798684e-04 RMS:+3.6400194778040982e-06 -cloud_liquid_water | Min:-1.1354531767787950e-03 Max:+1.0641496243961217e-03 RMS:+1.3080375599165519e-05 -ozone_mass_mixing_ratio | Min:-1.8008616277179968e-06 Max:+2.4391037763833551e-06 RMS:+3.6841977469037158e-08 -air_pressure_thickness | Min:-3.8087571738287807e-05 Max:+3.2073941838461906e-05 RMS:+9.4342063209947081e-07 -layer_thickness | Min:-4.7521592877819785e+01 Max:+3.1680899109200254e+01 RMS:+6.5375317024288038e-01 +eastward_wind | Min:-2.6410153938847341e+01 Max:+2.5235761322385869e+01 RMS:+7.8807971535887589e-01 +northward_wind | Min:-1.9157350680375867e+01 Max:+1.8014563258468129e+01 RMS:+8.1243167055864374e-01 +air_temperature | Min:-1.0920589024778607e+01 Max:+9.9577809464591880e+00 RMS:+3.3031798515011768e-01 +water_vapor_mixing_ratio_wrt_moist_air | Min:-1.0886759940962830e-02 Max:+1.4203573478151255e-02 RMS:+1.3382079171167500e-04 +cloud_liquid_ice | Min:-4.8110709002814226e-04 Max:+4.7713624443900487e-04 RMS:+3.6873612628849232e-06 +cloud_liquid_water | Min:-1.4786335187316954e-03 Max:+1.0680992980876744e-03 RMS:+1.3548790780449636e-05 +ozone_mass_mixing_ratio | Min:-1.7924423988974384e-06 Max:+2.4353626139035565e-06 RMS:+3.6860276654647647e-08 +air_pressure_thickness | Min:-3.7755067751277238e-05 Max:+3.2106974686030298e-05 RMS:+9.4313099320621716e-07 +layer_thickness | Min:-4.7211113345212652e+01 Max:+3.1397032813900296e+01 RMS:+6.5379246729521723e-01 ---------------------------------------------------------------------------------------------------- diff --git a/test/testreference/C96C48_ufs_hybatmDA_lgetkf_observer.ref b/test/testreference/C96C48_ufs_hybatmDA_lgetkf_observer.ref index e85f63696..db8872787 100644 --- a/test/testreference/C96C48_ufs_hybatmDA_lgetkf_observer.ref +++ b/test/testreference/C96C48_ufs_hybatmDA_lgetkf_observer.ref @@ -1,126 +1,126 @@ Initial state for member 1: ---------------------------------------------------------------------------------------------------- State print | number of fields = 23 | cube sphere face size: C48 -eastward_wind | Min:-8.4384330749511719e+01 Max:+1.1146717834472656e+02 RMS:+1.7423407399233511e+01 -northward_wind | Min:-8.6144805908203125e+01 Max:+8.9331993103027344e+01 RMS:+1.0017299694477179e+01 -air_temperature | Min:+1.7350303649902344e+02 Max:+3.0961535644531250e+02 RMS:+2.5015669840056216e+02 -layer_thickness | Min:-3.0059777832031250e+03 Max:-1.6207923889160156e+01 RMS:+9.8503674614826332e+02 -air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7881016845703125e+03 RMS:+9.5698921151558159e+02 -air_pressure_at_surface | Min:+5.2320046875000000e+04 Max:+1.0452482812500000e+05 RMS:+9.8914997456124955e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+1.6847316430812498e-08 Max:+2.2395884618163109e-02 RMS:+5.0107896876815721e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.1855275048874319e-04 RMS:+1.0354889627583219e-05 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.3839458115398884e-03 RMS:+3.5588872198565459e-05 -ozone_mass_mixing_ratio | Min:+1.1339260641562987e-09 Max:+1.7277885490329936e-05 RMS:+4.4686682637740296e-06 +eastward_wind | Min:-8.4381935119628906e+01 Max:+1.1147341156005859e+02 RMS:+1.7423562537923519e+01 +northward_wind | Min:-8.6138259887695312e+01 Max:+8.9330894470214844e+01 RMS:+1.0017174203028123e+01 +air_temperature | Min:+1.7350219726562500e+02 Max:+3.0963690185546875e+02 RMS:+2.5015657367644260e+02 +layer_thickness | Min:-3.0061401367187500e+03 Max:-1.6210416793823242e+01 RMS:+9.8503668496048681e+02 +air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7881135253906250e+03 RMS:+9.5698938964370029e+02 +air_pressure_at_surface | Min:+5.2319625000000000e+04 Max:+1.0452528906250000e+05 RMS:+9.8915012275401925e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+1.6836553484722572e-08 Max:+2.2505994886159897e-02 RMS:+5.0110427820345893e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.2010331526398659e-04 RMS:+1.0363528039971752e-05 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.3888616813346744e-03 RMS:+3.5573039146049825e-05 +ozone_mass_mixing_ratio | Min:+1.1367524699323894e-09 Max:+1.7277665392612107e-05 RMS:+4.4686688193802981e-06 geopotential_height_at_surface | Min:-2.7018375396728516e+01 Max:+5.2697558593750000e+03 RMS:+6.3772571434211386e+02 slmsk | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+00 RMS:+6.5462209907135938e-01 -sheleg | Min:+0.0000000000000000e+00 Max:+2.5217851257324219e+02 RMS:+2.2019818126018798e+01 -skin_temperature_at_surface | Min:+2.1759780883789062e+02 Max:+3.2456860351562500e+02 RMS:+2.8741259834843908e+02 +sheleg | Min:+0.0000000000000000e+00 Max:+2.5217852783203125e+02 RMS:+2.2019763739169889e+01 +skin_temperature_at_surface | Min:+2.1751763916015625e+02 Max:+3.2452719116210938e+02 RMS:+2.8741264670170318e+02 vtype | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+01 RMS:+6.1246929250310931e+00 stype | Min:+0.0000000000000000e+00 Max:+1.6000000000000000e+01 RMS:+4.5755536879077185e+00 vfrac | Min:+0.0000000000000000e+00 Max:+9.8551864624023438e+01 RMS:+2.0170282476619530e+01 -stc | Min:+2.0000000000000000e+02 Max:+3.1568060302734375e+02 RMS:+2.8817196445239324e+02 -soilMoistureVolumetric | Min:+2.1992070600390434e-02 Max:+1.0000000000000000e+00 RMS:+8.4975035958924516e-01 -totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0927191972732544e+00 RMS:+1.5092084570439257e-01 -eastward_wind_at_surface | Min:-1.8143459320068359e+01 Max:+2.0627843856811523e+01 RMS:+5.1169707890467366e+00 -northward_wind_at_surface | Min:-2.3821027755737305e+01 Max:+1.9497446060180664e+01 RMS:+4.8067548196805943e+00 -f10m | Min:+9.4103527069091797e-01 Max:+1.0685453414916992e+00 RMS:+9.9573423073115486e-01 +stc | Min:+2.0000000000000000e+02 Max:+3.1583361816406250e+02 RMS:+2.8817190409943424e+02 +soilMoistureVolumetric | Min:+2.1991550922393799e-02 Max:+1.0000000000000000e+00 RMS:+8.4975027049775798e-01 +totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0927191972732544e+00 RMS:+1.5092093358969108e-01 +eastward_wind_at_surface | Min:-1.8170446395874023e+01 Max:+2.1278623580932617e+01 RMS:+5.1168825419389767e+00 +northward_wind_at_surface | Min:-2.3760042190551758e+01 Max:+2.0148191452026367e+01 RMS:+4.8082957202774042e+00 +f10m | Min:+9.4115543365478516e-01 Max:+1.0684278011322021e+00 RMS:+9.9573250553770820e-01 ---------------------------------------------------------------------------------------------------- Initial state for member 2: ---------------------------------------------------------------------------------------------------- State print | number of fields = 23 | cube sphere face size: C48 -eastward_wind | Min:-8.5966735839843750e+01 Max:+1.1211631774902344e+02 RMS:+1.7425666524535583e+01 -northward_wind | Min:-8.5594192504882812e+01 Max:+8.9450973510742188e+01 RMS:+1.0012910607932993e+01 -air_temperature | Min:+1.7322386169433594e+02 Max:+3.1173611450195312e+02 RMS:+2.5015480177211401e+02 -layer_thickness | Min:-3.0079758300781250e+03 Max:-1.6234376907348633e+01 RMS:+9.8509317417150282e+02 -air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7860076904296875e+03 RMS:+9.5696337286916196e+02 -air_pressure_at_surface | Min:+5.2300289062500000e+04 Max:+1.0443091406250000e+05 RMS:+9.8912612346289476e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+1.7588122958045460e-08 Max:+2.1704806014895439e-02 RMS:+4.9960608009716806e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.2980920989066362e-04 RMS:+9.7698907168770146e-06 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.4689513482153416e-03 RMS:+3.5167035611299903e-05 -ozone_mass_mixing_ratio | Min:+2.9807353807420611e-10 Max:+1.7195472537423484e-05 RMS:+4.4692040486361164e-06 +eastward_wind | Min:-8.5966087341308594e+01 Max:+1.1214591979980469e+02 RMS:+1.7425599693772437e+01 +northward_wind | Min:-8.5568969726562500e+01 Max:+8.9453910827636719e+01 RMS:+1.0012870700458963e+01 +air_temperature | Min:+1.7322422790527344e+02 Max:+3.1173190307617188e+02 RMS:+2.5015468888662974e+02 +layer_thickness | Min:-3.0080390625000000e+03 Max:-1.6221441268920898e+01 RMS:+9.8509308795874222e+02 +air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7860113525390625e+03 RMS:+9.5696357050818563e+02 +air_pressure_at_surface | Min:+5.2301363281250000e+04 Max:+1.0443097656250000e+05 RMS:+9.8912628070817751e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+1.7570943811051620e-08 Max:+2.1611798554658890e-02 RMS:+4.9962964224344337e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.2922049760818481e-04 RMS:+9.7733563609262597e-06 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.4694335404783487e-03 RMS:+3.5085536774868749e-05 +ozone_mass_mixing_ratio | Min:+2.9826621728012981e-10 Max:+1.7195881810039282e-05 RMS:+4.4692050652263310e-06 geopotential_height_at_surface | Min:-2.7018375396728516e+01 Max:+5.2697558593750000e+03 RMS:+6.3772571434211386e+02 slmsk | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+00 RMS:+6.5462209907135938e-01 -sheleg | Min:+0.0000000000000000e+00 Max:+2.4906845092773438e+02 RMS:+2.2004970461687567e+01 -skin_temperature_at_surface | Min:+2.1673643493652344e+02 Max:+3.2559057617187500e+02 RMS:+2.8745909600453388e+02 +sheleg | Min:+0.0000000000000000e+00 Max:+2.4906773376464844e+02 RMS:+2.2005017974954740e+01 +skin_temperature_at_surface | Min:+2.1651719665527344e+02 Max:+3.2563174438476562e+02 RMS:+2.8745862236152567e+02 vtype | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+01 RMS:+6.1246929250310931e+00 stype | Min:+0.0000000000000000e+00 Max:+1.6000000000000000e+01 RMS:+4.5755536879077185e+00 vfrac | Min:+0.0000000000000000e+00 Max:+9.8551864624023438e+01 RMS:+2.0170282476619530e+01 -stc | Min:+2.0000000000000000e+02 Max:+3.1603344726562500e+02 RMS:+2.8817511849953127e+02 -soilMoistureVolumetric | Min:+2.1997468546032906e-02 Max:+1.0000000000000000e+00 RMS:+8.4973303187978066e-01 -totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0929538011550903e+00 RMS:+1.5094966458993353e-01 -eastward_wind_at_surface | Min:-1.9632795333862305e+01 Max:+2.2031156539916992e+01 RMS:+5.1474973436096771e+00 -northward_wind_at_surface | Min:-2.2859689712524414e+01 Max:+1.9478809356689453e+01 RMS:+4.7531537396512338e+00 -f10m | Min:+9.4079720973968506e-01 Max:+1.0689357519149780e+00 RMS:+9.9569948613238035e-01 +stc | Min:+2.0000000000000000e+02 Max:+3.1595724487304688e+02 RMS:+2.8817510472919753e+02 +soilMoistureVolumetric | Min:+2.1997323259711266e-02 Max:+1.0000000000000000e+00 RMS:+8.4973291977355625e-01 +totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0929540395736694e+00 RMS:+1.5094981321317086e-01 +eastward_wind_at_surface | Min:-1.9720079421997070e+01 Max:+2.2345537185668945e+01 RMS:+5.1457488184664619e+00 +northward_wind_at_surface | Min:-2.2769409179687500e+01 Max:+1.9396966934204102e+01 RMS:+4.7505626186338947e+00 +f10m | Min:+9.4070750474929810e-01 Max:+1.0689853429794312e+00 RMS:+9.9570180429785693e-01 ---------------------------------------------------------------------------------------------------- H(x) for member 1: -Aircraft nobs= 502771 Min=-80.55443499910179, Max=305.5072533751332, RMS=146.5850485230079 +Aircraft nobs= 502774 Min=-80.52688703818197, Max=305.4756140974109, RMS=146.5850912266714 -ascatw_ascat_metop-b nobs= 24988 Min=-14.90743210285059, Max=18.50735802131708, RMS=5.626101623328659 +ascatw_ascat_metop-b nobs= 24972 Min=-14.97150731725557, Max=18.59222631582299, RMS=5.627165086146203 -ATMS N20 nobs= 17107090 Min=129.7859007557375, Max=294.7571288275636, RMS=237.7675940436646 +ATMS N20 nobs= 17107090 Min=129.7979125777318, Max=294.748015146428, RMS=237.7681141030064 -surface_ps nobs= 199096 Min=481.5556154686088, Max=106952.1342381349, RMS=94358.04308199322 +surface_ps nobs= 199096 Min=482.3530572788997, Max=106952.1841934663, RMS=94358.02893089037 -gnssrobndnbam nobs= 792394 Min=3.54653995010946e-06, Max=0.05689811581521509, RMS=0.00729813001231048 +gnssrobndnbam nobs= 792396 Min=3.546380623890607e-06, Max=0.05865236134606326, RMS=0.007295936681788925 -ompsnp_npp nobs= 3652 Min=0.02233893266611933, Max=544.9735566336279, RMS=74.39666518228908 +ompsnp_npp nobs= 3652 Min=0.02233895704097705, Max=544.9716801848433, RMS=74.39669222502185 -ompstc_npp nobs= 29925 Min=232.08666141862, Max=578.874275460677, RMS=330.1687050473581 +ompstc_npp nobs= 29925 Min=232.1671140621541, Max=578.8735949356186, RMS=330.1688990810148 -satwind_goes-16 nobs= 192150 Min=-46.72026247379588, Max=73.49080322835941, RMS=13.50004896322415 +satwind_goes-16 nobs= 192150 Min=-46.73388629014798, Max=73.49052471774161, RMS=13.49994079700484 H(x) for member 2: -Aircraft nobs= 502771 Min=-83.52929132190421, Max=303.935382876328, RMS=146.5832501835669 +Aircraft nobs= 502774 Min=-83.50977510158438, Max=303.9081583779893, RMS=146.5836743742879 -ascatw_ascat_metop-b nobs= 24988 Min=-15.95012800292468, Max=19.32845599082289, RMS=5.590280602334444 +ascatw_ascat_metop-b nobs= 24972 Min=-15.9452064995462, Max=19.35646326739365, RMS=5.594172065839683 -ATMS N20 nobs= 17107090 Min=129.5870694672627, Max=294.7645909817928, RMS=237.7536249801317 +ATMS N20 nobs= 17107090 Min=129.597927951064, Max=294.7543239503619, RMS=237.7537725332559 -surface_ps nobs= 199096 Min=475.424805046184, Max=106814.5789947868, RMS=94338.64524856347 +surface_ps nobs= 199096 Min=475.4346559768398, Max=106815.2908050268, RMS=94338.51759672751 -gnssrobndnbam nobs= 792394 Min=3.535338326285228e-06, Max=0.05521000303350442, RMS=0.007290866963061116 +gnssrobndnbam nobs= 792396 Min=3.53531944084558e-06, Max=0.05504232119228934, RMS=0.007290074348817288 -ompsnp_npp nobs= 3652 Min=0.02236964099830396, Max=551.3730864849784, RMS=74.49227809990998 +ompsnp_npp nobs= 3652 Min=0.02236952634391419, Max=551.3696272280527, RMS=74.49290431963087 -ompstc_npp nobs= 29925 Min=232.3157492522477, Max=581.8884351421542, RMS=330.2400711699158 +ompstc_npp nobs= 29925 Min=232.2637157554366, Max=581.8883577567274, RMS=330.2398451750421 -satwind_goes-16 nobs= 192150 Min=-45.04364111939185, Max=72.45210083322863, RMS=13.31321129007812 +satwind_goes-16 nobs= 192150 Min=-45.04345261420303, Max=72.45073293453751, RMS=13.31522549257862 H(x) ensemble background mean: -Aircraft nobs= 670256 Min=-82.041863160503, Max=304.2592158533807, RMS=127.3605543707548 +Aircraft nobs= 670256 Min=-82.01833106988317, Max=304.2594069546965, RMS=127.3607013100371 -ascatw_ascat_metop-b nobs= 241220 Min=-15.81413469653508, Max=19.88922395519342, RMS=5.523473979723838 +ascatw_ascat_metop-b nobs= 241220 Min=-15.68963235075079, Max=19.92991820776015, RMS=5.523964770711358 -ATMS N20 nobs= 17107090 Min=129.6864851115001, Max=294.7608599046782, RMS=237.7603500470373 +ATMS N20 nobs= 17107090 Min=129.6979202643979, Max=294.751169548395, RMS=237.7606829611712 -surface_ps nobs= 199096 Min=486.4346696969737, Max=106883.3566164608, RMS=94348.33691646729 +surface_ps nobs= 199096 Min=487.1040468122645, Max=106883.7374992466, RMS=94348.2660116278 -gnssrobndnbam nobs= 792394 Min=3.540939138197344e-06, Max=0.04945358726186298, RMS=0.007290515506537144 +gnssrobndnbam nobs= 792396 Min=3.540850032368094e-06, Max=0.04986936990829795, RMS=0.007288979271240134 -ompsnp_npp nobs= 3652 Min=0.02235738516446045, Max=548.1733215593032, RMS=74.44382038546588 +ompsnp_npp nobs= 3652 Min=0.02235732977445982, Max=548.170653706448, RMS=74.44414609956667 -ompstc_npp nobs= 29925 Min=232.3457460802846, Max=580.3706053589909, RMS=330.2028035413688 +ompstc_npp nobs= 29925 Min=232.3594872699685, Max=580.3703615029328, RMS=330.2027869841414 -satwind_goes-16 nobs= 1605788 Min=-48.18299380448379, Max=74.78775267937297, RMS=10.02015189273681 +satwind_goes-16 nobs= 1605788 Min=-48.18851124449841, Max=74.78861376491878, RMS=10.02029611812022 background y - H(x): -Aircraft nobs= 514449 Min=-244.1546176605621, Max=114.0538314416612, RMS=3.825505485330922 +Aircraft nobs= 514449 Min=-244.1467098114697, Max=114.0025485386182, RMS=3.825349314118969 -ascatw_ascat_metop-b nobs= 241220 Min=-15.53489644753131, Max=19.32628866297402, RMS=2.327498313731722 +ascatw_ascat_metop-b nobs= 241220 Min=-15.49332374410524, Max=19.42541728513033, RMS=2.328319413300086 -ATMS N20 nobs= 17107090 Min=-139.4066954833384, Max=99999997810.8074, RMS=5096987910.765858 +ATMS N20 nobs= 17107090 Min=-139.4179788348109, Max=99999997810.81099, RMS=5096987910.765762 -surface_ps nobs= 116459 Min=-101684.8005703992, Max=75903.15428094343, RMS=2988.11265787499 +surface_ps nobs= 116459 Min=-101683.6161325038, Max=75904.41475640623, RMS=2988.090342492511 -gnssrobndnbam nobs= 791231 Min=-0.0302615994327759, Max=0.01662471709650585, RMS=0.0008693038108764198 +gnssrobndnbam nobs= 791233 Min=-0.02976546260592265, Max=0.01655246978054331, RMS=0.0008698553061021088 -ompsnp_npp nobs= 3652 Min=-30.64844591762643, Max=60.86103708368728, RMS=3.943997228450417 +ompsnp_npp nobs= 3652 Min=-30.64859598170479, Max=60.86158014936484, RMS=3.944311336450149 -ompstc_npp nobs= 28934 Min=-98.77455818390638, Max=716.7959660681558, RMS=17.05887006514246 +ompstc_npp nobs= 28934 Min=-98.77302432677061, Max=716.7980683684957, RMS=17.05901286939617 -satwind_goes-16 nobs= 1605788 Min=-51.62964751676423, Max=38.23192217860554, RMS=3.10218655904646 +satwind_goes-16 nobs= 1605788 Min=-51.49710944510686, Max=38.22800775116848, RMS=3.10195876364875 diff --git a/test/testreference/C96C48_ufs_hybatmDA_lgetkf_solver.ref b/test/testreference/C96C48_ufs_hybatmDA_lgetkf_solver.ref index 7c07c4dfa..1f8ac9fd5 100644 --- a/test/testreference/C96C48_ufs_hybatmDA_lgetkf_solver.ref +++ b/test/testreference/C96C48_ufs_hybatmDA_lgetkf_solver.ref @@ -1,180 +1,180 @@ Initial state for member 1: ---------------------------------------------------------------------------------------------------- State print | number of fields = 23 | cube sphere face size: C48 -eastward_wind | Min:-8.4384330749511719e+01 Max:+1.1146717834472656e+02 RMS:+1.7423407399233511e+01 -northward_wind | Min:-8.6144805908203125e+01 Max:+8.9331993103027344e+01 RMS:+1.0017299694477179e+01 -air_temperature | Min:+1.7350303649902344e+02 Max:+3.0961535644531250e+02 RMS:+2.5015669840056216e+02 -layer_thickness | Min:-3.0059777832031250e+03 Max:-1.6207923889160156e+01 RMS:+9.8503674614826332e+02 -air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7881016845703125e+03 RMS:+9.5698921151558159e+02 -air_pressure_at_surface | Min:+5.2320046875000000e+04 Max:+1.0452482812500000e+05 RMS:+9.8914997456124955e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+1.6847316430812498e-08 Max:+2.2395884618163109e-02 RMS:+5.0107896876815721e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.1855275048874319e-04 RMS:+1.0354889627583219e-05 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.3839458115398884e-03 RMS:+3.5588872198565459e-05 -ozone_mass_mixing_ratio | Min:+1.1339260641562987e-09 Max:+1.7277885490329936e-05 RMS:+4.4686682637740296e-06 +eastward_wind | Min:-8.4381935119628906e+01 Max:+1.1147341156005859e+02 RMS:+1.7423562537923519e+01 +northward_wind | Min:-8.6138259887695312e+01 Max:+8.9330894470214844e+01 RMS:+1.0017174203028123e+01 +air_temperature | Min:+1.7350219726562500e+02 Max:+3.0963690185546875e+02 RMS:+2.5015657367644260e+02 +layer_thickness | Min:-3.0061401367187500e+03 Max:-1.6210416793823242e+01 RMS:+9.8503668496048681e+02 +air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7881135253906250e+03 RMS:+9.5698938964370029e+02 +air_pressure_at_surface | Min:+5.2319625000000000e+04 Max:+1.0452528906250000e+05 RMS:+9.8915012275401925e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+1.6836553484722572e-08 Max:+2.2505994886159897e-02 RMS:+5.0110427820345893e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.2010331526398659e-04 RMS:+1.0363528039971752e-05 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.3888616813346744e-03 RMS:+3.5573039146049825e-05 +ozone_mass_mixing_ratio | Min:+1.1367524699323894e-09 Max:+1.7277665392612107e-05 RMS:+4.4686688193802981e-06 geopotential_height_at_surface | Min:-2.7018375396728516e+01 Max:+5.2697558593750000e+03 RMS:+6.3772571434211386e+02 slmsk | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+00 RMS:+6.5462209907135938e-01 -sheleg | Min:+0.0000000000000000e+00 Max:+2.5217851257324219e+02 RMS:+2.2019818126018798e+01 -skin_temperature_at_surface | Min:+2.1759780883789062e+02 Max:+3.2456860351562500e+02 RMS:+2.8741259834843908e+02 +sheleg | Min:+0.0000000000000000e+00 Max:+2.5217852783203125e+02 RMS:+2.2019763739169889e+01 +skin_temperature_at_surface | Min:+2.1751763916015625e+02 Max:+3.2452719116210938e+02 RMS:+2.8741264670170318e+02 vtype | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+01 RMS:+6.1246929250310931e+00 stype | Min:+0.0000000000000000e+00 Max:+1.6000000000000000e+01 RMS:+4.5755536879077185e+00 vfrac | Min:+0.0000000000000000e+00 Max:+9.8551864624023438e+01 RMS:+2.0170282476619530e+01 -stc | Min:+2.0000000000000000e+02 Max:+3.1568060302734375e+02 RMS:+2.8817196445239324e+02 -soilMoistureVolumetric | Min:+2.1992070600390434e-02 Max:+1.0000000000000000e+00 RMS:+8.4975035958924516e-01 -totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0927191972732544e+00 RMS:+1.5092084570439257e-01 -eastward_wind_at_surface | Min:-1.8143459320068359e+01 Max:+2.0627843856811523e+01 RMS:+5.1169707890467366e+00 -northward_wind_at_surface | Min:-2.3821027755737305e+01 Max:+1.9497446060180664e+01 RMS:+4.8067548196805943e+00 -f10m | Min:+9.4103527069091797e-01 Max:+1.0685453414916992e+00 RMS:+9.9573423073115486e-01 +stc | Min:+2.0000000000000000e+02 Max:+3.1583361816406250e+02 RMS:+2.8817190409943424e+02 +soilMoistureVolumetric | Min:+2.1991550922393799e-02 Max:+1.0000000000000000e+00 RMS:+8.4975027049775798e-01 +totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0927191972732544e+00 RMS:+1.5092093358969108e-01 +eastward_wind_at_surface | Min:-1.8170446395874023e+01 Max:+2.1278623580932617e+01 RMS:+5.1168825419389767e+00 +northward_wind_at_surface | Min:-2.3760042190551758e+01 Max:+2.0148191452026367e+01 RMS:+4.8082957202774042e+00 +f10m | Min:+9.4115543365478516e-01 Max:+1.0684278011322021e+00 RMS:+9.9573250553770820e-01 ---------------------------------------------------------------------------------------------------- Initial state for member 2: ---------------------------------------------------------------------------------------------------- State print | number of fields = 23 | cube sphere face size: C48 -eastward_wind | Min:-8.5966735839843750e+01 Max:+1.1211631774902344e+02 RMS:+1.7425666524535583e+01 -northward_wind | Min:-8.5594192504882812e+01 Max:+8.9450973510742188e+01 RMS:+1.0012910607932993e+01 -air_temperature | Min:+1.7322386169433594e+02 Max:+3.1173611450195312e+02 RMS:+2.5015480177211401e+02 -layer_thickness | Min:-3.0079758300781250e+03 Max:-1.6234376907348633e+01 RMS:+9.8509317417150282e+02 -air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7860076904296875e+03 RMS:+9.5696337286916196e+02 -air_pressure_at_surface | Min:+5.2300289062500000e+04 Max:+1.0443091406250000e+05 RMS:+9.8912612346289476e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+1.7588122958045460e-08 Max:+2.1704806014895439e-02 RMS:+4.9960608009716806e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.2980920989066362e-04 RMS:+9.7698907168770146e-06 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.4689513482153416e-03 RMS:+3.5167035611299903e-05 -ozone_mass_mixing_ratio | Min:+2.9807353807420611e-10 Max:+1.7195472537423484e-05 RMS:+4.4692040486361164e-06 +eastward_wind | Min:-8.5966087341308594e+01 Max:+1.1214591979980469e+02 RMS:+1.7425599693772437e+01 +northward_wind | Min:-8.5568969726562500e+01 Max:+8.9453910827636719e+01 RMS:+1.0012870700458963e+01 +air_temperature | Min:+1.7322422790527344e+02 Max:+3.1173190307617188e+02 RMS:+2.5015468888662974e+02 +layer_thickness | Min:-3.0080390625000000e+03 Max:-1.6221441268920898e+01 RMS:+9.8509308795874222e+02 +air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7860113525390625e+03 RMS:+9.5696357050818563e+02 +air_pressure_at_surface | Min:+5.2301363281250000e+04 Max:+1.0443097656250000e+05 RMS:+9.8912628070817751e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+1.7570943811051620e-08 Max:+2.1611798554658890e-02 RMS:+4.9962964224344337e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.2922049760818481e-04 RMS:+9.7733563609262597e-06 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.4694335404783487e-03 RMS:+3.5085536774868749e-05 +ozone_mass_mixing_ratio | Min:+2.9826621728012981e-10 Max:+1.7195881810039282e-05 RMS:+4.4692050652263310e-06 geopotential_height_at_surface | Min:-2.7018375396728516e+01 Max:+5.2697558593750000e+03 RMS:+6.3772571434211386e+02 slmsk | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+00 RMS:+6.5462209907135938e-01 -sheleg | Min:+0.0000000000000000e+00 Max:+2.4906845092773438e+02 RMS:+2.2004970461687567e+01 -skin_temperature_at_surface | Min:+2.1673643493652344e+02 Max:+3.2559057617187500e+02 RMS:+2.8745909600453388e+02 +sheleg | Min:+0.0000000000000000e+00 Max:+2.4906773376464844e+02 RMS:+2.2005017974954740e+01 +skin_temperature_at_surface | Min:+2.1651719665527344e+02 Max:+3.2563174438476562e+02 RMS:+2.8745862236152567e+02 vtype | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+01 RMS:+6.1246929250310931e+00 stype | Min:+0.0000000000000000e+00 Max:+1.6000000000000000e+01 RMS:+4.5755536879077185e+00 vfrac | Min:+0.0000000000000000e+00 Max:+9.8551864624023438e+01 RMS:+2.0170282476619530e+01 -stc | Min:+2.0000000000000000e+02 Max:+3.1603344726562500e+02 RMS:+2.8817511849953127e+02 -soilMoistureVolumetric | Min:+2.1997468546032906e-02 Max:+1.0000000000000000e+00 RMS:+8.4973303187978066e-01 -totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0929538011550903e+00 RMS:+1.5094966458993353e-01 -eastward_wind_at_surface | Min:-1.9632795333862305e+01 Max:+2.2031156539916992e+01 RMS:+5.1474973436096771e+00 -northward_wind_at_surface | Min:-2.2859689712524414e+01 Max:+1.9478809356689453e+01 RMS:+4.7531537396512338e+00 -f10m | Min:+9.4079720973968506e-01 Max:+1.0689357519149780e+00 RMS:+9.9569948613238035e-01 +stc | Min:+2.0000000000000000e+02 Max:+3.1595724487304688e+02 RMS:+2.8817510472919753e+02 +soilMoistureVolumetric | Min:+2.1997323259711266e-02 Max:+1.0000000000000000e+00 RMS:+8.4973291977355625e-01 +totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0929540395736694e+00 RMS:+1.5094981321317086e-01 +eastward_wind_at_surface | Min:-1.9720079421997070e+01 Max:+2.2345537185668945e+01 RMS:+5.1457488184664619e+00 +northward_wind_at_surface | Min:-2.2769409179687500e+01 Max:+1.9396966934204102e+01 RMS:+4.7505626186338947e+00 +f10m | Min:+9.4070750474929810e-01 Max:+1.0689853429794312e+00 RMS:+9.9570180429785693e-01 ---------------------------------------------------------------------------------------------------- H(x) for member 1: -Aircraft nobs= 502771 Min=-80.55443572998047, Max=305.5072631835938, RMS=146.5850485206547 +Aircraft nobs= 502774 Min=-80.52688598632812, Max=305.4756164550781, RMS=146.5850912394751 -ascatw_ascat_metop-b nobs= 24988 Min=-14.90743255615234, Max=18.50735855102539, RMS=5.626101621409232 +ascatw_ascat_metop-b nobs= 24972 Min=-14.97150707244873, Max=18.59222602844238, RMS=5.62716508579711 -ATMS N20 nobs= 17107090 Min=129.7859039306641, Max=294.7571411132812, RMS=237.7675940456118 +ATMS N20 nobs= 17107090 Min=129.7979125976562, Max=294.7480163574219, RMS=237.7681141040336 -surface_ps nobs= 199096 Min=481.5556030273438, Max=106952.1328125, RMS=94358.04310219502 +surface_ps nobs= 199096 Min=482.3530578613281, Max=106952.1875, RMS=94358.02892149292 -gnssrobndnbam nobs= 792394 Min=3.546540028764866e-06, Max=0.05689811706542969, RMS=0.007298130011564753 +gnssrobndnbam nobs= 792396 Min=3.546380639818381e-06, Max=0.0586523599922657, RMS=0.0072959366825055 -ompsnp_npp nobs= 3652 Min=0.02233893238008022, Max=544.9735717773438, RMS=74.39666527674214 +ompsnp_npp nobs= 3652 Min=0.02233895659446716, Max=544.9716796875, RMS=74.39669225492921 -ompstc_npp nobs= 29925 Min=232.0866546630859, Max=578.874267578125, RMS=330.1687049872166 +ompstc_npp nobs= 29925 Min=232.1671142578125, Max=578.8735961914062, RMS=330.1688989797257 -satwind_goes-16 nobs= 192150 Min=-46.72026062011719, Max=73.49080657958984, RMS=13.50004896377961 +satwind_goes-16 nobs= 192150 Min=-46.73388671875, Max=73.49052429199219, RMS=13.49994079676702 H(x) for member 2: -Aircraft nobs= 502771 Min=-83.52928924560547, Max=303.9353942871094, RMS=146.5832501984888 +Aircraft nobs= 502774 Min=-83.50977325439453, Max=303.9081726074219, RMS=146.5836743666871 -ascatw_ascat_metop-b nobs= 24988 Min=-15.95012760162354, Max=19.32845687866211, RMS=5.590280603593994 +ascatw_ascat_metop-b nobs= 24972 Min=-15.94520664215088, Max=19.3564624786377, RMS=5.594172063865287 -ATMS N20 nobs= 17107090 Min=129.5870666503906, Max=294.7645874023438, RMS=237.7536249814979 +ATMS N20 nobs= 17107090 Min=129.5979309082031, Max=294.7543334960938, RMS=237.7537725343049 -surface_ps nobs= 199096 Min=475.4248046875, Max=106814.578125, RMS=94338.64525474468 +surface_ps nobs= 199096 Min=475.4346618652344, Max=106815.2890625, RMS=94338.51762073471 -gnssrobndnbam nobs= 792394 Min=3.53533823727048e-06, Max=0.05521000176668167, RMS=0.007290866961668531 +gnssrobndnbam nobs= 792396 Min=3.535319365255418e-06, Max=0.0550423227250576, RMS=0.007290074349441779 -ompsnp_npp nobs= 3652 Min=0.02236964181065559, Max=551.3731079101562, RMS=74.49227830514708 +ompsnp_npp nobs= 3652 Min=0.02236952632665634, Max=551.36962890625, RMS=74.49290437483097 -ompstc_npp nobs= 29925 Min=232.3157501220703, Max=581.888427734375, RMS=330.2400711798879 +ompstc_npp nobs= 29925 Min=232.2637176513672, Max=581.8883666992188, RMS=330.2398452061242 -satwind_goes-16 nobs= 192150 Min=-45.04364013671875, Max=72.45210266113281, RMS=13.31321128986013 +satwind_goes-16 nobs= 192150 Min=-45.04345321655273, Max=72.45072937011719, RMS=13.31522549128388 H(x) ensemble background mean: -Aircraft nobs= 502771 Min=-82.04186248779297, Max=304.2592163085938, RMS=146.582395066166 +Aircraft nobs= 502774 Min=-82.01832962036133, Max=304.2594146728516, RMS=146.5826289292741 -ascatw_ascat_metop-b nobs= 24988 Min=-15.35133123397827, Max=18.91790771484375, RMS=5.590053671147163 +ascatw_ascat_metop-b nobs= 24972 Min=-15.30188179016113, Max=18.95062828063965, RMS=5.592606120496843 -ATMS N20 nobs= 17107090 Min=129.6864852905273, Max=294.7608642578125, RMS=237.7603500486925 +ATMS N20 nobs= 17107090 Min=129.6979217529297, Max=294.7511749267578, RMS=237.7606829622101 -surface_ps nobs= 199096 Min=486.4346618652344, Max=106883.35546875, RMS=94348.33692965737 +surface_ps nobs= 199096 Min=487.1040496826172, Max=106883.73828125, RMS=94348.26601893629 -gnssrobndnbam nobs= 792394 Min=3.540939133017673e-06, Max=0.04945358820259571, RMS=0.007290515505449794 +gnssrobndnbam nobs= 792396 Min=3.540850002536899e-06, Max=0.04986936971545219, RMS=0.007288979271877694 -ompsnp_npp nobs= 3652 Min=0.02235738560557365, Max=548.17333984375, RMS=74.44382053535134 +ompsnp_npp nobs= 3652 Min=0.02235732972621918, Max=548.170654296875, RMS=74.44414614227075 -ompstc_npp nobs= 29925 Min=232.3457412719727, Max=580.37060546875, RMS=330.2028035163413 +ompstc_npp nobs= 29925 Min=232.359489440918, Max=580.370361328125, RMS=330.2027869490538 -satwind_goes-16 nobs= 192150 Min=-45.88195037841797, Max=72.75027465820312, RMS=13.36167441823028 +satwind_goes-16 nobs= 192150 Min=-45.88866996765137, Max=72.75020217895508, RMS=13.36273267218127 background y - H(x): -Aircraft nobs= 502771 Min=-18.89637756347656, Max=18.92713928222656, RMS=3.217299765305571 +Aircraft nobs= 502774 Min=-18.89226531982422, Max=18.92750930786133, RMS=3.217484448211873 -ascatw_ascat_metop-b nobs= 24988 Min=-4.990096844732761, Max=4.997781611979008, RMS=1.78136290653079 +ascatw_ascat_metop-b nobs= 24972 Min=-4.998656421899796, Max=4.998543858528137, RMS=1.781285394555728 -ATMS N20 nobs= 17107090 Min=-139.4066925048828, Max=99999997810.8074, RMS=5096987910.765857 +ATMS N20 nobs= 17107090 Min=-139.4179840087891, Max=99999997810.81099, RMS=5096987910.765761 -surface_ps nobs= 116459 Min=-101684.80078125, Max=75903.154296875, RMS=2988.112660654301 +surface_ps nobs= 116459 Min=-101683.6171875, Max=75904.4150390625, RMS=2988.090322213662 -gnssrobndnbam nobs= 791231 Min=-0.03026160039007664, Max=0.01662471704185009, RMS=0.000869303809760421 +gnssrobndnbam nobs= 791233 Min=-0.02976546250283718, Max=0.01655246969312429, RMS=0.0008698553066247312 -ompsnp_npp nobs= 3652 Min=-30.64844512939453, Max=60.86103820800781, RMS=3.943997189932038 +ompsnp_npp nobs= 3652 Min=-30.64859771728516, Max=60.86158752441406, RMS=3.944311410242143 -ompstc_npp nobs= 28934 Min=-98.7745361328125, Max=716.7959594726562, RMS=17.05887006085864 +ompstc_npp nobs= 28934 Min=-98.77304077148438, Max=716.7980804443359, RMS=17.05901287422818 -satwind_goes-16 nobs= 192150 Min=-17.58694839477539, Max=18.68439626693726, RMS=3.267043143712932 +satwind_goes-16 nobs= 192150 Min=-17.57823753356934, Max=18.68558120727539, RMS=3.266693383014099 Background mean : ---------------------------------------------------------------------------------------------------- State print | number of fields = 23 | cube sphere face size: C48 -eastward_wind | Min:-8.5175533294677734e+01 Max:+1.1179174804687500e+02 RMS:+1.7400557939433298e+01 -northward_wind | Min:-8.5735511779785156e+01 Max:+8.9157825469970703e+01 RMS:+9.9701645189144461e+00 -air_temperature | Min:+1.7338398742675781e+02 Max:+3.1067573547363281e+02 RMS:+2.5015547362929473e+02 -layer_thickness | Min:-3.0054658203125000e+03 Max:-1.6221150398254395e+01 RMS:+9.8506306362137718e+02 -air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7870546875000000e+03 RMS:+9.5697619937906575e+02 -air_pressure_at_surface | Min:+5.2310167968750000e+04 Max:+1.0447787109375000e+05 RMS:+9.8913797930278190e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+2.9691944014587079e-08 Max:+2.1115131676197052e-02 RMS:+4.9994705712860729e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+3.6185300268698484e-04 RMS:+9.3862057121105856e-06 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.2367462622933090e-03 RMS:+3.1415946634547486e-05 -ozone_mass_mixing_ratio | Min:+7.5237392704874395e-10 Max:+1.7233576727448963e-05 RMS:+4.4688532813447449e-06 +eastward_wind | Min:-8.5174011230468750e+01 Max:+1.1180966567993164e+02 RMS:+1.7400608166952363e+01 +northward_wind | Min:-8.5721366882324219e+01 Max:+8.9159130096435547e+01 RMS:+9.9701196901312930e+00 +air_temperature | Min:+1.7338367462158203e+02 Max:+3.1068440246582031e+02 RMS:+2.5015535491643763e+02 +layer_thickness | Min:-3.0056031494140625e+03 Max:-1.6219569206237793e+01 RMS:+9.8506299054041222e+02 +air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7870624389648438e+03 RMS:+9.5697638726610160e+02 +air_pressure_at_surface | Min:+5.2310494140625000e+04 Max:+1.0447813281250000e+05 RMS:+9.8913813202294172e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+2.9699791959103550e-08 Max:+2.1151660010218620e-02 RMS:+4.9997254551270454e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+3.7693076592404395e-04 RMS:+9.3960454614081343e-06 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.2183884391561151e-03 RMS:+3.1354590436484046e-05 +ozone_mass_mixing_ratio | Min:+7.5146595890362988e-10 Max:+1.7234122424270026e-05 RMS:+4.4688540296858567e-06 geopotential_height_at_surface | Min:-2.7018375396728516e+01 Max:+5.2697558593750000e+03 RMS:+6.3772571434211386e+02 slmsk | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+00 RMS:+6.5462209907135938e-01 -sheleg | Min:+0.0000000000000000e+00 Max:+2.4910437774658203e+02 RMS:+2.2007651817656669e+01 -skin_temperature_at_surface | Min:+2.1716712188720703e+02 Max:+3.2174871826171875e+02 RMS:+2.8743544448926787e+02 +sheleg | Min:+0.0000000000000000e+00 Max:+2.4910404968261719e+02 RMS:+2.2007648256514138e+01 +skin_temperature_at_surface | Min:+2.1701741790771484e+02 Max:+3.2172630310058594e+02 RMS:+2.8743523169966045e+02 vtype | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+01 RMS:+6.1246929250310931e+00 stype | Min:+0.0000000000000000e+00 Max:+1.6000000000000000e+01 RMS:+4.5755536879077185e+00 vfrac | Min:+0.0000000000000000e+00 Max:+9.8551864624023438e+01 RMS:+2.0170282476619530e+01 -stc | Min:+2.0000000000000000e+02 Max:+3.1577014160156250e+02 RMS:+2.8817349407786276e+02 -soilMoistureVolumetric | Min:+2.1994769573211670e-02 Max:+1.0000000000000000e+00 RMS:+8.4973696890011863e-01 -totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0928364992141724e+00 RMS:+1.5091512135815568e-01 -eastward_wind_at_surface | Min:-1.8888127326965332e+01 Max:+2.1329500198364258e+01 RMS:+5.1094029653114390e+00 -northward_wind_at_surface | Min:-2.3228111267089844e+01 Max:+1.8953988075256348e+01 RMS:+4.7537442465404594e+00 -f10m | Min:+9.4170856475830078e-01 Max:+1.0687405467033386e+00 RMS:+9.9571647867703006e-01 +stc | Min:+2.0000000000000000e+02 Max:+3.1589543151855469e+02 RMS:+2.8817345707140311e+02 +soilMoistureVolumetric | Min:+2.1994437091052532e-02 Max:+1.0000000000000000e+00 RMS:+8.4973686886486732e-01 +totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0928366184234619e+00 RMS:+1.5091517893438086e-01 +eastward_wind_at_surface | Min:-1.8945262908935547e+01 Max:+2.1812080383300781e+01 RMS:+5.1084993343462717e+00 +northward_wind_at_surface | Min:-2.3117747306823730e+01 Max:+1.9191046714782715e+01 RMS:+4.7533437996987020e+00 +f10m | Min:+9.4175148010253906e-01 Max:+1.0687065720558167e+00 RMS:+9.9571676746347482e-01 ---------------------------------------------------------------------------------------------------- Analysis mean : ---------------------------------------------------------------------------------------------------- State print | number of fields = 23 | cube sphere face size: C48 -eastward_wind | Min:-8.4774324321502988e+01 Max:+1.1170619450293722e+02 RMS:+1.7400375509763755e+01 -northward_wind | Min:-8.7214121288366655e+01 Max:+8.9233807495233577e+01 RMS:+9.9938074328966984e+00 -air_temperature | Min:+1.7338398731904834e+02 Max:+3.1021734492129713e+02 RMS:+2.5015182619184384e+02 -layer_thickness | Min:-3.0054658092822870e+03 Max:-1.6234013903099573e+01 RMS:+9.8506487778080520e+02 -air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7869309532732013e+03 RMS:+9.5697423778426378e+02 -air_pressure_at_surface | Min:+5.2310167956090001e+04 Max:+1.0447787101137359e+05 RMS:+9.8913797926518338e+04 -water_vapor_mixing_ratio_wrt_moist_air | Min:+0.0000000000000000e+00 Max:+2.1115131089317944e-02 RMS:+4.9974721017221301e-03 -cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.4276663301760246e-04 RMS:+9.6220406276590353e-06 -cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.3226195416814611e-03 RMS:+3.3209346549199534e-05 -ozone_mass_mixing_ratio | Min:+1.0218316416270972e-09 Max:+1.7364107739907706e-05 RMS:+4.4689530099725226e-06 +eastward_wind | Min:-8.4779904407685251e+01 Max:+1.1172180353384172e+02 RMS:+1.7399733262265904e+01 +northward_wind | Min:-8.7156319044549164e+01 Max:+8.9235399901256216e+01 RMS:+9.9932912802591378e+00 +air_temperature | Min:+1.7338367451587715e+02 Max:+3.1032383629093437e+02 RMS:+2.5015203636307027e+02 +layer_thickness | Min:-3.0056031368184022e+03 Max:-1.6220854925143144e+01 RMS:+9.8506512850054082e+02 +air_pressure_thickness | Min:+6.0599988698959351e-01 Max:+1.7869442799477661e+03 RMS:+9.5697446604705669e+02 +air_pressure_at_surface | Min:+5.2310494129060797e+04 Max:+1.0447813272925235e+05 RMS:+9.8913813198384218e+04 +water_vapor_mixing_ratio_wrt_moist_air | Min:+0.0000000000000000e+00 Max:+2.1151662580462943e-02 RMS:+4.9987623813820079e-03 +cloud_liquid_ice | Min:+0.0000000000000000e+00 Max:+4.1463521041293643e-04 RMS:+9.6091775193581227e-06 +cloud_liquid_water | Min:+0.0000000000000000e+00 Max:+1.3255527472700904e-03 RMS:+3.3246424078544267e-05 +ozone_mass_mixing_ratio | Min:+1.0289921087641953e-09 Max:+1.7333251806676826e-05 RMS:+4.4689522890690314e-06 geopotential_height_at_surface | Min:-2.7018375396728516e+01 Max:+5.2697558593750000e+03 RMS:+6.3772571434211386e+02 slmsk | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+00 RMS:+6.5462209907135938e-01 -sheleg | Min:+0.0000000000000000e+00 Max:+2.4910437774658203e+02 RMS:+2.2007651817656669e+01 -skin_temperature_at_surface | Min:+2.1716712188720703e+02 Max:+3.2174871826171875e+02 RMS:+2.8743544448926787e+02 +sheleg | Min:+0.0000000000000000e+00 Max:+2.4910404968261719e+02 RMS:+2.2007648256514138e+01 +skin_temperature_at_surface | Min:+2.1701741790771484e+02 Max:+3.2172630310058594e+02 RMS:+2.8743523169966045e+02 vtype | Min:+0.0000000000000000e+00 Max:+2.0000000000000000e+01 RMS:+6.1246929250310931e+00 stype | Min:+0.0000000000000000e+00 Max:+1.6000000000000000e+01 RMS:+4.5755536879077185e+00 vfrac | Min:+0.0000000000000000e+00 Max:+9.8551864624023438e+01 RMS:+2.0170282476619530e+01 -stc | Min:+2.0000000000000000e+02 Max:+3.1577014160156250e+02 RMS:+2.8817349407786276e+02 -soilMoistureVolumetric | Min:+2.1994769573211670e-02 Max:+1.0000000000000000e+00 RMS:+8.4973696890011863e-01 -totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0928364992141724e+00 RMS:+1.5091512135815568e-01 -eastward_wind_at_surface | Min:-1.8888127326965332e+01 Max:+2.1329500198364258e+01 RMS:+5.1094029653114390e+00 -northward_wind_at_surface | Min:-2.3228111267089844e+01 Max:+1.8953988075256348e+01 RMS:+4.7537442465404594e+00 -f10m | Min:+9.4170856475830078e-01 Max:+1.0687405467033386e+00 RMS:+9.9571647867703006e-01 +stc | Min:+2.0000000000000000e+02 Max:+3.1589543151855469e+02 RMS:+2.8817345707140311e+02 +soilMoistureVolumetric | Min:+2.1994437091052532e-02 Max:+1.0000000000000000e+00 RMS:+8.4973686886486732e-01 +totalSnowDepthMeters | Min:+0.0000000000000000e+00 Max:+1.0928366184234619e+00 RMS:+1.5091517893438086e-01 +eastward_wind_at_surface | Min:-1.8945262908935547e+01 Max:+2.1812080383300781e+01 RMS:+5.1084993343462717e+00 +northward_wind_at_surface | Min:-2.3117747306823730e+01 Max:+1.9191046714782715e+01 RMS:+4.7533437996987020e+00 +f10m | Min:+9.4175148010253906e-01 Max:+1.0687065720558167e+00 RMS:+9.9571676746347482e-01 ---------------------------------------------------------------------------------------------------- diff --git a/utils/soca/gdas_ens_handler.h b/utils/soca/gdas_ens_handler.h index 34ac8113e..4aa1f51f6 100644 --- a/utils/soca/gdas_ens_handler.h +++ b/utils/soca/gdas_ens_handler.h @@ -151,14 +151,14 @@ namespace gdasapp { oops::Log::info() << "recentered incr " << i << ":" << incr << std::endl; // Append the vertical geometry (for MOM6 IAU) - soca::Increment mom6_incr = postProcIncr.appendLayer(incr); - oops::Log::info() << "incr " << i << ":" << mom6_incr << std::endl; + postProcIncr.appendLayer(incr); + oops::Log::info() << "incr " << i << ":" << incr << std::endl; // Set variables to zero if specified in the configuration postProcIncr.setToZero(incr); // Save the increments used to initialize the ensemble forecast - result = postProcIncr.save(mom6_incr, i+1); + result = postProcIncr.save(incr, i+1); } return result; } diff --git a/utils/soca/gdas_incr_handler.h b/utils/soca/gdas_incr_handler.h index bb2eccdc6..30d2502fe 100644 --- a/utils/soca/gdas_incr_handler.h +++ b/utils/soca/gdas_incr_handler.h @@ -35,6 +35,10 @@ namespace gdasapp { oops::Log::info() << "geometry: " << std::endl << geomConfig << std::endl; const soca::Geometry geom(geomConfig, this->getComm()); + // Check that we are using at least 2 mpi tasks + if (this->getComm().size() < 2) { + throw eckit::BadValue("This application requires at least 2 MPI tasks", Here()); + } // Initialize the post processing PostProcIncr postProcIncr(fullConfig, geom, this->getComm()); @@ -50,18 +54,20 @@ namespace gdasapp { // Read increment from file soca::Increment incr = postProcIncr.read(i); - // At the very minimum, we run this script to append the layers state, so do that! - soca::Increment incrWithLayer = postProcIncr.appendLayer(incr); - oops::Log::debug() << "========= after appending layer:" << std::endl; - oops::Log::debug() << incrWithLayer << std::endl; + // Append variables to the increment + oops::Variables extraVars(postProcIncr.socaZeroIncrVar_); + extraVars += postProcIncr.layerVar_; + soca::Increment incr_mom6 = postProcIncr.appendVar(incr, extraVars); // Zero out specified fields - postProcIncr.setToZero(incrWithLayer); + postProcIncr.setToZero(incr_mom6); + oops::Log::debug() << "========= after appending variables:" << std::endl; + oops::Log::debug() << incr_mom6 << std::endl; // Save final increment - result = postProcIncr.save(incrWithLayer, i); + result = postProcIncr.save(incr_mom6, i); oops::Log::debug() << "========= after appending layer and after saving:" << std::endl; - oops::Log::debug() << incrWithLayer << std::endl; + oops::Log::debug() << incr_mom6 << std::endl; } return result; } diff --git a/utils/soca/gdas_postprocincr.h b/utils/soca/gdas_postprocincr.h index 5245412ad..b8638a7b8 100644 --- a/utils/soca/gdas_postprocincr.h +++ b/utils/soca/gdas_postprocincr.h @@ -92,42 +92,49 @@ class PostProcIncr { } // ----------------------------------------------------------------------------- - // Append layer thicknesses to increment - // TODO(guillaume): There's got to be a better way to append a variable. - soca::Increment appendLayer(const soca::Increment& socaIncr) { + // Append variable to increment + soca::Increment appendVar(const soca::Increment& socaIncr, const oops::Variables varToAppend) { oops::Log::info() << "==========================================" << std::endl; - oops::Log::info() << "====== Append Layers" << std::endl; + oops::Log::info() << "====== Append " << varToAppend << std::endl; // make a copy of the input increment soca::Increment socaIncrOut(socaIncr); // concatenate variables oops::Variables outputIncrVar(socaIncrVar_); - outputIncrVar += layerVar_; + outputIncrVar += varToAppend; oops::Log::debug() << "-------------------- outputIncrVar: " << std::endl; oops::Log::debug() << outputIncrVar << std::endl; - // append layer variable to the soca increment + // append variable to the soca increment atlas::FieldSet socaIncrFs; socaIncrOut.toFieldSet(socaIncrFs); socaIncrOut.updateFields(outputIncrVar); // pad layer increment with zeros - soca::Increment layerThick(Layers_); - atlas::FieldSet socaLayerThickFs; - oops::Log::debug() << "-------------------- thickness field: " << std::endl; - oops::Log::debug() << layerThick << std::endl; - layerThick.toFieldSet(socaLayerThickFs); - layerThick.updateFields(outputIncrVar); - - // append layer thinckness to increment - socaIncrOut += layerThick; + soca::Increment incrToAppend(Layers_); // Assumes that Layers_ contains varToAppend + atlas::FieldSet incrToAppendFs; + oops::Log::debug() << "-------------------- incrToAppend fields: " << std::endl; + oops::Log::debug() << incrToAppend << std::endl; + incrToAppend.toFieldSet(incrToAppendFs); + incrToAppend.updateFields(outputIncrVar); + + // append variables to increment + socaIncrOut += incrToAppend; oops::Log::debug() << "-------------------- output increment: " << std::endl; oops::Log::debug() << socaIncrOut << std::endl; return socaIncrOut; } + // ----------------------------------------------------------------------------- + // Append layer thicknesses to increment + soca::Increment appendLayer(soca::Increment& socaIncr) { + // Append layer thicknesses to the increment + soca::Increment socaIncrOut = appendVar(socaIncr, layerVar_); + return socaIncrOut; + } + // ----------------------------------------------------------------------------- // Set specified variables to 0 @@ -138,18 +145,18 @@ class PostProcIncr { return; } oops::Log::info() << "====== Set specified increment variables to 0.0" << std::endl; - std::cout << socaZeroIncrVar_ << std::endl; atlas::FieldSet socaIncrFs; socaIncr.toFieldSet(socaIncrFs); + for (auto & field : socaIncrFs) { // only works if rank is 2 ASSERT(field.rank() == 2); // Set variable to zero if (socaZeroIncrVar_.has(field.name())) { - std::cout << "setting " << field.name() << " to 0" << std::endl; + oops::Log::info() << "setting " << field.name() << " to 0" << std::endl; auto view = atlas::array::make_view(field); view.assign(0.0); } @@ -170,7 +177,7 @@ class PostProcIncr { soca::LinearVariableChange lvc(this->geom_, lvcConfig); lvc.changeVarTraj(xTraj, socaIncrVar_); lvc.changeVarTL(socaIncr, socaIncrVar_); - oops::Log::info() << "$%^#& in var change:" << socaIncr << std::endl; + oops::Log::info() << " in var change:" << socaIncr << std::endl; } // ----------------------------------------------------------------------------- @@ -179,6 +186,7 @@ class PostProcIncr { int save(soca::Increment& socaIncr, int ensMem = 1) { oops::Log::info() << "==========================================" << std::endl; oops::Log::info() << "-------------------- save increment: " << std::endl; + oops::Log::info() << socaIncr << std::endl; socaIncr.write(outputIncrConfig_); // wait for everybody to be done