diff --git a/.config_files.xml b/.config_files.xml index a1775b52ce..e459a6e5d3 100644 --- a/.config_files.xml +++ b/.config_files.xml @@ -19,8 +19,8 @@ $SRCROOT $SRCROOT - $CIMEROOT/src/components/data_comps_mct/dlnd - $CIMEROOT/src/components/cdeps/dlnd + $SRCROOT/components/cpl7/components/data_comps_mct/dlnd + $SRCROOT/components/cdeps/dlnd $CIMEROOT/src/components/stub_comps_$COMP_INTERFACE/slnd $CIMEROOT/src/components/xcpl_comps_$COMP_INTERFACE/xlnd diff --git a/Externals.cfg b/Externals.cfg index 881b4e6ee7..93dd607730 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -8,7 +8,7 @@ required = True local_path = components/cism protocol = git repo_url = https://github.com/ESCOMP/CISM-wrapper -tag = cismwrap_2_1_83 +tag = cismwrap_2_1_85 externals = Externals_CISM.cfg required = True @@ -16,14 +16,14 @@ required = True local_path = components/rtm protocol = git repo_url = https://github.com/ESCOMP/RTM -tag = rtm1_0_76 +tag = rtm1_0_77 required = True [mosart] local_path = components/mosart protocol = git repo_url = https://github.com/ESCOMP/MOSART -tag = mosart1_0_42 +tag = mosart1_0_43 required = True [mizuRoute] @@ -37,22 +37,50 @@ required = True local_path = cime protocol = git repo_url = https://github.com/ESMCI/cime -tag = branch_tags/cime5.8.47_a01 +tag = cime6.0.3 required = True [cmeps] -local_path = cime/src/drivers/nuopc/ +tag = cmeps0.13.15 protocol = git repo_url = https://github.com/ESCOMP/CMEPS.git -tag = cmeps0.13.2 +local_path = components/cmeps required = True [cdeps] -local_path = components/cdeps +tag = cdeps0.12.14 protocol = git repo_url = https://github.com/ESCOMP/CDEPS.git -tag = cdeps0.12.11 -externals = Externals_CDEPS.cfg +local_path = components/cdeps +externals = Externals_CDEPS.cfg +required = True + +[cpl7] +tag = cpl7.0.3 +protocol = git +repo_url = https://github.com/ESCOMP/CESM_CPL7andDataComps +local_path = components/cpl7 +required = True + +[share] +tag = share1.0.2 +protocol = git +repo_url = https://github.com/ESCOMP/CESM_share +local_path = share +required = True + +[mct] +tag = MCT_2.11.0 +protocol = git +repo_url = https://github.com/MCSclimate/MCT +local_path = libraries/mct +required = True + +[parallelio] +tag = pio2_5_4 +protocol = git +repo_url = https://github.com/NCAR/ParallelIO +local_path = libraries/parallelio required = True [doc-builder] diff --git a/cime_config/buildnml b/cime_config/buildnml index e3f6a5b933..0c5492da5a 100755 --- a/cime_config/buildnml +++ b/cime_config/buildnml @@ -32,7 +32,7 @@ def buildnml(case, caseroot, compname): ############################################################################### """Build the CTSM namelist """ - # Build the component namelist + # Build the component namelist if compname != "ctsm" and compname != "clm": raise AttributeError @@ -73,10 +73,10 @@ def buildnml(case, caseroot, compname): os.makedirs(ctsmconf) # ----------------------------------------------------- - # Create config_cache.xml file + # Create config_cache.xml file # ----------------------------------------------------- - # Note that build-namelist utilizes the contents of the config_cache.xml file in + # Note that build-namelist utilizes the contents of the config_cache.xml file in # the namelist_defaults.xml file to obtain namelist variables clm_phys = case.get_value("CLM_PHYSICS_VERSION") @@ -159,15 +159,15 @@ def buildnml(case, caseroot, compname): ignore = "-ignore_ic_date" tuning = "-lnd_tuning_mode %s "%lnd_tuning_mode - + spinup = "-clm_accelerated_spinup %s "%clm_accelerated_spinup - + infile = os.path.join(ctsmconf, "namelist") - + inputdata_file = os.path.join(caseroot,"Buildconf","ctsm.input_data_list") - + lndfrac_file = os.path.join(lnd_domain_path,lnd_domain_file) - + config_cache_file = os.path.join(caseroot,"Buildconf", compname+"conf","config_cache.xml") # ----------------------------------------------------- @@ -191,7 +191,7 @@ def buildnml(case, caseroot, compname): # If multi-instance case does not have restart file, use # single-case restart for each instance - rpointer = "rpointer.lnd" + rpointer = "rpointer.lnd" if (os.path.isfile(os.path.join(rundir,rpointer)) and (not os.path.isfile(os.path.join(rundir,rpointer + inst_string)))): shutil.copy(os.path.join(rundir, rpointer), @@ -234,7 +234,7 @@ def buildnml(case, caseroot, compname): "-configuration %s -structure %s " "-lnd_frac %s -glc_nec %s %s -co2_ppmv %s -co2_type %s -config %s -driver %s " "%s %s %s %s" - %(cmd, _CIMEROOT, infile, din_loc_root, inputdata_file, ignore, start_ymd, clm_namelist_opts, + %(cmd, _CIMEROOT, infile, din_loc_root, inputdata_file, ignore, start_ymd, clm_namelist_opts, nomeg, usecase, lnd_grid, clmusr, start_type, caseroot, configuration, structure, lndfrac_file, glc_nec, glc_use_antarctica_flag, ccsm_co2_ppmv, clm_co2_type, config_cache_file, driver, diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index f0e7ac509b..7dafdcfd27 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -37,20 +37,6 @@ - - - FAIL - ESMCI/cime#3915 - - - - - - FAIL - ESMCI/cime#3915 - - - FAIL diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 97bd63eb06..52bf8596c4 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -1432,7 +1432,7 @@ - @@ -1680,7 +1680,7 @@ - + @@ -2422,7 +2422,7 @@ - + @@ -2442,7 +2442,7 @@ - + @@ -2520,16 +2520,6 @@ - - - - - - - - - - diff --git a/cime_config/testdefs/testmods_dirs/clm/NEON_NIWO/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/NEON_NIWO/include_user_mods deleted file mode 100644 index 56aab07c3e..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/NEON_NIWO/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../../../../usermods_dirs/NEON/NIWO diff --git a/cime_config/testdefs/testmods_dirs/clm/extra_outputs/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/extra_outputs/user_nl_clm index 6d1167fc39..6dc5225f1d 100644 --- a/cime_config/testdefs/testmods_dirs/clm/extra_outputs/user_nl_clm +++ b/cime_config/testdefs/testmods_dirs/clm/extra_outputs/user_nl_clm @@ -1,2 +1,6 @@ calc_human_stress_indices = 'ALL' hist_master_list_file = .true. + +hist_fincl1 += 'GSSUN:L43200', 'GSSHA:L43200', 'FSDSND:L43200', 'FSRND:L43200', 'FSRSFND:L43200', + 'SSRE_FSRND:L43200', 'FSDSVD:L43200', 'FSDSVI:L43200', + 'FSRVD:L43200', 'FSRSFVD:L43200', 'SSRE_FSRVD:L43200' diff --git a/cime_config/testdefs/testmods_dirs/clm/localtimeOutput/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/localtimeOutput/include_user_mods deleted file mode 100644 index fe0e18cf88..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/localtimeOutput/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../default diff --git a/cime_config/testdefs/testmods_dirs/clm/localtimeOutput/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/localtimeOutput/user_nl_clm deleted file mode 100644 index 772436f82b..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/localtimeOutput/user_nl_clm +++ /dev/null @@ -1,3 +0,0 @@ - hist_fincl1 += 'GSSUN:L43200', 'GSSHA:L43200', 'FSDSND:L43200', 'FSRND:L43200', 'FSRSFND:L43200', - 'SSRE_FSRND:L43200', 'FSDSVD:L43200', 'FSDSVI:L43200', 'PARVEG:L43200', - 'FSRVD:L43200', 'FSRSFVD:L43200', 'SSRE_FSRVD:L43200' diff --git a/cime_config/usermods_dirs/NEON/defaults/user_nl_clm b/cime_config/usermods_dirs/NEON/defaults/user_nl_clm index 01db7d0380..742cd6f65e 100644 --- a/cime_config/usermods_dirs/NEON/defaults/user_nl_clm +++ b/cime_config/usermods_dirs/NEON/defaults/user_nl_clm @@ -19,7 +19,7 @@ !---------------------------------------------------------------------------------- flanduse_timeseries = ' ' ! This isn't needed for a non transient case, but will be once we start using transient compsets -fsurdat = "$DIN_LOC_ROOT/lnd/clm2/surfdata_map/NEON/surfdata_hist_16pfts_Irrig_CMIP6_simyr2000_${NEONSITE}_c210513.nc" +fsurdat = "$DIN_LOC_ROOT/lnd/clm2/surfdata_map/NEON/surfdata_hist_78pfts_CMIP6_simyr2000_${NEONSITE}_c210720.nc" model_year_align_urbantv = 2018 stream_year_first_urbantv = 2018 stream_year_last_urbantv = 2019 @@ -29,3 +29,9 @@ stream_year_last_ndep = 2019 model_year_align_popdens = 2018 stream_year_first_popdens = 2018 stream_year_last_popdens = 2019 +stream_fldfilename_lightng = '$DIN_LOC_ROOT/atm/datm7/NASA_LIS/clmforc.Li_2016_climo1995-2013.360x720.lnfm_Total_NEONarea_c210625.nc' +! h1 output stream +hist_fincl2 = 'AR','ELAI','FCEV','FCTR','FGEV','FIRA','FSA','FSH','GPP','H2OSOI', + 'HR','SNOW_DEPTH','TBOT','TSOI','SOILC_vr','FV','NET_NMIN_vr' +hist_mfilt(2) = 48 +hist_nhtfrq(2) = 1 diff --git a/doc/ChangeLog b/doc/ChangeLog index f8747837c6..0348311856 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,132 @@ =============================================================== +Tag name: ctsm5.1.dev049 +Originator(s): jedwards4b/erik (Erik Kluzek,UCAR/TSS,303-497-1326) +Date: Mon Jul 26 01:31:04 MDT 2021 +One-line Summary: Update externals, NEON updates, fix stop_option=date, move neon niwo test to match user_mods, local time option + +Purpose and description of changes +---------------------------------- + +Move the NEON_NIWO test to NEON/NIWO to match the names in usermods. Output particular fields for the NEON +cases, and use a reduced size dataset for lightning for NEON sites. Update NEON surface datasets with +new scripts included here. Fix stop option for NUOPC. NEON NIWO test in testlist explicity uses the user-mod +as well as the defaults testmod. + +This script is for modifying the surface dataset at neon sites using data available from the neon server. + +Also add the ability to output history fields for a particular time of day (in seconds) with the LXXXXX +history averaging option from Ronny Meier. + +Externals are updated extensively to the version with cpl7 cime directories split out for CESM. + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? No +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm5_1 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed or introduced +------------------------ + +Issues fixed (include CTSM Issue #): #1412 + Fixes #1412 -- Reduce data requirements for NEON single point sites + Fixes #1353 -- Need script to modify NEON surface datasets + +CIME Issues fixed (include issue #): #3915 + Fixes cime/#3915 -- CESM nuopc build fails on izumi_nag + +Known bugs introduced in this tag (include issue #): + #1437 -- modify_singlept_site_neon.py seems to have trouble finding latest file and creates hidden file for output + #1436 -- Need subset_data.py script to be able to run from any directory + +Known bugs found since the previous tag (include issue #): + #1429 -- Modified NEON surface datasets have errors + + +Notes of particular relevance for users +--------------------------------------- + +Caveats for users (e.g., need to interpolate initial conditions): + NEON cases now download data to $RUNDIR + +Changes to the datasets (e.g., parameter, surface or initial files): NEON sufdata + +Notes of particular relevance for developers: +--------------------------------------------- +NOTE: Be sure to review the steps in README.CHECKLIST.master_tags as well as the coding style in the Developers Guide +[Remove any lines that don't apply. Remove entire section if nothing applies.] + +Caveats for developers (e.g., code that is duplicated that requires double maintenance): + Note when you have a test with two testmod directories it won't be able to reduce any deuplication + that happens in directories used between the two. + +Changes to tests or testing: + Test mods in testlists can now include multiple test mod directories and this is used for the NEON test + + +Testing summary: regular +---------------- + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + build-namelist tests (if CLMBuildNamelist.pm has changed): + + cheyenne - PASS (47 tests differ from before because of NEON surface dataset update) + + tools-tests (test/tools) (if tools have been changed): + + cheyenne - OK + + python testing (if python code has changed; see instructions in python/README.md; document testing done): + + cheyenne - PASS + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + cheyenne ---- OK + izumi ------- OK + +Answer changes +-------------- + +Changes answers relative to baseline: No bit-for-bit + +------------- + +List any externals directories updated (cime, rtm, mosart, cism, fates, etc.): cism, mosart, rtm, cime, cmeps, cdeps (cime split) + cism to cismwrap_2_1_85 + mosart to mosart1_0_43 + rtm to rtm1_0_77 + cime to cime6.0.3 + cmeps to cmeps0.13.15 + cdeps to cdeps0.12.14 + + New cime-split externals: + + cpl7.0.3 + share1.0.2 + MCT_2.11.0 + pio2_5_4 + +Pull Requests that document the changes (include PR ids): +(https://github.com/ESCOMP/ctsm/pull) + + #1411 -- fix stop_option=date, move neon niwo test to match user_mods + #1375 -- Script for modifying neon surface dataset + #1374 -- Local solar time option for average flag + +=============================================================== +=============================================================== Tag name: ctsm5.1.dev048 Originator(s): slevis (Samuel Levis,SLevis Consulting,303-665-1310) Date: Sat Jul 10 11:39:55 MDT 2021 diff --git a/doc/ChangeSum b/doc/ChangeSum index 7b2b7cce94..e18d42d22b 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.1.dev049 jedwards 07/26/2021 Update externals, NEON updates, fix stop_option=date, move neon niwo test to match user_mods, local time option ctsm5.1.dev048 slevis 07/10/2021 Make certain history fields descriptive inst. of labeling by number ctsm5.1.dev047 mvertens 07/08/2021 Start bounds at 1; remove references to MCT ctsm5.1.dev046 rgknox 07/02/2021 Updating external fates has to tag sci.1.46.2_api.16.1.0 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 490aa3542a..395c2e4868 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,10 +16,10 @@ add_definitions(-DHIDE_MPI) # done first, so that in case of name collisions, the CLM versions take # precedence (when there are two files with the same name, the one added later # wins). -add_subdirectory(${CIMEROOT}/src/share/util csm_share) -add_subdirectory(${CIMEROOT}/src/share/unit_test_stubs/util csm_share_stubs) -add_subdirectory(${CIMEROOT}/src/share/esmf_wrf_timemgr esmf_wrf_timemgr) -add_subdirectory(${CIMEROOT}/src/drivers/mct/shr drv_share) +add_subdirectory(${CLM_ROOT}/share/src csm_share) +add_subdirectory(${CLM_ROOT}/share/unit_test_stubs/util csm_share_stubs) +add_subdirectory(${CLM_ROOT}/share/src/esmf_wrf_timemgr esmf_wrf_timemgr) +add_subdirectory(${CLM_ROOT}/components/cpl7/driver/shr drv_share) # Extract just the files we need from drv_share set (drv_sources_needed_base @@ -83,12 +83,11 @@ add_dependencies(esmf_wrf_timemgr csm_share) add_dependencies(clm csm_share esmf_wrf_timemgr) # We need to look for header files here, in order to pick up shr_assert.h -include_directories(${CIMEROOT}/src/share/include) +include_directories(${CLM_ROOT}/share/include) # And we need to look for header files here, for some include files needed by # the esmf_wrf_timemgr code -include_directories(${CIMEROOT}/src/share/esmf_wrf_timemgr) - +include_directories(${CLM_ROOT}/share/src/esmf_wrf_timemgr) # Tell cmake to look for libraries & mod files here, because this is where we built libraries include_directories(${CMAKE_CURRENT_BINARY_DIR}) link_directories(${CMAKE_CURRENT_BINARY_DIR}) @@ -106,4 +105,4 @@ add_subdirectory(${CLM_ROOT}/src/soilbiogeochem/test clm_soilbiogeochem_test) add_subdirectory(${CLM_ROOT}/src/dyn_subgrid/test clm_dyn_subgrid_test) add_subdirectory(${CLM_ROOT}/src/main/test clm_main_test) add_subdirectory(${CLM_ROOT}/src/init_interp/test clm_init_interp_test) -add_subdirectory(${CLM_ROOT}/src/self_tests/test clm_self_tests_test) \ No newline at end of file +add_subdirectory(${CLM_ROOT}/src/self_tests/test clm_self_tests_test) diff --git a/src/cpl/nuopc/lnd_comp_nuopc.F90 b/src/cpl/nuopc/lnd_comp_nuopc.F90 index d4bf072402..77c666b835 100644 --- a/src/cpl/nuopc/lnd_comp_nuopc.F90 +++ b/src/cpl/nuopc/lnd_comp_nuopc.F90 @@ -76,9 +76,9 @@ module lnd_comp_nuopc real(R8) :: orb_mvelp ! attribute - moving vernal equinox longitude real(R8) :: orb_eccen ! attribute and update- orbital eccentricity - logical :: scol_valid ! if single_column, does point have a mask of zero + logical :: scol_valid ! if single_column, does point have a mask of zero - integer :: nthrds ! Number of threads per task in this component + integer :: nthrds ! Number of threads per task in this component character(len=*) , parameter :: orb_fixed_year = 'fixed_year' character(len=*) , parameter :: orb_variable_year = 'variable_year' @@ -324,7 +324,7 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc) use decompMod , only : bounds_type, get_proc_bounds use lnd_set_decomp_and_domain , only : lnd_set_decomp_and_domain_from_readmesh use lnd_set_decomp_and_domain , only : lnd_set_mesh_for_single_column - use lnd_set_decomp_and_domain , only : lnd_set_decomp_and_domain_for_single_column + use lnd_set_decomp_and_domain , only : lnd_set_decomp_and_domain_for_single_column ! input/output variables type(ESMF_GridComp) :: gcomp @@ -385,7 +385,7 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc) call ESMF_LogWrite(subname//' called', ESMF_LOGMSG_INFO) !---------------------------------------------------------------------------- - ! Single column logic - if mask is zero for nearest neighbor search then + ! Single column logic - if mask is zero for nearest neighbor search then ! set all export state fields to zero and return !---------------------------------------------------------------------------- @@ -477,24 +477,24 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc) call memmon_dump_fort('memmon.out','lnd_comp_nuopc_InitializeRealize:start::',lbnum) endif #endif - !---------------------------------------------------------------------------- - ! Initialize component threading - !---------------------------------------------------------------------------- - - call ESMF_GridCompGet(gcomp, vm=vm, localPet=localPet, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_VMGet(vm, pet=localPet, peCount=localPeCount, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - if(localPeCount == 1) then - call NUOPC_CompAttributeGet(gcomp, "nthreads", value=cvalue, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=u_FILE_u)) return - read(cvalue,*) nthrds - else - nthrds = localPeCount - endif - - !$ call omp_set_num_threads(nthrds) + !---------------------------------------------------------------------------- + ! Initialize component threading + !---------------------------------------------------------------------------- + + call ESMF_GridCompGet(gcomp, vm=vm, localPet=localPet, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + call ESMF_VMGet(vm, pet=localPet, peCount=localPeCount, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + + if(localPeCount == 1) then + call NUOPC_CompAttributeGet(gcomp, "nthreads", value=cvalue, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=u_FILE_u)) return + read(cvalue,*) nthrds + else + nthrds = localPeCount + endif + + !$ call omp_set_num_threads(nthrds) !---------------------- ! Consistency check on namelist filename @@ -966,6 +966,7 @@ subroutine ModelSetRunClock(gcomp, rc) character(len=256) :: stop_option ! Stop option units integer :: stop_n ! Number until stop interval integer :: stop_ymd ! Stop date (YYYYMMDD) + integer :: stop_tod ! Stop time of day (seconds) type(ESMF_ALARM) :: stop_alarm character(len=128) :: name integer :: alarmcount @@ -1004,7 +1005,7 @@ subroutine ModelSetRunClock(gcomp, rc) call ESMF_GridCompGet(gcomp, name=name, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_LogWrite(subname//'setting alarms for' // trim(name), ESMF_LOGMSG_INFO) + call ESMF_LogWrite(subname//'setting alarms for ' // trim(name), ESMF_LOGMSG_INFO) !---------------- ! Restart alarm @@ -1044,10 +1045,17 @@ subroutine ModelSetRunClock(gcomp, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return read(cvalue,*) stop_ymd - call alarmInit(mclock, stop_alarm, stop_option, & + call NUOPC_CompAttributeGet(gcomp, name="stop_tod", value=cvalue, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + read(cvalue,*) stop_tod + + call alarmInit(mclock, & + alarm = stop_alarm, & + option = stop_option, & opt_n = stop_n, & opt_ymd = stop_ymd, & - RefTime = mcurrTime, & + opt_tod = stop_tod, & + RefTime = mcurrTime, & alarmname = 'alarm_stop', rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index 8ae2f37f0d..ec19eb35b3 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -5768,7 +5768,7 @@ function avgflag_valid(avgflag, blank_valid) result(valid) valid = .true. if(tod < dtime .or. isecspday - tod <= dtime) then write(iulog,*) 'Warning: Local time history output ', avgflag, ' is closer than ', & - 'dtime to midnight! This problematic particularly for daily output.' + 'dtime to midnight! This is problematic particularly for daily output.' end if else valid = .false.