From b0183ea81b279a1afd81fbc2121244f5ad3fd9ee Mon Sep 17 00:00:00 2001 From: "denise.worthen" Date: Wed, 21 Aug 2019 16:46:07 +0000 Subject: [PATCH 01/13] Weights mean_salt_rate by icewgt --- src/module_MEDIATOR.F90 | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/module_MEDIATOR.F90 b/src/module_MEDIATOR.F90 index be02e465..87825f78 100644 --- a/src/module_MEDIATOR.F90 +++ b/src/module_MEDIATOR.F90 @@ -5533,6 +5533,16 @@ subroutine MedPhase_prep_ocn(gcomp, rc) ! if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & ! line=__LINE__, file=__FILE__)) return ! bail out + !------------- + ! field_for_ocn = field_from_ice * ice_fraction + !------------- + + call fieldBundle_FieldMerge(is_local%wrap%FBforOcn, 'mean_salt_rate', & + is_local%wrap%FBIce_o , 'mean_salt_rate', icewgt, & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return ! bail out + !------------- ! field_for_ocn = field_from_atm * (1-ice_fraction) + field_from_ice * (ice_fraction) !------------- From 00540f8d68bf4a754762d6e957e9c49f09de6005 Mon Sep 17 00:00:00 2001 From: "denise.worthen" Date: Wed, 21 Aug 2019 17:03:38 +0000 Subject: [PATCH 02/13] Currently, rain is being merged with sea ice FW and sensible heat from the ATM is being merged with the heat of sea ice formation and melt. The newest MOM6 requires the fields of FW and heat associated with sea ice melt or formation be sent as separate fields. --- src/module_MEDIATOR.F90 | 45 +++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/src/module_MEDIATOR.F90 b/src/module_MEDIATOR.F90 index be02e465..e8f55239 100644 --- a/src/module_MEDIATOR.F90 +++ b/src/module_MEDIATOR.F90 @@ -5501,6 +5501,29 @@ subroutine MedPhase_prep_ocn(gcomp, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=__FILE__)) return ! bail out + call fieldBundle_FieldMerge(is_local%wrap%FBforOcn, 'mean_prec_rate', & + is_local%wrap%FBAtm_o , 'mean_prec_rate', atmwgt, & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return ! bail out + + !------------- + ! field_for_ocn = field_from_ice * ice_fraction + !------------- + + call fieldBundle_FieldMerge(is_local%wrap%FBforOcn, 'net_heat_flx_to_ocn', & + is_local%wrap%FBIce_o , 'net_heat_flx_to_ocn', icewgt, & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return ! bail out + + + call fieldBundle_FieldMerge(is_local%wrap%FBforOcn, 'mean_fresh_water_to_ocean_rate', & + is_local%wrap%FBIce_o , 'mean_fresh_water_to_ocean_rate', icewgt, & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return ! bail out + ! not used by mom, mom uses net, also mean_down_lw_flx not connected to ocn ! call fieldBundle_FieldMerge(is_local%wrap%FBforOcn, 'mean_down_lw_flx', & ! is_local%wrap%FBAtm_o , 'mean_down_lw_flx', atmwgt, & @@ -5517,6 +5540,13 @@ subroutine MedPhase_prep_ocn(gcomp, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=__FILE__)) return ! bail out + call fieldBundle_FieldMerge(is_local%wrap%FBforOcn , 'mean_sensi_heat_flx' , & + is_local%wrap%FBAccumAtmOcn, 'mean_sensi_heat_flx_atm_into_ocn', atmwgt1, & + is_local%wrap%FBAtm_o , 'mean_sensi_heat_flx' , wgtm01, & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return ! bail out + call fieldBundle_FieldMerge(is_local%wrap%FBforOcn , 'mean_net_lw_flx' , & is_local%wrap%FBAtm_o , 'mean_down_lw_flx' , atmwgt1, & is_local%wrap%FBAccumAtmOcn, 'mean_up_lw_flx_ocn', atmwgt1, & @@ -5537,21 +5567,6 @@ subroutine MedPhase_prep_ocn(gcomp, rc) ! field_for_ocn = field_from_atm * (1-ice_fraction) + field_from_ice * (ice_fraction) !------------- - call fieldBundle_FieldMerge(is_local%wrap%FBforOcn, 'mean_prec_rate' , & - is_local%wrap%FBAtm_o , 'mean_prec_rate' , atmwgt, & - is_local%wrap%FBIce_o , 'mean_fresh_water_to_ocean_rate', icewgt, & - rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, file=__FILE__)) return ! bail out - - call fieldBundle_FieldMerge(is_local%wrap%FBforOcn , 'mean_sensi_heat_flx' , & - is_local%wrap%FBAccumAtmOcn, 'mean_sensi_heat_flx_atm_into_ocn', atmwgt1, & - is_local%wrap%FBIce_o , 'net_heat_flx_to_ocn' , icewgt1, & - is_local%wrap%FBAtm_o , 'mean_sensi_heat_flx' , wgtm01, & - rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, file=__FILE__)) return ! bail out - call fieldBundle_FieldMerge(is_local%wrap%FBforOcn , 'mean_zonal_moment_flx' , & is_local%wrap%FBAccumAtmOcn, 'stress_on_air_ocn_zonal', atmwgt1, & is_local%wrap%FBIce_o , 'stress_on_ocn_ice_zonal', icewgt1, & From a27a80c75e9e05c1175681cf86554186bbb8bb6a Mon Sep 17 00:00:00 2001 From: Gerhard Theurich Date: Wed, 21 Aug 2019 23:26:44 +0000 Subject: [PATCH 03/13] Support the official NUOPC Verbosity strings "off", "low", "high", "max" for compliance. --- src/module_MEDIATOR.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/module_MEDIATOR.F90 b/src/module_MEDIATOR.F90 index be02e465..b2e2d34c 100644 --- a/src/module_MEDIATOR.F90 +++ b/src/module_MEDIATOR.F90 @@ -922,7 +922,8 @@ subroutine InitializeP0(gcomp, importState, exportState, clock, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=__FILE__)) return ! bail out dbug_flag = ESMF_UtilString2Int(value, & - specialStringList=(/"min","max"/), specialValueList=(/0,255/), rc=rc) + specialStringList=(/"off","low","high","max"/), & + specialValueList=(/0,1,100,255/), rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=__FILE__)) return ! bail out write(msgString,'(A,i6)') trim(subname)//' dbug_flag = ',dbug_flag From 8113ca1cd03a7b746b9a4dacc2e6fdbbca43ab1f Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Thu, 22 Aug 2019 20:42:22 +0000 Subject: [PATCH 04/13] Add standard name to NUOPC Field Dictionary defining instantaneous specific humidity tendency due to convection. --- src/module_EARTH_GRID_COMP.F90 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/module_EARTH_GRID_COMP.F90 b/src/module_EARTH_GRID_COMP.F90 index 5b93bf60..3336eec3 100644 --- a/src/module_EARTH_GRID_COMP.F90 +++ b/src/module_EARTH_GRID_COMP.F90 @@ -3017,6 +3017,18 @@ SUBROUTINE EARTH_REGISTER(EARTH_GRID_COMP,RC_REG) return ! bail out endif + if (.not.NUOPC_FieldDictionaryHasEntry( & + "inst_spec_humid_conv_tendency_levels")) then + call NUOPC_FieldDictionaryAddEntry( & + standardName="inst_spec_humid_conv_tendency_levels", & + canonicalUnits="kg kg-1 s-1", & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__)) & + return ! bail out + endif + if (.not.NUOPC_FieldDictionaryHasEntry( & "inst_friction_velocity")) then call NUOPC_FieldDictionaryAddEntry( & From 95c63cbe95db60e4a2edc7e49352dad57028b1d5 Mon Sep 17 00:00:00 2001 From: "denise.worthen" Date: Fri, 23 Aug 2019 16:25:31 +0000 Subject: [PATCH 05/13] adds 6 variables to NUOPC Dictionary which are needed by WW3-MOM6 --- src/module_EARTH_GRID_COMP.F90 | 70 ++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/module_EARTH_GRID_COMP.F90 b/src/module_EARTH_GRID_COMP.F90 index 5b93bf60..aa177fa3 100644 --- a/src/module_EARTH_GRID_COMP.F90 +++ b/src/module_EARTH_GRID_COMP.F90 @@ -587,6 +587,76 @@ SUBROUTINE EARTH_REGISTER(EARTH_GRID_COMP,RC_REG) file=__FILE__)) & return ! bail out endif + !For MOM6 and WW3 variables to match: + if (.not.NUOPC_FieldDictionaryHasEntry( & + "eastward_partitioned_stokes_drift_1")) then + call NUOPC_FieldDictionaryAddEntry( & + standardName="eastward_partitioned_stokes_drift_1", & + canonicalUnits="m s-1", & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__)) & + return ! bail out + endif + + if (.not.NUOPC_FieldDictionaryHasEntry( & + "northward_partitioned_stokes_drift_1")) then + call NUOPC_FieldDictionaryAddEntry( & + standardName="northward_partitioned_stokes_drift_1", & + canonicalUnits="m s-1", & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__)) & + return ! bail out + endif + if (.not.NUOPC_FieldDictionaryHasEntry( & + "eastward_partitioned_stokes_drift_2")) then + call NUOPC_FieldDictionaryAddEntry( & + standardName="eastward_partitioned_stokes_drift_2", & + canonicalUnits="m s-1", & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__)) & + return ! bail out + endif + if (.not.NUOPC_FieldDictionaryHasEntry( & + "northward_partitioned_stokes_drift_2")) then + call NUOPC_FieldDictionaryAddEntry( & + standardName="northward_partitioned_stokes_drift_2", & + canonicalUnits="m s-1", & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__)) & + return ! bail out + endif + if (.not.NUOPC_FieldDictionaryHasEntry( & + "eastward_partitioned_stokes_drift_3")) then + call NUOPC_FieldDictionaryAddEntry( & + standardName="eastward_partitioned_stokes_drift_3", & + canonicalUnits="m s-1", & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__)) & + return ! bail out + endif + + if (.not.NUOPC_FieldDictionaryHasEntry( & + "northward_partitioned_stokes_drift_3")) then + call NUOPC_FieldDictionaryAddEntry( & + standardName="northward_partitioned_stokes_drift_3", & + canonicalUnits="m s-1", & + rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__)) & + return ! bail out + endif + ! end of MOM6 and WW3 variables to match if (.not.NUOPC_FieldDictionaryHasEntry( & "inst_temp_height_surface")) then call NUOPC_FieldDictionaryAddEntry( & From 44d73914385e5336c813bfb37830dfd5b4901f81 Mon Sep 17 00:00:00 2001 From: Ratko Vasic Date: Fri, 30 Aug 2019 19:16:52 +0000 Subject: [PATCH 06/13] Posrt 2 hera --- src/incmake/env/rdhpcs/detect.mk | 15 ++++++++++----- src/incmake/env/rdhpcs/hera.intel.mk | 7 +++++++ tests/commit.def | 26 +++++++++++++------------- tests/multi-app-test.sh | 2 +- tests/nightly/run-from-wcoss.sh | 6 ++++++ 5 files changed, 37 insertions(+), 19 deletions(-) create mode 100644 src/incmake/env/rdhpcs/hera.intel.mk diff --git a/src/incmake/env/rdhpcs/detect.mk b/src/incmake/env/rdhpcs/detect.mk index 3a93d6a4..d7e6e7cc 100644 --- a/src/incmake/env/rdhpcs/detect.mk +++ b/src/incmake/env/rdhpcs/detect.mk @@ -4,17 +4,22 @@ # ######################################################################## -ifneq (,$(and $(wildcard /scratch4),$(wildcard /scratch3))) +ifneq (,$(and $(wildcard /scratch),$(wildcard /scratch3))) NEMS_COMPILER?=intel $(call add_build_env,theia.$(NEMS_COMPILER),env/rdhpcs/theia.$(NEMS_COMPILER).mk) else - ifneq (,$(and $(wildcard /lfs1),$(wildcard /lfs3))) + ifneq (,$(and $(wildcard /scratch1),$(wildcard /scratch2))) NEMS_COMPILER?=intel - $(call add_build_env,jet.$(NEMS_COMPILER),env/rdhpcs/jet.$(NEMS_COMPILER).mk) + $(call add_build_env,hera.$(NEMS_COMPILER),env/rdhpcs/hera.$(NEMS_COMPILER).mk) else - ifneq (,$(shell hostname | grep -i gaea)) + ifneq (,$(and $(wildcard /lfs1),$(wildcard /lfs3))) NEMS_COMPILER?=intel - $(call add_build_env,gaea.$(NEMS_COMPILER),env/rdhpcs/gaea.$(NEMS_COMPILER).mk) + $(call add_build_env,jet.$(NEMS_COMPILER),env/rdhpcs/jet.$(NEMS_COMPILER).mk) + else + ifneq (,$(shell hostname | grep -i gaea)) + NEMS_COMPILER?=intel + $(call add_build_env,gaea.$(NEMS_COMPILER),env/rdhpcs/gaea.$(NEMS_COMPILER).mk) + endif endif endif endif diff --git a/src/incmake/env/rdhpcs/hera.intel.mk b/src/incmake/env/rdhpcs/hera.intel.mk new file mode 100644 index 00000000..5eb5cebe --- /dev/null +++ b/src/incmake/env/rdhpcs/hera.intel.mk @@ -0,0 +1,7 @@ +MACHINE_ID=hera +FULL_MACHINE_ID=hera +USE_MODULES=YES +DEFAULT_MODULE=$(FULL_MACHINE_ID)/ESMF_NUOPC +BUILD_TARGET=$(FULL_MACHINE_ID).$(NEMS_COMPILER) +NEMS_COMPILER=intel +MODULE_LOGIC=$(call ULIMIT_MODULE_LOGIC,200000) diff --git a/tests/commit.def b/tests/commit.def index 95fd58af..9f663d9f 100644 --- a/tests/commit.def +++ b/tests/commit.def @@ -1,28 +1,28 @@ # Directory to receive the webpage with regression test results -#ON tujet WEBPAGE /lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/combo/ -#ON ujet.slurm WEBPAGE /lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/combo/ -ON theia WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/combo/ -#ON theia.intel WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/combo/ -ON theia.slurm.intel WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/combo/ -ON wcoss1 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/combo/ -ON wcoss2 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/combo/ -ON wcoss_cray WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/combo/ -ON wcoss_dell_p3 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/combo/ -#ON gaea WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/combo/ +#ON tujet WEBPAGE /lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +#ON ujet.slurm WEBPAGE /lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON theia WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +#ON theia.intel WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON theia.slurm.intel WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON wcoss1 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON wcoss2 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON wcoss_cray WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON wcoss_dell_p3 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +#ON gaea WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ USER ACCOUNT IS Ratko.Vasic ROLE ACCOUNT IS emc.nemspara # nems branch - branch of NEMS that is being tested. Set to "default" # to test the app's own NEMS -NEMS BRANCH IS combogsdww3nems +NEMS BRANCH IS commit_tmp # app branch - branch to use for committing logs to each -APP BRANCH IS combo-commit +#APP BRANCH IS NUOPC-commit # If relevant, the starting branch that we copy to make the app # branch. Default is the master branch. -#APP NEMSfv3gfs CHECKOUT combo +#APP NEMSfv3gfs CHECKOUT NUOPC # master branch - name of the git "master" branch. Do not change. MASTER BRANCH IS master diff --git a/tests/multi-app-test.sh b/tests/multi-app-test.sh index 480b68b5..e0078f99 100755 --- a/tests/multi-app-test.sh +++ b/tests/multi-app-test.sh @@ -1560,7 +1560,7 @@ push_to_master() { done # Check out $master_branch of NEMS: - git clone gerrit:NEMS NEMS + git clone github:NEMS NEMS cd NEMS git checkout "$master_branch" diff --git a/tests/nightly/run-from-wcoss.sh b/tests/nightly/run-from-wcoss.sh index 44eb2b77..c44bf2a9 100755 --- a/tests/nightly/run-from-wcoss.sh +++ b/tests/nightly/run-from-wcoss.sh @@ -13,6 +13,12 @@ if [[ "$hostchar" == "$prodchar" ]] ; then exit 1 fi +#WCOSS_Cray need to load newer git version +if [[ `hostname | cut -c2-6` == "login" ]] ; then + source /opt/modules/default/init/sh + module use /usrx/local/dev/modulefiles + module load git/2.18.0 +fi cd $( dirname "$0" ) cd .. From be0dea94b1f18108a617915f6521501e3f352596 Mon Sep 17 00:00:00 2001 From: Ratko Vasic Date: Thu, 5 Sep 2019 15:17:25 +0000 Subject: [PATCH 07/13] Port 2 hera --- tests/apps.def | 45 +++++---------- tests/commit.def | 18 +++--- tests/rtgen | 146 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 165 insertions(+), 44 deletions(-) diff --git a/tests/apps.def b/tests/apps.def index cec5fd87..f67a8874 100644 --- a/tests/apps.def +++ b/tests/apps.def @@ -1,19 +1,12 @@ -# JET NOTE: We only list one jet generation (the oldest) because it -# takes too long to test all three generations. - # List of valid platforms and the human-readable names of each. -#PLATFORM xjet NAME xJet -#PLATFORM svjet NAME sJet and vJet -#PLATFORM tujet NAME uJet and tJet -#PLATFORM ujet.slurm NAME uJet SLURM Test PLATFORM theia NAME Theia -#PLATFORM theia.intel NAME Theia (Intel compiler) PLATFORM theia.slurm.intel NAME Theia (SLURM test) +PLATFORM hera NAME Hera +PLATFORM hera.intel NAME Hera (SLURM test) PLATFORM wcoss1 NAME WCOSS Phase 1 PLATFORM wcoss2 NAME WCOSS Phase 2 PLATFORM wcoss_cray NAME WCOSS Cray PLATFORM wcoss_dell_p3 NAME WCOSS Phase 3 -#PLATFORM gaea NAME GAEA C3 # List of known apps and the compsets to run for each app. APP NEMSfv3gfs COMPSETS -f @@ -29,39 +22,27 @@ APP FV3GFS-GSDCHEM URL gerrit:EMC_FV3GFS-GSDCHEM # Shell expressions that generate scrub space for a given $username # on each platform. -#ON xjet SCRUB /lfs3/projects/hfv3gfs/$username/scrub/xjet -#ON svjet SCRUB /lfs3/projects/hfv3gfs/$username/scrub/svjet -#ON tujet SCRUB /lfs3/projects/hfv3gfs/$username/scrub/tujet -#ON ujet.slurm SCRUB /lfs3/projects/hfv3gfs/$username/scrub/ujet.slurm -ON theia SCRUB /scratch4/NCEPDEV/nems/scrub/$username -#ON theia.intel SCRUB /scratch4/NCEPDEV/nems/scrub/$username +ON theia SCRUB /scratch4/NCEPDEV/nems/scrub/$username ON theia.slurm.intel SCRUB /scratch4/NCEPDEV/nems/scrub/$username -ON wcoss1 SCRUB /ptmpp1/$username -ON wcoss2 SCRUB /ptmpd3/$username -ON wcoss_cray SCRUB /gpfs/hps2/ptmp/$username -ON wcoss_dell_p3 SCRUB /gpfs/dell2/ptmp/$username -#ON gaea SCRUB $( ls -1d /lustre/f2/scratch/*/$username /lustre/f2/scratch/$username | head -1 ) +ON hera SCRUB /scratch1/NCEPDEV/nems/$username +ON hera.intel SCRUB /scratch1/NCEPDEV/nems/$username +ON wcoss1 SCRUB /ptmpp1/$username +ON wcoss2 SCRUB /ptmpd3/$username +ON wcoss_cray SCRUB /gpfs/hps2/ptmp/$username +ON wcoss_dell_p3 SCRUB /gpfs/dell2/ptmp/$username # List of apps to run on each platform. -#ON xjet APPS NEMSfv3gfs -#ON svjet APPS NEMSfv3gfs -#ON tujet APPS NEMSfv3gfs -#ON ujet.slurm APPS NEMSfv3gfs ON theia APPS FV3-MOM6-CICE5 -#ON theia.intel APPS NEMSfv3gfs FV3GFS-GSDCHEM ON theia.slurm.intel APPS NEMSfv3gfs WW3-FV3 +ON hera APPS FV3-MOM6-CICE5 +ON hera.intel APPS NEMSfv3gfs WW3-FV3 ON wcoss1 APPS NEMSfv3gfs ON wcoss2 APPS NEMSfv3gfs WW3-FV3 ON wcoss_cray APPS NEMSfv3gfs FV3GFS-GSDCHEM ON wcoss_dell_p3 APPS NEMSfv3gfs -#ON gaea APPS NEMSfv3gfs # Extra arguments to rt.sh for each platform -#ON xjet EXTRA_ARGS --temp-dir /lfs3/projects/hfv3gfs/$USER/scrub/xjet --project hfv3gfs --platform xjet -#ON svjet EXTRA_ARGS --temp-dir /lfs3/projects/hfv3gfs/$USER/scrub/svjet --project hfv3gfs --platform svjet -#ON ujet.slurm EXTRA_ARGS --temp-dir /lfs3/projects/hfv3gfs/$USER/scrub/ujet.slurm --project hfv3gfs --platform ujet.slurm -#ON tujet EXTRA_ARGS --temp-dir /lfs3/projects/hfv3gfs/$USER/scrub/tujet --project hfv3gfs --platform tujet ON theia EXTRA_ARGS --platform theia -#ON theia.intel EXTRA_ARGS --platform theia.intel ON theia.slurm.intel EXTRA_ARGS --platform theia.slurm.intel -#ON gaea EXTRA_ARGS --platform gaea.c3 +ON hera EXTRA_ARGS --platform hera +ON hera.intel EXTRA_ARGS --platform hera.intel diff --git a/tests/commit.def b/tests/commit.def index 9f663d9f..acd65c66 100644 --- a/tests/commit.def +++ b/tests/commit.def @@ -1,14 +1,12 @@ # Directory to receive the webpage with regression test results -#ON tujet WEBPAGE /lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ -#ON ujet.slurm WEBPAGE /lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ -ON theia WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ -#ON theia.intel WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON theia WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ ON theia.slurm.intel WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ -ON wcoss1 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ -ON wcoss2 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ -ON wcoss_cray WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ -ON wcoss_dell_p3 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ -#ON gaea WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON hera WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON hera.intel WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON wcoss1 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON wcoss2 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON wcoss_cray WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ +ON wcoss_dell_p3 WEBPAGE jetscp.rdhpcs.noaa.gov:/lfs3/projects/hfv3gfs/emc.nemspara/web/nems-commit/NUOPC/ USER ACCOUNT IS Ratko.Vasic ROLE ACCOUNT IS emc.nemspara @@ -17,7 +15,7 @@ ROLE ACCOUNT IS emc.nemspara # to test the app's own NEMS NEMS BRANCH IS commit_tmp -# app branch - branch to use for committing logs to each +# app branch - branch to use for committing logs to each #APP BRANCH IS NUOPC-commit # If relevant, the starting branch that we copy to make the app diff --git a/tests/rtgen b/tests/rtgen index e3024b03..ddb4486b 100755 --- a/tests/rtgen +++ b/tests/rtgen @@ -551,6 +551,63 @@ def decide_project_theia(): logger.info('%10s : %6d %s'%(proj,projalloc[proj],chose)) return projchoose +# Hera project selection + +def decide_project_hera(): +# """!Chooses which project to use when submitting jobs on Hera. + +# Uses the saccount_params program to scan the available core-hours +# on Hera. Chooses the project with the most available core-hours. +# If no projects have resources, or if some error happens, then +# the "nems" project is used.""" +# logger=logging.getLogger('rtgen') +# try: +# account_params=produtil.run.runstr( +# batchexe('account_params'),logger=jlogger) +# except(EnvironmentError,ExitStatusException) as ee: +# logger.warning('Cannot run account_params: '+str(ee)) +# logger.warning('Will use project "nems" for cpu hours.') + return 'nems' +# default_project='nems' +# projects=list() +# projalloc=dict() +# for line in account_params.splitlines(): +# # Allocation: 6912 stmp 0.00 0.00 0.00 +# m=re.match('^\s*Allocation:\s+(\d+)\s+(\S+)\s+([0-9.]+)',line) +# if not m: +# # skip other lines +# logger.debug('Skip line: '+line.rstrip()) +# continue +# gid,name,alloc = m.groups() +# try: +# alloc=float(alloc) +# if name=='nems': alloc/=2 +# if not projects: +# default_project=name +# projects.append(name) +# projalloc[name]=alloc +# except (ValueError,TypeError) as vte: +# logger.warning('Cannot parse: '+line.rstrip()) +# continue +# if not projects: +# # Parse error or failure of account_params. +# logger.warning('Could not parse account_params output. Will use default: '+default_project) +# return default_project +# projects.sort(lambda a,b: cmp(projalloc[a],projalloc[b])) +# projchoose=projects[-1] + +# if projalloc[projchoose]<1.0: +# logger.warning('All projects passed core-hour limit; will use first project: '+default_project) +# return default_project + +# for proj in projects: +# if proj==projchoose: +# chose='<== chosen' +# else: +# chose='' +# logger.info('%10s : %6d %s'%(proj,projalloc[proj],chose)) +# return projchoose + def decide_tmp_theia(): """!Chooses a scratch space to use on Theia, based on how close each space is to its quota. @@ -566,6 +623,7 @@ def decide_tmp_theia(): '/scratch3/NCEPDEV/stmp2', '/scratch4/NCEPDEV/stmp3', '/scratch4/NCEPDEV/stmp4' ] + return '/scratch3/NCEPDEV/stmp1' try: args=['-B', '1G', '--' ] args.extend(stmps) @@ -626,6 +684,82 @@ def decide_tmp_theia(): ######################################################################## +def decide_tmp_hera(): + """!Chooses a scratch space to use on Hera, based on how close + each space is to its quota. + + Uses the pan_df program to check the quota of stmp1 through stmp4. + Returns the one that is farthest from quota based on percent + usage. If this process fails, such as pan_df giving a non-zero + return status or unparseable output, then a random stmp is chosen. + + @returns path to a temporary directory, which may not yet exist.""" +# logger=logging.getLogger('rtgen') +# stmps=[ '/scratch1/NCEPDEV/stmp2', +# '/scratch1/NCEPDEV/stmp4', +# '/scratch2/NCEPDEV/stmp1', +# '/scratch2/NCEPDEV/stmp3' ] + return '/scratch1/NCEPDEV/stmp2' +# try: +# args=['-B', '1G', '--' ] +# args.extend(stmps) +# pan_df=produtil.run.runstr(batchexe('pan_df')[args]) +# storage=dict() +# for m in re.finditer(r'''(?isx) +# (?: +# \s* (?P \S+ ) +# [ \t\r\n]+ (?P \d+ ) +# \s+ (?P \d+ ) +# \s+ (?P \d+ ) +# \s+ (?P [0-9.]+ ) % +# \s+ (?P \S+ ) +# | +# (?P [^\r\n]*[\r\n] | [^\r\n]*\Z ) ) +# ''',pan_df): +# # Skip lines that do not have usage information (such as +# # the header line). +# if m.group('bad') or not m.group('mntpnt'): +# logger.debug('pan_df: ignoring %s'%(repr(m.group(0).strip()),)) +# continue + +# mntpnt=m.group('mntpnt') +# percent=m.group('percent') +# percent=int(percent,10) + +# # Skip lines with invalid mount points: +# if not os.path.isdir(mntpnt): +# logger.warning( +# 'Ignoring invalid mount point from pan_df: %s'%( +# mntpnt,)) +# continue + +# # Store all valid lines: +# logger.debug('pan_df: %s at %d%% usage'%(mntpnt,percent)) +# storage[mntpnt]=percent + +# # Return the least used stmp if available. +# if not storage: +# logger.error( +# 'No valid lines seen in pan_df output.') +# else: +# by_usage=storage.keys() +# by_usage.sort( +# lambda a,b: cmp(storage[a],storage[b])) +# logger.info('%s: use this tmp (has lowest usage at %d%%)'%( +# by_usage[0],storage[by_usage[0]])) +# return os.path.join(by_usage[0],username()) + +# except(EnvironmentError,ExitStatusException,KeyError,ValueError) as e: +# # Log all likely errors before emergency fallback option: +# logger.error(str(e),exc_info=True) + +# use_me=random.choice(stmps) +# logger.warning("Auto-detection of least used stmp failed.") +# logger.warning("%s: randomly chosen stmp"%(use_me,)) +# return os.path.join(use_me,username()) + +######################################################################## + # Jet project detection def decide_tmp_jet(): @@ -941,6 +1075,10 @@ class RTGen(TestGen): out.write('module use /scratch4/NCEPDEV/nems/noscrub/emc.nemspara/soft/modulefiles/\n') out.write('module load rocoto/1.3.0rc2\n') out.write('module load hpss emc-utils/1.1.0 ; have_qoutql=YES\n') + elif here.name == 'hera': + out.write('module use /scratch1/NCEPDEV/nems/emc.nemspara/soft/modulefiles/\n') + out.write('module load rocoto/1.3.1\n') + out.write('module load hpss emc-utils/1.1.0 ; have_qoutql=YES\n') elif here.name == 'gaea': out.write('module use /lustre/f2/pdata/ncep_shared/emc.nemspara/soft/modulefiles\n') out.write('module load rocoto/1.3.0rc2 emc-utils/1.0.0 ; have_qoutql=YES\n') @@ -1347,6 +1485,8 @@ def rtgen(verbose,baseline_dir,dry_run,baseline,unique_id,temp, if project is None: if produtil.cluster.name() == 'theia': project=decide_project_theia() + elif produtil.cluster.name() == 'hera': + project=decide_project_hera() elif produtil.cluster.name() in ['gyre','tide','luna','surge','venus','mars']: project=decide_project_wcoss() elif produtil.cluster.name() == 'jet': @@ -1356,7 +1496,7 @@ def rtgen(verbose,baseline_dir,dry_run,baseline,unique_id,temp, elif produtil.cluster.name() == 'gaea': project=decide_project_gaea() else: - fail('Unknown system "'+produtil.cluster.name()+'". Only Theia, Jet, WCOSS, and GAEA are supported.') + fail('Unknown system "'+produtil.cluster.name()+'". Only Hera, Theia, Jet, WCOSS, and GAEA are supported.') jlogger.info('Auto-chosen project for job submission is %s'%( repr(project),)) else: @@ -1367,6 +1507,8 @@ def rtgen(verbose,baseline_dir,dry_run,baseline,unique_id,temp, if temp is None: if produtil.cluster.name() == 'theia': scratch_dir=decide_tmp_theia() + elif produtil.cluster.name() == 'hera': + scratch_dir=decide_tmp_hera() elif produtil.cluster.name() in ['gyre','tide','luna','surge','mars','venus']: scratch_dir=decide_tmp_wcoss(produtil.cluster.where().wcoss_phase) elif produtil.cluster.name() == 'gaea': @@ -1379,7 +1521,7 @@ def rtgen(verbose,baseline_dir,dry_run,baseline,unique_id,temp, assert('nceplibs' not in scratch_dir) assert('hwrfdata' not in scratch_dir) else: - fail('Unknown system "'+produtil.cluster.name()+'". Only Theia, Jet, WCOSS, and GAEA are supported.') + fail('Unknown system "'+produtil.cluster.name()+'". Only Hera, Theia, Jet, WCOSS, and GAEA are supported.') jlogger.info('Auto-chosen ptmp is %s'%(repr(scratch_dir),)) else: scratch_dir=temp From 7b4fe821dc381c4a0c502bd6ffce3e2607ceb85a Mon Sep 17 00:00:00 2001 From: Ratko Vasic Date: Thu, 5 Sep 2019 19:06:08 +0000 Subject: [PATCH 08/13] Fix rtgen (path in decide_tmp_hera) --- tests/rtgen | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/rtgen b/tests/rtgen index ddb4486b..24af70e3 100755 --- a/tests/rtgen +++ b/tests/rtgen @@ -699,7 +699,7 @@ def decide_tmp_hera(): # '/scratch1/NCEPDEV/stmp4', # '/scratch2/NCEPDEV/stmp1', # '/scratch2/NCEPDEV/stmp3' ] - return '/scratch1/NCEPDEV/stmp2' + return '/scratch1/NCEPDEV/stmp2/'+username() # try: # args=['-B', '1G', '--' ] # args.extend(stmps) From 32e84a62db807eeff4e185aba11c67362dc7e8f2 Mon Sep 17 00:00:00 2001 From: Ratko Vasic Date: Fri, 6 Sep 2019 17:47:59 +0000 Subject: [PATCH 09/13] Move produtil from vlab to github --- .gitmodules | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 4f564f93..d9b7f42d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,4 @@ [submodule "tests/produtil/NCEPLIBS-pyprodutil"] path = tests/produtil/NCEPLIBS-pyprodutil - url = gerrit:NCEPLIBS-pyprodutil + url = https://github.com/NOAA-EMC/NCEPLIBS-pyprodutil + branch = port-2-hera From dbf09897790e59551cf1d3a64f4dce280f345d31 Mon Sep 17 00:00:00 2001 From: Ratko Vasic Date: Fri, 6 Sep 2019 17:50:52 +0000 Subject: [PATCH 10/13] point to port-2-hera branch --- tests/produtil/NCEPLIBS-pyprodutil | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/produtil/NCEPLIBS-pyprodutil b/tests/produtil/NCEPLIBS-pyprodutil index 231628a6..6afc22ab 160000 --- a/tests/produtil/NCEPLIBS-pyprodutil +++ b/tests/produtil/NCEPLIBS-pyprodutil @@ -1 +1 @@ -Subproject commit 231628a66feeb00594dca973308c182add86e0a9 +Subproject commit 6afc22aba98276452595d7e0cd76faa79e74c2dc From 8e3bbd7a3d24de722e2a0b60d99f6bdb1a9d9829 Mon Sep 17 00:00:00 2001 From: RatkoVasic-NOAA <37597874+RatkoVasic-NOAA@users.noreply.github.com> Date: Fri, 6 Sep 2019 14:22:07 -0400 Subject: [PATCH 11/13] Update rtgen Fix error in proj_tmp_theia --- tests/rtgen | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/rtgen b/tests/rtgen index 24af70e3..afbbd932 100755 --- a/tests/rtgen +++ b/tests/rtgen @@ -623,7 +623,6 @@ def decide_tmp_theia(): '/scratch3/NCEPDEV/stmp2', '/scratch4/NCEPDEV/stmp3', '/scratch4/NCEPDEV/stmp4' ] - return '/scratch3/NCEPDEV/stmp1' try: args=['-B', '1G', '--' ] args.extend(stmps) From 8989e81dbf49e25ed330615aecd600d3321238c6 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Sun, 8 Sep 2019 20:59:36 -0600 Subject: [PATCH 12/13] This commit #refs 67538, squashed commit of the following: commit c9d7d0028f37e3f57a47055ded7dbe2a8c24784e Merge: 57d5044d 02f33190 Author: Dom Heinzeller Date: Sun Sep 8 20:32:11 2019 -0600 Merge pull request #8 from climbfuji/gmtb_develop_monster_merge_20190904 Merge gsd/develop, restore GNU portability commit 02f3319050eac60044c84e1570144825dab86844 Merge: abe9efba d1be4453 Author: Dom Heinzeller Date: Wed Sep 4 09:04:52 2019 -0600 Merge branch 'gsd/develop' of https://github.com/NCAR/NEMS into gmtb_develop_update_from_master_20190830 commit abe9efba450215961cdfc4948f76668ed4833f31 Author: Dom Heinzeller Date: Tue Sep 3 16:25:12 2019 -0600 src/module_MEDIATOR.F90: fix invalid Fortran code for GNU compiler commit 57d5044dab0c4ac7819afbe9ae1736dd893d34f6 Merge: 71a4c822 2327daef Author: Dom Heinzeller Date: Tue Sep 3 09:20:02 2019 -0600 Merge pull request #7 from climbfuji/gmtb_develop_update_from_master_20190830 gmtb/develop: update from master 2019/08/30 commit 2327daef375e9b9fcac824557cbd04564ff734de Author: Ratko Vasic Date: Fri Aug 30 19:16:52 2019 +0000 Posrt 2 hera commit e638b7e1bae1c0fabd587b8f051ca29a2b6177ef Author: Raffaele Montuoro Date: Thu Aug 22 20:42:22 2019 +0000 Add standard name to NUOPC Field Dictionary defining instantaneous specific humidity tendency due to convection. commit c3ec2c4858dd522ff029a4f6d9b306ab023bc91e Author: Gerhard Theurich Date: Wed Aug 21 23:26:44 2019 +0000 Support the official NUOPC Verbosity strings "off", "low", "high", "max" for compliance. commit 71a4c8221f47b5ea2a50fdb385fc5f60c3f6f3bc Merge: fd81084c 89ddf135 Author: Dom Heinzeller Date: Fri Aug 30 07:39:05 2019 -0600 Merge pull request #3 from climbfuji/bugfix_nemscompsetrun Bugfix for NemsCompset detection of Theia/Hera commit fd81084c2d6fa869932e5b3b4200b8da157bbc24 Merge: 283eeb11 053bd171 Author: Dom Heinzeller Date: Thu Aug 29 15:35:33 2019 -0600 Merge pull request #4 from grantfirl/gmtb/develop add Julie as codeowner commit 053bd171b296d4dae13c4dbda31398a2bfdc2636 Author: Grant Firl Date: Thu Aug 29 15:26:22 2019 -0600 add Julie as codeowner commit 89ddf135b08e7f7b77d72b4459fe40aa9cc3d361 Author: Dom Heinzeller Date: Wed Aug 28 13:36:52 2019 -0600 src/incmake/env/rdhpcs/detect.mk: bugfix for NEMSCompsetRun commit 283eeb11bbde78c8e2d761e6e42b6af074655732 Merge: 1c71222c e142f4ef Author: Dom Heinzeller Date: Tue Aug 27 15:45:57 2019 -0600 Merge pull request #2 from climbfuji/hera_update_20190827 gmtb/develop: update hera config commit e142f4ef8cf9ed3104425a1c4f92ff6a14436c43 Author: Dom Heinzeller Date: Tue Aug 27 15:04:16 2019 -0600 src/incmake/env/rdhpcs/detect.mk: test for hostname prefix, since hera and theia both have /scratch1 through /scratch4 mounted commit 028e1e8c662c52ef999831b0129c7663b7216a19 Author: Dom Heinzeller Date: Tue Aug 27 13:45:29 2019 -0600 Update src/incmake/env/rdhpcs/detect.mk, src/conf/module-setup.csh.inc, src/conf/module-setup.sh.inc after move from Juno test system to Hera. Since /scratch4 from theia is also mounted on hera, need to switch the order of detection. commit 1c71222cb07c9d6c006cc305050afe193adf5ce4 Merge: 6bf81091 5b244abe Author: Dom Heinzeller Date: Sat Aug 17 16:25:57 2019 -0600 Merge pull request #1 from climbfuji/hera_support Add support for hera/juno (theia successor) commit 5b244abe31b637c5f5521dddab454a44d49e4f3f Author: Dom Heinzeller Date: Fri Aug 16 09:33:34 2019 -0600 Add support for hera/juno (theia successor) commit d1be44530ceaa9884b57009aa99376c08949dfe0 Author: Laurie Carson Date: Fri Aug 16 09:01:15 2019 -0600 Add CODEOWNERS for NCAR fork of NEMS repository commit 766e0cd26872845fce90fff1ee881b9bfd9c7779 Author: Laurie Carson Date: Fri Aug 16 09:00:10 2019 -0600 Add CODEOWNERS for NCAR fork of NEMS repository commit 6bf8109179b00f843b6bf7a26138da43da1fcfc6 Author: Laurie Carson Date: Fri Aug 16 08:59:16 2019 -0600 Add CODEOWNERS for NCAR fork of NEMS repository --- src/conf/module-setup.csh.inc | 8 +++++++- src/conf/module-setup.sh.inc | 8 +++++++- src/module_MEDIATOR.F90 | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/conf/module-setup.csh.inc b/src/conf/module-setup.csh.inc index 92776744..d3145e83 100644 --- a/src/conf/module-setup.csh.inc +++ b/src/conf/module-setup.csh.inc @@ -8,7 +8,13 @@ if ( { test -d /lfs3 } ) then source /apps/lmod/lmod/init/$__ms_shell endif module purge -else if ( { test -d /scratch3 } ) then +else if ( { test -d /scratch1 -a ! -d /scratch } ) then + # We are on NOAA Hera + if ( ! { module help >& /dev/null } ) then + source /apps/lmod/lmod/init/$__ms_shell + endif + module purge +else if ( { test -d /scratch3 -a -d /scratch } ) then # We are on NOAA Theia if ( ! { module help >& /dev/null } ) then source /apps/lmod/lmod/init/$__ms_shell diff --git a/src/conf/module-setup.sh.inc b/src/conf/module-setup.sh.inc index 7dffac0a..cf5f853c 100644 --- a/src/conf/module-setup.sh.inc +++ b/src/conf/module-setup.sh.inc @@ -22,7 +22,13 @@ if [[ -d /lfs3 ]] ; then source /apps/lmod/lmod/init/$__ms_shell fi module purge -elif [[ -d /scratch3 ]] ; then +elif [[ -d /scratch1 && ! -d /scratch ]] ; then + # We are on NOAA Hera + if ( ! eval module help > /dev/null 2>&1 ) ; then + source /apps/lmod/lmod/init/$__ms_shell + fi + module purge +elif [[ -d /scratch3 && -d /scratch ]] ; then # We are on NOAA Theia if ( ! eval module help > /dev/null 2>&1 ) ; then source /apps/lmod/lmod/init/$__ms_shell diff --git a/src/module_MEDIATOR.F90 b/src/module_MEDIATOR.F90 index b2e2d34c..6a3d44fd 100644 --- a/src/module_MEDIATOR.F90 +++ b/src/module_MEDIATOR.F90 @@ -922,7 +922,7 @@ subroutine InitializeP0(gcomp, importState, exportState, clock, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=__FILE__)) return ! bail out dbug_flag = ESMF_UtilString2Int(value, & - specialStringList=(/"off","low","high","max"/), & + specialStringList=(/character(4)::"off","low","high","max"/), & specialValueList=(/0,1,100,255/), rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=__FILE__)) return ! bail out From cabd6a5719e6e578d6f3084b2ec28e47798f039c Mon Sep 17 00:00:00 2001 From: Ratko Vasic Date: Tue, 10 Sep 2019 19:24:40 +0000 Subject: [PATCH 13/13] Update NCEPLIBS-pyprodutil (Slurm related) --- tests/produtil/NCEPLIBS-pyprodutil | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/produtil/NCEPLIBS-pyprodutil b/tests/produtil/NCEPLIBS-pyprodutil index 6afc22ab..1c96952b 160000 --- a/tests/produtil/NCEPLIBS-pyprodutil +++ b/tests/produtil/NCEPLIBS-pyprodutil @@ -1 +1 @@ -Subproject commit 6afc22aba98276452595d7e0cd76faa79e74c2dc +Subproject commit 1c96952b092e8dc4da03b741ae1e8453fc9fe099