From c1a8cdb29df2fd0df55683de781be0f8e642b4b2 Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Thu, 10 Dec 2020 20:41:50 -0500 Subject: [PATCH] coupled: updates for merging checkout, build and link with develop branch (#206) * update to waves scripts for merging with develop - synced with develop where necessary and left changes in prep and gridded post for coupled-crow updates that should remain * removing ecflow scripts that are not in develop branch * removing files from branch that do not appear in develop branch and were not added for coupling in the coupled-crow branch * updating sorc and ush files to match dev when these are not files changes intentionally in coupled-crow branch and therefore should match develop branch * updating files to match develop that were not matching through merge but should match develop branch * cleaning up evn files after merge with develop * cleaning up differences in jobs/rocoto folder from develop branch as it does not seem that the changes here were made intentionally in feature/coupled-crow so this brings us insync with the develop branch * resolving differences between develop and this branch in terms of wave variables for jobs/JGLOBAL_FORECAST * updating module file to match develop * updates for wave model so that the forecast runs -- atm post still does not work * fix typo * updating .gitignore to match develop a little better * cleaning up differences between checkout and link with merging to develop * updates for build and checkout scripts to unify with develop and simplify build_all to add an option for coupling * fix typo in build all script * updating .gitignore for linked files missing from list * add fix files for ocean post * changing -p to -c option and adding coupled to the ccpp -c --- .gitignore | 164 ++++++++++++++---- README.md | 7 +- sorc/build_all.sh | 48 +++++- sorc/checkout.sh | 175 +++++++++++--------- sorc/cpl_build.cfg | 25 +++ sorc/fv3gfs_build.cfg | 2 + sorc/link_fv3gfs.sh | 357 +++++++++++++++++++++------------------- sorc/partial_build.sh | 13 +- ush/forecast_postdet.sh | 3 - 9 files changed, 501 insertions(+), 293 deletions(-) create mode 100644 sorc/cpl_build.cfg diff --git a/.gitignore b/.gitignore index 7515cb055d..6335d0a568 100644 --- a/.gitignore +++ b/.gitignore @@ -1,41 +1,56 @@ +# Ignore all compiled files +#-------------------------- __pycache__ +*.pyc +*.o +*.mod + +# Ignore exec folder +#------------------- exec/ -fix + +# Ignore fix directory symlinks +#------------------------------ fix/0readme -fix/fix_am -fix/fix_chem -fix/fix_fv3 -fix/fix_fv3_gmted2010 -fix/fix_gldas -fix/fix_gsi -fix/fix_gsi_MISSING -fix/fix_orog -fix/fix_sfc_climo -fix/fix_verif -fix/fix_wave_gfs +fix/fix_* fix/gdas/ fix/wafs + +# Ignore scripts from external symlink jobs +#------------------------------ +jobs/JGDAS_ATMOS_ANALYSIS_DIAG +jobs/JGDAS_ATMOS_CHGRES_FORENKF +jobs/JGDAS_ATMOS_GLDAS +jobs/JGDAS_ATMOS_VERFOZN +jobs/JGDAS_ATMOS_VERFRAD +jobs/JGDAS_ATMOS_VMINMON +jobs/JGDAS_ENKF_DIAG +jobs/JGDAS_ENKF_ECEN jobs/JGDAS_ENKF_FCST jobs/JGDAS_ENKF_POST -jobs/JGDAS_ENKF_RECENTER -jobs/JGDAS_VERFOZN -jobs/JGDAS_VERFRAD -jobs/JGDAS_VMINMON -jobs/JGFS_VMINMON -jobs/JGFS_WAFS -jobs/JGFS_WAFS_BLENDING -jobs/JGFS_WAFS_GCIP -jobs/JGFS_WAFS_GRIB2 -jobs/JGLOBAL_ANALYSIS -jobs/JGLOBAL_ENKF_INNOVATE_OBS -jobs/JGLOBAL_ENKF_SELECT_OBS -jobs/JGLOBAL_ENKF_UPDATE -jobs/JGLOBAL_NCEPPOST -jobs/JGLOBAL_POST_MANAGER +jobs/JGDAS_ENKF_SELECT_OBS +jobs/JGDAS_ENKF_SFC +jobs/JGDAS_ENKF_UPDATE +jobs/JGFS_ATMOS_VMINMON +jobs/JGFS_ATMOS_WAFS +jobs/JGFS_ATMOS_WAFS_BLENDING +jobs/JGFS_ATMOS_WAFS_BLENDING_0P25 +jobs/JGFS_ATMOS_WAFS_GCIP +jobs/JGFS_ATMOS_WAFS_GRIB2 +jobs/JGFS_ATMOS_WAFS_GRIB2_0P25 +jobs/JGLOBAL_ATMOS_ANALYSIS +jobs/JGLOBAL_ATMOS_ANALYSIS_CALC +jobs/JGLOBAL_ATMOS_NCEPPOST +jobs/JGLOBAL_ATMOS_POST_MANAGER + +# Ignore parm file symlinks +#-------------------------- parm/config/config.base -parm/mon/ +parm/gldas +parm/mon parm/post parm/wafs + scripts/exemcsfc_global_sfc_prep.sh.ecf scripts/exgdas_nceppost.sh.ecf scripts/exgdas_vrfminmon.sh.ecf @@ -55,6 +70,45 @@ scripts/exglobal_enkf_recenter_fv3gfs.sh.ecf scripts/exglobal_enkf_update_fv3gfs.sh.ecf scripts/exglobal_innovate_obs_fv3gfs.sh.ecf scripts/exglobal_pmgr.sh.ecf +scripts/exemcsfc_global_sfc_prep.sh +scripts/exgdas_atmos_chgres_forenkf.sh +scripts/exgdas_atmos_gldas.sh +scripts/exgdas_atmos_nceppost.sh +scripts/exgdas_atmos_verfozn.sh +scripts/exgdas_atmos_verfrad.sh +scripts/exgdas_atmos_vminmon.sh +scripts/exgdas_enkf_ecen.sh +scripts/exgdas_enkf_fcst.sh +scripts/exgdas_enkf_post.sh +scripts/exgdas_enkf_select_obs.sh +scripts/exgdas_enkf_sfc.sh +scripts/exgdas_enkf_update.sh +scripts/exgfs_atmos_nceppost.sh +scripts/exgfs_atmos_vminmon.sh +scripts/exgfs_atmos_wafs_blending.sh +scripts/exgfs_atmos_wafs_blending_0p25.sh +scripts/exgfs_atmos_wafs_gcip.sh +scripts/exgfs_atmos_wafs_grib.sh +scripts/exgfs_atmos_wafs_grib2.sh +scripts/exgfs_atmos_wafs_grib2_0p25.sh +scripts/exglobal_atmos_analysis.sh +scripts/exglobal_atmos_analysis_calc.sh +scripts/exglobal_atmos_pmgr.sh +scripts/exglobal_diag.sh + +sorc/*log + +sorc/calc_analysis.fd +sorc/calc_increment_ens_ncio.fd +sorc/gdas2gldas.fd +sorc/gldas2gdas.fd +sorc/gldas_forcing.fd +sorc/gldas_model.fd +sorc/gldas_post.fd +sorc/gldas_rst.fd +sorc/interp_inc.fd +sorc/ncdiag_cat.fd +sorc/nemsio_chgdate.fd sorc/calc_increment_ens.fd sorc/checkout-fv3gfs.log sorc/checkout-ufs_coupled.log @@ -96,6 +150,7 @@ sorc/gfs_bufr.fd/vintg.o sorc/gfs_ncep_post.fd sorc/gfs_post.fd/ sorc/gfs_wafs.fd/ +sorc/gldas.fd/ sorc/global_chgres.fd sorc/global_cycle.fd sorc/global_enkf.fd @@ -130,6 +185,10 @@ sorc/wafs_setmissing.fd sorc/checkout-fv3_coupled.log sorc/checkout-gsi.fd.log sorc/fv3_coupled.fd/ + + +ush/calcanl_gfs.py +ush/calcinc_gfs.py ush/emcsfc_ice_blend.sh ush/emcsfc_snow.sh ush/fix_precip.sh @@ -140,17 +199,26 @@ ush/fv3gfs_dwn_nems.sh ush/fv3gfs_filter_topo.sh ush/fv3gfs_make_grid.sh ush/fv3gfs_make_orog.sh +ush/getncdimlen ush/gfs_nceppost.sh ush/gfs_transfer.sh +ush/gldas_archive.sh +ush/gldas_forcing.sh +ush/gldas_get_data.sh +ush/gldas_liscrd.sh +ush/gldas_post.sh +ush/gldas_process_data.sh ush/global_chgres.sh ush/global_chgres_driver.sh ush/global_cycle.sh ush/global_cycle_driver.sh +ush/gsi_utils.py ush/link_crtm_fix.sh ush/minmon_xtrct_costs.pl ush/minmon_xtrct_gnorms.pl ush/minmon_xtrct_reduct.pl ush/mkwfsgbl.sh +ush/mod_icec.sh ush/ozn_xtrct.sh ush/radmon_ck_stdout.sh ush/radmon_err_rpt.sh @@ -160,12 +228,44 @@ ush/radmon_verf_bcor.sh ush/radmon_verf_time.sh ush/trim_rh.sh ush/wafs_blending.sh +ush/wafs_grib2.regrid.sh ush/wafs_intdsk.sh +ush/emcsfc_ice_blend.sh +ush/emcsfc_snow.sh +ush/fix_precip.sh +ush/fv3gfs_chgres.sh +ush/fv3gfs_downstream_nems.sh +ush/fv3gfs_driver_grid.sh +ush/fv3gfs_dwn_nems.sh +ush/fv3gfs_filter_topo.sh +ush/fv3gfs_make_grid.sh +ush/fv3gfs_make_orog.sh +ush/gfs_nceppost.sh +ush/gfs_transfer.sh +ush/global_chgres.sh +ush/global_chgres_driver.sh +ush/global_cycle.sh +ush/global_cycle_driver.sh +ush/link_crtm_fix.sh +ush/minmon_xtrct_costs.pl +ush/minmon_xtrct_gnorms.pl +ush/minmon_xtrct_reduct.pl +ush/mkwfsgbl.sh +ush/ozn_xtrct.sh +ush/radmon_ck_stdout.sh +ush/radmon_err_rpt.sh +ush/radmon_verf_angle.sh +ush/radmon_verf_bcoef.sh +ush/radmon_verf_bcor.sh +ush/radmon_verf_time.sh +ush/trim_rh.sh +ush/wafs_blending.sh +ush/wafs_intdsk.sh + +# util symlinks util/sub_slurm util/sub_wcoss_c util/sub_wcoss_d + workflow/user.yaml -sorc/checkout-gldas.fd.log -sorc/gldas.fd/ -sorc/reg2grb2.fd/*.o -sorc/reg2grb2.fd/*.mod + diff --git a/README.md b/README.md index 527ef3447c..7937bc6089 100644 --- a/README.md +++ b/README.md @@ -10,14 +10,11 @@ cd coupled-workflow git checkout feature/coupled-crow git submodule update --init --recursive #Update submodules cd sorc -sh checkout.sh coupled # Check out the coupled code, EMC_post, gsi, ... +sh checkout.sh -c # Check out forecast model with CCPP=YES/COUPLED=YES ``` ## Compile code used in ufs-s2s-model and EMC_post and link fixed files and executable programs: ``` -sh build_ncep_post.sh #This command will build ncep_post -sh build_ww3prepost.sh #This command will build ww3 prep and post exes -sh build_ufs_coupled.sh #This command will build the UFS coupled model exe -sh build_reg2grb2.sh #This command will build exes for ocean-ice post +sh build_all.sh -c #This command will build only execs for coupled To link fixed files and executable programs for the coupled application: On Hera: diff --git a/sorc/build_all.sh b/sorc/build_all.sh index 4f8cfae730..e367860f45 100755 --- a/sorc/build_all.sh +++ b/sorc/build_all.sh @@ -13,8 +13,10 @@ while getopts "c" option; do case $option in c) - echo "Received -c flag, check out ufs-weather-model develop branch with CCPP physics" + echo "Received -c flag, build ufs-weather-model develop branch with CCPP physics" + echo "setting coupled=yes and skipping builds not needed for prototype runs" RUN_CCPP="YES" + COUPLED="YES" ;; esac done @@ -49,7 +51,6 @@ source ./machine-setup.sh > /dev/null 2>&1 #------------------------------------ # INCLUDE PARTIAL BUILD #------------------------------------ - . ./partial_build.sh #------------------------------------ @@ -67,11 +68,27 @@ echo " .... Library build not currently supported .... " #./build_libs.sh > $logs_dir/build_libs.log 2>&1 } + +#------------------------------------ +# build WW3 pre & post execs +#------------------------------------ +$Build_ww3_prepost && { +echo " .... Building WW3 pre and post execs .... " +./build_ww3prepost.sh > $logs_dir/build_ww3_prepost.log 2>&1 +rc=$? +if [[ $rc -ne 0 ]] ; then + echo "Fatal error in building WW3 pre/post processing." + echo "The log file is in $logs_dir/build_ww3_prepost.log" +fi +((err+=$rc)) +} + #------------------------------------ -# build fv3 +# build forecast model #------------------------------------ $Build_fv3gfs && { -echo " .... Building fv3 .... " +echo " .... Building forecast model .... " +if [ ${COUPLED:-"NO"} = "NO" ]; then export RUN_CCPP=${RUN_CCPP:-"NO"} ./build_fv3.sh > $logs_dir/build_fv3.log 2>&1 rc=$? @@ -80,6 +97,29 @@ if [[ $rc -ne 0 ]] ; then echo "The log file is in $logs_dir/build_fv3.log" fi ((err+=$rc)) +else +./build_ufs_coupled.sh > $logs_dir/build_ufs_coupled.log 2>&1 +rc=$? +if [[ $rc -ne 0 ]] ; then + echo "Fatal error in building ufs coupled forecast model." + echo "The log file is in $logs_dir/build_ufs_coupled.log" +fi +((err+=$rc)) +fi +} + +#------------------------------------ +# build reg2grb2 +#------------------------------------ +$Build_reg2grb2 && { +echo " .... Building reg2grb2 for ocean/ice post .... " +./build_reg2grb2.sh > $logs_dir/build_reg2grb2.log 2>&1 +rc=$? +if [[ $rc -ne 0 ]] ; then + echo "Fatal error in building reg2grb2." + echo "The log file is in $logs_dir/build_reg2grb2.log" +fi +((err+=$rc)) } #------------------------------------ diff --git a/sorc/checkout.sh b/sorc/checkout.sh index d4c3fdbe1a..7dc132127a 100755 --- a/sorc/checkout.sh +++ b/sorc/checkout.sh @@ -1,82 +1,93 @@ #!/bin/sh -set -xue +#set -xue +set -x + +while getopts "oc" option; +do + case $option in + o) + echo "Received -o flag for optional checkout of GTG, will check out GTG with EMC_post" + checkout_gtg="YES" + ;; + c) + echo "Received -c flag, check out ufs-weather-model develop branch with CCPP physics" + run_ccpp="YES" + echo "Also setting COUPLED to YES" + COUPLED="YES" + ;; + :) + echo "option -$OPTARG needs an argument" + ;; + *) + echo "invalid option -$OPTARG, exiting..." + exit + ;; + esac +done topdir=$(pwd) echo $topdir -if [ $# -eq 1 ]; then -model=$1 -fi -model=${model:-"uncoupled"} - -if [ $model = "coupled" ]; then -echo UFS coupled model checkout ... -rm -f ${topdir}/checkout-ufs_coupled.log - -if [[ ! -d ufs_coupled.fd ]] ; then - git clone https://github.com/ufs-community/ufs-weather-model ufs_coupled.fd >> ${topdir}/checkout-ufs_coupled.log 2>&1 - cd ufs_coupled.fd - #git checkout develop - #checkout develop branch hash from 11/9/2020: - git checkout 4e8ef6a879ceefb719cc9cebd8ac9c2208a58b16 - git submodule update --init --recursive - cd ${topdir} -else - echo 'Skip. Directory ufs_coupled.fd already exists.' -fi -fi - -if [ $model != "coupled" ]; then -echo fv3gfs checkout ... -if [[ ! -d fv3gfs.fd ]] ; then +echo ufs-weather-model checkout ... +if [ ${COUPLED:-"NO"} = "NO" ]; then + if [[ ! -d fv3gfs.fd ]] ; then rm -f ${topdir}/checkout-fv3gfs.log git clone https://github.com/ufs-community/ufs-weather-model fv3gfs.fd >> ${topdir}/checkout-fv3gfs.log 2>&1 cd fv3gfs.fd - git checkout GFS.v16.0.1 + if [ ${run_ccpp:-"NO"} = "NO" ]; then + git checkout GFS.v16.0.14 + else + git checkout 2e25df5fe952d27355ed58963148f46b82565469 + fi git submodule update --init --recursive cd ${topdir} -else + else echo 'Skip. Directory fv3gfs.fd already exists.' -fi + fi +else + if [[ ! -d ufs_coupled.fd ]] ; then + git clone https://github.com/ufs-community/ufs-weather-model ufs_coupled.fd >> ${topdir}/checkout-ufs_coupled.log 2>&1 + cd ufs_coupled.fd + git checkout 4e8ef6a879ceefb719cc9cebd8ac9c2208a58b16 + git submodule update --init --recursive + cd ${topdir} + else + echo 'Skip. Directory ufs_coupled.fd already exists.' + fi fi -if [ $model != "coupled" ]; then - echo gsi checkout ... - if [[ ! -d gsi.fd ]] ; then - rm -f ${topdir}/checkout-gsi.log - git clone --recursive gerrit:ProdGSI gsi.fd >> ${topdir}/checkout-gsi.log 2>&1 - cd gsi.fd -# git checkout gfsda.v16.0.0 - git checkout feature/parallel_ncio - git submodule update - cd ${topdir} - else - echo 'Skip. Directory gsi.fd already exists.' - fi +echo gsi checkout ... +if [[ ! -d gsi.fd ]] ; then + rm -f ${topdir}/checkout-gsi.log + git clone --recursive https://github.com/NOAA-EMC/GSI.git gsi.fd >> ${topdir}/checkout-gsi.log 2>&1 + cd gsi.fd + git checkout gfsda.v16.0.0 + git submodule update + cd ${topdir} +else + echo 'Skip. Directory gsi.fd already exists.' fi echo gldas checkout ... if [[ ! -d gldas.fd ]] ; then rm -f ${topdir}/checkout-gldas.log - git clone https://github.com/NOAA-EMC/GLDAS gldas.fd >> ${topdir}/checkout-gldas.fd.log 2>&1 + git clone https://github.com/NOAA-EMC/GLDAS.git gldas.fd >> ${topdir}/checkout-gldas.fd.log 2>&1 cd gldas.fd - git checkout gldas_gfsv16_release.v1.0.0 + git checkout gldas_gfsv16_release.v1.11.0 cd ${topdir} else echo 'Skip. Directory gldas.fd already exists.' fi -if [ $model != "coupled" ]; then - echo ufs_utils checkout ... - if [[ ! -d ufs_utils.fd ]] ; then - rm -f ${topdir}/checkout-ufs_utils.log - git clone https://github.com/NOAA-EMC/UFS_UTILS.git ufs_utils.fd >> ${topdir}/checkout-ufs_utils.fd.log 2>&1 - cd ufs_utils.fd - git checkout release/ops-gfsv16 - cd ${topdir} - else - echo 'Skip. Directory ufs_utils.fd already exists.' - fi +echo ufs_utils checkout ... +if [[ ! -d ufs_utils.fd ]] ; then + rm -f ${topdir}/checkout-ufs_utils.log + git clone https://github.com/NOAA-EMC/UFS_UTILS.git ufs_utils.fd >> ${topdir}/checkout-ufs_utils.fd.log 2>&1 + cd ufs_utils.fd + git checkout ops-gfsv16.0.0 + cd ${topdir} +else + echo 'Skip. Directory ufs_utils.fd already exists.' fi echo EMC_post checkout ... @@ -84,36 +95,44 @@ if [[ ! -d gfs_post.fd ]] ; then rm -f ${topdir}/checkout-gfs_post.log git clone https://github.com/NOAA-EMC/EMC_post.git gfs_post.fd >> ${topdir}/checkout-gfs_post.log 2>&1 cd gfs_post.fd - git checkout upp_gfsv16_release.v1.0.8 + git checkout upp_gfsv16_release.v1.1.0 + ################################################################################ + # checkout_gtg + ## yes: The gtg code at NCAR private repository is available for ops. GFS only. + # Only approved persons/groups have access permission. + ## no: No need to check out gtg code for general GFS users. + ################################################################################ + checkout_gtg=${checkout_gtg:-"NO"} + if [[ ${checkout_gtg} == "YES" ]] ; then + ./manage_externals/checkout_externals + cp sorc/post_gtg.fd/*f90 sorc/ncep_post.fd/. + cp sorc/post_gtg.fd/gtg.config.gfs parm/gtg.config.gfs + fi cd ${topdir} else echo 'Skip. Directory gfs_post.fd already exists.' fi -if [ $model != "coupled" ]; then - echo EMC_gfs_wafs checkout ... - if [[ ! -d gfs_wafs.fd ]] ; then - rm -f ${topdir}/checkout-gfs_wafs.log - git clone --recursive https://github.com/NOAA-EMC/EMC_gfs_wafs.git gfs_wafs.fd >> ${topdir}/checkout-gfs_wafs.log 2>&1 - cd gfs_wafs.fd - git checkout gfs_wafs.v5.0.11 - cd ${topdir} - else - echo 'Skip. Directory gfs_wafs.fd already exists.' - fi +echo EMC_gfs_wafs checkout ... +if [[ ! -d gfs_wafs.fd ]] ; then + rm -f ${topdir}/checkout-gfs_wafs.log + git clone --recursive https://github.com/NOAA-EMC/EMC_gfs_wafs.git gfs_wafs.fd >> ${topdir}/checkout-gfs_wafs.log 2>&1 + cd gfs_wafs.fd + git checkout gfs_wafs.v6.0.14 + cd ${topdir} +else + echo 'Skip. Directory gfs_wafs.fd already exists.' fi -if [ $model != "coupled" ]; then - echo EMC_verif-global checkout ... - if [[ ! -d verif-global.fd ]] ; then - rm -f ${topdir}/checkout-verif-global.log - git clone --recursive https://github.com/NOAA-EMC/EMC_verif-global.git verif-global.fd >> ${topdir}/checkout-verif-global.log 2>&1 - cd verif-global.fd - git checkout verif_global_v1.6.0 - cd ${topdir} - else - echo 'Skip. Directory verif-global.fd already exist.' - fi +echo EMC_verif-global checkout ... +if [[ ! -d verif-global.fd ]] ; then + rm -f ${topdir}/checkout-verif-global.log + git clone --recursive https://github.com/NOAA-EMC/EMC_verif-global.git verif-global.fd >> ${topdir}/checkout-verif-global.log 2>&1 + cd verif-global.fd + git checkout verif_global_v1.11.0 + cd ${topdir} +else + echo 'Skip. Directory verif-global.fd already exist.' fi exit 0 diff --git a/sorc/cpl_build.cfg b/sorc/cpl_build.cfg new file mode 100644 index 0000000000..0b2b464d5d --- /dev/null +++ b/sorc/cpl_build.cfg @@ -0,0 +1,25 @@ +# +# ***** configuration of fv3gfs build ***** + + Building libraries (libs) ............................. no + Building fv3gfs (fv3gfs) .............................. yes + Building reg2grb2 (reg2grb2) .......................... yes + Building ww3_prepost (ww3_prepost) .................... yes + Building gsi (gsi) .................................... no + Building gldas (gldas) ................................ no + Building ncep_post (ncep_post) ........................ yes + Building ufs_utils (ufs_utils) ........................ no + Building gldas (gldas) ................................ no + Building gfs_wafs (gfs_wafs) .......................... no + Building gaussian_sfcanl (gaussian_sfcanl)............. no + Building enkf_chgres_recenter (enkf_chgres_recenter) .. no + Building enkf_chgres_recenter_nc (enkf_chgres_recenter_nc) .. no + Building tropcy_NEMS (tropcy) ......................... no + Building gfs_fbwndgfs (gfs_fbwndgfs) .................. no + Building gfs_bufrsnd (gfs_bufrsnd) .................... no + Building fv3nc2nemsio (fv3nc2nemsio) .................. no + Building regrid_nemsio (regrid_nemsio) ................ no + Building gfs_util (gfs_util) .......................... no + +# -- END -- + diff --git a/sorc/fv3gfs_build.cfg b/sorc/fv3gfs_build.cfg index 130c6dde03..2f911dc1c7 100644 --- a/sorc/fv3gfs_build.cfg +++ b/sorc/fv3gfs_build.cfg @@ -3,6 +3,8 @@ Building libraries (libs) ............................. no Building fv3gfs (fv3gfs) .............................. yes + Building reg2grb2 (reg2grb2) .......................... no + Building ww3_prepost (ww3_prepost) .................... yes Building gsi (gsi) .................................... yes Building gldas (gldas) ................................ yes Building ncep_post (ncep_post) ........................ yes diff --git a/sorc/link_fv3gfs.sh b/sorc/link_fv3gfs.sh index af198ad9d3..bcdeb10b57 100755 --- a/sorc/link_fv3gfs.sh +++ b/sorc/link_fv3gfs.sh @@ -1,16 +1,14 @@ -#!/bin/bash +#!/bin/ksh set -ex #--make symbolic links for EMC installation and hardcopies for NCO delivery -. ./machine-setup.sh -echo "target system (machine) set to $target" RUN_ENVIR=${1} machine=${2} if [ $# -eq 3 ]; then -model=${3} + model=${3} else -model="uncoupled" + model="uncoupled" fi if [ $# -lt 2 ]; then @@ -21,17 +19,15 @@ if [ $# -lt 2 ]; then exit 1 fi -RUN_ENVIR=${1:-emc} - if [ $RUN_ENVIR != emc -a $RUN_ENVIR != nco ]; then echo 'Syntax: link_fv3gfs.sh ( nco | emc ) ( cray | dell | hera | orion )' - echo 'If coupling add a third argument: ' + echo ' A third argument is needed when coupled: ' echo ' Syntax: link_fv3gfs.sh ( nco | emc ) ( cray | dell | hera | orion ) coupled' exit 1 fi -if [ $machine != cray -a $machine != dell -a $machine != hera -a $machine != orion]; then +if [ $machine != cray -a $machine != dell -a $machine != hera -a $machine != orion ]; then echo 'Syntax: link_fv3gfs.sh ( nco | emc ) ( cray | dell | hera | orion )' - echo 'If coupling add a third argument: ' + echo ' A third argument is needed when coupled: ' echo ' Syntax: link_fv3gfs.sh ( nco | emc ) ( cray | dell | hera | orion ) coupled' exit 1 fi @@ -45,82 +41,100 @@ pwd=$(pwd -P) #------------------------------ #--model fix fields #------------------------------ -echo "target: $target" -if [ $target == "wcoss_cray" ]; then - FIX_DIR="/gpfs/hps3/emc/global/noscrub/emc.glopara/git/fv3gfs/fix" -elif [ $target = "wcoss_dell_p3" ]; then - FIX_DIR="/gpfs/dell2/emc/modeling/noscrub/emc.glopara/git/fv3gfs/fix" -elif [ $target == "theia" ]; then - FIX_DIR="/scratch4/NCEPDEV/global/save/glopara/git/fv3gfs/fix" -elif [ $target == "gaea" ]; then - FIX_DIR="/lustre/f1/pdata/ncep_shared/FV3GFS_V1_RELEASE/fix" - echo "gaea says what, FIX_DIR = $FIX_DIR" -elif [ $target == "jet" ]; then - FIX_DIR="/lfs3/projects/hfv3gfs/glopara/git/fv3gfs/fix" -elif [ $target == "hera" ]; then - FIX_DIR="/scratch2/NCEPDEV/climate/climpara/S2S/FIX/fix_UFSp6" -elif [ $target == "orion" ]; then - FIX_DIR="/work/noaa/marine/jmeixner/tempFixICdir/fix_UFSp6" -else - echo 'CRITICAL: links to fix files not set' - [[ $machine != orion ]] && exit 1 +if [ $machine == "cray" ]; then + FIX_DIR="/gpfs/hps3/emc/global/noscrub/emc.glopara/git/fv3gfs/fix_nco_gfsv16" +elif [ $machine = "dell" ]; then + FIX_DIR="/gpfs/dell2/emc/modeling/noscrub/emc.glopara/git/fv3gfs/fix_nco_gfsv16" +elif [ $machine = "hera" ]; then + if [ $model = "coupled" ]; then + FIX_DIR="/scratch2/NCEPDEV/climate/climpara/S2S/FIX/fix_UFSp6" + else + FIX_DIR="/scratch1/NCEPDEV/global/glopara/fix_nco_gfsv16" + fi +elif [ $machine = "orion" ]; then + if [ $model = "coupled" ]; then + FIX_DIR="/work/noaa/marine/jmeixner/tempFixICdir/fix_UFSp6" + else + FIX_DIR="/work/noaa/global/glopara/fix_nco_gfsv16" + fi fi if [ ! -z $FIX_DIR ]; then if [ ! -d ${pwd}/../fix ]; then mkdir ${pwd}/../fix; fi - cd ${pwd}/../fix ||exit 8 - for dir in fix_am fix_orog fix_fv3_gmted2010 fix_verif ; do - [[ -d $dir ]] && rm -rf $dir - done - $LINK $FIX_DIR/* . +fi +cd ${pwd}/../fix ||exit 8 +if [ $model = "coupled" ] ; then + for dir in fix_am fix_fv3_gmted2010 fix_gldas fix_orog fix_verif fix_cice fix_mom6 fix_cpl fix_wave fix_reg2grb2 ; do + if [ -d $dir ]; then + [[ $RUN_ENVIR = nco ]] && chmod -R 755 $dir + rm -rf $dir + fi + $LINK $FIX_DIR/$dir . + done +else + for dir in fix_am fix_fv3_gmted2010 fix_gldas fix_orog fix_verif fix_wave_gfs ; do + if [ -d $dir ]; then + [[ $RUN_ENVIR = nco ]] && chmod -R 755 $dir + rm -rf $dir + fi + $LINK $FIX_DIR/$dir . + done fi -if [ ! -r $FIX_DIR ]; then - echo "CRITICAL: you do not of read permissions to the location of the fix file $FIX_DIR" - exit -1 +if [ -d ${pwd}/ufs_utils.fd ]; then + cd ${pwd}/ufs_utils.fd/sorc + ./link_fixdirs.sh $RUN_ENVIR $machine fi #--------------------------------------- #--add files from external repositories #--------------------------------------- cd ${pwd}/../jobs ||exit 8 - $LINK ../sorc/gfs_post.fd/jobs/JGLOBAL_POST_MANAGER . - $LINK ../sorc/gfs_post.fd/jobs/JGLOBAL_NCEPPOST . + $LINK ../sorc/gfs_post.fd/jobs/JGLOBAL_ATMOS_POST_MANAGER . + $LINK ../sorc/gfs_post.fd/jobs/JGLOBAL_ATMOS_NCEPPOST . + $LINK ../sorc/gldas.fd/jobs/JGDAS_ATMOS_GLDAS . cd ${pwd}/../parm ||exit 8 [[ -d post ]] && rm -rf post $LINK ../sorc/gfs_post.fd/parm post + [[ -d gldas ]] && rm -rf gldas + $LINK ../sorc/gldas.fd/parm gldas cd ${pwd}/../scripts ||exit 8 - $LINK ../sorc/gfs_post.fd/scripts/exgdas_nceppost.sh.ecf . - $LINK ../sorc/gfs_post.fd/scripts/exgfs_nceppost.sh.ecf . - $LINK ../sorc/gfs_post.fd/scripts/exglobal_pmgr.sh.ecf . - $LINK ../sorc/ufs_utils.fd/scripts/exemcsfc_global_sfc_prep.sh.ecf . -if [ $model = "coupled" ]; then - $LINK exgfs_nceppost_cpl.sh.ecf exgfs_nceppost.sh.ecf -fi + $LINK ../sorc/gfs_post.fd/scripts/exgdas_atmos_nceppost.sh . + if [ $model = "coupled" ]; then + $LINK exgfs_nceppost_cpl.sh.ecf exgfs_nceppost.sh.ecf + else + $LINK ../sorc/gfs_post.fd/scripts/exgfs_atmos_nceppost.sh . + fi + $LINK ../sorc/gfs_post.fd/scripts/exglobal_atmos_pmgr.sh . + $LINK ../sorc/ufs_utils.fd/scripts/exemcsfc_global_sfc_prep.sh . + $LINK ../sorc/gldas.fd/scripts/exgdas_atmos_gldas.sh . cd ${pwd}/../ush ||exit 8 - for file in fv3gfs_downstream_nems.sh fv3gfs_dwn_nems.sh gfs_nceppost.sh \ - gfs_transfer.sh link_crtm_fix.sh trim_rh.sh fix_precip.sh; do + for file in fv3gfs_downstream_nems.sh fv3gfs_dwn_nems.sh gfs_nceppost.sh \ + gfs_transfer.sh mod_icec.sh link_crtm_fix.sh trim_rh.sh fix_precip.sh; do $LINK ../sorc/gfs_post.fd/ush/$file . done + if [ $model = "coupled" ]; then + rm fv3gfs_downstream_nems.sh + $LINK fv3gfs_downstream_nems_cpl.sh fv3gfs_downstream_nems.sh + fi for file in emcsfc_ice_blend.sh fv3gfs_driver_grid.sh fv3gfs_make_orog.sh global_cycle_driver.sh \ emcsfc_snow.sh fv3gfs_filter_topo.sh global_chgres_driver.sh global_cycle.sh \ - fv3gfs_chgres.sh fv3gfs_make_grid.sh global_chgres.sh ; do + fv3gfs_chgres.sh fv3gfs_make_grid.sh global_chgres.sh ; do $LINK ../sorc/ufs_utils.fd/ush/$file . done - -if [ $model = "coupled" ]; then - $LINK fv3gfs_downstream_nems_cpl.sh fv3gfs_downstream_nems.sh -fi - + for file in gldas_archive.sh gldas_forcing.sh gldas_get_data.sh gldas_process_data.sh gldas_liscrd.sh gldas_post.sh ; do + $LINK ../sorc/gldas.fd/ush/$file . + done cd ${pwd}/../util ||exit 8 for file in sub_slurm sub_wcoss_c sub_wcoss_d ; do - $LINK ../sorc/ufs_utils.fd/util/$file + $LINK ../sorc/ufs_utils.fd/util/$file . done -#------------------------------ -#--add gfs_wafs link if on Dell -if [ $machine = dell -o $machine = hera ]; then -#------------------------------ + +#----------------------------------- +#--add gfs_wafs link if checked out +if [ -d ${pwd}/gfs_wafs.fd ]; then +#----------------------------------- cd ${pwd}/../jobs ||exit 8 $LINK ../sorc/gfs_wafs.fd/jobs/* . cd ${pwd}/../parm ||exit 8 @@ -131,31 +145,46 @@ if [ $machine = dell -o $machine = hera ]; then cd ${pwd}/../ush ||exit 8 $LINK ../sorc/gfs_wafs.fd/ush/* . cd ${pwd}/../fix ||exit 8 + [[ -d wafs ]] && rm -rf wafs $LINK ../sorc/gfs_wafs.fd/fix/* . fi + #------------------------------ #--add GSI/EnKF file #------------------------------ cd ${pwd}/../jobs ||exit 8 - $LINK ../sorc/gsi.fd/jobs/JGLOBAL_ANALYSIS . - $LINK ../sorc/gsi.fd/jobs/JGLOBAL_ENKF_SELECT_OBS . - $LINK ../sorc/gsi.fd/jobs/JGLOBAL_ENKF_INNOVATE_OBS . - $LINK ../sorc/gsi.fd/jobs/JGLOBAL_ENKF_UPDATE . - $LINK ../sorc/gsi.fd/jobs/JGDAS_ENKF_RECENTER . - $LINK ../sorc/gsi.fd/jobs/JGDAS_ENKF_FCST . - $LINK ../sorc/gsi.fd/jobs/JGDAS_ENKF_POST . + $LINK ../sorc/gsi.fd/jobs/JGLOBAL_ATMOS_ANALYSIS . + $LINK ../sorc/gsi.fd/jobs/JGLOBAL_ATMOS_ANALYSIS_CALC . + $LINK ../sorc/gsi.fd/jobs/JGDAS_ATMOS_ANALYSIS_DIAG . + $LINK ../sorc/gsi.fd/jobs/JGDAS_ENKF_SELECT_OBS . + $LINK ../sorc/gsi.fd/jobs/JGDAS_ENKF_DIAG . + $LINK ../sorc/gsi.fd/jobs/JGDAS_ENKF_UPDATE . + $LINK ../sorc/gsi.fd/jobs/JGDAS_ENKF_ECEN . + $LINK ../sorc/gsi.fd/jobs/JGDAS_ENKF_SFC . + $LINK ../sorc/gsi.fd/jobs/JGDAS_ENKF_FCST . + $LINK ../sorc/gsi.fd/jobs/JGDAS_ENKF_POST . + $LINK ../sorc/gsi.fd/jobs/JGDAS_ATMOS_CHGRES_FORENKF . cd ${pwd}/../scripts ||exit 8 - $LINK ../sorc/gsi.fd/scripts/exglobal_analysis_fv3gfs.sh.ecf . - $LINK ../sorc/gsi.fd/scripts/exglobal_innovate_obs_fv3gfs.sh.ecf . - $LINK ../sorc/gsi.fd/scripts/exglobal_enkf_innovate_obs_fv3gfs.sh.ecf . - $LINK ../sorc/gsi.fd/scripts/exglobal_enkf_update_fv3gfs.sh.ecf . - $LINK ../sorc/gsi.fd/scripts/exglobal_enkf_recenter_fv3gfs.sh.ecf . - $LINK ../sorc/gsi.fd/scripts/exglobal_enkf_fcst_fv3gfs.sh.ecf . - $LINK ../sorc/gsi.fd/scripts/exglobal_enkf_post_fv3gfs.sh.ecf . + $LINK ../sorc/gsi.fd/scripts/exglobal_atmos_analysis.sh . + $LINK ../sorc/gsi.fd/scripts/exglobal_atmos_analysis_calc.sh . + $LINK ../sorc/gsi.fd/scripts/exglobal_diag.sh . + $LINK ../sorc/gsi.fd/scripts/exgdas_enkf_select_obs.sh . + $LINK ../sorc/gsi.fd/scripts/exgdas_enkf_update.sh . + $LINK ../sorc/gsi.fd/scripts/exgdas_enkf_ecen.sh . + $LINK ../sorc/gsi.fd/scripts/exgdas_enkf_sfc.sh . + $LINK ../sorc/gsi.fd/scripts/exgdas_enkf_fcst.sh . + $LINK ../sorc/gsi.fd/scripts/exgdas_enkf_post.sh . + $LINK ../sorc/gsi.fd/scripts/exgdas_atmos_chgres_forenkf.sh . cd ${pwd}/../fix ||exit 8 [[ -d fix_gsi ]] && rm -rf fix_gsi $LINK ../sorc/gsi.fd/fix fix_gsi +cd ${pwd}/../ush ||exit 8 + $LINK ../sorc/gsi.fd/ush/gsi_utils.py . + $LINK ../sorc/gsi.fd/ush/calcanl_gfs.py . + $LINK ../sorc/gsi.fd/ush/calcinc_gfs.py . + $LINK ../sorc/gsi.fd/ush/getncdimlen . + #------------------------------ #--add DA Monitor file (NOTE: ensure to use correct version) @@ -172,10 +201,10 @@ cd ${pwd}/../fix ||exit 8 $LINK ../../sorc/gsi.fd/util/Radiance_Monitor/nwprod/gdas_radmon.v3.0.0/fix/gdas_radmon_satype.txt . $LINK ../../sorc/gsi.fd/util/Radiance_Monitor/nwprod/gdas_radmon.v3.0.0/fix/gdas_radmon_scaninfo.txt . cd ${pwd}/../jobs ||exit 8 - $LINK ../sorc/gsi.fd/util/Minimization_Monitor/nwprod/gdas.v1.0.0/jobs/JGDAS_VMINMON . - $LINK ../sorc/gsi.fd/util/Minimization_Monitor/nwprod/gfs.v1.0.0/jobs/JGFS_VMINMON . - $LINK ../sorc/gsi.fd/util/Ozone_Monitor/nwprod/gdas_oznmon.v2.0.0/jobs/JGDAS_VERFOZN . - $LINK ../sorc/gsi.fd/util/Radiance_Monitor/nwprod/gdas_radmon.v3.0.0/jobs/JGDAS_VERFRAD . + $LINK ../sorc/gsi.fd/util/Minimization_Monitor/nwprod/gdas.v1.0.0/jobs/JGDAS_ATMOS_VMINMON . + $LINK ../sorc/gsi.fd/util/Minimization_Monitor/nwprod/gfs.v1.0.0/jobs/JGFS_ATMOS_VMINMON . + $LINK ../sorc/gsi.fd/util/Ozone_Monitor/nwprod/gdas_oznmon.v2.0.0/jobs/JGDAS_ATMOS_VERFOZN . + $LINK ../sorc/gsi.fd/util/Radiance_Monitor/nwprod/gdas_radmon.v3.0.0/jobs/JGDAS_ATMOS_VERFRAD . cd ${pwd}/../parm ||exit 8 [[ -d mon ]] && rm -rf mon mkdir -p mon @@ -186,10 +215,10 @@ cd ${pwd}/../parm ||exit 8 $LINK ../../sorc/gsi.fd/util/Ozone_Monitor/nwprod/gdas_oznmon.v2.0.0/parm/gdas_oznmon.parm . # $LINK ../../sorc/gsi.fd/util/Radiance_Monitor/nwprod/gdas_radmon.v3.0.0/parm/gdas_radmon.parm . cd ${pwd}/../scripts ||exit 8 - $LINK ../sorc/gsi.fd/util/Minimization_Monitor/nwprod/gdas.v1.0.0/scripts/exgdas_vrfminmon.sh.ecf . - $LINK ../sorc/gsi.fd/util/Minimization_Monitor/nwprod/gfs.v1.0.0/scripts/exgfs_vrfminmon.sh.ecf . - $LINK ../sorc/gsi.fd/util/Ozone_Monitor/nwprod/gdas_oznmon.v2.0.0/scripts/exgdas_vrfyozn.sh.ecf . - $LINK ../sorc/gsi.fd/util/Radiance_Monitor/nwprod/gdas_radmon.v3.0.0/scripts/exgdas_vrfyrad.sh.ecf . + $LINK ../sorc/gsi.fd/util/Minimization_Monitor/nwprod/gdas.v1.0.0/scripts/exgdas_atmos_vminmon.sh . + $LINK ../sorc/gsi.fd/util/Minimization_Monitor/nwprod/gfs.v1.0.0/scripts/exgfs_atmos_vminmon.sh . + $LINK ../sorc/gsi.fd/util/Ozone_Monitor/nwprod/gdas_oznmon.v2.0.0/scripts/exgdas_atmos_verfozn.sh . + $LINK ../sorc/gsi.fd/util/Radiance_Monitor/nwprod/gdas_radmon.v3.0.0/scripts/exgdas_atmos_verfrad.sh . cd ${pwd}/../ush ||exit 8 $LINK ../sorc/gsi.fd/util/Minimization_Monitor/nwprod/minmon_shared.v1.0.1/ush/minmon_xtrct_costs.pl . $LINK ../sorc/gsi.fd/util/Minimization_Monitor/nwprod/minmon_shared.v1.0.1/ush/minmon_xtrct_gnorms.pl . @@ -202,106 +231,112 @@ cd ${pwd}/../ush ||exit 8 $LINK ../sorc/gsi.fd/util/Radiance_Monitor/nwprod/radmon_shared.v3.0.0/ush/radmon_verf_bcor.sh . $LINK ../sorc/gsi.fd/util/Radiance_Monitor/nwprod/radmon_shared.v3.0.0/ush/radmon_verf_time.sh . + #------------------------------ #--link executables #------------------------------ cd $pwd/../exec -if [ $model == "coupled" ]; then -[[ -s ufs_model ]] && rm -f ufs_model -$LINK ../sorc/ufs_coupled.fd/build/ufs_model . +if [ $model == "coupled" ]; then + [[ -s ufs_model ]] && rm -f ufs_model + $LINK ../sorc/ufs_coupled.fd/build/ufs_model . else [[ -s global_fv3gfs.x ]] && rm -f global_fv3gfs.x $LINK ../sorc/fv3gfs.fd/NEMS/exe/global_fv3gfs.x . +if [ -d ../sorc/fv3gfs.fd/WW3/exec ]; then # Wave execs + for waveexe in ww3_gint ww3_grib ww3_grid ww3_multi ww3_ounf ww3_ounp ww3_outf ww3_outp ww3_prep ww3_prnc; do + [[ -s $waveexe ]] && rm -f $waveexe + $LINK ../sorc/fv3gfs.fd/WW3/exec/$waveexe . + done fi +fi [[ -s gfs_ncep_post ]] && rm -f gfs_ncep_post $LINK ../sorc/gfs_post.fd/exec/ncep_post gfs_ncep_post -if [[ $target == "jet" ]]; then - util_exec_dir_path=/mnt/lfs3/projects/hfv3gfs/glopara/git/fv3gfs_builds - #for util_exec_dirs in grib_utils prod_util gsi_tJet ;do - for util_exec_dirs in grib_utils prod_util ;do - if [[ -d ${util_exec_dir_path}/${util_exec_dirs} ]]; then - $LINK ${util_exec_dir_path}/${util_exec_dirs}/* . - else - echo "WARNING ${util_exec} did not copy softlink from ${util_exec_dir_path} on Jet" - fi - done -fi - -#if [ $machine = dell ]; then -# for wafsexe in wafs_awc_wafavn wafs_blending wafs_cnvgrib2 wafs_gcip wafs_makewafs wafs_setmissing; do -# [[ -s $wafsexe ]] && rm -f $wafsexe -# $LINK ../sorc/gfs_wafs.fd/exec/$wafsexe . -# done -#fi -if [ $machine = dell -o $machine = hera ]; then - for wafsexe in wafs_awc_wafavn wafs_blending wafs_cnvgrib2 wafs_gcip wafs_makewafs wafs_setmissing; do +if [ -d ${pwd}/gfs_wafs.fd ]; then + for wafsexe in \ + wafs_awc_wafavn wafs_blending wafs_blending_0p25 \ + wafs_cnvgrib2 wafs_gcip wafs_grib2_0p25 \ + wafs_makewafs wafs_setmissing; do [[ -s $wafsexe ]] && rm -f $wafsexe $LINK ../sorc/gfs_wafs.fd/exec/$wafsexe . done fi for ufs_utilsexe in \ - chgres_cube.exe fregrid make_hgrid nemsio_get shave.x \ - emcsfc_ice_blend fregrid_parallel make_hgrid_parallel nemsio_read \ - emcsfc_snow2mdl global_chgres make_solo_mosaic nst_tf_chg.x \ - filter_topo global_cycle mkgfsnemsioctl orog.x ; do + emcsfc_ice_blend emcsfc_snow2mdl global_chgres global_cycle ; do [[ -s $ufs_utilsexe ]] && rm -f $ufs_utilsexe $LINK ../sorc/ufs_utils.fd/exec/$ufs_utilsexe . done -for gsiexe in global_gsi.x global_enkf.x calc_increment_ens.x getsfcensmeanp.x getsigensmeanp_smooth.x \ - getsigensstatp.x nc_diag_cat_serial.x nc_diag_cat.x recentersigp.x oznmon_horiz.x oznmon_time.x \ - radmon_angle.x radmon_bcoef.x radmon_bcor.x radmon_time.x ;do +for gsiexe in calc_analysis.x calc_increment_ens_ncio.x calc_increment_ens.x \ + getsfcensmeanp.x getsigensmeanp_smooth.x getsigensstatp.x global_enkf.x global_gsi.x \ + interp_inc.x ncdiag_cat.x oznmon_horiz.x oznmon_time.x radmon_angle.x \ + radmon_bcoef.x radmon_bcor.x radmon_time.x recentersigp.x;do [[ -s $gsiexe ]] && rm -f $gsiexe $LINK ../sorc/gsi.fd/exec/$gsiexe . done -if [[ $target == "gaea" ]]; then - if [[ -f /lustre/f1/pdata/ncep_shared/exec/wgrib2 ]]; then - cp /lustre/f1/pdata/ncep_shared/exec/wgrib2 . - else - echo 'WARNING wgrib2 did not copy from /lustre/f1/pdata/ncep_shared/exec on Gaea' - fi -fi - -if [[ $target == "jet" ]]; then - util_exec_dir_path=/mnt/lfs3/projects/hfv3gfs/glopara/git/fv3gfs_builds - #for util_exec_dirs in grib_utils prod_util gsi_tJet ;do - for util_exec_dirs in grib_utils prod_util ;do - if [[ -d ${util_exec_dir_path}/${util_exec_dirs} ]]; then - $LINK ${util_exec_dir_path}/${util_exec_dirs}/* . - else - echo "WARNING ${util_exec} did not copy softlink from ${util_exec_dir_path} on Jet" - fi - done -fi -if [ $target = wcoss_dell_p3 ]; then - for wafsexe in wafs_awc_wafavn wafs_blending wafs_cnvgrib2 wafs_gcip wafs_makewafs wafs_setmissing; do - [[ -s $wafsexe ]] && rm -f $wafsexe - $LINK ../sorc/gfs_wafs.fd/exec/$wafsexe . - done -fi +for gldasexe in gdas2gldas gldas2gdas gldas_forcing gldas_model gldas_post gldas_rst; do + [[ -s $gldasexe ]] && rm -f $gldasexe + $LINK ../sorc/gldas.fd/exec/$gldasexe . +done #------------------------------ #--link source code directories #------------------------------ cd ${pwd}/../sorc || exit 8 + [[ -d calc_analysis.fd ]] && rm -rf calc_analysis.fd + $SLINK gsi.fd/util/netcdf_io/calc_analysis.fd calc_analysis.fd + + [[ -d calc_increment_ens.fd ]] && rm -rf calc_increment_ens.fd $SLINK gsi.fd/util/EnKF/gfs/src/calc_increment_ens.fd calc_increment_ens.fd + + [[ -d calc_increment_ens_ncio.fd ]] && rm -rf calc_increment_ens_ncio.fd + $SLINK gsi.fd/util/EnKF/gfs/src/calc_increment_ens_ncio.fd calc_increment_ens_ncio.fd + + [[ -d getsfcensmeanp.fd ]] && rm -rf getsfcensmeanp.fd $SLINK gsi.fd/util/EnKF/gfs/src/getsfcensmeanp.fd getsfcensmeanp.fd + + [[ -d getsigensmeanp_smooth.fd ]] && rm -rf getsigensmeanp_smooth.fd $SLINK gsi.fd/util/EnKF/gfs/src/getsigensmeanp_smooth.fd getsigensmeanp_smooth.fd + + [[ -d getsigensstatp.fd ]] && rm -rf getsigensstatp.fd $SLINK gsi.fd/util/EnKF/gfs/src/getsigensstatp.fd getsigensstatp.fd - $SLINK gsi.fd/src global_enkf.fd - $SLINK gsi.fd/src global_gsi.fd + + [[ -d global_enkf.fd ]] && rm -rf global_enkf.fd + $SLINK gsi.fd/src/enkf global_enkf.fd + + [[ -d global_gsi.fd ]] && rm -rf global_gsi.fd + $SLINK gsi.fd/src/gsi global_gsi.fd + + [[ -d interp_inc.fd ]] && rm -rf interp_inc.fd + $SLINK gsi.fd/util/netcdf_io/interp_inc.fd interp_inc.fd + + [[ -d ncdiag.fd ]] && rm -rf ncdiag.fd + $SLINK gsi.fd/src/ncdiag ncdiag_cat.fd + + [[ -d oznmon_horiz.fd ]] && rm -rf oznmon_horiz.fd $SLINK gsi.fd/util/Ozone_Monitor/nwprod/oznmon_shared.v2.0.0/sorc/oznmon_horiz.fd oznmon_horiz.fd + + [[ -d oznmon_time.fd ]] && rm -rf oznmon_time.fd $SLINK gsi.fd/util/Ozone_Monitor/nwprod/oznmon_shared.v2.0.0/sorc/oznmon_time.fd oznmon_time.fd + + [[ -d radmon_angle.fd ]] && rm -rf radmon_angle.fd $SLINK gsi.fd/util/Radiance_Monitor/nwprod/radmon_shared.v3.0.0/sorc/verf_radang.fd radmon_angle.fd + + [[ -d radmon_bcoef.fd ]] && rm -rf radmon_bcoef.fd $SLINK gsi.fd/util/Radiance_Monitor/nwprod/radmon_shared.v3.0.0/sorc/verf_radbcoef.fd radmon_bcoef.fd + + [[ -d radmon_bcor.fd ]] && rm -rf radmon_bcor.fd $SLINK gsi.fd/util/Radiance_Monitor/nwprod/radmon_shared.v3.0.0/sorc/verf_radbcor.fd radmon_bcor.fd + + [[ -d radmon_time.fd ]] && rm -rf radmon_time.fd $SLINK gsi.fd/util/Radiance_Monitor/nwprod/radmon_shared.v3.0.0/sorc/verf_radtime.fd radmon_time.fd + + [[ -d recentersigp.fd ]] && rm -rf recentersigp.fd $SLINK gsi.fd/util/EnKF/gfs/src/recentersigp.fd recentersigp.fd $SLINK gfs_post.fd/sorc/ncep_post.fd gfs_ncep_post.fd @@ -310,14 +345,14 @@ cd ${pwd}/../sorc || exit 8 for prog in filter_topo fregrid make_hgrid make_solo_mosaic ; do $SLINK ufs_utils.fd/sorc/fre-nctools.fd/tools/$prog ${prog}.fd done - for prog in chgres_cube.fd global_cycle.fd nemsio_read.fd \ - emcsfc_ice_blend.fd mkgfsnemsioctl.fd nst_tf_chg.fd \ - emcsfc_snow2mdl.fd global_chgres.fd nemsio_get.fd orog.fd ;do + for prog in global_cycle.fd nemsio_read.fd nemsio_chgdate.fd \ + emcsfc_ice_blend.fd nst_tf_chg.fd \ + emcsfc_snow2mdl.fd global_chgres.fd nemsio_get.fd orog.fd ;do $SLINK ufs_utils.fd/sorc/$prog $prog done - if [ $machine = dell -o $machine = hera ]; then + if [ -d ${pwd}/gfs_wafs.fd ]; then $SLINK gfs_wafs.fd/sorc/wafs_awc_wafavn.fd wafs_awc_wafavn.fd $SLINK gfs_wafs.fd/sorc/wafs_blending.fd wafs_blending.fd $SLINK gfs_wafs.fd/sorc/wafs_cnvgrib2.fd wafs_cnvgrib2.fd @@ -326,38 +361,22 @@ cd ${pwd}/../sorc || exit 8 $SLINK gfs_wafs.fd/sorc/wafs_setmissing.fd wafs_setmissing.fd fi - -#Link CCPP Suite files: -cd $pwd/../fix -[[ -d fix_ccpp_suites ]] && rm -rf fix_ccpp_suites -if [ $model == "coupled" ]; then -$SLINK ../sorc/ufs_coupled.fd/FV3/ccpp/suites fix_ccpp_suites -else -$SLINK ../sorc/fv3gfs.fd/FV3/ccpp/suites fix_ccpp_suites -fi - - + for prog in gdas2gldas.fd gldas2gdas.fd gldas_forcing.fd gldas_model.fd gldas_post.fd gldas_rst.fd ;do + $SLINK gldas.fd/sorc/$prog $prog + done #------------------------------ #--choose dynamic config.base for EMC installation #--choose static config.base for NCO installation cd $pwd/../parm/config -#[[ -s config.base ]] && rm -f config.base -#if [ $RUN_ENVIR = nco ] ; then -# cp -p config.base.nco.static config.base -#else -# cp -p config.base.emc.dyn config.base -#fi -#------------------------------ -if [ $model = "coupled" ] ; then - #rm -f config.base - #cp -p config.base.emc.dyn_coupled config.base - cd $pwd/../fix - # Add fixed files needed for coupled ufs-s2s-model - $LINK $FIX_DIR/fix_cice . - $LINK $FIX_DIR/fix_mom6 . - $LINK $FIX_DIR/fix_cpl . - $LINK $FIX_DIR/fix_wave . +[[ -s config.base ]] && rm -f config.base +if [ $RUN_ENVIR = nco ] ; then + cp -p config.base.nco.static config.base +else + cp -p config.base.emc.dyn config.base fi +#------------------------------ + exit 0 + diff --git a/sorc/partial_build.sh b/sorc/partial_build.sh index 264d3c1410..fd7605d8ce 100755 --- a/sorc/partial_build.sh +++ b/sorc/partial_build.sh @@ -3,6 +3,8 @@ # declare -a Build_prg=("Build_libs" "Build_fv3gfs" \ "Build_gsi" \ + "Build_ww3_prepost" \ + "Build_reg2grb2" \ "Build_gldas" \ "Build_ncep_post" \ "Build_ufs_utils" \ @@ -156,6 +158,9 @@ if [[ $1 == "-v" ]]; then verbose=true fi + if [[ $1 == "-c" ]]; then + coupled=true + fi num_arg=0 } || { echo "Usage: $0 [ALL|config=config_file|[select=][prog1[,prog2[,...]]]" 2>&1 @@ -166,8 +171,12 @@ if (( num_arg == 0 )); then # # set default values for partial build -# - parse_cfg 1 "config=fv3gfs_build.cfg" ${Build_prg[@]} +# + if [[ $coupled ]]; then + parse_cfg 1 "config=cpl_build.cfg" ${Build_prg[@]} + else + parse_cfg 1 "config=fv3gfs_build.cfg" ${Build_prg[@]} + fi else # diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 9bcea1b7e4..17633c5f47 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -191,9 +191,6 @@ FV3_GFS_postdet(){ $NLN $FIXfv3/$CASE/${CASE}_mosaic.nc $DATA/INPUT/${CASE}_mosaic.nc fi - # CCPP Suite file - $NCP -p $FIX_DIR/fix_ccpp_suites/suite_${CCPP_SUITE}.xml $DATA/ - # GFS standard input data IALB=${IALB:-1}