diff --git a/cime/.gitignore b/cime/.gitignore index d1a44bcd5eda..ffc61196a709 100644 --- a/cime/.gitignore +++ b/cime/.gitignore @@ -1,5 +1,6 @@ # Ignore python bytecode files *.pyc +buildnmlc # Ignore emacs backup files *~ diff --git a/cime/CMakeLists.txt b/cime/CMakeLists.txt index 4ef40e36a0f1..ae90c8bd74c9 100644 --- a/cime/CMakeLists.txt +++ b/cime/CMakeLists.txt @@ -1,14 +1,17 @@ cmake_minimum_required(VERSION 2.8) include(ExternalProject) +set(CIME_ROOT "${CMAKE_CURRENT_SOURCE_DIR}") project(cime_tests Fortran C) -list(APPEND CMAKE_MODULE_PATH ${CESM_CMAKE_MODULE_DIRECTORY}) -include(CESM_utils) -find_package(NETCDF) -include_directories(${NETCDF_INCLUDE_DIRS}) +# We rely on pio for cmake utilities like findnetcdf.cmake, so that we don't +# need to duplicate this cmake code +list(APPEND CMAKE_MODULE_PATH "${CIME_ROOT}/externals/pio2/cmake") -set(CIME_ROOT "${CMAKE_CURRENT_SOURCE_DIR}") +list(APPEND CMAKE_MODULE_PATH ${CIME_CMAKE_MODULE_DIRECTORY}) +include(CIME_utils) +find_package(NetCDF COMPONENTS C Fortran) +include_directories(${NetCDF_C_INCLUDE_DIRS} ${NetCDF_Fortran_INCLUDE_DIRS}) # TODO: Some of the below should be done in the relevant directories, not in # this top level CMakeLists. @@ -22,8 +25,8 @@ ExternalProject_add(mct_project PREFIX ${CMAKE_CURRENT_BINARY_DIR} SOURCE_DIR ${MCT_ROOT} BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/mct - CONFIGURE_COMMAND ${MCT_ROOT}/configure --enable-debugging --prefix=${CMAKE_CURRENT_BINARY_DIR} - BUILD_COMMAND make SRCDIR=${MCT_ROOT} + CONFIGURE_COMMAND ${MCT_ROOT}/configure --enable-debugging --prefix=${CMAKE_CURRENT_BINARY_DIR} CFLAGS=${CFLAGS} FCFLAGS=${FFLAGS} SRCDIR=${MCT_ROOT} DEBUG="-g" + BUILD_COMMAND $(MAKE) # Leave things in rather than "installing", because we have # no need to move things around inside of the CMake binary directory. INSTALL_COMMAND : diff --git a/cime/ChangeLog b/cime/ChangeLog index eb79ad71e9c2..f769eb097e58 100644 --- a/cime/ChangeLog +++ b/cime/ChangeLog @@ -1,5 +1,1551 @@ ====================================================================== +Originator: Chris Fischer +Date: 2-23-2017 +Tag: cime5.2.0-alpha.26 +Answer Changes: None +Tests: scripts_regression_tests on some for PRs #1159,#1172 + B1850 test for PR#1159 +Dependencies: For allactive configurations, https://github.com/CESM-Development/cime_config + is needed. + +Brief Summary: + -Move cesm/allactive out of the cime tag. + -Pop namelist changes, + -Make sure pio1 finds netcdf4 + -add --mpilib option to create_test + -Add S-case test to cime_developers + +User interface changes: adds --mpilib optional argument to create_test + +PR summary: git log --oneline --first-parent [previous_tag]..master +fd200f6 Merge pull request #1181 from ESMCI/agsalin/add_S_case_test +d33e6a2 Merge pull request #1180 from jedwards4b/create_test_mpilib_option +d210e0b Merge pull request #1159 from bertinia/master +ad5ff79 Merge pull request #1172 from ESMCI/mvertens/pop_python_namelist +4ab605f Merge pull request #1177 from jedwards4b/pio1_bld_fixes + +Modified files: git diff --name-status [previous_tag] +D cime_config/cesm/allactive/config_compsets.xml +D cime_config/cesm/allactive/config_pes.xml +D cime_config/cesm/allactive/testlist_allactive.xml +D cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01/include_user_mods +D cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01io/include_user_mods +D cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/README +D cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/shell_commands +D cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/README +D cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/include_user_mods +D cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/shell_commands +D cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/user_nl_cism +D cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_cam +D cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_cice +D cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_clm +D cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_mosart +D cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_pop +D cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_rtm +D cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/include_user_mods +D cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cam +D cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cice +D cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cism +D cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_clm +D cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_mosart +D cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_pop +D cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_rtm +D cime_config/cesm/allactive/usermods_dirs/b1850/shell_commands +D cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_clm +D cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_cpl +D cime_config/cesm/allactive/usermods_dirs/b1850_cism/include_user_mods +D cime_config/cesm/allactive/usermods_dirs/b1850_cism/user_nl_cism +M cime_config/cesm/machines/Makefile +M externals/pio1/pio/CMakeLists.txt +M scripts/create_newcase +M scripts/create_test +M utils/python/CIME/build.py +M utils/python/CIME/namelist.py +M utils/python/CIME/test_scheduler.py +M utils/python/update_acme_tests.py + +====================================================================== + +====================================================================== + +Originator: Bill Sacks +Date: 02-21-2017 +Tag: cime5.2.0-alpha.25 +Answer Changes: Likely answer changes on yellowstone relative to + alpha.24, but not relative to alpha.23 +Tests: One CLM test that failed in alpha.24 +Dependencies: none + +Brief Summary: Back out the compiler update on yellowstone + +User interface changes: none + +PR summary: git log --oneline --first-parent [previous_tag]..master + +bac0ce7 Merge pull request #1174 from jedwards4b/compiler_backout + +Modified files: git diff --name-status [previous_tag] + +M cime_config/cesm/machines/config_machines.xml + +====================================================================== + +====================================================================== + +Originator: Bill Sacks +Date: 02-17-2017 +Tag: cime5.2.0-alpha.24 +Answer Changes: None documented in merge log messages for 'Test status' +Tests: scripts_regression_tests.py run on some changes, but not this tag +Dependencies: + +Brief Summary: Major changes include: +- Bring in ACME changes up to 5.1 +- Fix Fortran unit tests + +User interface changes: The following changes were documented: +- create_newcase --mach is now --machine to match create_test +- Removes PRE test from cime_developer +- Many changes in PR #1123 ("Merge the maint-cime5.1 branch along with ACME's + changes to 5.1"), most (all?) of which just affect ACME +- -p flag to xmlquery +- -a option to case.submit + +PR summary: git log --oneline --first-parent [previous_tag]..master + +980a6b8 Merge pull request #1167 from fischer-ncar/drip_annual_changes_test_fix +e8929e2 Merge pull request #1165 from ESMCI/jayeshkrishna/cond_incl_make_undefine +9554cce Merge pull request #1160 from jedwards4b/get_timing_correction +642cc32 Merge pull request #1164 from billsacks/unit_tests_local +938e9b0 Merge pull request #1157 from billsacks/unit_test_parallel +3929369 Merge pull request #1149 from jedwards4b/correct_path_query_for_testlistxml +9b1630f Merge pull request #1152 from jedwards4b/pio_bld_fix +db95da1 Merge pull request #1151 from ESMCI/agsalin/gitignore +c80c65c Merge pull request #1145 from billsacks/unit_test_cleanup +e8d8c67 fix pylint issue +7ef40c0 Merge pull request #1140 from jedwards4b/cleanbld_refactor +bd3fc66 Merge pull request #1135 from jedwards4b/unit_test_refactor +534aade Merge branch 'jgfouca/allow_arbitrary_batch_args' (PR #1137) +d0a1616 Merge pull request #1136 from ESMCI/jgfouca/handle_batch_errors_better +26cd982 Merge pull request #1131 from bertinia/master +26dd1e2 Merge pull request #1126 from ESMCI/jgfouca/bless_test_update +98c0ff1 Merge pull request #1127 from ESMCI/jgfouca/namelist_allow_star +a51fb8c Merge pull request #1128 from ESMCI/jgfouca/xmlquery_partial_match +77cf83e Merge branch 'worleyph/timing/non-null-terminated_string_support_fix' into master (PR #895) +21ea438 Merge pull request #1122 from gold2718/DAEfix +7248aef Merge branch 'jgfouca/acme5.1_to_esmci_try2' (PR #1123) +69627c8 Hotfix for minor whitespace issue in exception text +2456b56 Merge pull request #1110 from ESMCI/jgfouca/fixes_to_recent_new_tests +18734f3 Merge pull request #1104 from jedwards4b/tested_msg +11e30d6 Merge pull request #1109 from gold2718/TimeMgrFix +e367fb4 Merge pull request #1098 from ESMCI/mfdeakin-sandia/map_field_build +ff4f207 Merge pull request #1095 from gold2718/DAdesp +a93184d Merge pull request #1097 from jedwards4b/tie_timers_to_xml +618f515 Merge pull request #1092 from mgduda/esmf_timemgr/i8_interval_division +654504c Merge pull request #1094 from ESMCI/jgfouca/err_resub_fix +f56a446 Merge pull request #1090 from jedwards4b/lt_archive_issues +ccd1e96 Merge pull request #1082 from jedwards4b/addback_mask_grid +81f08e1 Merge pull request #1081 from jedwards4b/fix_no_nesting_fail +1d083cc fix pylint issue +9e2764c Merge pull request #1080 from jedwards4b/config_compilers_conformity +ccb7c22 Revert "Change over acme env usage to correct syntax" + +Modified files: git diff --name-status [previous_tag] + +M .gitignore +M CMakeLists.txt +M README.unit_testing +M cime_config/acme/allactive/config_compsets.xml +M cime_config/acme/allactive/config_compsets.xml.cime2 +M cime_config/acme/allactive/config_pes.xml +M cime_config/acme/allactive/config_pes.xml.cime2 +M cime_config/acme/allactive/config_pesall.xml +D cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/user_nl_cam +D cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/user_nl_clm +M cime_config/acme/config_files.xml +M cime_config/acme/config_grids.xml +M cime_config/acme/machines/Depends.cetus +M cime_config/acme/machines/Depends.intel +M cime_config/acme/machines/Depends.intel14 +M cime_config/acme/machines/Depends.intelmic +M cime_config/acme/machines/Depends.intelmic14 +M cime_config/acme/machines/Depends.mira +D cime_config/acme/machines/Depends.titan.pgi_acc +A cime_config/acme/machines/Depends.titan.pgiacc +D cime_config/acme/machines/Depends.titan.pgicuda +M cime_config/acme/machines/Makefile +M cime_config/acme/machines/config_batch.xml +M cime_config/acme/machines/config_compilers.xml +M cime_config/acme/machines/config_machines.xml +M cime_config/acme/machines/config_pio.xml +D cime_config/acme/machines/env_mach_specific.blues +D cime_config/acme/machines/env_mach_specific.cascade +D cime_config/acme/machines/env_mach_specific.cetus +D cime_config/acme/machines/env_mach_specific.constance +D cime_config/acme/machines/env_mach_specific.corip1 +D cime_config/acme/machines/env_mach_specific.edison +D cime_config/acme/machines/env_mach_specific.eos +D cime_config/acme/machines/env_mach_specific.juqueen +D cime_config/acme/machines/env_mach_specific.lawrencium-lr2 +D cime_config/acme/machines/env_mach_specific.linux-generic +D cime_config/acme/machines/env_mach_specific.mac +D cime_config/acme/machines/env_mach_specific.mira +D cime_config/acme/machines/env_mach_specific.mustang +D cime_config/acme/machines/env_mach_specific.oic2 +D cime_config/acme/machines/env_mach_specific.oic5 +D cime_config/acme/machines/env_mach_specific.sierra +D cime_config/acme/machines/env_mach_specific.sooty +D cime_config/acme/machines/env_mach_specific.stampede +D cime_config/acme/machines/env_mach_specific.titan +D cime_config/acme/machines/env_mach_specific.userdefined +D cime_config/acme/machines/env_mach_specific.wolf +M cime_config/acme/machines/syslog.cetus +A cime_config/acme/machines/syslog.cori-haswell +A cime_config/acme/machines/syslog.cori-knl +D cime_config/acme/machines/syslog.corip1 +M cime_config/acme/machines/syslog.edison +M cime_config/acme/machines/syslog.mira +M cime_config/acme/machines/syslog.titan +A cime_config/acme/testmods_dirs/allactive/cam/outfrq9s/user_nl_cam +A cime_config/acme/testmods_dirs/allactive/cam/outfrq9s/user_nl_clm +M cime_config/buildlib.pio +M cime_config/cesm/allactive/testlist_allactive.xml +M cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_clm +M cime_config/cesm/config_archive.xml +M cime_config/cesm/config_files.xml +M cime_config/cesm/machines/Makefile +M cime_config/cesm/machines/config_compilers.xml +M cime_config/cesm/machines/config_lt_archive.xml +M cime_config/cesm/machines/config_machines.xml +M cime_config/config_tests.xml +M cime_config/xml_schemas/config_machines.xsd +M components/data_comps/datm/cime_config/config_component.xml +A components/data_comps/desp/cime_config/buildlib +A components/data_comps/desp/cime_config/buildnml +A components/data_comps/desp/cime_config/config_component.xml +A components/data_comps/desp/cime_config/namelist_definition_desp.xml +A components/data_comps/desp/cime_config/user_nl_desp +A components/data_comps/desp/desp_comp_mod.F90 +A components/data_comps/desp/esp_comp_mct.F90 +A components/data_comps/desp/esp_utils.F90 +M components/data_comps/dlnd/cime_config/config_component.xml +M components/data_comps/docn/cime_config/config_component.xml +M driver_cpl/cime_config/buildnml +M driver_cpl/cime_config/config_component.xml +M driver_cpl/cime_config/config_component_acme.xml +M driver_cpl/cime_config/config_component_cesm.xml +M driver_cpl/cime_config/config_compsets.xml +M driver_cpl/cime_config/namelist_definition_drv.xml +M driver_cpl/cime_config/user_nl_cpl +M driver_cpl/driver/cesm_comp_mod.F90 +M driver_cpl/driver/component_mod.F90 +M driver_cpl/driver/seq_flux_mct.F90 +M driver_cpl/driver/seq_io_mod.F90 +M driver_cpl/shr/seq_infodata_mod.F90 +M driver_cpl/shr/seq_timemgr_mod.F90 +M driver_cpl/unit_test/vertical_gradient_calculator_test/plot_gradient +M externals/CMake/CESM_utils.cmake +A externals/CMake/CIME_utils.cmake +M externals/CMake/Compilers.cmake +D externals/CMake/FindNETCDF.cmake +D externals/CMake/FindNETCDF_C.cmake +D externals/CMake/FindNETCDF_Fortran.cmake +D externals/CMake/FindPnetcdf.cmake +M externals/CMake/FindpFUnit.cmake +D externals/CMake/LibFindMacros.cmake +M externals/CMake/README.md +M externals/pio1/pio/CMakeLists.txt +M externals/pio2/src/flib/piolib_mod.F90 +M scripts/Tools/bless_test_results +M scripts/Tools/case.build +M scripts/Tools/case.submit +A scripts/Tools/cron_script +M scripts/Tools/xmlquery +M scripts/create_newcase +M scripts/create_test +M share/csm_share/shr/shr_flux_mod.F90 +M share/csm_share/test/unit/dynamic_vector/CMakeLists.txt +M share/esmf_wrf_timemgr/ESMF_TimeIntervalMod.F90 +M share/esmf_wrf_timemgr/ESMF_TimeMod.F90 +M share/timing/ChangeLog +M share/timing/f_wrappers.c +M share/timing/gptl.c +M tools/configure +M tools/mapping/map_field/INSTALL +M tools/unit_testing/Examples/circle_area/tests/CMakeLists.txt +M tools/unit_testing/Examples/circle_area/tests/pFUnit/CMakeLists.txt +M tools/unit_testing/Examples/interpolate_1d/tests/CMakeLists.txt +M tools/unit_testing/Examples/interpolate_1d/tests/pFUnit/CMakeLists.txt +M tools/unit_testing/README +M tools/unit_testing/run_tests.py +M utils/data_assimilation/da_no_data_mod.sh +M utils/python/CIME/BuildTools/cmakemacroswriter.py +M utils/python/CIME/SystemTests/dae.py +M utils/python/CIME/SystemTests/err.py +M utils/python/CIME/SystemTests/homme.py +A utils/python/CIME/SystemTests/pre.py +M utils/python/CIME/SystemTests/system_tests_common.py +M utils/python/CIME/XML/compilerblock.py +M utils/python/CIME/XML/compilers.py +M utils/python/CIME/XML/entry_id.py +M utils/python/CIME/XML/env_batch.py +M utils/python/CIME/XML/grids.py +M utils/python/CIME/XML/namelist_definition.py +M utils/python/CIME/XML/pes.py +M utils/python/CIME/bless_test_results.py +M utils/python/CIME/build.py +M utils/python/CIME/case.py +M utils/python/CIME/case_cmpgen_namelists.py +M utils/python/CIME/case_lt_archive.py +M utils/python/CIME/case_run.py +M utils/python/CIME/case_st_archive.py +M utils/python/CIME/case_submit.py +M utils/python/CIME/check_input_data.py +M utils/python/CIME/code_checker.py +M utils/python/CIME/compare_namelists.py +M utils/python/CIME/compare_test_results.py +M utils/python/CIME/get_timing.py +M utils/python/CIME/provenance.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/test_status.py +M utils/python/CIME/utils.py +M utils/python/tests/scripts_regression_tests.py +M utils/python/update_acme_tests.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 01-30-2017 +Tag: cime5.2.0-alpha.23 +Answer Changes: None +Tests: cesm_tests, scripts_regression_tests.py +Dependencies: + +Brief Summary: new tfreeze_option setting for cesm, some system test refactoring for + improved reuse of tests, single test no longer has external SHAREDLIBROOT setting + New pop default settings. Fix for clm test mapping file. + +User interface changes: + +PR summary: git log --oneline --first-parent [previous_tag]..master + +feb28f3 Merge pull request #1076 from ESMCI/mvertens/fix_clm_usrdat +853da02 Merge pull request #1069 from jtruesdal/cime_plus_defs +38cc009 Merge pull request #1068 from jedwards4b/test_fixes +3d0965a Merge pull request #1062 from ESMCI/mvertens/tfreeze_option +19a104d Change over acme env usage to correct syntax +8d92fa0 Merge pull request #1048 from jedwards4b/depends_file_precidence +1e3008f Merge pull request #1054 from ESMCI/jgfouca/fix_eri_resub +5de3b4d Merge pull request #1055 from ESMCI/jgfouca/add_support_for_shell_in_XML +18479ce Merge pull request #1039 from ESMCI/jgfouca/lock_env_batch +3a84a6e Merge pull request #1046 from jedwards4b/some_log_issues +0489798 Fix Z_FullSystemTests on batch machines +742c8dc Merge pull request #1036 from ESMCI/jgfouca/fix_resubmission_of_some_testcases +49a7de6 fix pylint issue +289e39e Merge pull request #1034 from ESMCI/jgfouca/better_support_for_custom_input_files +869f904 Merge pull request #1025 from ESMCI/jgfouca/more_create_test_force_pecount_chgs +25de83b update ChangeLog +33d74c3 Merge pull request #1030 from jedwards4b/fix_drive_namelist_issue + + +Modified files: git diff --name-status +M cime_config/acme/machines/config_batch.xml +M cime_config/acme/machines/config_compilers.xml +M cime_config/acme/machines/config_machines.xml +M cime_config/cesm/config_grids.xml +M cime_config/cesm/machines/Makefile +M cime_config/cesm/machines/config_machines.xml +M cime_config/config_tests.xml +M driver_cpl/cime_config/config_component.xml +M driver_cpl/cime_config/config_component_acme.xml +M driver_cpl/cime_config/config_component_cesm.xml +M driver_cpl/cime_config/namelist_definition_drv.xml +M scripts/create_newcase +M utils/python/CIME/BuildTools/configure.py +M utils/python/CIME/SystemTests/eri.py +M utils/python/CIME/SystemTests/erp.py +M utils/python/CIME/SystemTests/ers.py +M utils/python/CIME/SystemTests/ncr.py +M utils/python/CIME/SystemTests/seq.py +M utils/python/CIME/SystemTests/system_tests_common.py +M utils/python/CIME/XML/generic_xml.py +M utils/python/CIME/XML/namelist_definition.py +M utils/python/CIME/build.py +M utils/python/CIME/case.py +M utils/python/CIME/case_run.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/check_input_data.py +M utils/python/CIME/check_lockedfiles.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/utils.py +M utils/python/tests/scripts_regression_tests.py +M utils/python/update_acme_tests.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 01-20-2017 +Tag: cime5.2.0-alpha.22 +Answer Changes: None +Tests: cesm tests, scripts_regression_tests +Dependencies: + +Brief Summary: Fix issue in drv buildnml reading xml file. + +User interface changes: Added error if buildnml file not found. + +Modified files: git diff --name-status +M driver_cpl/cime_config/buildnml +M utils/python/CIME/XML/namelist_definition.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 01-19-2017 +Tag: cime5.2.0-alpha.21 +Answer Changes: None +Tests: scripts_regression_tests, cesm testing +Dependencies: + +Brief Summary: Add science_support field for CESM. Add schema files + for config_batch, config_compsets xml files. + Add a config_machines_template.xml for documentation and porting. + Add model dependent config_component_$model.xml files for driver. + +User interface changes: New flag in create_newcase --run-unsupported (cesm only) + New flag in create_clone --cime-output-root to support cloning across user. + +Modified files: git diff --name-status +M cime_config/acme/config_files.xml +M cime_config/acme/machines/config_batch.xml +M cime_config/cesm/allactive/config_compsets.xml +M cime_config/cesm/config_files.xml +M cime_config/cesm/machines/config_batch.xml +D cime_config/cesm/machines/config_batch.xsd +M cime_config/cesm/machines/config_compilers.xml +A cime_config/xml_schemas/config_batch.xsd +A cime_config/xml_schemas/config_compsets.xsd +A cime_config/xml_schemas/config_machines_template.xml +M cime_config/xml_schemas/config_pes.xsd +M cime_config/xml_schemas/entry_id_base.xsd +M cime_config/xml_schemas/testlist.xsd +M components/data_comps/datm/cime_config/buildnml +M components/data_comps/dice/cime_config/buildnml +M components/data_comps/dlnd/cime_config/buildnml +M components/data_comps/docn/cime_config/buildnml +M components/data_comps/drof/cime_config/buildnml +M components/data_comps/dwav/cime_config/buildnml +M driver_cpl/cime_config/buildnml +M driver_cpl/cime_config/config_component.xml +A driver_cpl/cime_config/config_component_acme.xml +A driver_cpl/cime_config/config_component_cesm.xml +M driver_cpl/cime_config/config_compsets.xml +M scripts/create_clone +M scripts/create_newcase +M scripts/create_test +M tools/cprnc/compare_vars_mod.F90.in +M tools/cprnc/cprnc.F90 +M tools/cprnc/filestruct.F90 +M utils/python/CIME/XML/batch.py +M utils/python/CIME/XML/compilers.py +M utils/python/CIME/XML/compsets.py +M utils/python/CIME/XML/env_mach_pes.py +M utils/python/CIME/XML/files.py +M utils/python/CIME/XML/generic_xml.py +M utils/python/CIME/XML/grids.py +M utils/python/CIME/XML/machines.py +M utils/python/CIME/XML/namelist_definition.py +M utils/python/CIME/XML/pes.py +M utils/python/CIME/XML/testlist.py +M utils/python/CIME/case.py +M utils/python/CIME/nmlgen.py +M utils/python/CIME/preview_namelists.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/utils.py +M utils/python/tests/scripts_regression_tests.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 01-15-2017 +Tag: cime5.2.0-alpha.20 +Answer Changes: None +Tests: scripts_regression_tests, cesm2_0_beta05 testing +Dependencies: + +Brief Summary: Adds schema for config_pes and overrides section to that file + Adds support for new machine cheyenne +User interface changes: + +Modified files: git diff --name-status +M cime_config/acme/allactive/config_pes.xml + M cime_config/acme/config_files.xml + M cime_config/cesm/allactive/config_pes.xml + M cime_config/cesm/allactive/testlist_allactive.xml + M cime_config/cesm/config_files.xml + M cime_config/cesm/machines/config_batch.xml + M cime_config/cesm/machines/config_compilers.xml + M cime_config/cesm/machines/config_machines.xml + A cime_config/xml_schemas/config_pes.xsd + M driver_cpl/cime_config/testdefs/testlist_drv.xml + M utils/python/CIME/XML/machines.py + M utils/python/CIME/XML/pes.py + M utils/python/CIME/case.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 01-12-2017 +Tag: cime5.2.0-alpha.19 +Answer Changes: None +Tests: scripts_regression_tests.py (on cheyenne) +Dependencies: + +Brief Summary: Add support for new NCAR HPC system Cheyenne + +User interface changes: none + +Modified files: git diff --name-status + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 01-11-2017 +Tag: cime5.2.0-alpha.18 +Answer Changes: Climate Changing +Tests: scripts_regression_tests cesm2_0_alpha05d +Dependencies: (cesm requires pop version 20161219 or older + +Brief Summary: Needed to back out changes that require a new pop version + Add schema definition for config_machines.xml + +User interface changes: + +Modified files: git diff --name-status +M cime_config/acme/machines/config_machines.xml +M cime_config/acme/machines/config_pio.xml +M cime_config/buildlib.pio +M cime_config/cesm/config_files.xml +M cime_config/cesm/config_grids.xml +M cime_config/cesm/machines/config_machines.xml +A cime_config/xml_schemas/config_machines.xsd +M driver_cpl/bld/testdir/env_run.xml +M driver_cpl/cime_config/config_component.xml +M driver_cpl/cime_config/namelist_definition_drv.xml +M driver_cpl/shr/seq_infodata_mod.F90 +M utils/python/CIME/XML/generic_xml.py +M utils/python/CIME/XML/machines.py + + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 01-10-2017 +Tag: cime5.2.0-alpha.17 +Answer Changes: None +Tests: scripts_regression_tests +Dependencies: + +Brief Summary: Fix issue with netcdf flags in Makefile, update nersc systems + add runtime env to provenance output + +User interface changes: + +Modified files: git diff --name-status +M cime_config/acme/machines/Makefile +M cime_config/acme/machines/config_compilers.xml +M cime_config/cesm/allactive/config_compsets.xml +M cime_config/cesm/allactive/testlist_allactive.xml +M cime_config/cesm/config_grids.xml +M cime_config/cesm/machines/Makefile +M cime_config/cesm/machines/config_compilers.xml +M cime_config/cesm/machines/config_machines.xml +M cime_config/xml_schemas/config_compilers_v2.xsd +M driver_cpl/bld/testdir/env_run.xml +M driver_cpl/cime_config/config_component.xml +M driver_cpl/cime_config/namelist_definition_drv.xml +M driver_cpl/shr/seq_infodata_mod.F90 +M scripts/Tools/case_diff +M scripts/Tools/code_checker +M utils/python/CIME/SystemTests/system_tests_common.py +M utils/python/CIME/XML/env_mach_specific.py +M utils/python/CIME/XML/machines.py +M utils/python/CIME/case.py +M utils/python/CIME/case_cmpgen_namelists.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/case_test.py +A utils/python/CIME/code_checker.py +M utils/python/CIME/compare_namelists.py +M utils/python/CIME/provenance.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/utils.py +M utils/python/tests/scripts_regression_tests.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 01-04-2017 +Tag: cime5.2.0-alpha.15 +Answer Changes: None +Tests: scripts_regression_tests, cesm development +Dependencies: + +Brief Summary: fix issues with clm 1pt configurations, issues with pio namelist settings, data assimilation script arguments, sharedarea context manager, + +User interface changes: + +Modified files: git diff --name-status +M cime_config/cesm/allactive/config_compsets.xml +M cime_config/cesm/allactive/testlist_allactive.xml +M cime_config/cesm/config_grids.xml +M cime_config/cesm/machines/config_compilers.xml +M cime_config/cesm/machines/config_machines.xml +M scripts/Tools/pelayout +M share/csm_share/shr/shr_pio_mod.F90 +M utils/python/CIME/case.py +M utils/python/CIME/case_run.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/check_input_data.py +M utils/python/CIME/preview_namelists.py +M utils/python/CIME/provenance.py +M utils/python/CIME/utils.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 01-03-2017 +Tag: cime5.2.0-alpha.14 +Answer Changes: None +Tests: scripts_regression_tests, cesm component testing + +Dependencies: + +Brief Summary: Changes several variables of the form XXX_COMP to variables of the + form XXX with values for each COMP. Remove clm40 from all active + compsets. Build gptl prior to MCT. Performance improvements in buildnml + +User interface changes: Perl scripts in component models can no longer read these + COMP variables directely - they must now use xmlquery. + +Modified files: git diff --name-status +M cime_config/acme/config_files.xml +M cime_config/acme/machines/Makefile +M cime_config/buildlib.mct +A cime_config/buildlib.mpi-serial +M cime_config/cesm/allactive/config_compsets.xml +M cime_config/cesm/allactive/testlist_allactive.xml +M cime_config/cesm/config_files.xml +M cime_config/cesm/config_grids.xml +M cime_config/cesm/machines/Makefile +M cime_config/cesm/machines/config_machines.xml +M cime_config/config_headers.xml +M cime_config/xml_schemas/entry_id_base.xsd +M cime_config/xml_schemas/entry_id_namelist.xsd +M components/data_comps/datm/cime_config/buildnml +M components/data_comps/datm/cime_config/namelist_definition_datm.xml +M components/data_comps/dice/cime_config/buildnml +M components/data_comps/dice/cime_config/namelist_definition_dice.xml +M components/data_comps/dlnd/cime_config/buildnml +M components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml +M components/data_comps/docn/cime_config/buildnml +M components/data_comps/docn/cime_config/namelist_definition_docn.xml +M components/data_comps/drof/cime_config/buildnml +M components/data_comps/drof/cime_config/namelist_definition_drof.xml +M components/data_comps/dwav/cime_config/buildnml +M driver_cpl/cime_config/buildnml +M driver_cpl/cime_config/config_component.xml +M driver_cpl/cime_config/namelist_definition_drv.xml +M driver_cpl/cime_config/namelist_definition_modelio.xml +M scripts/Tools/case.build +M scripts/Tools/case.setup +A scripts/Tools/pelayout +M scripts/Tools/xmlchange +M scripts/Tools/xmlquery +M scripts/create_test +M scripts/manage_case +M scripts/manage_pes +M tools/mapping/map_field/README +M utils/python/CIME/SystemTests/erp.py +M utils/python/CIME/SystemTests/nck.py +M utils/python/CIME/SystemTests/pea.py +M utils/python/CIME/SystemTests/seq.py +M utils/python/CIME/XML/component.py +M utils/python/CIME/XML/entry_id.py +M utils/python/CIME/XML/env_archive.py +M utils/python/CIME/XML/env_base.py +M utils/python/CIME/XML/env_batch.py +M utils/python/CIME/XML/env_build.py +M utils/python/CIME/XML/env_case.py +M utils/python/CIME/XML/env_mach_pes.py +M utils/python/CIME/XML/env_mach_specific.py +M utils/python/CIME/XML/env_run.py +M utils/python/CIME/XML/env_test.py +M utils/python/CIME/XML/generic_xml.py +M utils/python/CIME/XML/namelist_definition.py +M utils/python/CIME/XML/pes.py +M utils/python/CIME/build.py +M utils/python/CIME/case.py +M utils/python/CIME/case_run.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/case_submit.py +M utils/python/CIME/get_timing.py +M utils/python/CIME/namelist.py +M utils/python/CIME/nmlgen.py +M utils/python/CIME/preview_namelists.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/test_status.py +M utils/python/CIME/utils.py +M utils/python/tests/scripts_regression_tests.py + +====================================================================== + +====================================================================== + +Originator: Chris Fischer +Date: 12-23-2016 +Tag: cime5.2.0-alpha.13.bhist +Answer Changes: None +Tests: prealpha pgi tests on hobart, BHIST restart on yellowstone + +Dependencies: + +Brief Summary: Fix pnetcdf module on hobart for pgi. Update BHIST compset +names + +User interface changes: + +Modified files: git diff --name-status + + M cime_config/cesm/allactive/config_compsets.xml + M cime_config/cesm/allactive/testlist_allactive.xml + M cime_config/cesm/machines/config_machines.xml + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 12-20-2016 +Tag: cime5.2.0-alpha.13 +Answer Changes: None +Tests: scripts_regression_tests, cesm2_0_alpha05b +Dependencies: + +Brief Summary: fix nag and pgi compiler issues, refactor xmlquery tool, + fix issues with dlnd buildnml + +User interface changes: xmlquery options were changed + +Modified files: + M cime_config/cesm/machines/config_compilers.xml + M components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml + M driver_cpl/cime_config/config_component.xml + M scripts/Tools/xmlquery + M utils/python/CIME/XML/entry_id.py + M utils/python/CIME/XML/env_batch.py + M utils/python/CIME/XML/env_mach_specific.py + M utils/python/CIME/XML/generic_xml.py + M utils/python/CIME/buildnml.py + M utils/python/CIME/case.py + M utils/python/CIME/case_submit.py + M utils/python/CIME/preview_namelists.py + M utils/python/tests/CMakeLists.txt + M utils/python/tests/list_tests + M utils/python/tests/scripts_regression_tests.py + + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 12-16-2016 +Tag: cime5.2.0-alpha.12 +Answer Changes: None +Tests: scripts_regression_tests, aux_clm40, aux_clm50 +Dependencies: + +Brief Summary: Fix for cori-haswell, critical namelist bug fix for datm + +User interface changes: + M cime_config/cesm/machines/config_compilers.xml + M cime_config/cesm/machines/config_machines.xml + M components/data_comps/datm/cime_config/namelist_definition_datm.xml + M utils/python/CIME/check_input_data.py + M utils/python/tests/scripts_regression_tests.py + + +Modified files: git diff --name-status + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 12-15-2016 +Tag: cime5.2.0-alpha.11 +Answer Changes: None +Tests: scripts_regression_tests + various cesm system tests +Dependencies: + +Brief Summary: fix debug flag attribute, clone issues, buildnml direct in python + prevent a div by 0 in xmlchange, fix bless_test_results, move config_build to + config_compilers, fix starchive issue, remove doc directory, redo buildnml in python + datm updates, clm bld fix + +User interface changes: + +Modified files: git diff --name-status + M cime_config/acme/config_files.xml +M cime_config/acme/machines/Makefile +D cime_config/acme/machines/config_build.xml +M cime_config/acme/machines/config_compilers.xml +M cime_config/acme/machines/config_machines.xml +M cime_config/buildlib.gptl +M cime_config/cesm/allactive/config_compsets.xml +M cime_config/cesm/allactive/config_pes.xml +M cime_config/cesm/allactive/testlist_allactive.xml +M cime_config/cesm/config_files.xml +M cime_config/cesm/config_grids.xml +M cime_config/cesm/machines/Makefile +M cime_config/cesm/machines/config_batch.xml +D cime_config/cesm/machines/config_build.xml +M cime_config/cesm/machines/config_compilers.xml +M cime_config/cesm/machines/config_machines.xml +D cime_config/xml_schemas/config_build.xsd +A cime_config/xml_schemas/config_compilers_v2.xsd +M components/data_comps/datm/cime_config/buildnml +M components/data_comps/datm/cime_config/config_component.xml +M components/data_comps/datm/cime_config/namelist_definition_datm.xml +M components/data_comps/dice/cime_config/buildnml +M components/data_comps/dice/cime_config/namelist_definition_dice.xml +M components/data_comps/dlnd/cime_config/buildnml +M components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml +M components/data_comps/docn/cime_config/buildnml +M components/data_comps/drof/cime_config/buildnml +M components/data_comps/drof/cime_config/config_component.xml +M components/data_comps/drof/cime_config/namelist_definition_drof.xml +M components/data_comps/dwav/cime_config/buildnml +M components/xcpl_comps/xatm/cime_config/buildnml +M components/xcpl_comps/xglc/cime_config/buildnml +M components/xcpl_comps/xice/cime_config/buildnml +M components/xcpl_comps/xlnd/cime_config/buildnml +M components/xcpl_comps/xocn/cime_config/buildnml +M components/xcpl_comps/xrof/cime_config/buildnml +M components/xcpl_comps/xwav/cime_config/buildnml +D doc/ +M driver_cpl/cime_config/buildnml +M driver_cpl/cime_config/config_component.xml +M driver_cpl/cime_config/namelist_definition_drv.xml +M driver_cpl/driver/cesm_comp_mod.F90 +M driver_cpl/driver/seq_hist_mod.F90 +M driver_cpl/driver/seq_io_mod.F90 +M driver_cpl/shr/seq_flds_mod.F90 +M driver_cpl/shr/seq_infodata_mod.F90 +M externals/pio1/pio/pionfput_mod.F90.in +M scripts/Tools/code_checker +M scripts/Tools/compare_test_results +M scripts/Tools/preview_namelists +M scripts/query_testlists +M share/csm_share/shr/shr_file_mod.F90 +M share/csm_share/shr/shr_strdata_mod.F90 +M share/timing/ChangeLog +M share/timing/Makefile +M share/timing/perf_mod.F90 +M tools/configure +M tools/mapping/gen_mapping_files/runoff_to_ocn/src/map_mod.F90 +M tools/utils/find_circular_dependency.py +A utils/python/CIME/BuildTools/__init__.py +A utils/python/CIME/BuildTools/cmakemacroswriter.py +A utils/python/CIME/BuildTools/configure.py +A utils/python/CIME/BuildTools/macroconditiontree.py +A utils/python/CIME/BuildTools/macrowriterbase.py +A utils/python/CIME/BuildTools/makemacroswriter.py +A utils/python/CIME/BuildTools/possiblevalues.py +A utils/python/CIME/BuildTools/valuesetting.py +D utils/python/CIME/XML/build.py +A utils/python/CIME/XML/compilerblock.py +M utils/python/CIME/XML/compilers.py +M utils/python/CIME/XML/env_mach_specific.py +M utils/python/CIME/XML/generic_xml.py +M utils/python/CIME/XML/grids.py +M utils/python/CIME/XML/machines.py +M utils/python/CIME/bless_test_results.py +M utils/python/CIME/build.py +M utils/python/CIME/buildnml.py +M utils/python/CIME/case.py +M utils/python/CIME/case_cmpgen_namelists.py +M utils/python/CIME/case_run.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/case_st_archive.py +M utils/python/CIME/case_submit.py +M utils/python/CIME/compare_namelists.py +M utils/python/CIME/compare_test_results.py +M utils/python/CIME/get_timing.py +D utils/python/CIME/macros_writers.py +M utils/python/CIME/namelist.py +M utils/python/CIME/nmlgen.py +M utils/python/CIME/preview_namelists.py +M utils/python/CIME/provenance.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/user_mod_support.py +M utils/python/CIME/utils.py +M utils/python/tests/scripts_regression_tests.py +M utils/python/update_acme_tests.py + + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 11-28-2016 +Tag: cime5.2.0-alpha.10 +Answer Changes: Namelist compare changes expected +Tests: scripts_regression_tests + various cesm system tests +Dependencies: + +Brief Summary: config_grids.xml refactor, add machines cori-haswell and cori-knl, + remove CCSM_BASELINE variable - replaced with BASELINE_ROOT + add error checks in xmlquery and xmlchange + +User interface changes: + +Modified files: git diff --name-status +M cime_config/acme/allactive/config_pes.xml +M cime_config/acme/allactive/config_pesall.xml +M cime_config/acme/machines/config_batch.xml +M cime_config/acme/machines/config_build.xml +M cime_config/acme/machines/config_compilers.xml +M cime_config/acme/machines/config_machines.xml +M cime_config/acme/machines/userdefined_laptop_template/config_machines.xml +M cime_config/cesm/allactive/testlist_allactive.xml +M cime_config/cesm/config_archive.xml +M cime_config/cesm/config_files.xml +M cime_config/cesm/config_grids.xml +M cime_config/cesm/machines/Makefile +M cime_config/cesm/machines/config_batch.xml +M cime_config/cesm/machines/config_machines.xml +M cime_config/cesm/machines/userdefined_laptop_template/config_machines.xml +M cime_config/config_tests.xml +A cime_config/xml_schemas/config_grids_v2.xsd +M components/data_comps/dlnd/cime_config/config_component.xml +M driver_cpl/cime_config/config_component.xml +D scripts/Testing/Testcases/NOC_script +M scripts/Tools/bless_test_results +M scripts/Tools/compare_test_results +M scripts/Tools/xmlchange +M scripts/Tools/xmlconvertors/config_pes_converter.py +M scripts/Tools/xmlconvertors/grid_xml_converter.py +M scripts/Tools/xmlquery +A tools/utils/find_circular_dependency.py +M utils/python/CIME/SystemTests/erio.py +M utils/python/CIME/SystemTests/homme.py +D utils/python/CIME/SystemTests/noc.py +M utils/python/CIME/XML/component.py +M utils/python/CIME/XML/entry_id.py +M utils/python/CIME/XML/generic_xml.py +M utils/python/CIME/XML/grids.py +M utils/python/CIME/bless_test_results.py +M utils/python/CIME/case.py +M utils/python/CIME/case_st_archive.py +M utils/python/CIME/preview_namelists.py +M utils/python/CIME/provenance.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/utils.py +M utils/python/tests/scripts_regression_tests.py +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 11-10-2016 +Tag: cime5.2.0-alpha.9 +Answer Changes: None +Tests: script_regression_tests +Dependencies: + +Brief Summary:port to updated cori and new laramie systems, erio test and gmake fix. + +User interface changes: + +Modified files: git diff --name-status +A cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/shell_commands +D cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/xmlchange_cmnds +A cime_config/acme/allactive/testmods_dirs/force_netcdf_pio/shell_commands +D cime_config/acme/allactive/testmods_dirs/force_netcdf_pio/xmlchange_cmnds +M cime_config/acme/config_archive.xml +M cime_config/acme/machines/config_batch.xml +M cime_config/acme/machines/config_compilers.xml +M cime_config/acme/machines/config_machines.xml +M cime_config/buildlib.pio +M cime_config/cesm/allactive/config_compsets.xml +M cime_config/cesm/allactive/testlist_allactive.xml +A cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/shell_commands +D cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/xmlchange_cmnds +M cime_config/cesm/config_archive.xml +M cime_config/cesm/machines/config_batch.xml +M cime_config/cesm/machines/config_compilers.xml +M cime_config/cesm/machines/config_machines.xml +M cime_config/cesm/machines/config_pio.xml +M driver_cpl/cime_config/buildexe +M driver_cpl/cime_config/config_component.xml +M scripts/Tools/compare_test_results +M share/csm_share/shr/shr_strdata_mod.F90 +M tools/cprnc/summarize_cprnc_diffs +M utils/python/CIME/SystemTests/erio.py +M utils/python/CIME/SystemTests/homme.py +M utils/python/CIME/XML/env_batch.py +M utils/python/CIME/XML/env_mach_specific.py +M utils/python/CIME/build.py +M utils/python/CIME/buildlib.py +M utils/python/CIME/case.py +M utils/python/CIME/case_st_archive.py +M utils/python/CIME/case_test.py +M utils/python/CIME/compare_test_results.py +M utils/python/CIME/hist_utils.py +M utils/python/CIME/nmlgen.py +M utils/python/CIME/preview_namelists.py +M utils/python/CIME/user_mod_support.py +M utils/python/CIME/utils.py +M utils/python/tests/scripts_regression_tests.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 11-02-2016 +Tag: cime5.2.0-alpha.8 +Answer Changes: None +Tests: scripts_regression_tests problem specific tests +Dependencies: + +Brief Summary: improved build logging, --output-root option, fix issues with user_mods, + fix pea test, update laramie, testreporter fixes + +User interface changes: +M cime_config/acme/machines/Makefile +M cime_config/acme/machines/config_batch.xml +M cime_config/acme/machines/config_compilers.xml +M cime_config/acme/machines/config_machines.xml +M cime_config/acme/machines/userdefined_laptop_template/config_machines.xml +M cime_config/cesm/allactive/testlist_allactive.xml +M cime_config/cesm/machines/Makefile +M cime_config/cesm/machines/config_batch.xml +M cime_config/cesm/machines/config_machines.xml +M cime_config/cesm/machines/userdefined_laptop_template/config_machines.xml +M cime_config/config_tests.xml +M driver_cpl/cime_config/config_component.xml +M driver_cpl/driver/cesm_comp_mod.F90 +M scripts/Testing/testreporter.pl +M scripts/Tools/bless_test_results +M scripts/Tools/case.cmpgen_namelists +M scripts/Tools/cime_bisect +M scripts/Tools/compare_test_results +M scripts/Tools/jenkins_generic_job +M scripts/create_newcase +M scripts/create_test +M utils/perl5lib/Config/SetupTools.pm +A utils/python/CIME/SystemTests/erio.py +M utils/python/CIME/SystemTests/system_tests_common.py +M utils/python/CIME/XML/entry_id.py +M utils/python/CIME/XML/env_batch.py +M utils/python/CIME/build.py +M utils/python/CIME/case.py +M utils/python/CIME/case_cmpgen_namelists.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/preview_namelists.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/user_mod_support.py +M utils/python/CIME/utils.py +M utils/python/tests/scripts_regression_tests.py +M utils/python/update_acme_tests.py + + +Modified files: git diff --name-status + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 10-27-2016 +Tag: cime5.2.0-alpha.7 +Answer Changes: None +Tests: scripts_regression_tests problem specific tests +Dependencies: + +Brief Summary: backout change to xmlchange command , fix ERP and ERI and DAE tests + +User interface changes: + +Modified files: git diff --name-status +M cime_config/acme/machines/config_machines.xml +M cime_config/cesm/machines/config_batch.xml +M cime_config/config_tests.xml +M scripts/Tools/code_checker +M scripts/Tools/xmlchange +M utils/python/CIME/SystemTests/erp.py +M utils/python/CIME/test_scheduler.py +M utils/python/tests/scripts_regression_tests.py +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 10-26-2016 +Tag: cime5.2.0-alpha.6 +Answer Changes: None +Tests: scripts_regression_tests, problem specific tests +Dependencies: + +Brief Summary: Fix for ERP tests, Fix for shr_scam_mod, indentation in cs.status + Fix for testmods recurrsion, pylint testing extended +User interface changes: none + +Modified files: git diff --name-status +M cime_config/acme/machines/config_machines.xml +M cime_config/buildlib.pio +M scripts/Tools/bless_test_results +M scripts/Tools/case.build +M scripts/Tools/case.cmpgen_namelists +M scripts/Tools/check_case +M scripts/Tools/check_input_data +M scripts/Tools/cime_bisect +M scripts/Tools/cimeteststatus +M scripts/Tools/code_checker +M scripts/Tools/compare_test_results +D scripts/Tools/config_pes_converter.py +M scripts/Tools/cs_status +D scripts/Tools/grid_xml_converter.py +M scripts/Tools/jenkins_generic_job +M scripts/Tools/standard_script_setup.py +M scripts/Tools/update_acme_tests +M scripts/Tools/xmlchange +A scripts/Tools/xmlconvertors/config_pes_converter.py +A scripts/Tools/xmlconvertors/grid_xml_converter.py +M scripts/Tools/xmlquery +M share/csm_share/shr/shr_scam_mod.F90 +M tools/cprnc/summarize_cprnc_diffs +M utils/python/CIME/SystemTests/erp.py +M utils/python/CIME/XML/env_mach_specific.py +M utils/python/CIME/XML/generic_xml.py +M utils/python/CIME/build.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/test_status.py +M utils/python/CIME/user_mod_support.py +M utils/python/tests/scripts_regression_tests.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 10-24-2016 +Tag: cime5.2.0-alpha.5 +Answer Changes: None +Tests: scripts_regression_tests, aux_clm45, others +Dependencies: + +Brief Summary: + +User interface changes: changes when preview_namelists is run, first in case.build and less frequently overall +Changes where sharedlib builds are installed to avoid conflicts in builds + +Modified files: git diff --name-status +M cime_config/acme/machines/Makefile +D cime_config/acme/machines/buildlib.csm_share +D cime_config/acme/machines/buildlib.gptl +D cime_config/acme/machines/buildlib.mct +D cime_config/acme/machines/buildlib.pio +A cime_config/buildlib.csm_share +A cime_config/buildlib.gptl +A cime_config/buildlib.mct +A cime_config/buildlib.pio +M cime_config/cesm/allactive/config_compsets.xml +M cime_config/cesm/machines/Makefile +D cime_config/cesm/machines/buildlib.csm_share +D cime_config/cesm/machines/buildlib.gptl +D cime_config/cesm/machines/buildlib.mct +D cime_config/cesm/machines/buildlib.pio +M cime_config/cesm/machines/config_machines.xml +M components/data_comps/datm/cime_config/config_component.xml +M components/data_comps/datm/cime_config/namelist_definition_datm.xml +M components/data_comps/datm/datm_comp_mod.F90 +M driver_cpl/cime_config/config_component.xml +M driver_cpl/driver/CMakeLists.txt +A driver_cpl/driver/map_lnd2rof_irrig_mod.F90 +M driver_cpl/driver/prep_lnd_mod.F90 +M driver_cpl/driver/prep_ocn_mod.F90 +M driver_cpl/driver/prep_rof_mod.F90 +M driver_cpl/driver/seq_diag_mct.F90 +M driver_cpl/shr/seq_flds_mod.F90 +M driver_cpl/unit_test/CMakeLists.txt +A driver_cpl/unit_test/map_lnd2rof_irrig_test/CMakeLists.txt +A driver_cpl/unit_test/map_lnd2rof_irrig_test/test_map_lnd2rof_irrig.pf +A scripts/Tools/case.cmpgen_namelists +M scripts/Tools/code_checker +M scripts/Tools/compare_namelists +M scripts/Tools/preview_namelists +M scripts/Tools/simple_compare +M share/csm_share/shr/shr_pio_mod.F90 +M share/csm_share/test/unit/shr_string_test/test_shr_string.pf +M share/csm_share/unit_test_stubs/pio/CMakeLists.txt +D share/csm_share/unit_test_stubs/pio/do_genf90 +D share/csm_share/unit_test_stubs/pio/pio.F90 +M share/csm_share/unit_test_stubs/pio/pio.F90.in +M utils/python/CIME/XML/entry_id.py +M utils/python/CIME/XML/env_mach_specific.py +M utils/python/CIME/build.py +M utils/python/CIME/case.py +A utils/python/CIME/case_cmpgen_namelists.py +M utils/python/CIME/case_run.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/case_submit.py +M utils/python/CIME/compare_namelists.py +M utils/python/CIME/preview_namelists.py +M utils/python/CIME/simple_compare.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/test_status.py +M utils/python/CIME/utils.py +M utils/python/tests/list_tests +M utils/python/tests/scripts_regression_tests.py +M utils/python/update_acme_tests.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 10-14-2016 +Tag: cime5.2.0-alpha.4 +Answer Changes: None +Tests: scripts_regression_tests, aux_clm4, cesm prealpha +Dependencies: + +Brief Summary: Bring the driver and data model build namelists into python, + add xml schema checks for config_component and namelist_definition files + +User interface changes: data model build namelists now in python + +Modified files: git diff --name-status +M cime_config/acme/config_grids.xml +D cime_config/acme/machines/ccsm_getenv +M cime_config/acme/machines/config_batch.xml +M cime_config/acme/machines/config_machines.xml +D cime_config/acme/machines/configure +D cime_config/acme/machines/template.tseries_generate.pl +M cime_config/cesm/allactive/testlist_allactive.xml +M cime_config/cesm/config_files.xml +M cime_config/cesm/config_grids.xml +M cime_config/cesm/machines/config_batch.xml +M cime_config/cesm/machines/config_machines.xml +M cime_config/cesm/machines/template.case.run +M cime_config/cesm/machines/template.lt_archive +M cime_config/cesm/machines/template.st_archive +M cime_config/config_tests.xml +A cime_config/xml_schemas/entry_id.xsd +A cime_config/xml_schemas/entry_id_base.xsd +A cime_config/xml_schemas/entry_id_namelist.xsd +D components/data_comps/datm/atm_comp_esmf.F90 +D components/data_comps/datm/bld/build-namelist +D components/data_comps/datm/bld/namelist_files/namelist_defaults.xsl +D components/data_comps/datm/bld/namelist_files/namelist_defaults_datm.xml +D components/data_comps/datm/bld/namelist_files/namelist_definition.xsl +D components/data_comps/datm/bld/namelist_files/namelist_definition_datm.xml +D components/data_comps/datm/bld/unit_testers/build-namelist_test.pl +D components/data_comps/datm/bld/unit_testers/env_run.xml +D components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_defaults_datm.xml +D components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_definition_datm.xml +M components/data_comps/datm/cime_config/buildlib +M components/data_comps/datm/cime_config/buildnml +M components/data_comps/datm/cime_config/config_component.xml +A components/data_comps/datm/cime_config/namelist_definition_datm.xml +M components/data_comps/datm/datm_comp_mod.F90 +D components/data_comps/dice/bld/build-namelist +D components/data_comps/dice/bld/namelist_files/namelist_defaults_dice.xml +D components/data_comps/dice/bld/namelist_files/namelist_definition_dice.xml +M components/data_comps/dice/cime_config/buildlib +M components/data_comps/dice/cime_config/buildnml +M components/data_comps/dice/cime_config/config_component.xml +A components/data_comps/dice/cime_config/namelist_definition_dice.xml +M components/data_comps/dice/dice_comp_mod.F90 +D components/data_comps/dice/ice_comp_esmf.F90 +D components/data_comps/dlnd/bld/build-namelist +D components/data_comps/dlnd/bld/namelist_files/namelist_defaults_dlnd.xml +D components/data_comps/dlnd/bld/namelist_files/namelist_definition_dlnd.xml +M components/data_comps/dlnd/cime_config/buildlib +M components/data_comps/dlnd/cime_config/buildnml +M components/data_comps/dlnd/cime_config/config_component.xml +A components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml +M components/data_comps/dlnd/dlnd_comp_mod.F90 +D components/data_comps/dlnd/lnd_comp_esmf.F90 +D components/data_comps/docn/bld/build-namelist +D components/data_comps/docn/bld/namelist_files/namelist_defaults_docn.xml +D components/data_comps/docn/bld/namelist_files/namelist_definition_docn.xml +M components/data_comps/docn/cime_config/buildlib +M components/data_comps/docn/cime_config/buildnml +M components/data_comps/docn/cime_config/config_component.xml +A components/data_comps/docn/cime_config/namelist_definition_docn.xml +M components/data_comps/docn/docn_comp_mod.F90 +D components/data_comps/docn/ocn_comp_esmf.F90 +D components/data_comps/drof/bld/build-namelist +D components/data_comps/drof/bld/namelist_files/namelist_defaults_drof.xml +D components/data_comps/drof/bld/namelist_files/namelist_definition_drof.xml +M components/data_comps/drof/cime_config/buildlib +M components/data_comps/drof/cime_config/buildnml +M components/data_comps/drof/cime_config/config_component.xml +A components/data_comps/drof/cime_config/namelist_definition_drof.xml +M components/data_comps/drof/drof_comp_mod.F90 +D components/data_comps/drof/rof_comp_esmf.F90 +D components/data_comps/dwav/bld/build-namelist +D components/data_comps/dwav/bld/namelist_files/namelist_defaults_dwav.xml +D components/data_comps/dwav/bld/namelist_files/namelist_definition_dwav.xml +M components/data_comps/dwav/cime_config/buildlib +M components/data_comps/dwav/cime_config/buildnml +M components/data_comps/dwav/cime_config/config_component.xml +A components/data_comps/dwav/cime_config/namelist_definition_dwav.xml +M components/data_comps/dwav/dwav_comp_mod.F90 +M components/stub_comps/satm/cime_config/buildlib +M components/stub_comps/satm/cime_config/config_component.xml +M components/stub_comps/sesp/cime_config/buildlib +M components/stub_comps/sesp/cime_config/config_component.xml +M components/stub_comps/sglc/cime_config/buildlib +M components/stub_comps/sglc/cime_config/config_component.xml +M components/stub_comps/sice/cime_config/buildlib +M components/stub_comps/sice/cime_config/config_component.xml +M components/stub_comps/slnd/cime_config/buildlib +M components/stub_comps/slnd/cime_config/config_component.xml +M components/stub_comps/socn/cime_config/buildlib +M components/stub_comps/socn/cime_config/config_component.xml +M components/stub_comps/srof/cime_config/buildlib +M components/stub_comps/srof/cime_config/config_component.xml +M components/stub_comps/swav/cime_config/buildlib +M components/stub_comps/swav/cime_config/config_component.xml +M components/xcpl_comps/xatm/cime_config/buildlib +M components/xcpl_comps/xatm/cime_config/buildnml +M components/xcpl_comps/xatm/cime_config/config_component.xml +M components/xcpl_comps/xglc/cime_config/buildlib +M components/xcpl_comps/xglc/cime_config/buildnml +M components/xcpl_comps/xglc/cime_config/config_component.xml +M components/xcpl_comps/xice/cime_config/buildlib +M components/xcpl_comps/xice/cime_config/buildnml +M components/xcpl_comps/xice/cime_config/config_component.xml +M components/xcpl_comps/xlnd/cime_config/buildlib +M components/xcpl_comps/xlnd/cime_config/buildnml +M components/xcpl_comps/xlnd/cime_config/config_component.xml +M components/xcpl_comps/xocn/cime_config/buildlib +M components/xcpl_comps/xocn/cime_config/buildnml +M components/xcpl_comps/xocn/cime_config/config_component.xml +M components/xcpl_comps/xrof/cime_config/buildlib +M components/xcpl_comps/xrof/cime_config/buildnml +M components/xcpl_comps/xrof/cime_config/config_component.xml +M components/xcpl_comps/xwav/cime_config/buildlib +M components/xcpl_comps/xwav/cime_config/buildnml +M components/xcpl_comps/xwav/cime_config/config_component.xml +D driver_cpl/bld/build-namelist +M driver_cpl/bld/namelist_files/namelist_defaults_drv.xml +M driver_cpl/bld/namelist_files/namelist_definition_drv.xml +M driver_cpl/bld/namelist_files/namelist_definition_drv_flds.xml +M driver_cpl/cime_config/buildexe +M driver_cpl/cime_config/buildnml +M driver_cpl/cime_config/config_component.xml +M driver_cpl/cime_config/config_compsets.xml +A driver_cpl/cime_config/namelist_definition_drv.xml +A driver_cpl/cime_config/namelist_definition_modelio.xml +M driver_cpl/driver/prep_ocn_mod.F90 +M driver_cpl/shr/seq_drydep_mod.F90 +M externals/pio2/src/flib/pio.F90 +M externals/pio2/src/flib/pio_types.F90 +M scripts/Testing/testreporter.pl +M scripts/Tools/code_checker +M scripts/Tools/standard_script_setup.py +M scripts/Tools/xmlquery +M scripts/create_clone +M scripts/create_newcase +M scripts/create_test +M scripts/manage_case +M scripts/manage_pes +M scripts/query_testlists +M share/csm_share/shr/shr_pio_mod.F90 +M share/csm_share/shr/shr_strdata_mod.F90 +M share/csm_share/shr/shr_stream_mod.F90 +M tools/configure +D tools/system_tests/configure.test/configtest.pl +D utils/perl5lib/Streams/TemplateGeneric.pm +M utils/python/CIME/SystemTests/nck.py +M utils/python/CIME/SystemTests/pea.py +M utils/python/CIME/SystemTests/pem.py +M utils/python/CIME/SystemTests/seq.py +M utils/python/CIME/SystemTests/system_tests_common.py +M utils/python/CIME/XML/component.py +M utils/python/CIME/XML/entry_id.py +M utils/python/CIME/XML/env_batch.py +M utils/python/CIME/XML/env_mach_specific.py +M utils/python/CIME/XML/files.py +M utils/python/CIME/XML/generic_xml.py +M utils/python/CIME/XML/grids.py +A utils/python/CIME/XML/namelist_definition.py +M utils/python/CIME/XML/testlist.py +M utils/python/CIME/XML/testspec.py +M utils/python/CIME/build.py +M utils/python/CIME/buildnml.py +M utils/python/CIME/case.py +M utils/python/CIME/case_run.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/case_submit.py +M utils/python/CIME/compare_namelists.py +M utils/python/CIME/get_timing.py +M utils/python/CIME/hist_utils.py +A utils/python/CIME/namelist.py +A utils/python/CIME/nmlgen.py +M utils/python/CIME/provenance.py +M utils/python/CIME/simple_compare.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/test_status.py +M utils/python/CIME/test_utils.py +M utils/python/CIME/tests/SystemTests/test_system_tests_compare_two.py +M utils/python/CIME/utils.py +M utils/python/CIME/wait_for_tests.py +M utils/python/tests/CTestConfig.cmake +M utils/python/tests/scripts_regression_tests.py +M utils/python/update_acme_tests.py + +====================================================================== + +====================================================================== + +Originator: Jim Edwards +Date: 10-04-2016 +Tag: cime5.2.0-alpha.3 +Answer Changes: None +Tests: scripts_regression_tests +Dependencies: + +Brief Summary: updates based on cesm2_0_beta02 testing, add memleak_tolerance check, better TestStatus for incomplete tests. new query_testlist feature. + +User interface changes: + +Modified files: git diff --name-status +M cime_config/acme/allactive/config_pesall.xml +M cime_config/acme/config_archive.xml +M cime_config/acme/config_files.xml +M cime_config/acme/machines/config_batch.xml +M cime_config/acme/machines/config_build.xml +M cime_config/acme/machines/config_compilers.xml +M cime_config/acme/machines/config_machines.xml +D cime_config/acme/machines/env_mach_specific.penn +M cime_config/cesm/allactive/testlist_allactive.xml +M cime_config/cesm/config_archive.xml +M cime_config/cesm/config_files.xml +M cime_config/cesm/machines/config_batch.xml +M cime_config/config_tests.xml +M driver_cpl/cime_config/config_component.xml +M driver_cpl/cime_config/testdefs/testlist_drv.xml +M externals/pio2/src/clib/pioc.c +M scripts/create_test +A scripts/query_testlists +D tools/cprnc/CMake/FindNetcdf.cmake +M tools/cprnc/CMakeLists.txt +M tools/cprnc/README +M utils/python/CIME/SystemTests/erp.py +M utils/python/CIME/SystemTests/system_tests_common.py +M utils/python/CIME/XML/env_batch.py +M utils/python/CIME/XML/generic_xml.py +M utils/python/CIME/XML/lt_archive.py +M utils/python/CIME/XML/testlist.py +M utils/python/CIME/case.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/hist_utils.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/test_status.py +M utils/python/CIME/test_utils.py +M utils/python/CIME/utils.py +M utils/python/tests/scripts_regression_tests.py + +====================================================================== + +Originator: Jim Edwards +Date: 09-27-2016 +Tag: cime5.2.0-alpha01 +Answer Changes: None +Tests: scripts_regression_tests +Dependencies: None + +Brief Summary: Bug fixes related to cesm2_0_beta02 testing, EBM liquid and ice mapping files seperated, RASM bug fix + +User interface changes: none + +Modified files: git diff --name-status +M cime_config/acme/config_archive.xml +M cime_config/acme/machines/buildlib.csm_share +M cime_config/acme/machines/config_batch.xml +M cime_config/acme/machines/config_compilers.xml +M cime_config/acme/machines/config_machines.xml +M cime_config/acme/machines/config_pio.xml +M cime_config/cesm/machines/config_batch.xml +M cime_config/cesm/machines/config_machines.xml +M cime_config/config_tests.xml +M driver_cpl/bld/build-namelist +M driver_cpl/bld/namelist_files/namelist_definition_drv.xml +M driver_cpl/cime_config/buildnml +M driver_cpl/cime_config/config_component.xml +M driver_cpl/driver/cesm_comp_mod.F90 +M driver_cpl/driver/seq_diag_mct.F90 +M driver_cpl/shr/seq_flds_mod.F90 +M driver_cpl/shr/seq_infodata_mod.F90 +M scripts/Tools/cs_status +D scripts/Tools/taskmaker +M scripts/Tools/xmlquery +M scripts/create_test +A utils/data_assimilation/da_no_data_mod.sh +A utils/python/CIME/SystemTests/dae.py +M utils/python/CIME/SystemTests/eri.py +M utils/python/CIME/SystemTests/pet.py +M utils/python/CIME/SystemTests/pfs.py +M utils/python/CIME/XML/entry_id.py +M utils/python/CIME/XML/env_batch.py +M utils/python/CIME/XML/env_mach_pes.py +M utils/python/CIME/XML/env_mach_specific.py +M utils/python/CIME/XML/generic_xml.py +M utils/python/CIME/XML/machines.py +M utils/python/CIME/build.py +M utils/python/CIME/case.py +M utils/python/CIME/case_run.py +M utils/python/CIME/case_setup.py +M utils/python/CIME/check_input_data.py +D utils/python/CIME/task_maker.py +M utils/python/CIME/test_scheduler.py +M utils/python/CIME/test_status.py +M utils/python/tests/scripts_regression_tests.py +M utils/python/update_acme_tests.py + + + +====================================================================== + +====================================================================== + Originator: Jim Edwards Date: 09-08-2016 Tag: cime5.0.11 @@ -696,7 +2242,7 @@ Tests: Dependencies: Brief Summary: Addition of ice to ocean coupling fields Fioi_bcphi, - Fioi_bcpho, Fioi_flxdst + Fioi_bcpho, Fioi_flxdst User interface changes: @@ -709,12 +2255,12 @@ Originator: fischer-ncar, jtruesdal Date: 6 July 2016 Tag: cime4.5.18 Answer Changes: Answer changes for compset with WaveWatch turned on. - All others are bit-for-bit. + All others are bit-for-bit. Tests: Namelist test ran on yellowstone, WAV_GRID manually looked at. Dependencies: Brief Summary: Add support to run WaveWatch. Allactive - compset not being tested were removed. + compset not being tested were removed. User interface changes: @@ -760,4 +2306,3 @@ User interface changes: Modified files: git diff --name-status ====================================================================== - diff --git a/cime/ChangeLog_template b/cime/ChangeLog_template index cc79169fed7d..118195965b96 100644 --- a/cime/ChangeLog_template +++ b/cime/ChangeLog_template @@ -11,7 +11,9 @@ Brief Summary: User interface changes: -Modified files: git diff --name-status +PR summary: git log --oneline --first-parent [previous_tag]..master + +Modified files: git diff --name-status [previous_tag] ====================================================================== diff --git a/cime/README.unit_testing b/cime/README.unit_testing index c28e27b09631..7b2a3d1983e8 100644 --- a/cime/README.unit_testing +++ b/cime/README.unit_testing @@ -1,6 +1,16 @@ # To run all CIME unit tests on caldera, run the following command: # (Note that this must be done from an interactive caldera session, not from yellowstone) -tools/unit_testing/run_tests.py --test-spec-dir=. --compiler=intel --mpilib=mpich2 --mpirun-command=mpirun.lsf --cmake-args=-DPAPI_LIB=/glade/apps/opt/papi/5.3.0/intel/12.1.5/lib64 +# Note also that this requires module load all-python-libs +# +# The creation of a temporary directory ensures that you are doing a completely +# clean build of the unit tests. (The use of the --clean flag to run_tests.py +# cleans most, but not all of the files created by the unit test build.) For +# rerunning the tests after an incremental change, you can instead use an +# existing build directory. +# +# We would encourage you to port these tests to other platforms. +# The test requires an install of pFunit available from +# https://sourceforge.net/projects/pfunit/ +# -# The inclusion of PAPI_LIB is needed above since config_compilers includes: -# -Wl,-rpath ${PAPI_LIB} -L${PAPI_LIB} -lpapi +tools/unit_testing/run_tests.py --test-spec-dir=. --compiler=intel --mpilib=mpich2 --use-openmp --mpirun-command=mpirun.lsf --build-dir `mktemp -d --tmpdir=. unit_tests.XXXXXXXX` diff --git a/cime/cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/shell_commands b/cime/cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/shell_commands new file mode 100644 index 000000000000..ac78d092c67a --- /dev/null +++ b/cime/cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/shell_commands @@ -0,0 +1,5 @@ +if [ `./xmlquery MACH -value` = "melvin" ]; then + ./xmlchange PIO_TYPENAME=netcdf +fi + +./xmlchange ROF_NCPL=48 diff --git a/cime/cime_config/acme/config_archive.xml b/cime/cime_config/acme/config_archive.xml index 919c69a7d439..a4843a2b5724 100644 --- a/cime/cime_config/acme/config_archive.xml +++ b/cime/cime_config/acme/config_archive.xml @@ -1,4 +1,4 @@ - + \.[ri]\..* @@ -11,15 +11,6 @@ - - \.r\..* - unset - - rpointer$NINST_STRING.atm - $CASE.datm$NINST_STRING.r.$DATENAME.nc,$CASE.datm$NINST_STRING.rs1.$DATENAME.bin - - - \.[ri]\..* \.rh.* @@ -31,15 +22,6 @@ - - \.r.* - unset - - rpointer$NINST_STRING.lnd - $CASE.dlnd$NINST_STRING.r.$DATENAME.nc,$CASE.dlnd$NINST_STRING.rs1.$DATENAME.bin - - - \.r.* \.h.*.nc$ @@ -60,15 +42,6 @@ - - \.r.* - unset - - rpointer$NINST_STRING.rof - $CASE.drof$NINST_STRING.r.$DATENAME.nc,$CASE.drof$NINST_STRING.rs1.$DATENAME.bin - - - \.[ri].* \.h.*.nc$ @@ -88,15 +61,6 @@ - - \.r.* - unset - - rpointer$NINST_STRING.ice - $CASE.dice$NINST_STRING.r.$DATENAME.nc,$CASE.dice$NINST_STRING.rs1.$DATENAME.bin - - - \.r.* \.h.*.nc$|\.d[dovt]\. @@ -120,18 +84,10 @@ - - \.r.* - unset - - rpointer$NINST_STRING.ocn - $CASE.docn$NINST_STRING.r.$DATENAME.nc,$CASE.docn$NINST_STRING.rs1.$DATENAME.bin - - - \.[ri]\..* - \.h.*.nc$ + \.h\..*\.nc$ + \.initial_hist\..*\.nc$ unset rpointer$NINST_STRING.glc @@ -158,35 +114,18 @@ - - \.r.* - unset - - rpointer$NINST_STRING.wav - $CASE.dwav$NINST_STRING.r.$DATENAME.nc,$CASE.dwav$NINST_STRING.rs1.$DATENAME.bin - - - - + inflate_restart.* - True_State.* - Prior_Diag.* - Posterior_Diag.* - obs_seq.* + \.True_State.* + \.Prior_Diag.* + \.Posterior_Diag.* + \..+\.posterior* + \..+\.prior* + \..+$_obs_seq.* unset rpointer.unset - unset - - - - - \.r\..* - \.h.*.nc$ - unset - - rpointer.cpl - $CASE.cpl.r.$DATENAME.nc + unset diff --git a/cime/cime_config/acme/config_files.xml b/cime/cime_config/acme/config_files.xml index 99c70df69b07..dcd983203093 100644 --- a/cime/cime_config/acme/config_files.xml +++ b/cime/cime_config/acme/config_files.xml @@ -2,7 +2,7 @@ - + char @@ -24,6 +24,15 @@ contains both header and group information for all the case env_*.xml files + + char + $CIMEROOT/cime_config/$MODEL/machines/config_batch.xml + case_last + env_case.xml + file containing batch system details for target system (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_batch.xsd + + char $CIMEROOT/cime_config/$MODEL/config_grids.xml @@ -38,6 +47,7 @@ case_last env_case.xml file containing compiler specifications for target model primary component (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_compilers_v2.xsd @@ -48,14 +58,6 @@ file containing machine specifications for target model primary component (for documentation only - DO NOT EDIT) - - char - $CIMEROOT/cime_config/$MODEL/machines/config_build.xml - case_last - env_case.xml - file containing build specifications for target model primary component (for documentation only - DO NOT EDIT) - - char $CIMEROOT/cime_config/$MODEL/machines/config_pio.xml @@ -95,6 +97,7 @@ case_last env_case.xml file containing specification of all compsets for primary component (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_compsets.xsd @@ -115,6 +118,35 @@ case_last env_case.xml file containing specification of all pe-layouts for primary component (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_pes.xsd + + + + char + + $CIMEROOT/cime_config/acme/config_archive.xml + $CIMEROOT/driver_cpl/cime_config/config_archive.xml + + $CIMEROOT/components/data_comps/drof/cime_config/config_archive.xml + $CIMEROOT/components/data_comps/datm/cime_config/config_archive.xml + $CIMEROOT/components/data_comps/dice/cime_config/config_archive.xml + $CIMEROOT/components/data_comps/dlnd/cime_config/config_archive.xml + $CIMEROOT/components/data_comps/docn/cime_config/config_archive.xml + $CIMEROOT/components/data_comps/dwav/cime_config/config_archive.xml + + $SRCROOT/components/cam/cime_config/config_archive.xml + $SRCROOT/components/cism/cime_config/config_archive.xml + $SRCROOT/components/clm/cime_config/config_archive.xml + $SRCROOT/components/cice/cime_config/config_archive.xml + $SRCROOT/components/pop/cime_config/config_archive.xml + $SRCROOT/components/mpas-o/cime_config/config_archive.xml + $SRCROOT/components/mpasli/cime_config/config_archive.xml + $SRCROOT/components/mpas-cice/cime_config/config_archive.xml + + case_last + env_case.xml + file containing specification of archive files for each component (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_archive.xsd @@ -189,11 +221,49 @@ directory containing user modifications for primary components (for documentation only - DO NOT EDIT) + + char + unset + + $CIMEROOT/driver_cpl/cime_config/namelist_definition_modelio.xml + $CIMEROOT/driver_cpl/bld/namelist_files/namelist_definition_drv_flds.xml + $CIMEROOT/driver_cpl/cime_config/namelist_definition_drv.xml + + $CIMEROOT/components/data_comps/drof/cime_config/namelist_definition_drof.xml + $CIMEROOT/components/data_comps/datm/cime_config/namelist_definition_datm.xml + $CIMEROOT/components/data_comps/dice/cime_config/namelist_definition_dice.xml + $CIMEROOT/components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml + $CIMEROOT/components/data_comps/docn/cime_config/namelist_definition_docn.xml + $CIMEROOT/components/data_comps/dwav/cime_config/namelist_definition_dwav.xml + + + + case_last + env_case.xml + file containing namelist_definitions for all components + $CIMEROOT/cime_config/xml_schemas/entry_id_namelist.xsd + + + + char + $CIMEROOT/cime_config/$MODEL/machines/config_lt_archive.xml + case_last + env_case.xml + file containing all lt archive configuration variables (for documentation only - DO NOT EDIT) + + - + char $CIMEROOT/driver_cpl/cime_config/config_component.xml case_last @@ -201,6 +271,15 @@ file containing all non-component specific case configuration variables (for documentation only - DO NOT EDIT) + + char + $CIMEROOT/driver_cpl/cime_config/config_component_$MODEL.xml + case_last + env_case.xml + file containing all component specific driver configuration variables (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd + + char unset @@ -312,11 +391,12 @@ $CIMEROOT/components/stub_comps/sesp/cime_config/config_component.xml $CIMEROOT/components/stub_comps/sesp/cime_config/config_component.xml + $CIMEROOT/components/data_comps/desp/cime_config/config_component.xml case_last env_case.xml file containing specification of component specific definitions and values(for documentation only - DO NOT EDIT) - + diff --git a/cime/cime_config/acme/config_grids.xml b/cime/cime_config/acme/config_grids.xml index 7890e5f2da2f..e509a172f9fb 100644 --- a/cime/cime_config/acme/config_grids.xml +++ b/cime/cime_config/acme/config_grids.xml @@ -271,7 +271,7 @@ f19_g16 a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - + 1.9x2.5_gx1v6 f19_g16 @@ -1200,17 +1200,17 @@ 320 384 - domain.ocn.gx1v6.090206.nc - domain.ocn.gx1v6.090206.nc - domain.ocn.gx1v6.090206.nc - domain.ocn.gx1v6.090206.nc + domain.ocn.gx1v6.090206.nc + domain.ocn.gx1v6.090206.nc + domain.ocn.gx1v6.090206.nc + domain.ocn.gx1v6.090206.nc gx1v6 is displaced Greenland pole v6 1-deg grid: 100 116 - domain.ocn.gx3v7.120323.nc - domain.ocn.gx3v7.120323.nc + domain.ocn.gx3v7.120323.nc + domain.ocn.gx3v7.120323.nc gx3v7 is displaced Greenland pole v7 3-deg grid: @@ -1224,8 +1224,8 @@ 360 240 - domain.ocn.tx1v1.090122.nc - domain.ocn.tx1v1.090122.nc + domain.ocn.tx1v1.090122.nc + domain.ocn.tx1v1.090122.nc tripole v1 1-deg grid: testing proxy for high-res tripole ocean grids- do not use for scientific experiments Experimental tripole ocean grid @@ -2058,157 +2058,195 @@ - cpl/cpl6/map_rx1_to_gx3v7_e1000r500_090903.nc + cpl/cpl6/map_rx1_to_gx3v7_e1000r500_090903.nc + cpl/cpl6/map_rx1_to_gx3v7_e1000r500_090903.nc - cpl/cpl6/map_rx1_to_gx1v6_e1000r300_090318.nc + cpl/cpl6/map_rx1_to_gx1v6_e1000r300_090318.nc + cpl/cpl6/map_rx1_to_gx1v6_e1000r300_090318.nc - cpl/cpl6/map_rx1_to_tx1v1_e1000r300_090318.nc + cpl/cpl6/map_rx1_to_tx1v1_e1000r300_090318.nc + cpl/cpl6/map_rx1_to_tx1v1_e1000r300_090318.nc - cpl/cpl6/map_rx1_to_tx0.1v2_e1000r200_090624.nc + cpl/cpl6/map_rx1_to_tx0.1v2_e1000r200_090624.nc + cpl/cpl6/map_rx1_to_tx0.1v2_e1000r200_090624.nc - cpl/cpl6/map_r05_to_gx3v7_e1000r500_090903.nc + cpl/cpl6/map_r05_to_gx3v7_e1000r500_090903.nc + cpl/cpl6/map_r05_to_gx3v7_e1000r500_090903.nc - cpl/cpl6/map_r05_to_gx1v6_e1000r300_090226.nc + cpl/cpl6/map_r05_to_gx1v6_e1000r300_090226.nc + cpl/cpl6/map_r05_to_gx1v6_e1000r300_090226.nc - cpl/cpl6/map_r05_to_tx1v1_e1000r500_080505.nc + cpl/cpl6/map_r05_to_tx1v1_e1000r500_080505.nc + cpl/cpl6/map_r05_to_tx1v1_e1000r500_080505.nc - cpl/cpl6/map_r05_to_tx0.1v2_r500e1000_080620.nc + cpl/cpl6/map_r05_to_tx0.1v2_r500e1000_080620.nc + cpl/cpl6/map_r05_to_tx0.1v2_r500e1000_080620.nc - cpl/cpl6/map_r01_to_gx1v6_120711.nc + cpl/cpl6/map_r01_to_gx1v6_120711.nc + cpl/cpl6/map_r01_to_gx1v6_120711.nc - cpl/cpl6/map_rx1_to_mpasgx1_nn_150910.nc + cpl/cpl6/map_rx1_to_mpasgx1_nn_150910.nc + cpl/cpl6/map_rx1_to_mpasgx1_nn_150910.nc - cpl/cpl6/map_rx1_to_mpas120_nn_131217.nc + cpl/cpl6/map_rx1_to_mpas120_nn_131217.nc + cpl/cpl6/map_rx1_to_mpas120_nn_131217.nc - cpl/cpl6/map_r05_to_QU120km_nn_151110.nc + cpl/cpl6/map_r05_to_QU120km_nn_151110.nc + cpl/cpl6/map_r05_to_QU120km_nn_151110.nc - cpl/cpl6/map_rx1_to_oQU240_nn.160527.nc + cpl/cpl6/map_rx1_to_oQU240_nn.160527.nc + cpl/cpl6/map_rx1_to_oQU240_nn.160527.nc - cpl/cpl6/map_rx1_to_oQU240wLI_nn.160929.nc + cpl/cpl6/map_rx1_to_oQU240wLI_nn.160929.nc + cpl/cpl6/map_rx1_to_oQU240wLI_nn.160929.nc - cpl/cpl6/map_rx1_to_oQU120_nn.160527.nc + cpl/cpl6/map_rx1_to_oQU120_nn.160527.nc + cpl/cpl6/map_rx1_to_oQU120_nn.160527.nc - cpl/cpl6/map_rx1_to_oEC60to30_nn.160527.nc + cpl/cpl6/map_rx1_to_oEC60to30_nn.160527.nc + cpl/cpl6/map_rx1_to_oEC60to30_nn.160527.nc - cpl/cpl6/map_rx1_to_oEC60to30v3_smoothed.r300e600.161222.nc + cpl/cpl6/map_rx1_to_oEC60to30v3_smoothed.r300e600.161222.nc + cpl/cpl6/map_rx1_to_oEC60to30v3_smoothed.r300e600.161222.nc - cpl/cpl6/map_rx1_to_oEC60to30wLI_nn.160830.nc + cpl/cpl6/map_rx1_to_oEC60to30wLI_nn.160830.nc + cpl/cpl6/map_rx1_to_oEC60to30wLI_nn.160830.nc - cpl/cpl6/map_rx1_to_oRRS30to10_nn.160527.nc + cpl/cpl6/map_rx1_to_oRRS30to10_nn.160527.nc + cpl/cpl6/map_rx1_to_oRRS30to10_nn.160527.nc - cpl/cpl6/map_rx1_to_oRRS30to10v3_smoothed.r150e300.161221.nc + cpl/cpl6/map_rx1_to_oRRS30to10v3_smoothed.r150e300.161221.nc + cpl/cpl6/map_rx1_to_oRRS30to10v3_smoothed.r150e300.161221.nc - cpl/cpl6/map_rx1_to_oRRS30to10wLI_smoothed.r150e300.160930.nc + cpl/cpl6/map_rx1_to_oRRS30to10wLI_smoothed.r150e300.160930.nc + cpl/cpl6/map_rx1_to_oRRS30to10wLI_smoothed.r150e300.160930.nc - cpl/cpl6/map_rx1_to_oRRS18to6_nn.160830.nc + cpl/cpl6/map_rx1_to_oRRS18to6_nn.160830.nc + cpl/cpl6/map_rx1_to_oRRS18to6_nn.160830.nc - cpl/cpl6/map_rx1_to_oRRS18to6v3_smoothed.r100e200.170111.nc + cpl/cpl6/map_rx1_to_oRRS18to6v3_smoothed.r100e200.170111.nc + cpl/cpl6/map_rx1_to_oRRS18to6v3_smoothed.r100e200.170111.nc - cpl/cpl6/map_rx1_to_oRRS15to5_nn.160527.nc + cpl/cpl6/map_rx1_to_oRRS15to5_nn.160527.nc + cpl/cpl6/map_rx1_to_oRRS15to5_nn.160527.nc - cpl/cpl6/map_r05_to_oQU240_nn.160714.nc + cpl/cpl6/map_r05_to_oQU240_nn.160714.nc + cpl/cpl6/map_r05_to_oQU240_nn.160714.nc - cpl/cpl6/map_r05_to_oQU240wLI_nn.160929.nc + cpl/cpl6/map_r05_to_oQU240wLI_nn.160929.nc + cpl/cpl6/map_r05_to_oQU240wLI_nn.160929.nc - cpl/cpl6/map_r05_to_oQU120_nn.160718.nc + cpl/cpl6/map_r05_to_oQU120_nn.160718.nc + cpl/cpl6/map_r05_to_oQU120_nn.160718.nc - cpl/cpl6/map_r05_to_oEC60to30_smoothed.r175e350.160718.nc + cpl/cpl6/map_r05_to_oEC60to30_smoothed.r175e350.160718.nc + cpl/cpl6/map_r05_to_oEC60to30_smoothed.r175e350.160718.nc - cpl/cpl6/map_r05_to_oEC60to30_smoothed.r175e350.160718.nc + cpl/cpl6/map_r05_to_oEC60to30_smoothed.r175e350.160718.nc + cpl/cpl6/map_r05_to_oEC60to30_smoothed.r175e350.160718.nc - cpl/cpl6/map_r05_to_oEC60to30v3_smoothed.r300e600.161222.nc + cpl/cpl6/map_r05_to_oEC60to30v3_smoothed.r300e600.161222.nc + cpl/cpl6/map_r05_to_oEC60to30v3_smoothed.r300e600.161222.nc - cpl/cpl6/map_r05_to_oEC60to30v3_smoothed.r300e600.161222.nc + cpl/cpl6/map_r05_to_oEC60to30v3_smoothed.r300e600.161222.nc + cpl/cpl6/map_r05_to_oEC60to30v3_smoothed.r300e600.161222.nc - cpl/cpl6/map_r05_to_oEC60to30wLI_smoothed.r300e600.160926.nc + cpl/cpl6/map_r05_to_oEC60to30wLI_smoothed.r300e600.160926.nc + cpl/cpl6/map_r05_to_oEC60to30wLI_smoothed.r300e600.160926.nc - cpl/cpl6/map_r05_to_oRRS30to10_nn.160718.nc + cpl/cpl6/map_r05_to_oRRS30to10_nn.160718.nc + cpl/cpl6/map_r05_to_oRRS30to10_nn.160718.nc - cpl/cpl6/map_r05_to_oRRS30to10wLI_nn.160930.nc + cpl/cpl6/map_r05_to_oRRS30to10wLI_nn.160930.nc + cpl/cpl6/map_r05_to_oRRS30to10wLI_nn.160930.nc - cpl/cpl6/map_r05_to_oRRS15to5_nn.160203.nc + cpl/cpl6/map_r05_to_oRRS15to5_nn.160203.nc + cpl/cpl6/map_r05_to_oRRS15to5_nn.160203.nc - cpl/cpl6/map_r0125_to_oRRS18to6_nn.160831.nc + cpl/cpl6/map_r0125_to_oRRS18to6_nn.160831.nc + cpl/cpl6/map_r0125_to_oRRS18to6_nn.160831.nc - cpl/cpl6/map_r0125_to_oRRS18to6v3_nn.170111.nc + cpl/cpl6/map_r0125_to_oRRS18to6v3_nn.170111.nc + cpl/cpl6/map_r0125_to_oRRS18to6v3_nn.170111.nc - cpl/cpl6/map_r0125_to_oRRS15to5_nn.160720.nc + cpl/cpl6/map_r0125_to_oRRS15to5_nn.160720.nc + cpl/cpl6/map_r0125_to_oRRS15to5_nn.160720.nc diff --git a/cime/cime_config/acme/machines/Makefile b/cime/cime_config/acme/machines/Makefile index 3ca3c958ad8a..1ecad3188a5d 100644 --- a/cime/cime_config/acme/machines/Makefile +++ b/cime/cime_config/acme/machines/Makefile @@ -1,11 +1,7 @@ #=============================================================================== +# # Common Makefile: a framework for building all CIME components and more # -# Command-line variables -# MODEL= ~ a standard macro definition, often found in the included -# MACFILE, used to trigger special compilation flags -# Supported compilers -# ibm, bgl, bgp, pgi, intel, pathscale, gnu, nag #=============================================================================== # Set up special characters @@ -82,7 +78,7 @@ endif # set CPP options (must use this before any flags or cflags settings) #=============================================================================== -CPPDEFS := $(USER_CPPDEFS) -D$(OS) -DCPR$(shell echo $(COMPILER) | tr a-z A-z) +CPPDEFS := $(USER_CPPDEFS) -D$(OS) # Unless DEBUG mode is enabled, use NDEBUG to turn off assert statements. ifneq ($(strip $(DEBUG)),TRUE) @@ -136,13 +132,12 @@ ifeq ($(strip $(PIO_VERSION)),1) CPPDEFS += -DPIO1 endif - - ifeq (,$(SHAREDPATH)) - SHAREDPATH = $(SHAREDLIBROOT)/$(COMPILER)/$(MPILIB)/$(DEBUGDIR)/$(THREADDIR) + SHAREDPATH = $(COMPILER)/$(MPILIB)/$(DEBUGDIR)/$(THREADDIR) + INSTALL_SHAREDPATH = $(EXEROOT)/$(SHAREDPATH) endif -include $(CASEROOT)/Macros +include $(CASEROOT)/Macros.make # Decide whether to use a C++ or Fortran linker, based on whether we # are using any C++ code and the compiler-dependent CXX_LINKER variable ifeq ($(USE_CXX), true) @@ -190,20 +185,57 @@ ifndef AR AR := ar endif -ifdef NETCDF_PATH +ifdef NETCDF_C_PATH + ifndef NETCDF_FORTRAN_PATH + $(error "NETCDF_C_PATH specified without NETCDF_FORTRAN_PATH") + endif + NETCDF_SEPARATE:=true + ifndef INC_NETCDF_C + INC_NETCDF_C:=$(NETCDF_C_PATH)/include + endif + ifndef INC_NETCDF_FORTRAN + INC_NETCDF_FORTRAN:=$(NETCDF_FORTRAN_PATH)/include + endif + ifndef LIB_NETCDF_C + LIB_NETCDF_C:=$(NETCDF_C_PATH)/lib + endif + ifndef LIB_NETCDF_FORTRAN + LIB_NETCDF_FORTRAN:=$(NETCDF_C_PATH)/lib + endif + else ifdef NETCDF_FORTRAN_PATH + $(error "NETCDF_FORTRAN_PATH specified without NETCDF_C_PATH") + else ifdef NETCDF_PATH + NETCDF_SEPARATE:=false ifndef INC_NETCDF INC_NETCDF:=$(NETCDF_PATH)/include endif ifndef LIB_NETCDF LIB_NETCDF:=$(NETCDF_PATH)/lib endif -endif -ifdef PNETCDF_PATH - ifndef $(INC_PNETCDF) - INC_PNETCDF:=$(PNETCDF_PATH)/include +else + # No Netcdf is an error unless target is clean or DEP + ifneq ($(MAKECMDGOALS), db_files) + ifneq ($(MAKECMDGOALS), db_flags) + ifeq (,$(findstring clean,$(MAKECMDGOALS))) + $(error NETCDF not found: Define NETCDF_PATH or NETCDF_C_PATH and NETCDF_FORTRAN_PATH in config_machines.xml or config_compilers.xml) + endif endif - ifndef LIB_PNETCDF - LIB_PNETCDF:=$(PNETCDF_PATH)/lib + endif +endif + + +ifeq ($(MPILIB),mpi-serial) + ifdef PNETCDF_PATH + undefine PNETCDF_PATH + endif +else + ifdef PNETCDF_PATH + ifndef $(INC_PNETCDF) + INC_PNETCDF:=$(PNETCDF_PATH)/include + endif + ifndef LIB_PNETCDF + LIB_PNETCDF:=$(PNETCDF_PATH)/lib + endif endif endif # Set PETSc info if it is being used @@ -275,16 +307,12 @@ else FPPDEFS := $(CPPDEFS) endif - #=============================================================================== # Set config args for pio and mct to blank and then enable serial #=============================================================================== ifndef CONFIG_ARGS CONFIG_ARGS := endif -ifeq ($(MPILIB),mpi-serial) - CONFIG_ARGS+= --enable-mpiserial -endif ifeq ($(findstring pio,$(MODEL)),pio) CONFIG_ARGS+= --enable-timing ifeq ($DEBUG,TRUE) @@ -312,7 +340,7 @@ ifeq ($(strip $(MPILIB)), mpi-serial) MPIFC := $(SFC) MPICC := $(SCC) MPICXX := $(SCXX) - CONFIG_ARGS += --enable-mpiserial MCT_PATH=$(SHAREDPATH)/mct/mpi-serial + CONFIG_ARGS += MCT_PATH=$(SHAREDLIBROOT)/$(SHAREDPATH)/mct/mpi-serial else CC := $(MPICC) FC := $(MPIFC) @@ -326,17 +354,12 @@ endif #=============================================================================== # Set include paths (needed after override for any model specific builds below) #=============================================================================== -INCLDIR += -I$(SHAREDPATH)/include -I$(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share +INCLDIR += -I$(INSTALL_SHAREDPATH)/include -I$(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/include -# -# Tell gmake to look in the csm_share directory for shr_*.mod files -# - -vpath shr%.mod $(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share - - -ifdef INC_NETCDF +ifeq ($(NETCDF_SEPARATE), false) INCLDIR += -I$(INC_NETCDF) +else ifeq ($(NETCDF_SEPARATE), true) + INCLDIR += -I$(INC_NETCDF_C) -I$(INC_NETCDF_FORTRAN) endif ifdef MOD_NETCDF INCLDIR += -I$(MOD_NETCDF) @@ -363,7 +386,12 @@ ifeq ($(MODEL),driver) # nagfor requires the weird "-Wl,-Wl,," syntax. # If done in config_compilers.xml, we break MCT. ifeq ($(strip $(COMPILER)),nag) - SLIBS += -Wl,-Wl,,-rpath=$(NETCDF_PATH)/lib + ifeq ($(NETCDF_SEPARATE), false) + SLIBS += -Wl,-Wl,,-rpath=$(LIB_NETCDF) + else ifeq ($(NETCDF_SEPARATE), true) + SLIBS += -Wl,-Wl,,-rpath=$(LIB_NETCDF_C) + SLIBS += -Wl,-Wl,,-rpath=$(LIB_NETCDF_FORTRAN) + endif endif else ifeq ($(strip $(COMPILER)),nag) @@ -381,15 +409,15 @@ endif ifndef MCT_LIBDIR - MCT_LIBDIR=$(SHAREDPATH)/mct + MCT_LIBDIR=$(INSTALL_SHAREDPATH)/lib endif ifndef PIO_LIBDIR - PIO_LIBDIR=$(SHAREDPATH)/pio$(PIO_VERSION) + PIO_LIBDIR=$(INSTALL_SHAREDPATH)/lib endif ifndef GPTL_LIBDIR - GPTL_LIBDIR=$(SHAREDPATH)/gptl + GPTL_LIBDIR=$(INSTALL_SHAREDPATH)/lib endif ifndef GLC_DIR @@ -399,7 +427,7 @@ ifndef CISM_LIBDIR CISM_LIBDIR=$(GLC_DIR)/lib endif -INCLDIR += -I$(SHAREDPATH)/include -I$(CIMEROOT)/share/csm_share/shr \ +INCLDIR += -I$(INSTALL_SHAREDPATH)/include -I$(CIMEROOT)/share/csm_share/shr \ -I$(CIMEROOT)/share/csm_share/include -I$(CIMEROOT)/share/shr_RandNum/include # # Use the MCT dir for the cache for all configure calls because it is the first one @@ -407,10 +435,18 @@ INCLDIR += -I$(SHAREDPATH)/include -I$(CIMEROOT)/share/csm_share/shr \ CFLAGS+=$(CPPDEFS) CXXFLAGS := $(CFLAGS) -CONFIG_ARGS += CC="$(SCC)" FC="$(SFC)" MPICC="$(MPICC)" \ +CONFIG_ARGS += CC="$(CC)" FC="$(FC)" MPICC="$(MPICC)" \ MPIFC="$(MPIFC)" FCFLAGS="$(FFLAGS) $(FREEFLAGS) $(INCLDIR)" \ CPPDEFS="$(CPPDEFS)" CFLAGS="$(CFLAGS) -I.. $(INCLDIR)" \ - NETCDF_PATH=$(NETCDF_PATH) LDFLAGS="$(LDFLAGS)" + LDFLAGS="$(LDFLAGS)" + +ifeq ($(NETCDF_SEPARATE), false) + CONFIG_ARGS += NETCDF_PATH=$(NETCDF_PATH) +else ifeq ($(NETCDF_SEPARATE), true) + # The mct library needs the NetCDF_C library + CONFIG_ARGS += NETCDF_PATH=$(NETCDF_C_PATH) +endif + ifeq ($(COMPILER),nag) CONFIG_ARGS += LIBS="$(SLIBS)" endif @@ -419,17 +455,19 @@ FFLAGS += $(FPPDEFS) FFLAGS_NOOPT += $(FPPDEFS) + ifeq ($(findstring -cosp,$(CAM_CONFIG_OPTS)),-cosp) # The following is for the COSP simulator code: COSP_LIBDIR:=$(EXEROOT)/atm/obj/cosp endif ifeq ($(MODEL),cam) - # These RRTMG files take an extraordinarily long time to compile with optimization. - # Until mods are made to read the data from files, just remove optimization from - # their compilation. + # These RRTMG files take an extraordinarily long time to compile with optimization. + # Until mods are made to read the data from files, just remove optimization from + # their compilation. rrtmg_lw_k_g.o: rrtmg_lw_k_g.f90 $(FC) -c $(FPPFLAGS) $(INCLDIR) $(INCS) $(FREEFLAGS) $(FFLAGS_NOOPT) $< + rrtmg_sw_k_g.o: rrtmg_sw_k_g.f90 $(FC) -c $(FPPFLAGS) $(INCLDIR) $(INCS) $(FREEFLAGS) $(FFLAGS_NOOPT) $< @@ -458,8 +496,13 @@ endif # System libraries (netcdf, mpi, pnetcdf, esmf, trilinos, etc.) ifndef SLIBS - SLIBS := -L$(LIB_NETCDF) -lnetcdf + ifeq ($(NETCDF_SEPARATE), false) + SLIBS := -L$(LIB_NETCDF) -lnetcdff -lnetcdf + else ifeq ($(NETCDF_SEPARATE), true) + SLIBS := -L$(LIB_NETCDF_FORTRAN) -L$(LIB_NETCDF_C) -lnetcdff -lnetcdf + endif endif + ifdef LIB_PNETCDF SLIBS += -L$(LIB_PNETCDF) -lpnetcdf endif @@ -524,23 +567,13 @@ endif # Drive configure scripts for support libraries (mct) #------------------------------------------------------------------------------ - -$(MCT_LIBDIR)/Makefile.conf: +$(SHAREDLIBROOT)/$(SHAREDPATH)/mct/Makefile.conf: @echo "SHAREDLIBROOT |$(SHAREDLIBROOT)| SHAREDPATH |$(SHAREDPATH)|"; \ $(CONFIG_SHELL) $(CIMEROOT)/externals/mct/configure $(CONFIG_ARGS) --srcdir $(CIMEROOT)/externals/mct -$(MCT_LIBDIR)/mpi-serial/Makefile.conf: +$(SHAREDLIBROOT)/$(SHAREDPATH)/mct/mpi-serial/Makefile.conf: @echo "SHAREDLIBROOT |$(SHAREDLIBROOT)| SHAREDPATH |$(SHAREDPATH)|"; \ - $(CONFIG_SHELL) $(CIMEROOT)/externals/mct/mpi-serial/configure $(CONFIG_ARGS) --srcdir $(CIMEROOT)/externals/mct - -$(MCT_LIBDIR)/mpeu/libmpeu.a: $(MCT_LIBDIR)/Makefile.conf - $(MAKE) -C $(MCT_LIBDIR)/mpeu - -$(MCT_LIBDIR)/mct/libmct.a: $(MCT_LIBDIR)/mpeu/libmpeu.a - $(MAKE) -C $(MCT_LIBDIR)/mct - -$(MCT_LIBDIR)/mpi-serial/libmpi-serial.a: $(MCT_LIBDIR)/mpi-serial/Makefile.conf - $(MAKE) -C $(MCT_LIBDIR)/mpi-serial + $(CONFIG_SHELL) $(CIMEROOT)/externals/mct/mpi-serial/configure $(CONFIG_ARGS) --srcdir $(CIMEROOT)/externals/mct/mpi-serial ifeq ($(PIO_VERSION),2) # This is a pio2 library @@ -563,7 +596,7 @@ MCTLIBS = $(MCT_LIBDIR)/libmct.a $(MCT_LIBDIR)/libmpeu.a GPTLLIB = $(GPTL_LIBDIR)/libgptl.a -ULIBS += -L$(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share -lcsm_share -L$(SHAREDPATH)/lib $(PIOLIBNAME) -lgptl -lmct -lmpeu +ULIBS += -L$(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/lib -lcsm_share -L$(INSTALL_SHAREDPATH)/lib $(PIOLIBNAME) -lgptl -lmct -lmpeu #------------------------------------------------------------------------------ # Drive cmake script for cism and pio @@ -580,13 +613,22 @@ CMAKE_OPTS += -D CMAKE_Fortran_FLAGS:STRING="$(FFLAGS) $(INCLDIR)" \ -D CMAKE_C_FLAGS:STRING="$(CFLAGS) $(INCLDIR)" \ -D CMAKE_CXX_FLAGS:STRING="$(CXXFLAGS) $(INCLDIR)" \ -D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \ - -D NETCDF_DIR:STRING=$(NETCDF_PATH) \ - -D GPTL_PATH:STRING=$(SHAREDPATH) \ + -D GPTL_PATH:STRING=$(INSTALL_SHAREDPATH) \ -D PIO_ENABLE_TESTS:BOOL=OFF \ -D USER_CMAKE_MODULE_PATH:STRING=$(CIMEROOT)/externals/CMake +# Allow for separate installations of the NetCDF C and Fortran libraries +ifeq ($(NETCDF_SEPARATE), false) + CMAKE_OPTS += -D NetCDF_PATH:PATH=$(NETCDF_PATH) +else ifeq ($(NETCDF_SEPARATE), true) + # NETCDF_Fortran_DIR points to the separate + # installation of Fortran NetCDF for PIO + CMAKE_OPTS += -D NetCDF_C_PATH:PATH=$(NETCDF_C_PATH) \ + -D NetCDF_Fortran_PATH:PATH=$(NETCDF_FORTRAN_PATH) +endif + ifdef PNETCDF_PATH - CMAKE_OPTS += -D PNETCDF_DIR:STRING="$(PNETCDF_PATH)" + CMAKE_OPTS += -D PnetCDF_PATH:STRING="$(PNETCDF_PATH)" else CMAKE_OPTS += -D WITH_PNETCDF:LOGICAL=FALSE -D PIO_USE_MPIIO:LOGICAL=FALSE endif @@ -677,8 +719,13 @@ db_flags: test_fc: test_fc.o $(LD) -o $@ test_fc.o $(LDFLAGS) +ifeq ($(NETCDF_SEPARATE), false) +test_nc: test_nc.o + $(LD) -o $@ test_nc.o -L$(LIB_NETCDF) -lnetcdff -lnetcdf $(LDFLAGS) +else ifeq ($(NETCDF_SEPARATE), true) test_nc: test_nc.o - $(LD) -o $@ test_nc.o -L$(LIB_NETCDF) -lnetcdf $(LDFLAGS) + $(LD) -o $@ test_nc.o -L$(LIB_NETCDF_FORTRAN) -L$(LIB_NETCDF_C) -lnetcdff -lnetcdf $(LDFLAGS) +endif test_mpi: test_mpi.o $(LD) -o $@ test_mpi.o $(LDFLAGS) test_esmf: test_esmf.o @@ -701,6 +748,7 @@ ifeq ($(ULIBDEP),$(null)) LNDLIB := liblnd.a endif endif + ULIBDEP += $(LIBROOT)/$(LNDLIB) INCLDIR += -I$(EXEROOT)/lnd/obj ULIBDEP += $(LIBROOT)/libocn.a @@ -735,7 +783,7 @@ endif # libcsm_share.a is in ULIBDEP, but -lcsm_share is in ULIBS rather than CLIBS, # so this needs to be added after creating CLIBS above -CSMSHARELIB = $(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share/libcsm_share.a +CSMSHARELIB = $(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/lib/libcsm_share.a ULIBDEP += $(CSMSHARELIB) #------------------------------------------------------------------------------- @@ -746,12 +794,12 @@ ULIBDEP += $(CSMSHARELIB) .SUFFIXES: .F90 .F .f90 .f .c .cpp .o .in ifeq ($(MPILIB),mpi-serial) - MPISERIAL = $(MCT_LIBDIR)/mpi-serial/libmpi-serial.a + MPISERIAL = $(INSTALL_SHAREDPATH)/lib/libmpi-serial.a MLIBS += $(MPISERIAL) - CMAKE_OPTS += -DMPI_C_INCLUDE_PATH=$(SHAREDPATH)/include \ - -DMPI_Fortran_INCLUDE_PATH=$(SHAREDPATH)/include \ - -DMPI_C_LIBRARIES=$(SHAREDPATH)/lib/libmpi-serial.a \ - -DMPI_Fortran_LIBRARIES=$(SHAREDPATH)/lib/libmpi-serial.a + CMAKE_OPTS += -DMPI_C_INCLUDE_PATH=$(INSTALL_SHAREDPATH)/include \ + -DMPI_Fortran_INCLUDE_PATH=$(INSTALL_SHAREDPATH)/include \ + -DMPI_C_LIBRARIES=$(INSTALL_SHAREDPATH)/lib/libmpi-serial.a \ + -DMPI_Fortran_LIBRARIES=$(INSTALL_SHAREDPATH)/lib/libmpi-serial.a endif $(MCTLIBS) : $(MPISERIAL) @@ -823,25 +871,24 @@ cleanlnd: cleancsmshare: $(RM) -f $(CSMSHARELIB) - $(RM) -fr $(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share + $(RM) -fr $(SHAREDLIBROOT)/$(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share cleanpio: - $(RM) -f $(SHAREDPATH)/lib/libpio* - $(RM) -fr $(PIO_LIBDIR) + $(RM) -f $(PIO_LIBDIR)/libpio* + $(RM) -fr $(SHAREDLIBROOT)/$(SHAREDPATH)/pio cleanmct: $(RM) -f $(MCTLIBS) - $(RM) -fr $(MCT_LIBDIR) + $(RM) -fr $(SHAREDLIBROOT)/$(SHAREDPATH)/mct cleangptl: $(RM) -f $(GPTLLIB) - $(RM) -fr $(GPTL_LIBDIR) + $(RM) -fr $(SHAREDLIBROOT)/$(SHAREDPATH)/gptl clean: cleanatm cleanocn cleanwav cleanglc cleanice cleanrof cleanlnd cleanesp realclean: clean cleancsmshare cleanpio cleanmct cleangptl - # the if-tests prevent DEPS files from being created when they're not needed ifneq ($(MAKECMDGOALS), db_files) ifneq ($(MAKECMDGOALS), db_flags) diff --git a/cime/cime_config/acme/machines/buildlib.csm_share b/cime/cime_config/acme/machines/buildlib.csm_share deleted file mode 100755 index 5fc6cc6a982f..000000000000 --- a/cime/cime_config/acme/machines/buildlib.csm_share +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env perl -use strict; -use File::Path; - -#=============================================================================== -# Purpose: Build csm_share library -#=============================================================================== - -if ($#ARGV == -1) { - die " ERROR buildlib_csm_share: must specify a caseroot input argument"; -} -my ($sharedlibroot, $CASEROOT) = @ARGV; - -chdir "${CASEROOT}"; - -my $CIMEROOT = `./xmlquery CIMEROOT -value`; -my $COMP_INTERFACE = `./xmlquery COMP_INTERFACE -value`; -my $USE_ESMF_LIB = `./xmlquery USE_ESMF_LIB -value`; -my $GMAKE_J = `./xmlquery GMAKE_J -value`; -my $GMAKE = `./xmlquery GMAKE -value`; -my $CASETOOLS = `./xmlquery CASETOOLS -value`; -my $NINST_ATM = `./xmlquery NINST_ATM -value`; -my $NINST_ICE = `./xmlquery NINST_ICE -value`; -my $NINST_GLC = `./xmlquery NINST_GLC -value`; -my $NINST_LND = `./xmlquery NINST_LND -value`; -my $NINST_OCN = `./xmlquery NINST_OCN -value`; -my $NINST_ROF = `./xmlquery NINST_ROF -value`; -my $NINST_WAV = `./xmlquery NINST_WAV -value`; -my $NINST_ESP = `./xmlquery NINST_ESP -value`; -my $NINST_VALUE = `./xmlquery NINST_VALUE -value`; -$ENV{PIO_VERSION} = `./xmlquery PIO_VERSION -value`; -#-------------------------------------------------------------------- -# Filepath: list of source code directories (in order of importance). -#-------------------------------------------------------------------- - -my $comp="mct"; -$comp = "esmf" if ($COMP_INTERFACE eq "ESMF"); - -my $useesmf = "noesmf"; -$useesmf = "esmf" if ($USE_ESMF_LIB eq "TRUE"); - -my $libdir = "$sharedlibroot/${COMP_INTERFACE}/$useesmf/${NINST_VALUE}/csm_share"; -mkpath($libdir) unless -d $libdir; -chdir($libdir) or die "Could not cd to $libdir: $!\n"; - -my @filepath = ( "$CASEROOT/SourceMods/src.share", - "$CIMEROOT/driver_cpl/shr", - "$CIMEROOT/components/xcpl_comps/xshare", - "$CIMEROOT/share/csm_share/shr", - "$CIMEROOT/share/shr_RandNum/src", - "$CIMEROOT/share/shr_RandNum/src/dsfmt_f03", - "$CIMEROOT/share/shr_RandNum/src/kissvec", - "$CIMEROOT/share/shr_RandNum/src/mt19937", - ); - -if($useesmf eq "noesmf"){ - push(@filepath,"$CIMEROOT/share/esmf_wrf_timemgr"); -}else{ - push(@filepath,"$CIMEROOT/driver_cpl/shr_esmf"); -} - -my @fp; -if (-e "Filepath"){ - open(F,"Filepath"); - @fp = ; - close(F); -} -# if the number of lines in @filepath is different than the number of lines in @fp then create a new Filepath file -if($#fp != $#filepath){ - open(F,">Filepath"); - foreach(@filepath){ - print F "$_\n"; - } - close(F); -} -my $multiinst_cppdefs = ""; -$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_ATM=$NINST_ATM"; -$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_LND=$NINST_LND"; -$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_OCN=$NINST_OCN"; -$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_ICE=$NINST_ICE"; -$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_GLC=$NINST_GLC"; -$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_WAV=$NINST_WAV"; -$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_ROF=$NINST_ROF"; -$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_ESP=$NINST_ESP"; - -my $bld = "$GMAKE complib -j $GMAKE_J MODEL=csm_share COMPLIB=libcsm_share.a USER_CPPDEFS=\" $multiinst_cppdefs\" -f $CASETOOLS/Makefile "; - -my $rc = system($bld); -if ($rc==0xff00){ - die "$bld failed with: $!\n"; -} elsif($rc > 0x80) { - $rc >>= 8; - die "$bld returned non-zero exit status $rc\n"; -} elsif($rc != 0) { - print "$bld ran with "; - if ($rc & 0x80){ - $rc &= ~0x80; - print "coredump from "; - } - die "signal $rc\n"; -} - -#system("cp -p -f libcsm_share.a $sharedlibroot/lib"); -#system("cp -p -f *.mod $sharedlibroot/include/"); - - diff --git a/cime/cime_config/acme/machines/buildlib.mct b/cime/cime_config/acme/machines/buildlib.mct deleted file mode 100755 index 65cf5f5e5ef7..000000000000 --- a/cime/cime_config/acme/machines/buildlib.mct +++ /dev/null @@ -1,100 +0,0 @@ -#! /bin/csh -fx - -#============================================================================== -# Purpose: Build the mct library -#============================================================================== - -cd $CASEROOT - -set CIMEROOT = `./xmlquery CIMEROOT -value ` -set CASETOOLS = `./xmlquery CASETOOLS -value ` -set GMAKE = `./xmlquery GMAKE -value ` -set GMAKE_J = `./xmlquery GMAKE_J -value ` -set MACH = `./xmlquery MACH -value ` -set MPILIB = `./xmlquery MPILIB -value ` -set OS = `./xmlquery OS -value ` - -setenv LIBDIR $1 -setenv MCT_DIR $CIMEROOT/externals/mct # mct directory -setenv MCT_LIBDIR $LIBDIR/mct - -echo "MCT_LIBDIR $MCT_LIBDIR" - - cd $MCT_LIBDIR - echo "Copying source to EXEROOT..." -# cp -r -p $MCT_DIR/* . - cp $MCT_DIR/Makefile . - mkdir mct - cp $MCT_DIR/mct/Makefile mct - mkdir mpeu - cp $MCT_DIR/mpeu/Makefile mpeu - mkdir mpi-serial - cp $MCT_DIR/mpi-serial/Makefile mpi-serial - cp $MCT_DIR/mpi-serial/*.h mpi-serial - - set runconf = 0 - set runclean = 0 - -# It would be harmless to just run "configure" each time but it -# takes time so use file "mct_conf" to determine if configure must -# be run. There are three possibilities: -# 1. brand new build -- run configure -# 2. already built but platform has changed (this can happen -# when a filesystem is mounted on multiple platforms) -- run configure -# 3. already built, same platform -- don't run configure -# - #if(-e mct_conf) then - # echo "MCT already built. Checking machine type" - # cp -f mct_conf mct_conf.old - # echo ${OS} > mct_conf - # set diffwc = 1 - # set diffwc = `diff mct_conf.old mct_conf | wc -m` - # if ($diffwc != 0) then - # echo "Different machine. Rerun configure" - # rm Makefile.conf.old - # rm -f $LIBROOT/libmct.a - # rm -f $LIBROOT/libmpeu.a - - # set runconf = 1 - # set runclean = 1 - # else - # echo "Same machine." - # cp -p Makefile.conf.old Makefile.conf - # endif - #else - # echo "New build of MCT" - # echo ${OS} > mct_conf - # set runconf = 1 - #endif - -# run configure with correct arguments if necessary - #if ($runconf == 1) then - echo "Running configure..." - echo "for OS=$OS MACH=$MACH" - $GMAKE -f $CASETOOLS/Makefile $MCT_LIBDIR/Makefile.conf MODEL=mct - #if($? != 0) then - # rm mct_conf* - #endif - #endif - - if ($runclean == 1) then - $GMAKE clean - endif - - cp -p Makefile.conf Makefile.conf.old - - $GMAKE SRCDIR=$MCT_DIR || exit 1 - - - cp -p mct/lib*.a $LIBDIR/lib - cp -p mpeu/lib*.a $LIBDIR/lib - if ( "$MPILIB" == "mpi-serial" ) then - cp -p mpi-serial/lib*.a $LIBDIR/lib - cp -p mpi-serial/*.h $LIBDIR/include - cp -p mpi-serial/*.mod $LIBDIR/include - endif - cp -p mct/*.mod $LIBDIR/include/ - cp -p mpeu/*.mod $LIBDIR/include/ - -exit 0 - diff --git a/cime/cime_config/acme/machines/buildlib.pio b/cime/cime_config/acme/machines/buildlib.pio deleted file mode 100755 index 569a26872511..000000000000 --- a/cime/cime_config/acme/machines/buildlib.pio +++ /dev/null @@ -1,52 +0,0 @@ -#! /bin/csh -fx - -cd $CASEROOT - -set CIMEROOT = `./xmlquery CIMEROOT -value ` -set CASETOOLS = `./xmlquery CASETOOLS -value ` -set GMAKE = `./xmlquery GMAKE -value ` -set GMAKE_J = `./xmlquery GMAKE_J -value ` -set BLDROOT = $1 -# directory in which pio is built -setenv PIO_VERSION `./xmlquery PIO_VERSION -value` -set PIOVERSION="pio$PIO_VERSION" -set pio_dir="$BLDROOT/$PIOVERSION" -if (! -e $pio_dir) then - mkdir -p $pio_dir -endif -cd $pio_dir - -# ---------------------------------------------------------------------- -# Set options to cmake -# ---------------------------------------------------------------------- -# Note that some other generic CMAKE options are set in the Makefile -#set cmake_opts=" -D USER_CMAKE_MODULE_PATH=$CIMEROOT/externals/CMake" -#set cmake_opts="$cmake_opts -D GENF90_PATH=$CIMEROOT/externals/genf90" -set cmake_opts=" -D GENF90_PATH=$CIMEROOT/externals/genf90" - -# ---------------------------------------------------------------------- -# create the pio makefile by running cmake (done via a rule -# in the system-level makefile) -# ---------------------------------------------------------------------- -$GMAKE $pio_dir/Makefile MODEL=$PIOVERSION USER_CMAKE_OPTS="$cmake_opts" \ - PIO_LIBDIR=$pio_dir -f $CASETOOLS/Makefile || exit 1 - -# ---------------------------------------------------------------------- -# create the pio library (or libraries), using the makefile -# created by cmake -# ---------------------------------------------------------------------- -$GMAKE -j $GMAKE_J || exit 2 -if ( -d "$pio_dir/src" ) then - cp -p $pio_dir/src/clib/libpioc.* $BLDROOT/lib - cp -p $pio_dir/src/flib/libpiof.* $BLDROOT/lib - cp -p $pio_dir/src/clib/*.h $pio_dir/src/flib/*.mod $BLDROOT/include -else - if( -d "$pio_dir/pio" ) then - cd pio - endif - pwd - cp -p lib*.a $BLDROOT/lib - cp -p *.h *.mod $BLDROOT/include -endif -exit 0 - diff --git a/cime/cime_config/acme/machines/ccsm_getenv b/cime/cime_config/acme/machines/ccsm_getenv deleted file mode 100755 index 759196466da5..000000000000 --- a/cime/cime_config/acme/machines/ccsm_getenv +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/csh -f - -setenv CASEROOT `./xmlquery CASEROOT -value ` - -setenv CASE `./xmlquery CASE -value ` -setenv CASETOOLS `./xmlquery CASETOOLS -value ` -setenv CCSMROOT `./xmlquery CCSMROOT -value ` -setenv CIMEROOT `./xmlquery CIMEROOT -value ` -setenv LIBROOT `./xmlquery LIBROOT -value ` -setenv EXEROOT `./xmlquery EXEROOT -value ` -setenv OBJROOT `./xmlquery OBJROOT -value ` -setenv INCROOT `./xmlquery INCROOT -value ` -setenv SHAREDLIBROOT `./xmlquery SHAREDLIBROOT -value ` -setenv CASEBUILD `./xmlquery CASEBUILD -value ` -setenv DIN_LOC_ROOT `./xmlquery DIN_LOC_ROOT -value ` -setenv RUNDIR `./xmlquery RUNDIR -value ` -setenv LOGDIR `./xmlquery LOGDIR -value ` - -setenv MACH `./xmlquery MACH -value ` -setenv GMAKE `./xmlquery GMAKE -value ` -setenv GMAKE_J `./xmlquery GMAKE_J -value ` -setenv NINST_BUILD `./xmlquery NINST_BUILD -value ` -setenv NINST_VALUE `./xmlquery NINST_VALUE -value ` -setenv SMP_BUILD `./xmlquery SMP_BUILD -value ` -setenv SMP_VALUE `./xmlquery SMP_VALUE -value ` -setenv BUILD_THREADED `./xmlquery BUILD_THREADED -value ` -setenv BUILD_STATUS `./xmlquery BUILD_STATUS -value ` -setenv COMP_INTERFACE `./xmlquery COMP_INTERFACE -value ` -setenv USE_ESMF_LIB `./xmlquery USE_ESMF_LIB -value ` -setenv COMPILER `./xmlquery COMPILER -value ` -setenv MPILIB `./xmlquery MPILIB -value ` -setenv DEBUG `./xmlquery DEBUG -value ` -setenv OS `./xmlquery OS -value ` -setenv MAX_TASKS_PER_NODE `./xmlquery MAX_TASKS_PER_NODE -value ` -setenv PES_PER_NODE `./xmlquery PES_PER_NODE -value ` -setenv COST_PES `./xmlquery COST_PES -value ` -setenv CCSM_ESTCOST `./xmlquery CCSM_ESTCOST -value ` -setenv PROJECT `./xmlquery PROJECT -value ` - -setenv COMP_CPL `./xmlquery COMP_CPL -value ` -setenv COMP_ATM `./xmlquery COMP_ATM -value ` -setenv COMP_LND `./xmlquery COMP_LND -value ` -setenv COMP_ICE `./xmlquery COMP_ICE -value ` -setenv COMP_OCN `./xmlquery COMP_OCN -value ` -setenv COMP_GLC `./xmlquery COMP_GLC -value ` -setenv COMP_WAV `./xmlquery COMP_WAV -value ` -setenv COMP_ROF `./xmlquery COMP_ROF -value ` - -setenv NTASKS_CPL `./xmlquery NTASKS_CPL -value ` -setenv NTASKS_ATM `./xmlquery NTASKS_ATM -value ` -setenv NTASKS_LND `./xmlquery NTASKS_LND -value ` -setenv NTASKS_ICE `./xmlquery NTASKS_ICE -value ` -setenv NTASKS_OCN `./xmlquery NTASKS_OCN -value ` -setenv NTASKS_GLC `./xmlquery NTASKS_GLC -value ` -setenv NTASKS_WAV `./xmlquery NTASKS_WAV -value ` -setenv NTASKS_ROF `./xmlquery NTASKS_ROF -value ` - -setenv NTHRDS_CPL `./xmlquery NTHRDS_CPL -value ` -setenv NTHRDS_ATM `./xmlquery NTHRDS_ATM -value ` -setenv NTHRDS_LND `./xmlquery NTHRDS_LND -value ` -setenv NTHRDS_ICE `./xmlquery NTHRDS_ICE -value ` -setenv NTHRDS_OCN `./xmlquery NTHRDS_OCN -value ` -setenv NTHRDS_GLC `./xmlquery NTHRDS_GLC -value ` -setenv NTHRDS_WAV `./xmlquery NTHRDS_WAV -value ` -setenv NTHRDS_ROF `./xmlquery NTHRDS_ROF -value ` - -setenv ROOTPE_CPL `./xmlquery ROOTPE_CPL -value ` -setenv ROOTPE_ATM `./xmlquery ROOTPE_ATM -value ` -setenv ROOTPE_LND `./xmlquery ROOTPE_LND -value ` -setenv ROOTPE_ICE `./xmlquery ROOTPE_ICE -value ` -setenv ROOTPE_OCN `./xmlquery ROOTPE_OCN -value ` -setenv ROOTPE_GLC `./xmlquery ROOTPE_GLC -value ` -setenv ROOTPE_WAV `./xmlquery ROOTPE_WAV -value ` -setenv ROOTPE_ROF `./xmlquery ROOTPE_ROF -value ` - -setenv PSTRID_CPL `./xmlquery PSTRID_CPL -value ` -setenv PSTRID_ATM `./xmlquery PSTRID_ATM -value ` -setenv PSTRID_LND `./xmlquery PSTRID_LND -value ` -setenv PSTRID_ICE `./xmlquery PSTRID_ICE -value ` -setenv PSTRID_OCN `./xmlquery PSTRID_OCN -value ` -setenv PSTRID_GLC `./xmlquery PSTRID_GLC -value ` -setenv PSTRID_WAV `./xmlquery PSTRID_WAV -value ` -setenv PSTRID_ROF `./xmlquery PSTRID_ROF -value ` - -setenv NINST_ATM `./xmlquery NINST_ATM -value ` -setenv NINST_LND `./xmlquery NINST_LND -value ` -setenv NINST_ICE `./xmlquery NINST_ICE -value ` -setenv NINST_OCN `./xmlquery NINST_OCN -value ` -setenv NINST_GLC `./xmlquery NINST_GLC -value ` -setenv NINST_WAV `./xmlquery NINST_WAV -value ` -setenv NINST_ROF `./xmlquery NINST_ROF -value ` - -setenv PROFILE_PAPI_ENABLE `./xmlquery PROFILE_PAPI_ENABLE -value` - -source $CASEROOT/env_mach_specific -if ($status != 0) then - echo "Error: problem sourcing env_mach_specific"; exit -2 -endif - -set MODELS = ( cpl atm lnd ice ocn glc wav rof) -set COMPONENTS = ( $COMP_CPL $COMP_ATM $COMP_LND $COMP_ICE $COMP_OCN $COMP_GLC $COMP_WAV $COMP_ROF) -set NTASKS = ( $NTASKS_CPL $NTASKS_ATM $NTASKS_LND $NTASKS_ICE $NTASKS_OCN $NTASKS_GLC $NTASKS_WAV $NTASKS_ROF) -set NTHRDS = ( $NTHRDS_CPL $NTHRDS_ATM $NTHRDS_LND $NTHRDS_ICE $NTHRDS_OCN $NTHRDS_GLC $NTHRDS_WAV $NTHRDS_ROF) -set ROOTPE = ( $ROOTPE_CPL $ROOTPE_ATM $ROOTPE_LND $ROOTPE_ICE $ROOTPE_OCN $ROOTPE_GLC $ROOTPE_WAV $ROOTPE_ROF) -set PSTRID = ( $PSTRID_CPL $PSTRID_ATM $PSTRID_LND $PSTRID_ICE $PSTRID_OCN $PSTRID_GLC $PSTRID_WAV $PSTRID_ROF) -set NINST = ( 1 $NINST_ATM $NINST_LND $NINST_ICE $NINST_OCN $NINST_GLC $NINST_WAV $NINST_ROF) - - - - diff --git a/cime/cime_config/acme/machines/config_batch.xml b/cime/cime_config/acme/machines/config_batch.xml index cf0494a92bdd..2987a0468f95 100644 --- a/cime/cime_config/acme/machines/config_batch.xml +++ b/cime/cime_config/acme/machines/config_batch.xml @@ -1,5 +1,5 @@ - + - + @@ -23,7 +23,7 @@ - + @@ -33,125 +33,138 @@ - + qstat qsub (\d+) --dependencies - %H:%M:%S + %H:%M:%s - - + - + + qstat + qsub + #COBALT + (\d+) + --dependencies + + + + + + + + + bjobs bsub < #BSUB <(\d+)> - ^\#BSUB\s+-w.+\((\d+)\) - -w "done(jobid)" + -w 'done(jobid)' %H:%M + + + + + - -n {{ totaltasks }} - -R "span[ptile={{ ptile }}]" - -q {{ job_queue }} + -n {{ total_tasks }} + -R "span[ptile={{ tasks_per_node }}]" -N -a {{ poe }} - -x {{ queue_exclusive }} - -o {{ acme_stdout }}.%J - -e {{ acme_stderr }}.%J + -o {{ output_error_path }}.%J + -e {{ output_error_path }}.%J -J {{ job_id }} - -W {{ job_wallclock_time }} - -P {{ account }} - - qselect + + qstat qsub #PBS - ^(\d+) + ^(\S+)$ -W depend=afterok:jobid %H:%M:%S - - - + + + - -V -N {{ job_id }} -r {{ rerunnable }} -j oe -m {{ mail_options }} - -S {{ shell }} + -V - + showq msub #MSUB (\d+)$ -W depend=afterok:jobid %H:%M:%S + + + + -N {{ job_id }} - -l walltime={{ job_wallclock_time }} -j oe - -A {{ project }} -r {{ rerunnable }} -m {{ mail_options }} -S {{ shell }} - - squeue + + squeue sbatch #SBATCH (\d+)$ --dependency=afterok:jobid %H:%M:%S + + + + + --job-name={{ job_id }} --nodes={{ num_nodes }} --output={{ output_error_path }}.%j --exclusive - --time={{ job_wallclock_time }} - --partition={{ job_queue }} - --account={{ project }} - + -A {{ PROJECT }} -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} - shared + shared - - 01:00:00 - - + -A {{ PROJECT }} -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} @@ -162,20 +175,15 @@ - + regular debug - - 01:15:00 - 01:50:00 - 05:00:00 - - + -A {{ project }} -l nodes={{ num_nodes }} @@ -183,14 +191,9 @@ batch - - 01:15:00 - 01:50:00 - 05:00:00 - - + --constraint=haswell @@ -200,7 +203,7 @@ - + --constraint=knl,quad,cache @@ -214,21 +217,15 @@ default - - 03:00:00 - default - - 01:00:00 - - + -A climate --ntasks-per-node={{ tasks_per_node }} @@ -238,67 +235,47 @@ --error=slurm.err - slurm + slurm - - 0:30:00 - - + --ntasks-per-node={{ tasks_per_node }} - ec + ec - - 2:00:00 - 1:50:00 - 5:00:00 - - + --ntasks-per-node={{ tasks_per_node }} - ec + ec - - 4:00:00 - 1:50:00 - 6:00:00 - - + + + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} + + + + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} - - 00:30:00 - 02:00:00 - 16:00:00 - - - moab - + + moab + - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} - - 00:30:00 - 02:00:00 - 16:00:00 - - - moab - @@ -306,13 +283,9 @@ mesabi debug - - 00:45:00 - 02:00:00 - - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} -q esd08q @@ -320,12 +293,9 @@ esd08q - - 24:00:00 - - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} -q esd13q @@ -334,12 +304,9 @@ esd13q esddbg13q - - 24:00:00 - - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} -W group_list=cades-ccsi @@ -347,9 +314,6 @@ batch - - 24:00:00 - @@ -357,13 +321,9 @@ batch debug - - 00:45:00 - 02:00:00 - - + -A {{ project }} -l nodes={{ num_nodes }} @@ -372,13 +332,9 @@ batch debug - - 00:45:00 - 02:00:00 - - + --ntasks-per-node={{ tasks_per_node }} --exclusive @@ -388,7 +344,7 @@ - + --ntasks-per-node={{ tasks_per_node }} --exclusive diff --git a/cime/cime_config/acme/machines/config_build.xml b/cime/cime_config/acme/machines/config_build.xml deleted file mode 100644 index 53afdb345cec..000000000000 --- a/cime/cime_config/acme/machines/config_build.xml +++ /dev/null @@ -1,1613 +0,0 @@ - - - - - - - -D_USE_FLOW_CONTROL - - FALSE - - - - - -h noomp - - - - -DFORTRANUNDERSCORE -DNO_R16 - -DDIR=NOOP - -DDIR=NOOP - - - -s real64 - - - -O2 -f free -N 255 -h byteswapio -em - -h noomp - -g -trapuv -Wuninitialized - - - -O0 - -h noomp - - TRUE - - -Wl,--allow-multiple-definition -h byteswapio - -h noomp - - - - - - -mcmodel=medium - -fopenmp - -g -Wall - -O - - - -D CISM_GNU=ON - - - - -DFORTRANUNDERSCORE -DNO_R16 - - FORTRAN - - -fdefault-real-8 - - - - -mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none - -fopenmp - -g -Wall - -O - - - -O0 - - - -ffixed-form - - - -ffree-form - - FALSE - - -fopenmp - - mpicc - mpicxx - mpif90 - gcc - g++ - gfortran - TRUE - - - - - -g -qfullpath -qmaxmem=-1 - -O3 - -qsmp=omp:nested_par - -qsmp=omp:nested_par:noopt - - - - -DFORTRAN_SAME - - -WF,-D - - -qrealsize=8 - - - -g -qfullpath -qmaxmem=-1 - -O2 -qstrict -Q - -qsmp=omp:nested_par - -qsmp=omp:nested_par:noopt - -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en - -C - - - -qsuffix=f=f -qfixed=132 - - - -qsuffix=f=f90:cpp=F90 - - TRUE - - - - - -O2 -fp-model precise -std=gnu99 - -openmp - -O2 -debug minimal - -O0 -g - - - - -DFORTRANUNDERSCORE -DNO_R16 - - - -cxxlib - - FORTRAN - - -r8 - - - -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source - -openmp - - -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created - -O2 -debug minimal - - - -O0 - -openmp - - - -fixed -132 - - - -free - - TRUE - - -openmp - - mpicc - mpicxx - mpif90 - icc - icpc - ifort - TRUE - - - - - -O2 -fp-model precise - -openmp - - - - -DFORTRANUNDERSCORE -DNO_R16 - -DCPRINTEL - - - -cxxlib - - FORTRAN - - -r8 - - - -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs - -openmp - -O0 -g -check uninit -check bounds -check pointers -fpe0 - -O2 - - - -O0 - - - -fixed -132 - - - -free - - TRUE - - -openmp - - mpicc - mpicxx - mpif90 - icc - icpc - ifort - - NETCDF_PATH/bin/nf-config --flibs - - TRUE - - - - - -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR - -openmp - - - --host=x86_64-k1om-linux --build=x86_64-unknown-linux - - - - -DFORTRANUNDERSCORE -DNO_R16 - -DCPRINTEL - - - -cxxlib - - FORTRAN - - -r8 - - - -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs - -openmp - -O0 -g -check uninit -check bounds -check pointers -fpe0 - -O2 - - - -O0 -mmic - - - -fixed -132 - - - -free - - TRUE - - -openmp - -mmic - - mpiicc - mpiicpc - mpiifort - icc - icpc - ifort - - NETCDF_PATH/bin/nf-config --flibs - - TRUE - - - - - -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR - -openmp - - - --host=x86_64-k1om-linux --build=x86_64-unknown-linux - - - - -DFORTRANUNDERSCORE -DNO_R16 - -DCPRINTEL - - - -cxxlib - - FORTRAN - - -r8 - - - -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs - -openmp - -O0 -g -check uninit -check bounds -check pointers -fpe0 - -O2 - - - -O0 -mmic - - - -fixed -132 - - - -free - - TRUE - - -openmp - -mmic - - mpiicc - mpiicpc - mpiifort - icc - icpc - ifort - - NETCDF_PATH/bin/nf-config --flibs - - TRUE - - - - - -g - - - -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH - - - -r8 - - - - - - - - -wmismatch=mpi_send,mpi_recv,mpi_bcast,mpi_allreduce,mpi_reduce,mpi_isend,mpi_irecv,mpi_irsend,mpi_rsend,mpi_gatherv,mpi_gather,mpi_scatterv,mpi_allgather,mpi_alltoallv,mpi_file_read_all,mpi_file_write_all,mpibcast,mpiscatterv,mpi_alltoallw,nfmpi_get_vara_all,NFMPI_IPUT_VARA,NFMPI_GET_VAR_ALL,NFMPI_PUT_VARA,NFMPI_PUT_ATT_REAL,NFMPI_PUT_ATT_DOUBLE,NFMPI_PUT_ATT_INT,NFMPI_GET_ATT_REAL,NFMPI_GET_ATT_INT,NFMPI_GET_ATT_DOUBLE,NFMPI_PUT_VARA_DOUBLE_ALL,NFMPI_PUT_VARA_REAL_ALL,NFMPI_PUT_VARA_INT_ALL -convert=BIG_ENDIAN - - -ieee=full -O2 - -g -time -f2003 -ieee=stop - - - -C=all -g -time -f2003 -ieee=stop - -gline - -openmp - - - FFLAGS - -ieee=full - - - - -g -time -f2003 -ieee=stop - -gline - -openmp - - - -fixed - - - -free - - FALSE - - -openmp - - mpicc - mpif90 - gcc - nagfor - - - - - -mp - - - - -DFORTRANUNDERSCORE -DNO_R16 -DCPRPATHSCALE - - - -r8 - - - -O -extend_source -ftpp -fno-second-underscore -funderscoring -byteswapio - -mp - -g -trapuv -Wuninitialized - - - -O0 - - FALSE - - -mp - - mpicc - mpif90 - - - - - -gopt -Mlist -time - - -mp - - - - - - - - - - - - - - - - - - - - - - - - - - - - -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 - - CXX - - -r8 - - - -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee - - -mp - -O0 -g -Ktrap=fp -Mbounds -Kieee - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - - - -O0 -g -Ktrap=fp -Mbounds -Kieee - - -mp - - - -Mfixed - - - -Mfree - - - - FALSE - - -time -Wl,--allow-multiple-definition - - -mp - - mpicc - mpicxx - mpif90 - pgcc - pgc++ - pgf95 - - - - - -Mlist -time - - -mp - - - - - - - - - - - - - - - - - - - - - - - - - - - - -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DUSE_CUDA_FORTRAN -DCPRPGI - - CXX - - -r8 - - - -i4 -Mlist -time -Mextend -byteswapio -Mflushz -Kieee - - -mp - -acc -ta=tesla,pin,cuda7.0,cc35,ptxinfo -Minfo=accel -DUSE_OPENACC=1 - -O0 -g -Ktrap=fp -Mbounds -Kieee - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - - - -O0 -g -Ktrap=fp -Mbounds -Kieee - - -mp - - - -Mfixed - - - -Mfree - - - - FALSE - - -time -Wl,--allow-multiple-definition -acc -ta=tesla,pin,cuda7.0,cc35,ptxinfo - - -mp - - mpicc - mpicxx - mpif90 - pgcc - pgc++ - pgf95 - - - - - -qarch=auto -qtune=auto -qcache=auto - - /usr/bin/bash - - -qarch=auto -qtune=auto -qcache=auto -qsclk=micro - -qspill=6000 - - - -qsigtrap=xl__trcedump - -bdatapsize:64K -bstackpsize:64K -btextpsize:32K - - mpcc_r - mpxlf2003_r - cc_r - xlf2003_r - - -lmassv -lessl - -lmass - - - - - - -O3 -qstrict - -qtune=440 -qarch=440d - - - --build=powerpc-bgp-linux --host=powerpc64-suse-linux - - - -DLINUX -DnoI8 - - - -qtune=440 -qarch=440d - -O3 -qstrict -Q - -qinitauto=FF911299 -qflttrap=ov:zero:inv:en - -qextname=flush - - - -Wl,--relax -Wl,--allow-multiple-definition - - - -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts - - blrts_xlc - blrts_xlf2003 - mpich.rts - /bgl/BlueLight/ppcfloor/bglsys - blrts_xlc - blrts_xlf2003 - - - - - -qtune=450 -qarch=450 -I/bgsys/drivers/ppcfloor/arch/include/ - - - --build=powerpc-bgp-linux --host=powerpc64-suse-linux - - - -DLINUX -DnoI8 - - - -qspillsize=2500 -qtune=450 -qarch=450 - -qextname=flush - - - -Wl,--relax -Wl,--allow-multiple-definition - - - - - - --build=powerpc-bgp-linux --host=powerpc64-suse-linux - - - -DLINUX - - - -g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush - -O3 -qstrict -Q - - - -Wl,--relax -Wl,--allow-multiple-definition - - - - - - -DCMAKE_SYSTEM_NAME=Catamount - - - -DLINUX - -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY - - cc - CC - ftn - mpich - MPICH_DIR - NETCDF_DIR - lustre - PARALLEL_NETCDF_DIR - cc - CC - ftn - - - - - -DSYSDARWIN - - - -all_load - - - - - - -heap-arrays - - - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - - - - - -mcmodel medium -shared-intel - - - - - /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install - - -O2 - - - --host=Linux - - - -lstdc++ -lmpi_cxx - - - -O2 - - NETCDFROOT - PNETCDFROOT - - NETCDF_PATH/bin/nf-config --flibs -lblas -llapack - - - - - mpi - /soft/mvapich2/2.2b_psm/gnu-5.2/ - NETCDFROOT - gpfs - PNETCDFROOT - - NETCDF_PATH/bin/nc-config --flibs -llapack -lblas - - - - - mpi - /soft/mvapich2/2.2b_psm/intel-15.0 - NETCDFROOT - gpfs - PNETCDFROOT - - NETCDF_PATH/bin/nc-config --flibs -llapack -lblas - -Wl,-rpath -Wl,NETCDFROOT/lib - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - - - - mpi - mpich - /soft/openmpi/1.8.2/intel-13.1 - /soft/mpich2/1.4.1-intel-13.1 - NETCDFROOT - gpfs - PNETCDFROOT - - NETCDF_PATH/bin/nc-config --flibs -llapack -lblas - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - - - - mpi - /home/robl/soft/mpich-3.1.4-nag-6.0 - NETCDFROOT - gpfs - PNETCDFROOT - - NETCDF_PATH/bin/nc-config --flibs -llapack -lblas - - - - - mpi - mpi - mpich - /soft/openmpi/1.8.2/pgi-13.9 - /soft/mpich2/1.4.1-pgi-13.9/ - NETCDFROOT - gpfs - PNETCDFROOT - - NETCDF_PATH/bin/nc-config --flibs -llapack -lblas - -rpath NETCDFROOT/lib - - - - - - - -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY - - NETCDF - gpfs - PNETCDF - - - - - --host=Linux --enable-filesystem-hints=lustre - - - -DLINUX - - - -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv - - NETCDF_LIB/.. - lustre - PNETCDFROOT - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMKL_PATH -lmkl_rt - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - - - - - -DnoI8 - - - - -gline -C=all -g -O0 -v - -gline -C=all -g -nan -O0 -v - - - - - MPI_LIB - NETCDF_ROOT - lustre - PNETCDFROOT - - -LNETCDF_ROOT/lib -lnetcdf -lnetcdff -LMKL_PATH -lmkl_rt - - - - - /projects/ccsm/libs/AlbanyTrilinos/Albany/build/install - - -DMPASLI_EXTERNAL_INTERFACE_DISABLE_MANGLING - - - -llapack -lblas -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp - - CXX - /soft/libraries/hdf5/1.8.14/cnk-xl/current/ - mpixlf77_r - mpixlc_r - /soft/compilers/bgclang/mpi/bgclang/bin/mpic++11 - mpixlf2003_r - /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/ - /soft/libraries/petsc/3.5.3.1 - /home/santos/pFUnit/pFUnit_IBM - gpfs - /soft/libraries/pnetcdf/1.6.0/cnk-xl/current/ - mpixlc_r - mpixlf2003_r - - -LNETCDF_PATH/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.14/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib - -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp - - TRUE - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv - - NETCDF_HOME - lustre - PNETCDFROOT - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMKL_PATH -lmkl_rt - - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - -C -Mbounds -traceback -Mchkfpstk -Mchkstk -Mdalign -Mdepchk -Mextend -Miomutex -Mrecursive -Ktrap=fp -O0 -g -byteswapio -Meh_frame - - NETCDF_HOME - lustre - PNETCDFROOT - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMPI_LIB -lmpich - - - - - - -xCORE-AVX2 - -O2 - - - --host=Linux - - - -DHAVE_SLASHPROC - -DHAVE_PAPI - - - -xCORE-AVX2 - -O2 - - cc - CC - ftn - PETSC_DIR - - -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf - MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm - - - - - - -xMIC-AVX512 - -O2 - - - --host=Linux - - - -DHAVE_SLASHPROC - -DHAVE_PAPI - - - -xMIC-AVX512 - -O2 - - cc - CC - ftn - PETSC_DIR - - -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf - MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm - - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - - NETCDF_HOME - lustre - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi - - - - - /global/project/projectdirs/acme/software/AlbanyTrilinos_09232015/Albany/build/install - - -O2 - - - --host=Linux - - - -DHAVE_PAPI - - - -O2 - - cc - CC - ftn - PETSC_DIR - - -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf - MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm - - - - - - -O2 - - - --host=Linux - - - -DHAVE_PAPI - - - -O2 - - cc - CC - ftn - - -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf - MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm - - - - - /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-gnu/install - - - - /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libO/Unicos.intel.64.mpi.default/ - /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libg/Unicos.intel.64.mpi.default/ - - NETCDF_PATH/bin/nf-config --flibs - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - - - - - -O2 - - - -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o - - - -O2 - - TRUE - /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-pgi/install - - - - - -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY - - - -lnetcdff -lnetcdf -mkl - - - - - - -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY - - - -lnetcdff -lnetcdf -mkl - - - - - NETCDF_PATH - PNETCDF_PATH - - NETCDF_PATH/bin/nc-config --flibs - - - - - - -framework Accelerate - - NETCDF_PATH - - -LNETCDF_PATH/lib -lnetcdff -lnetcdf - - - - - /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install - - -O2 - - - --host=Linux - - - -lstdc++ -lmpi_cxx - - - -O2 - - NETCDFROOT - PNETCDFROOT - - NETCDF_PATH/bin/nf-config --flibs -lblas -llapack - - - - - /projects/ccsm/libs/AlbanyTrilinos/Albany/build/install - - -DMPASLI_EXTERNAL_INTERFACE_DISABLE_MANGLING - - - -llapack -lblas -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp - - CXX - /soft/libraries/hdf5/1.8.14/cnk-xl/current/ - - - mpixlf77_r - mpixlc_r - /soft/compilers/bgclang/mpi/bgclang/bin/mpic++11 - mpixlf2003_r - /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/ - /soft/libraries/petsc/3.5.3.1 - /home/santos/pFUnit/pFUnit_IBM - gpfs - /soft/libraries/pnetcdf/1.6.0/cnk-xl/current/ - mpixlc_r - mpixlf2003_r - - -LNETCDF_PATH/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.14/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib - -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp - - TRUE - - - - - /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpicc - /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpif90 - /projects/cesm/devtools/netcdf-4.1.3-gcc4.8.1-mpich3.0.4/ - /projects/cesm/devtools/gcc-4.8.1/bin/gcc - /projects/cesm/devtools/gcc-4.8.1/bin/g++ - /projects/cesm/devtools/gcc-4.8.1/bin/gfortran - - -L/user/lib64 -llapack -lblas -lnetcdff - - - - - /home/zdr/opt/netcdf-4.1.3_pgf95 - - - - /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpicc - /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpif90 - /projects/cesm/devtools/netcdf-4.1.3-gcc4.8.1-mpich3.0.4/ - /projects/cesm/devtools/gcc-4.8.1/bin/gcc - /projects/cesm/devtools/gcc-4.8.1/bin/g++ - /projects/cesm/devtools/gcc-4.8.1/bin/gfortran - - -L/user/lib64 -llapack -lblas -lnetcdff - - - - - /home/zdr/opt/netcdf-4.1.3_pgf95 - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - - NETCDF_LIB/.. - lustre - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi - - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - - NETCDF_LIB/.. - lustre - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi - - - - - NETCDFROOT - PNETCDFROOT - - NETCDF_PATH/bin/nf-config --flibs -lblas - - - - - /projects/ccsm/AlbanyTrilinos/Albany/build/install - - -O2 - - - --host=Linux - - /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default - - -O2 - - NETCDFROOT - lustre - PNETCDFROOT - - NETCDF_PATH/bin/nf-config --flibs -L/projects/ccsm/BLAS-intel -lblas_LINUX - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - - - - /projects/ccsm/AlbanyTrilinos/Albany/build/install - - -O2 - - - --host=Linux - - /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default - - -O2 - - NETCDFROOT - lustre - PNETCDFROOT - - NETCDF_PATH/bin/nf-config --flibs -L/projects/ccsm/BLAS-intel -lblas_LINUX - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - - NETCDF - lustre - - -LNETCDF_PATH/lib -lnetcdf -lpmi - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - - NETCDF_LIB/.. - lustre - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi - - - - - - -O2 - - - --host=Linux - - - -O2 - - lustre - - NETCDF_PATH/bin/nf-config --flibs - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - TRUE - - - - /ccs/proj/cli106/AlbanyTrilinos/Albany/build/install - - -O2 - - - --host=Linux - - - -lfmpich -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o /opt/gcc/default/snos/lib64/libstdc++.a - - - -O2 - - cc - /opt/cray/craype/2.4.0/bin/CC - ftn - lustre - - nf-config --flibs - - TRUE - /lustre/atlas/world-shared/cli900/cesm/software/Trilinos/Trilinos-11.10.2_gptl/titan-pgi-ci-nophal/install - - - - - -O2 - - - --host=Linux - - - -lfmpich -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o - - - -O2 - - lustre - - NETCDF_PATH/bin/nf-config --flibs - - TRUE - - - - - - - - - - - - - USERDEFINED_MUST_EDIT_THIS - - - # USERDEFINED NETCDF_PATH/bin/nc-config --flibs - - - - - - -lstdc++ -lmpi_cxx - - mpicc - mpic++ - mpif90 - gcc - g++ - gfortran - - NETCDF_PATH/bin/nf-config --flibs -llapack -lblas - - - - - - -lstdc++ -lmpi_cxx - - mpicc - mpic++ - mpif90 - icc - icpc - ifort - - NETCDF_PATH/bin/nf-config --flibs -llapack -lblas - - - - - ALBANY_PATH - - -lstdc++ -lmpi_cxx - - mpicc - mpic++ - mpif90 - gcc - g++ - gfortran - - NETCDF_PATH/bin/nf-config --flibs -llapack -lblas - - TRILINOS_PATH - - - - mpicc - mpic++ - mpif90 - icc - icpc - ifort - - NETCDF_PATH/bin/nf-config --flibs -llapack -lblas - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - TRILINOS_PATH - - - - mpicc - mpic++ - mpif90 - pgcc - pgc++ - pgfortran - - NETCDF_PATH/bin/nf-config --flibs -llapack -lblas - - TRILINOS_PATH - - - diff --git a/cime/cime_config/acme/machines/config_compilers.xml b/cime/cime_config/acme/machines/config_compilers.xml index d4a27d955074..97d61978c5a7 100644 --- a/cime/cime_config/acme/machines/config_compilers.xml +++ b/cime/cime_config/acme/machines/config_compilers.xml @@ -149,7 +149,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 + -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DCPRPGI -gopt -Mlist -time @@ -269,7 +269,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL -openmp -openmp -openmp @@ -309,7 +309,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL -openmp -openmp -openmp @@ -337,7 +337,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL -openmp -openmp -openmp @@ -367,7 +367,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL -openmp -openmp -openmp @@ -397,7 +397,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRGNU -fopenmp -fopenmp -fopenmp @@ -442,7 +442,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRCRAY -DDIR=NOOP -h noomp -h noomp @@ -465,7 +465,7 @@ for mct, etc. gcc mpicc - -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH + -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH -DCPRNAG diff --git a/cime/cime_config/acme/machines/config_machines.xml b/cime/cime_config/acme/machines/config_machines.xml index 0eda8ec2f951..d680f6be5533 100644 --- a/cime/cime_config/acme/machines/config_machines.xml +++ b/cime/cime_config/acme/machines/config_machines.xml @@ -60,10 +60,10 @@ acme_developer intel,gnu,cray mpt,mpi-serial - $ENV{SCRATCH}/acme_scratch/edison - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld - $CESMSCRATCHROOT/archive/$CASE + $ENV{SCRATCH}/acme_scratch/edison + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE CNL slurm @@ -75,15 +75,15 @@ TRUE /project/projectdirs/acme/inputdata /project/projectdirs/acme/inputdata/atm/datm7 - /project/projectdirs/acme/baselines + /project/projectdirs/acme/baselines /project/projectdirs/acme/tools/cprnc.edison/cprnc /project/projectdirs/$PROJECT srun --label - -n {{ num_tasks }} - -c {{ thread_count }} + -n $TOTALPES + -c $OMP_NUM_THREADS @@ -185,14 +185,14 @@ acme_developer intel,gnu,cray mpt,mpi-serial - $ENV{SCRATCH}/acme_scratch - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $ENV{SCRATCH}/acme_scratch + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /project/projectdirs/acme/inputdata /project/projectdirs/acme/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - /project/projectdirs/acme/baselines + /project/projectdirs/acme/baselines /project/projectdirs/acme/tools/cprnc.cori/cprnc /project/projectdirs/$PROJECT CNL @@ -208,7 +208,7 @@ srun --label - -n {{ num_tasks }} + -n $TOTALPES -c 2 @@ -319,14 +319,14 @@ acme_developer intel,gnu,cray mpt,mpi-serial - $ENV{SCRATCH}/acme_scratch - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $ENV{SCRATCH}/acme_scratch + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /project/projectdirs/acme/inputdata /project/projectdirs/acme/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - /project/projectdirs/acme/baselines + /project/projectdirs/acme/baselines /project/projectdirs/acme/tools/cprnc.cori/cprnc /project/projectdirs/$PROJECT CNL @@ -342,7 +342,7 @@ srun --label - -n {{ num_tasks }} + -n $TOTALPES -c 4 --cpu_bind=cores @@ -459,8 +459,8 @@ $ENV{HOME}/projects/acme/cesm-inputdata $ENV{HOME}/projects/acme/ptclm-data $ENV{HOME}/projects/acme/scratch/archive/$CASE csm/$CASE - $ENV{HOME}/projects/acme/scratch - $ENV{HOME}/projects/acme/baselines + $ENV{HOME}/projects/acme/scratch + $ENV{HOME}/projects/acme/baselines > $CCSMROOT/tools/cprnc/build/cprnc @@ -474,8 +474,8 @@ Linux workstation or laptop + LINUX acme_developer - Linux gnu openmpi,mpich,mpi-serial $ENV{HOME}/projects/acme/scratch/$CASE/run @@ -484,8 +484,8 @@ $ENV{HOME}/projects/acme/ptclm-data $ENV{HOME}/projects/acme/scratch/archive/$CASE csm/$CASE - $ENV{HOME}/projects/acme/scratch - $ENV{HOME}/projects/acme/baselines + $ENV{HOME}/projects/acme/scratch + $ENV{HOME}/projects/acme/baselines > $CCSMROOT/tools/cprnc/build/cprnc jayesh at mcs dot anl dot gov @@ -496,7 +496,7 @@ mpirun - -np {{ num_tasks }} + -np $TOTALPES @@ -509,14 +509,14 @@ LINUX gnu openmpi,mpi-serial - $ENV{HOME}/acme/scratch - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $ENV{HOME}/acme/scratch + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /sems-data-store/ACME/inputdata /sems-data-store/ACME/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - /sems-data-store/ACME/baselines + /sems-data-store/ACME/baselines /sems-data-store/ACME/timings /sems-data-store/ACME/cprnc/build/cprnc jgfouca at sandia dot gov @@ -528,7 +528,7 @@ mpirun - -np {{ num_tasks }} + -np $TOTALPES @@ -552,8 +552,8 @@ - $SEMS_NETCDF_ROOT - $SEMS_NETCDF_ROOT + $ENV{SEMS_NETCDF_ROOT} + $ENV{SEMS_NETCDF_ROOT} @@ -565,14 +565,14 @@ LINUX gnu,intel openmpi,mpi-serial - $ENV{HOME}/acme/scratch - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $ENV{HOME}/acme/scratch + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /sems-data-store/ACME/inputdata /sems-data-store/ACME/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - /sems-data-store/ACME/baselines + /sems-data-store/ACME/baselines /sems-data-store/ACME/timings /sems-data-store/ACME/cprnc/build/cprnc jgfouca at sandia dot gov @@ -584,7 +584,7 @@ mpirun - -np {{ num_tasks }} + -np $TOTALPES @@ -615,8 +615,8 @@ - $SEMS_NETCDF_ROOT - $SEMS_NETCDF_ROOT + $ENV{SEMS_NETCDF_ROOT} + $ENV{SEMS_NETCDF_ROOT} @@ -628,16 +628,16 @@ LINUX gnu mpich,mpi-serial - $ENV{HOME}/acme/scratch - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $ENV{HOME}/acme/scratch + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /home/climate1/acme/inputdata /home/climate1/acme/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - /home/climate1/acme/baselines + /home/climate1/acme/baselines /home/climate1/acme/cprnc/build/cprnc - $CESMSCRATCHROOT/timings + $CIME_OUTPUT_ROOT/timings jgfouca at sandia dot gov @@ -649,7 +649,7 @@ mpirun - -np {{ num_tasks }} + -np $TOTALPES @@ -668,8 +668,8 @@ - $(dirname $(dirname $(which ncdump))) - $(dirname $(dirname $(which pnetcdf_version))) + $SHELL{dirname $(dirname $(which ncdump))} + $SHELL{dirname $(dirname $(which pnetcdf_version))} @@ -681,14 +681,14 @@ intel openmpi,mpi-serial LINUX - /gscratch/$USER/acme_scratch/skybridge - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /gscratch/$USER/acme_scratch/skybridge + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /projects/ccsm/inputdata /projects/ccsm/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE USERDEFINED_optional_run - /projects/ccsm/ccsm_baselines + /projects/ccsm/ccsm_baselines /projects/ccsm/cprnc/build/cprnc_wrap /projects/ccsm/timings slurm @@ -704,8 +704,8 @@ mpiexec --bind-to-core - --n {{ num_tasks }} - --npernode {{ tasks_per_node }} + --n $TOTALPES + --npernode $PES_PER_NODE @@ -739,16 +739,16 @@ - /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/bin:$PATH - /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/lib:$LD_LIBRARY_PATH + /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/bin:$ENV{PATH} + /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/lib:$ENV{LD_LIBRARY_PATH} /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/include /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/lib /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5 /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5 - - - - + + + + 64M @@ -761,14 +761,14 @@ intel openmpi,mpi-serial LINUX - /gscratch/$USER/acme_scratch - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /gscratch/$USER/acme_scratch + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /projects/ccsm/inputdata /projects/ccsm/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE USERDEFINED_optional_run - /projects/ccsm/ccsm_baselines + /projects/ccsm/ccsm_baselines /projects/ccsm/cprnc/build/cprnc_wrap /projects/ccsm/timings slurm @@ -784,8 +784,8 @@ mpiexec --bind-to-core - --n {{ num_tasks }} - --npernode {{ tasks_per_node }} + --n $TOTALPES + --npernode $PES_PER_NODE @@ -819,16 +819,16 @@ - /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/bin:$PATH - /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/lib:$LD_LIBRARY_PATH + /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/bin:$ENV{PATH} + /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/lib:$ENV{LD_LIBRARY_PATH} /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/include /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5/lib /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5 /projects/ccsm/tpl/netcdf/4.3.2/intel/13.0.1/openmpi/1.6.5 - - - - + + + + 64M @@ -839,15 +839,15 @@ acme_integration gnu,pgi,intel,nag mvapich,mpich,openmpi,mpi-serial - /lcrc/project/$PROJECT/$USER/acme_scratch + /lcrc/project/$PROJECT/$USER/acme_scratch /lcrc/project/$PROJECT - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /home/ccsm-data/inputdata /home/ccsm-data/inputdata/atm/datm7 /lcrc/project/ACME/$USER/archive/$CASE /lcrc/project/ACME/$USER/archive/$CASE - /lcrc/group/earthscience/acme_baselines + /lcrc/group/earthscience/acme_baselines /home/ccsm-data/tools/cprnc LINUX pbs @@ -860,7 +860,7 @@ mpiexec - -n {{ num_tasks }} + -n $TOTALPES @@ -898,8 +898,8 @@ /soft/climate/netcdf/4.3.3.1c-4.2cxx-4.4.2f-serial/intel-15.0.1 /soft/climate/netcdf/4.3.3.1c-4.2cxx-4.4.2f-serial/intel-15.0.1/include /soft/climate/netcdf/4.3.3.1c-4.2cxx-4.4.2f-serial/intel-15.0.1/lib - $NETCDFROOT/bin:$PATH - $NETCDFROOT/lib:/soft/intel/15.0.1/mkl/lib/intel64:$LD_LIBRARY_PATH + $ENV{NETCDFROOT}/bin:$ENV{PATH} + $ENV{NETCDFROOT}/lib:/soft/intel/15.0.1/mkl/lib/intel64:$ENV{LD_LIBRARY_PATH} /soft/climate/pnetcdf/1.6.1/intel-15.0.1/mvapich2-2.2a-intel-15.0 @@ -915,15 +915,15 @@ acme_integration intel,gnu,pgi mvapich,openmpi,mpi-serial - /lcrc/group/acme/$USER/acme_scratch + /lcrc/group/acme/$USER/acme_scratch /lcrc/group/acme - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /home/ccsm-data/inputdata /home/ccsm-data/inputdata/atm/datm7 /lcrc/group/acme/$USER/archive/$CASE /lcrc/project/ACME/$USER/archive/$CASE - /lcrc/group/acme/acme_baselines + /lcrc/group/acme/acme_baselines /home/ccsm-data/tools/cprnc LINUX pbs @@ -937,7 +937,7 @@ mpiexec -n $TOTALPES - --map-by ppr:{{ tasks_per_numa }}:socket:PE={{ thread_count }} --bind-to core + --map-by ppr:{{ tasks_per_numa }}:socket:PE=$OMP_NUM_THREADS --bind-to core @@ -1015,14 +1015,14 @@ acme_developer ibm ibm - /projects/$PROJECT/$USER - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /projects/$PROJECT/$USER + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /projects/ccsm/inputdata /projects/ccsm/inputdata/atm/datm7 /projects/$PROJECT/$USER/archive/$CASE /home/$USER/csm/$CASE/ - /projects/ccsm/ccsm_baselines/ + /projects/ccsm/ccsm_baselines/ /projects/ccsm/tools/cprnc/cprnc /projects/$PROJECT BGQ @@ -1041,12 +1041,12 @@ --ranks-per-node $PES_PER_NODE - --np {{ num_tasks }} + --np $TOTALPES --block $COBALT_PARTNAME $LOCARGS --envs BG_THREADLAYOUT=1 --envs XL_BG_SPREADLAYOUT=YES --envs OMP_STACKSIZE=64M - --envs OMP_NUM_THREADS={{ thread_count }} + --envs OMP_NUM_THREADS=$OMP_NUM_THREADS @@ -1075,15 +1075,15 @@ LINUX gnu openmpi,mpi-serial - $ENV{HOME}/acme/scratch - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $ENV{HOME}/acme/scratch + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld $ENV{HOME}/acme/inputdata $ENV{HOME}/acme/ptclmdata - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - /home/agsalin/acme/baselines + /home/agsalin/acme/baselines $CCSMROOT/tools/cprnc/build/cprnc agsalin at sandia dot gov 20 @@ -1097,13 +1097,13 @@ mpich,mpi-serial /p/lscratche/$CCSMUSER/ACME/$CASE/run /p/lscratche/$CCSMUSER/$CASE/bld - /p/lscratche/$USER + /p/lscratche/$USER /p/lscratchd/ma21/ccsm3data/inputdata /p/lscratchd/ma21/ccsm3data/inputdata/atm/datm7 /p/lscratche/$CCSMUSER/archive/$CASE FALSE UNSET - /p/lscratchd/$CCSMUSER/ccsm_baselines + /p/lscratchd/$CCSMUSER/ccsm_baselines /p/lscratchd/ma21/ccsm3data/tools/cprnc/cprnc LINUX mshow @@ -1137,14 +1137,14 @@ acme_developer ibm ibm - /projects/$PROJECT/$USER - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /projects/$PROJECT/$USER + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /projects/ccsm/inputdata /projects/ccsm/inputdata/atm/datm7 /projects/$PROJECT/$USER/archive/$CASE /home/$USER/csm/$CASE/ - /projects/ccsm/ccsm_baselines/ + /projects/ccsm/ccsm_baselines/ /projects/ccsm/tools/cprnc/cprnc /projects/$PROJECT BGQ @@ -1163,12 +1163,12 @@ --ranks-per-node $PES_PER_NODE - --np {{ num_tasks }} + --np $TOTALPES --block $COBALT_PARTNAME $LOCARGS --envs BG_THREADLAYOUT=1 --envs XL_BG_SPREADLAYOUT=YES --envs OMP_STACKSIZE=64M - --envs OMP_NUM_THREADS={{ thread_count }} + --envs OMP_NUM_THREADS=$OMP_NUM_THREADS @@ -1199,12 +1199,12 @@ mvapich2 /lustre/$USER/csmruns/$CASE/run /lustre/$USER/csmruns/$CASE/bld - /lustre/$USER/csmruns/ + /lustre/$USER/csmruns/ /lustre/sing201/DATASETS/CAM/InitialCondFilesCam/FromMythos1/CSMDATA_CAM/aerocom/csmdata /lustre/sing201/DATASETS/CAM/InitialCondFilesCam/FromMythos1/CSMDATA_CAM/aerocom/csmdata/atm/datm7 /lustre/$USER/archive/$CASE csm/$CASE - /UNSET_BASELINE + /UNSET_BASELINE /lustre/sing201/CAM/netcdfComp_cprnc/cprnc/cprnc slurm balwinder.singh at pnnl dot gov @@ -1225,8 +1225,8 @@ /dtemp/sing201/inputdata/CAM/CSMDATA_CAM/aerocom/csmdata/atm/datm7 /dtemp/$USER/archive/$CASE csm/$CASE - /dtemp/sing201/acme_testing/acme_baselines/ - /dtemp/$USER/csmruns + /dtemp/sing201/acme_testing/acme_baselines/ + /dtemp/$USER/csmruns /home/sing201/CAM/cprnc/cprnc slurm balwinder.singh at pnnl dot gov @@ -1242,12 +1242,12 @@ constance /pic/scratch/$CCSMUSER/csmruns/$CASE/run /pic/scratch/$CCSMUSER/csmruns/$CASE/bld - /pic/scratch/$USER + /pic/scratch/$USER /pic/projects/climate/csmdata/ /pic/projects/climate/csmdata/atm/datm7 /pic/scratch/$CCSMUSER/archive/$CASE UNSET - /pic/projects/climate/acme_baselines + /pic/projects/climate/acme_baselines /pic/projects/climate/acme_baselines/cprnc slurm balwinder.singh -at- pnnl.gov @@ -1257,7 +1257,7 @@ srun --mpi=none - --ntasks={{ num_tasks }} + --ntasks=$TOTALPES --cpu_bind=sockets --cpu_bind=verbose --kill-on-bad-exit @@ -1277,7 +1277,7 @@ mpich,mpi-serial,openmpi /home/$USER/models/ACME/run/$CASE/run /home/$USER/models/ACME/run/$CASE/bld - /home/$USER/models/ACME + /home/$USER/models/ACME /home/zdr/models/ccsm_inputdata /home/zdr/models/ccsm_inputdata/atm/datm7 /home/$USER/models/ACME/run/archive/$CASE @@ -1290,7 +1290,7 @@ /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpirun - -np {{ num_tasks }} + -np $TOTALPES --hostfile $ENV{PBS_NODEFILE} @@ -1325,7 +1325,7 @@ mpich,mpi-serial,openmpi /home/$USER/models/ACME/run/$CASE/run /home/$USER/models/ACME/run/$CASE/bld - /home/$USER/models/ACME + /home/$USER/models/ACME /home/zdr/models/ccsm_inputdata /home/zdr/models/ccsm_inputdata/atm/datm7 /home/$USER/models/ACME/run/archive/$CASE @@ -1338,7 +1338,7 @@ /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpirun - -np {{ num_tasks }} + -np $TOTALPES --hostfile $ENV{PBS_NODEFILE} @@ -1363,8 +1363,8 @@ /lustre/pfs1/cades-ccsi/proj-shared/project_acme/ACME_inputdata/atm/datm7 /lustre/pfs1/cades-ccsi/proj-shared/project_acme/archives/$CASE csm/$CASE - /lustre/pfs1/cades-ccsi/scratch - /lustre/pfs1/cades-ccsi/proj-shared/project_acme/baselines + /lustre/pfs1/cades-ccsi/scratch + /lustre/pfs1/cades-ccsi/proj-shared/project_acme/baselines $CIMEROOT/tools/cprnc/build/cprnc Fengming Yuan 4 @@ -1374,7 +1374,7 @@ /software/tools/spack/opt/spack/linux-x86_64/gcc-5.3.0/openmpi-1.10.2-w26llp27jmybo7wlgoqxjrtptltmripg/bin/mpirun - -np {{ num_tasks }} + -np $TOTALPES --hostfile $ENV{PBS_NODEFILE} @@ -1406,14 +1406,14 @@ acme_developer pgi,pgiacc,intel,cray mpich,mpi-serial - $ENV{HOME}/acme_scratch/$PROJECT + $ENV{HOME}/acme_scratch/$PROJECT $ENV{MEMBERWORK}/$PROJECT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $CIME_OUTPUT_ROOT/$CASE/bld /lustre/atlas1/cli900/world-shared/cesm/inputdata /lustre/atlas1/cli900/world-shared/cesm/inputdata/atm/datm7 $ENV{MEMBERWORK}/$PROJECT/archive/$CASE csm/$CASE - /lustre/atlas1/cli900/world-shared/cesm/baselines + /lustre/atlas1/cli900/world-shared/cesm/baselines /lustre/atlas1/cli900/world-shared/cesm/tools/cprnc/cprnc.titan $ENV{PROJWORK}/$PROJECT CNL @@ -1431,9 +1431,9 @@ {{ aprun }} @@ -1581,14 +1581,14 @@ acme_developer intel mpich,mpi-serial - $ENV{HOME}/acme_scratch/$PROJECT + $ENV{HOME}/acme_scratch/$PROJECT $ENV{MEMBERWORK}/$PROJECT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $CIME_OUTPUT_ROOT/$CASE/bld /lustre/atlas1/cli900/world-shared/cesm/inputdata /lustre/atlas1/cli900/world-shared/cesm/inputdata/atm/datm7 $ENV{MEMBERWORK}/$PROJECT/archive/$CASE csm/$CASE - /lustre/atlas1/cli900/world-shared/cesm/baselines + /lustre/atlas1/cli900/world-shared/cesm/baselines /lustre/atlas1/cli900/world-shared/cesm/tools/cprnc/cprnc.eos $ENV{PROJWORK}/$PROJECT CNL @@ -1604,9 +1604,9 @@ -j {{ hyperthreading }} -S {{ tasks_per_numa }} - -n {{ num_tasks }} - -N {{ tasks_per_node }} - -d {{ thread_count }} + -n $TOTALPES + -N $PES_PER_NODE + -d $OMP_NUM_THREADS -cc numa_node @@ -1680,8 +1680,8 @@ /lustre/scratch3/turquoise/$ENV{USER}/ACME/input_data/atm/datm7 /lustre/scratch3/turquoise/$ENV{USER}/ACME/archive/$CASE UNSET - /lustre/scratch3/turquoise/$ENV{USER}/ACME/input_data/ccsm_baselines - /lustre/scratch3/turquoise/$ENV{USER}/ACME/scratch + /lustre/scratch3/turquoise/$ENV{USER}/ACME/input_data/ccsm_baselines + /lustre/scratch3/turquoise/$ENV{USER}/ACME/scratch $CASEROOT/timings /turquoise/usr/projects/climate/SHARED_CLIMATE/software/wolf/cprnc/v0.40/cprnc @@ -1759,8 +1759,8 @@ /lustre/scratch3/turquoise/$ENV{USER}/ACME/input_data/atm/datm7 /lustre/scratch3/turquoise/$ENV{USER}/ACME/archive/$CASE UNSET - /lustre/scratch3/turquoise/$ENV{USER}/ACME/input_data/ccsm_baselines - /lustre/scratch3/turquoise/$ENV{USER}/ACME/scratch + /lustre/scratch3/turquoise/$ENV{USER}/ACME/input_data/ccsm_baselines + /lustre/scratch3/turquoise/$ENV{USER}/ACME/scratch $CASEROOT/timings /turquoise/usr/projects/climate/SHARED_CLIMATE/software/wolf/cprnc/v0.40/cprnc @@ -1806,19 +1806,19 @@ mpirun - -n {{ num_tasks }} + -n $TOTALPES mpirun - -n {{ num_tasks }} + -n $TOTALPES srun - -n {{ num_tasks }} + -n $TOTALPES @@ -1838,14 +1838,14 @@ LINUX intel,pgi,gnu mpich2,pempi,mpi-serial - /glade/scratch/$USER - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /glade/scratch/$USER + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld $ENV{CESMDATAROOT}/inputdata $ENV{CESMROOT}/lmwg - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - $ENV{CESMDATAROOT}/ccsm_baselines + $ENV{CESMDATAROOT}/ccsm_baselines $ENV{CESMDATAROOT}/tools/cime/tools/cprnc/cprnc /glade/apps/opt/perlmods/lib64/perl5:/glade/apps/opt/perlmods/share/perl5 none @@ -1949,7 +1949,7 @@ USERDEFINED_optional_run - USERDEFINED_optional_run + USERDEFINED_optional_run USERDEFINED_optional_test @@ -1961,10 +1961,10 @@ aprun - -n {{ num_tasks }} + -n $TOTALPES -S {{ tasks_per_numa }} - -N {{ tasks_per_node }} - -d {{ thread_count }} + -N $PES_PER_NODE + -d $OMP_NUM_THREADS @@ -1989,7 +1989,7 @@ USERDEFINED_optional_run - USERDEFINED_optional_run + USERDEFINED_optional_run USERDEFINED_optional_test @@ -2000,10 +2000,10 @@ aprun - -n {{ num_tasks }} + -n $TOTALPES -S {{ tasks_per_numa }} - -N {{ tasks_per_node }} - -d {{ thread_count }} + -N $PES_PER_NODE + -d $OMP_NUM_THREADS @@ -2013,15 +2013,15 @@ LINUX intel openmpi,mpi-serial - /global/scratch/$ENV{USER} - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /global/scratch/$ENV{USER} + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /global/scratch/$ENV{USER}/cesm_input_datasets/ /global/scratch/$ENV{USER}/cesm_input_datasets/atm/datm7 - $CESMSCRATCHROOT/cesm_archive/$CASE + $CIME_OUTPUT_ROOT/cesm_archive/$CASE csm/$CASE - $CESMSCRATCHROOT/cesm_baselines - /$CESMSCRATCHROOT/cesm_tools/cprnc/cprnc + $CIME_OUTPUT_ROOT/cesm_baselines + /$CIME_OUTPUT_ROOT/cesm_tools/cprnc/cprnc slurm gbisht at lbl dot gov 4 @@ -2032,15 +2032,15 @@ mpirun - -np {{ num_tasks }} - -npernode {{ tasks_per_node }} + -np $TOTALPES + -npernode $PES_PER_NODE mpirun - -np {{ num_tasks }} - -npernode {{ tasks_per_node }} + -np $TOTALPES + -npernode $PES_PER_NODE @@ -2076,15 +2076,15 @@ LINUX intel openmpi,mpi-serial - /global/scratch/$ENV{USER} - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /global/scratch/$ENV{USER} + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld /global/scratch/$ENV{USER}/cesm_input_datasets/ /global/scratch/$ENV{USER}/cesm_input_datasets/atm/datm7 - $CESMSCRATCHROOT/cesm_archive/$CASE + $CIME_OUTPUT_ROOT/cesm_archive/$CASE csm/$CASE - $CESMSCRATCHROOT/cesm_baselines - /$CESMSCRATCHROOT/cesm_tools/cprnc/cprnc + $CIME_OUTPUT_ROOT/cesm_baselines + /$CIME_OUTPUT_ROOT/cesm_tools/cprnc/cprnc slurm gbisht at lbl dot gov 4 @@ -2095,15 +2095,15 @@ mpirun - -np {{ num_tasks }} - -npernode {{ tasks_per_node }} + -np $TOTALPES + -npernode $PES_PER_NODE mpirun - -np {{ num_tasks }} - -npernode {{ tasks_per_node }} + -np $TOTALPES + -npernode $PES_PER_NODE diff --git a/cime/cime_config/acme/machines/config_pio.xml b/cime/cime_config/acme/machines/config_pio.xml index 04279c8c99e8..15307a58520f 100644 --- a/cime/cime_config/acme/machines/config_pio.xml +++ b/cime/cime_config/acme/machines/config_pio.xml @@ -81,13 +81,14 @@ --> - + __USEFUL_DESCRIPTION__ Darwin + something.matching.your.machine.hostname gnu - mpich,mpi-serial - $ENV{HOME}/projects/scratch/$CASE/run - $ENV{HOME}/projects/scratch/$CASE/bld + mpich $ENV{HOME}/projects/cesm-inputdata $ENV{HOME}/projects/ptclm-data $ENV{HOME}/projects/scratch/archive/$CASE csm/$CASE - $ENV{HOME}/projects/scratch - $ENV{HOME}/projects/baselines + $ENV{HOME}/projects/scratch + $ENV{HOME}/projects/baselines $CIMEROOT/tools/cprnc/build/cprnc - - + none __YOUR_NAME_HERE__ 4 4 2 + diff --git a/cime/cime_config/acme/testmods_dirs/allactive/force_netcdf_pio/shell_commands b/cime/cime_config/acme/testmods_dirs/allactive/force_netcdf_pio/shell_commands new file mode 100644 index 000000000000..db6528592781 --- /dev/null +++ b/cime/cime_config/acme/testmods_dirs/allactive/force_netcdf_pio/shell_commands @@ -0,0 +1 @@ +./xmlchange PIO_TYPENAME=netcdf diff --git a/cime/cime_config/cesm/machines/buildlib.csm_share b/cime/cime_config/buildlib.csm_share similarity index 89% rename from cime/cime_config/cesm/machines/buildlib.csm_share rename to cime/cime_config/buildlib.csm_share index 25562ae352a0..dd482bd91d72 100755 --- a/cime/cime_config/cesm/machines/buildlib.csm_share +++ b/cime/cime_config/buildlib.csm_share @@ -6,12 +6,12 @@ use File::Path; # Purpose: Build csm_share library #=============================================================================== -if ($#ARGV == -1) { - die " ERROR buildlib_csm_share: must specify a caseroot input argument"; +if ($#ARGV < 2) { + die " ERROR buildlib_csm_share: must specify a caseroot input argument @ARGV"; } -my ($sharedlibroot, $CASEROOT) = @ARGV; +my ($sharedlibroot, $installroot, $CASEROOT) = @ARGV; -chdir "${CASEROOT}"; +chdir "${CASEROOT}" or die "Could not cd to \"$CASEROOT\""; my $CIMEROOT = `./xmlquery CIMEROOT -value`; my $COMP_INTERFACE = `./xmlquery COMP_INTERFACE -value`; @@ -40,6 +40,7 @@ my $useesmf = "noesmf"; $useesmf = "esmf" if ($USE_ESMF_LIB eq "TRUE"); my $libdir = "$sharedlibroot/${COMP_INTERFACE}/$useesmf/${NINST_VALUE}/csm_share"; +my $installdir = "$installroot/${COMP_INTERFACE}/$useesmf/${NINST_VALUE}"; mkpath($libdir) unless -d $libdir; chdir($libdir) or die "Could not cd to $libdir: $!\n"; @@ -99,8 +100,11 @@ if ($rc==0xff00){ } die "signal $rc\n"; } - -#system("cp -p -f libcsm_share.a $sharedlibroot/lib"); -#system("cp -p -f *.mod $sharedlibroot/include/"); +if ( ! -d "$installdir/lib"){ + mkpath("$installdir/lib"); + mkpath("$installdir/include"); +} +system("cp -p -f libcsm_share.a $installdir/lib/"); +system("cp -p -f *.mod $installdir/include/"); diff --git a/cime/cime_config/acme/machines/buildlib.gptl b/cime/cime_config/buildlib.gptl similarity index 74% rename from cime/cime_config/acme/machines/buildlib.gptl rename to cime/cime_config/buildlib.gptl index c750690195df..1269c3fd4ccc 100755 --- a/cime/cime_config/acme/machines/buildlib.gptl +++ b/cime/cime_config/buildlib.gptl @@ -13,13 +13,11 @@ set GMAKE = `./xmlquery GMAKE -value ` # the $CASE.build script setenv GPTL_DIR $CIMEROOT/share/timing # gptl directory -setenv SHAREDPATH $1 -setenv GPTL_LIBDIR $SHAREDPATH/gptl - -echo "Copying source to CESM EXEROOT..." +setenv GPTL_LIBDIR $1 +setenv SHAREDPATH $2 cd $GPTL_LIBDIR -$GMAKE -f $GPTL_DIR/Makefile install MACFILE=$CASEROOT/Macros MODEL=gptl || exit 1 +$GMAKE -f $GPTL_DIR/Makefile install MACFILE=$CASEROOT/Macros.make MODEL=gptl || exit 1 exit 0 diff --git a/cime/cime_config/buildlib.mct b/cime/cime_config/buildlib.mct new file mode 100755 index 000000000000..c0bcc343fd2a --- /dev/null +++ b/cime/cime_config/buildlib.mct @@ -0,0 +1,62 @@ +#! /bin/csh -fx + +#============================================================================== +# Purpose: Build the mct library +#============================================================================== + +cd $CASEROOT + +set CIMEROOT = `./xmlquery CIMEROOT -value ` +set CASETOOLS = `./xmlquery CASETOOLS -value ` +set GMAKE = `./xmlquery GMAKE -value ` +set GMAKE_J = `./xmlquery GMAKE_J -value ` +set MACH = `./xmlquery MACH -value ` +set MPILIB = `./xmlquery MPILIB -value ` +set OS = `./xmlquery OS -value ` + +setenv MCT_DIR $CIMEROOT/externals/mct # mct directory +setenv MCT_LIBDIR $1 +setenv LIBDIR $2 +echo "MCT_LIBDIR $MCT_LIBDIR" + + cd $MCT_LIBDIR + echo "Copying source to EXEROOT..." + if ( (-M $MCT_DIR/Makefile ) >= (-M Makefile ) ) then + cp $MCT_DIR/Makefile . + endif + if (! -d mct ) then + mkdir mct + endif + if ( (-M $MCT_DIR/mct/Makefile ) >= (-M mct/Makefile ) ) then + cp $MCT_DIR/mct/Makefile mct + endif + if (! -d mpeu ) then + mkdir mpeu + endif + if ( (-M $MCT_DIR/mpeu/Makefile ) >= (-M mpeu/Makefile ) ) then + cp $MCT_DIR/mpeu/Makefile mpeu + endif + set runconf = 0 + set runclean = 0 + + echo "Running configure..." + echo "for OS=$OS MACH=$MACH" + $GMAKE -f $CASETOOLS/Makefile $MCT_LIBDIR/Makefile.conf MODEL=mct + + + if ($runclean == 1) then + $GMAKE clean + endif + + cp -p Makefile.conf Makefile.conf.old + + $GMAKE SRCDIR=$MCT_DIR || exit 1 + + + cp -p mct/lib*.a $LIBDIR/lib + cp -p mpeu/lib*.a $LIBDIR/lib + cp -p mct/*.mod $LIBDIR/include/ + cp -p mpeu/*.mod $LIBDIR/include/ + +exit 0 + diff --git a/cime/cime_config/buildlib.mpi-serial b/cime/cime_config/buildlib.mpi-serial new file mode 100755 index 000000000000..a065fc3eec00 --- /dev/null +++ b/cime/cime_config/buildlib.mpi-serial @@ -0,0 +1,47 @@ +#! /bin/csh -fx + +#============================================================================== +# Purpose: Build the mct library +#============================================================================== + +cd $CASEROOT + +set CIMEROOT = `./xmlquery CIMEROOT -value ` +set CASETOOLS = `./xmlquery CASETOOLS -value ` +set GMAKE = `./xmlquery GMAKE -value ` +set GMAKE_J = `./xmlquery GMAKE_J -value ` +set MACH = `./xmlquery MACH -value ` +set OS = `./xmlquery OS -value ` + +setenv MCT_DIR $CIMEROOT/externals/mct # mct directory +setenv MCT_LIBDIR $1 +setenv LIBDIR $2 + +cd $MCT_LIBDIR +echo "Copying source to EXEROOT..." +if ( (-M $MCT_DIR/mpi-serial/Makefile ) >= (-M mpi-serial/Makefile ) ) then + cp $MCT_DIR/mpi-serial/Makefile . +endif +cp -p $MCT_DIR/mpi-serial/*.h . + +set runconf = 0 +set runclean = 0 + +echo "Running configure..." +echo "for OS=$OS MACH=$MACH LIBDIR=$LIBDIR" +$GMAKE -f $CASETOOLS/Makefile $MCT_LIBDIR/Makefile.conf MODEL=mpi-serial + +if ($runclean == 1) then + $GMAKE clean +endif + +cp -p Makefile.conf Makefile.conf.old + +$GMAKE SRCDIR=$MCT_DIR || exit 1 + +cp -p lib*.a $LIBDIR/lib +cp -p *.h $LIBDIR/include +cp -p *.mod $LIBDIR/include + +exit 0 + diff --git a/cime/cime_config/buildlib.pio b/cime/cime_config/buildlib.pio new file mode 100755 index 000000000000..3556edc3a6e8 --- /dev/null +++ b/cime/cime_config/buildlib.pio @@ -0,0 +1,152 @@ +#!/usr/bin/env python +import shutil, glob, re +from standard_script_setup import * +from CIME.utils import run_cmd_no_fail, expect +from CIME.case import Case + +logger = logging.getLogger(__name__) + +def parse_command_line(args, description): +############################################################################### + parser = argparse.ArgumentParser( + usage="""\n%s [--debug] +OR +%s --verbose +OR +%s --help +OR +%s --test + +\033[1mEXAMPLES:\033[0m + \033[1;32m# Run \033[0m + > %s +""" % ((os.path.basename(args[0]), ) * 5), + +description=description, + +formatter_class=argparse.ArgumentDefaultsHelpFormatter +) + + CIME.utils.setup_standard_logging_options(parser) + + parser.add_argument("buildroot", + help="build path root") + + parser.add_argument("installpath", + help="install path ") + + parser.add_argument("caseroot", nargs="?", default=os.getcwd(), + help="Case directory to build") + + args = parser.parse_args(args[1:]) + + CIME.utils.handle_standard_logging_options(args) + + return args.buildroot, args.installpath, args.caseroot + +def _main_func(description): +############################################################################### + if ("--test" in sys.argv): + test_results = doctest.testmod(verbose=True) + sys.exit(1 if test_results.failed > 0 else 0) + + bldroot, installpath, caseroot = parse_command_line(sys.argv, description) + with Case(caseroot, read_only=False) as case: + pio_version = case.get_value("PIO_VERSION") + mpilib = case.get_value("MPILIB") + exeroot = case.get_value("EXEROOT") + pio_model = "pio%s"% pio_version + pio_dir = os.path.join(bldroot, pio_model) + compiler = case.get_value("COMPILER") + build_threaded = case.get_value("BUILD_THREADED") + if not os.path.isdir(pio_dir): + os.makedirs(pio_dir) + os.chdir(pio_dir) + casetools = case.get_value("CASETOOLS") + cmake_opts = "\"-D GENF90_PATH=$CIMEROOT/externals/genf90\ + -D CMAKE_MODULE_PATH=%s\" "%\ + os.path.join(CIME.utils.get_cime_root(), "externals","pio2","cmake") + gmake_opts = "%s/Makefile CASEROOT=%s MODEL=%s USER_CMAKE_OPTS=%s "\ + "PIO_LIBDIR=%s CASETOOLS=%s PIO_VERSION=%s MPILIB=%s "\ + "SHAREDLIBROOT=%s EXEROOT=%s COMPILER=%s BUILD_THREADED=%s "\ + "USER_CPPDEFS=-DTIMING -f %s/Makefile"\ + %(pio_dir,caseroot,pio_model, cmake_opts, pio_dir, casetools, + pio_version, mpilib, bldroot, exeroot, compiler, build_threaded, + casetools) + + gmake_cmd = case.get_value("GMAKE") + # This runs the pio cmake command from the cime case Makefile + cmd = "%s %s"%(gmake_cmd, gmake_opts) + output = run_cmd_no_fail(cmd, from_dir=pio_dir) + # This runs the pio make command from the cmake generated Makefile + logger.info(output) + output = run_cmd_no_fail("%s -j %s"%(gmake_cmd, case.get_value("GMAKE_J")), from_dir=pio_dir) + logger.info(output) + if pio_version == 1: + installed_lib = os.path.join(installpath,"lib","libpio.a") + installed_lib_time = 0 + if os.path.isfile(installed_lib): + installed_lib_time = os.path.getmtime(installed_lib) + newlib = os.path.join(pio_dir,"pio","libpio.a") + newlib_time = os.path.getmtime(newlib) + if newlib_time > installed_lib_time: + logger.info("Installing pio version 1") + shutil.copy2(newlib, installed_lib) + for glob_to_copy in ("*.h", "*.mod"): + for item in glob.glob(os.path.join(pio_dir,"pio",glob_to_copy)): + shutil.copy2(item, "%s/include"%installpath) + expect_string = "D_NETCDF;" + pnetcdf_string = "D_PNETCDF" + netcdf4_string = "D_NETCDF4" + else: + globs_to_copy = (os.path.join("src","clib","libpioc.*"), + os.path.join("src","flib","libpiof.*"), + os.path.join("src","clib","*.h"), + os.path.join("src","flib","*.mod")) + for glob_to_copy in globs_to_copy: + installed_file_time = 0 + for item in glob.glob(os.path.join(pio_dir,glob_to_copy)): + if item.endswith(".a") or item.endswith(".so"): + installdir = "lib" + else: + installdir = "include" + installed_file = os.path.join(installpath,installdir,os.path.basename(item)) + item_time = os.path.getmtime(item) + if os.path.isfile(installed_file): + installed_file_time = os.path.getmtime(installed_file) + if item_time > installed_file_time: + shutil.copy2(item, installed_file) + expect_string = "NetCDF_C_LIBRARY-ADVANCED" + pnetcdf_string = "PnetCDF_C_LIBRARY-ADVANCED" + netcdf4_string = "NetCDF_C_HAS_PARALLEL:BOOL=TRUE" + + + # make sure case pio_typename valid_values is set correctly + expect_string_found = False + pnetcdf_found = False + netcdf4_parallel_found = False + + cache_file = open(os.path.join(pio_dir,"CMakeCache.txt"), "r") + for line in cache_file: + if re.search(expect_string, line): + expect_string_found = True + if re.search(pnetcdf_string, line): + pnetcdf_found = True + if re.search(netcdf4_string, line): + netcdf4_parallel_found = True + + expect(expect_string_found, "CIME models require NETCDF in PIO build") + valid_values = "netcdf" + if pnetcdf_found: + valid_values += ",pnetcdf" + if netcdf4_parallel_found: + valid_values += ",netcdf4p,netcdf4c" + logger.warn("Updating valid_values for PIO_TYPENAME: %s", valid_values) + case.set_valid_values("PIO_TYPENAME",valid_values) + # nothing means use the general default + valid_values += ",nothing" + for comp in ("ATM","CPL","OCN","WAV","GLC","ICE","ROF","LND"): + case.set_valid_values("%s_PIO_TYPENAME"%comp,valid_values) + +if (__name__ == "__main__"): + _main_func(__doc__) diff --git a/cime/cime_config/cesm/allactive/config_compsets.xml b/cime/cime_config/cesm/allactive/config_compsets.xml deleted file mode 100644 index bf3f7fa09de6..000000000000 --- a/cime/cime_config/cesm/allactive/config_compsets.xml +++ /dev/null @@ -1,495 +0,0 @@ - - - - - - ========================================= - compset naming convention - ========================================= - The compset longname below has the specified order - atm, lnd, ice, ocn, river, glc wave cesm-options - - The notation for the compset longname is - TIME_ATM[%phys]_LND[%phys]_ICE[%phys]_OCN[%phys]_ROF[%phys]_GLC[%phys]_WAV[%phys][_ESP%phys][_BGC%phys] - Where for the CAM specific compsets below the following is supported - TIME = Time period (e.g. 2000, HIST, RCP8...) - ATM = [CAM40, CAM50, CAM60] - LND = [CLM40, CLM45, CLM50, SLND] - ICE = [CICE, DICE, SICE] - OCN = [DOCN, ,AQUAP, SOCN] - ROF = [RTM, MOSART, SROF] - GLC = [CISM1, CISM2, SGLC] - WAV = [WW3, DWAV, XWAV, SWAV] - ESP = [SESP] - BGC = optional BGC scenario - - The OPTIONAL %phys attributes specify submodes of the given system - For example DOCN%DOM is the data ocean model for DOCN - ALL the possible %phys choices for each component are listed - with the -list command for create_newcase - ALL data models must have a %phys option that corresponds to the data model mode - - Each compset node is associated with the following elements - - lname - - alias - - support (optional description of the support level for this compset) - Each compset node can also have the following attributes - - grid (optional regular expression match for grid to work with the compset) - - - - - - - B1850Ws - 1850_CAM60_CLM50%BGC_CICE_POP2%ECO_MOSART_CISM1%NOEVOLVE_SWAV_BGC%BDRD - - - - B1850 - 1850_CAM60_CLM50%BGC_CICE_POP2%ECO_MOSART_CISM1%NOEVOLVE_WW3_BGC%BDRD - - - - B1850CwWs - 1850_CAM60%WTSM_CLM50%BGC_CICE_POP2%ECO_MOSART_SGLC_SWAV - - - - B1850Cw - 1850_CAM60%WTSM_CLM50%BGC_CICE_POP2%ECO_MOSART_SGLC_WW3 - - - - - - - - - - - BC5L45BGC - 2000_CAM50_CLM45%BGC_CICE_POP2_MOSART_SGLC_SWAV - - - - BC4FCHML40CNR - 2000_CAM40%FCHM_CLM40%CN_CICE_POP2_RTM_SGLC_SWAV - - - - BC4TMOZL40SPR - 2000_CAM40%TMOZ_CLM40%SP_CICE_POP2_RTM_SGLC_SWAV - - - - B1850C5L40SPR - 1850_CAM50_CLM40%SP_CICE_POP2_RTM_SGLC_SWAV - - - - Bi1850C5 - 1850_CAM50%WISOall_CLM40%SP_WISO_CICE%WISO_POP2%ISO_RTM%WISO_SGLC_SWAV - - - B1850C4L40CNR - 1850_CAM40_CLM40%CN_CICE_POP2_RTM_SGLC_SWAV - - - - B1850C5L40CNR - 1850_CAM50_CLM40%CN_CICE_POP2_RTM_SGLC_SWAV - - - - Bi1850C5CN - 1850_CAM50%WISOall_CLM40%CN_WISO_CICE%WISO_POP2%ISO_RTM%WISO_SGLC_SWAV - - - - B1850C5L45BGCR - 1850_CAM50_CLM45%BGC_CICE_POP2_RTM_SGLC_SWAV - - - - B1850C5L45BGC - 1850_CAM50_CLM45%BGC_CICE_POP2_MOSART_SGLC_SWAV - - - - - B1850C4RCO2L40CNR - 1850_CAM40%RCO2_CLM40%CN_CICE_POP2_RTM_SGLC_SWAV - - - - - B1850C5WCCML45CNRWs - 1850_CAM50%WCCM_CLM45%CN_CICE_POP2_RTM_SGLC_SWAV - - - - B1850C5WCCML45CN - 1850_CAM50%WCCM_CLM45%CN_CICE_POP2_MOSART_SGLC_SWAV - - - - - BC4WCBCL40CNR - 2013_CAM40%WCBC_CLM40%CN_CICE_POP2_RTM_SGLC_SWAV - - - - B1850C4L40CNRBDRD - 1850_CAM40_CLM40%CN_CICE_POP2%ECO_RTM_SGLC_SWAV_BGC%BDRD - - - - BHISTC5L40CNRWs - HIST_CAM50_CLM40%CN_CICE_POP2_RTM_SGLC_SWAV - - - - BiHISTC5CN - HIST_CAM50_CLM40%CN_WISO_CICE%WISO_POP2%ISO_RTM%WISO_SGLC_SWAV - - - BHISTC5L40CNR - HIST_CAM50_CLM40%CN_CICE_POP2_RTM_SGLC_WW3 - - - - BHISTC5L45BGCRWs - HIST_CAM50_CLM45%BGC_CICE_POP2_RTM_SGLC_SWAV - - - - BHISTC5L45BGCR - HIST_CAM50_CLM45%BGC_CICE_POP2_RTM_SGLC_WW3 - - - - BHISTC5L45BGCWs - HIST_CAM50_CLM45%BGC_CICE_POP2_MOSART_SGLC_SWAV - - - - BHISTC5L45BGC - HIST_CAM50_CLM45%BGC_CICE_POP2_MOSART_SGLC_WW3 - - - - BHISTC4FCHML40CNRWs - HIST_CAM40%FCHM_CLM40%CN_CICE_POP2_RTM_SGLC_SWAV - - - - BHISTC4FCHML40CNR - HIST_CAM40%FCHM_CLM40%CN_CICE_POP2_RTM_SGLC_WW3 - - - - BRCP26C4L40CNR - RCP2_CAM40_CLM40%CN_CICE_POP2_RTM_SGLC_SWAV - - - - BRCP45C4L40CNRBDRD - RCP4_CAM40_CLM40%CN_CICE_POP2%ECO_RTM_SGLC_SWAV_BGC%BDRD - - - - BRCP85C4L40CNRBPRP - RCP8_CAM40_CLM40%CN_CICE_POP2%ECO_RTM_SGLC_SWAV_BGC%BPRP - - - - BRCP85C5L45BGCR - RCP8_CAM50_CLM45%BGC_CICE_POP2_RTM_SGLC_SWAV - - - - BRCP85C5L45BGC - RCP8_CAM50_CLM45%BGC_CICE_POP2_MOSART_SGLC_SWAV - - - - - B1850C4L45BGCRBPRP - 1850_CAM40_CLM45%BGC_CICE_POP2%ECO_RTM_SGLC_SWAV_BGC%BPRP - - - - B1850C4L45BGCBPRP - 1850_CAM40_CLM45%BGC_CICE_POP2%ECO_MOSART_SGLC_SWAV_BGC%BPRP - - - - B1850C5L45BGCRBPRP - 1850_CAM50_CLM45%BGC_CICE_POP2%ECO_RTM_SGLC_SWAV_BGC%BPRP - - - - BHISTC4L40CNRBDRD - HIST_CAM40_CLM40%CN_CICE_POP2%ECO_RTM_SGLC_SWAV_BGC%BDRD - - - - - - - BC5L45BGCRG - 2000_CAM50_CLM45%BGC_CICE_POP2_RTM_CISM1_SWAV - - - - BC5L45BGCR - 2000_CAM50_CLM45%BGC_CICE_POP2_RTM_SGLC_SWAV - - - - B1850C5L45BGCRG2 - 1850_CAM50_CLM45%BGC_CICE_POP2_RTM_CISM2_SWAV - - - - - - - - - - - - - - - - ETEST - 2000_CAM60_CLM50_CICE_DOCN%SOM_MOSART_SGLC_SWAV_TEST - - - - E1850C5L45TEST - 1850_CAM50_CLM45%SP_CICE_DOCN%SOM_MOSART_SGLC_SWAV_TEST - - - - - - J1850G2 - 1850_DATM%CRU_CLM50%BGC_CICE_POP2_MOSART_CISM2_SWAV - - - - - - - hybrid - - - - - b.e15.B1850G.f09_g16.pi_control.25 - - - - - 0041-01-01 - - - - - - 0001-01-01 - 0001-01-01 - 1850-01-01 - 1955-01-01 - 2005-01-01 - 2013-01-01 - - - - - diff --git a/cime/cime_config/cesm/allactive/config_pes.xml b/cime/cime_config/cesm/allactive/config_pes.xml deleted file mode 100644 index 05bfbdcd1ad8..000000000000 --- a/cime/cime_config/cesm/allactive/config_pes.xml +++ /dev/null @@ -1,1759 +0,0 @@ - - - - - - - - none - - -3 - -1 - -1 - -2 - -1 - -1 - -1 - -3 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - -1 - -3 - 0 - 0 - 0 - - - - - - - - none - - -4 - -2 - -2 - -2 - -2 - -1 - -1 - -4 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - -2 - -4 - 0 - 0 - 0 - - - - - - - - none - - -16 - -9 - -9 - -7 - -1 - -1 - -1 - -16 - - - 8 - 8 - 8 - 8 - 8 - 8 - 8 - 8 - - - 0 - 0 - 0 - -9 - -16 - 0 - 0 - 0 - - - - - - - - none - - 60 - 15 - 15 - 45 - 15 - 60 - 60 - 60 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 15 - 60 - 0 - 0 - 0 - - - - - - - - js 16 sep 2014 ne16_g37 bc5 yellowstone-specific pe layout used for low res ensemble - - 96 - 80 - 80 - 80 - 16 - 96 - 96 - 96 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 0 - 80 - 0 - 0 - 0 - - - - - - - - none - - -8 - -8 - -8 - -8 - -8 - -8 - -8 - -8 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - none - - -16 - -16 - -16 - -16 - -16 - -16 - -10 - -16 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - none - - 2600 - 144 - 144 - 2456 - 192 - 1 - 160 - 2600 - - - 8 - 8 - 8 - 8 - 8 - 8 - 8 - 8 - - - 0 - 0 - 144 - 0 - 2600 - 0 - 0 - 0 - - - - - - - - none - - 960 - 48 - 48 - 912 - 48 - 1 - 160 - 960 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 4 - - - 0 - 0 - 0 - 48 - 960 - 0 - 0 - 0 - - - - - - - - none - - 900 - 300 - 300 - 600 - 60 - 900 - 160 - 900 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 300 - 900 - 0 - 0 - 0 - - - - - - - - none - - 1024 - 1024 - 1024 - 1024 - 1024 - 1024 - 160 - 1024 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - none - - 12384 - 96 - 96 - 12288 - 4000 - 1 - 160 - 12384 - - - 8 - 8 - 8 - 8 - 8 - 8 - 8 - 8 - - - 0 - 0 - 0 - 96 - 12384 - 0 - 0 - 0 - - - - - - - - none - - 1440 - 1440 - 1440 - 512 - 2048 - 1440 - 160 - 1440 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 1440 - 0 - 0 - 0 - - - - - - - - none - - 4096 - 2048 - 512 - 2048 - 512 - 4096 - 160 - 4096 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 2048 - 4096 - 0 - 0 - 0 - - - - - - - - none - - 4096 - 2048 - 2048 - 2048 - 512 - 4096 - 160 - 4096 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 2048 - 4096 - 0 - 0 - 0 - - - - - - - - none - - 9600 - 8640 - 600 - 960 - 960 - 960 - 160 - 960 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 4 - - - 0 - 0 - 0 - 8640 - 9600 - 0 - 0 - 0 - - - - - - - - none - - 48 - 8 - 8 - 40 - 32 - 48 - 48 - 48 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 8 - 48 - 0 - 0 - 0 - - - - - - - - none - - -64 - -16 - -16 - -48 - -64 - -1 - -1 - -16 - - - 8 - 8 - 8 - 8 - 8 - 8 - 8 - 8 - - - 0 - 0 - 0 - -16 - 0 - 0 - 0 - -64 - - - - - - - - none - - 160 - 80 - 80 - 80 - 160 - 160 - 160 - 240 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 1 - - - 0 - 0 - 0 - 80 - 0 - 0 - 160 - - - - - - - - none - - 96 - 48 - 48 - 48 - 12 - 96 - 96 - 96 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 48 - 48 - 0 - 96 - 0 - 0 - 0 - - - - - - - - none - - 192 - 72 - 72 - 120 - 24 - 192 - 160 - 192 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 120 - 120 - 0 - 192 - 0 - 0 - 0 - - - - - - - - none - - 256 - 64 - 64 - 192 - 16 - 256 - 160 - 256 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 192 - 0 - 0 - 256 - 0 - 0 - 0 - - - - - - - - none - - 240 - 40 - 40 - 200 - 20 - 240 - 160 - 240 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 240 - 0 - 0 - 240 - 0 - 0 - 0 - - - - - - - - none - - 120 - 48 - 48 - 72 - 24 - 120 - 1 - 1 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 48 - 120 - 0 - 0 - 0 - 0 - - - - - - - - none - - -12 - -5 - -5 - -7 - -8 - -1 - -8 - -12 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - -5 - 0 - 0 - -12 - 0 - - - - - - - - none - - 96 - 96 - 96 - 96 - 96 - 96 - 96 - 96 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 4 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - none - - 640 - 96 - 96 - 544 - 96 - 180 - 160 - 640 - - - 2 - 1 - 1 - 2 - 1 - 2 - 2 - 2 - - - 0 - 544 - 544 - 0 - 640 - 0 - 0 - 0 - - - - - - - - none - - 96 - 96 - 96 - 96 - 96 - 96 - 96 - 96 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 4 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - none - - 180 - 180 - 180 - 180 - 180 - 180 - 160 - 180 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - none - - -8 - -4 - -4 - -4 - -1 - -8 - -8 - -8 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - -4 - -8 - 0 - 0 - 0 - - - - - - - - none - - -16 - -9 - -9 - -7 - -1 - -1 - -1 - -16 - - - 8 - 8 - 8 - 8 - 8 - 8 - 8 - 8 - - - 0 - 0 - 0 - -9 - -16 - 0 - 0 - 0 - - - - - - - - - none - - -208 - -32 - -32 - -80 - -48 - -1 - -1 - -208 - - - 8 - 8 - 8 - 8 - 8 - 8 - 8 - 8 - - - 0 - 0 - -32 - -64 - -208 - 0 - 0 - 0 - - - - - - - - none - - 960 - 48 - 48 - 912 - 48 - 1 - 160 - 960 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 4 - - - 0 - 0 - 0 - 48 - 960 - 0 - 0 - 0 - - - - - - - - none - - 384 - 64 - 64 - 320 - 32 - 384 - 160 - 64 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 1 - - - 0 - 0 - 0 - 64 - 384 - 0 - 0 - 0 - - - - - - - - none - - 300 - 90 - 90 - 210 - 60 - 300 - 160 - 300 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 90 - 300 - 0 - 0 - 0 - - - - - - - - none - - -40 - -24 - -24 - -16 - -6 - -40 - -10 - -40 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - -24 - -40 - 0 - 0 - 0 - - - - - - - - none - - -40 - -24 - -24 - -16 - -6 - -40 - -8 - -40 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - -24 - -40 - 0 - 0 - 0 - - - - - - - - none - - -40 - -24 - -24 - -16 - -6 - -40 - -10 - -40 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - -24 - -40 - 0 - 0 - 0 - - - - - - - - 16 - 16 - none - - -108 - -68 - -68 - -40 - -10 - 1 - 1 - -108 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - -68 - -108 - 0 - 0 - 0 - - - - 16 - 16 - none - - -54 - -37 - -37 - -17 - -10 - 1 - -10 - -54 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - -37 - -54 - 0 - 0 - 0 - - - - - - - - none - - 900 - 300 - 300 - 600 - 90 - 900 - 160 - 900 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 300 - 900 - 0 - 0 - 0 - - - - - - - - none - - 600 - 210 - 600 - 390 - 120 - 600 - 160 - 600 - - - 2 - 2 - 2 - 1 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 210 - 600 - 0 - 0 - 0 - - - - - - - - none - - 192 - 192 - 192 - 192 - 192 - 192 - 160 - 192 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 4 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - none - - 1024 - 416 - 1024 - 1024 - 1024 - 1024 - 160 - 1024 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - none - - 15330 - 5115 - 5115 - 10215 - 30 - 15330 - 160 - 15330 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 5115 - 15330 - 0 - 0 - 0 - - - - - - - - none - - 3200 - 1600 - 1600 - 1600 - 32 - 3200 - 160 - 3200 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 1600 - 3200 - 0 - 0 - 0 - - - - - - - - - - - - Load balanced for 1850_DATM%CRU_CLM50%BGC_CICE_POP2_MOSART_CISM2_SWAV on yellowstone - - -1 - -21 - -21 - -10 - -16 - -48 - 1 - -31 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - -31 - 0 - 0 - -21 - -32 - 0 - 0 - 0 - - - - - - - diff --git a/cime/cime_config/cesm/allactive/testlist_allactive.xml b/cime/cime_config/cesm/allactive/testlist_allactive.xml deleted file mode 100644 index d847e74041bd..000000000000 --- a/cime/cime_config/cesm/allactive/testlist_allactive.xml +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01/include_user_mods b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01/include_user_mods deleted file mode 100644 index 449be787cb7d..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01/include_user_mods +++ /dev/null @@ -1,2 +0,0 @@ -../../../usermods_dirs/b1850_cism -../default \ No newline at end of file diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01io/include_user_mods b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01io/include_user_mods deleted file mode 100644 index 2a540bec29c3..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01io/include_user_mods +++ /dev/null @@ -1,2 +0,0 @@ -../../../usermods_dirs/b1850_cism -../defaultio diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/README b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/README deleted file mode 100644 index 4a6807ea65c6..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/README +++ /dev/null @@ -1 +0,0 @@ -This set of testmods turns off two-way coupling diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/xmlchange_cmnds b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/xmlchange_cmnds deleted file mode 100644 index 404b22b0067e..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/xmlchange_cmnds +++ /dev/null @@ -1 +0,0 @@ -./xmlchange GLC_TWO_WAY_COUPLING=FALSE diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/README b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/README deleted file mode 100644 index e8fe16fd420b..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/README +++ /dev/null @@ -1,5 +0,0 @@ -This testmods directory tests the use of the trilinos solver. - -Note: We also want to allow the case where cism is built using -CISM_USE_TRILINOS=TRUE, but trilinos isn't actually chosen at runtime. However, -for now I don't feel it's worth actually having a test of that combination. diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/include_user_mods b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/include_user_mods deleted file mode 100644 index 1c29cfcb0057..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../apply_to_multiinstance diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/shell_commands b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/shell_commands deleted file mode 100755 index de22fb6073d7..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/shell_commands +++ /dev/null @@ -1 +0,0 @@ -./xmlchange CISM_USE_TRILINOS=TRUE diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/user_nl_cism b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/user_nl_cism deleted file mode 100644 index 7b6d595280e9..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/user_nl_cism +++ /dev/null @@ -1,2 +0,0 @@ -which_ho_sparse = 4 - diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_cice b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_cice deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_clm b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_clm deleted file mode 100644 index 6dd9ac051670..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_clm +++ /dev/null @@ -1 +0,0 @@ - finidat = '' diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_mosart b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_mosart deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_pop b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_pop deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_rtm b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_rtm deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/include_user_mods b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/include_user_mods deleted file mode 100644 index fe0e18cf8896..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../default diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cam b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cam deleted file mode 100644 index 101fcd23a61a..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cam +++ /dev/null @@ -1,3 +0,0 @@ -nhtfrq = -24 -mfilt = 1 -ndens = 1 diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cice b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cice deleted file mode 100644 index 4aa86d5cbf89..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cice +++ /dev/null @@ -1,98 +0,0 @@ -!---------------------------------------------------------------------------------- -! Have commented out the following due to known problems on restart -! f_albice = 'dxxxx' -! f_albsno = 'dxxxx' -! f_albpnd = 'dxxxx' -!---------------------------------------------------------------------------------- -histfreq = 'd','x','x','x','x' -histfreq_n = 1,1,1,1,1 -f_hi = 'dxxxx' -f_hs = 'dxxxx' -f_Tsfc = 'dxxxx' -f_aice = 'dxxxx' -f_uvel = 'dxxxx' -f_vvel = 'dxxxx' -f_fswdn = 'dxxxx' -f_flwdn = 'dxxxx' -f_snow = 'dxxxx' -f_snow_ai = 'dxxxx' -f_rain = 'dxxxx' -f_rain_ai = 'dxxxx' -f_faero_atm = 'dxxxx' -f_faero_ocn = 'dxxxx' -f_sst = 'dxxxx' -f_sss = 'dxxxx' -f_uocn = 'dxxxx' -f_vocn = 'dxxxx' -f_frzmlt = 'dxxxx' -f_fswfac = 'dxxxx' -f_fswabs = 'dxxxx' -f_fswabs_ai = 'dxxxx' -f_alidr = 'dxxxx' -f_alidf = 'dxxxx' -f_alvdr = 'dxxxx' -f_alvdf = 'dxxxx' -f_coszen = 'dxxxx' -f_flat = 'dxxxx' -f_flat_ai = 'dxxxx' -f_fsens = 'dxxxx' -f_fsens_ai = 'dxxxx' -f_flwup = 'dxxxx' -f_flwup_ai = 'dxxxx' -f_evap = 'dxxxx' -f_evap_ai = 'dxxxx' -f_Tair = 'dxxxx' -f_Tref = 'dxxxx' -f_Qref = 'dxxxx' -f_congel = 'dxxxx' -f_frazil = 'dxxxx' -f_snoice = 'dxxxx' -f_meltt = 'dxxxx' -f_melts = 'dxxxx' -f_meltb = 'dxxxx' -f_meltl = 'dxxxx' -f_fresh = 'dxxxx' -f_fresh_ai = 'dxxxx' -f_fsalt = 'dxxxx' -f_fsalt_ai = 'dxxxx' -f_fhocn = 'dxxxx' -f_fhocn_ai = 'dxxxx' -f_fswthru = 'dxxxx' -f_fswthru_ai = 'dxxxx' -f_strairx = 'dxxxx' -f_strairy = 'dxxxx' -f_strtltx = 'dxxxx' -f_strtlty = 'dxxxx' -f_strcorx = 'dxxxx' -f_strcory = 'dxxxx' -f_strocnx = 'dxxxx' -f_strocny = 'dxxxx' -f_strintx = 'dxxxx' -f_strinty = 'dxxxx' -f_strength = 'dxxxx' -f_opening = 'dxxxx' -f_divu = 'dxxxx' -f_shear = 'dxxxx' -f_sig1 = 'dxxxx' -f_sig2 = 'dxxxx' -f_dvidtt = 'dxxxx' -f_dvidtd = 'dxxxx' -f_daidtt = 'dxxxx' -f_daidtd = 'dxxxx' -f_dardg1dt = 'dxxxx' -f_dardg2dt = 'dxxxx' -f_dvirdgdt = 'dxxxx' -f_iage = 'dxxxx' -f_ardg = 'dxxxx' -f_vrdg = 'dxxxx' -f_alvl = 'dxxxx' -f_vlvl = 'dxxxx' -f_FY = 'dxxxx' -f_aisnap = 'dxxxx' -f_hisnap = 'dxxxx' -f_aicen = 'dxxxx' -f_vicen = 'dxxxx' -f_trsig = 'dxxxx' -f_icepresent = 'dxxxx' -f_fsurf_ai = 'dxxxx' -f_fcondtop_ai = 'dxxxx' diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cism b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cism deleted file mode 100644 index 1e65ec4b98f5..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cism +++ /dev/null @@ -1,7 +0,0 @@ -! This option changes the ice sheet dynamics time step to 1 day rather than 1 year -! Thus, the ice sheet dynamics can be exercised in a few-day run -test_coupling = .true. - -! This is needed to give CISM history output in the (typically short) -! tests that are done with this testmod directory -history_option = 'coupler' diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_clm b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_clm deleted file mode 100644 index 946a7a4f4a45..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_clm +++ /dev/null @@ -1,4 +0,0 @@ - hist_dov2xy = .true. - hist_ndens = 1 - hist_nhtfrq =-24 - hist_mfilt = 1 diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_mosart b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_mosart deleted file mode 100644 index ecd3d1730ede..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_mosart +++ /dev/null @@ -1,13 +0,0 @@ -!---------------------------------------------------------------------------------- -! Users should add all user specific namelist changes below in the form of -! namelist_var = new_namelist_value -! NOTE: namelist variable rtm_tstep CAN ONLY be changed by modifying the value -! of the xml variable ROF_NCPL in env_run.xml -! NOTE: if the xml variable RTM_MODE in env_run.xml is set to 'NULL', then -! then rtm will set rtm_present to .false. - and will ignore everything else -!---------------------------------------------------------------------------------- -rtmhist_ndens = 1 -rtmhist_nhtfrq =-24 -rtmhist_mfilt = 1 - - diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_pop b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_pop deleted file mode 100644 index 0173835581db..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_pop +++ /dev/null @@ -1,6 +0,0 @@ -& tavg_nml - ltavg_ignore_extra_streams = .true. - n_tavg_streams = 1 - tavg_freq_opt = 'nday' - tavg_file_freq_opt = 'nday' -/ diff --git a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_rtm b/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_rtm deleted file mode 100644 index ecd3d1730ede..000000000000 --- a/cime/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_rtm +++ /dev/null @@ -1,13 +0,0 @@ -!---------------------------------------------------------------------------------- -! Users should add all user specific namelist changes below in the form of -! namelist_var = new_namelist_value -! NOTE: namelist variable rtm_tstep CAN ONLY be changed by modifying the value -! of the xml variable ROF_NCPL in env_run.xml -! NOTE: if the xml variable RTM_MODE in env_run.xml is set to 'NULL', then -! then rtm will set rtm_present to .false. - and will ignore everything else -!---------------------------------------------------------------------------------- -rtmhist_ndens = 1 -rtmhist_nhtfrq =-24 -rtmhist_mfilt = 1 - - diff --git a/cime/cime_config/cesm/allactive/usermods_dirs/b1850/shell_commands b/cime/cime_config/cesm/allactive/usermods_dirs/b1850/shell_commands deleted file mode 100644 index 8253c716b11b..000000000000 --- a/cime/cime_config/cesm/allactive/usermods_dirs/b1850/shell_commands +++ /dev/null @@ -1,2 +0,0 @@ -./xmlchange OCN_CHL_TYPE=diagnostic - diff --git a/cime/cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_clm b/cime/cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_clm deleted file mode 100644 index 4c91174e7dca..000000000000 --- a/cime/cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_clm +++ /dev/null @@ -1 +0,0 @@ -init_interp_fill_missing_with_natveg = .true. diff --git a/cime/cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_cpl b/cime/cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_cpl deleted file mode 100644 index 85e9b9c76f4c..000000000000 --- a/cime/cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_cpl +++ /dev/null @@ -1,2 +0,0 @@ -flux_diurnal=.true. - diff --git a/cime/cime_config/cesm/allactive/usermods_dirs/b1850_cism/include_user_mods b/cime/cime_config/cesm/allactive/usermods_dirs/b1850_cism/include_user_mods deleted file mode 100644 index b46f5b94020e..000000000000 --- a/cime/cime_config/cesm/allactive/usermods_dirs/b1850_cism/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../b1850 \ No newline at end of file diff --git a/cime/cime_config/cesm/allactive/usermods_dirs/b1850_cism/user_nl_cism b/cime/cime_config/cesm/allactive/usermods_dirs/b1850_cism/user_nl_cism deleted file mode 100644 index 502c51c6468e..000000000000 --- a/cime/cime_config/cesm/allactive/usermods_dirs/b1850_cism/user_nl_cism +++ /dev/null @@ -1,5 +0,0 @@ -! The following options keep the ice sheet at its present-day configuration, rather than letting it evolve in time. -! In this way, CISM essentially acts as a diagnostic component without any effect on the rest of the system. -! Now defined in CISM1%NOEVOLVE -!evolve_ice = 0 -!zero_gcm_fluxes = 1 diff --git a/cime/cime_config/cesm/config_archive.xml b/cime/cime_config/cesm/config_archive.xml index a0ad0355290e..3566c870ef94 100644 --- a/cime/cime_config/cesm/config_archive.xml +++ b/cime/cime_config/cesm/config_archive.xml @@ -1,4 +1,4 @@ - + \.[ri]\..* @@ -12,7 +12,7 @@ - \.r\..* + \.r.* unset rpointer$NINST_STRING.atm @@ -43,7 +43,7 @@ \.r.* \.h.*.nc$ - unset + locfnh rpointer$NINST_STRING.rof $CASE.rtm$NINST_STRING.r.$DATENAME.nc @@ -53,21 +53,13 @@ \.r.* \.h.*.nc$ - unset + locfnh rpointer$NINST_STRING.rof $CASE.mosart$NINST_STRING.r.$DATENAME.nc - - \.r.* - unset - - rpointer$NINST_STRING.rof - $CASE.drof$NINST_STRING.r.$DATENAME.nc,$CASE.drof$NINST_STRING.rs1.$DATENAME.bin - - \.[ri].* @@ -79,14 +71,6 @@ - - \.r.* - unset - - rpointer$NINST_STRING.ice - $CASE.dice$NINST_STRING.r.$DATENAME.nc,$CASE.dice$NINST_STRING.rs1.$DATENAME.bin - - \.r.* @@ -102,18 +86,10 @@ - - \.r.* - unset - - rpointer$NINST_STRING.ocn - $CASE.docn$NINST_STRING.r.$DATENAME.nc,$CASE.docn$NINST_STRING.rs1.$DATENAME.bin - - - \.[ri]\..* - \.h.*.nc$ + \.h\..*\.nc$ + \.initial_hist\..*\.nc$ unset rpointer$NINST_STRING.glc @@ -122,8 +98,8 @@ - \.\..* - \.hi.* + \.r.* + \.hi\..*\.nc$ unset rpointer$NINST_STRING.wav @@ -131,35 +107,19 @@ - - \.r.* - unset - - rpointer$NINST_STRING.wav - $CASE.dwav$NINST_STRING.r.$DATENAME.nc,$CASE.dwav$NINST_STRING.rs1.$DATENAME.bin - - - + inflate_restart.* - True_State.* - Prior_Diag.* - Posterior_Diag.* - obs_seq.* + \.True_State.* + \.Prior_Diag.* + \.Posterior_Diag.* + \..+\.posterior* + \..+\.prior* + \..+$_obs_seq.* unset rpointer.unset - unset - - - - - \.r\..* - \.h.*.nc$ - unset - - rpointer.cpl - $CASE.cpl.r.$DATENAME.nc + unset diff --git a/cime/cime_config/cesm/config_files.xml b/cime/cime_config/cesm/config_files.xml index 1e9c4afb1b6a..ba9313504fcb 100644 --- a/cime/cime_config/cesm/config_files.xml +++ b/cime/cime_config/cesm/config_files.xml @@ -1,8 +1,8 @@ - + - + char @@ -30,6 +30,7 @@ case_last env_case.xml file containing specification of all supported model grids, domains and mapping files (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_grids_v2.xsd @@ -38,22 +39,25 @@ case_last env_case.xml file containing machine specifications for target model primary component (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_machines.xsd - + char - $CIMEROOT/cime_config/$MODEL/machines/config_compilers.xml + $CIMEROOT/cime_config/$MODEL/machines/config_batch.xml case_last env_case.xml - file containing compiler specifications for target model primary component (for documentation only - DO NOT EDIT) + file containing batch system details for target system (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_batch.xsd - + char - $CIMEROOT/cime_config/$MODEL/machines/config_build.xml + $CIMEROOT/cime_config/$MODEL/machines/config_compilers.xml case_last env_case.xml - file containing build specifications for target model primary component (for documentation only - DO NOT EDIT) + file containing compiler specifications for target model primary component (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_compilers_v2.xsd @@ -93,6 +97,7 @@ case_last env_case.xml file containing specification of all compsets for primary component (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_compsets.xsd @@ -111,6 +116,32 @@ case_last env_case.xml file containing specification of all pe-layouts for primary component (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_pes.xsd + + + + char + + $CIMEROOT/cime_config/cesm/config_archive.xml + $CIMEROOT/driver_cpl/cime_config/config_archive.xml + + $CIMEROOT/components/data_comps/drof/cime_config/config_archive.xml + $CIMEROOT/components/data_comps/datm/cime_config/config_archive.xml + $CIMEROOT/components/data_comps/dice/cime_config/config_archive.xml + $CIMEROOT/components/data_comps/dlnd/cime_config/config_archive.xml + $CIMEROOT/components/data_comps/docn/cime_config/config_archive.xml + $CIMEROOT/components/data_comps/dwav/cime_config/config_archive.xml + + $SRCROOT/components/cam/cime_config/config_archive.xml + $SRCROOT/components/cism/cime_config/config_archive.xml + $SRCROOT/components/clm/cime_config/config_archive.xml + $SRCROOT/components/cice/cime_config/config_archive.xml + $SRCROOT/components/pop/cime_config/config_archive.xml + + case_last + env_case.xml + file containing specification of archive files for each component (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/config_archive.xsd @@ -147,6 +178,7 @@ case_last env_case.xml file containing specification of all system tests for primary component (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/testlist.xsd @@ -188,16 +220,65 @@ directory containing user modifications for primary components (for documentation only - DO NOT EDIT) + + + char + unset + + $CIMEROOT/driver_cpl/cime_config/namelist_definition_modelio.xml + $CIMEROOT/driver_cpl/bld/namelist_files/namelist_definition_drv_flds.xml + $CIMEROOT/driver_cpl/cime_config/namelist_definition_drv.xml + + $CIMEROOT/components/data_comps/drof/cime_config/namelist_definition_drof.xml + $CIMEROOT/components/data_comps/datm/cime_config/namelist_definition_datm.xml + $CIMEROOT/components/data_comps/dice/cime_config/namelist_definition_dice.xml + $CIMEROOT/components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml + $CIMEROOT/components/data_comps/docn/cime_config/namelist_definition_docn.xml + $CIMEROOT/components/data_comps/dwav/cime_config/namelist_definition_dwav.xml + + + + case_last + env_case.xml + file containing namelist_definitions for all components + $CIMEROOT/cime_config/xml_schemas/entry_id_namelist.xsd + + + + char + $CIMEROOT/cime_config/$MODEL/machines/config_lt_archive.xml + case_last + env_case.xml + file containing all lt archive configuration variables (for documentation only - DO NOT EDIT) + + - + char $CIMEROOT/driver_cpl/cime_config/config_component.xml case_last env_case.xml file containing all non-component specific case configuration variables (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd + + + + char + $CIMEROOT/driver_cpl/cime_config/config_component_$MODEL.xml + case_last + env_case.xml + file containing all component specific driver configuration variables (for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd @@ -212,6 +293,7 @@ case_last env_case.xml file containing specification of component specific definitions and values(for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd @@ -227,6 +309,7 @@ case_last env_case.xml file containing specification of component specific definitions and values(for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd @@ -242,6 +325,7 @@ case_last env_case.xml file containing specification of component specific definitions and values(for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd @@ -256,6 +340,7 @@ case_last env_case.xml file containing specification of component specific definitions and values(for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd @@ -272,6 +357,7 @@ case_last env_case.xml file containing specification of component specific definitions and values(for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd @@ -286,13 +372,14 @@ case_last env_case.xml file containing specification of component specific definitions and values(for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd char unset - $SRCROOT/components/ww3/cime_config/config_component.xml + $SRCROOT/components/ww3/cime_config/config_component.xml $CIMEROOT/components/data_comps/dwav/cime_config/config_component.xml $CIMEROOT/components/stub_comps/swav/cime_config/config_component.xml $CIMEROOT/components/xcpl_comps/xwav/cime_config/config_component.xml @@ -300,18 +387,20 @@ case_last env_case.xml file containing specification of component specific definitions and values(for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd char $CIMEROOT/components/stub_comps/sesp/cime_config/config_component.xml + $CIMEROOT/components/data_comps/desp/cime_config/config_component.xml $CIMEROOT/components/stub_comps/sesp/cime_config/config_component.xml case_last env_case.xml file containing specification of component specific definitions and values(for documentation only - DO NOT EDIT) + $CIMEROOT/cime_config/xml_schemas/entry_id.xsd - - + diff --git a/cime/cime_config/cesm/config_grids.xml b/cime/cime_config/cesm/config_grids.xml index 5081b2a389be..183fc54d57f7 100644 --- a/cime/cime_config/cesm/config_grids.xml +++ b/cime/cime_config/cesm/config_grids.xml @@ -1,6 +1,6 @@ - + ========================================= @@ -9,1283 +9,498 @@ The long grid name has the order atm,lnd,ocn/ice,river,mask,glc The following shortname is used a% => atm, l% => lnd, oi% => ocn/ice, r% => river, m% => mask, g% => glc, w% => wav - The notation is + + The notation for the grid longname is a%name_l%name_oi%name_r%name_m%mask_g%name_w%name - Each grid is associated with three required elements and one optional element - longname (a%name_l%name_oi%name_r%name_m%mask_g%name_w%name) - shortname (for backwards compatibility) - alias (even shorter notation than shortname) (optional) - support (Description of the support level for this grid) (optional) - Each grid can also be associated with the following optional attributes - compset (Regular expression for compsets that are required to match for this grid) (optional) + + Supported out of the box grid configurations are given via alias specification in + the file "config_grids.xml". Futhermore, each grid alias can also be associated + with the following optional attributes + compset (Regular expression for compset matches that are required for this grid) + not_compset (Regular expression for compset matches that are not permitted this grid) + + Using the alias and the optional "compset" and "not_compset" attributes a grid longname is created + Note that the mask is for information only - and is not an attribute of the grid + By default, if the mask is not specified below, it will be set to the ocnice grid + And if there is no ocnice grid (such as for single column, the mask is null since it does not mean anything) - - - a%gx1v6_l%gx1v6_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%null - gx1v6_gx1v6 - g16_g16 + + null + null + null + null + rx1 + r05 + r05 + rx1 + r05 + null + gland5UM + gland4 + null + ww3a + ww3a + + + + gx1v6 + gx1v6 + gx1v6 Non-standard grid for testing of the interpolation in DATM rather than coupler - + - - a%01col_l%01col_oi%01col_r%null_m%01col_g%null_w%null - 01col_01col - 1D_1D + + 01col + 01col Non-standard grid for running POP in true 1D mode - - - - CLM_USRDAT - a%CLM_USRDAT_l%CLM_USRDAT_oi%CLM_USRDAT_r%null_m%reg_g%null_w%null - - - - 1x1_numaIA - a%1x1_numaIA_l%1x1_numaIA_oi%1x1_numaIA_r%null_m%reg_g%null_w%null - - - - 1x1_brazil - a%1x1_brazil_l%1x1_brazil_oi%1x1_brazil_r%null_m%reg_g%null_w%null - - - - 1x1_smallvilleIA - a%1x1_smallvilleIA_l%1x1_smallvilleIA_oi%1x1_smallvilleIA_r%null_m%reg_g%null_w%null - - - - 1x1_camdenNJ - a%1x1_camdenNJ_l%1x1_camdenNJ_oi%1x1_camdenNJ_r%null_m%reg_g%null_w%null - - - - 1x1_mexicocityMEX - a%1x1_mexicocityMEX_l%1x1_mexicocityMEX_oi%1x1_mexicocityMEX_r%null_m%reg_g%null_w%null - - - - 1x1_vancouverCAN - a%1x1_vancouverCAN_l%1x1_vancouverCAN_oi%1x1_vancouverCAN_r%null_m%reg_g%null_w%null - - - - 1x1_tropicAtl - a%1x1_tropicAtl_l%1x1_tropicAtl_oi%1x1_tropicAtl_r%null_m%reg_g%null_w%null - - - - 1x1_urbanc_alpha - a%1x1_urbanc_alpha_l%1x1_urbanc_alpha_oi%1x1_urbanc_alpha_r%null_m%reg_g%null_w%null - - - - 5x5_amazon - 5amazon - a%5x5_amazon_l%5x5_amazon_oi%5x5_amazon_r%null_m%reg_g%null_w%null - - - - hcru_hcru - a%360x720cru_l%360x720cru_oi%360x720cru_r%r05_m%360x720cru_g%null_w%null - - - - hcru_hcru - a%360x720cru_l%360x720cru_oi%360x720cru_r%r05_m%360x720cru_g%gland5UM_w%null - - - - hcru_hcru - a%360x720cru_l%360x720cru_oi%360x720cru_r%r05_m%360x720cru_g%gland4_w%null - + + + + CLM_USRDAT + CLM_USRDAT + null + + + + 1x1_numaIA + 1x1_numaIA + null + + + + 1x1_brazil + 1x1_brazil + null + + + + 1x1_smallvilleIA + 1x1_smallvilleIA + null + + + + 1x1_camdenNJ + 1x1_camdenNJ + null + + + + 1x1_mexicocityMEX + 1x1_mexicocityMEX + null + + + + 1x1_vancouverCAN + 1x1_vancouverCAN + null + + + + 1x1_tropicAtl + 1x1_tropicAtl + null + + + + 1x1_urbanc_alpha + 1x1_urbanc_alpha + null + + + + 5x5_amazon + 5x5_amazon + null + + + + 360x720cru + 360x720cru + - - T31_gx3v7 - T31_g37 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland5UM_w%ww3a - - - T31_gx3v7 - T31_g37 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland4_w%ww3a - - - T31_gx3v7 - T31_g37 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland5UM_w%null - - - T31_gx3v7 - T31_g37 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland4_w%null - - - T31_gx3v7 - T31_g37 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%null_w%ww3a - - - T31_gx3v7 - T31_g37 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%null_w%null - - - - - - T31_gx3v7_gland4 - T31_g37_gl4 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland4_w%ww3a - - - T31_gx3v7_gland4 - T31_g37_gl4 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland4_w%null - - - - - - T31_gx3v7_gland10 - T31_g37_gl10 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland10_w%ww3a - - - T31_gx3v7_gland10 - T31_g37_gl10 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland10_w%null - - - - - T31_gx3v7_gland20 - T31_g37_gl20 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland20_w%ww3a - - - T31_gx3v7_gland20 - T31_g37_gl20 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland20_w%null - - - - - - T31_gx3v7_gl5 - T31_g37_gl5 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland5UM_w%ww3a - - - T31_gx3v7_gl5 - T31_g37_gl5 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland5UM_w%null - - - - - - T85_0.9x1.25_tx0.1v2 - T85_f09_t12 - a%T85_l%0.9x1.25_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%ww3a - - - T85_0.9x1.25_tx0.1v2 - T85_f09_t12 - a%T85_l%0.9x1.25_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%null - - - - - - T341_0.23x0.31_tx0.1v2 - T341_f02_t12 - a%T341_l%0.23x0.31_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%ww3a - - - T341_0.23x0.31_tx0.1v2 - T341_f02_t12 - a%T341_l%0.23x0.31_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%null - - - - - T31_T31 - T31_T31 - a%T31_l%T31_oi%T31_r%r05_m%gx3v7_g%null_w%null - - - T31_T31 - T31_T31 - a%T31_l%T31_oi%T31_r%r05_m%gx3v7_g%gland5UM_w%null - - - - - - T31_T31 - T31_T31 - a%T31_l%T31_oi%T31_r%r05_m%gx3v7_g%gland4_w%null - - - - - - T31_T31_gl5 - T31_T31_gl5 - a%T31_l%T31_oi%T31_r%r05_m%gx3v7_g%gland5UM_w%null - - - - - - T42_T42 - T42_T42 - a%T42_l%T42_oi%T42_r%r05_m%usgs_g%null_w%null - - - - - - T85_T85 - T85_T85 - a%T85_l%T85_oi%T85_r%r05_m%usgs_g%null_w%null - - - - - - T62_gx3v7 - T62_g37 - a%T62_l%T62_oi%gx3v7_r%rx1_m%gx3v7_g%null_w%ww3a - - - T62_gx3v7 - T62_g37 - a%T62_l%T62_oi%gx3v7_r%rx1_m%gx3v7_g%null_w%null - - - - - - T62_tx1v1 - T62_s11 - a%T62_l%T62_oi%tx1v1_r%rx1_m%tx1v1_g%null_w%ww3a - - - T62_tx1v1 - T62_s11 - a%T62_l%T62_oi%tx1v1_r%rx1_m%tx1v1_g%null_w%null - - - - - - T62_tx0.1v2 - T62_t12 - a%T62_l%T62_oi%tx0.1v2_r%rx1_m%tx0.1v2_g%null_w%ww3a - - - T62_tx0.1v2 - T62_t12 - a%T62_l%T62_oi%tx0.1v2_r%rx1_m%tx0.1v2_g%null_w%null - - - - - - T62_gx1v6 - T62_g16 - a%T62_l%T62_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%ww3a - - - T62_gx1v6 - T62_g16 - a%T62_l%T62_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%null - - - - - - T62_mpas120 - T62_m120 - a%T62_l%T62_oi%mpas120_r%rx1_m%mpas120_g%null_w%ww3a - - - T62_mpas120 - T62_m120 - a%T62_l%T62_oi%mpas120_r%rx1_m%mpas120_g%null_w%null - - - - - - T62_oQU120 - T62_oQU120 - a%T62_l%T62_oi%oQU120_r%rx1_m%oQU120_g%null_w%null - - - + + T31 + T31 + gx3v7 + + + + T31 + T31 + gx3v7 + gland4 + + + + T31 + T31 + gx3v7 + gland10 + + + + T31 + T31 + gx3v7 + gland20 + + + + T31 + T31 + gx3v7 + gland5UM + + + + T42 + T42 + T42 + usgs + + + + T85 + T85 + T85 + usgs + + + + T85 + 0.9x1.25 + tx0.1v2 + + + + T341 + 0.23x0.31 + tx0.1v2 + + + + T62 + T62 + gx3v7 + + + + T62 + T62 + tx1v1 + + + + T62 + T62 + tx0.1v2 + + + + T62 + T62 + gx1v6 + + + + T62 + T62 + oQU120 + - - 0.23x0.31_gx1v6 - f02_g16 - a%0.23x0.31_l%0.23x0.31_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - 0.23x0.31_gx1v6 - f02_g16 - a%0.23x0.31_l%0.23x0.31_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null - - - - - - 0.23x0.31_tx0.1v2 - f02_t12 - a%0.23x0.31_l%0.23x0.31_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%ww3a - - - 0.23x0.31_tx0.1v2 - f02_t12 - a%0.23x0.31_l%0.23x0.31_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%null - - - - - 0.47x0.63_gx1v6 - f05_g16 - a%0.47x0.63_l%0.47x0.63_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - 0.47x0.63_gx1v6 - f05_g16 - a%0.47x0.63_l%0.47x0.63_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null - - - - - 0.47x0.63_tx0.1v2 - f05_t12 - a%0.47x0.63_l%0.47x0.63_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%ww3a - - - 0.47x0.63_tx0.1v2 - f05_t12 - a%0.47x0.63_l%0.47x0.63_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%null - - - - - - 0.9x1.25_gx1v6 - f09_g16 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - - - 0.9x1.25_gx1v6 - f09_g16 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%ww3a - - - 0.9x1.25_gx1v6 - f09_g16 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%null - - - 0.9x1.25_gx1v6 - f09_g16 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%null - - - 0.9x1.25_gx1v6 - f09_g16 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - 0.9x1.25_gx1v6 - f09_g16 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null - - - - - - 0.9x1.25_gx1v6 - f09_g16 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - 0.9x1.25_gx1v6 - f09_g16 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null - - - - - - 0.9x1.25_gx1v6_gland4 - f09_g16_gl4 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%ww3a - - - 0.9x1.25_gx1v6_gland4 - f09_g16_gl4 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%null - - - - - - 0.9x1.25_gx1v6_gland10 - f09_g16_gl10 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland10_w%ww3a - - - 0.9x1.25_gx1v6_gland10 - f09_g16_gl10 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland10_w%null - - - - - - 0.9x1.25_gx1v6_gland20 - f09_g16_gl20 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland20_w%ww3a - - - 0.9x1.25_gx1v6_gland20 - f09_g16_gl20 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland20_w%null - - - - - - 0.9x1.25_gx1v6_gl5 - f09_g16_gl5 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - - - 0.9x1.25_gx1v6_gl5 - f09_g16_gl5 - a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%null - - - - - - 1.9x2.5_gx1v6 - f19_g16 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - - - 1.9x2.5_gx1v6 - f19_g16 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%null - - - 1.9x2.5_gx1v6 - f19_g16 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%ww3a - - - 1.9x2.5_gx1v6 - f19_g16 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%null - - - 1.9x2.5_gx1v6 - f19_g16 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - 1.9x2.5_gx1v6 - f19_g16 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null - - - 1.9x2.5_gx1v6 - f19_g16 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - 1.9x2.5_gx1v6 - f19_g16 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null - - - - - - 1.9x2.5_gx1v6_gland4 - f19_g16_gl4 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%ww3a - - - 1.9x2.5_gx1v6_gland4 - f19_g16_gl4 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%null - - - - - 1.9x2.5_gx1v6_gl5 - f19_g16_gl5 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - - - 1.9x2.5_gx1v6_gl5 - f19_g16_gl5 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%null - - - - 1.9x2.5_gx1v6_r01 - f19_g16_r01 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r01_m%gx1v6_g%null_w%ww3a - Non-standard grid, for testing high resolution RTM grid - - - 1.9x2.5_gx1v6_r01 - f19_g16_r01 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r01_m%gx1v6_g%null_w%null - Non-standard grid, for testing high resolution RTM grid - - - - - - 4x5_gx3v7 - f45_g37 - a%4x5_l%4x5_oi%gx3v7_r%r05_m%gx3v7_g%gland5UM_w%ww3a - - - 4x5_gx3v7 - f45_g37 - a%4x5_l%4x5_oi%gx3v7_r%r05_m%gx3v7_g%gland4_w%ww3a - - - 4x5_gx3v7 - f45_g37 - a%4x5_l%4x5_oi%gx3v7_r%r05_m%gx3v7_g%gland5UM_w%null - - - 4x5_gx3v7 - f45_g37 - a%4x5_l%4x5_oi%gx3v7_r%r05_m%gx3v7_g%gland4_w%null - - - 4x5_gx3v7 - f45_g37 - a%4x5_l%4x5_oi%gx3v7_r%r05_m%gx3v7_g%null_w%ww3a - - - 4x5_gx3v7 - f45_g37 - a%4x5_l%4x5_oi%gx3v7_r%r05_m%gx3v7_g%null_w%null - - - - - - 0.23x0.31_0.23x0.31 - f02_f02 - a%0.23x0.31_l%0.23x0.31_oi%0.23x0.31_r%r05_m%gx1v6_g%null_w%null - - - - - - 0.9x1.25_0.9x1.25 - f09_f09 - a%0.9x1.25_l%0.9x1.25_oi%0.9x1.25_r%r05_m%gx1v6_g%null_w%null - - - 0.9x1.25_0.9x1.25 - f09_f09 - a%0.9x1.25_l%0.9x1.25_oi%0.9x1.25_r%r05_m%gx1v6_g%gland5UM_w%null - - - 0.9x1.25_0.9x1.25 - f09_f09 - a%0.9x1.25_l%0.9x1.25_oi%0.9x1.25_r%r05_m%gx1v6_g%gland4_w%null - - - 0.9x1.25_0.9x1.25_gl5 - f09_f09_gl5 - a%0.9x1.25_l%0.9x1.25_oi%0.9x1.25_r%r05_m%gx1v6_g%gland5UM_w%null - - - - - 1.9x2.5_1.9x2.5 - f19_f19 - a%1.9x2.5_l%1.9x2.5_oi%1.9x2.5_r%r05_m%gx1v6_g%gland5UM_w%null - - - 1.9x2.5_1.9x2.5 - f19_f19 - a%1.9x2.5_l%1.9x2.5_oi%1.9x2.5_r%r05_m%gx1v6_g%gland4_w%null - - - 1.9x2.5_1.9x2.5 - f19_f19 - a%1.9x2.5_l%1.9x2.5_oi%1.9x2.5_r%r05_m%gx1v6_g%null_w%null - - - - - 1.9x2.5_1.9x2.5_gland10 - f19_f19_gl10 - a%1.9x2.5_l%1.9x2.5_oi%1.9x2.5_r%r05_m%gx1v6_g%gland10_w%null - - - - 1.9x2.5_1.9x2.5_gl5 - f19_f19_gl5 - a%1.9x2.5_l%1.9x2.5_oi%1.9x2.5_r%r05_m%gx1v6_g%gland5UM_w%null - - - - 2.5x3.33_2.5x3.33 - f25_f25 - a%2.5x3.33_l%2.5x3.33_oi%2.5x3.33_r%r05_m%gx1v6_g%null_w%null - - - - 4x5_4x5 - f45_f45 - a%4x5_l%4x5_oi%4x5_r%r05_m%gx3v7_g%null_w%null - - - - 4x5_4x5 - f45_f45 - a%4x5_l%4x5_oi%4x5_r%r05_m%gx3v7_g%gland5UM_w%null - - - 4x5_4x5 - f45_f45 - a%4x5_l%4x5_oi%4x5_r%r05_m%gx3v7_g%gland4_w%null - - - - 10x15_10x15 - f10_f10 - a%10x15_l%10x15_oi%10x15_r%r05_m%usgs_g%null_w%null - - - 10x15_10x15 - f10_f10 - a%10x15_l%10x15_oi%10x15_r%r05_m%usgs_g%gland5UM_w%null - - - 10x15_10x15 - f10_f10 - a%10x15_l%10x15_oi%10x15_r%r05_m%usgs_g%gland4_w%null - + + 0.23x0.31 + 0.23x0.31 + gx1v6 + + + + 0.23x0.31 + 0.23x0.31 + tx0.1v2 + + + + 0.47x0.63 + 0.47x0.63 + gx1v6 + + + + 0.47x0.63 + 0.47x0.63 + tx0.1v2 + + + + 0.9x1.25 + 0.9x1.25 + gx1v6 + + + + 0.9x1.25 + 0.9x1.25 + gx1v6 + gland4 + + + + 0.9x1.25 + 0.9x1.25 + gx1v6 + gland10 + + + + 0.9x1.25 + 0.9x1.25 + gx1v6 + gland20 + + + + 0.9x1.25 + 0.9x1.25 + gx1v6 + gland5UM + + + + 0.9x1.25 + 0.9x1.25 + 0.9x1.25 + gx1v6 + + + + 0.9x1.25 + 0.9x1.25 + 0.9x1.25 + gland5UM + gx1v6 + + + + 1.9x2.5 + 1.9x2.5 + gx1v6 + + + + 1.9x2.5 + 1.9x2.5 + gx1v6 + r01 + gx1v6 + + + + + + 1.9x2.5 + 1.9x2.5 + gx1v6 + gland4 + + + + 1.9x2.5 + 1.9x2.5 + gx1v6 + gland5UM + + + + 1.9x2.5 + 1.9x2.5 + 1.9x2.5 + gland5UM + gx1v6 + + + + 1.9x2.5 + 1.9x2.5 + 1.9x2.5 + gx1v6 + + + + 1.9x2.5 + 1.9x2.5 + 1.9x2.5 + gland10 + gx1v6 + + + + 4x5 + 4x5 + gx3v7 + + + + 0.23x0.31 + 0.23x0.31 + 0.23x0.31 + gx1v6 + + + + 2.5x3.33 + 2.5x3.33 + 2.5x3.33 + gx1v6 + + + + 4x5 + 4x5 + 4x5 + gx3v7 + + + + 10x15 + 10x15 + 10x15 + usgs + - - - ne16np4_gx3v7 - ne16_g37 - a%ne16np4_l%ne16np4_oi%gx3v7_r%r05_m%gx3v7_g%gland5UM_w%ww3a - - - ne16np4_gx3v7 - ne16_g37 - a%ne16np4_l%ne16np4_oi%gx3v7_r%r05_m%gx3v7_g%gland4_w%ww3a - - - ne16np4_gx3v7 - ne16_g37 - a%ne16np4_l%ne16np4_oi%gx3v7_r%r05_m%gx3v7_g%null_w%ww3a - - - ne16np4_gx3v7 - ne16_g37 - a%ne16np4_l%ne16np4_oi%gx3v7_r%r05_m%gx3v7_g%gland5UM_w%null - - - ne16np4_gx3v7 - ne16_g37 - a%ne16np4_l%ne16np4_oi%gx3v7_r%r05_m%gx3v7_g%gland4_w%null - - - ne16np4_gx3v7 - ne16_g37 - a%ne16np4_l%ne16np4_oi%gx3v7_r%r05_m%gx3v7_g%null_w%null - - - - - - ne30np4_gx1v6 - ne30_g16 - a%ne30np4_l%ne30np4_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - - - ne30np4_gx1v6 - ne30_g16 - a%ne30np4_l%ne30np4_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%ww3a - - - ne30np4_gx1v6 - ne30_g16 - a%ne30np4_l%ne30np4_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%null - - - ne30np4_gx1v6 - ne30_g16 - a%ne30np4_l%ne30np4_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%null - - - ne30np4_gx1v6 - ne30_g16 - a%ne30np4_l%ne30np4_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - ne30np4_gx1v6 - ne30_g16 - a%ne30np4_l%ne30np4_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null - - - - - - ne30np4_1.9x2.5_gx1v6 - ne30_f19_g16 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - For testing tri-grid - - - ne30np4_1.9x2.5_gx1v6 - ne30_f19_g16 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%ww3a - For testing tri-grid - - - ne30np4_1.9x2.5_gx1v6 - ne30_f19_g16 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%null - For testing tri-grid - - - ne30np4_1.9x2.5_gx1v6 - ne30_f19_g16 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%null + + ne16np4 + ne16np4 + gx3v7 + + + + ne30np4 + ne30np4 + gx1v6 + + + + ne30np4 + 1.9x2.5 + gx1v6 For testing tri-grid - - - ne30np4_1.9x2.5_gx1v6 - ne30_f19_g16 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - For testing tri-grid - - - ne30np4_1.9x2.5_gx1v6 - ne30_f19_g16 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null - For testing tri-grid - - + - - - ne30np4_0.9x1.25_gx1v6 - ne30_f09_g16 - a%ne30np4_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - For testing tri-grid - - - ne30np4_0.9x1.25_gx1v6 - ne30_f09_g16 - a%ne30np4_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null + + ne30np4 + 0.9x1.25 + gx1v6 For testing tri-grid - - - - - - - ne30np4_0.9x1.25_gx1v6 - ne30_f09_g16 - a%ne30np4_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - For testing tri-grid - - - ne30np4_0.9x1.25_gx1v6 - ne30_f09_g16 - a%ne30np4_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%ww3a - For testing tri-grid - - - ne30np4_0.9x1.25_gx1v6 - ne30_f09_g16 - a%ne30np4_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%null - For testing tri-grid - - - ne30np4_0.9x1.25_gx1v6 - ne30_f09_g16 - a%ne30np4_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%null - For testing tri-grid - - - ne60np4_gx1v6 - ne60_g16 - a%ne60np4_l%ne60np4_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - ne60np4_gx1v6 - ne60_g16 - a%ne60np4_l%ne60np4_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null - - - - - - - ne120np4_gx1v6 - ne120_g16 - a%ne120np4_l%ne120np4_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - - - ne120np4_gx1v6 - ne120_g16 - a%ne120np4_l%ne120np4_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%ww3a - - - ne120np4_gx1v6 - ne120_g16 - a%ne120np4_l%ne120np4_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%null - - - ne120np4_gx1v6 - ne120_g16 - a%ne120np4_l%ne120np4_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%null - - - ne120np4_gx1v6 - ne120_g16 - a%ne120np4_l%ne120np4_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - ne120np4_gx1v6 - ne120_g16 - a%ne120np4_l%ne120np4_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null - - - - - - - ne120np4_tx0.1v2 - ne120_t12 - a%ne120np4_l%ne120np4_oi%tx0.1v2_r%r05_m%tx0.1v2_g%gland5UM_w%ww3a - - - ne120np4_tx0.1v2 - ne120_t12 - a%ne120np4_l%ne120np4_oi%tx0.1v2_r%r05_m%tx0.1v2_g%gland4_w%ww3a - - - ne120np4_tx0.1v2 - ne120_t12 - a%ne120np4_l%ne120np4_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%ww3a - - - ne120np4_tx0.1v2 - ne120_t12 - a%ne120np4_l%ne120np4_oi%tx0.1v2_r%r05_m%tx0.1v2_g%gland5UM_w%null - - - ne120np4_tx0.1v2 - ne120_t12 - a%ne120np4_l%ne120np4_oi%tx0.1v2_r%r05_m%tx0.1v2_g%gland4_w%null - - - ne120np4_tx0.1v2 - ne120_t12 - a%ne120np4_l%ne120np4_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%null - - - - - - ne240np4_0.23x0.31_gx1v6 - ne240_f02_g16 - a%ne240np4_l%0.23x0.31_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - For testing high resolution tri-grid - - - ne240np4_0.23x0.31_gx1v6 - ne240_f02_g16 - a%ne240np4_l%0.23x0.31_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null + + + + ne60np4 + ne60np4 + gx1v6 + + + + ne120np4 + ne120np4 + gx1v6 + + + + ne120np4 + ne120np4 + tx0.1v2 + + + + ne240np4 + 0.23x0.31 + gx1v6 For testing high resolution tri-grid - - - - - - ne240np4_tx0.1v2 - ne240_t12 - a%ne240np4_l%ne240np4_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%ww3a - - - ne240np4_tx0.1v2 - ne240_t12 - a%ne240np4_l%ne240np4_oi%tx0.1v2_r%r05_m%tx0.1v2_g%null_w%null - - - - - - ne16np4_ne16np4 - ne16_ne16 - a%ne16np4_l%ne16np4_oi%ne16np4_r%r05_m%gx3v7_g%null_w%null - - - ne16np4_ne16np4 - ne16_ne16 - a%ne16np4_l%ne16np4_oi%ne16np4_r%r05_m%gx3v7_g%gland5UM_w%null - - - ne16np4_ne16np4 - ne16_ne16 - a%ne16np4_l%ne16np4_oi%ne16np4_r%r05_m%gx3v7_g%gland4_w%null - - - - - - ne30np4_ne30np4 - ne30_ne30 - a%ne30np4_l%ne30np4_oi%ne30np4_r%r05_m%gx1v6_g%gland5UM_w%null - - - ne30np4_ne30np4 - ne30_ne30 - a%ne30np4_l%ne30np4_oi%ne30np4_r%r05_m%gx1v6_g%gland4_w%null - - - ne30np4_ne30np4 - ne30_ne30 - a%ne30np4_l%ne30np4_oi%ne30np4_r%r05_m%gx1v6_g%null_w%null - - - - - - ne60np4_ne60np4 - ne60_ne60 - a%ne60np4_l%ne60np4_oi%ne60np4_r%r05_m%gx1v6_g%null_w%null - - - - - - ne120np4_ne120np4 - ne120_ne120 - a%ne120np4_l%ne120np4_oi%ne120np4_r%r05_m%gx1v6_g%gland5UM_w%null - - - ne120np4_ne120np4 - ne120_ne120 - a%ne120np4_l%ne120np4_oi%ne120np4_r%r05_m%gx1v6_g%gland4_w%null - - - ne120np4_ne120np4 - ne120_ne120 - a%ne120np4_l%ne120np4_oi%ne120np4_r%r05_m%gx1v6_g%null_w%null - - - - - - ne240np4_ne240np4 - ne240_ne240 - a%ne240np4_l%ne240np4_oi%ne240np4_r%null_m%gx1v6_g%null_w%null - - + + + + ne240np4 + ne240np4 + tx0.1v2 + + + + ne16np4 + ne16np4 + ne16np4 + gx3v7 + + + + ne30np4 + ne30np4 + ne30np4 + gx1v6 + + + + ne60np4 + ne60np4 + ne60np4 + gx1v6 + + + + ne120np4 + ne120np4 + ne120np4 + gx1v6 + + + + ne240np4 + ne240np4 + ne240np4 + gx1v6 + - - - T31_gx3v7_rx1 - T31_g37_rx1 - a%T31_l%T31_oi%gx3v7_r%rx1_m%gx3v7_g%null_w%ww3a - - - T31_gx3v7_rx1 - T31_g37_rx1 - a%T31_l%T31_oi%gx3v7_r%rx1_m%gx3v7_g%null_w%null - - - T31_gx3v7_rx1 - T31_g37_rx1 - a%T31_l%T31_oi%gx3v7_r%rx1_m%gx3v7_g%gland5UM_w%ww3a - - - T31_gx3v7_rx1 - T31_g37_rx1 - a%T31_l%T31_oi%gx3v7_r%rx1_m%gx3v7_g%gland4_w%ww3a - - - T31_gx3v7_rx1 - T31_g37_rx1 - a%T31_l%T31_oi%gx3v7_r%rx1_m%gx3v7_g%gland5UM_w%null - - - T31_gx3v7_rx1 - T31_g37_rx1 - a%T31_l%T31_oi%gx3v7_r%rx1_m%gx3v7_g%gland4_w%null - - - - - - 4x5_gx3v7_rx1 - f45_g37_rx1 - a%4x5_l%4x5_oi%gx3v7_r%rx1_m%gx3v7_g%null_w%ww3a - - - 4x5_gx3v7_rx1 - f45_g37_rx1 - a%4x5_l%4x5_oi%gx3v7_r%rx1_m%gx3v7_g%gland5UM_w%ww3a - - - 4x5_gx3v7_rx1 - f45_g37_rx1 - a%4x5_l%4x5_oi%gx3v7_r%rx1_m%gx3v7_g%gland4_w%ww3a - - - 4x5_gx3v7_rx1 - f45_g37_rx1 - a%4x5_l%4x5_oi%gx3v7_r%rx1_m%gx3v7_g%null_w%null - - - 4x5_gx3v7_rx1 - f45_g37_rx1 - a%4x5_l%4x5_oi%gx3v7_r%rx1_m%gx3v7_g%gland5UM_w%null - - - 4x5_gx3v7_rx1 - f45_g37_rx1 - a%4x5_l%4x5_oi%gx3v7_r%rx1_m%gx3v7_g%gland4_w%null - - - - - - 1.9x2.5_gx1v6_rx1 - f19_g16_rx1 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%ww3a - - - 1.9x2.5_gx1v6_rx1 - f19_g16_rx1 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%gland5UM_w%ww3a - - - 1.9x2.5_gx1v6_rx1 - f19_g16_rx1 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%gland4_w%ww3a - - - 1.9x2.5_gx1v6_rx1 - f19_g16_rx1 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%null - - - 1.9x2.5_gx1v6_rx1 - f19_g16_rx1 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%gland5UM_w%null - - - 1.9x2.5_gx1v6_rx1 - f19_g16_rx1 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%gland4_w%null - - - - - - ne30np4_gx1v6_rx1 - ne30_g16_rx1 - a%ne30np4_l%ne30np4_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%ww3a - - - ne30np4_gx1v6_rx1 - ne30_g16_rx1 - a%ne30np4_l%ne30np4_oi%gx1v6_r%rx1_m%gx1v6_g%gland5UM_w%ww3a - - - ne30np4_gx1v6_rx1 - ne30_g16_rx1 - a%ne30np4_l%ne30np4_oi%gx1v6_r%rx1_m%gx1v6_g%gland4_w%ww3a - - - ne30np4_gx1v6_rx1 - ne30_g16_rx1 - a%ne30np4_l%ne30np4_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%null - - - ne30np4_gx1v6_rx1 - ne30_g16_rx1 - a%ne30np4_l%ne30np4_oi%gx1v6_r%rx1_m%gx1v6_g%gland5UM_w%null - - - ne30np4_gx1v6_rx1 - ne30_g16_rx1 - a%ne30np4_l%ne30np4_oi%gx1v6_r%rx1_m%gx1v6_g%gland4_w%null - - - - - - ne30np4_1.9x2.5_gx1v6_rx1 - ne30_f19_g16_rx1 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%ww3a - - - ne30np4_1.9x2.5_gx1v6_rx1 - ne30_f19_g16_rx1 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%gland5UM_w%ww3a - - - ne30np4_1.9x2.5_gx1v6_rx1 - ne30_f19_g16_rx1 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%gland4_w%ww3a - - - ne30np4_1.9x2.5_gx1v6_rx1 - ne30_f19_g16_rx1 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%null - - - ne30np4_1.9x2.5_gx1v6_rx1 - ne30_f19_g16_rx1 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%gland5UM_w%null - - - ne30np4_1.9x2.5_gx1v6_rx1 - ne30_f19_g16_rx1 - a%ne30np4_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%gland4_w%null - - - - - - - ww3a_ww3a - ww3a_ww3a - a%ww3a_l%ww3a_oi%ww3a_r%null_m%ww3a_g%null_w%ww3a - - - - - - 1.9x2.5_gx1v6_r05_ww3a - f19_g16_r05_ww3 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - 1.9x2.5_gx1v6_r05_ww3a - f19_g16_r05_ww3 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - - - 1.9x2.5_gx1v6_r05_ww3a - f19_g16_r05_ww3 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%ww3a - - - - - 0.9x1.25_gx1v6_r05_ww3a - f09_g16_r05_ww3 - a%0.9x1.25_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%null_w%ww3a - - - 0.9x1.25_gx1v6_r05_ww3a - f09_g16_r05_ww3 - a%0.9x1.25_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland5UM_w%ww3a - - - 0.9x1.25_gx1v6_r05_ww3a - f09_g16_r05_ww3 - a%0.9x1.25_l%1.9x2.5_oi%gx1v6_r%r05_m%gx1v6_g%gland4_w%ww3a - - - - - T31_gx3v7_r05_ww3a - T31_g37_r05_ww3 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%null_w%ww3a - - - T31_gx3v7_r05_ww3a - T31_g37_r05_ww3 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland5UM_w%ww3a - - - T31_gx3v7_r05_ww3a - T31_g37_r05_ww3 - a%T31_l%T31_oi%gx3v7_r%r05_m%gx3v7_g%gland4_w%ww3a - - - - - 1.9x2.5_gx1v6_rx1_ww3a - f19_g16_rx1_ww3 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%ww3a - - - 1.9x2.5_gx1v6_rx1_ww3a - f19_g16_rx1_ww3 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%gland5UM_w%ww3a - - - 1.9x2.5_gx1v6_rx1_ww3a - f19_g16_rx1_ww3 - a%1.9x2.5_l%1.9x2.5_oi%gx1v6_r%rx1_m%gx1v6_g%gland4_w%ww3a - - - - - T31_gx3v7_rx1_ww3a - T31_g37_rx1_ww3 - a%T31_l%T31_oi%gx3v7_r%rx1_m%gx3v7_g%null_w%ww3a - - - T31_gx3v7_rx1_ww3a - T31_g37_rx1_ww3 - a%T31_l%T31_oi%gx3v7_r%rx1_m%gx3v7_g%gland5UM_w%ww3a - - - T31_gx3v7_rx1_ww3a - T31_g37_rx1_ww3 - a%T31_l%T31_oi%gx3v7_r%rx1_m%gx3v7_g%gland4_w%ww3a - - - - - T62_gx1v6_rx1_ww3a - T62_g16_rx1_ww3 - a%T62_l%T62_oi%gx1v6_r%rx1_m%gx1v6_g%null_w%ww3a - + + T31 + T31 + gx3v7 + + + + 4x5 + 4x5 + gx3v7 + + + + 1.9x2.5 + 1.9x2.5 + gx1v6 + + + + ne30np4 + ne30np4 + gx1v6 + + + + ww3a + ww3a + ww3a + @@ -1295,19 +510,10 @@ - - regional grid mask: - Only for DATM/CLM compsets - - - - - USGS mask - - 0 0 + unset null is no grid: @@ -1320,137 +526,116 @@ 1 1 - domain.lnd.${CLM_USRDAT_NAME}_navy.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.${CLM_USRDAT_NAME}_navy.nc user specified domain - only valid for DATM/CLM compset 1 1 - domain.lnd.1x1pt-numaIA_navy.110106.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.1x1pt-numaIA_navy.110106.nc 1x1 Numa Iowa -- only valid for DATM/CLM compset 1 1 - domain.lnd.1x1pt-brazil_navy.090715.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.1x1pt-brazil_navy.090715.nc 1x1 Brazil -- only valid for DATM/CLM compset 1 1 - domain.lnd.1x1pt-smallvilleIA_test.110106.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.1x1pt-smallvilleIA_test.110106.nc 1x1 Smallville Iowa Crop Test Case -- only valid for DATM/CLM compset 1 1 - domain.lnd.1x1pt-camdenNJ_navy.111004.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.1x1pt-camdenNJ_navy.111004.nc 1x1 Camden New Jersey -- only valid for DATM/CLM compset 1 1 - domain.lnd.1x1pt-mexicocityMEX_navy.090715.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.1x1pt-mexicocityMEX_navy.090715.nc 1x1 Mexico City Mexico -- only valid for DATM/CLM compset 1 1 - domain.lnd.1x1pt-vancouverCAN_navy.090715.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.1x1pt-vancouverCAN_navy.090715.nc 1x1 Vancouver Canada -- only valid for DATM/CLM compset 1 1 - domain.lnd.1x1pt-tropicAtl_test.111004.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.1x1pt-tropicAtl_test.111004.nc 1x1 Tropical Atlantic Test Case -- only valid for DATM/CLM compset 1 1 - domain.lnd.1x1pt-urbanc_alpha_test.110201.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.1x1pt-urbanc_alpha_test.110201.nc 1x1 Urban C Alpha Test Case -- only valid for DATM/CLM compset 1 1 - domain.lnd.5x5pt-amazon_navy.090715.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.5x5pt-amazon_navy.090715.nc 5x5 Amazon regional case -- only valid for DATM/CLM compset 720 360 - domain.lnd.360x720_cruncep.100429.nc - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.360x720_cruncep.100429.nc Exact half-degree CRUNCEP datm forcing grid with CRUNCEP land-mask -- only valid for DATM/CLM compset 1152 768 - domain.lnd.fv0.23x0.31_gx1v6.100517.nc - domain.ocn.0.23x0.31_gx1v6_101108.nc - domain.lnd.fv0.23x0.31_tx0.1v2_070929.nc - + domain.lnd.fv0.23x0.31_gx1v6.100517.nc + domain.ocn.0.23x0.31_gx1v6_101108.nc 0.23x0.31 is FV 1/4-deg grid: 576 384 - domain.lnd.fv0.47x0.63_gx1v6.090407.nc - domain.ocn.0.47x0.63_gx1v6_090408.nc - domain.lnd.fv0.47x0.63_tx0.1v2_070929.nc - + domain.lnd.fv0.47x0.63_gx1v6.090407.nc + domain.ocn.0.47x0.63_gx1v6_090408.nc 0.47x0.63 is FV 1/2-deg grid: 288 192 - domain.lnd.fv0.9x1.25_gx1v6.090309.nc - domain.ocn.0.9x1.25_gx1v6_090403.nc - domain.lnd.fv0.9x1.25_mp120v1.111018.nc - domain.lnd.fv0.9x1.25_tx0.1v2_070928.nc - + domain.lnd.fv0.9x1.25_gx1v6.090309.nc + domain.ocn.0.9x1.25_gx1v6_090403.nc 0.9x1.25 is FV 1-deg grid: 144 96 - domain.lnd.fv1.9x2.5_gx1v6.090206.nc - domain.ocn.1.9x2.5_gx1v6_090403.nc - domain.lnd.fv1.9x2.5_tx1v1_090713.nc + domain.lnd.fv1.9x2.5_gx1v6.090206.nc + domain.ocn.1.9x2.5_gx1v6_090403.nc 1.9x2.5 is FV 2-deg grid: 72 46 - domain.lnd.fv4x5_gx3v7.091218.nc - domain.ocn.4x5_gx3v7_100120.nc + domain.lnd.fv4x5_gx3v7.091218.nc + domain.ocn.4x5_gx3v7_100120.nc 4x5 is FV 4-deg grid: 108 72 - domain.lnd.fv2.5x3.33_gx3v7.110223.nc - domain.ocn.fv2.5x3.33_gx3v7_110223.nc + domain.lnd.fv2.5x3.33_gx3v7.110223.nc + domain.ocn.fv2.5x3.33_gx3v7_110223.nc 2.5x3.33 is FV 3-deg grid: 24 19 - domain.lnd.fv10x15_USGS.110713.nc - domain.camocn.10x15_USGS_070807.nc - $DIN_LOC_ROOT/share/domains/domain.clm - $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.fv10x15_USGS.110713.nc + $DIN_LOC_ROOT/share/domains/domain.clm/domain.camocn.10x15_USGS_070807.nc 10x15 is FV 10-deg grid: For low resolution testing @@ -1459,7 +644,7 @@ 1024 512 - domain.lnd.T341_gx1v6.111226.nc + domain.lnd.T341_gx1v6.111226.nc T341 is Gaussian grid: Backward compatible for very high resolution Spectral-dycore experiments @@ -1467,144 +652,123 @@ 256 128 - domain.lnd.T85_gx1v4.060403.nc - domain.lnd.T85_gx1v4.060403.nc + domain.lnd.T85_gx1v4.060403.nc + domain.lnd.T85_gx1v4.060403.nc T85 is Gaussian grid: Backward compatible for high resolution Spectral-dycore experiments 192 96 - - domain.lnd.T62_gx1v6.090320.nc - domain.lnd.T62_gx3v7.090911.nc - domain.lnd.T62_tx1v1.090122.nc - domain.lnd.T62_tx0.1v2_090623.nc - domain.lnd.T62_mpas120.121116.nc - domain.lnd.T62_oQU120.160325.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.T62_gx1v6.090320.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.T62_gx3v7.090911.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.T62_tx1v1.090122.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.T62_tx0.1v2_090623.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.T62_oQU120.160325.nc T62 is Gaussian grid: - - 128 64 - domain.lnd.T42_USGS.111004.nc - domain.camocn.64x128_USGS_070807.nc - $DIN_LOC_ROOT/share/domains/domain.clm - $DIN_LOC_ROOT/atm/cam/ocnfrac - T42 is Gaussian grid: - - 96 48 - domain.lnd.T31_gx3v7.090928.nc - domain.ocn.48x96_gx3v7_100114.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.T31_gx3v7.090928.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.48x96_gx3v7_100114.nc T31 is Gaussian grid: + + 128 64 + $DIN_LOC_ROOT/share/domains/domain.clm/domain.lnd.T42_USGS.111004.nc + $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.64x128_USGS_070807.nc + T42 is Gaussian grid: + + 13826 1 - domain.lnd.ne16np4_gx3v7.120406.nc - domain.ocn.ne16np4_gx3v7.121113.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.ne16np4_gx3v7.120406.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.ne16np4_gx3v7.121113.nc ne16np4 is Spectral Elem 2-deg grid: For low resolution spectral element grid testing 48602 1 - domain.lnd.ne30np4_gx1v6.110905.nc - domain.ocn.ne30np4_gx1v6_110217.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.ne30np4_gx1v6.110905.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.ne30np4_gx1v6_110217.nc ne30np4 is Spectral Elem 1-deg grid: 194402 1 - domain.lnd.ne60np4_gx1v6.120406.nc - domain.ocn.ne60np4_gx1v6.121113.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.ne60np4_gx1v6.120406.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.ne60np4_gx1v6.121113.nc ne60np4 is Spectral Elem 1/2-deg grid: 777602 1 - domain.lnd.ne120np4_gx1v6.110502.nc - domain.ocn.ne120np4_gx1v6.121113.nc - domain.lnd.ne120np4_tx01v2.120412.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.ne120np4_gx1v6.110502.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.ne120np4_gx1v6.121113.nc ne120np4 is Spectral Elem 1/4-deg grid: 3110402 1 - domain.lnd.ne240np4_gx1v6.111226.nc - domain.ocn.ne240np4_gx1v6.111226.nc + $DIN_LOC_ROOT/share/domains/domain.lnd.ne240np4_gx1v6.111226.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.ne240np4_gx1v6.111226.nc ne240np4 is Spectral Elem 1/8-deg grid: Experimental for very high resolution experiments 320 384 - domain.ocn.gx1v6.090206.nc - domain.ocn.gx1v6.090206.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.gx1v6.090206.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.gx1v6.090206.nc gx1v6 is displaced Greenland pole v6 1-deg grid: 100 116 - domain.ocn.gx3v7.120323.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.gx3v7.120323.nc gx3v7 is displaced Greenland pole v7 3-deg grid: 3600 2400 - domain.ocn.tx0.1v2_090218.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.tx0.1v2_090218.nc tx0.1v2 is tripole v2 1/10-deg grid: Experimental for high resolution experiments 360 240 - domain.ocn.tx1v1.090122.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.tx1v1.090122.nc tripole v1 1-deg grid: testing proxy for high-res tripole ocean grids- do not use for scientific experiments Experimental tripole ocean grid - - 28574 1 - domain.ocn.mpas120.121116.nc - mpas120 is a MPAS ocean grid that is roughly 1 degree resolution: - Experimental, under development - - 360 180 + rx1 is 1 degree river routing grid (only valid for DROF): Can only be used by DROF 720 360 + r05 is 1/2 degree river routing grid: 3600 1800 + r01 is 1/10 degree river routing grid: For experimental use by high resolution grids - - 28993 1 - mp120v1 is a MPAS ocean grid that is roughly 1 degree resolution: - Experimental, under development - - - - 139734 1 - mp120r10v1 is a MPAS grid: - Experimental, under development - - - 28574 1 - domain.ocn.oQU120.160325.nc + 28574 1 + $DIN_LOC_ROOT/share/domains/domain.ocn.oQU120.160325.nc oQU120 is a MPAS ocean grid that is roughly 1 degree resolution: Experimental, under development @@ -1640,10 +804,8 @@ 90 50 - domain.lnd.ww3a_ww3a.120222.nc - domain.ocn.ww3a_ww3a.120222.nc - $DIN_LOC_ROOT/share/domains - $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/share/domains/domain.lnd.ww3a_ww3a.120222.nc + $DIN_LOC_ROOT/share/domains/domain.ocn.ww3a_ww3a.120222.nc WW3 90 x 50 global grid For testing of the WAV model @@ -1654,436 +816,463 @@ + + + + + ATM2OCN_FMAPNAME + ATM2OCN_SMAPNAME + ATM2OCN_VMAPNAME + OCN2ATM_FMAPNAME + OCN2ATM_SMAPNAME + ATM2LND_FMAPNAME + ATM2LND_SMAPNAME + LND2ATM_FMAPNAME + LND2ATM_SMAPNAME + ATM2WAV_SMAPNAME + OCN2WAV_SMAPNAME + ICE2WAV_SMAPNAME + + ROF2OCN_LIQ_RMAPNAME + ROF2OCN_ICE_RMAPNAME + LND2ROF_FMAPNAME + ROF2LND_FMAPNAME + + - cpl/cpl6/map_fv0.23x0.31_to_gx1v6_aave_da_100423.nc - cpl/cpl6/map_fv0.23x0.31_to_gx1v6_bilin_da_100423.nc - cpl/cpl6/map_fv0.23x0.31_to_gx1v6_bilin_da_100423.nc - cpl/cpl6/map_gx1v6_to_fv0.23x0.31_aave_da_100423.nc - cpl/cpl6/map_gx1v6_to_fv0.23x0.31_aave_da_100423.nc + cpl/cpl6/map_fv0.23x0.31_to_gx1v6_aave_da_100423.nc + cpl/cpl6/map_fv0.23x0.31_to_gx1v6_bilin_da_100423.nc + cpl/cpl6/map_fv0.23x0.31_to_gx1v6_bilin_da_100423.nc + cpl/cpl6/map_gx1v6_to_fv0.23x0.31_aave_da_100423.nc + cpl/cpl6/map_gx1v6_to_fv0.23x0.31_aave_da_100423.nc - cpl/cpl6/map_fv0.23x0.31_to_tx0.1v2_aave_da_090127.nc - cpl/cpl6/map_fv0.23x0.31_to_tx0.1v2_bilin_da_090127.nc - cpl/cpl6/map_fv0.23x0.31_to_tx0.1v2_bilin_da_090127.nc - cpl/cpl6/map_tx0.1v2_to_fv0.23x0.31_aave_da_090127.nc - cpl/cpl6/map_tx0.1v2_to_fv0.23x0.31_aave_da_090127.nc + cpl/cpl6/map_fv0.23x0.31_to_tx0.1v2_aave_da_090127.nc + cpl/cpl6/map_fv0.23x0.31_to_tx0.1v2_bilin_da_090127.nc + cpl/cpl6/map_fv0.23x0.31_to_tx0.1v2_bilin_da_090127.nc + cpl/cpl6/map_tx0.1v2_to_fv0.23x0.31_aave_da_090127.nc + cpl/cpl6/map_tx0.1v2_to_fv0.23x0.31_aave_da_090127.nc - cpl/cpl6/map_fv0.47x0.63_to_gx1v6_aave_da_090407.nc - cpl/cpl6/map_fv0.47x0.63_to_gx1v6_patch_090401.nc - cpl/cpl6/map_fv0.47x0.63_to_gx1v6_patch_090401.nc - cpl/cpl6/map_gx1v6_to_fv0.47x0.63_aave_da_090407.nc - cpl/cpl6/map_gx1v6_to_fv0.47x0.63_aave_da_090407.nc + cpl/cpl6/map_fv0.47x0.63_to_gx1v6_aave_da_090407.nc + cpl/cpl6/map_fv0.47x0.63_to_gx1v6_patch_090401.nc + cpl/cpl6/map_fv0.47x0.63_to_gx1v6_patch_090401.nc + cpl/cpl6/map_gx1v6_to_fv0.47x0.63_aave_da_090407.nc + cpl/cpl6/map_gx1v6_to_fv0.47x0.63_aave_da_090407.nc - cpl/cpl6/map_fv0.47x0.63_to_tx0.1v2_aave_da_090218.nc - cpl/cpl6/map_fv0.47x0.63_to_tx0.1v2_bilin_da_090218.nc - cpl/cpl6/map_fv0.47x0.63_to_tx0.1v2_bilin_da_090218.nc - cpl/cpl6/map_tx0.1v2_to_fv0.47x0.63_aave_da_090218.nc - cpl/cpl6/map_tx0.1v2_to_fv0.47x0.63_aave_da_090218.nc + cpl/cpl6/map_fv0.47x0.63_to_tx0.1v2_aave_da_090218.nc + cpl/cpl6/map_fv0.47x0.63_to_tx0.1v2_bilin_da_090218.nc + cpl/cpl6/map_fv0.47x0.63_to_tx0.1v2_bilin_da_090218.nc + cpl/cpl6/map_tx0.1v2_to_fv0.47x0.63_aave_da_090218.nc + cpl/cpl6/map_tx0.1v2_to_fv0.47x0.63_aave_da_090218.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gx1v6_aave.130322.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gx1v6_blin.130322.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gx1v6_patc.130322.nc - cpl/gridmaps/gx1v6/map_gx1v6_TO_fv0.9x1.25_aave.130322.nc - cpl/gridmaps/gx1v6/map_gx1v6_TO_fv0.9x1.25_aave.130322.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gx1v6_aave.130322.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gx1v6_blin.130322.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gx1v6_patc.130322.nc + cpl/gridmaps/gx1v6/map_gx1v6_TO_fv0.9x1.25_aave.130322.nc + cpl/gridmaps/gx1v6/map_gx1v6_TO_fv0.9x1.25_aave.130322.nc - cpl/cpl6/map_fv0.9x1.25_to_mp120v1_aave_da_111004.nc - cpl/cpl6/map_fv0.9x1.25_to_mp120v1_aave_da_111004.nc - cpl/cpl6/map_fv0.9x1.25_to_mp120v1_aave_da_111004.nc - cpl/cpl6/map_mp120v1_to_fv0.9x1.25_aave_da_111004.nc - cpl/cpl6/map_mp120v1_to_fv0.9x1.25_aave_da_111004.nc + cpl/cpl6/map_fv0.9x1.25_to_mp120v1_aave_da_111004.nc + cpl/cpl6/map_fv0.9x1.25_to_mp120v1_aave_da_111004.nc + cpl/cpl6/map_fv0.9x1.25_to_mp120v1_aave_da_111004.nc + cpl/cpl6/map_mp120v1_to_fv0.9x1.25_aave_da_111004.nc + cpl/cpl6/map_mp120v1_to_fv0.9x1.25_aave_da_111004.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gx1v6_aave.130322.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gx1v6_blin.130322.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gx1v6_patc.130322.nc - cpl/gridmaps/gx1v6/map_gx1v6_TO_fv1.9x2.5_aave.130322.nc - cpl/gridmaps/gx1v6/map_gx1v6_TO_fv1.9x2.5_aave.130322.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gx1v6_aave.130322.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gx1v6_blin.130322.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gx1v6_patc.130322.nc + cpl/gridmaps/gx1v6/map_gx1v6_TO_fv1.9x2.5_aave.130322.nc + cpl/gridmaps/gx1v6/map_gx1v6_TO_fv1.9x2.5_aave.130322.nc - cpl/cpl6/map_fv1.9x2.5_to_tx1v1_aave_da_090710.nc - cpl/cpl6/map_fv1.9x2.5_to_tx1v1_bilin_da_090710.nc - cpl/cpl6/map_fv1.9x2.5_to_tx1v1_bilin_da_090710.nc - cpl/cpl6/map_tx1v1_to_fv1.9x2.5_aave_da_090710.nc - cpl/cpl6/map_tx1v1_to_fv1.9x2.5_aave_da_090710.nc + cpl/cpl6/map_fv1.9x2.5_to_tx1v1_aave_da_090710.nc + cpl/cpl6/map_fv1.9x2.5_to_tx1v1_bilin_da_090710.nc + cpl/cpl6/map_fv1.9x2.5_to_tx1v1_bilin_da_090710.nc + cpl/cpl6/map_tx1v1_to_fv1.9x2.5_aave_da_090710.nc + cpl/cpl6/map_tx1v1_to_fv1.9x2.5_aave_da_090710.nc - cpl/cpl6/map_fv4x5_to_gx3v7_aave_da_091218.nc - cpl/cpl6/map_fv4x5_to_gx3v7_bilin_da_091218.nc - cpl/cpl6/map_fv4x5_to_gx3v7_bilin_da_091218.nc - cpl/cpl6/map_gx3v7_to_fv4x5_aave_da_091218.nc - cpl/cpl6/map_gx3v7_to_fv4x5_aave_da_091218.nc + cpl/cpl6/map_fv4x5_to_gx3v7_aave_da_091218.nc + cpl/cpl6/map_fv4x5_to_gx3v7_bilin_da_091218.nc + cpl/cpl6/map_fv4x5_to_gx3v7_bilin_da_091218.nc + cpl/cpl6/map_gx3v7_to_fv4x5_aave_da_091218.nc + cpl/cpl6/map_gx3v7_to_fv4x5_aave_da_091218.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gx3v7_aave.120406.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gx3v7_aave.120406.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gx3v7_aave.120406.nc - cpl/gridmaps/gx3v7/map_gx3v7_TO_ne16np4_aave.120406.nc - cpl/gridmaps/gx3v7/map_gx3v7_TO_ne16np4_aave.120406.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gx3v7_aave.120406.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gx3v7_aave.120406.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gx3v7_aave.120406.nc + cpl/gridmaps/gx3v7/map_gx3v7_TO_ne16np4_aave.120406.nc + cpl/gridmaps/gx3v7/map_gx3v7_TO_ne16np4_aave.120406.nc - cpl/cpl6/map_ne30np4_to_gx1v6_aave_110121.nc - cpl/cpl6/map_ne30np4_to_gx1v6_native_110328.nc - cpl/cpl6/map_ne30np4_to_gx1v6_native_110328.nc - cpl/cpl6/map_gx1v6_to_ne30np4_aave_110121.nc - cpl/cpl6/map_gx1v6_to_ne30np4_aave_110121.nc + cpl/cpl6/map_ne30np4_to_gx1v6_aave_110121.nc + cpl/cpl6/map_ne30np4_to_gx1v6_native_110328.nc + cpl/cpl6/map_ne30np4_to_gx1v6_native_110328.nc + cpl/cpl6/map_gx1v6_to_ne30np4_aave_110121.nc + cpl/cpl6/map_gx1v6_to_ne30np4_aave_110121.nc - cpl/gridmaps/ne30np4/map_ne30np4_TO_fv0.9x1.25_aave.120712.nc - cpl/gridmaps/ne30np4/map_ne30np4_TO_fv0.9x1.25_aave.120712.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_ne30np4_aave.120712.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_ne30np4_aave.120712.nc + cpl/gridmaps/ne30np4/map_ne30np4_TO_fv0.9x1.25_aave.120712.nc + cpl/gridmaps/ne30np4/map_ne30np4_TO_fv0.9x1.25_aave.120712.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_ne30np4_aave.120712.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_ne30np4_aave.120712.nc - cpl/cpl6/map_ne30np4_to_fv1.9x2.5_aave_da_091230.nc - cpl/cpl6/map_ne30np4_to_fv1.9x2.5_aave_da_091230.nc - cpl/cpl6/map_fv1.9x2.5_to_ne30np4_aave_da_091230.nc - cpl/cpl6/map_fv1.9x2.5_to_ne30np4_aave_da_091230.nc + cpl/cpl6/map_ne30np4_to_fv1.9x2.5_aave_da_091230.nc + cpl/cpl6/map_ne30np4_to_fv1.9x2.5_aave_da_091230.nc + cpl/cpl6/map_fv1.9x2.5_to_ne30np4_aave_da_091230.nc + cpl/cpl6/map_fv1.9x2.5_to_ne30np4_aave_da_091230.nc - cpl/gridmaps/ne60np4/map_ne60np4_TO_gx1v6_aave.120406.nc - cpl/gridmaps/ne60np4/map_ne60np4_TO_gx1v6_blin.120406.nc - cpl/gridmaps/gx1v6/map_gx1v6_TO_ne60np4_aave.120406.nc - cpl/gridmaps/gx1v6/map_gx1v6_TO_ne60np4_aave.120406.nc + cpl/gridmaps/ne60np4/map_ne60np4_TO_gx1v6_aave.120406.nc + cpl/gridmaps/ne60np4/map_ne60np4_TO_gx1v6_blin.120406.nc + cpl/gridmaps/gx1v6/map_gx1v6_TO_ne60np4_aave.120406.nc + cpl/gridmaps/gx1v6/map_gx1v6_TO_ne60np4_aave.120406.nc - cpl/gridmaps/ne120np4/map_ne120np4_to_gx1v6_aave_110428.nc - cpl/gridmaps/ne120np4/map_ne120np4_to_gx1v6_bilin_110428.nc - cpl/gridmaps/ne120np4/map_ne120np4_to_gx1v6_bilin_110428.nc - cpl/gridmaps/gx1v6/map_gx1v6_to_ne120np4_aave_110428.nc - cpl/gridmaps/gx1v6/map_gx1v6_to_ne120np4_aave_110428.nc + cpl/gridmaps/ne120np4/map_ne120np4_to_gx1v6_aave_110428.nc + cpl/gridmaps/ne120np4/map_ne120np4_to_gx1v6_bilin_110428.nc + cpl/gridmaps/ne120np4/map_ne120np4_to_gx1v6_bilin_110428.nc + cpl/gridmaps/gx1v6/map_gx1v6_to_ne120np4_aave_110428.nc + cpl/gridmaps/gx1v6/map_gx1v6_to_ne120np4_aave_110428.nc - cpl/gridmaps/ne120np4/map_ne120np4_to_tx0.1v2_aave_110331.nc - cpl/gridmaps/ne120np4/map_ne120np4_to_tx0.1v2_090127_bilin_110331.nc - cpl/gridmaps/ne120np4/map_ne120np4_to_tx0.1v2_090127_bilin_110331.nc - cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_ne120np4_aave_110331.nc - cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_ne120np4_aave_110331.nc + cpl/gridmaps/ne120np4/map_ne120np4_to_tx0.1v2_aave_110331.nc + cpl/gridmaps/ne120np4/map_ne120np4_to_tx0.1v2_090127_bilin_110331.nc + cpl/gridmaps/ne120np4/map_ne120np4_to_tx0.1v2_090127_bilin_110331.nc + cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_ne120np4_aave_110331.nc + cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_ne120np4_aave_110331.nc - cpl/gridmaps/ne120np4/map_ne120np4_TO_fv0.9x1.25_aave.120712.nc - cpl/gridmaps/ne120np4/map_ne120np4_TO_fv0.9x1.25_aave.120712.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_ne120np4_aave.120712.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_ne120np4_aave.120712.nc + cpl/gridmaps/ne120np4/map_ne120np4_TO_fv0.9x1.25_aave.120712.nc + cpl/gridmaps/ne120np4/map_ne120np4_TO_fv0.9x1.25_aave.120712.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_ne120np4_aave.120712.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_ne120np4_aave.120712.nc - cpl/gridmaps/ne120np4/map_ne120np4_to_fv0.23x0.31_aave_110331.nc - cpl/gridmaps/ne120np4/map_ne120np4_to_fv0.23x0.31_aave_110331.nc - cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_ne120np4_aave_110331.nc - cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_ne120np4_aave_110331.nc + cpl/gridmaps/ne120np4/map_ne120np4_to_fv0.23x0.31_aave_110331.nc + cpl/gridmaps/ne120np4/map_ne120np4_to_fv0.23x0.31_aave_110331.nc + cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_ne120np4_aave_110331.nc + cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_ne120np4_aave_110331.nc - cpl/gridmaps/ne240np4/map_ne240np4_to_gx1v6_aave_110428.nc - cpl/gridmaps/ne240np4/map_ne240np4_to_gx1v6_aave_110428.nc - cpl/gridmaps/ne240np4/map_ne240np4_to_gx1v6_aave_110428.nc - cpl/gridmaps/gx1v6/map_gx1v6_to_ne240np4_aave_110428.nc - cpl/gridmaps/gx1v6/map_gx1v6_to_ne240np4_aave_110428.nc + cpl/gridmaps/ne240np4/map_ne240np4_to_gx1v6_aave_110428.nc + cpl/gridmaps/ne240np4/map_ne240np4_to_gx1v6_aave_110428.nc + cpl/gridmaps/ne240np4/map_ne240np4_to_gx1v6_aave_110428.nc + cpl/gridmaps/gx1v6/map_gx1v6_to_ne240np4_aave_110428.nc + cpl/gridmaps/gx1v6/map_gx1v6_to_ne240np4_aave_110428.nc - cpl/gridmaps/ne240np4/map_ne240np4_to_tx0.1v2_aave_110419.nc - cpl/gridmaps/ne240np4/map_ne240np4_to_tx0.1v2_aave_110419.nc - cpl/gridmaps/ne240np4/map_ne240np4_to_tx0.1v2_aave_110419.nc - cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_ne240np4_aave_110419.nc - cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_ne240np4_aave_110419.nc + cpl/gridmaps/ne240np4/map_ne240np4_to_tx0.1v2_aave_110419.nc + cpl/gridmaps/ne240np4/map_ne240np4_to_tx0.1v2_aave_110419.nc + cpl/gridmaps/ne240np4/map_ne240np4_to_tx0.1v2_aave_110419.nc + cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_ne240np4_aave_110419.nc + cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_ne240np4_aave_110419.nc - cpl/gridmaps/ne240np4/map_ne240np4_to_fv0.23x0.31_aave_110428.nc - cpl/gridmaps/ne240np4/map_ne240np4_to_fv0.23x0.31_aave_110428.nc - cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_ne240np4_aave_110428.nc - cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_ne240np4_aave_110428.nc + cpl/gridmaps/ne240np4/map_ne240np4_to_fv0.23x0.31_aave_110428.nc + cpl/gridmaps/ne240np4/map_ne240np4_to_fv0.23x0.31_aave_110428.nc + cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_ne240np4_aave_110428.nc + cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_ne240np4_aave_110428.nc - cpl/gridmaps/T62/map_T62_TO_gx3v7_aave.130322.nc - cpl/gridmaps/T62/map_T62_TO_gx3v7_blin.130322.nc - cpl/gridmaps/T62/map_T62_TO_gx3v7_patc.130322.nc - cpl/gridmaps/gx3v7/map_gx3v7_TO_T62_aave.130322.nc - cpl/gridmaps/gx3v7/map_gx3v7_TO_T62_aave.130322.nc + cpl/gridmaps/T62/map_T62_TO_gx3v7_aave.130322.nc + cpl/gridmaps/T62/map_T62_TO_gx3v7_blin.130322.nc + cpl/gridmaps/T62/map_T62_TO_gx3v7_patc.130322.nc + cpl/gridmaps/gx3v7/map_gx3v7_TO_T62_aave.130322.nc + cpl/gridmaps/gx3v7/map_gx3v7_TO_T62_aave.130322.nc - cpl/gridmaps/T62/map_T62_TO_gx1v6_aave.130322.nc - cpl/gridmaps/T62/map_T62_TO_gx1v6_blin.130322.nc - cpl/gridmaps/T62/map_T62_TO_gx1v6_patc.130322.nc - cpl/gridmaps/gx1v6/map_gx1v6_TO_T62_aave.130322.nc - cpl/gridmaps/gx1v6/map_gx1v6_TO_T62_aave.130322.nc + cpl/gridmaps/T62/map_T62_TO_gx1v6_aave.130322.nc + cpl/gridmaps/T62/map_T62_TO_gx1v6_blin.130322.nc + cpl/gridmaps/T62/map_T62_TO_gx1v6_patc.130322.nc + cpl/gridmaps/gx1v6/map_gx1v6_TO_T62_aave.130322.nc + cpl/gridmaps/gx1v6/map_gx1v6_TO_T62_aave.130322.nc - cpl/cpl6/map_T62_to_tx1v1_aave_da_090122.nc - cpl/cpl6/map_T62_to_tx1v1_bilin_da_090122.nc - cpl/cpl6/map_T62_to_tx1v1_bilin_da_090122.nc - cpl/cpl6/map_tx1v1_to_T62_aave_da_090122.nc - cpl/cpl6/map_tx1v1_to_T62_aave_da_090122.nc + cpl/cpl6/map_T62_to_tx1v1_aave_da_090122.nc + cpl/cpl6/map_T62_to_tx1v1_bilin_da_090122.nc + cpl/cpl6/map_T62_to_tx1v1_bilin_da_090122.nc + cpl/cpl6/map_tx1v1_to_T62_aave_da_090122.nc + cpl/cpl6/map_tx1v1_to_T62_aave_da_090122.nc - cpl/cpl6/map_T62_to_tx0.1v2_aave_da_090220.nc - cpl/cpl6/map_T62_to_tx0.1v2_bilin_da_090220.nc - cpl/cpl6/map_T62_to_tx0.1v2_bilin_da_090220.nc - cpl/cpl6/map_tx0.1v2_to_T62_aave_da_090220.nc - cpl/cpl6/map_tx0.1v2_to_T62_aave_da_090220.nc - - - cpl/gridmaps/T62/map_T62_TO_mpas120_aave.121116.nc - cpl/gridmaps/T62/map_T62_TO_mpas120_aave.121116.nc - cpl/gridmaps/T62/map_T62_TO_mpas120_aave.121116.nc - cpl/gridmaps/mpas120/map_mpas120_TO_T62_aave.121116.nc - cpl/gridmaps/mpas120/map_mpas120_TO_T62_aave.121116.nc + cpl/cpl6/map_T62_to_tx0.1v2_aave_da_090220.nc + cpl/cpl6/map_T62_to_tx0.1v2_bilin_da_090220.nc + cpl/cpl6/map_T62_to_tx0.1v2_bilin_da_090220.nc + cpl/cpl6/map_tx0.1v2_to_T62_aave_da_090220.nc + cpl/cpl6/map_tx0.1v2_to_T62_aave_da_090220.nc - - cpl/gridmaps/T62/map_T62_TO_oQU120_aave.151209.nc - cpl/gridmaps/T62/map_T62_TO_oQU120_aave.151209.nc - cpl/gridmaps/T62/map_T62_TO_oQU120_aave.151209.nc - cpl/gridmaps/oQU120/map_oQU120_TO_T62_aave.151209.nc - cpl/gridmaps/oQU120/map_oQU120_TO_T62_aave.151209.nc + cpl/gridmaps/T62/map_T62_TO_oQU120_aave.151209.nc + cpl/gridmaps/T62/map_T62_TO_oQU120_aave.151209.nc + cpl/gridmaps/T62/map_T62_TO_oQU120_aave.151209.nc + cpl/gridmaps/oQU120/map_oQU120_TO_T62_aave.151209.nc + cpl/gridmaps/oQU120/map_oQU120_TO_T62_aave.151209.nc - cpl/cpl6/map_T31_to_gx3v7_aave_da_090903.nc - cpl/cpl6/map_T31_to_gx3v7_patch_090903.nc - cpl/cpl6/map_T31_to_gx3v7_patch_090903.nc - cpl/cpl6/map_gx3v7_to_T31_aave_da_090903.nc - cpl/cpl6/map_gx3v7_to_T31_aave_da_090903.nc + cpl/cpl6/map_T31_to_gx3v7_aave_da_090903.nc + cpl/cpl6/map_T31_to_gx3v7_patch_090903.nc + cpl/cpl6/map_T31_to_gx3v7_patch_090903.nc + cpl/cpl6/map_gx3v7_to_T31_aave_da_090903.nc + cpl/cpl6/map_gx3v7_to_T31_aave_da_090903.nc - cpl/gridmaps/T85/map_T85_to_gx1v6_aave_110411.nc - cpl/gridmaps/T85/map_T85_to_gx1v6_bilin_110411.nc - cpl/gridmaps/T85/map_T85_to_gx1v6_bilin_110411.nc - cpl/gridmaps/gx1v6/map_gx1v6_to_T85_aave_110411.nc - cpl/gridmaps/gx1v6/map_gx1v6_to_T85_aave_110411.nc + cpl/gridmaps/T85/map_T85_to_gx1v6_aave_110411.nc + cpl/gridmaps/T85/map_T85_to_gx1v6_bilin_110411.nc + cpl/gridmaps/T85/map_T85_to_gx1v6_bilin_110411.nc + cpl/gridmaps/gx1v6/map_gx1v6_to_T85_aave_110411.nc + cpl/gridmaps/gx1v6/map_gx1v6_to_T85_aave_110411.nc - cpl/gridmaps/T85/map_T85_to_fv0.9x1.25_aave_110411.nc - cpl/gridmaps/T85/map_T85_to_fv0.9x1.25_bilin_110411.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_to_T85_aave_110411.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_to_T85_bilin_110411.nc + cpl/gridmaps/T85/map_T85_to_fv0.9x1.25_aave_110411.nc + cpl/gridmaps/T85/map_T85_to_fv0.9x1.25_bilin_110411.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_to_T85_aave_110411.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_to_T85_bilin_110411.nc - cpl/gridmaps/T85/map_T85_to_tx0.1v2_aave_110411.nc - cpl/gridmaps/T85/map_T85_to_tx0.1v2_bilin_110411.nc - cpl/gridmaps/T85/map_T85_to_tx0.1v2_bilin_110411.nc - cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_T85_bilin_110411.nc - cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_T85_aave_110411.nc + cpl/gridmaps/T85/map_T85_to_tx0.1v2_aave_110411.nc + cpl/gridmaps/T85/map_T85_to_tx0.1v2_bilin_110411.nc + cpl/gridmaps/T85/map_T85_to_tx0.1v2_bilin_110411.nc + cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_T85_bilin_110411.nc + cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_T85_aave_110411.nc - cpl/gridmaps/T85/map_T85_to_fv0.9x1.25_aave_110411.nc - cpl/gridmaps/T85/map_T85_to_fv0.9x1.25_bilin_110411.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_to_T85_aave_110411.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_to_T85_aave_110411.nc + cpl/gridmaps/T85/map_T85_to_fv0.9x1.25_aave_110411.nc + cpl/gridmaps/T85/map_T85_to_fv0.9x1.25_bilin_110411.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_to_T85_aave_110411.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_to_T85_aave_110411.nc - cpl/gridmaps/T341/map_T341_to_tx0.1v2_aave_110413.nc - cpl/gridmaps/T341/map_T341_to_tx0.1v2_aave_110413.nc - cpl/gridmaps/T341/map_T341_to_tx0.1v2_aave_110413.nc - cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_T341_aave_110413.nc - cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_T341_aave_110413.nc + cpl/gridmaps/T341/map_T341_to_tx0.1v2_aave_110413.nc + cpl/gridmaps/T341/map_T341_to_tx0.1v2_aave_110413.nc + cpl/gridmaps/T341/map_T341_to_tx0.1v2_aave_110413.nc + cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_T341_aave_110413.nc + cpl/gridmaps/tx0.1v2/map_tx0.1v2_to_T341_aave_110413.nc - cpl/gridmaps/T341/map_T341_to_fv0.23x0.31_aave_110413.nc - cpl/gridmaps/T341/map_T341_to_fv0.23x0.31_aave_110413.nc - cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_T341_aave_110413.nc - cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_T341_aave_110413.nc + cpl/gridmaps/T341/map_T341_to_fv0.23x0.31_aave_110413.nc + cpl/gridmaps/T341/map_T341_to_fv0.23x0.31_aave_110413.nc + cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_T341_aave_110413.nc + cpl/gridmaps/fv0.23x0.31/map_fv0.23x0.31_to_T341_aave_110413.nc - cpl/gridmaps/ww3a/map_ww3a_TO_gx3v7_splice_150428.nc - cpl/gridmaps/gx3v7/map_gx3v7_TO_ww3a_splice_150428.nc - cpl/gridmaps/gx3v7/map_gx3v7_TO_ww3a_splice_150428.nc + cpl/gridmaps/ww3a/map_ww3a_TO_gx3v7_splice_150428.nc + cpl/gridmaps/gx3v7/map_gx3v7_TO_ww3a_splice_150428.nc + cpl/gridmaps/gx3v7/map_gx3v7_TO_ww3a_splice_150428.nc - cpl/gridmaps/ww3a/map_ww3a_TO_gx1v6_splice_150428.nc - cpl/gridmaps/gx1v6/map_gx1v6_TO_ww3a_splice_150428.nc - cpl/gridmaps/gx1v6/map_gx1v6_TO_ww3a_splice_150428.nc + cpl/gridmaps/ww3a/map_ww3a_TO_gx1v6_splice_150428.nc + cpl/gridmaps/gx1v6/map_gx1v6_TO_ww3a_splice_150428.nc + cpl/gridmaps/gx1v6/map_gx1v6_TO_ww3a_splice_150428.nc - - cpl/gridmaps/T31/map_T31_TO_ww3a_bilin_131104.nc + cpl/gridmaps/T31/map_T31_TO_ww3a_bilin_131104.nc - cpl/gridmaps/T62/map_T62_TO_ww3a_bilin.150617.nc + cpl/gridmaps/T62/map_T62_TO_ww3a_bilin.150617.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_ww3a_bilin_140702.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_ww3a_bilin_140702.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_ww3a_bilin.160324.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_ww3a_bilin.160324.nc - lnd/clm2/mappingdata/maps/0.1x0.1/map_360x720_nomask_to_0.1x0.1_nomask_aave_da_c130107.nc - lnd/clm2/mappingdata/maps/360x720/map_0.1x0.1_nomask_to_360x720_nomask_aave_da_c130104.nc + lnd/clm2/mappingdata/maps/0.1x0.1/map_360x720_nomask_to_0.1x0.1_nomask_aave_da_c130107.nc + lnd/clm2/mappingdata/maps/360x720/map_0.1x0.1_nomask_to_360x720_nomask_aave_da_c130104.nc - lnd/clm2/mappingdata/maps/0.1x0.1/map_1.9x2.5_nomask_to_0.1x0.1_nomask_aave_da_c120709.nc - lnd/clm2/mappingdata/maps/1.9x2.5/map_0.1x0.1_nomask_to_1.9x2.5_nomask_aave_da_c120709.nc + lnd/clm2/mappingdata/maps/0.1x0.1/map_1.9x2.5_nomask_to_0.1x0.1_nomask_aave_da_c120709.nc + lnd/clm2/mappingdata/maps/1.9x2.5/map_0.1x0.1_nomask_to_1.9x2.5_nomask_aave_da_c120709.nc - lnd/clm2/mappingdata/maps/0.1x0.1/map_ne120np4_nomask_to_0.1x0.1_nomask_aave_da_c120711.nc - lnd/clm2/mappingdata/maps/ne120np4/map_0.1x0.1_nomask_to_ne120np4_nomask_aave_da_c120706.nc + lnd/clm2/mappingdata/maps/0.1x0.1/map_ne120np4_nomask_to_0.1x0.1_nomask_aave_da_c120711.nc + lnd/clm2/mappingdata/maps/ne120np4/map_0.1x0.1_nomask_to_ne120np4_nomask_aave_da_c120706.nc - lnd/clm2/mappingdata/maps/0.1x0.1/map_ne240np4_nomask_to_0.1x0.1_nomask_aave_da_c120711.nc - lnd/clm2/mappingdata/maps/ne240np4/map_0.1x0.1_nomask_to_ne240np4_nomask_aave_da_c120706.nc + lnd/clm2/mappingdata/maps/0.1x0.1/map_ne240np4_nomask_to_0.1x0.1_nomask_aave_da_c120711.nc + lnd/clm2/mappingdata/maps/ne240np4/map_0.1x0.1_nomask_to_ne240np4_nomask_aave_da_c120706.nc - lnd/clm2/mappingdata/maps/0.5x0.5/map_360x720_nomask_to_0.5x0.5_nomask_aave_da_c130103.nc - lnd/clm2/mappingdata/maps/360x720/map_0.5x0.5_nomask_to_360x720_nomask_aave_da_c120830.nc + lnd/clm2/mappingdata/maps/0.5x0.5/map_360x720_nomask_to_0.5x0.5_nomask_aave_da_c130103.nc + lnd/clm2/mappingdata/maps/360x720/map_0.5x0.5_nomask_to_360x720_nomask_aave_da_c120830.nc - lnd/clm2/mappingdata/maps/ne16np4/map_ne16np4_nomask_to_0.5x0.5_nomask_aave_da_c110922.nc - lnd/clm2/mappingdata/maps/ne16np4/map_0.5x0.5_nomask_to_ne16np4_nomask_aave_da_c110922.nc + lnd/clm2/mappingdata/maps/ne16np4/map_ne16np4_nomask_to_0.5x0.5_nomask_aave_da_c110922.nc + lnd/clm2/mappingdata/maps/ne16np4/map_0.5x0.5_nomask_to_ne16np4_nomask_aave_da_c110922.nc - lnd/clm2/mappingdata/maps/ne30np4/map_ne30np4_to_0.5x0.5rtm_aave_da_110320.nc - lnd/clm2/mappingdata/maps/ne30np4/map_0.5x0.5_nomask_to_ne30np4_nomask_aave_da_c121019.nc + lnd/clm2/mappingdata/maps/ne30np4/map_ne30np4_to_0.5x0.5rtm_aave_da_110320.nc + lnd/clm2/mappingdata/maps/ne30np4/map_0.5x0.5_nomask_to_ne30np4_nomask_aave_da_c121019.nc - lnd/clm2/mappingdata/maps/ne60np4/map_ne60np4_nomask_to_0.5x0.5_nomask_aave_da_c110922.nc - lnd/clm2/mappingdata/maps/ne60np4/map_0.5x0.5_nomask_to_ne60np4_nomask_aave_da_c110922.nc + lnd/clm2/mappingdata/maps/ne60np4/map_ne60np4_nomask_to_0.5x0.5_nomask_aave_da_c110922.nc + lnd/clm2/mappingdata/maps/ne60np4/map_0.5x0.5_nomask_to_ne60np4_nomask_aave_da_c110922.nc - lnd/clm2/mappingdata/maps/ne120np4/map_ne120np4_to_0.5x0.5rtm_aave_da_110320.nc - lnd/clm2/mappingdata/maps/ne120np4/map_0.5x0.5_nomask_to_ne120np4_nomask_aave_da_c121019.nc + lnd/clm2/mappingdata/maps/ne120np4/map_ne120np4_to_0.5x0.5rtm_aave_da_110320.nc + lnd/clm2/mappingdata/maps/ne120np4/map_0.5x0.5_nomask_to_ne120np4_nomask_aave_da_c121019.nc - lnd/clm2/mappingdata/maps/ne240np4/map_ne240np4_nomask_to_0.5x0.5_nomask_aave_da_c110922.nc - lnd/clm2/mappingdata/maps/ne240np4/map_0.5x0.5_nomask_to_ne240np4_nomask_aave_da_c121019.nc + lnd/clm2/mappingdata/maps/ne240np4/map_ne240np4_nomask_to_0.5x0.5_nomask_aave_da_c110922.nc + lnd/clm2/mappingdata/maps/ne240np4/map_0.5x0.5_nomask_to_ne240np4_nomask_aave_da_c121019.nc - lnd/clm2/mappingdata/maps/0.23x0.31/map_0.23x0.31_nomask_to_0.5x0.5_nomask_aave_da_c110920.nc - lnd/clm2/mappingdata/maps/0.23x0.31/map_0.5x0.5_nomask_to_0.23x0.31_nomask_aave_da_c110920.nc + lnd/clm2/mappingdata/maps/0.23x0.31/map_0.23x0.31_nomask_to_0.5x0.5_nomask_aave_da_c110920.nc + lnd/clm2/mappingdata/maps/0.23x0.31/map_0.5x0.5_nomask_to_0.23x0.31_nomask_aave_da_c110920.nc - lnd/clm2/mappingdata/maps/0.47x0.63/map_0.47x0.63_nomask_to_0.5x0.5_nomask_aave_da_c120306.nc - lnd/clm2/mappingdata/maps/0.47x0.63/map_0.5x0.5_nomask_to_0.47x0.63_nomask_aave_da_c120306.nc + lnd/clm2/mappingdata/maps/0.47x0.63/map_0.47x0.63_nomask_to_0.5x0.5_nomask_aave_da_c120306.nc + lnd/clm2/mappingdata/maps/0.47x0.63/map_0.5x0.5_nomask_to_0.47x0.63_nomask_aave_da_c120306.nc - lnd/clm2/mappingdata/maps/0.9x1.25/map_0.9x1.25_nomask_to_0.5x0.5_nomask_aave_da_c120522.nc - lnd/clm2/mappingdata/maps/0.9x1.25/map_0.5x0.5_nomask_to_0.9x1.25_nomask_aave_da_c121019.nc + lnd/clm2/mappingdata/maps/0.9x1.25/map_0.9x1.25_nomask_to_0.5x0.5_nomask_aave_da_c120522.nc + lnd/clm2/mappingdata/maps/0.9x1.25/map_0.5x0.5_nomask_to_0.9x1.25_nomask_aave_da_c121019.nc - lnd/clm2/mappingdata/maps/1.9x2.5/map_1.9x2.5_nomask_to_0.5x0.5_nomask_aave_da_c120522.nc - lnd/clm2/mappingdata/maps/1.9x2.5/map_0.5x0.5_nomask_to_1.9x2.5_nomask_aave_da_c120709.nc + lnd/clm2/mappingdata/maps/1.9x2.5/map_1.9x2.5_nomask_to_0.5x0.5_nomask_aave_da_c120522.nc + lnd/clm2/mappingdata/maps/1.9x2.5/map_0.5x0.5_nomask_to_1.9x2.5_nomask_aave_da_c120709.nc - lnd/clm2/mappingdata/maps/2.5x3.33/map_2.5x3.33_nomask_to_0.5x0.5_nomask_aave_da_c110823.nc - lnd/clm2/mappingdata/maps/2.5x3.33/map_0.5x0.5_nomask_to_2.5x3.33_nomask_aave_da_c110823.nc + lnd/clm2/mappingdata/maps/2.5x3.33/map_2.5x3.33_nomask_to_0.5x0.5_nomask_aave_da_c110823.nc + lnd/clm2/mappingdata/maps/2.5x3.33/map_0.5x0.5_nomask_to_2.5x3.33_nomask_aave_da_c110823.nc - lnd/clm2/mappingdata/maps/10x15/map_10x15_to_0.5x0.5rtm_aave_da_110307.nc - lnd/clm2/mappingdata/maps/10x15/map_0.5x0.5_nomask_to_10x15_nomask_aave_da_c121019.nc + lnd/clm2/mappingdata/maps/10x15/map_10x15_to_0.5x0.5rtm_aave_da_110307.nc + lnd/clm2/mappingdata/maps/10x15/map_0.5x0.5_nomask_to_10x15_nomask_aave_da_c121019.nc - lnd/clm2/mappingdata/maps/4x5/map_4x5_nomask_to_0.5x0.5_nomask_aave_da_c110822.nc - lnd/clm2/mappingdata/maps/4x5/map_0.5x0.5_nomask_to_4x5_nomask_aave_da_c110822.nc + lnd/clm2/mappingdata/maps/4x5/map_4x5_nomask_to_0.5x0.5_nomask_aave_da_c110822.nc + lnd/clm2/mappingdata/maps/4x5/map_0.5x0.5_nomask_to_4x5_nomask_aave_da_c110822.nc - lnd/clm2/mappingdata/maps/512x1024/map_512x1024_nomask_to_0.5x0.5_nomask_aave_da_c110920.nc - lnd/clm2/mappingdata/maps/512x1024/map_0.5x0.5_nomask_to_512x1024_nomask_aave_da_c110920.nc + lnd/clm2/mappingdata/maps/512x1024/map_512x1024_nomask_to_0.5x0.5_nomask_aave_da_c110920.nc + lnd/clm2/mappingdata/maps/512x1024/map_0.5x0.5_nomask_to_512x1024_nomask_aave_da_c110920.nc - lnd/clm2/mappingdata/maps/128x256/map_128x256_nomask_to_0.5x0.5_nomask_aave_da_c110920.nc - lnd/clm2/mappingdata/maps/128x256/map_0.5x0.5_nomask_to_128x256_nomask_aave_da_c110920.nc + lnd/clm2/mappingdata/maps/128x256/map_128x256_nomask_to_0.5x0.5_nomask_aave_da_c110920.nc + lnd/clm2/mappingdata/maps/128x256/map_0.5x0.5_nomask_to_128x256_nomask_aave_da_c110920.nc - lnd/clm2/mappingdata/maps/48x96/map_48x96_nomask_to_0.5x0.5_nomask_aave_da_c110822.nc - lnd/clm2/mappingdata/maps/48x96/map_0.5x0.5_nomask_to_48x96_nomask_aave_da_c110822.nc + lnd/clm2/mappingdata/maps/48x96/map_48x96_nomask_to_0.5x0.5_nomask_aave_da_c110822.nc + lnd/clm2/mappingdata/maps/48x96/map_0.5x0.5_nomask_to_48x96_nomask_aave_da_c110822.nc - cpl/cpl6/map_r05_TO_g16_aave.120920.nc + cpl/cpl6/map_r05_TO_g16_aave.120920.nc - cpl/cpl6/map_rx1_to_gx3v7_e1000r500_090903.nc + cpl/gridmaps/rx1/map_rx1_to_gx3v7_nn_ac_161214.nc + cpl/gridmaps/rx1/map_rx1_to_gx3v7_e1000r500_161214.nc - cpl/cpl6/map_rx1_to_gx1v6_e1000r300_090318.nc + cpl/gridmaps/rx1/map_rx1_to_gx1v6_nn_ac_161213.nc + cpl/gridmaps/rx1/map_rx1_to_gx1v6_e1000r300_161212.nc - cpl/cpl6/map_rx1_to_tx1v1_e1000r300_090318.nc + cpl/gridmaps/rx1/map_rx1_to_tx1v1_nn_ac_161214.nc + cpl/gridmaps/rx1/map_rx1_to_tx1v1_e1000r300_161214.nc - cpl/cpl6/map_rx1_to_tx0.1v2_e1000r200_090624.nc + cpl/cpl6/map_rx1_to_tx0.1v2_e1000r200_090624.nc + cpl/cpl6/map_rx1_to_tx0.1v2_e1000r200_090624.nc - cpl/gridmaps/rx1/map_rx1_to_oQU120_nn.160527.nc + cpl/gridmaps/rx1/map_rx1_to_oQU120_nn.160527.nc + cpl/gridmaps/rx1/map_rx1_to_oQU120_nn.160527.nc - cpl/cpl6/map_r05_to_gx3v7_e1000r500_090903.nc + cpl/gridmaps/r05/map_r05_to_gx3v7_nn_ac_161214.nc + cpl/gridmaps/r05/map_r05_to_gx3v7_e1000r500_161214.nc - cpl/gridmaps/r05/map_r05_to_gx1v6_e1000r300_151109.nc + cpl/gridmaps/r05/map_r05_to_gx1v6_nn_ac_161214.nc + cpl/gridmaps/r05/map_r05_to_gx1v6_e1000r300_161212.nc - cpl/gridmaps/r05/map_r05_to_gx1v7_e1000r300_151109b.nc + cpl/gridmaps/r05/map_r05_to_gx1v7_nn_ac_161213.nc + cpl/gridmaps/r05/map_r05_to_gx1v7_e1000r300_161213.nc - cpl/cpl6/map_r05_to_tx1v1_e1000r500_080505.nc + cpl/gridmaps/r05/map_r05_to_tx1v1_nn_ac_161214.nc + cpl/gridmaps/r05/map_r05_to_tx1v1_e1000r500_161214.nc - cpl/cpl6/map_r05_to_tx0.1v2_r500e1000_080620.nc + cpl/cpl6/map_r05_to_tx0.1v2_r500e1000_080620.nc + cpl/cpl6/map_r05_to_tx0.1v2_r500e1000_080620.nc - cpl/cpl6/map_r01_to_gx1v6_120711.nc + cpl/cpl6/map_r01_to_gx1v6_120711.nc + cpl/cpl6/map_r01_to_gx1v6_120711.nc - ACTIVE + + ACTIVE + @@ -2098,66 +1287,66 @@ - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland4km_aave.150514.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland4km_blin.150514.nc - cpl/gridmaps/gland4km/map_gland4km_TO_fv0.9x1.25_aave.150514.nc - cpl/gridmaps/gland4km/map_gland4km_TO_fv0.9x1.25_aave.150514.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland4km_aave.161223.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland4km_blin.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_fv0.9x1.25_aave.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_fv0.9x1.25_aave.161223.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland4km_aave.150514.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland4km_blin.150514.nc - cpl/gridmaps/gland4km/map_gland4km_TO_fv1.9x2.5_aave.150514.nc - cpl/gridmaps/gland4km/map_gland4km_TO_fv1.9x2.5_aave.150514.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland4km_aave.161223.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland4km_blin.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_fv1.9x2.5_aave.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_fv1.9x2.5_aave.161223.nc - cpl/gridmaps/T31/map_T31_TO_gland4km_aave.150514.nc - cpl/gridmaps/T31/map_T31_TO_gland4km_blin.150514.nc - cpl/gridmaps/gland4km/map_gland4km_TO_T31_aave.150514.nc - cpl/gridmaps/gland4km/map_gland4km_TO_T31_aave.150514.nc + cpl/gridmaps/T31/map_T31_TO_gland4km_aave.161223.nc + cpl/gridmaps/T31/map_T31_TO_gland4km_blin.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_T31_aave.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_T31_aave.161223.nc - cpl/gridmaps/360x720/map_360x720_TO_gland4km_aave.160329.nc - cpl/gridmaps/360x720/map_360x720_TO_gland4km_blin.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_360x720_aave.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_360x720_aave.160329.nc + cpl/gridmaps/360x720/map_360x720_TO_gland4km_aave.161223.nc + cpl/gridmaps/360x720/map_360x720_TO_gland4km_blin.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_360x720_aave.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_360x720_aave.161223.nc - cpl/gridmaps/fv10x15/map_fv10x15_TO_gland4km_aave.160329.nc - cpl/gridmaps/fv10x15/map_fv10x15_TO_gland4km_blin.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_fv10x15_aave.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_fv10x15_aave.160329.nc + cpl/gridmaps/fv10x15/map_fv10x15_TO_gland4km_aave.161223.nc + cpl/gridmaps/fv10x15/map_fv10x15_TO_gland4km_blin.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_fv10x15_aave.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_fv10x15_aave.161223.nc - cpl/gridmaps/fv4x5/map_fv4x5_TO_gland4km_aave.160329.nc - cpl/gridmaps/fv4x5/map_fv4x5_TO_gland4km_blin.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_fv4x5_aave.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_fv4x5_aave.160329.nc + cpl/gridmaps/fv4x5/map_fv4x5_TO_gland4km_aave.161223.nc + cpl/gridmaps/fv4x5/map_fv4x5_TO_gland4km_blin.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_fv4x5_aave.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_fv4x5_aave.161223.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gland4km_aave.160329.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gland4km_blin.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_ne16np4_aave.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_ne16np4_aave.160329.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gland4km_aave.161223.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gland4km_blin.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_ne16np4_aave.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_ne16np4_aave.161223.nc - cpl/gridmaps/ne30np4/map_ne30np4_TO_gland4km_aave.160329.nc - cpl/gridmaps/ne30np4/map_ne30np4_TO_gland4km_blin.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_ne30np4_aave.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_ne30np4_aave.160329.nc + cpl/gridmaps/ne30np4/map_ne30np4_TO_gland4km_aave.161223.nc + cpl/gridmaps/ne30np4/map_ne30np4_TO_gland4km_blin.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_ne30np4_aave.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_ne30np4_aave.161223.nc - cpl/gridmaps/ne120np4/map_ne120np4_TO_gland4km_aave.160329.nc - cpl/gridmaps/ne120np4/map_ne120np4_TO_gland4km_blin.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_ne120np4_aave.160329.nc - cpl/gridmaps/gland4km/map_gland4km_TO_ne120np4_aave.160329.nc + cpl/gridmaps/ne120np4/map_ne120np4_TO_gland4km_aave.161223.nc + cpl/gridmaps/ne120np4/map_ne120np4_TO_gland4km_blin.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_ne120np4_aave.161223.nc + cpl/gridmaps/gland4km/map_gland4km_TO_ne120np4_aave.161223.nc @@ -2166,66 +1355,66 @@ - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland5km_aave.150514.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland5km_blin.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv0.9x1.25_aave.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv0.9x1.25_aave.150514.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland5km_aave.150514.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland5km_blin.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv0.9x1.25_aave.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv0.9x1.25_aave.150514.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland5km_aave.150514.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland5km_blin.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv1.9x2.5_aave.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv1.9x2.5_aave.150514.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland5km_aave.150514.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland5km_blin.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv1.9x2.5_aave.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv1.9x2.5_aave.150514.nc - cpl/gridmaps/T31/map_T31_TO_gland5km_aave.150514.nc - cpl/gridmaps/T31/map_T31_TO_gland5km_blin.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_T31_aave.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_T31_aave.150514.nc + cpl/gridmaps/T31/map_T31_TO_gland5km_aave.150514.nc + cpl/gridmaps/T31/map_T31_TO_gland5km_blin.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_T31_aave.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_T31_aave.150514.nc - cpl/gridmaps/360x720/map_360x720_TO_gland5km_aave.160329.nc - cpl/gridmaps/360x720/map_360x720_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_360x720_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_360x720_aave.160329.nc + cpl/gridmaps/360x720/map_360x720_TO_gland5km_aave.160329.nc + cpl/gridmaps/360x720/map_360x720_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_360x720_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_360x720_aave.160329.nc - cpl/gridmaps/fv10x15/map_fv10x15_TO_gland5km_aave.160329.nc - cpl/gridmaps/fv10x15/map_fv10x15_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv10x15_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv10x15_aave.160329.nc + cpl/gridmaps/fv10x15/map_fv10x15_TO_gland5km_aave.160329.nc + cpl/gridmaps/fv10x15/map_fv10x15_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv10x15_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv10x15_aave.160329.nc - cpl/gridmaps/fv4x5/map_fv4x5_TO_gland5km_aave.160329.nc - cpl/gridmaps/fv4x5/map_fv4x5_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv4x5_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv4x5_aave.160329.nc + cpl/gridmaps/fv4x5/map_fv4x5_TO_gland5km_aave.160329.nc + cpl/gridmaps/fv4x5/map_fv4x5_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv4x5_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv4x5_aave.160329.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gland5km_aave.160329.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne16np4_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne16np4_aave.160329.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gland5km_aave.160329.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne16np4_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne16np4_aave.160329.nc - cpl/gridmaps/ne30np4/map_ne30np4_TO_gland5km_aave.160329.nc - cpl/gridmaps/ne30np4/map_ne30np4_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne30np4_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne30np4_aave.160329.nc + cpl/gridmaps/ne30np4/map_ne30np4_TO_gland5km_aave.160329.nc + cpl/gridmaps/ne30np4/map_ne30np4_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne30np4_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne30np4_aave.160329.nc - cpl/gridmaps/ne120np4/map_ne120np4_TO_gland5km_aave.160329.nc - cpl/gridmaps/ne120np4/map_ne120np4_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne120np4_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne120np4_aave.160329.nc + cpl/gridmaps/ne120np4/map_ne120np4_TO_gland5km_aave.160329.nc + cpl/gridmaps/ne120np4/map_ne120np4_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne120np4_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne120np4_aave.160329.nc @@ -2234,66 +1423,66 @@ - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland5km_aave.150514.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland5km_blin.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv0.9x1.25_aave.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv0.9x1.25_aave.150514.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland5km_aave.150514.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland5km_blin.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv0.9x1.25_aave.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv0.9x1.25_aave.150514.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland5km_aave.150514.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland5km_blin.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv1.9x2.5_aave.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv1.9x2.5_aave.150514.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland5km_aave.150514.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland5km_blin.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv1.9x2.5_aave.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv1.9x2.5_aave.150514.nc - cpl/gridmaps/T31/map_T31_TO_gland5km_aave.150514.nc - cpl/gridmaps/T31/map_T31_TO_gland5km_blin.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_T31_aave.150514.nc - cpl/gridmaps/gland5km/map_gland5km_TO_T31_aave.150514.nc + cpl/gridmaps/T31/map_T31_TO_gland5km_aave.150514.nc + cpl/gridmaps/T31/map_T31_TO_gland5km_blin.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_T31_aave.150514.nc + cpl/gridmaps/gland5km/map_gland5km_TO_T31_aave.150514.nc - cpl/gridmaps/360x720/map_360x720_TO_gland5km_aave.160329.nc - cpl/gridmaps/360x720/map_360x720_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_360x720_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_360x720_aave.160329.nc + cpl/gridmaps/360x720/map_360x720_TO_gland5km_aave.160329.nc + cpl/gridmaps/360x720/map_360x720_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_360x720_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_360x720_aave.160329.nc - cpl/gridmaps/fv10x15/map_fv10x15_TO_gland5km_aave.160329.nc - cpl/gridmaps/fv10x15/map_fv10x15_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv10x15_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv10x15_aave.160329.nc + cpl/gridmaps/fv10x15/map_fv10x15_TO_gland5km_aave.160329.nc + cpl/gridmaps/fv10x15/map_fv10x15_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv10x15_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv10x15_aave.160329.nc - cpl/gridmaps/fv4x5/map_fv4x5_TO_gland5km_aave.160329.nc - cpl/gridmaps/fv4x5/map_fv4x5_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv4x5_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_fv4x5_aave.160329.nc + cpl/gridmaps/fv4x5/map_fv4x5_TO_gland5km_aave.160329.nc + cpl/gridmaps/fv4x5/map_fv4x5_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv4x5_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_fv4x5_aave.160329.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gland5km_aave.160329.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne16np4_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne16np4_aave.160329.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gland5km_aave.160329.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne16np4_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne16np4_aave.160329.nc - cpl/gridmaps/ne30np4/map_ne30np4_TO_gland5km_aave.160329.nc - cpl/gridmaps/ne30np4/map_ne30np4_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne30np4_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne30np4_aave.160329.nc + cpl/gridmaps/ne30np4/map_ne30np4_TO_gland5km_aave.160329.nc + cpl/gridmaps/ne30np4/map_ne30np4_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne30np4_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne30np4_aave.160329.nc - cpl/gridmaps/ne120np4/map_ne120np4_TO_gland5km_aave.160329.nc - cpl/gridmaps/ne120np4/map_ne120np4_TO_gland5km_blin.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne120np4_aave.160329.nc - cpl/gridmaps/gland5km/map_gland5km_TO_ne120np4_aave.160329.nc + cpl/gridmaps/ne120np4/map_ne120np4_TO_gland5km_aave.160329.nc + cpl/gridmaps/ne120np4/map_ne120np4_TO_gland5km_blin.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne120np4_aave.160329.nc + cpl/gridmaps/gland5km/map_gland5km_TO_ne120np4_aave.160329.nc @@ -2301,24 +1490,24 @@ - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland10km_aave.150514.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland10km_blin.150514.nc - cpl/gridmaps/gland10km/map_gland10km_TO_fv0.9x1.25_aave.150514.nc - cpl/gridmaps/gland10km/map_gland10km_TO_fv0.9x1.25_aave.150514.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland10km_aave.150514.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland10km_blin.150514.nc + cpl/gridmaps/gland10km/map_gland10km_TO_fv0.9x1.25_aave.150514.nc + cpl/gridmaps/gland10km/map_gland10km_TO_fv0.9x1.25_aave.150514.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland10km_aave.150514.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland10km_blin.150514.nc - cpl/gridmaps/gland10km/map_gland10km_TO_fv1.9x2.5_aave.150514.nc - cpl/gridmaps/gland10km/map_gland10km_TO_fv1.9x2.5_aave.150514.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland10km_aave.150514.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland10km_blin.150514.nc + cpl/gridmaps/gland10km/map_gland10km_TO_fv1.9x2.5_aave.150514.nc + cpl/gridmaps/gland10km/map_gland10km_TO_fv1.9x2.5_aave.150514.nc - cpl/gridmaps/T31/map_T31_TO_gland10km_aave.150514.nc - cpl/gridmaps/T31/map_T31_TO_gland10km_blin.150514.nc - cpl/gridmaps/gland10km/map_gland10km_TO_T31_aave.150514.nc - cpl/gridmaps/gland10km/map_gland10km_TO_T31_aave.150514.nc + cpl/gridmaps/T31/map_T31_TO_gland10km_aave.150514.nc + cpl/gridmaps/T31/map_T31_TO_gland10km_blin.150514.nc + cpl/gridmaps/gland10km/map_gland10km_TO_T31_aave.150514.nc + cpl/gridmaps/gland10km/map_gland10km_TO_T31_aave.150514.nc @@ -2326,66 +1515,66 @@ - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland20km_aave.150514.nc - cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland20km_blin.150514.nc - cpl/gridmaps/gland20km/map_gland20km_TO_fv0.9x1.25_aave.150514.nc - cpl/gridmaps/gland20km/map_gland20km_TO_fv0.9x1.25_aave.150514.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland20km_aave.150514.nc + cpl/gridmaps/fv0.9x1.25/map_fv0.9x1.25_TO_gland20km_blin.150514.nc + cpl/gridmaps/gland20km/map_gland20km_TO_fv0.9x1.25_aave.150514.nc + cpl/gridmaps/gland20km/map_gland20km_TO_fv0.9x1.25_aave.150514.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland20km_aave.150514.nc - cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland20km_blin.150514.nc - cpl/gridmaps/gland20km/map_gland20km_TO_fv1.9x2.5_aave.150514.nc - cpl/gridmaps/gland20km/map_gland20km_TO_fv1.9x2.5_aave.150514.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland20km_aave.150514.nc + cpl/gridmaps/fv1.9x2.5/map_fv1.9x2.5_TO_gland20km_blin.150514.nc + cpl/gridmaps/gland20km/map_gland20km_TO_fv1.9x2.5_aave.150514.nc + cpl/gridmaps/gland20km/map_gland20km_TO_fv1.9x2.5_aave.150514.nc - cpl/gridmaps/T31/map_T31_TO_gland20km_aave.150514.nc - cpl/gridmaps/T31/map_T31_TO_gland20km_blin.150514.nc - cpl/gridmaps/gland20km/map_gland20km_TO_T31_aave.150514.nc - cpl/gridmaps/gland20km/map_gland20km_TO_T31_aave.150514.nc + cpl/gridmaps/T31/map_T31_TO_gland20km_aave.150514.nc + cpl/gridmaps/T31/map_T31_TO_gland20km_blin.150514.nc + cpl/gridmaps/gland20km/map_gland20km_TO_T31_aave.150514.nc + cpl/gridmaps/gland20km/map_gland20km_TO_T31_aave.150514.nc - cpl/gridmaps/360x720/map_360x720_TO_gland20km_aave.160329.nc - cpl/gridmaps/360x720/map_360x720_TO_gland20km_blin.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_360x720_aave.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_360x720_aave.160329.nc + cpl/gridmaps/360x720/map_360x720_TO_gland20km_aave.160329.nc + cpl/gridmaps/360x720/map_360x720_TO_gland20km_blin.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_360x720_aave.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_360x720_aave.160329.nc - cpl/gridmaps/fv10x15/map_fv10x15_TO_gland20km_aave.160329.nc - cpl/gridmaps/fv10x15/map_fv10x15_TO_gland20km_blin.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_fv10x15_aave.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_fv10x15_aave.160329.nc + cpl/gridmaps/fv10x15/map_fv10x15_TO_gland20km_aave.160329.nc + cpl/gridmaps/fv10x15/map_fv10x15_TO_gland20km_blin.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_fv10x15_aave.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_fv10x15_aave.160329.nc - cpl/gridmaps/fv4x5/map_fv4x5_TO_gland20km_aave.160329.nc - cpl/gridmaps/fv4x5/map_fv4x5_TO_gland20km_blin.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_fv4x5_aave.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_fv4x5_aave.160329.nc + cpl/gridmaps/fv4x5/map_fv4x5_TO_gland20km_aave.160329.nc + cpl/gridmaps/fv4x5/map_fv4x5_TO_gland20km_blin.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_fv4x5_aave.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_fv4x5_aave.160329.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gland20km_aave.160329.nc - cpl/gridmaps/ne16np4/map_ne16np4_TO_gland20km_blin.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_ne16np4_aave.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_ne16np4_aave.160329.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gland20km_aave.160329.nc + cpl/gridmaps/ne16np4/map_ne16np4_TO_gland20km_blin.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_ne16np4_aave.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_ne16np4_aave.160329.nc - cpl/gridmaps/ne30np4/map_ne30np4_TO_gland20km_aave.160329.nc - cpl/gridmaps/ne30np4/map_ne30np4_TO_gland20km_blin.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_ne30np4_aave.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_ne30np4_aave.160329.nc + cpl/gridmaps/ne30np4/map_ne30np4_TO_gland20km_aave.160329.nc + cpl/gridmaps/ne30np4/map_ne30np4_TO_gland20km_blin.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_ne30np4_aave.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_ne30np4_aave.160329.nc - cpl/gridmaps/ne120np4/map_ne120np4_TO_gland20km_aave.160329.nc - cpl/gridmaps/ne120np4/map_ne120np4_TO_gland20km_blin.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_ne120np4_aave.160329.nc - cpl/gridmaps/gland20km/map_gland20km_TO_ne120np4_aave.160329.nc + cpl/gridmaps/ne120np4/map_ne120np4_TO_gland20km_aave.160329.nc + cpl/gridmaps/ne120np4/map_ne120np4_TO_gland20km_blin.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_ne120np4_aave.160329.nc + cpl/gridmaps/gland20km/map_gland20km_TO_ne120np4_aave.160329.nc @@ -2400,38 +1589,38 @@ - cpl/gridmaps/gland4km/map_gland4km_to_gx1v6_nnsm_e1000r300_150512.nc + cpl/gridmaps/gland4km/map_gland4km_to_gx1v6_nnsm_e1000r300_161227.nc - cpl/gridmaps/gland4km/map_gland4km_to_gx3v7_nnsm_e1000r300_150514.nc + cpl/gridmaps/gland4km/map_gland4km_to_gx3v7_nnsm_e1000r300_161227.nc - cpl/gridmaps/gland5km/map_gland5km_to_gx1v6_nnsm_e1000r300_150512.nc + cpl/gridmaps/gland5km/map_gland5km_to_gx1v6_nnsm_e1000r300_150512.nc - cpl/gridmaps/gland5km/map_gland5km_to_gx3v7_nnsm_e1000r300_150514.nc + cpl/gridmaps/gland5km/map_gland5km_to_gx3v7_nnsm_e1000r300_150514.nc - cpl/gridmaps/gland5km/map_gland5km_to_gx1v6_nnsm_e1000r300_150512.nc + cpl/gridmaps/gland5km/map_gland5km_to_gx1v6_nnsm_e1000r300_150512.nc - cpl/gridmaps/gland5km/map_gland5km_to_gx3v7_nnsm_e1000r300_150514.nc + cpl/gridmaps/gland5km/map_gland5km_to_gx3v7_nnsm_e1000r300_150514.nc - cpl/gridmaps/gland10km/map_gland10km_to_gx1v6_nnsm_e1000r300_150512.nc + cpl/gridmaps/gland10km/map_gland10km_to_gx1v6_nnsm_e1000r300_150512.nc - cpl/gridmaps/gland10km/map_gland10km_to_gx3v7_nnsm_e1000r300_150514.nc + cpl/gridmaps/gland10km/map_gland10km_to_gx3v7_nnsm_e1000r300_150514.nc - cpl/gridmaps/gland20km/map_gland20km_to_gx1v6_nnsm_e1000r300_150512.nc + cpl/gridmaps/gland20km/map_gland20km_to_gx1v6_nnsm_e1000r300_150512.nc - cpl/gridmaps/gland20km/map_gland20km_to_gx3v7_nnsm_e1000r300_150514.nc + cpl/gridmaps/gland20km/map_gland20km_to_gx3v7_nnsm_e1000r300_150514.nc diff --git a/cime/cime_config/cesm/machines/Makefile b/cime/cime_config/cesm/machines/Makefile index 74d835133435..e9a25c401b49 100644 --- a/cime/cime_config/cesm/machines/Makefile +++ b/cime/cime_config/cesm/machines/Makefile @@ -1,11 +1,7 @@ #=============================================================================== +# # Common Makefile: a framework for building all CIME components and more # -# Command-line variables -# MODEL= ~ a standard macro definition, often found in the included -# MACFILE, used to trigger special compilation flags -# Supported compilers -# ibm, bgl, bgp, pgi, intel, pathscale, gnu, nag #=============================================================================== # Set up special characters @@ -80,7 +76,7 @@ endif # set CPP options (must use this before any flags or cflags settings) #=============================================================================== -CPPDEFS := $(USER_CPPDEFS) -D$(OS) -DCPR$(shell echo $(COMPILER) | tr a-z A-z) +CPPDEFS := $(USER_CPPDEFS) # Unless DEBUG mode is enabled, use NDEBUG to turn off assert statements. ifneq ($(strip $(DEBUG)),TRUE) @@ -137,10 +133,11 @@ endif ifeq (,$(SHAREDPATH)) - SHAREDPATH = $(SHAREDLIBROOT)/$(COMPILER)/$(MPILIB)/$(DEBUGDIR)/$(THREADDIR) + SHAREDPATH = $(COMPILER)/$(MPILIB)/$(DEBUGDIR)/$(THREADDIR) endif +INSTALL_SHAREDPATH = $(EXEROOT)/$(SHAREDPATH) -include $(CASEROOT)/Macros +include $(CASEROOT)/Macros.make # Decide whether to use a C++ or Fortran linker, based on whether we # are using any C++ code and the compiler-dependent CXX_LINKER variable ifeq ($(USE_CXX), true) @@ -188,23 +185,57 @@ ifndef AR AR := ar endif -ifdef NETCDF_PATH +ifdef NETCDF_C_PATH + ifndef NETCDF_FORTRAN_PATH + $(error "NETCDF_C_PATH specified without NETCDF_FORTRAN_PATH") + endif + NETCDF_SEPARATE:=true + ifndef INC_NETCDF_C + INC_NETCDF_C:=$(NETCDF_C_PATH)/include + endif + ifndef INC_NETCDF_FORTRAN + INC_NETCDF_FORTRAN:=$(NETCDF_FORTRAN_PATH)/include + endif + ifndef LIB_NETCDF_C + LIB_NETCDF_C:=$(NETCDF_C_PATH)/lib + endif + ifndef LIB_NETCDF_FORTRAN + LIB_NETCDF_FORTRAN:=$(NETCDF_C_PATH)/lib + endif + else ifdef NETCDF_FORTRAN_PATH + $(error "NETCDF_FORTRAN_PATH specified without NETCDF_C_PATH") + else ifdef NETCDF_PATH + NETCDF_SEPARATE:=false ifndef INC_NETCDF INC_NETCDF:=$(NETCDF_PATH)/include endif ifndef LIB_NETCDF LIB_NETCDF:=$(NETCDF_PATH)/lib endif -endif -ifdef PNETCDF_PATH - ifndef $(INC_PNETCDF) - INC_PNETCDF:=$(PNETCDF_PATH)/include +else + # No Netcdf is an error unless target is clean or DEP + ifneq ($(MAKECMDGOALS), db_files) + ifneq ($(MAKECMDGOALS), db_flags) + ifeq (,$(findstring clean,$(MAKECMDGOALS))) + $(error NETCDF not found: Define NETCDF_PATH or NETCDF_C_PATH and NETCDF_FORTRAN_PATH in config_machines.xml or config_compilers.xml) + endif endif - ifndef LIB_PNETCDF - LIB_PNETCDF:=$(PNETCDF_PATH)/lib endif endif + +ifeq ($(MPILIB),mpi-serial) + undefine PNETCDF_PATH +else + ifdef PNETCDF_PATH + ifndef $(INC_PNETCDF) + INC_PNETCDF:=$(PNETCDF_PATH)/include + endif + ifndef LIB_PNETCDF + LIB_PNETCDF:=$(PNETCDF_PATH)/lib + endif + endif +endif ifeq ($(strip $(USE_TRILINOS)), TRUE) ifdef TRILINOS_PATH ifndef INC_TRILINOS @@ -247,9 +278,7 @@ endif ifndef CONFIG_ARGS CONFIG_ARGS := endif -ifeq ($(MPILIB),mpi-serial) - CONFIG_ARGS+= --enable-mpiserial -endif + ifeq ($(findstring pio,$(MODEL)),pio) CONFIG_ARGS+= --enable-timing ifeq ($DEBUG,TRUE) @@ -277,7 +306,7 @@ ifeq ($(strip $(MPILIB)), mpi-serial) MPIFC := $(SFC) MPICC := $(SCC) MPICXX := $(SCXX) - CONFIG_ARGS += --enable-mpiserial MCT_PATH=$(SHAREDPATH)/mct/mpi-serial + CONFIG_ARGS += MCT_PATH=$(SHAREDLIBROOT)/$(SHAREDPATH)/mct/mpi-serial else CC := $(MPICC) FC := $(MPIFC) @@ -287,21 +316,18 @@ else LIB_MPI := $(MPI_PATH)/lib endif endif - +CSM_SHR_INCLUDE:=$(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/include +# This is needed so that dependancies are found +VPATH+=$(CSM_SHR_INCLUDE) #=============================================================================== # Set include paths (needed after override for any model specific builds below) #=============================================================================== -INCLDIR += -I$(SHAREDPATH)/include -I$(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share +INCLDIR += -I$(INSTALL_SHAREDPATH)/include -I$(CSM_SHR_INCLUDE) -# -# Tell gmake to look in the csm_share directory for shr_*.mod files -# - -vpath shr%.mod $(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share - - -ifdef INC_NETCDF +ifeq ($(NETCDF_SEPARATE), false) INCLDIR += -I$(INC_NETCDF) +else ifeq ($(NETCDF_SEPARATE), true) + INCLDIR += -I$(INC_NETCDF_C) -I$(INC_NETCDF_FORTRAN) endif ifdef MOD_NETCDF INCLDIR += -I$(MOD_NETCDF) @@ -316,42 +342,16 @@ ifdef INC_TRILINOS INCLDIR += -I$(INC_TRILINOS) endif -ifeq ($(MODEL),driver) - INCLDIR += -I$(EXEROOT)/atm/obj -I$(EXEROOT)/ice/obj -I$(EXEROOT)/ocn/obj -I$(EXEROOT)/glc/obj -I$(EXEROOT)/rof/obj -I$(EXEROOT)/wav/obj -I$(EXEROOT)/esp/obj -# nagfor and gcc have incompatible LDFLAGS. -# nagfor requires the weird "-Wl,-Wl,," syntax. -# If done in config_compilers.xml, we break MCT. - ifeq ($(strip $(COMPILER)),nag) - SLIBS += -Wl,-Wl,,-rpath=$(NETCDF_PATH)/lib - endif -else - ifeq ($(strip $(COMPILER)),nag) - ifeq ($(DEBUG), TRUE) - ifeq ($(strip $(MACH)),hobart) - # GCC needs to be able to link to - # nagfor runtime to get autoconf - # tests to work. - CFLAGS += -Wl,--as-needed,--allow-shlib-undefined - SLIBS += -L$(COMPILER_PATH)/lib/NAG_Fortran -lf60rts - endif - endif - endif -endif - -ifeq ($(COMP_OCN), pop) - INCLDIR += -I$(EXEROOT)/ocn/cvmix -endif - ifndef MCT_LIBDIR - MCT_LIBDIR=$(SHAREDPATH)/mct + MCT_LIBDIR=$(INSTALL_SHAREDPATH)/lib endif ifndef PIO_LIBDIR - PIO_LIBDIR=$(SHAREDPATH)/pio$(PIO_VERSION) + PIO_LIBDIR=$(INSTALL_SHAREDPATH)/lib endif ifndef GPTL_LIBDIR - GPTL_LIBDIR=$(SHAREDPATH)/gptl + GPTL_LIBDIR=$(INSTALL_SHAREDPATH)/lib endif ifndef GLC_DIR @@ -361,7 +361,7 @@ ifndef CISM_LIBDIR CISM_LIBDIR=$(GLC_DIR)/lib endif -INCLDIR += -I$(SHAREDPATH)/include -I$(CIMEROOT)/share/csm_share/shr \ +INCLDIR += -I$(INSTALL_SHAREDPATH)/include -I$(CIMEROOT)/share/csm_share/shr \ -I$(CIMEROOT)/share/csm_share/include -I$(CIMEROOT)/share/shr_RandNum/include # # Use the MCT dir for the cache for all configure calls because it is the first one @@ -369,10 +369,17 @@ INCLDIR += -I$(SHAREDPATH)/include -I$(CIMEROOT)/share/csm_share/shr \ CFLAGS+=$(CPPDEFS) CXXFLAGS := $(CFLAGS) -CONFIG_ARGS += CC="$(SCC)" FC="$(SFC)" MPICC="$(MPICC)" \ - MPIFC="$(MPIFC)" FCFLAGS="$(FFLAGS) $(FREEFLAGS) $(INCLDIR)" \ - CPPDEFS="$(CPPDEFS)" CFLAGS="$(CFLAGS) -I.. $(INCLDIR)" \ - NETCDF_PATH=$(NETCDF_PATH) LDFLAGS="$(LDFLAGS)" +CONFIG_ARGS += CC="$(CC)" FC="$(FC)" MPICC="$(MPICC)" \ + MPIFC="$(MPIFC)" FCFLAGS="$(FFLAGS) $(FREEFLAGS) $(INCLDIR)" \ + CPPDEFS="$(CPPDEFS)" CFLAGS="$(CFLAGS) -I.. $(INCLDIR)" LDFLAGS="$(LDFLAGS)" + +ifeq ($(NETCDF_SEPARATE), false) + CONFIG_ARGS += NETCDF_PATH=$(NETCDF_PATH) +else ifeq ($(NETCDF_SEPARATE), true) + # The mct library needs the NetCDF_C library + CONFIG_ARGS += NETCDF_PATH=$(NETCDF_C_PATH) +endif + ifeq ($(COMPILER),nag) CONFIG_ARGS += LIBS="$(SLIBS)" endif @@ -419,9 +426,41 @@ endif # System libraries (netcdf, mpi, pnetcdf, esmf, trilinos, etc.) -ifndef SLIBS - SLIBS := -L$(LIB_NETCDF) -lnetcdf + +ifeq ($(NETCDF_SEPARATE), false) + SLIBS += -L$(LIB_NETCDF) -lnetcdff -lnetcdf +else ifeq ($(NETCDF_SEPARATE), true) + SLIBS += -L$(LIB_NETCDF_FORTRAN) -L$(LIB_NETCDF_C) -lnetcdff -lnetcdf endif + + +ifeq ($(MODEL),driver) + INCLDIR += -I$(EXEROOT)/atm/obj -I$(EXEROOT)/ice/obj -I$(EXEROOT)/ocn/obj -I$(EXEROOT)/glc/obj -I$(EXEROOT)/rof/obj -I$(EXEROOT)/wav/obj -I$(EXEROOT)/esp/obj +# nagfor and gcc have incompatible LDFLAGS. +# nagfor requires the weird "-Wl,-Wl,," syntax. +# If done in config_compilers.xml, we break MCT. + ifeq ($(strip $(COMPILER)),nag) + ifeq ($(NETCDF_SEPARATE), false) + SLIBS += -Wl,-Wl,,-rpath=$(NETCDF_PATH)/lib + else ifeq ($(NETCDF_SEPARATE), true) + SLIBS += -Wl,-Wl,,-rpath=$(NETCDF_C_PATH)/lib + SLIBS += -Wl,-Wl,,-rpath=$(NETCDF_FORTRAN_PATH)/lib + endif + endif +else + ifeq ($(strip $(COMPILER)),nag) + ifeq ($(DEBUG), TRUE) + ifeq ($(strip $(MACH)),hobart) + # GCC needs to be able to link to + # nagfor runtime to get autoconf + # tests to work. + CFLAGS += -Wl,--as-needed,--allow-shlib-undefined + SLIBS += -L$(COMPILER_PATH)/lib/NAG_Fortran -lf60rts + endif + endif + endif +endif + ifdef LIB_PNETCDF SLIBS += -L$(LIB_PNETCDF) -lpnetcdf endif @@ -476,23 +515,13 @@ endif # Drive configure scripts for support libraries (mct) #------------------------------------------------------------------------------ - -$(MCT_LIBDIR)/Makefile.conf: +$(SHAREDLIBROOT)/$(SHAREDPATH)/mct/Makefile.conf: @echo "SHAREDLIBROOT |$(SHAREDLIBROOT)| SHAREDPATH |$(SHAREDPATH)|"; \ $(CONFIG_SHELL) $(CIMEROOT)/externals/mct/configure $(CONFIG_ARGS) --srcdir $(CIMEROOT)/externals/mct -$(MCT_LIBDIR)/mpi-serial/Makefile.conf: +$(SHAREDLIBROOT)/$(SHAREDPATH)/mct/mpi-serial/Makefile.conf: @echo "SHAREDLIBROOT |$(SHAREDLIBROOT)| SHAREDPATH |$(SHAREDPATH)|"; \ - $(CONFIG_SHELL) $(CIMEROOT)/externals/mct/mpi-serial/configure $(CONFIG_ARGS) --srcdir $(CIMEROOT)/externals/mct - -$(MCT_LIBDIR)/mpeu/libmpeu.a: $(MCT_LIBDIR)/Makefile.conf - $(MAKE) -C $(MCT_LIBDIR)/mpeu - -$(MCT_LIBDIR)/mct/libmct.a: $(MCT_LIBDIR)/mpeu/libmpeu.a - $(MAKE) -C $(MCT_LIBDIR)/mct - -$(MCT_LIBDIR)/mpi-serial/libmpi-serial.a: $(MCT_LIBDIR)/mpi-serial/Makefile.conf - $(MAKE) -C $(MCT_LIBDIR)/mpi-serial + $(CONFIG_SHELL) $(CIMEROOT)/externals/mct/mpi-serial/configure $(CONFIG_ARGS) --srcdir $(CIMEROOT)/externals/mct/mpi-serial ifeq ($(PIO_VERSION),2) # This is a pio2 library @@ -514,7 +543,7 @@ MCTLIBS = $(MCT_LIBDIR)/libmct.a $(MCT_LIBDIR)/libmpeu.a GPTLLIB = $(GPTL_LIBDIR)/libgptl.a -ULIBS += -L$(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share -lcsm_share -L$(SHAREDPATH)/lib $(PIOLIBNAME) -lgptl -lmct -lmpeu +ULIBS += -L$(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/lib -lcsm_share -L$(INSTALL_SHAREDPATH)/lib $(PIOLIBNAME) -lgptl -lmct -lmpeu #------------------------------------------------------------------------------ # Drive cmake script for cism and pio @@ -528,24 +557,31 @@ endif # doesn't seem to be able to differentiate between free & fixed # fortran flags) CMAKE_OPTS += -D CMAKE_Fortran_FLAGS:STRING="$(FFLAGS) $(INCLDIR)" \ - -D CMAKE_C_FLAGS:STRING="$(CFLAGS) $(INCLDIR)" \ - -D CMAKE_CXX_FLAGS:STRING="$(CXXFLAGS) $(INCLDIR)" \ - -D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \ - -D NETCDF_DIR:STRING=$(NETCDF_PATH) \ - -D GPTL_PATH:STRING=$(SHAREDPATH) \ - -D PIO_ENABLE_TESTS:BOOL=OFF \ - -D USER_CMAKE_MODULE_PATH:STRING=$(CIMEROOT)/externals/CMake + -D CMAKE_C_FLAGS:STRING="$(CFLAGS) $(INCLDIR)" \ + -D CMAKE_CXX_FLAGS:STRING="$(CXXFLAGS) $(INCLDIR)" \ + -D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \ + -D GPTL_PATH:STRING=$(INSTALL_SHAREDPATH) \ + -D PIO_ENABLE_TESTS:BOOL=OFF \ + -D USER_CMAKE_MODULE_PATH:STRING=$(CIMEROOT)/externals/CMake + +# Allow for separate installations of the NetCDF C and Fortran libraries +ifeq ($(NETCDF_SEPARATE), false) + CMAKE_OPTS += -D NetCDF_PATH:PATH=$(NETCDF_PATH) +else ifeq ($(NETCDF_SEPARATE), true) + CMAKE_OPTS += -D NetCDF_C_PATH:PATH=$(NETCDF_C_PATH) \ + -D NetCDF_Fortran_DIR:PATH=$(NETCDF_FORTRAN_PATH) +endif ifdef PNETCDF_PATH - CMAKE_OPTS += -D PNETCDF_DIR:STRING="$(PNETCDF_PATH)" + CMAKE_OPTS += -D PnetCDF_PATH:STRING="$(PNETCDF_PATH)" else - CMAKE_OPTS += -D WITH_PNETCDF:LOGICAL=FALSE -D PIO_USE_MPIIO:LOGICAL=FALSE + CMAKE_OPTS += -D WITH_PNETCDF:LOGICAL=FALSE -D PIO_USE_MPIIO:LOGICAL=FALSE endif # NAG doesn't get along too nicely with PnetCDF Fortran interfaces. ifeq ($(COMPILER),nag) ifeq ($(PIO_VERSION),1) - CMAKE_OPTS += -D WITH_PNETCDF:LOGICAL=FALSE -D PIO_USE_MPIIO:LOGICAL=FALSE + CMAKE_OPTS += -D WITH_PNETCDF:LOGICAL=FALSE -D PIO_USE_MPIIO:LOGICAL=FALSE endif endif @@ -563,9 +599,9 @@ ifndef CMAKE_ENV_VARS CMAKE_ENV_VARS := endif CMAKE_ENV_VARS += CC=$(CC) \ - CXX=$(CXX) \ - FC=$(FC) \ - LDFLAGS="$(LDFLAGS)" + CXX=$(CXX) \ + FC=$(FC) \ + LDFLAGS="$(LDFLAGS)" # We declare $(GLC_DIR)/Makefile to be a phony target so that cmake is @@ -636,8 +672,13 @@ db_flags: test_fc: test_fc.o $(LD) -o $@ test_fc.o $(LDFLAGS) +ifeq ($(NETCDF_SEPARATE), false) test_nc: test_nc.o - $(LD) -o $@ test_nc.o -L$(LIB_NETCDF) -lnetcdf $(LDFLAGS) + $(LD) -o $@ test_nc.o -L$(LIB_NETCDF) -lnetcdff -lnetcdf $(LDFLAGS) +else ifeq ($(NETCDF_SEPARATE), true) +test_nc: test_nc.o + $(LD) -o $@ test_nc.o -L$(LIB_NETCDF_FORTRAN) -L$(LIB_NETCDF_C) -lnetcdff -lnetcdf $(LDFLAGS) +endif test_mpi: test_mpi.o $(LD) -o $@ test_mpi.o $(LDFLAGS) test_esmf: test_esmf.o @@ -651,12 +692,17 @@ ifeq ($(CLMVER),$(null)) LNDOBJDIR = $(EXEROOT)/lnd/obj LNDLIBDIR=$(LIBROOT) LNDLIB := liblnd.a + INCLDIR += -I$(LNDOBJDIR) else - LNDOBJDIR = $(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/clm/obj - LNDLIBDIR = $(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/lib + LNDOBJDIR = $(SHAREDLIBROOT)/$(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/clm/obj + LNDLIBDIR = $(EXEROOT)/$(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/lib LNDLIB := libclm.a + INCLDIR += -I$(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/include + ifeq ($(MODEL),clm) + INCLUDE_DIR = $(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/include + endif endif -INCLDIR += -I$(LNDOBJDIR) + ifeq ($(ULIBDEP),$(null)) ifneq ($(LIBROOT),$(null)) @@ -664,9 +710,6 @@ ifeq ($(ULIBDEP),$(null)) ULIBDEP += $(LIBROOT)/libice.a ULIBDEP += $(LNDLIBDIR)/$(LNDLIB) ULIBDEP += $(LIBROOT)/libocn.a - ifeq ($(COMP_OCN), pop) - ULIBDEP += $(LIBROOT)/libcvmix.a - endif ULIBDEP += $(LIBROOT)/librof.a ULIBDEP += $(LIBROOT)/libglc.a ULIBDEP += $(LIBROOT)/libwav.a @@ -674,7 +717,7 @@ ifeq ($(ULIBDEP),$(null)) ifeq ($(COMP_GLC), cism) ULIBDEP += $(CISM_LIBDIR)/libglimmercismfortran.a ifeq ($(CISM_USE_TRILINOS), TRUE) - ULIBDEP += $(CISM_LIBDIR)/libglimmercismcpp.a + ULIBDEP += $(CISM_LIBDIR)/libglimmercismcpp.a endif endif ifeq ($(OCN_SUBMODEL),moby) @@ -698,7 +741,7 @@ endif # libcsm_share.a is in ULIBDEP, but -lcsm_share is in ULIBS rather than CLIBS, # so this needs to be added after creating CLIBS above -CSMSHARELIB = $(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share/libcsm_share.a +CSMSHARELIB = $(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/lib/libcsm_share.a ULIBDEP += $(CSMSHARELIB) #------------------------------------------------------------------------------- @@ -709,12 +752,12 @@ ULIBDEP += $(CSMSHARELIB) .SUFFIXES: .F90 .F .f90 .f .c .cpp .o .in ifeq ($(MPILIB),mpi-serial) - MPISERIAL = $(MCT_LIBDIR)/mpi-serial/libmpi-serial.a + MPISERIAL = $(INSTALL_SHAREDPATH)/lib/libmpi-serial.a MLIBS += $(MPISERIAL) - CMAKE_OPTS += -DMPI_C_INCLUDE_PATH=$(SHAREDPATH)/include \ - -DMPI_Fortran_INCLUDE_PATH=$(SHAREDPATH)/include \ - -DMPI_C_LIBRARIES=$(SHAREDPATH)/lib/libmpi-serial.a \ - -DMPI_Fortran_LIBRARIES=$(SHAREDPATH)/lib/libmpi-serial.a + CMAKE_OPTS += -DMPI_C_INCLUDE_PATH=$(INSTALL_SHAREDPATH)/include \ + -DMPI_Fortran_INCLUDE_PATH=$(INSTALL_SHAREDPATH)/include \ + -DMPI_C_LIBRARIES=$(INSTALL_SHAREDPATH)/lib/libmpi-serial.a \ + -DMPI_Fortran_LIBRARIES=$(INSTALL_SHAREDPATH)/lib/libmpi-serial.a endif $(MCTLIBS) : $(MPISERIAL) @@ -729,11 +772,14 @@ endif $(EXEC_SE): $(OBJS) $(ULIBDEP) $(CSMSHARELIB) $(MCTLIBS) $(PIOLIB) $(GPTLLIB) $(LD) -o $(EXEC_SE) $(OBJS) $(CLIBS) $(ULIBS) $(SLIBS) $(MLIBS) $(LDFLAGS) -$(COMPLIB): $(OBJS) +ifdef INCLUDE_DIR + $(COMPLIB): $(OBJS) $(AR) -r $(COMPLIB) $(OBJS) - -$(LIBROOT)/libcvmix.a: - $(MAKE) -f $(CIMEROOT)/../components/pop/source/cvmix/Makefile SRC_DIR=$(CIMEROOT)/../components/pop/source/cvmix FC=$(SFC) FCFLAGS="$(FFLAGS) $(FREEFLAGS)" LIB_DIR=$(LIBROOT) + $(CP) *.$(MOD_SUFFIX) *.h $(INCLUDE_DIR) +else + $(COMPLIB): $(OBJS) + $(AR) -r $(COMPLIB) $(OBJS) +endif .c.o: $(CC) -c $(INCLDIR) $(INCS) $(CFLAGS) $< @@ -745,6 +791,7 @@ $(LIBROOT)/libcvmix.a: $(FC) -c $(INCLDIR) $(INCS) $(FFLAGS) $(FREEFLAGS) $< .F90.o: $(FC) -c $(INCLDIR) $(INCS) $(FFLAGS) $(FREEFLAGS) $(CONTIGUOUS_FLAG) $< + .cpp.o: $(CXX) -c $(INCLDIR) $(INCS) $(CXXFLAGS) $< @@ -753,18 +800,18 @@ $(LIBROOT)/libcvmix.a: cleanatm: $(RM) -f $(LIBROOT)/libatm.a - cd $(EXEROOT)/atm/obj; $(RM) -f *.o *.mod + $(RM) -fr $(EXEROOT)/atm/obj cleancpl: - cd $(EXEROOT)/cpl/obj; $(RM) -f *.o *.mod + $(RM) -fr $(EXEROOT)/cpl/obj cleanocn: - $(RM) -f $(LIBROOT)/libocn.a $(LIBROOT)/libcvmix.a - cd $(EXEROOT)/ocn/obj ; $(RM) -f *.o *.mod + $(RM) -f $(LIBROOT)/libocn.a + $(RM) -fr $(EXEROOT)/ocn/obj cleanwav: $(RM) -f $(LIBROOT)/libwav.a - cd $(EXEROOT)/wav/obj ; $(RM) -f *.o *.mod + $(RM) -fr $(EXEROOT)/wav/obj cleanglc: $(RM) -f $(LIBROOT)/libglc.a @@ -772,41 +819,40 @@ cleanglc: cleanesp: $(RM) -f $(LIBROOT)/libesp.a - cd $(EXEROOT)/esp/obj ; $(RM) -f *.o *.mod + $(RM) -fr $(EXEROOT)/esp/obj cleanice: $(RM) -f $(LIBROOT)/libice.a - cd $(EXEROOT)/ice/obj ; $(RM) -f *.o *.mod + $(RM) -fr $(EXEROOT)/ice/obj cleanrof: $(RM) -f $(LIBROOT)/librof.a - cd $(EXEROOT)/rof/obj ; $(RM) -f *.o *.mod + $(RM) -fr $(EXEROOT)/rof/obj cleanlnd: $(RM) -f $(LNDLIBDIR)/$(LNDLIB) - cd $(LNDOBJDIR) ; $(RM) -f *.o *.mod + $(RM) -fr $(LNDOBJDIR) cleancsmshare: $(RM) -f $(CSMSHARELIB) - $(RM) -fr $(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share + $(RM) -fr $(SHAREDLIBROOT)/$(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share cleanpio: - $(RM) -f $(SHAREDPATH)/lib/libpio* - $(RM) -fr $(PIO_LIBDIR) + $(RM) -f $(PIO_LIBDIR)/libpio* + $(RM) -fr $(SHAREDLIBROOT)/$(SHAREDPATH)/pio cleanmct: $(RM) -f $(MCTLIBS) - $(RM) -fr $(MCT_LIBDIR) + $(RM) -fr $(SHAREDLIBROOT)/$(SHAREDPATH)/mct cleangptl: $(RM) -f $(GPTLLIB) - $(RM) -fr $(GPTL_LIBDIR) + $(RM) -fr $(SHAREDLIBROOT)/$(SHAREDPATH)/gptl clean: cleanatm cleanocn cleanwav cleanglc cleanesp cleanice cleanrof cleanlnd realclean: clean cleancsmshare cleanpio cleanmct cleangptl - # the if-tests prevent DEPS files from being created when they're not needed ifneq ($(MAKECMDGOALS), db_files) ifneq ($(MAKECMDGOALS), db_flags) diff --git a/cime/cime_config/cesm/machines/buildlib.gptl b/cime/cime_config/cesm/machines/buildlib.gptl deleted file mode 100755 index c750690195df..000000000000 --- a/cime/cime_config/cesm/machines/buildlib.gptl +++ /dev/null @@ -1,25 +0,0 @@ -#! /bin/csh -f - -#============================================================================== -# Purpose: Build gptl library -#============================================================================== - -cd $CASEROOT # CASEROOT is always assumed to be an environment variable - -set CIMEROOT = `./xmlquery CIMEROOT -value ` -set GMAKE = `./xmlquery GMAKE -value ` - -# NOTE- (mv, 2015-01-02) SHAREDPATH is an environment variable set in -# the $CASE.build script - -setenv GPTL_DIR $CIMEROOT/share/timing # gptl directory -setenv SHAREDPATH $1 -setenv GPTL_LIBDIR $SHAREDPATH/gptl - -echo "Copying source to CESM EXEROOT..." - -cd $GPTL_LIBDIR - -$GMAKE -f $GPTL_DIR/Makefile install MACFILE=$CASEROOT/Macros MODEL=gptl || exit 1 - -exit 0 diff --git a/cime/cime_config/cesm/machines/buildlib.mct b/cime/cime_config/cesm/machines/buildlib.mct deleted file mode 100755 index 65cf5f5e5ef7..000000000000 --- a/cime/cime_config/cesm/machines/buildlib.mct +++ /dev/null @@ -1,100 +0,0 @@ -#! /bin/csh -fx - -#============================================================================== -# Purpose: Build the mct library -#============================================================================== - -cd $CASEROOT - -set CIMEROOT = `./xmlquery CIMEROOT -value ` -set CASETOOLS = `./xmlquery CASETOOLS -value ` -set GMAKE = `./xmlquery GMAKE -value ` -set GMAKE_J = `./xmlquery GMAKE_J -value ` -set MACH = `./xmlquery MACH -value ` -set MPILIB = `./xmlquery MPILIB -value ` -set OS = `./xmlquery OS -value ` - -setenv LIBDIR $1 -setenv MCT_DIR $CIMEROOT/externals/mct # mct directory -setenv MCT_LIBDIR $LIBDIR/mct - -echo "MCT_LIBDIR $MCT_LIBDIR" - - cd $MCT_LIBDIR - echo "Copying source to EXEROOT..." -# cp -r -p $MCT_DIR/* . - cp $MCT_DIR/Makefile . - mkdir mct - cp $MCT_DIR/mct/Makefile mct - mkdir mpeu - cp $MCT_DIR/mpeu/Makefile mpeu - mkdir mpi-serial - cp $MCT_DIR/mpi-serial/Makefile mpi-serial - cp $MCT_DIR/mpi-serial/*.h mpi-serial - - set runconf = 0 - set runclean = 0 - -# It would be harmless to just run "configure" each time but it -# takes time so use file "mct_conf" to determine if configure must -# be run. There are three possibilities: -# 1. brand new build -- run configure -# 2. already built but platform has changed (this can happen -# when a filesystem is mounted on multiple platforms) -- run configure -# 3. already built, same platform -- don't run configure -# - #if(-e mct_conf) then - # echo "MCT already built. Checking machine type" - # cp -f mct_conf mct_conf.old - # echo ${OS} > mct_conf - # set diffwc = 1 - # set diffwc = `diff mct_conf.old mct_conf | wc -m` - # if ($diffwc != 0) then - # echo "Different machine. Rerun configure" - # rm Makefile.conf.old - # rm -f $LIBROOT/libmct.a - # rm -f $LIBROOT/libmpeu.a - - # set runconf = 1 - # set runclean = 1 - # else - # echo "Same machine." - # cp -p Makefile.conf.old Makefile.conf - # endif - #else - # echo "New build of MCT" - # echo ${OS} > mct_conf - # set runconf = 1 - #endif - -# run configure with correct arguments if necessary - #if ($runconf == 1) then - echo "Running configure..." - echo "for OS=$OS MACH=$MACH" - $GMAKE -f $CASETOOLS/Makefile $MCT_LIBDIR/Makefile.conf MODEL=mct - #if($? != 0) then - # rm mct_conf* - #endif - #endif - - if ($runclean == 1) then - $GMAKE clean - endif - - cp -p Makefile.conf Makefile.conf.old - - $GMAKE SRCDIR=$MCT_DIR || exit 1 - - - cp -p mct/lib*.a $LIBDIR/lib - cp -p mpeu/lib*.a $LIBDIR/lib - if ( "$MPILIB" == "mpi-serial" ) then - cp -p mpi-serial/lib*.a $LIBDIR/lib - cp -p mpi-serial/*.h $LIBDIR/include - cp -p mpi-serial/*.mod $LIBDIR/include - endif - cp -p mct/*.mod $LIBDIR/include/ - cp -p mpeu/*.mod $LIBDIR/include/ - -exit 0 - diff --git a/cime/cime_config/cesm/machines/buildlib.pio b/cime/cime_config/cesm/machines/buildlib.pio deleted file mode 100755 index 569a26872511..000000000000 --- a/cime/cime_config/cesm/machines/buildlib.pio +++ /dev/null @@ -1,52 +0,0 @@ -#! /bin/csh -fx - -cd $CASEROOT - -set CIMEROOT = `./xmlquery CIMEROOT -value ` -set CASETOOLS = `./xmlquery CASETOOLS -value ` -set GMAKE = `./xmlquery GMAKE -value ` -set GMAKE_J = `./xmlquery GMAKE_J -value ` -set BLDROOT = $1 -# directory in which pio is built -setenv PIO_VERSION `./xmlquery PIO_VERSION -value` -set PIOVERSION="pio$PIO_VERSION" -set pio_dir="$BLDROOT/$PIOVERSION" -if (! -e $pio_dir) then - mkdir -p $pio_dir -endif -cd $pio_dir - -# ---------------------------------------------------------------------- -# Set options to cmake -# ---------------------------------------------------------------------- -# Note that some other generic CMAKE options are set in the Makefile -#set cmake_opts=" -D USER_CMAKE_MODULE_PATH=$CIMEROOT/externals/CMake" -#set cmake_opts="$cmake_opts -D GENF90_PATH=$CIMEROOT/externals/genf90" -set cmake_opts=" -D GENF90_PATH=$CIMEROOT/externals/genf90" - -# ---------------------------------------------------------------------- -# create the pio makefile by running cmake (done via a rule -# in the system-level makefile) -# ---------------------------------------------------------------------- -$GMAKE $pio_dir/Makefile MODEL=$PIOVERSION USER_CMAKE_OPTS="$cmake_opts" \ - PIO_LIBDIR=$pio_dir -f $CASETOOLS/Makefile || exit 1 - -# ---------------------------------------------------------------------- -# create the pio library (or libraries), using the makefile -# created by cmake -# ---------------------------------------------------------------------- -$GMAKE -j $GMAKE_J || exit 2 -if ( -d "$pio_dir/src" ) then - cp -p $pio_dir/src/clib/libpioc.* $BLDROOT/lib - cp -p $pio_dir/src/flib/libpiof.* $BLDROOT/lib - cp -p $pio_dir/src/clib/*.h $pio_dir/src/flib/*.mod $BLDROOT/include -else - if( -d "$pio_dir/pio" ) then - cd pio - endif - pwd - cp -p lib*.a $BLDROOT/lib - cp -p *.h *.mod $BLDROOT/include -endif -exit 0 - diff --git a/cime/cime_config/cesm/machines/config_batch.xml b/cime/cime_config/cesm/machines/config_batch.xml index 14379caad65b..419cd046ecbc 100644 --- a/cime/cime_config/cesm/machines/config_batch.xml +++ b/cime/cime_config/cesm/machines/config_batch.xml @@ -1,5 +1,5 @@ - + - + @@ -45,7 +38,7 @@ - + @@ -55,7 +48,7 @@ - + qstat qsub @@ -67,20 +60,33 @@ - + - + + qstat + qsub + #COBALT + (\d+) + --dependencies + + + + + + + + + bjobs bsub < #BSUB <(\d+)> - ^\#BSUB\s+-w.+\((\d+)\) -w 'done(jobid)' %H:%M @@ -89,8 +95,8 @@ - -n {{ totaltasks }} - -R "span[ptile={{ ptile }}]" + -n {{ total_tasks }} + -R "span[ptile={{ tasks_per_node }}]" -N -a {{ poe }} -o {{ output_error_path }}.%J @@ -99,11 +105,11 @@ - + qstat qsub #PBS - ^(\d+)\. + ^(\S+)$ -W depend=afterok:jobid %H:%M:%S @@ -121,9 +127,8 @@ - + squeue - sbatch #SBATCH (\d+)$ --dependency=afterok:jobid @@ -164,26 +169,18 @@ batch - - 00:59:00 - - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }}:xe -S {{ shell }} - regular + regular debug - - 00:30:00 - 01:00:00 - 05:00:00 - @@ -212,7 +209,7 @@ - + -A cpo -l {{ partition }} @@ -226,15 +223,10 @@ debug batch - - 00:45:00 - 01:50:00 - 05:00:00 - - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} -S {{ shell }} @@ -247,38 +239,59 @@ - #MSUB - - -A ees - -l gres=lscratchd - + sbatch + #MSUB + + -A ees + -l gres=lscratchd + + + + + -S {{ shell }} + -l select={{ num_nodes }}:ncpus={{ max_tasks_per_node }}:mpiprocs={{ tasks_per_node }}:ompthreads={{ thread_count }} + + + regular + + + + + + -S {{ shell }} + -l select={{ num_nodes }}:ncpus={{ max_tasks_per_node }}:mpiprocs={{ tasks_per_node }}:ompthreads={{ thread_count }} + + + regular + + + + default - - 01:00:00 - 01:00:00 - 01:00:00 - + + + + + default + + sbatch queue - - 00:59:00 - 08:59:00 - - + ^(\S+) -W group_list=$PROJECT @@ -289,13 +302,10 @@ normal - - 08:00:00 - - + ^(\S+) -W group_list=$PROJECT @@ -306,24 +316,17 @@ normal - - 08:00:00 - - + + sbatch ec - - 0:50:00 - 1:50:00 - 5:00:00 - - + ^(\S+) -W group_list=$PROJECT @@ -334,13 +337,10 @@ normal - - 08:00:00 - - + ^(\S+) -W group_list=$PROJECT @@ -351,62 +351,67 @@ - - #MSUB - - - -A ees - -l nodes={{ num_nodes }} - -l gres=lscratchd - - + + sbatch + #MSUB + + + -A ees + -l nodes={{ num_nodes }} + -l gres=lscratchd + + - + + sbatch batch - - 0:59:00 - - + + sbatch + + -C haswell + regular - debug + + + + + + sbatch + + -C knl + + + regular + - - 00:30:00 - - + + sbatch regular debug - - 00:30:00 - - + + ssh stampede.tacc.utexas.edu cd $CASEROOT ; sbatch normal development - - 00:30:00 - - + + sbatch default - - 01:30:00 - @@ -416,26 +421,19 @@ - - - 00:59:00 - 04:59:00 - + + sbatch - hpss + + caldera caldera regular capability + premium - - 2:00 - 2:00 - 4:00 - 12:00 - @@ -467,4 +465,3 @@ - diff --git a/cime/cime_config/cesm/machines/config_batch.xsd b/cime/cime_config/cesm/machines/config_batch.xsd deleted file mode 100644 index 4536bf976125..000000000000 --- a/cime/cime_config/cesm/machines/config_batch.xsd +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cime/cime_config/cesm/machines/config_build.xml b/cime/cime_config/cesm/machines/config_build.xml deleted file mode 100644 index dd0f2f12ef15..000000000000 --- a/cime/cime_config/cesm/machines/config_build.xml +++ /dev/null @@ -1,1370 +0,0 @@ - - - - - - - -D_USE_FLOW_CONTROL - - FALSE - - - - - -h noomp - -g -O0 - -O2 - - - - -DFORTRANUNDERSCORE -DNO_R16 - -DDIR=NOOP - -DDIR=NOOP - - - -s real64 - - - -f free -N 255 -h byteswapio -x dir - -h noomp - -g -O0 -K trap=fp -m1 - -O2,ipa2 -em - - - -O1,fp2,ipa0,scalar0,vector0 - - TRUE - - -Wl,--allow-multiple-definition -h byteswapio - - - - - - -mcmodel=medium -std=gnu99 - -fopenmp - -g -Wall - -O - - - -D CISM_GNU=ON - - - - -DFORTRANUNDERSCORE -DNO_R16 - - FORTRAN - - -fdefault-real-8 - - - - -mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none - -fopenmp - -g -Wall - -O - - - -O0 - - - -ffixed-form - - - -ffree-form - - FALSE - - -fopenmp - - mpicc - mpicxx - mpif90 - gcc - g++ - gfortran - TRUE - - - - - -g -qfullpath -qmaxmem=-1 - -O3 - -qsmp=omp - -qsmp=omp:noopt - - - - -DFORTRAN_SAME - - -WF,-D - - -qrealsize=8 - - - -g -qfullpath -qmaxmem=-1 - -O2 -qstrict -qinline=auto - -qsmp=omp - -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en - -qsmp=omp:noopt - -C - - - -qsuffix=f=f -qfixed=132 - - - -qsuffix=f=f90:cpp=F90 - - TRUE - - -qsmp=omp - -qsmp=omp:noopt - - - - - - -no-opt-dynamic-align -fp-model precise -std=gnu99 - -openmp - -O2 -debug minimal - -O0 -g - - - - -DFORTRANUNDERSCORE -DNO_R16 - - - -cxxlib - - FORTRAN - - -r8 - - - -no-opt-dynamic-align -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source - -openmp - - -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created - -O2 -debug minimal - - - -O0 - -openmp - - - -fixed -132 - - - -free - - TRUE - - -openmp - - mpicc - mpicxx - mpif90 - icc - icpc - ifort - - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - TRUE - - - - - -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR - -openmp - - - --host=x86_64-k1om-linux --build=x86_64-unknown-linux - - - - -DFORTRANUNDERSCORE -DNO_R16 - -DCPRINTEL - - - -cxxlib - - FORTRAN - - -r8 - - - -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs - -openmp - -O0 -g -check uninit -check bounds -check pointers -fpe0 - -O2 - - - -O0 -mmic - - - -fixed -132 - - - -free - - TRUE - - -openmp - -mmic - - mpiicc - mpiicpc - mpiifort - icc - icpc - ifort - - NETCDF_PATH/bin/nf-config --flibs - - TRUE - - - - - -std=gnu99 - -g - - - -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH - - - -r8 - - - - - -Wp,-macro=no_com -convert=BIG_ENDIAN -indirect CIMEROOT/cime_config/cesm/machines/nag_mpi_argument.txt - - -ieee=full -O2 - - - -C=all -g -time -f2003 -ieee=stop - -gline - -openmp - - -mismatch_all - - - FFLAGS - -ieee=full - - - - -g -time -f2003 -ieee=stop - -gline - -openmp - - - -fixed - - - -free - - FALSE - - -openmp - - mpicc - mpif90 - gcc - nagfor - - - - - -gopt -time - -mp - - - - - - - - - - - - - - - - - - - - - - - - - - - - -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 - - CXX - - -r8 - - - -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee - -mp - -O0 -g -Ktrap=fp -Mbounds -Kieee - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - - - -O0 -g -Ktrap=fp -Mbounds -Kieee - -mp - - - -Mfixed - - - -Mfree - - - - FALSE - - -time -Wl,--allow-multiple-definition - -mp - - mpicc - mpicxx - mpif90 - pgcc - pgc++ - pgf95 - - - - - -gopt -time - - - - - - - - - - - - - - - - - - - - - - - - - - - - -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DUSE_CUDA_FORTRAN -DCPRPGI - - CXX - - -r8 - - - -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee - -ta=nvidia -Mcuda=5.5,cc35 - -O0 -g -Ktrap=fp -Mbounds -Kieee - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - - - -O0 -g -Ktrap=fp -Mbounds -Kieee - -mp - - - -Mfixed - - - -Mfree - - - - FALSE - - -time -Wl,--allow-multiple-definition -ta=nvidia -Mcuda=5.0,cc35 - - mpicc - mpicxx - mpif90 - pgcc - pgc++ - pgf95 - - - - - -qarch=auto -qtune=auto -qcache=auto - - /usr/bin/bash - - -qarch=auto -qtune=auto -qcache=auto -qsclk=micro - -qspill=6000 - - - -qsigtrap=xl__trcedump - -bdatapsize:64K -bstackpsize:64K -btextpsize:32K - - mpcc_r - mpxlf2003_r - cc_r - xlf2003_r - - -lmassv -lessl - -lmass - - - - - - -O3 -qstrict - -qtune=440 -qarch=440d - - - --build=powerpc-bgp-linux --host=powerpc64-suse-linux - - - -DLINUX -DnoI8 - - - -qtune=440 -qarch=440d - -O3 -qstrict -qinline=auto - -qinitauto=FF911299 -qflttrap=ov:zero:inv:en - -qextname=flush - - - -Wl,--relax -Wl,--allow-multiple-definition - - - -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts - - blrts_xlc - blrts_xlf2003 - mpich.rts - /bgl/BlueLight/ppcfloor/bglsys - blrts_xlc - blrts_xlf2003 - - - - - -qtune=450 -qarch=450 -I/bgsys/drivers/ppcfloor/arch/include/ - - - --build=powerpc-bgp-linux --host=powerpc64-suse-linux - - - -DLINUX -DnoI8 - - - -qspillsize=2500 -qtune=450 -qarch=450 - -qextname=flush - - - -Wl,--relax -Wl,--allow-multiple-definition - - - - - - --build=powerpc-bgp-linux --host=powerpc64-suse-linux - - - -DLINUX - - - -g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush - -O3 -qstrict -qinline=auto - -qsmp=omp - -qsmp=omp:noopt - - - -Wl,--relax -Wl,--allow-multiple-definition - - - - - - -DCMAKE_SYSTEM_NAME=Catamount - - - -DLINUX - -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY - - cc - CC - ftn - NETCDF_DIR - lustre - PARALLEL_NETCDF_DIR - cc - CC - ftn - - - - - -DSYSDARWIN - - - -all_load - - - - - - -heap-arrays - - - - - - -xHost -no-save-temps - - - --host=Linux - - - -DHAVE_NANOTIME -DCPRINTEL - - - -xHost -no-save-temps - - - NETCDF - - mpiicc - mpiicpc - mpiifort - - NETCDF_DIR - PNETCDF_DIR - icc - ifort - - NETCDf MKL - - - - - - -mmic -O3 -fp-model precise -DFORTRANUNDERSCORE -no-save-temps - - - --host=x86_64-k1om-linux --build=x86_64-unknown-linux - - - -DHAVE_NANOTIME -DCPRINTELMIC -DCPRINTEL - - - - -O0 -g -check all -check noarg_temp_created - -O3 -mP2OPT_hpo_matrix_opt_framework=0 - -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -no-save-temps -no-opt-dynamic-align - - - -O0 -mmic - - - NETCDF -mmic - - mpiicc - mpiicpc - mpiifort - - NETCDF_DIR - PNETCDF_DIR - icc - ifort - - NETCDF MKL - - - - - - -DHAVE_PAPI - - lustre - - - - - -O2 - -nofma - - - -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o - - - -O2 - -nofma - - TRUE - - - - - --host=LINUX - - mpich - mpi - MPI_ROOT - NETCDF - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - - NETCDF_HOME - lustre - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMKL_PATH -lmkl_rt - - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - - NETCDF_HOME - lustre - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi - - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - - NETCDF_HOME - lustre - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi - - - - - - -O2 - -nomp - - - --host=Linux - - - -DLINUX - - - -O2 - -nomp - - - -nomp - - NETCDF_HOME - lustre - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi - - - - - - -O2 - - - --host=Linux - - - -DHAVE_PAPI - - - -O2 - - - -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf - - - - - - - -DNO_MPI2 - - NETCDF - gpfs - PNETCDF - mpicc - mpif90 - - - - - -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY - - /usr/lib64 - mpi - - NETCDF_PATH/bin/nf-config --flibs - - - - - - -Wl,-rpath,NETCDF_PATH/lib - -Wl,-rpath,COMPILER_PATH/lib/intel64 - -Wl,-rpath,COMPILER_PATH/mkl/lib/intel64 - - /home/santos/pFUnit/pFUnit_Intel_3_0 - - - - - -DNO_C_SIZEOF - - - - -kind=byte - - - - -L/home/santos/lib/fake_omp -lfake_omp -Wl,-Wl,,--rpath=/home/santos/lib/fake_omp - - /usr/local/openmpi-gcc-nag - /usr/local/netcdf-gcc-nag - /home/santos/pFUnit/pFUnit_NAG_3_0 - - - - - -O0 - - - -O0 - - - -lgomp - -Wl,-RNETCDF_PATH/lib - -Wl,-RCOMPILER_PATH/lib - -Wl,-RCOMPILER_PATH/libso - - - - - - -O2 - - - -O2 - - - -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib - - mpich - /usr/local/tools/mvapich2-pgi-1.7/ - /usr/local/tools/netcdf-pgi-4.1.3 - - /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs - - - - - - -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY - - /usr/lib64 - mpich - NETCDF_PATH - - NETCDF_PATH/bin/nf-config --flibs - - - - - - -lifcore - - - -lifcore - -mcmodel medium - - - -lquadmath - -Wl,-rpath,NETCDF_PATH/lib - -Wl,-rpath,COMPILER_PATH/lib/intel64 - -Wl,-rpath,COMPILER_PATH/mkl/lib/intel64 - -Wl,-rpath,MPI_PATH/lib - -lifcore - - /home/santos/pFUnit/pFUnit_Intel_3_0 - - -mkl=cluster - - - - - - - -DNO_C_SIZEOF - - - -lpthread - - /home/santos/pFUnit/pFUnit_NAG_3_0 - - - - - -O0 - - - -O0 - - - -lgomp - -Wl,-RNETCDF_PATH/lib - -Wl,-RCOMPILER_PATH/lib - -Wl,-RCOMPILER_PATH/libso - - - - - /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-gnu/install - - - - /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libO/Unicos.intel.64.mpi.default/ - /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libg/Unicos.intel.64.mpi.default/ - - NETCDF_PATH/bin/nf-config --flibs - - - - - - -O2 - - - -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o - - - -O2 - - TRUE - /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-pgi/install - - - - mpixlc_r - mpixlf2003_r - /bgsys/local/netcdf/ - gpfs - /bgsys/local/parallel-netcdf/v1.3.1 - mpixlc_r - mpixlf2003_r - - -L/bgsys/local/netcdf/lib -lnetcdf -L/bgsys/drivers/ppcfloor/comm/lib - - - - - /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install - - -O2 - - - --host=Linux - - - -lstdc++ -lmpi_cxx - - - -O2 - - NETCDFROOT - PNETCDFROOT - - NETCDF_PATH/bin/nf-config --flibs -lblas -llapack - - - - - - -qfloat=nomaf - - - -qfloat=nomaf - - HDF5 - - - /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf77_r - /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r - /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r - /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/ - /home/santos/pFUnit/pFUnit_IBM - gpfs - /soft/libraries/pnetcdf/1.6.1/cnk-xl/current/ - /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r - /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r - - -LNETCDF_PATH/lib -lnetcdff -lnetcdf -LHDF5/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib - - - - - - -O2 - - - --host=Linux - - - -DLINUX - - - -O2 - - NETCDF_LIB/.. - lustre - - -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi - - - - - - -O2 -aCORE-AVX2 -align array32byte - - icc - mpi - MPI_ROOT - /nasa/netcdf/4.1.3/intel/mpt - - -LNETCDF_DIR/lib -lnetcdff -lnetcdf - - - - - - -O2 -xAVX - - icc - mpi - MPI_ROOT - /nasa/netcdf/4.1.3/intel/mpt - - -LNETCDF_DIR/lib -lnetcdff -lnetcdf - - - - - - -O2 -xAVX - - icc - mpi - MPI_ROOT - /nasa/netcdf/4.1.3/intel/mpt - - -LNETCDF_DIR/lib -lnetcdff -lnetcdf - - - - - - -O2 -xSSE4.2 - - icc - mpi - MPI_ROOT - /nasa/netcdf/4.1.3/intel/mpt - - -LNETCDF_DIR/lib -lnetcdff -lnetcdf - - - - - - -xHost - - - -xHost - - - -LTACC_HDF5_LIB -lhdf5 - - mpiicc - mpicpc - mpiifort - icc - icpc - ifort - - NETCDF_PATH/bin/nf-config --flibs -LTACC_HDF5_LIB -lhdf5 - - TRILINOS_PATH - - - - - -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib - - mpich - /usr/local/tools/mvapich2-pgi-1.7/ - /usr/local/tools/netcdf-pgi-4.1.3 - - /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs - - - - - - -O2 - - - --host=Linux - - /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default - - -O2 - - NETCDFROOT - lustre - PNETCDFROOT - - NETCDF_PATH/bin/nf-config --flibs -L/projects/ccsm/BLAS-intel -lblas_LINUX - - - - - - -DHAVE_NANOTIME - - TACC_NETCDF_DIR - lustre - TACC_PNETCDF_DIR - - - - - -xHost - - - -xHost - -mcmodel medium - - - -LTACC_HDF5_LIB -lhdf5 - - - NETCDF_PATH/bin/nf-config --flibs -LTACC_HDF5_LIB -lhdf5 - - TRILINOS_PATH - - - - - -O2 - - - --host=Linux - - - -O2 - - lustre - - NETCDF_PATH/bin/nf-config --flibs - - TRUE - - - - - -O2 - - - --host=Linux - - - -lfmpich -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o - - - -O2 - - lustre - - nf-config --flibs - - TRUE - /lustre/atlas1/cli900/world-shared/cesm/software/Trilinos/Trilinos-11.12.1/titan-pgi-cesm/install - - - - /soft/libraries/hdf5/1.8.10/cnk-xl/current/ - - - mpixlf77_r - mpixlc_r - mpixlf2003_r - /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/ - /home/santos/pFUnit/pFUnit_IBM - gpfs - /soft/libraries/pnetcdf/1.3.1/cnk-xl/current/ - mpixlc_r - mpixlf2003_r - - -LNETCDF_PATH/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib - - - - - - - - - - - - - - USERDEFINED_MUST_EDIT_THIS - - - # USERDEFINED NETCDF_PATH/bin/nc-config --flibs - - - - - - - -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY - - NETCDF - gpfs - PNETCDF - - - - /glade/apps/opt/lib - - - - - -xHost - - - -DINTEL_MKL -DHAVE_SSE2 - - - -xHost - - mpiicpc - /glade/apps/opt/papi/5.3.0/intel/12.1.5/include/ - /glade/apps/opt/papi/5.3.0/intel/12.1.5/lib64 - CESMDATAROOT/tools/pFUnit/pFUnit3.1_Intel15.0.1_MPI - - icc - ifort - MPICC - MPIFC - - -Wl,-rpath PAPI_LIB -LPAPI_LIB -lpapi - - TRILINOS_PATH - - - - - -DNO_MPIMOD - - pathcc - pathf95 - - - - - -O - - - -O - - - -llapack -lblas - - - - diff --git a/cime/cime_config/cesm/machines/config_compilers.xml b/cime/cime_config/cesm/machines/config_compilers.xml index e106a13acb36..3fb0c6972a23 100644 --- a/cime/cime_config/cesm/machines/config_compilers.xml +++ b/cime/cime_config/cesm/machines/config_compilers.xml @@ -1,13 +1,11 @@ - - - + + + + -DOS + -D_USE_FLOW_CONTROL + FALSE - -D_USE_FLOW_CONTROL + + + + + -h noomp + -g -O0 + -O2 + + + + -DFORTRANUNDERSCORE -DNO_R16 -DCPRCRAY + -DDIR=NOOP + -DDIR=NOOP + + + -s real64 + + + -f free -N 255 -h byteswapio -x dir + -h noomp + -g -O0 -K trap=fp -m1 + -O2,ipa2 -em + + + -O1,fp2,ipa0,scalar0,vector0 + + TRUE + + -Wl,--allow-multiple-definition -h byteswapio + + + + + + -mcmodel=medium -std=gnu99 + -fopenmp + -g -Wall + -O + + + -D CISM_GNU=ON + + + + -DFORTRANUNDERSCORE -DNO_R16 -DCPRGNU + + FORTRAN + + -fdefault-real-8 + + + + -mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none + -fopenmp + -g -Wall + -O + + + -O0 + + + -ffixed-form + + + -ffree-form + + FALSE + + -fopenmp + + mpicc + mpicxx + mpif90 + gcc + g++ + gfortran + TRUE - - -DFORTRAN_SAME + -DFORTRAN_SAME -DCPRIBM + -WF,-D - -g -qfullpath -qmaxmem=-1 - -qsuffix=f=f -qfixed=132 - -qsuffix=f=f90:cpp=F90 - -g -qfullpath -qmaxmem=-1 - -O2 -qstrict -qinline=auto - -O3 - -qsmp=omp - -qsmp=omp - -qsmp=omp - -qrealsize=8 - -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en - -qsmp=omp:noopt - -qsmp=omp:noopt - -qsmp=omp:noopt - -C + + -qrealsize=8 + + + -g -qfullpath -qmaxmem=-1 + -O2 -qstrict -qinline=auto + -qsmp=omp + -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en + -qsmp=omp:noopt + -C + + + -qsuffix=f=f -qfixed=132 + + + -qsuffix=f=f90:cpp=F90 + TRUE - + + -qsmp=omp + -qsmp=omp:noopt + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 - -gopt -time - - -mp - -mp - -mp - - -Mfixed - -Mfree - -r8 - - -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee - -O0 -g -Ktrap=fp -Mbounds -Kieee - -mp - - -O0 -g -Ktrap=fp -Mbounds -Kieee - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -time -Wl,--allow-multiple-definition - pgcc - pgf95 - pgc++ - mpicc - mpif90 + + + -qno-opt-dynamic-align -fp-model precise -std=gnu99 + -qopenmp + -O2 -debug minimal + -O0 -g + + + + -DFORTRANUNDERSCORE -DCPRINTEL + + + -cxxlib + + FORTRAN + + -r8 + + + -qno-opt-dynamic-align -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source + -qopenmp + -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created + -O2 -debug minimal + + + -O0 + -qopenmp + + + -fixed -132 + + + -free + + TRUE + + -qopenmp + + mpicc mpicxx - - CXX - - - - FALSE + mpif90 + icc + icpc + ifort + + -mkl=cluster + -mkl=cluster + -mkl=cluster + -mkl=cluster + -mkl=cluster + -mkl=cluster + -mkl=cluster + -mkl + + TRUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DUSE_CUDA_FORTRAN -DCPRPGI - -gopt -time - - - -Mfixed - -Mfree - -r8 - - -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee - -ta=nvidia -Mcuda=5.5,cc35 - -O0 -g -Ktrap=fp -Mbounds -Kieee - -mp - - -O0 -g -Ktrap=fp -Mbounds -Kieee - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -Mnovect - -time -Wl,--allow-multiple-definition -ta=nvidia -Mcuda=5.0,cc35 - pgcc - pgf95 - pgc++ + + + -std=gnu99 + -g + + + -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH -DCPRNAG + + + -r8 + + + + + -Wp,-macro=no_com -convert=BIG_ENDIAN -indirect $ENV{CIMEROOT}/cime_config/cesm/machines/nag_mpi_argument.txt + + -ieee=full -O2 + + + -C=all -g -time -f2003 -ieee=stop + -gline + -openmp + + -mismatch_all + + + -Wp,-macro=no_com -convert=BIG_ENDIAN -indirect $ENV{CIMEROOT}/cime_config/cesm/machines/nag_mpi_argument.txt + -ieee=full + + + + -g -time -f2003 -ieee=stop + -gline + -openmp + + + -fixed + + + -free + + FALSE + + -openmp + mpicc mpif90 - mpicxx + gcc + nagfor + + + + -gopt -time + -mp + + + + + + + + + + + + + + + + + + + + + + + + + + + + -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DCPRPGI + CXX + + -r8 + + + -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee + -mp + -O0 -g -Ktrap=fp -Mbounds -Kieee + -Mnovect + -Mnovect + -Mnovect + -Mnovect + -Mnovect + -Mnovect + + + -O0 -g -Ktrap=fp -Mbounds -Kieee + -mp + + + -Mfixed + + + -Mfree + @@ -258,712 +381,673 @@ for mct, etc. but support is either buggy or incomplete, notably in that the "contiguous" attribute is incompatible with "intent".--> FALSE - - - - - -DFORTRANUNDERSCORE -DNO_R16 - -openmp - -openmp - -openmp - -free - -fixed -132 - - -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created - -O2 -debug minimal - -O2 -debug minimal - -O0 -g - -no-opt-dynamic-align -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source - -no-opt-dynamic-align -fp-model precise -std=gnu99 - -O0 - -openmp - -r8 - ifort - icc - icpc - mpif90 - mpicc - mpicxx - FORTRAN - -cxxlib - TRUE - TRUE - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - - - - -DFORTRANUNDERSCORE -DNO_R16 - -openmp - -openmp - -openmp - -free - -fixed -132 - -O0 -g -check uninit -check bounds -check pointers -fpe0 - -O2 - -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs - -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR - --host=x86_64-k1om-linux --build=x86_64-unknown-linux - -O0 -mmic - -r8 - ifort - icc - icpc - mpiifort - mpiicc - mpiicpc - FORTRAN - -cxxlib - TRUE - TRUE - -DCPRINTEL - -mmic - $(shell $(NETCDF_PATH)/bin/nf-config --flibs) - - - - - - -DFORTRANUNDERSCORE -DNO_R16 - -fopenmp - -fopenmp - -fopenmp - -D CISM_GNU=ON - -ffixed-form - -ffree-form - -g -Wall - -O - -g -Wall - -O - - -mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none - -mcmodel=medium -std=gnu99 - -O0 - -fdefault-real-8 - gfortran - gcc - g++ - mpif90 - mpicc + + -time -Wl,--allow-multiple-definition + -mp + + mpicc mpicxx - FORTRAN - TRUE - FALSE - - - - - - -DFORTRANUNDERSCORE -DNO_R16 - -DDIR=NOOP - -h noomp - -h noomp - -DDIR=NOOP - -g -O0 -K trap=fp -m1 - -O2,ipa2 -em - -g -O0 - -O2 - -f free -N 255 -h byteswapio -x dir - -O1,fp2,ipa0,scalar0,vector0 - -s real64 - -Wl,--allow-multiple-definition -h byteswapio - TRUE - - - - - - nagfor mpif90 - gcc - mpicc - - -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH - - - - -Wp,-macro=no_com -convert=BIG_ENDIAN -indirect $(CIMEROOT)/cime_config/cesm/machines/nag_mpi_argument.txt - $(FFLAGS) - -std=gnu99 - - - -ieee=full -O2 - -ieee=full - - -g - - - - -C=all -g -time -f2003 -ieee=stop - -gline - - - - -g -time -f2003 -ieee=stop - -gline - - -openmp - -openmp - -openmp - - - -mismatch_all - - -r8 - -fixed - -free - FALSE - - - - -DSYSDARWIN - -all_load + pgcc + pgc++ + pgf95 - - -heap-arrays + + + -qarch=auto -qtune=auto -qcache=auto + + /usr/bin/bash + + -qarch=auto -qtune=auto -qcache=auto -qsclk=micro + -qspill=6000 + + + -qsigtrap=xl__trcedump + -bdatapsize:64K -bstackpsize:64K -btextpsize:32K + + mpcc_r + mpxlf2003_r + cc_r + xlf2003_r + + -lmassv -lessl + -lmass + - - USERDEFINED_MUST_EDIT_THIS - - # USERDEFINED $(shell $(NETCDF_PATH)/bin/nc-config --flibs) - - - - - + + + --build=powerpc-bgp-linux --host=powerpc64-suse-linux + + + -DLINUX + + + -g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush + -O3 -qstrict -qinline=auto + -qsmp=omp + -qsmp=omp:noopt + + + -Wl,--relax -Wl,--allow-multiple-definition + - ftn - cc - CC - ftn + + -DCMAKE_SYSTEM_NAME=Catamount + + + -DLINUX + -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY + cc CC + ftn + $ENV{NETCDF_DIR} lustre - $(PARALLEL_NETCDF_DIR) - $(NETCDF_DIR) - -DLINUX - -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY - -DCMAKE_SYSTEM_NAME=Catamount --> + $ENV{PARALLEL_NETCDF_DIR} + cc + CC + ftn - - - -O2 - -O2 - --host=Linux - -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf - -DHAVE_PAPI + + + -DSYSDARWIN + + + -all_load + - - -O2 - -O2 - $(NETCDFROOT) - $(PNETCDFROOT) - /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default - --host=Linux - $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -L/projects/ccsm/BLAS-intel -lblas_LINUX - lustre + + + -heap-arrays + - - -O2 - -O2 - --host=Linux - $(NETCDFROOT) - $(PNETCDFROOT) - $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -lblas -llapack - -lstdc++ -lmpi_cxx - /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install + + + -DHAVE_PAPI + + lustre - - /glade/apps/opt/lib + + + -O2 + -nofma + + + -lmpichf90_pgi $ENV{PGI_PATH}/linux86-64/$ENV{PGI_VERSION}/lib/f90main.o + + + -O2 + -nofma + + TRUE - - gpfs - $(NETCDF) - $(PNETCDF) - - -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY + + + -O2 + + + --host=Linux + + + -DLINUX + + + -O2 + + $ENV{NETCDF_HOME} + lustre + + -L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -lpmi -L$ENV{MKL_PATH} -lmkl_rt + - - - - - $(MPICC) - $(MPIFC) - mpiicpc - -xHost - -xHost - -DINTEL_MKL -DHAVE_SSE2 - $(TRILINOS_PATH) - /glade/apps/opt/papi/5.3.0/intel/12.1.5/include/ - /glade/apps/opt/papi/5.3.0/intel/12.1.5/lib64 - -Wl,-rpath ${PAPI_LIB} -L${PAPI_LIB} -lpapi - -mcmodel medium + + + -O2 + + + --host=Linux + + + -DLINUX + + + -O2 + + $ENV{NETCDF_HOME} + lustre + + -L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -lpmi + - - - - $ENV{CESMDATAROOT}/tools/pFUnit/pFUnit3.1_Intel15.0.1_MPI + + + --host=Linux + + + -xCORE-AVX2 + + + -xCORE-AVX2 + + + -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf + + + -DHAVE_PAPI -DHAVE_SLASHPROC + + + -mkl + - - -O - -O - -llapack -lblas - - - -DNO_MPIMOD - pathcc - pathf95 + + + --host=Linux + + + -xMIC-AVX512 + + + -xMIC-AVX512 + + + -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf + + + -DHAVE_PAPI -DHAVE_SLASHPROC + + + -mkl -lmemkind -zmuldefs + - -gpfs - $(NETCDF) - $(PNETCDF) - - -DNO_MPI2 - mpicc - mpif90 - - - - -O2 - -O2 - --host=Linux + + + -O2 + + + --host=Linux + + + -DLINUX + + + -O2 + + $ENV{NETCDF_HOME} lustre - $(shell $(NETCDF_PATH)/bin/nf-config --flibs) - TRUE + + -L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -lpmi + - - -O2 - -O2 - --host=Linux + + + -O2 + -nomp + + + --host=Linux + + + -DLINUX + + + -O2 + -nomp + + + -nomp + + $ENV{NETCDF_HOME} lustre - $(shell nf-config --flibs) - /lustre/atlas1/cli900/world-shared/cesm/software/Trilinos/Trilinos-11.12.1/titan-pgi-cesm/install - -lfmpich -lmpichf90_pgi $(PGI_PATH)/linux86-64/$(PGI_VERSION)/lib/f90main.o - TRUE + + -L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -lpmi + - - -O2 - -O2 - -nofma - -nofma - -lmpichf90_pgi $(PGI_PATH)/linux86-64/$(PGI_VERSION)/lib/f90main.o - TRUE + + + -O2 + + + --host=Linux + + + -DHAVE_PAPI + + + -O2 + + + -L$ENV{NETCDF_DIR} -lnetcdff -Wl,--as-needed,-L$ENV{NETCDF_DIR}/lib -lnetcdff -lnetcdf + - - lustre - -DHAVE_PAPI + + + -O2 + + + -O2 + + + -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib + + mpich + /usr/local/tools/mvapich2-pgi-1.7/ + /usr/local/tools/netcdf-pgi-4.1.3 + + $SHELL{/usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs} + + + + -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY + + /usr/lib64 + mpich + $ENV{NETCDF_PATH} + + $SHELL{${NETCDF_PATH}/bin/nf-config --flibs} + + - - /usr/bin/bash - xlf2003_r - mpxlf2003_r - cc_r - mpcc_r - -qarch=auto -qtune=auto -qcache=auto - -qarch=auto -qtune=auto -qcache=auto -qsclk=micro - -qsigtrap=xl__trcedump - -qspill=6000 - -bdatapsize:64K -bstackpsize:64K -btextpsize:32K - -lmassv -lessl - -lmass - - - - -qtune=440 -qarch=440d - -qtune=440 -qarch=440d - /bgl/BlueLight/ppcfloor/bglsys - mpich.rts - blrts_xlf2003 - blrts_xlf2003 - blrts_xlc - blrts_xlc - -O3 -qstrict - -O3 -qstrict -qinline=auto - -qinitauto=FF911299 -qflttrap=ov:zero:inv:en - -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts - -DLINUX -DnoI8 - --build=powerpc-bgp-linux --host=powerpc64-suse-linux - -Wl,--relax -Wl,--allow-multiple-definition - -qextname=flush - - - - -qtune=450 -qarch=450 -I/bgsys/drivers/ppcfloor/arch/include/ - -qspillsize=2500 -qtune=450 -qarch=450 - -DLINUX -DnoI8 - --build=powerpc-bgp-linux --host=powerpc64-suse-linux - -Wl,--relax -Wl,--allow-multiple-definition - -qextname=flush - - - - - -g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush - -O3 -qstrict -qinline=auto - -qsmp=omp - -qsmp=omp:noopt - -DLINUX - --build=powerpc-bgp-linux --host=powerpc64-suse-linux - -Wl,--relax -Wl,--allow-multiple-definition - - - - - /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r - /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r - /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r - /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r - - - /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf77_r - /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/ - /soft/libraries/pnetcdf/1.6.1/cnk-xl/current/ - /home/santos/pFUnit/pFUnit_IBM - $(HDF5) - -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L$(HDF5)/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib - gpfs - -qfloat=nomaf - -qfloat=nomaf + + + -lifcore + + + -lifcore + -mcmodel medium + + + -lquadmath + -Wl,-rpath,${NETCDF_PATH}/lib + -Wl,-rpath,$ENV{COMPILER_PATH}/lib/intel64 + -Wl,-rpath,$ENV{COMPILER_PATH}/mkl/lib/intel64 + -Wl,-rpath,$ENV{MPI_PATH}/lib + -lifcore + + /home/santos/pFUnit/pFUnit_Intel_3_0 + + -mkl=cluster + + + + + -DNO_C_SIZEOF + + + -lpthread + + /home/santos/pFUnit/pFUnit_NAG_3_0 + - - mpixlf2003_r - mpixlf2003_r - mpixlc_r - mpixlc_r - - - mpixlf77_r - /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/ - /soft/libraries/pnetcdf/1.3.1/cnk-xl/current/ - /home/santos/pFUnit/pFUnit_IBM - /soft/libraries/hdf5/1.8.10/cnk-xl/current/ - -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib - gpfs + + + -O0 + + + -O0 + + + -lgomp + -Wl,-R${NETCDF_PATH}/lib + -Wl,-R$ENV{COMPILER_PATH}/lib + -Wl,-R$ENV{COMPILER_PATH}/libso + - - mpixlf2003_r - mpixlf2003_r - mpixlc_r + mpixlc_r + mpixlf2003_r /bgsys/local/netcdf/ - /bgsys/local/parallel-netcdf/v1.3.1 - -L/bgsys/local/netcdf/lib -lnetcdf -L/bgsys/drivers/ppcfloor/comm/lib gpfs + /bgsys/local/parallel-netcdf/v1.3.1 + mpixlc_r + mpixlf2003_r + + -L/bgsys/local/netcdf/lib -lnetcdf -L/bgsys/drivers/ppcfloor/comm/lib + - - $(NETCDF) - $(MPI_ROOT) - mpich - mpi - --host=LINUX + + /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install + + -O2 + + + --host=Linux + + + -lstdc++ -lmpi_cxx + + + -O2 + + $ENV{NETCDFROOT} + $ENV{PNETCDFROOT} + + $SHELL{${NETCDF_PATH}/bin/nf-config --flibs} -lblas -llapack + - - -O2 - -O2 - -nomp - -nomp - -nomp - $(NETCDF_HOME) - --host=Linux - lustre - -DLINUX - -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi + + + -qfloat=nomaf + + + -qfloat=nomaf + + $ENV{HDF5} + + + /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf77_r + /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r + /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r + /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/ + /home/santos/pFUnit/pFUnit_IBM + gpfs + /soft/libraries/pnetcdf/1.6.1/cnk-xl/current/ + /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r + /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r + + -L${NETCDF_PATH}/lib -lnetcdff -lnetcdf -L$ENV{HDF5}/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib + - - -O2 - -O2 - $(NETCDF_HOME) - --host=Linux + + + -O2 + + + --host=Linux + + + -DLINUX + + + -O2 + + $ENV{NETCDF_LIB}/.. lustre - -DLINUX - -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi + + -L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -lpmi + - - -O2 - -O2 - $(NETCDF_HOME) - --host=Linux - lustre - -DLINUX - -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi + + + -O2 -aCORE-AVX2 -align array32byte + + icc + mpi + $ENV{MPI_ROOT} + /nasa/netcdf/4.1.3/intel/mpt + + -L$ENV{NETCDF_DIR}/lib -lnetcdff -lnetcdf + - - -O2 - -O2 - $(NETCDF_HOME) - --host=Linux - lustre - -DLINUX - -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi -L$(MKL_PATH) -lmkl_rt + + + -O2 -xAVX + + icc + mpi + $ENV{MPI_ROOT} + /nasa/netcdf/4.1.3/intel/mpt + + -L$ENV{NETCDF_DIR}/lib -lnetcdff -lnetcdf + - - -O2 - -O2 - $(NETCDF_LIB)/.. - --host=Linux - lustre - -DLINUX - -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi + + + -O2 -xAVX + + icc + mpi + $ENV{MPI_ROOT} + /nasa/netcdf/4.1.3/intel/mpt + + -L$ENV{NETCDF_DIR}/lib -lnetcdff -lnetcdf + - - -O2 - -O2 - /usr/local/tools/netcdf-pgi-4.1.3 - /usr/local/tools/mvapich2-pgi-1.7/ - mpich - $(shell /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs) - -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib + + + -O2 -xSSE4.2 + + icc + mpi + $ENV{MPI_ROOT} + /nasa/netcdf/4.1.3/intel/mpt + + -L$ENV{NETCDF_DIR}/lib -lnetcdff -lnetcdf + - - -O2 - -O2 - /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-pgi/install - -lmpichf90_pgi $(PGI_PATH)/linux86-64/$(PGI_VERSION)/lib/f90main.o - TRUE + + + -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib + + mpich + /usr/local/tools/mvapich2-pgi-1.7/ + /usr/local/tools/netcdf-pgi-4.1.3 + + $SHELL{/usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs} + - - $(shell $(NETCDF_PATH)/bin/nf-config --flibs) - /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libO/Unicos.intel.64.mpi.default/ - /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libg/Unicos.intel.64.mpi.default/ + + + -O2 + + + --host=Linux + + /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default + + -O2 + + $ENV{NETCDFROOT} + lustre + $ENV{PNETCDFROOT} + + -L${NETCDF_PATH}/lib -lnetcdff -L/projects/ccsm/BLAS-intel -lblas_LINUX + - - /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-gnu/install + + + -DHAVE_NANOTIME + + $ENV{TACC_NETCDF_DIR} + lustre + $ENV{TACC_PNETCDF_DIR} - - /nasa/netcdf/4.1.3/intel/mpt - $(MPI_ROOT) - mpi - icc - -O2 -xSSE4.2 - -L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf + + + -xHost + + + -xHost + -mcmodel medium + + + -L$ENV{TACC_HDF5_LIB} -lhdf5 + + + $SHELL{${NETCDF_PATH}/bin/nf-config --flibs} -L$ENV{TACC_HDF5_LIB} -lhdf5 + + $ENV{TRILINOS_PATH} - - /nasa/netcdf/4.1.3/intel/mpt - $(MPI_ROOT) - mpi - icc - -O2 -xAVX - -L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf + + + -xMIC-AVX512 + + + -xMIC-AVX512 + + + --host=Linux + + + -L$(NETCDF_DIR)/lib -lnetcdff -L$(NETCDF_DIR)/lib -lnetcdf -Wl,-rpath -Wl,$(NETCDF_DIR)/lib + - - /nasa/netcdf/4.1.3/intel/mpt - $(MPI_ROOT) - mpi - icc - -O2 -xAVX - -L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf - - - /nasa/netcdf/4.1.3/intel/mpt - $(MPI_ROOT) - mpi - icc - -O2 -aCORE-AVX2 -align array32byte - -L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf + + /soft/libraries/hdf5/1.8.10/cnk-xl/current/ + + + mpixlf77_r + mpixlc_r + mpixlf2003_r + /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/ + /home/santos/pFUnit/pFUnit_IBM + gpfs + /soft/libraries/pnetcdf/1.3.1/cnk-xl/current/ + mpixlc_r + mpixlf2003_r + + -L${NETCDF_PATH}/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib + - - /usr/local/tools/netcdf-pgi-4.1.3 - /usr/local/tools/mvapich2-pgi-1.7/ - mpich - $(shell /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs) - -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib + + + + + + + + + + + USERDEFINED_MUST_EDIT_THIS + + + # USERDEFINED $SHELL{${NETCDF_PATH}/bin/nc-config --flibs} + - - - mpi - /usr/lib64 - $(shell $(NETCDF_PATH)/bin/nf-config --flibs) - -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY + + + + -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY + + $ENV{NETCDF} + gpfs + $ENV{PNETCDF} - - -Wl,-rpath,$(NETCDF_PATH)/lib - -Wl,-rpath,$(COMPILER_PATH)/lib/intel64 - -Wl,-rpath,$(COMPILER_PATH)/mkl/lib/intel64 - /home/santos/pFUnit/pFUnit_Intel_3_0 + + + + -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY + + $ENV{NETCDF} + gpfs + $ENV{PNETCDF} + + + + -qopt-report + + + -qopt-report + + + -DPIO_ENABLE_LOGGING=ON + - - -O0 - -O0 - -lgomp - -Wl,-R$(NETCDF_PATH)/lib - -Wl,-R$(COMPILER_PATH)/lib - -Wl,-R$(COMPILER_PATH)/libso + + + + -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY + + $ENV{NETCDF} + gpfs + $ENV{PNETCDF} + + + + -vec-report + + + -vec-report + + + -DPIO_ENABLE_LOGGING=ON + - - mpich - /usr/lib64 - $(shell $(NETCDF_PATH)/bin/nf-config --flibs) - -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY - - - - -lquadmath - -Wl,-rpath,$(NETCDF_PATH)/lib - -Wl,-rpath,$(COMPILER_PATH)/lib/intel64 - -Wl,-rpath,$(COMPILER_PATH)/mkl/lib/intel64 - -Wl,-rpath,$(MPI_PATH)/lib - -mkl=cluster - -lifcore - -lifcore - -lifcore - /home/santos/pFUnit/pFUnit_Intel_3_0 - -mcmodel medium - - - - -O0 - -O0 - -lgomp - -Wl,-R$(NETCDF_PATH)/lib - -Wl,-R$(COMPILER_PATH)/lib - -Wl,-R$(COMPILER_PATH)/libso - - - - /home/santos/pFUnit/pFUnit_NAG_3_0 - - -DNO_C_SIZEOF - -lpthread - - - - - - /usr/local/netcdf-gcc-nag - /usr/local/openmpi-gcc-nag - /home/santos/pFUnit/pFUnit_NAG_3_0 - - -kind=byte - -DNO_C_SIZEOF - - -L/home/santos/lib/fake_omp -lfake_omp -Wl,-Wl,,--rpath=/home/santos/lib/fake_omp + + /glade/apps/opt/lib + gcc + gfortran - - lustre - $(TACC_NETCDF_DIR) - $(TACC_PNETCDF_DIR) - -DHAVE_NANOTIME + + + -xHost + + + -DINTEL_MKL -DHAVE_SSE2 + + + -xHost + + mpiicpc + /glade/apps/opt/papi/5.3.0/intel/12.1.5/include/ + /glade/apps/opt/papi/5.3.0/intel/12.1.5/lib64 + $ENV{CESMDATAROOT}/tools/pFUnit/pFUnit3.1_Intel15.0.1_MPI + + icc + ifort + ${MPICC} + ${MPIFC} + + -Wl,-rpath ${PAPI_LIB} -L${PAPI_LIB} -lpapi + + $ENV{TRILINOS_PATH} - - -xHost - -xHost - $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -L$(TACC_HDF5_LIB) -lhdf5 - -L$(TACC_HDF5_LIB) -lhdf5 - $(TRILINOS_PATH) - -mcmodel medium - - - - mpiifort - mpiicc - mpiicpc - ifort - icc - -xHost -no-save-temps - -xHost -no-save-temps - - $(NETCDF_DIR) - $(PNETCDF_DIR) - -DHAVE_NANOTIME -DCPRINTEL - --host=Linux - $(NETCDf) $(MKL) - $(NETCDF) - - - - mpiifort - mpiicc - mpiicpc - ifort - icc - - $(NETCDF_DIR) - $(PNETCDF_DIR) - -DHAVE_NANOTIME -DCPRINTELMIC -DCPRINTEL - $(NETCDF) $(MKL) - $(NETCDF) -mmic - - -O0 -g -check all -check noarg_temp_created - -O3 -mP2OPT_hpo_matrix_opt_framework=0 - -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -no-save-temps -no-opt-dynamic-align - -mmic -O3 -fp-model precise -DFORTRANUNDERSCORE -no-save-temps - --host=x86_64-k1om-linux --build=x86_64-unknown-linux - -O0 -mmic - - - - mpiicc - mpiifort - mpicpc - ifort - icc - icpc - -xHost - -xHost - $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -L$(TACC_HDF5_LIB) -lhdf5 - -L$(TACC_HDF5_LIB) -lhdf5 - $(TRILINOS_PATH) + + + -O + + + -O + + + -llapack -lblas + + pgcc + pgfortran diff --git a/cime/cime_config/cesm/machines/config_lt_archive.xml b/cime/cime_config/cesm/machines/config_lt_archive.xml index 48c4504a5032..6e0bda3f55cc 100644 --- a/cime/cime_config/cesm/machines/config_lt_archive.xml +++ b/cime/cime_config/cesm/machines/config_lt_archive.xml @@ -1,6 +1,6 @@ - + diff --git a/cime/cime_config/cesm/machines/config_machines.xml b/cime/cime_config/cesm/machines/config_machines.xml index 93cd757f145e..b23fd185072b 100644 --- a/cime/cime_config/cesm/machines/config_machines.xml +++ b/cime/cime_config/cesm/machines/config_machines.xml @@ -39,42 +39,41 @@ The attributes used to choose the mpirun command are: mpilib: can either be 'default' the name of an mpi library, or a compiler name so one can choose the mpirun - based on the mpi library in use. + based on the mpi library in use. the 'executable' tag must have arguments required for the chosen mpirun, as well as the executable name. --> - + - h2o ORNL XE6, os is CNL, 32 pes/node, batch system is PBS + h2o + CNL pgi,cray,gnu mpich,mpi-serial - /scratch/sciteam/$USER - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /scratch/sciteam/$USER $ENV{CESMDATAROOT}/inputdata $ENV{CESMDATAROOT}/inputdata/atm/datm7 /scratch/sciteam/$USER/archive/$CASE csm/$CASE - $ENV{CESMDATAROOT}/ccsm_baselines + $ENV{CESMDATAROOT}/ccsm_baselines $ENV{CESMDATAROOT}/tools/ccsm_cprnc/cprnc - CNL - cseg 8 + pbs + cseg 32 16 - pbs + TRUE aprun - -n {{ num_tasks }} + -n $TOTALPES - -N {{ tasks_per_node }} - -d {{ thread_count }} + -N $PES_PER_NODE + -d $ENV{OMP_NUM_THREADS} @@ -121,8 +120,8 @@ cmake/3.1.3 darshan - /sw/modulefiles/CESM - CESM-ENV + /sw/modulefiles/CESM + CESM-ENV @@ -132,29 +131,27 @@ Brutus Linux Cluster ETH (pgi(9.0-1)/intel(10.1.018) with openi(1.4.1)/mvapich2(1.4rc2), 16 pes/node, batch system LSF, added by UB + LINUX pgi,intel openmpi,mpich,mpi-serial - LINUX - /cluster/work/uwis/$USER/$CASE/run - /cluster/work/uwis/$USER/$CASE/bld - /cluster/work/uwis/$USER + /cluster/work/uwis/$USER /cluster/work/uwis/ccsm/inputdata /cluster/work/uwis/ccsm/inputdata/atm/datm7 /cluster/work/uwis/$USER/archive/$CASE - /`echo $USER | tr '[a-z]' '[A-Z]'`/csm/$CASE - /cluster/work/uwis/ccsm/ccsm_baselines + $SHELL{echo $USER | tr '[a-z]' '[A-Z]'}/csm/$CASE + /cluster/work/uwis/ccsm/ccsm_baselines /cluster/work/uwis/ccsm/tools/cprnc/cprnc + 1 lsf tcraig -at- ucar.edu - 1 16 16 mpirun -hostfile $ENV{PBS_JOBID} - -ppn {{ tasks_per_node }} - -n {{ num_tasks }} + -ppn $PES_PER_NODE + -n $TOTALPES @@ -197,23 +194,89 @@ + + NCAR SGI platform, os is Linux, 36 pes/node, batch system is PBS + .*.cheyenne.ucar.edu + LINUX + intel,gnu + mpt + /glade/scratch/$USER + $ENV{CESMDATAROOT}/inputdata + $ENV{CESMDATAROOT}/lmwg + $CIME_OUTPUT_ROOT/archive/$CASE + csm/$CASE + $ENV{CESMDATAROOT}/cesm_baselines + $ENV{CESMDATAROOT}/tools/cime/tools/cprnc/cprnc.cheyenne + 8 + pbs + cseg + + 36 + 36 + TRUE + + mpiexec_mpt + + -p "%g:" + omplace + + + + + + + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/init/perl + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/init/env_modules_python.py + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/init/csh + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/init/sh + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/libexec/lmod perl + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/libexec/lmod python + module + module + + + ncarenv/1.0 + + + intel/17.0.1 + mkl + + + gnu/6.3.0 + + + mpt/2.15 + ncarcompilers/0.3.5 + + + netcdf/4.4.1.1 + + + netcdf-mpi/4.4.1.1 + pnetcdf/1.8.0 + + + + 256M + 16 + + + PNL Haswell cluster, OS is Linux, batch system is SLURM LINUX intel,pgi mvapich2,openmpi,intelmpi,mvapich - /pic/scratch/$USER/$CASE/run - /pic/scratch/$USER/$CASE/bld - /pic/scratch/$USER + /pic/scratch/$USER /pic/scratch/tcraig/IRESM/inputdata /pic/scratch/tcraig/IRESM/inputdata/atm/datm7 /pic/scratch/$USER/cases/archive/$CASE UNSET - /pic/scratch/tcraig/IRESM/ccsm_baselines + /pic/scratch/tcraig/IRESM/ccsm_baselines /people/tcraig/bin/cprnc + 8 slurm tcraig -at- ucar.edu - 8 24 24 FALSE @@ -223,30 +286,30 @@ srun - --mpi=none - --ntasks={{ num_tasks }} - --cpu_bind=sockets --cpu_bind=verbose - --kill-on-bad-exit + --mpi=none + --ntasks=$TOTALPES + --cpu_bind=sockets --cpu_bind=verbose + --kill-on-bad-exit srun - --ntasks={{ num_tasks }} - --cpu_bind=sockets --cpu_bind=verbose - --kill-on-bad-exit + --ntasks=$TOTALPES + --cpu_bind=sockets --cpu_bind=verbose + --kill-on-bad-exit mpirun - -n {{ num_tasks }} + -n $TOTALPES mpirun - -n {{ num_tasks }} + -n $TOTALPES @@ -297,32 +360,31 @@ - + + + NERSC XC40 Haswell, os is CNL, 32 pes/node, batch system is Slurm cori + CNL intel,gnu,cray mpt,mpi-serial - $ENV{SCRATCH} - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $ENV{SCRATCH} /project/projectdirs/ccsm1/inputdata /project/projectdirs/ccsm1/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - /project/projectdirs/ccsm1/ccsm_baselines + /project/projectdirs/ccsm1/ccsm_baselines /project/projectdirs/ccsm1/tools/cprnc.corip1/cprnc - CNL + 8 slurm cseg - 8 64 32 srun --label - -n {{ num_tasks }} - -c {{ thread_count }} + -n $TOTALPES @@ -356,7 +418,109 @@ PrgEnv-intel - intel intel/16.0.3.210 + intel intel/17.0.1.132 + /global/project/projectdirs/ccsm1/modulefiles/cori + + + esmf/6.3.0rp1-defio-intel2016-mpi-O + + + esmf/6.3.0rp1-defio-intel2016-mpiuni-O + + + + PrgEnv-cray + cce cce/8.5.4 + + + PrgEnv-gnu + gcc gcc/6.2.0 + + + cray-memkind + papi/5.4.3.2 + craype craype/2.5.7 + + + cray-libsci/16.09.1 + + + cray-mpich/7.4.4 + + + cray-hdf5/1.10.0 + cray-netcdf/4.4.1 + + + cray-netcdf-hdf5parallel/4.3.3.1 + cray-hdf5-parallel/1.8.16 + cray-parallel-netcdf/1.7.0 + + + cmake/3.5.2 + + + + 256M + + + + + + + NERSC XC* KNL, os is CNL, 68 pes/node, batch system is Slurm + CNL + intel,gnu,cray + mpt,mpi-serial + $ENV{SCRATCH} + /project/projectdirs/ccsm1/inputdata + /project/projectdirs/ccsm1/inputdata/atm/datm7 + $CIME_OUTPUT_ROOT/archive/$CASE + csm/$CASE + /project/projectdirs/ccsm1/ccsm_baselines + /project/projectdirs/ccsm1/tools/cprnc.corip1/cprnc + 8 + slurm + cseg + 256 + 64 + + srun + + --label + -n $TOTALPES + + + + /opt/modules/default/init/perl.pm + /opt/modules/default/init/python.py + /opt/modules/default/init/sh + /opt/modules/default/init/csh + /opt/modules/default/bin/modulecmd perl + /opt/modules/default/bin/modulecmd python + module + module + + craype-mic-knl + craype-haswell + PrgEnv-intel + PrgEnv-cray + PrgEnv-gnu + intel + cce + cray-parallel-netcdf + cray-parallel-hdf5 + pmi + cray-libsci + cray-mpich2 + cray-mpich + cray-netcdf + cray-hdf5 + cray-netcdf-hdf5parallel + + + PrgEnv-intel + intel intel/17.0.1.132 cray-libsci /global/project/projectdirs/ccsm1/modulefiles/cori @@ -364,38 +528,40 @@ esmf/6.3.0rp1-defio-intel2016-mpi-O - esmf/6.3.0rp1-defio-intel2016-mpiuni-O + esmf/6.3.0rp1-defio-intel2016-mpiuni-O PrgEnv-cray - cce cce/8.5.1 + cce cce/8.5.4 PrgEnv-gnu - gcc gcc/5.3.0 + gcc gcc/6.2.0 + cray-memkind + craype-mic-knl papi/5.4.3.2 - craype craype/2.5.5 + craype craype/2.5.7 - cray-libsci/16.06.1 + cray-libsci/16.09.1 - cray-mpich/7.4.0 + cray-mpich/7.4.4 - cray-hdf5/1.8.16 - cray-netcdf/4.4.0 + cray-hdf5/1.10.0 + cray-netcdf/4.4.1 - cray-netcdf-hdf5parallel/4.4.0 + cray-netcdf-hdf5parallel/4.3.3.1 cray-hdf5-parallel/1.8.16 cray-parallel-netcdf/1.7.0 - cmake/3.3.2 + cmake/3.5.2 @@ -403,30 +569,116 @@ + + ALCF Cray XC* KNL, os is CNL, 64 pes/node, batch system is cobalt + theta.* + CNL + intel,gnu,cray + mpt + EarlyPerf_theta + /projects/EarlyPerf_theta/cesm/scratch/$USER + /projects/EarlyPerf_theta/cesm/inputdata + /projects/EarlyPerf_theta/cesm/inputdata/atm/datm7 + $CIME_OUTPUT_ROOT/archive/$CASE + /projects/EarlyPerf_theta/cesm/csm/$CASE + /projects/EarlyPerf_theta/cesm/baselines + /projects/EarlyPerf_theta/cesm/tools/cprnc/cprnc + 8 + cobalt_theta + cseg + 64 + 64 + TRUE + + aprun + + -n $TOTALPES + -N $PES_PER_NODE + --cc depth -d $OMP_NUM_THREADS + -e OMP_STACKSIZE=64M + -e OMP_NUM_THREADS=$OMP_NUM_THREADS + + + + /opt/modules/default/init/perl.pm + /opt/modules/default/init/python.py + /opt/modules/default/init/sh + /opt/modules/default/init/csh + /opt/modules/default/bin/modulecmd perl + /opt/modules/default/bin/modulecmd python + module + module + + PrgEnv-intel + PrgEnv-cray + PrgEnv-gnu + intel + cce + cray-parallel-netcdf + cray-hdf5-parallel + pmi + cray-libsci + cray-mpich + cray-netcdf + cray-hdf5 + cray-netcdf-hdf5parallel + craype-mic-knl + craype + + + + PrgEnv-intel/6.0.3 + intel intel/17.0.0.098 + cray-libsci + + + + PrgEnv-cray/6.0.3 + cce cce/8.5.4 + + + PrgEnv-gnu/6.0.3 + gcc gcc/6.2.0 + + + papi/5.4.3.3 + craype craype/2.5.7 + + + cray-libsci/16.09.1 + + + cray-mpich/7.4.4 + + + cray-netcdf-hdf5parallel/4.4.1 + cray-hdf5-parallel/1.10.0 + cray-parallel-netcdf/1.7.0 + + + PNL IBM Xeon cluster, os is Linux (pgi), batch system is SLURM LINUX pgi,intel mvapich2,mvapich - /lustre/$USER/$CASE/run - /lustre/$USER/$CASE/bld - /lustre/$USER + /lustre/$USER /lustre/tcraig/IRESM/inputdata /lustre/tcraig/IRESM/inputdata/atm/datm7 /lustre/$USER/archive/$CASE UNSET - /lustre/tcraig/IRESM/ccsm_baselines + /lustre/tcraig/IRESM/ccsm_baselines /lustre/tcraig/IRESM/tools/cprnc/cprnc + 8 slurm tcraig -at- ucar.edu - 8 12 12 srun - --ntasks={{ num_tasks }} + --ntasks=$TOTALPES --cpu_bind=sockets --cpu_bind=verbose --kill-on-bad-exit @@ -436,7 +688,7 @@ srun --mpi=none - --ntasks={{ num_tasks }} + --ntasks=$TOTALPES --cpu_bind=sockets --cpu_bind=verbose --kill-on-bad-exit @@ -451,9 +703,9 @@ module - perl/5.20.7 - cmake/3.0.0 - pgi/15.5 + perl/5.20.7 + cmake/3.0.0 + pgi/15.5 mpi/mvapich2/1.5.1p1/pgi11.3 netcdf/4.1.2/pgi @@ -465,30 +717,28 @@ NERSC XC30, os is CNL, 24 pes/node, batch system is SLURM - intel,gnu,cray edison + CNL + intel,gnu,cray mpt,mpi-serial - $ENV{CSCRATCH} - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + $ENV{CSCRATCH} /project/projectdirs/ccsm1/inputdata /project/projectdirs/ccsm1/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - /project/projectdirs/ccsm1/ccsm_baselines + /project/projectdirs/ccsm1/ccsm_baselines /project/projectdirs/ccsm1/tools/cprnc.edison/cprnc - CNL + 8 slurm cseg - 8 48 24 srun --label - -n {{ num_tasks }} - -c {{ thread_count }} + -n $TOTALPES + -c $ENV{OMP_NUM_THREADS} @@ -522,7 +772,7 @@ PrgEnv-intel - intel intel/16.0.0.109 + intel intel/16.0.2.181 cray-libsci /global/project/projectdirs/ccsm1/modulefiles/edison @@ -530,7 +780,7 @@ esmf/6.3.0rp1-defio-intel15.0-mpi-O - esmf/6.3.0rp1-defio-intel15.0-mpiuni-O + esmf/6.3.0rp1-defio-intel15.0-mpiuni-O PrgEnv-cray @@ -538,19 +788,18 @@ PrgEnv-gnu - gcc gcc/5.2.0 + gcc gcc/6.1.0 - papi/5.4.1.3 - craype craype/2.5.1 + papi/5.4.3.2 + craype craype/2.5.5 craype-ivybridge - cray-libsci/13.3.0 + cray-libsci/16.07.1 - cray-mpich/7.3.1 - + cray-mpich/7.4.1 cray-hdf5/1.8.16 @@ -576,30 +825,27 @@ "NCAR CGD Linux Cluster 48 pes/node, batch system is PBS" ^hob.* + LINUX intel,pgi,nag,gnu mvapich2 - /scratch/cluster/$USER/$CASE/run - /scratch/cluster/$USER/$CASE/bld - /scratch/cluster/$USER - $EXEROOT - $EXEROOT/lib/include + /scratch/cluster/$USER /fs/cgd/csm/inputdata /project/tss /scratch/cluster/$USER/archive/$CASE - /`echo $USER | tr '[a-z]' '[A-Z]'`/csm/$CASE - /fs/cgd/csm/ccsm_baselines + $SHELL{echo $USER | tr '[a-z]' '[A-Z]'}/csm/$CASE + /fs/cgd/csm/ccsm_baselines /fs/cgd/csm/tools/cprnc_hobart/cprnc - LINUX - pbs gmake --output-sync 4 + pbs + cseg 48 24 mpiexec --machinefile $ENV{PBS_NODEFILE} - -n {{ num_tasks }} + -n $TOTALPES @@ -624,51 +870,45 @@ compiler/pgi/15.1 - tool/parallel-netcdf/1.7.0/pgi/mvapich2 + tool/parallel-netcdf/1.6.1/pgi/mvapich2 compiler/nag/6.1 - compiler/gnu/4.8.5 64M - $PATH:/usr/local/bin NOAA XE6, os is CNL, 24 pes/node, batch system is PBS + CNL pgi mpich,mpi-serial - /lustre/fs/scratch/Julio.T.Bacmeister/$CASE/run - /lustre/fs/scratch/Julio.T.Bacmeister/$CASE/bld - /lustre/fs/scratch/Julio.T.Bacmeister + /lustre/fs/scratch/Julio.T.Bacmeister /lustre/fs/scratch/Julio.T.Bacmeister/inputdata /lustre/fs/scratch/Julio.T.Bacmeister/inputdata /lustre/fs/scratch/Julio.T.Bacmeister/archive/$CASE UNSET - UNSET + UNSET UNSET - CNL + 8 pbs julio -at- ucar.edu - 8 24 24 aprun -j {{ hyperthreading }} - -n {{ num_tasks }} + -n $TOTALPES -S {{ tasks_per_numa }} - -N {{ tasks_per_node }} - -d {{ thread_count }} + -N $PES_PER_NODE + -d $ENV{OMP_NUM_THREADS} @@ -712,35 +952,156 @@ + + NCAR SGI test platform, os is Linux, 36 pes/node, batch system is PBS + .*.laramie.ucar.edu + LINUX + intel,gnu + mpt + /picnic/scratch/$USER + $ENV{CESMDATAROOT}/inputdata + $ENV{CESMDATAROOT}/lmwg + $CIME_OUTPUT_ROOT/archive/$CASE + csm/$CASE + $ENV{CESMDATAROOT}/cesm_baselines + $ENV{CESMDATAROOT}/tools/cime/tools/cprnc/cprnc + 8 + pbs + cseg + + 36 + 36 + TRUE + + mpiexec_mpt + + -p "%g:" + omplace + + + + + + + /picnic/u/apps/la/opt/lmod/6.5/gnu/4.8.5/lmod/lmod/init/perl + /picnic/u/apps/la/opt/lmod/6.5/gnu/4.8.5/lmod/lmod/init/env_modules_python.py + /picnic/u/apps/la/opt/lmod/6.5/gnu/4.8.5/lmod/lmod/init/csh + /picnic/u/apps/la/opt/lmod/6.5/gnu/4.8.5/lmod/lmod/init/sh + /picnic/u/apps/la/opt/lmod/6.5/gnu/4.8.5/lmod/lmod/libexec/lmod perl + /picnic/u/apps/la/opt/lmod/6.5/gnu/4.8.5/lmod/lmod/libexec/lmod python + module + module + + + ncarenv/1.0 + + + intel/16.0.3 + mkl + + + gnu/6.2.0 + + + mpt/2.15 + ncarcompilers/0.3.2 + + + netcdf/4.4.1 + + + netcdf-mpi/4.4.1 + pnetcdf/1.7.x + + + + 256M + 16 + + + Linux workstation for Jenkins testing (melvin|watson) + LINUX sonproxy.sandia.gov:80 + gnu + openmpi,mpi-serial + /sems-data-store/ACME/timings + $ENV{HOME}/acme/scratch + /sems-data-store/ACME/inputdata + /sems-data-store/ACME/inputdata/atm/datm7 + $CIME_OUTPUT_ROOT/archive/$CASE + csm/$CASE + /sems-data-store/ACME/baselines + /sems-data-store/ACME/cprnc/build/cprnc + make + 32 acme_developer + none + jgfouca at sandia dot gov + 64 + 64 + + mpirun + + -np $TOTALPES + + + + /usr/share/Modules/init/python.py + /usr/share/Modules/init/perl.pm + /usr/share/Modules/init/sh + /usr/share/Modules/init/csh + /usr/bin/modulecmd python + /usr/bin/modulecmd perl + module + module + + + sems-env + sems-git + sems-python/2.7.9 + sems-gcc/5.1.0 + sems-openmpi/1.8.7 + sems-cmake/2.8.12 + sems-netcdf/4.3.2/parallel + + + + $ENV{SEMS_NETCDF_ROOT} + + + $ENV{SEMS_NETCDF_ROOT} + + + + + Linux workstation at Sandia on SRN with SEMS TPL modules + (s999964|climate|penn) LINUX + wwwproxy.sandia.gov:80 gnu openmpi,mpi-serial - $ENV{HOME}/acme/scratch - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld - $EXEROOT - $EXEROOT/lib/include + /sems-data-store/ACME/timings + $ENV{HOME}/acme/scratch /sems-data-store/ACME/inputdata /sems-data-store/ACME/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - /sems-data-store/ACME/baselines + /sems-data-store/ACME/baselines /sems-data-store/ACME/cprnc/build/cprnc + make + 32 + acme_developer none jgfouca at sandia dot gov - - 32 64 - 32 + 64 mpirun - -np {{ num_tasks }} + -np $TOTALPES @@ -754,36 +1115,37 @@ module - python/2.7.9 - gcc/5.1.0/openmpi/1.8.7 - cmake/2.8.12 - netcdf/4.3.2/gcc/5.1.0/openmpi/1.8.7 + sems-env + sems-git + sems-python/2.7.9 + sems-gcc/5.1.0 + sems-openmpi/1.8.7 + sems-cmake/2.8.12 + sems-netcdf/4.3.2/parallel - $SEMS_NETCDF_ROOT - $SEMS_NETCDF_ROOT + $ENV{SEMS_NETCDF_ROOT} + $ENV{SEMS_NETCDF_ROOT} ANL IBM BG/Q, os is BGP, 16 pes/node, batch system is cobalt .*.fst.alcf.anl.gov + BGQ ibm ibm - /projects/$PROJECT/usr/$ENV{USER} - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /projects/$PROJECT/usr/$ENV{USER} /projects/ccsm/inputdata /projects/ccsm/inputdata/atm/datm7 /projects/$PROJECT/usr/$USER/archive/$CASE /home/$USER/csm/$CASE/ - /projects/ccsm/ccsm_baselines/ + /projects/ccsm/ccsm_baselines/ /projects/ccsm/tools/cprnc/cprnc - BGQ + 4 cobalt cseg - 4 64 8 TRUE @@ -798,13 +1160,13 @@ --block $COBALT_PARTNAME --envs OMP_WAIT_POLICY=active --envs BG_SMP_FAST_WAKEUP=yes $LOCARGS --envs BG_THREADLAYOUT=1 --envs OMP_STACKSIZE=32M - --envs OMP_NUM_THREADS={{ thread_count }} + --envs OMP_NUM_THREADS=$ENV{OMP_NUM_THREADS} /etc/profile.d/00softenv.csh - soft /etc/profile.d/00softenv.sh + soft soft +mpiwrapper-xl @@ -826,19 +1188,18 @@ LINUX pgi mpich - /pic/scratch/$USER/$CASE/run - /pic/scratch/$USER/$CASE/bld - /pic/scratch/$USER + /pic/scratch/$USER /pic/scratch/tcraig/IRESM/inputdata /pic/scratch/tcraig/IRESM/inputdata/atm/datm7 /pic/scratch/$USER/archive/$CASE UNSET - /pic/scratch/tcraig/IRESM/ccsm_baselines + /pic/scratch/tcraig/IRESM/ccsm_baselines /pic/scratch/tcraig/IRESM/tools/cprnc/cprnc + 8 slurm tcraig -at- ucar.edu - 8 32 + 32 FALSE @@ -847,7 +1208,7 @@ mpiexec_mpt --mpi=none - -n={{ num_tasks }} + -n=$TOTALPES --kill-on-bad-exit @@ -873,30 +1234,29 @@ NASA/AMES Linux Cluster, Linux (ia64), 2.5 GHz Haswell Intel Xeon E5-2680v3 processors, 24 pes/node (two 12-core processors) and 128 GB of memory/node, batch system is PBS + LINUX intel mpich,mpi-serial - LINUX - /nobackup/$USER/$CASE/run - /nobackup/$USER/$CASE/bld - /nobackup/$USER + /nobackup/$USER /nobackup/mjmills2/ccsmdata/inputdata /nobackup/mjmills2/ccsmdata/inputdata/atm/datm7 /nobackup/$USER/archive/$CASE /u/$USER/csm/$CASE + /nobackup/fvitt/cesm_baselines + /u/fvitt/bin/cprnc + 8 pbs fvitt -at- ucar.edu - 8 24 + 24 TRUE - /nobackup/fvitt/cesm_baselines - /u/fvitt/bin/cprnc mpiexec_mpt - -n {{ num_tasks }} + -n $TOTALPES @@ -927,29 +1287,29 @@ NASA/AMES Linux Cluster, Linux (ia64), Altix ICE, 2.93 GHz Westmere processors, 12 pes/node and 24 GB of memory, batch system is PBS + LINUX intel mpich,mpi-serial - LINUX - /nobackup/$USER/$CASE/run - /nobackup/$USER/$CASE/bld - /nobackup/$USER + /nobackup/$USER /nobackup/mjmills2/ccsmdata/inputdata /nobackup/mjmills2/ccsmdata/inputdata/atm/datm7 /nobackup/$USER/archive/$CASE /u/$USER/csm/$CASE - fvitt -at- ucar.edu + /nobackup/fvitt/cesm_baselines + /u/fvitt/bin/cprnc 8 + pbs + fvitt -at- ucar.edu 12 + 12 TRUE - /nobackup/fvitt/cesm_baselines - /u/fvitt/bin/cprnc mpiexec_mpt - -n {{ num_tasks }} + -n $TOTALPES @@ -980,30 +1340,29 @@ NASA/AMES Linux Cluster, Linux (ia64), Altix ICE, 2.6 GHz Sandy Bridge processors, 16 cores/node and 32 GB of memory, batch system is PBS + LINUX intel mpich,mpi-serial - LINUX - /nobackup/$USER/$CASE/run - /nobackup/$USER/$CASE/bld - /nobackup/$USER + /nobackup/$USER /nobackup/mjmills2/ccsmdata/inputdata /nobackup/mjmills2/ccsmdata/inputdata/atm/datm7 /nobackup/$USER/archive/$CASE /u/$USER/csm/$CASE + /nobackup/fvitt/cesm_baselines + /u/fvitt/bin/cprnc + 8 pbs fvitt -at- ucar.edu - 8 16 + 16 TRUE - /nobackup/fvitt/cesm_baselines - /u/fvitt/bin/cprnc mpiexec_mpt - -n {{ num_tasks }} + -n $TOTALPES @@ -1034,30 +1393,29 @@ NASA/AMES Linux Cluster, Linux (ia64), Altix ICE, 2.8 GHz Ivy Bridge processors, 20 cores/node and 3.2 GB of memory per core, batch system is PBS + LINUX intel mpich,mpi-serial - LINUX - /nobackup/$USER/$CASE/run - /nobackup/$USER/$CASE/bld - /nobackup/$USER + /nobackup/$USER /nobackup/mjmills2/ccsmdata/inputdata /nobackup/mjmills2/ccsmdata/inputdata/atm/datm7 /nobackup/$USER/archive/$CASE /u/$USER/csm/$CASE + /nobackup/fvitt/cesm_baselines + /u/fvitt/bin/cprnc + 8 pbs fvitt -at- ucar.edu - 8 20 + 20 TRUE - /nobackup/fvitt/cesm_baselines - /u/fvitt/bin/cprnc mpiexec_mpt - -n {{ num_tasks }} + -n $TOTALPES @@ -1088,38 +1446,30 @@ CSCS Cray XE6, os is CNL, 32 pes/node, batch system is SLURM + CNL pgi,cray,gnu mpich,mpi-serial - /scratch/rosa/$USER/$CASE/run - /scratch/rosa/$USER/$CASE/bld - /scratch/rosa/$USER + /scratch/rosa/$USER /project/s433/cesm_inputdata /project/s433/cesm_inputdata/atm/datm7 /project/s433/$USER/archive/$CASE csm/$CASE - /project/s433/ccsm_baselines + /project/s433/ccsm_baselines /project/s433/cesm_tools/ccsm_cprnc/cprnc - CNL + 12 slurm edouard.davin -at- env.ethz.ch - 12 32 + 32 aprun - -n {{ num_tasks }} - -N {{ tasks_per_node }} - -d {{ thread_count }} + -n $TOTALPES + -N $PES_PER_NODE + -d $ENV{OMP_NUM_THREADS} - - - - - - - - + 64M @@ -1129,71 +1479,96 @@ SNL clust skybridge-login + LINUX wwwproxy.sandia.gov:80 - acme_integration intel openmpi,mpi-serial - LINUX - /gscratch/$USER/acme_scratch/skybridge - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /projects/ccsm/timings + /gscratch/$USER/acme_scratch/skybridge /projects/ccsm/inputdata /projects/ccsm/inputdata/atm/datm7 - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE USERDEFINED_optional_run - /projects/ccsm/ccsm_baselines - /projects/ccsm/cprnc/build/cprnc + /projects/ccsm/ccsm_baselines + /projects/ccsm/cprnc/build/cprnc_wrap + 8 + acme_integration slurm jgfouca at sandia dot gov - 4 16 - 1 + 16 TRUE + mpirun - -np {{ num_tasks }} - -npernode {{ tasks_per_node }} + -np $TOTALPES + -npernode $PES_PER_NODE + + + + + /usr/share/Modules/init/python.py + /usr/share/Modules/init/perl.pm + /usr/share/Modules/init/sh + /usr/share/Modules/init/csh + /usr/bin/modulecmd python + /usr/bin/modulecmd perl + module + module + + + sems-env + sems-git + sems-python/2.7.9 + gnu/4.9.2 + intel/intel-15.0.3.187 + libraries/intel-mkl-15.0.2.164 + libraries/intel-mkl-15.0.2.164 + + + openmpi-intel/1.8 + sems-hdf5/1.8.12/parallel + sems-netcdf/4.3.2/parallel + sems-hdf5/1.8.12/base + sems-netcdf/4.3.2/base + + + + $ENV{SEMS_NETCDF_ROOT} + 64M + + + $ENV{SEMS_NETCDF_ROOT} + TACC DELL, os is Linux, 16 pes/node, batch system is SLURM - LINUX .*stampede + LINUX intel - impi,mvapich2 - $SCRATCH/$CASE/run - $SCRATCH/$CASE/bld - $SCRATCH + mvapich2,impi + $SCRATCH /scratch/projects/xsede/CESM/inputdata /scratch/projects/xsede/CESM/inputdata/lmwg $WORK/archive/$CASE csm/$CASE - /scratch/projects/xsede/CESM/ccsm_baselines + /scratch/projects/xsede/CESM/ccsm_baselines /scratch/projects/xsede/CESM/tools/cprnc/cprnc + 4 slurm cseg - 8 16 16 - srun - - --label - -n {{ num_tasks }} - -c {{ thread_count }} - + ibrun - srun - - --label - -n {{ num_tasks }} - -c {{ thread_count }} - + ibrun @@ -1210,7 +1585,7 @@ TACC - python/2.7.9 + python/2.7.12 intel/15.0.2 perl/5.16.2 cmake/3.1.0 @@ -1234,6 +1609,7 @@ 256M $TACC_NETCDF_DIR $TACC_PNETCDF_DIR + /scratch/projects/xsede/CESM/perl5/lib/perl5/x86_64-linux-thread-multi:/scratch/projects/xsede/CESM/perl5/lib/perl5 @@ -1244,19 +1620,17 @@ LINUX intel,pgi,gnu,intel15 mpich2,pempi - /glade/scratch/$USER - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /glade/scratch/$USER $ENV{CESMDATAROOT}/inputdata $ENV{CESMROOT}/lmwg - $CESMSCRATCHROOT/archive/$CASE + $CIME_OUTPUT_ROOT/archive/$CASE csm/$CASE - $ENV{CESMDATAROOT}/ccsm_baselines + $ENV{CESMDATAROOT}/ccsm_baselines $ENV{CESMDATAROOT}/tools/cime/tools/cprnc/cprnc /glade/apps/opt/perlmods/lib64/perl5:/glade/apps/opt/perlmods/share/perl5 + 8 lsf cseg - 8 30 15 TRUE @@ -1289,6 +1663,7 @@ gmake/4.1 python all-python-libs + git intel/15.0.3 @@ -1324,6 +1699,7 @@ ncarcompilers/1.0 cmake/3.0.2 + all-python-libs @@ -1332,13 +1708,15 @@ 2 yes us - $MPILIB unordered yes 0 + + $MPILIB + ${EXEROOT}/cesm.exe diff --git a/cime/cime_config/cesm/machines/nag_mpi_argument.txt b/cime/cime_config/cesm/machines/nag_mpi_argument.txt index 6452f80ef592..95e1380aaed5 100644 --- a/cime/cime_config/cesm/machines/nag_mpi_argument.txt +++ b/cime/cime_config/cesm/machines/nag_mpi_argument.txt @@ -1,3 +1,4 @@ -wmismatch=mpi_send,mpi_recv,mpi_bsend,mpi_ssend,mpi_rsend,mpi_buffer_attach,mpi_buffer_detach,mpi_isend,mpi_ibsend,mpi_issend,mpi_irsend,mpi_irecv,mpi_mrecv,mpi_imrecv,mpi_send_init,mpi_bsend_init,mpi_ssend_init,mpi_rsend_init,mpi_recv_init,mpi_sendrecv,mpi_sendrecv_replace,mpi_get_address,mpi_pack,mpi_unpack,mpi_pack_external,mpi_unpack_external,mpi_bcast,mpi_gather,mpi_gatherv,mpi_scatter,mpi_scatterv,mpi_allgather,mpi_allgatherv,mpi_alltoall,mpi_alltoallv,mpi_alltoallw,mpi_reduce,mpi_allreduce,mpi_reduce_local,mpi_reduce_scatter_block,mpi_reduce_scatter,mpi_scan,mpi_exscan,mpi_ibcast,mpi_igather,mpi_igatherv,mpi_iscatter,mpi_iscatterv,mpi_iallgather,mpi_iallgatherv,mpi_ialltoall,mpi_ialltoallv,mpi_ialltoallw,mpi_ireduce,mpi_iallreduce,mpi_ireduce_scatter_block,mpi_ireduce_scatter,mpi_iscan,mpi_iexscan,mpi_neighbor_allgather,mpi_neighbor_allgatherv,mpi_neighbor_alltoall,mpi_neighbor_alltoallv,mpi_neighbor_alltoallw,mpi_ineighbor_allgather,mpi_ineighbor_allgatherv -wmismatch=mpi_ineighbor_alltoall,mpi_ineighbor_alltoallv,mpi_ineighbor_alltoallw,mpi_free_mem,mpi_win_create,mpi_win_attach,mpi_win_detach,mpi_win_allocate,mpi_win_shared_query,mpi_put,mpi_get,mpi_accumulate,mpi_get_accumulate,mpi_fetch_and_op,mpi_compare_and_swap,mpi_rput,mpi_rget,mpi_raccumulate,mpi_rget_accumulate,mpi_file_read_at,mpi_file_read_at_all,mpi_file_write_at,mpi_file_write_at_all,mpi_file_iread_at,mpi_file_iread_at_all,mpi_file_iwrite_at,mpi_file_iwrite_at_all,mpi_file_read,mpi_file_read_all,mpi_file_write,mpi_file_write_all,mpi_file_iread,mpi_file_iread_all,mpi_file_iwrite,mpi_file_iwrite_all,mpi_file_read_shared,mpi_file_write_shared,mpi_file_iread_shared,mpi_file_iwrite_shared,mpi_file_read_ordered,mpi_file_write_ordered,mpi_file_read_at_all_begin,mpi_file_read_at_all_end,mpi_file_write_at_all_begin,mpi_file_write_at_all_end,mpi_file_read_all_begin,mpi_file_read_all_end,mpi_file_write_all_begin,mpi_file_write_all_end,mpi_read_ordered_begin,mpi_read_ordered_end -wmismatch=mpi_write_ordered_begin,mpi_write_ordered_end,mpi_f_sync_reg,mpi_sizeof,mpibcast,mpiscatterv +-wmismatch=mpi_startall,mpi_waitall diff --git a/cime/cime_config/cesm/machines/template.case.run b/cime/cime_config/cesm/machines/template.case.run index 71e2f8367e81..24162fe45951 100755 --- a/cime/cime_config/cesm/machines/template.case.run +++ b/cime/cime_config/cesm/machines/template.case.run @@ -1,4 +1,8 @@ #!/usr/bin/env python +# Batch system directives +{{ batchdirectives }} +# PE Layout Documentation: +{{ pedocumentation }} """ template to create a case run script. This should only ever be called @@ -21,12 +25,6 @@ logger = logging.getLogger(__name__) import argparse, doctest -# Batch system directives -{{ batchdirectives }} - -# PE Layout Documentation: -{{ pedocumentation }} - ############################################################################### def parse_command_line(args, description): ############################################################################### diff --git a/cime/cime_config/cesm/machines/template.lt_archive b/cime/cime_config/cesm/machines/template.lt_archive index 25ca7f8e9776..1dd9de1a6bc0 100755 --- a/cime/cime_config/cesm/machines/template.lt_archive +++ b/cime/cime_config/cesm/machines/template.lt_archive @@ -1,4 +1,6 @@ #!/usr/bin/env python +# Batch system directives +{{ batchdirectives }} """ template to create a case longterm term archiving script. This should only ever be called @@ -19,9 +21,6 @@ from CIME.case_lt_archive import case_lt_archive logger = logging.getLogger(__name__) -# Batch system directives -{{ batchdirectives }} - ############################################################################### def parse_command_line(args, description): ############################################################################### diff --git a/cime/cime_config/cesm/machines/template.st_archive b/cime/cime_config/cesm/machines/template.st_archive index ae5411eb3257..0a1d935d5b0b 100755 --- a/cime/cime_config/cesm/machines/template.st_archive +++ b/cime/cime_config/cesm/machines/template.st_archive @@ -1,4 +1,6 @@ #!/usr/bin/env python +# Batch system directives +{{ batchdirectives }} """ template to create a case short term archiving script. This should only ever be called @@ -18,8 +20,6 @@ from CIME.case_st_archive import case_st_archive logger = logging.getLogger(__name__) -# Batch system directives -{{ batchdirectives }} ############################################################################### def parse_command_line(args, description): diff --git a/cime/cime_config/cesm/machines/userdefined_laptop_template/config_machines.xml b/cime/cime_config/cesm/machines/userdefined_laptop_template/config_machines.xml index 7ecce99c97a4..575f67da0d21 100644 --- a/cime/cime_config/cesm/machines/userdefined_laptop_template/config_machines.xml +++ b/cime/cime_config/cesm/machines/userdefined_laptop_template/config_machines.xml @@ -6,23 +6,22 @@ prefered location). --> __USEFUL_DESCRIPTION__ Darwin + something.matching.your.machine.hostname gnu - mpich,mpi-serial - $ENV{HOME}/projects/scratch/$CASE/run - $ENV{HOME}/projects/scratch/$CASE/bld + mpich $ENV{HOME}/projects/cesm-inputdata $ENV{HOME}/projects/ptclm-data $ENV{HOME}/projects/scratch/archive/$CASE csm/$CASE - $ENV{HOME}/projects/scratch - $ENV{HOME}/projects/baselines + $ENV{HOME}/projects/scratch + $ENV{HOME}/projects/baselines $CIMEROOT/tools/cprnc/build/cprnc - - + none __YOUR_NAME_HERE__ 4 4 2 + diff --git a/cime/cime_config/config_headers.xml b/cime/cime_config/config_headers.xml index d944e1d98c07..b99b9f05f41e 100644 --- a/cime/cime_config/config_headers.xml +++ b/cime/cime_config/config_headers.xml @@ -31,9 +31,8 @@
These variables control the machine dependent environment including - the paths to compilers and libraries external to cime such as netcdf, - environment variables for use in the running job should also be set - here. + the paths to compilers and libraries external to cime such as netcdf, + environment variables for use in the running job should also be set here.
@@ -49,30 +48,16 @@
These variables CANNOT be modified once case_setup has been - invoked without first invoking case_setup -clean. + invoked without first invoking case_setup -reset - component task/thread settings - if the user wants to change the values below after ./case_setup, run - ./case_setup -clean - ./case_setup - to reset the pes for the run + NTASKS: the total number of MPI tasks, a negative value indicates nodes rather than tasks. + NTHRDS: the number of OpenMP threads per MPI task. + ROOTPE: the global mpi task of the component root task, if negative, indicates nodes rather than tasks. + PSTRID: the stride of MPI tasks across the global set of pes (for now set to 1) + NINST : the number of component instances (will be spread evenly across NTASKS) - NTASKS are the total number of MPI tasks, a negative value in this field - indicates nodes rather than tasks. - NTHRDS are the number of OpenMP threads per MPI task - ROOTPE is the global mpi task associated with the root task - of that component, a negative value in this field indicates nodes rather than tasks. PSTRID is the stride of MPI tasks across the global - set of pes (for now this is set to 1) - NINST is the number of instances of the component (will be spread - evenly across NTASKS) - - for example, for a setting with - NTASKS = 8 - NTHRDS = 2 - ROOTPE = 32 - NINST = 2 - the MPI tasks would be placed starting on global pe 32 - and each pe would be threaded 2-ways for this component. + for example, for NTASKS = 8, NTHRDS = 2, ROOTPE = 32, NINST = 2 + the MPI tasks would be placed starting on global pe 32 and each pe would be threaded 2-ways These tasks will be divided amongst both instances (4 tasks each). Note: PEs that support threading never have an MPI task associated @@ -82,28 +67,14 @@ to determine how those mpi tasks should be placed across the machine. The following values should not be set by the user since they'll be - overwritten by scripts. - TOTALPES - CCSM_PCOST - CCSM_ESTCOST - PES_LEVEL - MAX_TASKS_PER_NODE - PES_PER_NODE - CCSM_TCOST - CCSM_ESTCOST - - The user can copy env_mach_pes.xml from another run, but they'll need to - do the following - ./case_setup -clean - ./case_setup - ./CASE.build + overwritten by scripts: TOTALPES, MAX_TASKS_PER_NODE, PES_PER_NODE
- These are the variables specific to the short term - archiver. For a detailed listing of the env_archive.xml file, run + These are the variables specific to the short term archiver. + For a detailed listing of the env_archive.xml file, run ./st_archive -help To validate the env_archive.xml file using xmllint, run xmllint -schema Tools/archive.xsd env_archive.xml diff --git a/cime/cime_config/config_tests.xml b/cime/cime_config/config_tests.xml index ce707321032c..45380244b44d 100644 --- a/cime/cime_config/config_tests.xml +++ b/cime/cime_config/config_tests.xml @@ -3,16 +3,17 @@ + @@ -40,8 +41,9 @@ + - + diff --git a/cime/cime_config/xml_schemas/config_batch.xsd b/cime/cime_config/xml_schemas/config_batch.xsd new file mode 100644 index 000000000000..da8e028a5b38 --- /dev/null +++ b/cime/cime_config/xml_schemas/config_batch.xsd @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime/cime_config/xml_schemas/config_build.xsd b/cime/cime_config/xml_schemas/config_compilers_v2.xsd similarity index 79% rename from cime/cime_config/xml_schemas/config_build.xsd rename to cime/cime_config/xml_schemas/config_compilers_v2.xsd index 3e26ffb06658..8160b4df8e88 100644 --- a/cime/cime_config/xml_schemas/config_build.xsd +++ b/cime/cime_config/xml_schemas/config_compilers_v2.xsd @@ -3,32 +3,17 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> - - - - - - - - - - - - - - - - - - - + + + + + + + + + + @@ -39,12 +24,21 @@ - - + + + + - - + + + + - - + complicate the process of adding new models. --> + + - - - - - - - + + + + + + + + @@ -105,11 +93,48 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -142,6 +167,8 @@ + + diff --git a/cime/cime_config/xml_schemas/config_compsets.xsd b/cime/cime_config/xml_schemas/config_compsets.xsd new file mode 100644 index 000000000000..e9072738a6d7 --- /dev/null +++ b/cime/cime_config/xml_schemas/config_compsets.xsd @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime/cime_config/xml_schemas/config_grids_v2.xsd b/cime/cime_config/xml_schemas/config_grids_v2.xsd new file mode 100644 index 000000000000..69e09e540bcf --- /dev/null +++ b/cime/cime_config/xml_schemas/config_grids_v2.xsd @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime/cime_config/xml_schemas/config_machines.xsd b/cime/cime_config/xml_schemas/config_machines.xsd new file mode 100644 index 000000000000..0385401f881f --- /dev/null +++ b/cime/cime_config/xml_schemas/config_machines.xsd @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime/cime_config/xml_schemas/config_machines_template.xml b/cime/cime_config/xml_schemas/config_machines_template.xml new file mode 100644 index 000000000000..8b8e48b862ce --- /dev/null +++ b/cime/cime_config/xml_schemas/config_machines_template.xml @@ -0,0 +1,151 @@ + + + + + + + + SITE VENDOR platform, os is ---, xx pes/node, batch system is --- + + + .*.cheyenne.ucar.edu + + + LINUX + + + https://howto.get.out + + + intel,gnu + + + mpt,openmpi,impi + + + couldbethis + + + + + + /glade/scratch/$USER + + + $ENV{CESMDATAROOT}/inputdata + + + $ENV{CESMDATAROOT}/lmwg + + + $CIME_OUTPUT_ROOT/archive/$CASE + + + csm/$CASE + + + $ENV{CESMDATAROOT}/cesm_baselines + + + $ENV{CESMDATAROOT}/tools/cime/tools/cprnc/cprnc.cheyenne + + + + + + 8 + + + pbs + + + cseg + + + 36 + + + 36 + + + TRUE + + + + + mpiexec_mpt + + + -p "%g:" + omplace + + + + + + + + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/init/perl + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/init/env_modules_python.py + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/init/csh + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/init/sh + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/libexec/lmod perl + /glade/u/apps/ch/opt/lmod/7.2.1/lmod/lmod/libexec/lmod python + module + module + + + ncarenv/1.0 + + + intel/16.0.3 + mkl + + + gnu/6.3.0 + + + mpt/2.15 + ncarcompilers/0.3.5 + + + netcdf/4.4.1 + + + netcdf/4.4.1 + + pnetcdf/1.8.0 + + + + + 256M + 16 + + + diff --git a/cime/cime_config/xml_schemas/config_pes.xsd b/cime/cime_config/xml_schemas/config_pes.xsd new file mode 100644 index 000000000000..105fc46d222d --- /dev/null +++ b/cime/cime_config/xml_schemas/config_pes.xsd @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime/cime_config/xml_schemas/entry_id.xsd b/cime/cime_config/xml_schemas/entry_id.xsd new file mode 100644 index 000000000000..51e3229d0601 --- /dev/null +++ b/cime/cime_config/xml_schemas/entry_id.xsd @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime/cime_config/xml_schemas/entry_id_base.xsd b/cime/cime_config/xml_schemas/entry_id_base.xsd new file mode 100644 index 000000000000..f7ff393e5228 --- /dev/null +++ b/cime/cime_config/xml_schemas/entry_id_base.xsd @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime/cime_config/xml_schemas/entry_id_namelist.xsd b/cime/cime_config/xml_schemas/entry_id_namelist.xsd new file mode 100644 index 000000000000..5ce333869864 --- /dev/null +++ b/cime/cime_config/xml_schemas/entry_id_namelist.xsd @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime/cime_config/xml_schemas/testlist.xsd b/cime/cime_config/xml_schemas/testlist.xsd index 3abfa3be2249..6890255a0f0b 100644 --- a/cime/cime_config/xml_schemas/testlist.xsd +++ b/cime/cime_config/xml_schemas/testlist.xsd @@ -1,58 +1,61 @@ - - + + - - - - - - - - + - - - - - - - + + + + - + + - + + + + - + - + + - - + - + - + + + - + - + - \ No newline at end of file + + + + + + + + diff --git a/cime/components/data_comps/datm/atm_comp_esmf.F90 b/cime/components/data_comps/datm/atm_comp_esmf.F90 deleted file mode 100644 index 54a7cd711cbd..000000000000 --- a/cime/components/data_comps/datm/atm_comp_esmf.F90 +++ /dev/null @@ -1,271 +0,0 @@ -module atm_comp_esmf - -#ifdef ESMF_INTERFACE - use shr_kind_mod, only: R8=>SHR_KIND_R8, IN=>SHR_KIND_IN, & - CS=>SHR_KIND_CS, CL=>SHR_KIND_CL - use shr_sys_mod ! shared system calls - - use seq_cdata_mod - use seq_infodata_mod - - use esmf - use esmfshr_mod - - use datm_comp_mod - use perf_mod - use mct_mod - - implicit none - - public :: atm_register_esmf - public :: atm_init_esmf - public :: atm_run_esmf - public :: atm_final_esmf - - private ! except - - type(seq_cdata) :: cdata - type(seq_infodata_type) :: infodata - type(mct_gsMap) :: gsmap - type(mct_gGrid) :: ggrid - type(mct_aVect) :: x2d - type(mct_aVect) :: d2x - - !----- formats ----- - character(*),parameter :: subName = "(atm_comp_esmf) " - - save ! save everything - ! - ! Author: Fei Liu - ! This module is ESMF compliant atm data component - !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -contains - !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - subroutine atm_register_esmf(comp, rc) - implicit none - type(ESMF_GridComp) :: comp - integer, intent(out) :: rc - - rc = ESMF_SUCCESS - ! Register the callback routines. - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_INITIALIZE, & - atm_init_esmf, phase=1, rc=rc) - if (rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_RUN, & - atm_run_esmf, phase=1, rc=rc) - if (rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_FINALIZE, & - atm_final_esmf, phase=1, rc=rc) - if (rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - end subroutine atm_register_esmf - - !=============================================================================== - - subroutine atm_init_esmf(comp, import_state, export_state, EClock, rc) - !---------------------------------------------------------- - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !----- local ----- - integer(IN) :: MYID - character(CL) :: NLFilename - type(ESMF_Array) :: Ex2d, Ed2x, Edom - integer(IN) :: phase - - character(*),parameter :: subName = "(atm_init_esmf) " - character(ESMF_MAXSTR) :: convCIM, purpComp - !---------------------------------------------------------- - - rc = ESMF_SUCCESS - - NLFilename = 'unused' - - call ESMF_AttributeGet(export_state, name="ID", value=MYID, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call esmfshr_infodata_state2infodata(export_state,infodata, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call seq_infodata_GetData(infodata,atm_phase=phase) - - if (phase == 1) then - call seq_cdata_init(cdata,MYID,ggrid,gsmap,infodata,'datm') - else - call ESMF_StateGet(import_state, itemName="x2d", array=Ex2d, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call esmf2mct_copy(Ex2d, x2d, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - endif - - call datm_comp_init(EClock, cdata, x2d, d2x, NLFilename) - - call esmfshr_infodata_infodata2state(infodata,export_state,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - if (phase == 1) then - Edom = mct2esmf_init(ggrid%data,gsmap,name='domain',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(ggrid%data,Edom,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Ed2x = mct2esmf_init(d2x,gsmap,name='d2x',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Ex2d = mct2esmf_init(x2d,gsmap,name='x2d',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(d2x,Ed2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(export_state,(/Edom/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(export_state,(/Ed2x/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(import_state,(/Ex2d/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - else - call ESMF_StateGet(export_state, itemName="d2x", array=Ed2x, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(d2x,Ed2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - endif - -#ifdef USE_ESMF_METADATA - convCIM = "CIM" - purpComp = "Model Component Simulation Description" - - call ESMF_AttributeAdd(comp, & - convention=convCIM, purpose=purpComp, rc=rc) - - call ESMF_AttributeSet(comp, "ShortName", "DATM", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "LongName", & - "Climatological Atmosphere Data Model", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "Description", & - "The CESM data models perform the basic function of " // & - "reading external data, modifying that data, and then " // & - "sending it to the driver via standard CESM coupling " // & - "interfaces. The driver and other models have no " // & - "fundamental knowledge of whether another component " // & - "is fully active or just a data model. In some cases, " // & - "data models are prognostic and also receive and use " // & - "some data sent by the driver to the data model. But " // & - "in most cases, the data models are not running " // & - "prognostically and have no need to receive any data " // & - "from the driver.", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "ReleaseDate", "2010", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "ModelType", "Atmosphere", & - convention=convCIM, purpose=purpComp, rc=rc) - - ! call ESMF_AttributeSet(comp, "Name", "Cecile Hannay", & - ! convention=convCIM, purpose=purpComp, rc=rc) - ! call ESMF_AttributeSet(comp, "EmailAddress", & - ! "hannay@ucar.edu", & - ! convention=convCIM, purpose=purpComp, rc=rc) - ! call ESMF_AttributeSet(comp, "ResponsiblePartyRole", "contact", & - ! convention=convCIM, purpose=purpComp, rc=rc) -#endif - - rc = ESMF_SUCCESS - - end subroutine atm_init_esmf - - !=============================================================================== - - subroutine atm_run_esmf(comp, import_state, export_state, EClock, rc) - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !----- local ----- - integer(IN) :: MYID - type(ESMF_Array) :: Ex2d, Ed2x - - character(*),parameter :: subName = "(atm_run_esmf) " - !---------------------------------------------------------- - - rc = ESMF_SUCCESS - - ! Unpack import state - - call esmfshr_infodata_state2infodata(export_state,infodata, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateGet(import_state, itemName="x2d", array=Ex2d, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call esmf2mct_copy(Ex2d, x2d, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - ! Run model - - call datm_comp_run(EClock, cdata, x2d, d2x) - - ! Pack export state - - call esmfshr_infodata_infodata2state(infodata,export_state,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateGet(export_state, itemName="d2x", array=Ed2x, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(d2x,Ed2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - rc = ESMF_SUCCESS - - end subroutine atm_run_esmf - - !=============================================================================== - - subroutine atm_final_esmf(comp, import_state, export_state, EClock, rc) - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !---------------------------------------------------------------------------- - ! Finalize routine - !---------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - call datm_comp_final() - - end subroutine atm_final_esmf - - !=============================================================================== -#endif - -end module atm_comp_esmf diff --git a/cime/components/data_comps/datm/bld/build-namelist b/cime/components/data_comps/datm/bld/build-namelist deleted file mode 100755 index 7db8506a2572..000000000000 --- a/cime/components/data_comps/datm/bld/build-namelist +++ /dev/null @@ -1,939 +0,0 @@ -#!/usr/bin/env perl -#----------------------------------------------------------------------------------------------- -# -# build-namelist -# -# This is the build-namelist script for the CIME datm (Data Atmosphere Model). -#-------------------------------------------------------------------------------------------- - -use strict; -#use warnings; -#use diagnostics; -use Cwd qw(getcwd abs_path); -use English; -use Getopt::Long; -use IO::File; -#----------------------------------------------------------------------------------------------- - -sub usage { - die < 0, - silent => 0, - debug => 0, - test => 0, - caseroot => undef, - cimeroot => abs_path( "$cfgdir/../../../../" ), - inst_string => undef, - user_xml_dir=> undef, - ); - -GetOptions( - "h|help" => \$opts{'help'}, - "infile=s" => \$opts{'infile'}, - "namelist=s" => \$opts{'namelist'}, - "print=i" => \$opts{'print'}, - "debug" => \$opts{'debug'}, - "test" => \$opts{'test'}, - "caseroot=s" => \$opts{'caseroot'}, - "cimeroot=s" => \$opts{'cimeroot'}, - "inst_string=s" => \$opts{'inst_string'}, - "user_xml_dir=s" => \$opts{'user_xml_dir'}, -) or usage(); - -# Give usage message. -usage() if $opts{'help'}; - -# Check for unparsed arguments -if (@ARGV) { - print "ERROR: unrecognized arguments: @ARGV\n"; - usage(); -} - -# Define print levels: -# 0 - only issue fatal error messages -# 1 - only informs what files are created (default) -# 2 - verbose -my $print = $opts{'print'}; -my $eol = "\n"; -# Set caseroot for Debug mode -if ( $opts{'debug'} && ! defined($opts{'caseroot'}) ) { - $opts{'caseroot'} = "$cwd/unit_testers"; - if ( $print > 1 ) { print "caseroot = $opts{'caseroot'}\n"; } -} - -# user_xml_dir -my $opt = 'user_xml_dir'; -if (defined $opts{$opt}) { - my $dir = $opts{$opt}; - if ( ! -d "$dir" ) { - die << "EOF"; -** $ProgName - $opt: $dir does NOT exist -EOF - } - my @files = glob("$dir/*.xml"); - if ( $#files == -1 && $print > 0 ) { - print << "EOF"; -** $ProgName - Warning NO XML files exist in $opt directory $dir -EOF - } -} - -my $CASEROOT = $opts{'caseroot'}; -my $CIMEROOT = $opts{'cimeroot'}; -my $INST_STRING = $opts{'inst_string'}; - -#----------------------------------------------------------------------------------------------- -my $bldconfdir = "$CASEROOT/Buildconf/datmconf"; - -if ( $opts{'debug'} ) { - my $cmd = "mkdir -p $bldconfdir"; - print "Execute: $cmd\n"; - system( "$cmd" ); - chdir( "$bldconfdir" ); -} - -# build empty config_cache.xml file (needed below) -my $config_cache = "$bldconfdir/$cfg_cache"; -my $fh = new IO::File; -$fh->open(">$config_cache") or die "** can't open file: $config_cache\n"; -print $fh <<"EOF"; - - - -EOF -$fh->close; -if ($print>=1) { print "Wrote file $config_cache $eol"; } -(-f "$config_cache") or die <<"EOF"; -** $ProgName - Cannot find configuration cache file: $config_cache\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Make sure we can find required perl modules, definition, and defaults files. -# Look for them under the directory that contains the configure script. - -# The root directory for the input data files must be specified. - -#The root directory to utils Tools -my $cimeroot = abs_path($CIMEROOT); -my $perl5lib = "$cimeroot/utils/perl5lib"; - -# The XML::Lite module is required to parse the XML files. -#(-f "$perl5lib/XML/Lite.pm") or die <<"EOF"; -#** $ProgName - Cannot find perl module \"XML/Lite.pm\" in directory - #\"$perl5lib\" ** -#EOF - -# The Build::Config module provides utilities to access the configuration information -# in the config_cache.xml file -(-f "$perl5lib/Build/Config.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Config.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist definition file contains entries for all namelist variables that -# can be output by build-namelist. -my $nl_definition_file = "$cfgdir/namelist_files/namelist_definition_datm.xml"; -# If user has user namelist definition files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_definition_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_definition_file = $newfile; - } -} -(-f "$nl_definition_file") or die <<"EOF"; -** $ProgName - Cannot find namelist definition file \"$nl_definition_file\" ** -EOF -if ($print>=2) { print "Using namelist definition file $nl_definition_file$eol"; } - -# The Build::NamelistDefinition module provides utilities to validate that the output -# namelists are consistent with the namelist definition file -(-f "$perl5lib/Build/NamelistDefinition.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefinition.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist defaults file contains default values for all required namelist variables. -my @nl_defaults_files = ( "$cfgdir/namelist_files/namelist_defaults_datm.xml"); -# If user has user namelist definition files -if (defined $opts{'user_xml_dir'}) { - my @filelist = @nl_defaults_files; - foreach my $file ( @filelist ) { - $file =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$file"; - if ( -f "$newfile" ) { - unshift @nl_defaults_files, $newfile; - } - } -} -foreach my $nl_defaults_file ( @nl_defaults_files ) { - (-f "$nl_defaults_file") or die <<"EOF"; -** $ProgName - Cannot find namelist defaults file \"$nl_defaults_file\" ** -EOF - if ($print>=2) { print "Using namelist defaults file $nl_defaults_file$eol"; } -} - -# The Build::NamelistDefaults module provides a utility to obtain default values of namelist -# variables based on finding a best fit with the attributes specified in the defaults file. -(-f "$perl5lib/Build/NamelistDefaults.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefaults.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Namelist module provides utilities to parse input namelists, to query and modify -# namelists, and to write output namelists. -(-f "$perl5lib/Build/Namelist.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Namelist.pm\" in directory - \"$perl5lib\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Add $cfgdir/perl5lib to the list of paths that Perl searches for modules -my @dirs = ( "$cfgdir/..", "$perl5lib"); -unshift @INC, @dirs; - -#require XML::Lite; -require Build::Config; -require Build::NamelistDefinition; -require Build::NamelistDefaults; -require Build::Namelist; -require Streams::TemplateGeneric; -require Config::SetupTools; - -#----------------------------------------------------------------------------------------------- -# Create a configuration object from the DATM config_cache.xml file. -my $cfg = Build::Config->new( $config_cache ); - - -# Create a namelist definition object. This object provides a method for verifying that the -# output namelist variables are in the definition file, and are output in the correct -# namelist groups. -my $definition = Build::NamelistDefinition->new( $nl_definition_file ); - -# Create a namelist defaults object. This object provides default values for variables -# contained in the input defaults file. The configuration object provides attribute -# values that are relevent for the DATM for which the namelist is being produced. -my $defaults = Build::NamelistDefaults->new( shift( @nl_defaults_files ), $cfg); -foreach my $nl_defaults_file ( @nl_defaults_files ) { - $defaults->add( "$nl_defaults_file" ); -} - -# Create an empty namelist object. Add values to it in order of precedence. -my $nl = Build::Namelist->new(); - -#----------------------------------------------------------------------------------------------- -# Some regular expressions... -my $TRUE = '\.true\.'; -my $FALSE = '\.false\.'; - -#----------------------------------------------------------------------------------------------- - -# Process the user input in order of precedence. At each point we'll only add new -# values to the namelist and not overwrite previously specified specified values which -# have higher precedence. - -# Process the commandline args that provide specific namelist values. - -# Process the -namelist arg. - -if (defined $opts{'namelist'}) { - # Parse commandline namelist - my $nl_arg = Build::Namelist->new($opts{'namelist'}); - - # Validate input namelist -- trap exceptions - my $nl_arg_valid; - eval { $nl_arg_valid = $definition->validate($nl_arg); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in commandline arg '-namelist'.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_arg_valid); -} - -# Process the -infile arg. - -if (defined $opts{'infile'}) { - foreach my $infile ( split( /,/, $opts{'infile'} ) ) { - # Parse namelist input from a file - my $nl_infile = Build::Namelist->new($infile); - - # Validate input namelist -- trap exceptions - my $nl_infile_valid; - eval { $nl_infile_valid = $definition->validate($nl_infile); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in '-infile' $infile.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_infile_valid); - } -} - -#----------------------------------------------------------------------------------------------- - -#################################### -# Required xml variables # -#################################### - -my %xmlvars = (); -SetupTools::getxmlvars(${CASEROOT},\%xmlvars); -foreach my $attr (keys %xmlvars) { - $xmlvars{$attr} = SetupTools::expand_xml_var($xmlvars{$attr}, \%xmlvars); -} -foreach my $var ( "RUN_TYPE", "DIN_LOC_ROOT", "ATM_DOMAIN_FILE", "ATM_DOMAIN_PATH", - "DATM_MODE", "DATM_PRESAERO", "DATM_TOPO", "DATM_CO2_TSERIES", - "ATM_GRID", "GRID" ) { - if ( $print > 1 ) { print "$var = $xmlvars{$var}\n"; } - if ( ! defined($xmlvars{$var}) || $xmlvars{$var} =~ /^(UNSET|)$/ ) { - die "** $ProgName - $var is NOT set ** \n" - } -} - -my $RUN_TYPE = $xmlvars{'RUN_TYPE'}; -my $DIN_LOC_ROOT = $xmlvars{'DIN_LOC_ROOT'}; -my $ATM_DOMAIN_FILE = $xmlvars{'ATM_DOMAIN_FILE'}; -my $ATM_DOMAIN_PATH = $xmlvars{'ATM_DOMAIN_PATH'}; -my $DATM_MODE = $xmlvars{'DATM_MODE'}; -my $DATM_PRESAERO = $xmlvars{'DATM_PRESAERO'}; -my $DATM_TOPO = $xmlvars{'DATM_TOPO'}; -my $DATM_CO2_TSERIES= $xmlvars{'DATM_CO2_TSERIES'}; -my $ATM_GRID = $xmlvars{'ATM_GRID'}; -my $GRID = $xmlvars{'GRID'}; -my $CLM_USRDAT_NAME = $xmlvars{'CLM_USRDAT_NAME'}; - -# Validate some of the env values. -if ( $DATM_MODE =~ /CLM/ && $DATM_PRESAERO eq "none" ) { - die "${nm}:: A DATM_MODE for CLM is incompatible with DATM_PRESAERO=none\n"; -} -if ( $DATM_MODE =~ /CLM/ && $DATM_TOPO eq "none" ) { - die "${nm}:: A DATM_MODE for CLM is incompatible with DATM_TOPO=none\n"; -} - -if ( $GRID eq "CLM_USRDAT" && $CLM_USRDAT_NAME =~ /^(UNSET|)$/ ) { - die <<"EOF"; -** $ProgName - GRID=CLM_USRDAT and CLM_USRDAT_NAME is NOT set ** -EOF -} - -(-d $DIN_LOC_ROOT) or mkdir $DIN_LOC_ROOT; -if ($print>=2) { print "Inputdata root directory: $DIN_LOC_ROOT$eol"; } - -if ($opts{'test'}) { - (-d $DIN_LOC_ROOT) or die <<"EOF"; -** $ProgName - Inputdata root is not a directory: \"$DIN_LOC_ROOT\" ** -EOF -} -my $test_files = $opts{'test'}; - -my $var = "DATM_MODE"; -my $group = $definition->get_group_name($var); -$nl->set_variable_value( $group, $var, "\'$xmlvars{$var}\'" ); -my $var = "DATM_PRESAERO"; -my $group = $definition->get_group_name($var); -$nl->set_variable_value( $group, $var, "\'$xmlvars{$var}\'" ); - -#################################### -# Streams file(s) # -#################################### - -# Get defaults for data manipulation options associated with -# each stream (mapping, filling, time-interp etc.) - -if ($print>=1) { print " datm mode is $DATM_MODE \n"; } -if ($print>=1) { print " datm presaero mode is $DATM_PRESAERO \n"; } -if ($print>=1) { print " datm topo mode is $DATM_TOPO \n"; } -if ($print>=1) { print " datm model grid is $GRID \n"; } -if ($print>=1) { print " datm atm grid is $ATM_GRID \n" }; - -# Create input data list (written to later) -my $fh_out = new IO::File; -$fh_out->open(">$CASEROOT/Buildconf/datm.input_data_list") or - die "** can't open filepath file: datm.input_data_list\n"; - -# Hash for parsing default_namelist_datm.xml -my %default_namelist_opts; -$default_namelist_opts{'grid'} = $GRID; -$default_namelist_opts{'atm_grid'} = $ATM_GRID; -$default_namelist_opts{'datm_mode'} = $DATM_MODE; -$default_namelist_opts{'presaero_mode'} = $DATM_PRESAERO; -$default_namelist_opts{'datm_co2_tseries'} = $DATM_CO2_TSERIES; - -# Create streams template file(s) - loop over streams -my $streams = $defaults->get_value( "streamslist", \%default_namelist_opts ); -$streams = SetupTools::expand_xml_var( $streams, \%xmlvars ); -my @streams = split ",", $streams, -1; -if ($DATM_PRESAERO ne "none") { - if ($DATM_PRESAERO eq "pt1_pt1") { - push (@streams, "presaero.$DATM_PRESAERO.$ATM_GRID"); - } else { - push (@streams, "presaero.$DATM_PRESAERO"); - } - } -if ($DATM_TOPO ne "none") { - push (@streams, "topo.$DATM_TOPO"); -} - -if ($DATM_CO2_TSERIES ne "none") { - push (@streams, "co2tseries.$DATM_CO2_TSERIES"); -} - -# anomaly forcing: Check for bias correction streams -my $bias_correct = $nl->get_value( 'bias_correct' ); -$bias_correct =~ s/[\'\"]//g; -if ( $bias_correct ) { - push (@streams, $bias_correct); #from namelist_defaults_datm.xml -} - -#Check for anomaly forcing streams -my $anomaly_forcing = $nl->get_value( 'anomaly_forcing' ); -$anomaly_forcing =~ s/[\'\"]//g; -my @anomaly_forcing = split ",", $anomaly_forcing, -1; -if ( @anomaly_forcing ) { - push (@streams, @anomaly_forcing); -} - -my $ostreams = undef; -my $omapalgo = undef; -my $omapmask = undef; -my $otintalgo = undef; -my $otaxmode = undef; -my $ofillalgo = undef; -my $ofillmask = undef; -my $odtlimit = undef; -foreach my $stream ( @streams ) { - - # Exit if there is no prescribed aerosol stream - if ($stream eq "presaero" && $DATM_PRESAERO eq "none" ) { - next; - } - if ($print>=1) { print " datm stream is $stream$INST_STRING \n";} - - # Create hash needed to parse namelist_defaults.xml file - # Hash default_namelist_opts contains the attribute values needed for $defaults->get_value - $default_namelist_opts{'stream'} = $stream; - if ($DATM_PRESAERO ne 'none') { - $default_namelist_opts{'presaero_flag'} = "active"; - } else { - $default_namelist_opts{'presaero_flag'} = "none"; - } - if ( $stream =~ /presaero/ ) { - $default_namelist_opts{'ispresaerostream'} = "TRUE"; - } else { - $default_namelist_opts{'ispresaerostream'} = "FALSE"; - } - $default_namelist_opts{'grid'} = $GRID; - $default_namelist_opts{'presaero_mode'} = $DATM_PRESAERO; - - # Determine stream txt file - my $outstream = "datm.streams.txt" . ".$stream" . "$INST_STRING"; - if (-e "$CASEROOT/user_$outstream") { - - if ( ! -w "$CASEROOT/user_$outstream" ) { - print "Your user streams file is read-only: $CASEROOT/user_$outstream\n"; - die "Make it writable to continue\n"; - } - my $command = "cp -p $CASEROOT/user_$outstream $bldconfdir/$outstream"; - system($command) == 0 or die "system $command failed: $? \n"; - - } else { - - # Create hash to initialze streams object - my %stream_template_opts; - if ( $print == 0 ) { - $stream_template_opts{'printing'} = 0; - } else { - $stream_template_opts{'printing'} = 1; - } - $stream_template_opts{'test'} = $opts{'test'}; - $stream_template_opts{'ProgName'} = $ProgName; - $stream_template_opts{'ProgDir'} = "$cfgdir"; - $stream_template_opts{'cmdline'} = $cmdline; - - $stream_template_opts{'offset'} = $defaults->get_value( "strm_offset" , \%default_namelist_opts ); - $stream_template_opts{'filepath'} = $defaults->get_value( "strm_datdir" , \%default_namelist_opts ); - $stream_template_opts{'filenames'} = $defaults->get_value( "strm_datfil" , \%default_namelist_opts ); - $stream_template_opts{'domainpath'} = $defaults->get_value( "strm_domdir" , \%default_namelist_opts ); - $stream_template_opts{'domain'} = $defaults->get_value( "strm_domfil" , \%default_namelist_opts ); - $stream_template_opts{'datvarnames'}= $defaults->get_value( "strm_datvar" , \%default_namelist_opts ); - $stream_template_opts{'domvarnames'}= $defaults->get_value( "strm_domvar" , \%default_namelist_opts ); - $stream_template_opts{'yearfirst'} = $defaults->get_value( "strm_year_start", \%default_namelist_opts ); - $stream_template_opts{'yearlast'} = $defaults->get_value( "strm_year_end" , \%default_namelist_opts ); - - $stream_template_opts{'filepath'} = SetupTools::expand_xml_var( $stream_template_opts{'filepath'} , \%xmlvars ); - $stream_template_opts{'filenames'} = SetupTools::expand_xml_var( $stream_template_opts{'filenames'} , \%xmlvars ); - $stream_template_opts{'domainpath'} = SetupTools::expand_xml_var( $stream_template_opts{'domainpath'}, \%xmlvars ); - $stream_template_opts{'domain'} = SetupTools::expand_xml_var( $stream_template_opts{'domain'} , \%xmlvars ); - $stream_template_opts{'yearfirst'} = SetupTools::expand_xml_var( $stream_template_opts{'yearfirst'} , \%xmlvars ); - $stream_template_opts{'yearlast'} = SetupTools::expand_xml_var( $stream_template_opts{'yearlast'} , \%xmlvars ); - - foreach my $item ( "yearfirst", "yearlast", "offset", "filepath", "filenames", "domainpath", "domain", "datvarnames", "domvarnames" ) { - if ( $stream_template_opts{$item} =~ /^[ ]*$/ ) { - die "$ProgName ERROR:: bad $item for stream: $stream\n"; - } - } - - # Create the streams txt file for this stream (from a generic template) - my $stream_template = Streams::TemplateGeneric->new( \%stream_template_opts ); - $stream_template->Read( "${CASEROOT}/Buildconf/datm.template.streams.xml" ); - $stream_template->Write( $outstream ); - - # Append to datm.input_data_list - my @filenames = $stream_template->GetDataFilenames( 'domain'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "domain${i} = $file\n"; - } - - my @filenames = $stream_template->GetDataFilenames( 'data'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "file${i} = $file\n"; - } - } - - # Stream specific namelist variables used below for $nl - my $tintalgo = $defaults->get_value( "strm_tintalgo" , \%default_namelist_opts); - my $mapalgo = $defaults->get_value( 'strm_mapalgo' , \%default_namelist_opts); - my $mapmask = $defaults->get_value( 'strm_mapmask' , \%default_namelist_opts); - my $taxmode = $defaults->get_value( "strm_taxmode" , \%default_namelist_opts); - my $fillalgo = $defaults->get_value( 'strm_fillalgo' , \%default_namelist_opts); - my $fillmask = $defaults->get_value( 'strm_fillmask' , \%default_namelist_opts); - my $dtlimit = $defaults->get_value( 'strm_dtlimit' , \%default_namelist_opts); - my $beg_year = $defaults->get_value( 'strm_year_start', \%default_namelist_opts); - my $end_year = $defaults->get_value( 'strm_year_end' , \%default_namelist_opts); - my $align_year = $defaults->get_value( 'strm_year_align', \%default_namelist_opts); - $beg_year = SetupTools::expand_xml_var($beg_year, \%xmlvars ); - $end_year = SetupTools::expand_xml_var($end_year, \%xmlvars ); - $align_year = SetupTools::expand_xml_var($align_year, \%xmlvars ); - - foreach my $year ( $beg_year, $end_year, $align_year ) { - if ( $year eq "" || $year !~ /[0-9]+/ ) { - print "\n\nyear=$year is NOT set or NOT an integer\n"; - die "$ProgName ERROR:: bad year to run stream over: $stream\n"; - } - } - if ( $beg_year > $end_year ) { - print "\n\nbeg_year=$beg_year end_year=$end_year\n"; - die "$ProgName ERROR:: beg_year greater than end_year\n"; - } - - if ( ! defined($ostreams) ) { - $ostreams = "\"$outstream $align_year $beg_year $end_year\""; - $omapalgo = "\'$mapalgo\'"; - $omapmask = "\'$mapmask\'"; - $otintalgo = "\'$tintalgo\'"; - $otaxmode = "\'$taxmode\'"; - $ofillalgo = "\'$fillalgo\'"; - $ofillmask = "\'$fillmask\'"; - $odtlimit = "$dtlimit"; - } else { - $ostreams = "$ostreams,\"$outstream $align_year $beg_year $end_year\""; - $omapalgo .= ",\'$mapalgo\'"; - $omapmask .= ",\'$mapmask\'"; - $otintalgo .= ",\'$tintalgo\'"; - $otaxmode .= ",\'$taxmode\'"; - $ofillalgo .= ",\'$fillalgo\'"; - $ofillmask .= ",\'$fillmask\'"; - $odtlimit .= ",$dtlimit"; - } - -} - -$fh_out->close; - -########################################################## -# namelist group: shr_strdata_nml (in file datm_atm_in) # -########################################################## - -my $datamode = $defaults->get_value( "datamode", \%default_namelist_opts ); -my $vectors = $defaults->get_value( "vectors", \%default_namelist_opts ); -add_default($nl, 'datamode', 'val' => "$datamode" ); -add_default($nl, 'vectors', 'val' => "$vectors" ); -add_default($nl, 'domainfile', 'val' => "${ATM_DOMAIN_PATH}/${ATM_DOMAIN_FILE}" ); -add_default($nl, 'streams', 'val' => "$ostreams" ); -add_default($nl, 'mapalgo', 'val' => "$omapalgo" ); -add_default($nl, 'mapmask', 'val' => "$omapmask" ); -add_default($nl, 'tintalgo', 'val' => "$otintalgo" ); -add_default($nl, 'taxmode', 'val' => "$otaxmode" ); -add_default($nl, 'fillalgo', 'val' => "$ofillalgo" ); -add_default($nl, 'fillmask', 'val' => "$ofillmask" ); -add_default($nl, 'dtlimit', 'val' => "$odtlimit" ); - -########################################################## -# namelist group: datm_nml (in file datm_in) # -########################################################## - -add_default($nl, 'atm_in' , 'val'=>"datm_atm_in${INST_STRING}"); -add_default($nl, 'iradsw'); -if ($DATM_MODE =~ /^CORE/) { - my $factorfn = "$DIN_LOC_ROOT/atm/datm7/CORE2/COREv2.correction_factors.T62.121007.nc"; - add_default($nl, 'factorfn', 'val'=>"$factorfn" ); -} -if ($DATM_PRESAERO eq "none" ) { - add_default($nl, 'presaero', 'val'=>'.false.'); -} else { - add_default($nl, 'presaero', 'val'=>'.true.'); -} -add_default($nl, 'decomp', 'val'=>'1d'); -add_default($nl, 'force_prognostic_true', 'val'=>'.false.'); -add_default($nl, 'restfilm', 'val'=>'undefined'); -add_default($nl, 'restfils', 'val'=>'undefined'); - -if ( $RUN_TYPE =~ /branch/ ) { - # The datm master restart file is currently unused - #if (not defined $nl->get_value('restfils')) { - # die "$ProgName ERROR:: restfilm is required for a branch type.\n"; - #} -} - -#----------------------------------------------------------------------------------------------- -# Validate that the entire resultant namelist is valid -# -$definition->validate($nl); - -#----------------------------------------------------------------------------------------------- -# Write output files -# -my $note = ""; - -# datm_atm_in -my @groups = qw(shr_strdata_nml); -my $outfile = "./datm_atm_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing datm_dshr namelist to $outfile $eol"; } - -# datm_in -@groups = qw(datm_nml); -$outfile = "./datm_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing datm_in namelist to $outfile $eol"; } - -# atm_modelio -@groups = qw(modelio); -$outfile = "./atm_modelio.nml"; -$nl->set_variable_value( "modelio", "logfile", "'atm.log'" ); -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing atm_modelio.nml namelist to $outfile $eol"; } - -# Test that input files exist locally. -check_input_files($nl, $DIN_LOC_ROOT, "$CASEROOT/Buildconf/datm.input_data_list"); - - -# END OF MAIN SCRIPT -#=============================================================================================== - -sub add_default { - -# Add a value for the specified variable to the specified namelist object. The variables -# already in the object have the higher precedence, so if the specified variable is already -# defined in the object then don't overwrite it, just return. -# -# This method checks the definition file and adds the variable to the correct -# namelist group. -# -# The value can be provided by using the optional argument key 'val' in the -# calling list. Otherwise a default value is obtained from the namelist -# defaults object. If no default value is found this method throws an exception -# unless the 'nofail' option is set true. -# -# Example 1: Specify the default value $val for the namelist variable $var in namelist -# object $nl: -# -# add_default($nl, $var, 'val'=>$val) -# -# Example 2: Add a default for variable $var if an appropriate value is found. Otherwise -# don't add the variable -# -# add_default($nl, $var, 'nofail'=>1) -# -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object -# $defaults -- the namelist defaults object -# $DIN_LOC_ROOT -- inputdata root directory - - my $nl = shift; # namelist object - my $var = shift; # name of namelist variable - my %opts = @_; # options - - # If variable has quotes around it - if ( $var =~ /'(.+)'/ ) { - $var = $1; - } - # Query the definition to find which group the variable belongs to. Exit if not found. - my $group = $definition->get_group_name($var); - unless ($group) { - my $fname = $definition->get_file_name(); - die "$ProgName - ERROR: variable \"$var\" not found in namelist definition file $fname.\n"; - } - - # check whether the variable has a value in the namelist object -- if so then skip to end - my $val = $nl->get_variable_value($group, $var); - if (! defined $val) { - - # Look for a specified value in the options hash - - if (defined $opts{'val'}) { - $val = $opts{'val'}; - } - # or else get a value from namelist defaults object. - # Note that if the 'val' key isn't in the hash, then just pass anything else - # in %opts to the get_value method to be used as attributes that are matched - # when looking for default values. - else { - $val = $defaults->get_value($var, \%opts); - - # Truncate model_version appropriately - - if ( $var eq "model_version" ) { - $val =~ /(URL: https:\/\/[a-zA-Z0-9._-]+\/)([a-zA-Z0-9\/._-]+)(\/bld\/.+)/; - $val = $2; - } - } - - unless ( defined($val) ) { - unless ($opts{'nofail'}) { - die "$ProgName - No default value found for $var.\n" . - " Are defaults provided? \n"; - } - else { - return; - } - } - - - # query the definition to find out if the variable is an input pathname - my $is_input_pathname = $definition->is_input_pathname($var); - - # The default values for input pathnames are relative. If the namelist - # variable is defined to be an absolute pathname, then prepend - # the inputdata root directory. - if (not defined $opts{'no_abspath'}) { - if (defined $opts{'set_abspath'}) { - $val = set_abs_filepath($val, $opts{'set_abspath'}); - } else { - if ($is_input_pathname eq 'abs') { - $val = set_abs_filepath($val, $DIN_LOC_ROOT); - if ( $opts{'test'} ) { - if ($print>=2) { print "Test that $val exists$eol"; } - if ( ($val !~ /null/) and (! -f "$val") ) { - die "$ProgName - file not found: $var = $val\n"; - } - } - } - } - } - - # query the definition to find out if the variable takes a string value. - # The returned string length will be >0 if $var is a string, and 0 if not. - my $str_len = $definition->get_str_len($var); - - # If the variable is a string, then add quotes if they're missing - if ($str_len > 0) { - $val = quote_string($val); - } - - # set the value in the namelist - $nl->set_variable_value($group, $var, $val); - } - -} - -#----------------------------------------------------------------------------------------------- - -sub check_input_files { - -# For each variable in the namelist which is an input dataset, check to see if it -# exists locally. -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object - - my $nl = shift; # namelist object - my $inputdata_rootdir = shift; # if false prints test, else creates inputdata file - my $outfile = shift; - open(OUTFILE, ">>$outfile") if defined $inputdata_rootdir; - - # Look through all namelist groups - my @groups = $nl->get_group_names(); - foreach my $group (@groups) { - - # Look through all variables in each group - my @vars = $nl->get_variable_names($group); - foreach my $var (@vars) { - - # Is the variable an input dataset? - my $input_pathname_type = $definition->is_input_pathname($var); - - # If it is, check whether it exists locally and print status - if ($input_pathname_type) { - - # Get pathname of input dataset - my $pathname = $nl->get_variable_value($group, $var); - # Need to strip the quotes - $pathname =~ s/[\'\"]//g; - - if ($input_pathname_type eq 'abs') { - if ($inputdata_rootdir) { - print OUTFILE "$var = $pathname\n"; - } - else { - if (-e $pathname) { # use -e rather than -f since the absolute pathname - # might be a directory - print "OK -- found $var = $pathname\n"; - } - else { - print "NOT FOUND: $var = $pathname\n"; - } - } - } - elsif ($input_pathname_type =~ m/rel:(.+)/o) { - # The match provides the namelist variable that contains the - # root directory for a relative filename - my $rootdir_var = $1; - my $rootdir = $nl->get_variable_value($group, $rootdir_var); - $rootdir =~ s/[\'\"]//g; - if ($inputdata_rootdir) { - $pathname = "$rootdir/$pathname"; - print OUTFILE "$var = $pathname\n"; - } - else { - if (-f "$rootdir/$pathname") { - print "OK -- found $var = $rootdir/$pathname\n"; - } - else { - print "NOT FOUND: $var = $rootdir/$pathname\n"; - } - } - } - } - } - } - close OUTFILE if defined $inputdata_rootdir; - return 0 if defined $inputdata_rootdir; -} - -#----------------------------------------------------------------------------------------------- - -sub set_abs_filepath { - -# check whether the input filepath is an absolute path, and if it isn't then -# prepend a root directory - - my ($filepath, $rootdir) = @_; - - # strip any leading/trailing whitespace - $filepath =~ s/^\s+//; - $filepath =~ s/\s+$//; - $rootdir =~ s/^\s+//; - $rootdir =~ s/\s+$//; - - # strip any leading/trailing quotes - $filepath =~ s/^['"]+//; - $filepath =~ s/["']+$//; - $rootdir =~ s/^['"]+//; - $rootdir =~ s/["']+$//; - - my $out = $filepath; - unless ( $filepath =~ /^\// ) { # unless $filepath starts with a / - $out = "$rootdir/$filepath"; # prepend the root directory - } - return $out; -} - -#----------------------------------------------------------------------------------------------- - -sub valid_option { - - my ($val, @expect) = @_; - my ($expect); - - $val =~ s/^\s+//; - $val =~ s/\s+$//; - foreach $expect (@expect) { - if ($val =~ /^$expect$/i) { return $expect; } - } - return undef; -} - -#----------------------------------------------------------------------------------------------- - -sub quote_string { - my $str = shift; - $str =~ s/^\s+//; - $str =~ s/\s+$//; - unless ($str =~ /^['"]/) { #"' - $str = "\'$str\'"; - } - return $str; -} - diff --git a/cime/components/data_comps/datm/bld/namelist_files/namelist_defaults.xsl b/cime/components/data_comps/datm/bld/namelist_files/namelist_defaults.xsl deleted file mode 100644 index f4fbce3fb284..000000000000 --- a/cime/components/data_comps/datm/bld/namelist_files/namelist_defaults.xsl +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - CESM DATM (Data Atmosphere Model) Namelist Defaults - - -

Default Values for Namelist Variables

-

Included in the table are the following pieces of information:

-

Table headers include:

-
    -
  • Name of variable
  • -
  • Stream
  • -
  • Grid
  • -
-

Miscellaneous items include:

-
    -
  1. DATM_MODE
  2. -
  3. presaero_flag
  4. -
  5. presaero_mode
  6. -
- - - - - - - - - - - - - - - - - - - - - - - - -
Namelist Defaults
NameStreamHorz. GridMiscellaneous
Default Value for this Configuration
- - - - - - - - All streams - - - - - - - - - All res - - - - - DATM_MODE= - - - presaero_flag= - - - presaero_mode= - -
Value:
- - - - -
- -
diff --git a/cime/components/data_comps/datm/bld/namelist_files/namelist_defaults_datm.xml b/cime/components/data_comps/datm/bld/namelist_files/namelist_defaults_datm.xml deleted file mode 100644 index cb2ade1546c8..000000000000 --- a/cime/components/data_comps/datm/bld/namelist_files/namelist_defaults_datm.xml +++ /dev/null @@ -1,2671 +0,0 @@ - - - - - - - - - - - - -NULL -CLMNCEP -CLMNCEP -CLMNCEP -CLMNCEP -CLMNCEP -CPLHIST -CORE2_NYF -CORE2_IAF -COPYALL -CLMNCEP - - - - - -CLM_QIAN.Solar,CLM_QIAN.Precip,CLM_QIAN.TPQW -CLM1PT.$ATM_GRID -CLMCRUNCEP.Solar,CLMCRUNCEP.Precip,CLMCRUNCEP.TPQW -CLMCRUNCEP_V5.Solar,CLMCRUNCEP_V5.Precip,CLMCRUNCEP_V5.TPQW -CLMGSWP3.Solar,CLMGSWP3.Precip,CLMGSWP3.TPQW -CORE2_NYF.GISS,CORE2_NYF.GXGXS,CORE2_NYF.NCEP -CORE2_IAF.GCGCS.PREC,CORE2_IAF.GISS.LWDN,CORE2_IAF.GISS.SWDN,CORE2_IAF.GISS.SWUP,CORE2_IAF.NCEP.DN10,CORE2_IAF.NCEP.Q_10,CORE2_IAF.NCEP.SLP_,CORE2_IAF.NCEP.T_10,CORE2_IAF.NCEP.U_10,CORE2_IAF.NCEP.V_10,CORE2_IAF.CORE2.ArcFactor -CORE2_IAF.NCEP.DENS.SOFS,CORE2_IAF.NCEP.PSLV.SOFS,CORE2_IAF.PREC.SOFS.DAILY,CORE2_IAF.LWDN.SOFS.DAILY,CORE2_IAF.SWDN.SOFS.DAILY,CORE2_IAF.SWUP.SOFS.DAILY,CORE2_IAF.SHUM.SOFS.6HOUR,CORE2_IAF.TBOT.SOFS.6HOUR,CORE2_IAF.U.SOFS.6HOUR,CORE2_IAF.V.SOFS.6HOUR,CORE2_IAF.CORE2.ArcFactor -CPLHIST3HrWx.Solar,CPLHIST3HrWx.Precip,CPLHIST3HrWx.nonSolarNonPrecip -WW3 -NLDAS - - - - - -null -null -null -null -null -null -null -u:v -u:v -u:v -null - - - - - -1.5 - - - - - -$DATM_CLMNCEP_YR_ALIGN -1993 -1993 -$DIN_LOC_ROOT/atm/datm7/domain.clm -domain.lnd.1x1pt-mexicocityMEX_navy.090715.nc -$DIN_LOC_ROOT/atm/datm7/CLM1PT_data/mexicocityMEX.c080124 -clm1pt-1993-12.nc -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - ZBOT z - TBOT tbot - RH rh - WIND wind - PRECTmms precn - FSDS swdn - FSDSdir swdndr - FSDSdif swdndf - PSRF pbot - FLDS lwdn - - -$DATM_CLMNCEP_YR_ALIGN -1992 -1992 -$DIN_LOC_ROOT/atm/datm7/domain.clm -domain.lnd.1x1pt-vancouverCAN_navy.090715.nc -$DIN_LOC_ROOT/atm/datm7/CLM1PT_data/vancouverCAN.c080124 -clm1pt-1992-08.nc -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - ZBOT z - TBOT tbot - RH rh - WIND wind - PRECTmms precn - FSDS swdn - FSDSdir swdndr - FSDSdif swdndf - PSRF pbot - FLDS lwdn - - -$DATM_CLMNCEP_YR_ALIGN -0001 -0002 -$DIN_LOC_ROOT/atm/datm7/domain.clm -domain.lnd.1x1pt-urbanc_alpha_navy.090715.nc -$DIN_LOC_ROOT/atm/datm7/CLM1PT_data/urbanc_alpha.c080416 - - clm1pt-0001-08.nc - clm1pt-0001-09.nc - clm1pt-0001-10.nc - clm1pt-0001-11.nc - clm1pt-0001-12.nc - clm1pt-0002-01.nc - clm1pt-0002-02.nc - clm1pt-0002-03.nc - clm1pt-0002-04.nc - clm1pt-0002-05.nc - clm1pt-0002-06.nc - clm1pt-0002-07.nc - clm1pt-0002-08.nc - clm1pt-0002-09.nc - clm1pt-0002-10.nc - clm1pt-0002-11.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - ZBOT z - TBOT tbot - QBOT shum - WIND wind - PRECTmms precn - FSDS swdn - FSDSdir swdndr - FSDSdif swdndf - PSRF pbot - FLDS lwdn - - -$DATM_CLMNCEP_YR_ALIGN -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$ATM_DOMAIN_PATH -$ATM_DOMAIN_FILE -$DIN_LOC_ROOT_CLMFORC/$CLM_USRDAT_NAME/CLM1PT_data -%ym.nc -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - ZBOT z - TBOT tbot - RH rh - WIND wind - PRECTmms precn - FSDS swdn - PSRF pbot - FLDS lwdn - - - - - - -$DATM_CPLHIST_CASE -$DATM_CPLHIST_YR_ALIGN -$DATM_CPLHIST_YR_START -$DATM_CPLHIST_YR_END -$DIN_LOC_ROOT/atm/datm7 -domain.lnd.fv0.9x1.25_gx1v6.090309.nc -/glade/p/cesm/shared_outputdata/cases/ccsm4/$DATM_CPLHIST_CASE/cpl/hist -$DATM_CPLHIST_CASE.cpl.ha2x3h.%ym.nc --10800 -coszen - - time time - xc lon - yc lat - area area - mask mask - - - a2x3h_Faxa_swndr swndr - a2x3h_Faxa_swvdr swvdr - a2x3h_Faxa_swndf swndf - a2x3h_Faxa_swvdf swvdf - - -$DATM_CPLHIST_CASE -$DATM_CPLHIST_YR_ALIGN -$DATM_CPLHIST_YR_START -$DATM_CPLHIST_YR_END -$DIN_LOC_ROOT/atm/datm7 -domain.lnd.fv0.9x1.25_gx1v6.090309.nc -/glade/p/cesm/shared_outputdata/cases/ccsm4/$DATM_CPLHIST_CASE/cpl/hist -$DATM_CPLHIST_CASE.cpl.ha2x3h.%ym.nc --5400 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - a2x3h_Faxa_rainc rainc - a2x3h_Faxa_rainl rainl - a2x3h_Faxa_snowc snowc - a2x3h_Faxa_snowl snowl - - -$DATM_CPLHIST_CASE -$DATM_CPLHIST_YR_ALIGN -$DATM_CPLHIST_YR_START -$DATM_CPLHIST_YR_END -$DIN_LOC_ROOT/atm/datm7 -domain.lnd.fv0.9x1.25_gx1v6.090309.nc -/glade/p/cesm/shared_outputdata/cases/ccsm4/$DATM_CPLHIST_CASE/cpl/hist -$DATM_CPLHIST_CASE.cpl.ha2x3h.%ym.nc --5400 -linear - - time time - xc lon - yc lat - area area - mask mask - - - a2x3h_Sa_z z - a2x3h_Sa_u u - a2x3h_Sa_v v - a2x3h_Sa_tbot tbot - a2x3h_Sa_ptem ptem - a2x3h_Sa_shum shum - a2x3h_Sa_pbot pbot - a2x3h_Faxa_lwdn lwdn - a2x3h_Sa_dens dens - a2x3h_Sa_pslv pslv - - - - - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/atm/datm7/atm_forcing.datm7.Qian.T62.c080727/Solar6Hrly -clmforc.Qian.c2006.T62.Solr.%ym.nc -0 -coszen - - time time - xc lon - yc lat - area area - mask mask - - - FSDS swdn - - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT/atm/datm7 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/atm/datm7/atm_forcing.datm7.Qian.T62.c080727/Precip6Hrly -clmforc.Qian.c2006.T62.Prec.%ym.nc -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - PRECTmms precn - - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT/atm/datm7 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/atm/datm7/atm_forcing.datm7.Qian.T62.c080727/TmpPrsHumWnd3Hrly -clmforc.Qian.c2006.T62.TPQW.%ym.nc -0 -linear - - time time - xc lon - yc lat - area area - mask mask - - - TBOT tbot - WIND wind - QBOT shum - PSRF pbot - - - - - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT/share/domains/domain.clm -domain.lnd.360x720.130305.nc -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V4.c130305/Solar6Hrly -clmforc.cruncep.V4.c2011.0.5d.Solr.%ym.nc -0 -coszen -bilinear -copy - - time time - xc lon - yc lat - area area - mask mask - - - FSDS swdn - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT/share/domains/domain.clm -domain.lnd.360x720.130305.nc -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V4.c130305/Precip6Hrly -clmforc.cruncep.V4.c2011.0.5d.Prec.%ym.nc -0 -nearest -bilinear -copy - - time time - xc lon - yc lat - area area - mask mask - - - PRECTmms precn - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT/share/domains/domain.clm -domain.lnd.360x720.130305.nc -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V4.c130305/TPHWL6Hrly -clmforc.cruncep.V4.c2011.0.5d.TPQWL.%ym.nc -0 -linear -bilinear -copy - - time time - xc lon - yc lat - area area - mask mask - - - TBOT tbot - WIND wind - QBOT shum - PSRF pbot - - - - - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V5.c140715 -domain.cruncep.V5.c2013.0.5d.nc -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V5.c140715/Solar6Hrly -clmforc.cruncep.V5.c2014.0.5d.Solr.%ym.nc -0 -coszen -bilinear -copy - - time time - xc lon - yc lat - area area - mask mask - - - FSDS swdn - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V5.c140715 -domain.cruncep.V5.c2013.0.5d.nc -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V5.c140715/Precip6Hrly -clmforc.cruncep.V5.c2014.0.5d.Prec.%ym.nc -0 -nearest -bilinear -copy - - time time - xc lon - yc lat - area area - mask mask - - - PRECTmms precn - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V5.c140715 -domain.cruncep.V5.c2013.0.5d.nc -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V5.c140715/TPHWL6Hrly -clmforc.cruncep.V5.c2014.0.5d.TPQWL.%ym.nc -0 -linear -bilinear -copy - - time time - xc lon - yc lat - area area - mask mask - - - TBOT tbot - WIND wind - QBOT shum - PSRF pbot - - - - - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.GSWP3.0.5d.V1.c141016 -domain.GSWP3.c2014.0.5d.nc -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.GSWP3.0.5d.V1.c141016/Solar -clmforc.GSWP3.c2011.0.5x0.5.Solr.%ym.nc -0 -coszen -bilinear -copy - - time time - xc lon - yc lat - area area - mask mask - - - FSDS swdn - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.GSWP3.0.5d.V1.c141016 -domain.GSWP3.c2014.0.5d.nc -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.GSWP3.0.5d.V1.c141016/Precip -clmforc.GSWP3.c2011.0.5x0.5.Prec.%ym.nc -0 -nearest -bilinear -copy - - time time - xc lon - yc lat - area area - mask mask - - - PRECTmms precn - - - -$DATM_CLMNCEP_YR_START -$DATM_CLMNCEP_YR_END -$DATM_CLMNCEP_YR_ALIGN -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.GSWP3.0.5d.V1.c141016 -domain.GSWP3.c2014.0.5d.nc -$DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.GSWP3.0.5d.V1.c141016/TPHWL -clmforc.GSWP3.c2011.0.5x0.5.TPQWL.%ym.nc -0 -linear -bilinear -copy - - time time - xc lon - yc lat - area area - mask mask - - - TBOT tbot - WIND wind - QBOT shum - PSRF pbot - FLDS lwdn - - - - - - - -1 -1 -1 -$DIN_LOC_ROOT/atm/datm7/NYF -nyf.giss.T62.051007.nc -$DIN_LOC_ROOT/atm/datm7/NYF -nyf.giss.T62.051007.nc -0 -linear - - time time - lon lon - lat lat - area area - mask mask - - - lwdn lwdn - swdn swdn - swup swup - - - - -1 -1 -1 -$DIN_LOC_ROOT/atm/datm7/NYF -nyf.gxgxs.T62.051007.nc -$DIN_LOC_ROOT/atm/datm7/NYF -nyf.gxgxs.T62.051007.nc -0 -linear - - time time - lon lon - lat lat - area area - mask mask - - - prc prec - - - - -1 -1 -1 -$DIN_LOC_ROOT/atm/datm7/NYF -nyf.ncep.T62.050923.nc -$DIN_LOC_ROOT/atm/datm7/NYF -nyf.ncep.T62.050923.nc -0 -linear - - time time - lon lon - lat lat - area area - mask mask - - - dn10 dens - slp_ pslv - q_10 shum - t_10 tbot - u_10 u - v_10 v - - - - - - - - - - - - - - - - - - - - - -2010 -2011 -1 -$DIN_LOC_ROOT/share/domains -domain.ocn.01col.SOFS.20150828.nc -$DIN_LOC_ROOT/ocn/iaf - -ncep.SOFS.2010.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - dn10 dens - - -2010 -2011 -1 -$DIN_LOC_ROOT/share/domains -domain.ocn.01col.SOFS.20150828.nc -$DIN_LOC_ROOT/ocn/iaf - -ncep.SOFS.2010.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - slp_ pslv - - - -2010 -2011 -1 -$DIN_LOC_ROOT/share/domains -domain.ocn.01col.SOFS.20150828.nc -$DIN_LOC_ROOT/ocn/iaf - -SOFS.daily.03-09.2010.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - prec prec - - -2010 -2011 -1 -$DIN_LOC_ROOT/share/domains -domain.ocn.01col.SOFS.20150828.nc -$DIN_LOC_ROOT/ocn/iaf - -SOFS.daily.03-09.2010.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - lwdn lwdn - - -2010 -2011 -1 -$DIN_LOC_ROOT/share/domains -domain.ocn.01col.SOFS.20150828.nc -$DIN_LOC_ROOT/ocn/iaf - -SOFS.daily.03-09.2010.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - swdn swdn - - -2010 -2011 -1 -$DIN_LOC_ROOT/share/domains -domain.ocn.01col.SOFS.20150828.nc -$DIN_LOC_ROOT/ocn/iaf - -SOFS.daily.03-09.2010.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - swup swup - - - -2010 -2011 -1 -$DIN_LOC_ROOT/share/domains -domain.ocn.01col.SOFS.20150828.nc -$DIN_LOC_ROOT/ocn/iaf - -SOFS.6hour.03-09.2010.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - q3_5 shum - - -2010 -2011 -1 -$DIN_LOC_ROOT/share/domains -domain.ocn.01col.SOFS.20150828.nc -$DIN_LOC_ROOT/ocn/iaf - -SOFS.6hour.03-09.2010.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - t3_5 tbot - - -2010 -2011 -1 -$DIN_LOC_ROOT/share/domains -domain.ocn.01col.SOFS.20150828.nc -$DIN_LOC_ROOT/ocn/iaf - -SOFS.6hour.03-09.2010.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - u3_5 u - - -2010 -2011 -1 -$DIN_LOC_ROOT/share/domains -domain.ocn.01col.SOFS.20150828.nc -$DIN_LOC_ROOT/ocn/iaf - -SOFS.6hour.03-09.2010.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - v3_5 v - - - - -1948 -2009 -1 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/ocn/iaf - -gcgcs.prec.T62.1948.nc -gcgcs.prec.T62.1949.nc -gcgcs.prec.T62.1950.nc -gcgcs.prec.T62.1951.nc -gcgcs.prec.T62.1952.nc -gcgcs.prec.T62.1953.nc -gcgcs.prec.T62.1954.nc -gcgcs.prec.T62.1955.nc -gcgcs.prec.T62.1956.nc -gcgcs.prec.T62.1957.nc -gcgcs.prec.T62.1958.nc -gcgcs.prec.T62.1959.nc -gcgcs.prec.T62.1960.nc -gcgcs.prec.T62.1961.nc -gcgcs.prec.T62.1962.nc -gcgcs.prec.T62.1963.nc -gcgcs.prec.T62.1964.nc -gcgcs.prec.T62.1965.nc -gcgcs.prec.T62.1966.nc -gcgcs.prec.T62.1967.nc -gcgcs.prec.T62.1968.nc -gcgcs.prec.T62.1969.nc -gcgcs.prec.T62.1970.nc -gcgcs.prec.T62.1971.nc -gcgcs.prec.T62.1972.nc -gcgcs.prec.T62.1973.nc -gcgcs.prec.T62.1974.nc -gcgcs.prec.T62.1975.nc -gcgcs.prec.T62.1976.nc -gcgcs.prec.T62.1977.nc -gcgcs.prec.T62.1978.nc -gcgcs.prec.T62.1979.nc -gcgcs.prec.T62.1980.nc -gcgcs.prec.T62.1981.nc -gcgcs.prec.T62.1982.nc -gcgcs.prec.T62.1983.nc -gcgcs.prec.T62.1984.nc -gcgcs.prec.T62.1985.nc -gcgcs.prec.T62.1986.nc -gcgcs.prec.T62.1987.nc -gcgcs.prec.T62.1988.nc -gcgcs.prec.T62.1989.nc -gcgcs.prec.T62.1990.nc -gcgcs.prec.T62.1991.nc -gcgcs.prec.T62.1992.nc -gcgcs.prec.T62.1993.nc -gcgcs.prec.T62.1994.nc -gcgcs.prec.T62.1995.nc -gcgcs.prec.T62.1996.nc -gcgcs.prec.T62.1997.nc -gcgcs.prec.T62.1998.nc -gcgcs.prec.T62.1999.nc -gcgcs.prec.T62.2000.nc -gcgcs.prec.T62.2001.nc -gcgcs.prec.T62.2002.nc -gcgcs.prec.T62.2003.nc -gcgcs.prec.T62.2004.nc -gcgcs.prec.T62.2005.nc -gcgcs.prec.T62.2006.nc -gcgcs.prec.T62.2007.nc -gcgcs.prec.T62.2008.20120412.nc -gcgcs.prec.T62.2009.20120412.nc - - -linear -1.5 -0 - - time time - xc lon - yc lat - area area - mask mask - - - prc prec - - - - -1948 -2009 - 1 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/ocn/iaf - -giss.lwdn.T62.1948.nc -giss.lwdn.T62.1949.nc -giss.lwdn.T62.1950.nc -giss.lwdn.T62.1951.nc -giss.lwdn.T62.1952.nc -giss.lwdn.T62.1953.nc -giss.lwdn.T62.1954.nc -giss.lwdn.T62.1955.nc -giss.lwdn.T62.1956.nc -giss.lwdn.T62.1957.nc -giss.lwdn.T62.1958.nc -giss.lwdn.T62.1959.nc -giss.lwdn.T62.1960.nc -giss.lwdn.T62.1961.nc -giss.lwdn.T62.1962.nc -giss.lwdn.T62.1963.nc -giss.lwdn.T62.1964.nc -giss.lwdn.T62.1965.nc -giss.lwdn.T62.1966.nc -giss.lwdn.T62.1967.nc -giss.lwdn.T62.1968.nc -giss.lwdn.T62.1969.nc -giss.lwdn.T62.1970.nc -giss.lwdn.T62.1971.nc -giss.lwdn.T62.1972.nc -giss.lwdn.T62.1973.nc -giss.lwdn.T62.1974.nc -giss.lwdn.T62.1975.nc -giss.lwdn.T62.1976.nc -giss.lwdn.T62.1977.nc -giss.lwdn.T62.1978.nc -giss.lwdn.T62.1979.nc -giss.lwdn.T62.1980.nc -giss.lwdn.T62.1981.nc -giss.lwdn.T62.1982.nc -giss.lwdn.T62.1983.nc -giss.lwdn.T62.1984.nc -giss.lwdn.T62.1985.nc -giss.lwdn.T62.1986.nc -giss.lwdn.T62.1987.nc -giss.lwdn.T62.1988.nc -giss.lwdn.T62.1989.nc -giss.lwdn.T62.1990.nc -giss.lwdn.T62.1991.nc -giss.lwdn.T62.1992.nc -giss.lwdn.T62.1993.nc -giss.lwdn.T62.1994.nc -giss.lwdn.T62.1995.nc -giss.lwdn.T62.1996.nc -giss.lwdn.T62.1997.nc -giss.lwdn.T62.1998.nc -giss.lwdn.T62.1999.nc -giss.lwdn.T62.2000.nc -giss.lwdn.T62.2001.nc -giss.lwdn.T62.2002.nc -giss.lwdn.T62.2003.nc -giss.lwdn.T62.2004.nc -giss.lwdn.T62.2005.nc -giss.lwdn.T62.2006.nc -giss.lwdn.T62.2007.nc -giss.lwdn.T62.2008.20120412.nc -giss.lwdn.T62.2009.20120412.nc - -0 -linear -1.5 - - time time - xc lon - yc lat - area area - mask mask - - - lwdn lwdn - - - - -1948 -2009 - 1 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/ocn/iaf - -giss.swdn.T62.1948.nc -giss.swdn.T62.1949.nc -giss.swdn.T62.1950.nc -giss.swdn.T62.1951.nc -giss.swdn.T62.1952.nc -giss.swdn.T62.1953.nc -giss.swdn.T62.1954.nc -giss.swdn.T62.1955.nc -giss.swdn.T62.1956.nc -giss.swdn.T62.1957.nc -giss.swdn.T62.1958.nc -giss.swdn.T62.1959.nc -giss.swdn.T62.1960.nc -giss.swdn.T62.1961.nc -giss.swdn.T62.1962.nc -giss.swdn.T62.1963.nc -giss.swdn.T62.1964.nc -giss.swdn.T62.1965.nc -giss.swdn.T62.1966.nc -giss.swdn.T62.1967.nc -giss.swdn.T62.1968.nc -giss.swdn.T62.1969.nc -giss.swdn.T62.1970.nc -giss.swdn.T62.1971.nc -giss.swdn.T62.1972.nc -giss.swdn.T62.1973.nc -giss.swdn.T62.1974.nc -giss.swdn.T62.1975.nc -giss.swdn.T62.1976.nc -giss.swdn.T62.1977.nc -giss.swdn.T62.1978.nc -giss.swdn.T62.1979.nc -giss.swdn.T62.1980.nc -giss.swdn.T62.1981.nc -giss.swdn.T62.1982.nc -giss.swdn.T62.1983.nc -giss.swdn.T62.1984.nc -giss.swdn.T62.1985.nc -giss.swdn.T62.1986.nc -giss.swdn.T62.1987.nc -giss.swdn.T62.1988.nc -giss.swdn.T62.1989.nc -giss.swdn.T62.1990.nc -giss.swdn.T62.1991.nc -giss.swdn.T62.1992.nc -giss.swdn.T62.1993.nc -giss.swdn.T62.1994.nc -giss.swdn.T62.1995.nc -giss.swdn.T62.1996.nc -giss.swdn.T62.1997.nc -giss.swdn.T62.1998.nc -giss.swdn.T62.1999.nc -giss.swdn.T62.2000.nc -giss.swdn.T62.2001.nc -giss.swdn.T62.2002.nc -giss.swdn.T62.2003.nc -giss.swdn.T62.2004.nc -giss.swdn.T62.2005.nc -giss.swdn.T62.2006.nc -giss.swdn.T62.2007.nc -giss.swdn.T62.2008.20120412.nc -giss.swdn.T62.2009.20120412.nc - -0 -linear -1.5 - - time time - xc lon - yc lat - area area - mask mask - - - swdn swdn - - - - -1948 -2009 - 1 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/ocn/iaf - -giss.swup.T62.1948.nc -giss.swup.T62.1949.nc -giss.swup.T62.1950.nc -giss.swup.T62.1951.nc -giss.swup.T62.1952.nc -giss.swup.T62.1953.nc -giss.swup.T62.1954.nc -giss.swup.T62.1955.nc -giss.swup.T62.1956.nc -giss.swup.T62.1957.nc -giss.swup.T62.1958.nc -giss.swup.T62.1959.nc -giss.swup.T62.1960.nc -giss.swup.T62.1961.nc -giss.swup.T62.1962.nc -giss.swup.T62.1963.nc -giss.swup.T62.1964.nc -giss.swup.T62.1965.nc -giss.swup.T62.1966.nc -giss.swup.T62.1967.nc -giss.swup.T62.1968.nc -giss.swup.T62.1969.nc -giss.swup.T62.1970.nc -giss.swup.T62.1971.nc -giss.swup.T62.1972.nc -giss.swup.T62.1973.nc -giss.swup.T62.1974.nc -giss.swup.T62.1975.nc -giss.swup.T62.1976.nc -giss.swup.T62.1977.nc -giss.swup.T62.1978.nc -giss.swup.T62.1979.nc -giss.swup.T62.1980.nc -giss.swup.T62.1981.nc -giss.swup.T62.1982.nc -giss.swup.T62.1983.nc -giss.swup.T62.1984.nc -giss.swup.T62.1985.nc -giss.swup.T62.1986.nc -giss.swup.T62.1987.nc -giss.swup.T62.1988.nc -giss.swup.T62.1989.nc -giss.swup.T62.1990.nc -giss.swup.T62.1991.nc -giss.swup.T62.1992.nc -giss.swup.T62.1993.nc -giss.swup.T62.1994.nc -giss.swup.T62.1995.nc -giss.swup.T62.1996.nc -giss.swup.T62.1997.nc -giss.swup.T62.1998.nc -giss.swup.T62.1999.nc -giss.swup.T62.2000.nc -giss.swup.T62.2001.nc -giss.swup.T62.2002.nc -giss.swup.T62.2003.nc -giss.swup.T62.2004.nc -giss.swup.T62.2005.nc -giss.swup.T62.2006.nc -giss.swup.T62.2007.nc -giss.swup.T62.2008.20120412.nc -giss.swup.T62.2009.20120412.nc - -0 -linear -1.5 - - time time - xc lon - yc lat - area area - mask mask - - - swup swup - - - - -1948 -2009 - 1 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/ocn/iaf - -ncep.dn10.T62.1948.nc -ncep.dn10.T62.1949.nc -ncep.dn10.T62.1950.nc -ncep.dn10.T62.1951.nc -ncep.dn10.T62.1952.nc -ncep.dn10.T62.1953.nc -ncep.dn10.T62.1954.nc -ncep.dn10.T62.1955.nc -ncep.dn10.T62.1956.nc -ncep.dn10.T62.1957.nc -ncep.dn10.T62.1958.nc -ncep.dn10.T62.1959.nc -ncep.dn10.T62.1960.nc -ncep.dn10.T62.1961.nc -ncep.dn10.T62.1962.nc -ncep.dn10.T62.1963.nc -ncep.dn10.T62.1964.nc -ncep.dn10.T62.1965.nc -ncep.dn10.T62.1966.nc -ncep.dn10.T62.1967.nc -ncep.dn10.T62.1968.nc -ncep.dn10.T62.1969.nc -ncep.dn10.T62.1970.nc -ncep.dn10.T62.1971.nc -ncep.dn10.T62.1972.nc -ncep.dn10.T62.1973.nc -ncep.dn10.T62.1974.nc -ncep.dn10.T62.1975.nc -ncep.dn10.T62.1976.nc -ncep.dn10.T62.1977.nc -ncep.dn10.T62.1978.nc -ncep.dn10.T62.1979.nc -ncep.dn10.T62.1980.nc -ncep.dn10.T62.1981.nc -ncep.dn10.T62.1982.nc -ncep.dn10.T62.1983.nc -ncep.dn10.T62.1984.nc -ncep.dn10.T62.1985.nc -ncep.dn10.T62.1986.nc -ncep.dn10.T62.1987.nc -ncep.dn10.T62.1988.nc -ncep.dn10.T62.1989.nc -ncep.dn10.T62.1990.nc -ncep.dn10.T62.1991.nc -ncep.dn10.T62.1992.nc -ncep.dn10.T62.1993.nc -ncep.dn10.T62.1994.nc -ncep.dn10.T62.1995.nc -ncep.dn10.T62.1996.nc -ncep.dn10.T62.1997.nc -ncep.dn10.T62.1998.nc -ncep.dn10.T62.1999.nc -ncep.dn10.T62.2000.nc -ncep.dn10.T62.2001.nc -ncep.dn10.T62.2002.nc -ncep.dn10.T62.2003.nc -ncep.dn10.T62.2004.nc -ncep.dn10.T62.2005.20120414.nc -ncep.dn10.T62.2006.nc -ncep.dn10.T62.2007.nc -ncep.dn10.T62.2008.20120412.nc -ncep.dn10.T62.2009.20120412.nc - -0 -linear -1.5 - - time time - xc lon - yc lat - area area - mask mask - - - dn10 dens - - - - -1948 -2009 - 1 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/ocn/iaf - -ncep.q_10.T62.1948.nc -ncep.q_10.T62.1949.nc -ncep.q_10.T62.1950.nc -ncep.q_10.T62.1951.nc -ncep.q_10.T62.1952.nc -ncep.q_10.T62.1953.nc -ncep.q_10.T62.1954.nc -ncep.q_10.T62.1955.nc -ncep.q_10.T62.1956.nc -ncep.q_10.T62.1957.nc -ncep.q_10.T62.1958.nc -ncep.q_10.T62.1959.nc -ncep.q_10.T62.1960.nc -ncep.q_10.T62.1961.nc -ncep.q_10.T62.1962.nc -ncep.q_10.T62.1963.nc -ncep.q_10.T62.1964.nc -ncep.q_10.T62.1965.nc -ncep.q_10.T62.1966.nc -ncep.q_10.T62.1967.nc -ncep.q_10.T62.1968.nc -ncep.q_10.T62.1969.nc -ncep.q_10.T62.1970.nc -ncep.q_10.T62.1971.nc -ncep.q_10.T62.1972.nc -ncep.q_10.T62.1973.nc -ncep.q_10.T62.1974.nc -ncep.q_10.T62.1975.nc -ncep.q_10.T62.1976.nc -ncep.q_10.T62.1977.nc -ncep.q_10.T62.1978.nc -ncep.q_10.T62.1979.nc -ncep.q_10.T62.1980.nc -ncep.q_10.T62.1981.nc -ncep.q_10.T62.1982.nc -ncep.q_10.T62.1983.nc -ncep.q_10.T62.1984.nc -ncep.q_10.T62.1985.nc -ncep.q_10.T62.1986.nc -ncep.q_10.T62.1987.nc -ncep.q_10.T62.1988.nc -ncep.q_10.T62.1989.nc -ncep.q_10.T62.1990.nc -ncep.q_10.T62.1991.nc -ncep.q_10.T62.1992.nc -ncep.q_10.T62.1993.nc -ncep.q_10.T62.1994.nc -ncep.q_10.T62.1995.nc -ncep.q_10.T62.1996.nc -ncep.q_10.T62.1997.nc -ncep.q_10.T62.1998.nc -ncep.q_10.T62.1999.nc -ncep.q_10.T62.2000.nc -ncep.q_10.T62.2001.nc -ncep.q_10.T62.2002.nc -ncep.q_10.T62.2003.nc -ncep.q_10.T62.2004.nc -ncep.q_10.T62.2005.20120414.nc -ncep.q_10.T62.2006.nc -ncep.q_10.T62.2007.nc -ncep.q_10.T62.2008.20120412.nc -ncep.q_10.T62.2009.20120412.nc - -0 -linear -1.5 - - time time - xc lon - yc lat - area area - mask mask - - - q_10 shum - - - - -1948 -2009 - 1 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/ocn/iaf - -ncep.slp_.T62.1948.nc -ncep.slp_.T62.1949.nc -ncep.slp_.T62.1950.nc -ncep.slp_.T62.1951.nc -ncep.slp_.T62.1952.nc -ncep.slp_.T62.1953.nc -ncep.slp_.T62.1954.nc -ncep.slp_.T62.1955.nc -ncep.slp_.T62.1956.nc -ncep.slp_.T62.1957.nc -ncep.slp_.T62.1958.nc -ncep.slp_.T62.1959.nc -ncep.slp_.T62.1960.nc -ncep.slp_.T62.1961.nc -ncep.slp_.T62.1962.nc -ncep.slp_.T62.1963.nc -ncep.slp_.T62.1964.nc -ncep.slp_.T62.1965.nc -ncep.slp_.T62.1966.nc -ncep.slp_.T62.1967.nc -ncep.slp_.T62.1968.nc -ncep.slp_.T62.1969.nc -ncep.slp_.T62.1970.nc -ncep.slp_.T62.1971.nc -ncep.slp_.T62.1972.nc -ncep.slp_.T62.1973.nc -ncep.slp_.T62.1974.nc -ncep.slp_.T62.1975.nc -ncep.slp_.T62.1976.nc -ncep.slp_.T62.1977.nc -ncep.slp_.T62.1978.nc -ncep.slp_.T62.1979.nc -ncep.slp_.T62.1980.nc -ncep.slp_.T62.1981.nc -ncep.slp_.T62.1982.nc -ncep.slp_.T62.1983.nc -ncep.slp_.T62.1984.nc -ncep.slp_.T62.1985.nc -ncep.slp_.T62.1986.nc -ncep.slp_.T62.1987.nc -ncep.slp_.T62.1988.nc -ncep.slp_.T62.1989.nc -ncep.slp_.T62.1990.nc -ncep.slp_.T62.1991.nc -ncep.slp_.T62.1992.nc -ncep.slp_.T62.1993.nc -ncep.slp_.T62.1994.nc -ncep.slp_.T62.1995.nc -ncep.slp_.T62.1996.nc -ncep.slp_.T62.1997.nc -ncep.slp_.T62.1998.nc -ncep.slp_.T62.1999.nc -ncep.slp_.T62.2000.nc -ncep.slp_.T62.2001.nc -ncep.slp_.T62.2002.nc -ncep.slp_.T62.2003.nc -ncep.slp_.T62.2004.nc -ncep.slp_.T62.2005.20120414.nc -ncep.slp_.T62.2006.nc -ncep.slp_.T62.2007.nc -ncep.slp_.T62.2008.20120412.nc -ncep.slp_.T62.2009.20120412.nc - -0 -linear -1.5 - - time time - xc lon - yc lat - area area - mask mask - - - slp_ pslv - - - - -1948 -2009 - 1 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/ocn/iaf - -ncep.t_10.T62.1948.nc -ncep.t_10.T62.1949.nc -ncep.t_10.T62.1950.nc -ncep.t_10.T62.1951.nc -ncep.t_10.T62.1952.nc -ncep.t_10.T62.1953.nc -ncep.t_10.T62.1954.nc -ncep.t_10.T62.1955.nc -ncep.t_10.T62.1956.nc -ncep.t_10.T62.1957.nc -ncep.t_10.T62.1958.nc -ncep.t_10.T62.1959.nc -ncep.t_10.T62.1960.nc -ncep.t_10.T62.1961.nc -ncep.t_10.T62.1962.nc -ncep.t_10.T62.1963.nc -ncep.t_10.T62.1964.nc -ncep.t_10.T62.1965.nc -ncep.t_10.T62.1966.nc -ncep.t_10.T62.1967.nc -ncep.t_10.T62.1968.nc -ncep.t_10.T62.1969.nc -ncep.t_10.T62.1970.nc -ncep.t_10.T62.1971.nc -ncep.t_10.T62.1972.nc -ncep.t_10.T62.1973.nc -ncep.t_10.T62.1974.nc -ncep.t_10.T62.1975.nc -ncep.t_10.T62.1976.nc -ncep.t_10.T62.1977.nc -ncep.t_10.T62.1978.nc -ncep.t_10.T62.1979.nc -ncep.t_10.T62.1980.nc -ncep.t_10.T62.1981.nc -ncep.t_10.T62.1982.nc -ncep.t_10.T62.1983.nc -ncep.t_10.T62.1984.nc -ncep.t_10.T62.1985.nc -ncep.t_10.T62.1986.nc -ncep.t_10.T62.1987.nc -ncep.t_10.T62.1988.nc -ncep.t_10.T62.1989.nc -ncep.t_10.T62.1990.nc -ncep.t_10.T62.1991.nc -ncep.t_10.T62.1992.nc -ncep.t_10.T62.1993.nc -ncep.t_10.T62.1994.nc -ncep.t_10.T62.1995.nc -ncep.t_10.T62.1996.nc -ncep.t_10.T62.1997.nc -ncep.t_10.T62.1998.nc -ncep.t_10.T62.1999.nc -ncep.t_10.T62.2000.nc -ncep.t_10.T62.2001.nc -ncep.t_10.T62.2002.nc -ncep.t_10.T62.2003.nc -ncep.t_10.T62.2004.nc -ncep.t_10.T62.2005.20120414.nc -ncep.t_10.T62.2006.nc -ncep.t_10.T62.2007.nc -ncep.t_10.T62.2008.20120412.nc -ncep.t_10.T62.2009.20120412.nc - -0 -linear -1.5 - - time time - xc lon - yc lat - area area - mask mask - - - t_10 tbot - - - - -1948 -2009 - 1 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/ocn/iaf - -ncep.u_10.T62.1948.nc -ncep.u_10.T62.1949.nc -ncep.u_10.T62.1950.nc -ncep.u_10.T62.1951.nc -ncep.u_10.T62.1952.nc -ncep.u_10.T62.1953.nc -ncep.u_10.T62.1954.nc -ncep.u_10.T62.1955.nc -ncep.u_10.T62.1956.nc -ncep.u_10.T62.1957.nc -ncep.u_10.T62.1958.nc -ncep.u_10.T62.1959.nc -ncep.u_10.T62.1960.nc -ncep.u_10.T62.1961.nc -ncep.u_10.T62.1962.nc -ncep.u_10.T62.1963.nc -ncep.u_10.T62.1964.nc -ncep.u_10.T62.1965.nc -ncep.u_10.T62.1966.nc -ncep.u_10.T62.1967.nc -ncep.u_10.T62.1968.nc -ncep.u_10.T62.1969.nc -ncep.u_10.T62.1970.nc -ncep.u_10.T62.1971.nc -ncep.u_10.T62.1972.nc -ncep.u_10.T62.1973.nc -ncep.u_10.T62.1974.nc -ncep.u_10.T62.1975.nc -ncep.u_10.T62.1976.nc -ncep.u_10.T62.1977.nc -ncep.u_10.T62.1978.nc -ncep.u_10.T62.1979.nc -ncep.u_10.T62.1980.nc -ncep.u_10.T62.1981.nc -ncep.u_10.T62.1982.nc -ncep.u_10.T62.1983.nc -ncep.u_10.T62.1984.nc -ncep.u_10.T62.1985.nc -ncep.u_10.T62.1986.nc -ncep.u_10.T62.1987.nc -ncep.u_10.T62.1988.nc -ncep.u_10.T62.1989.nc -ncep.u_10.T62.1990.nc -ncep.u_10.T62.1991.nc -ncep.u_10.T62.1992.nc -ncep.u_10.T62.1993.nc -ncep.u_10.T62.1994.nc -ncep.u_10.T62.1995.nc -ncep.u_10.T62.1996.nc -ncep.u_10.T62.1997.nc -ncep.u_10.T62.1998.nc -ncep.u_10.T62.1999.nc -ncep.u_10.T62.2000.nc -ncep.u_10.T62.2001.nc -ncep.u_10.T62.2002.nc -ncep.u_10.T62.2003.nc -ncep.u_10.T62.2004.nc -ncep.u_10.T62.2005.20120414.nc -ncep.u_10.T62.2006.nc -ncep.u_10.T62.2007.nc -ncep.u_10.T62.2008.20120412.nc -ncep.u_10.T62.2009.20120412.nc - -0 -linear -1.5 - - time time - xc lon - yc lat - area area - mask mask - - - u_10 u - - - - -1948 -2009 - 1 -$DIN_LOC_ROOT/atm/datm7 -domain.T62.050609.nc -$DIN_LOC_ROOT/ocn/iaf - -ncep.v_10.T62.1948.nc -ncep.v_10.T62.1949.nc -ncep.v_10.T62.1950.nc -ncep.v_10.T62.1951.nc -ncep.v_10.T62.1952.nc -ncep.v_10.T62.1953.nc -ncep.v_10.T62.1954.nc -ncep.v_10.T62.1955.nc -ncep.v_10.T62.1956.nc -ncep.v_10.T62.1957.nc -ncep.v_10.T62.1958.nc -ncep.v_10.T62.1959.nc -ncep.v_10.T62.1960.nc -ncep.v_10.T62.1961.nc -ncep.v_10.T62.1962.nc -ncep.v_10.T62.1963.nc -ncep.v_10.T62.1964.nc -ncep.v_10.T62.1965.nc -ncep.v_10.T62.1966.nc -ncep.v_10.T62.1967.nc -ncep.v_10.T62.1968.nc -ncep.v_10.T62.1969.nc -ncep.v_10.T62.1970.nc -ncep.v_10.T62.1971.nc -ncep.v_10.T62.1972.nc -ncep.v_10.T62.1973.nc -ncep.v_10.T62.1974.nc -ncep.v_10.T62.1975.nc -ncep.v_10.T62.1976.nc -ncep.v_10.T62.1977.nc -ncep.v_10.T62.1978.nc -ncep.v_10.T62.1979.nc -ncep.v_10.T62.1980.nc -ncep.v_10.T62.1981.nc -ncep.v_10.T62.1982.nc -ncep.v_10.T62.1983.nc -ncep.v_10.T62.1984.nc -ncep.v_10.T62.1985.nc -ncep.v_10.T62.1986.nc -ncep.v_10.T62.1987.nc -ncep.v_10.T62.1988.nc -ncep.v_10.T62.1989.nc -ncep.v_10.T62.1990.nc -ncep.v_10.T62.1991.nc -ncep.v_10.T62.1992.nc -ncep.v_10.T62.1993.nc -ncep.v_10.T62.1994.nc -ncep.v_10.T62.1995.nc -ncep.v_10.T62.1996.nc -ncep.v_10.T62.1997.nc -ncep.v_10.T62.1998.nc -ncep.v_10.T62.1999.nc -ncep.v_10.T62.2000.nc -ncep.v_10.T62.2001.nc -ncep.v_10.T62.2002.nc -ncep.v_10.T62.2003.nc -ncep.v_10.T62.2004.nc -ncep.v_10.T62.2005.20120414.nc -ncep.v_10.T62.2006.nc -ncep.v_10.T62.2007.nc -ncep.v_10.T62.2008.20120412.nc -ncep.v_10.T62.2009.20120412.nc - -0 -linear -1.5 - - time time - xc lon - yc lat - area area - mask mask - - - v_10 v - - - - -1948 -2009 - 1 -$DIN_LOC_ROOT/atm/datm7/CORE2 -CORE2.t_10.ArcFactor.T62.1997-2004.nc -$DIN_LOC_ROOT/atm/datm7/CORE2 -CORE2.t_10.ArcFactor.T62.1997-2004.nc -0 -linear -1.e30 - - time time - xc lon - yc lat - area area - mask mask - - - TarcFactor tarcf - - - - -2000 -2000 -2000 -$DIN_LOC_ROOT/wav/ww3 -core2_G4_wns_30min_20000601_to_05.nc -$DIN_LOC_ROOT/wav/ww3 -core2_G4_wns_30min_20000601_to_05.nc -0 -linear - - time time - gridLon lon - gridLat lat - - - uWind u - vWind v - airSeaTempDiff tbot - - - - -1980 -1980 -1980 -$DIN_LOC_ROOT/share/domains/domain.clm -domain.lnd.nldas2_0224x0464_c110415.nc -$DIN_LOC_ROOT/atm/datm7/NLDAS - - clmforc.nldas.1980-01.nc - clmforc.nldas.1980-02.nc - clmforc.nldas.1980-03.nc - clmforc.nldas.1980-04.nc - clmforc.nldas.1980-05.nc - clmforc.nldas.1980-06.nc - clmforc.nldas.1980-07.nc - clmforc.nldas.1980-08.nc - clmforc.nldas.1980-09.nc - clmforc.nldas.1980-10.nc - clmforc.nldas.1980-11.nc - clmforc.nldas.1980-12.nc - -0 -linear -bilinear - - time time - xc lon - yc lat - area area - mask mask - - - TBOT tbot - WIND wind - QBOT shum - PSRF pbot - FLDS lwdn - PRECTmms precn - FSDS swdn - - - - - - - - -1850 -2007 -1850 -$DIN_LOC_ROOT/atm/datm7/CO2 -fco2_datm_1765-2007_c100614.nc -$DIN_LOC_ROOT/atm/datm7/CO2 -fco2_datm_1765-2007_c100614.nc -0 -linear -nn - - time time - lonc lon - latc lat - area area - mask mask - - - CO2 co2diag - -extend - - -2005 -2500 -2005 -$DIN_LOC_ROOT/atm/datm7/CO2 -fco2_datm_rcp2.6_1765-2500_c130312.nc -$DIN_LOC_ROOT/atm/datm7/CO2 -fco2_datm_rcp2.6_1765-2500_c130312.nc -0 -linear -nn - - time time - lonc lon - latc lat - area area - mask mask - - - CO2 co2diag - -extend - - -2005 -2500 -2005 -$DIN_LOC_ROOT/atm/datm7/CO2 -fco2_datm_rcp4.5_1765-2500_c130312.nc -$DIN_LOC_ROOT/atm/datm7/CO2 -fco2_datm_rcp4.5_1765-2500_c130312.nc -0 -linear -nn - - time time - lonc lon - latc lat - area area - mask mask - - - CO2 co2diag - -extend - - -2005 -2500 -2005 -$DIN_LOC_ROOT/atm/datm7/CO2 -fco2_datm_rcp6.0_1765-2500_c130312.nc -$DIN_LOC_ROOT/atm/datm7/CO2 -fco2_datm_rcp6.0_1765-2500_c130312.nc -0 -linear -nn - - time time - lonc lon - latc lat - area area - mask mask - - - CO2 co2diag - -extend - - -2005 -2500 -2005 -$DIN_LOC_ROOT/atm/datm7/CO2 -fco2_datm_rcp8.5_1765-2500_c110919.nc -$DIN_LOC_ROOT/atm/datm7/CO2 -fco2_datm_rcp8.5_1765-2500_c110919.nc -0 -linear -nn - - time time - lonc lon - latc lat - area area - mask mask - - - CO2 co2diag - -extend - - - - - - -1979 -2004 -1979 -$DIN_LOC_ROOT/atm/datm7/bias_correction/precip/gpcp/qian -qian.bc.domain.c130531.nc -$DIN_LOC_ROOT/atm/datm7/bias_correction/precip/gpcp/qian - -bias_correction.Prec.%y.nc - -0 -linear - - time time - xc lon - yc lat - area area - mask mask - - - BC_PREC precsf - - - - - - - -1979 -2012 -1979 -$DIN_LOC_ROOT/atm/datm7/clm_output/cruncep_precip_1deg/gpcp_1deg_bias_correction -cruncep.bc.domain.0.9x1.25.nc -$DIN_LOC_ROOT/atm/datm7/clm_output/cruncep_precip_1deg/gpcp_1deg_bias_correction - -bias_correction.Prec.%y.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - BC_PREC precsf - - - - -1979 -2010 -1979 -$DIN_LOC_ROOT/atm/datm7/bias_correction/precip/cmap/cruncep -cruncep.bc.domain.c100429.nc -$DIN_LOC_ROOT/atm/datm7/bias_correction/precip/cmap/cruncep - -bias_correction.Prec.%y.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - BC_PREC precsf - - - - -2006 -2300 -2006 -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing -domain.permafrostRCN_P2.c2013.nc -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing - -af.pr.ccsm4.rcp45.2006-2300.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - pr prec_af - - - -2006 -2300 -2006 -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing -domain.permafrostRCN_P2.c2013.nc -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing - -af.tas.ccsm4.rcp45.2006-2300.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - tas tbot_af - - - - -2006 -2300 -2006 -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing -domain.permafrostRCN_P2.c2013.nc -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing - -af.ps.ccsm4.rcp45.2006-2300.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - ps pbot_af - - - -2006 -2300 -2006 -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing -domain.permafrostRCN_P2.c2013.nc -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing - -af.huss.ccsm4.rcp45.2006-2300.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - huss shum_af - - - -2006 -2300 -2006 -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing -domain.permafrostRCN_P2.c2013.nc -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing - -af.uas.ccsm4.rcp45.2006-2300.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - uas u_af - - - -2006 -2300 -2006 -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing -domain.permafrostRCN_P2.c2013.nc -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing - -af.vas.ccsm4.rcp45.2006-2300.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - vas v_af - - - -2006 -2300 -2006 -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing -domain.permafrostRCN_P2.c2013.nc -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing - -af.rsds.ccsm4.rcp45.2006-2300.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - rsds swdn_af - - - -2006 -2300 -2006 -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing -domain.permafrostRCN_P2.c2013.nc -$DIN_LOC_ROOT/atm/datm7/anomaly_forcing - -af.rlds.ccsm4.rcp45.2006-2300.nc - -0 -nearest - - time time - xc lon - yc lat - area area - mask mask - - - rlds lwdn_af - - - - - - - - -0 -linear - - time time - lon lon - lat lat - area area - mask mask - - - BCDEPWET bcphiwet - BCPHODRY bcphodry - BCPHIDRY bcphidry - OCDEPWET ocphiwet - OCPHIDRY ocphidry - OCPHODRY ocphodry - DSTX01WD dstwet1 - DSTX01DD dstdry1 - DSTX02WD dstwet2 - DSTX02DD dstdry2 - DSTX03WD dstwet3 - DSTX03DD dstdry3 - DSTX04WD dstwet4 - DSTX04DD dstdry4 - - -1 -1 -1 -$DIN_LOC_ROOT/lnd/clm2/snicardata -$DIN_LOC_ROOT/lnd/clm2/snicardata - -2000 -2000 -2000 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero - -aerosoldep_monthly_1849-2006_${CLM_USRDAT_NAME}.nc -aerosoldep_monthly_1849-2006_${CLM_USRDAT_NAME}.nc - -aerosoldep_2000_mean_1x1_brazil_c090716.nc -aerosoldep_2000_mean_1x1_brazil_c090716.nc - -aerosoldep_2000_mean_1x1_camdenNJ_c090716.nc -aerosoldep_2000_mean_1x1_camdenNJ_c090716.nc - -aerosoldep_2000_mean_1x1_tropicAtl_c090716.nc -aerosoldep_2000_mean_1x1_tropicAtl_c090716.nc - -aerosoldep_2000_mean_1x1_asphaltjungleNJ_c090716.nc -aerosoldep_2000_mean_1x1_asphaltjungleNJ_c090716.nc - -aerosoldep_2000_mean_1x1_vancouverCAN_c090716.nc -aerosoldep_2000_mean_1x1_vancouverCAN_c090716.nc - -aerosoldep_2000_mean_1x1_mexicocityMEX_c090716.nc -aerosoldep_2000_mean_1x1_mexicocityMEX_c090716.nc - -aerosoldep_2000_mean_1x1_urbanc_alpha_c090716.nc -aerosoldep_2000_mean_1x1_urbanc_alpha_c090716.nc - -aerosoldep_2000_mean_1x1_numaIA_c110124.nc -aerosoldep_2000_mean_1x1_numaIA_c110124.nc - -aerosoldep_2000_mean_1x1_smallvilleIA_c110124.nc -aerosoldep_2000_mean_1x1_smallvilleIA_c110124.nc - -aerosoldep_2000_mean_5x5_amazon_c090716.nc -aerosoldep_2000_mean_5x5_amazon_c090716.nc - - -1 -1 -1 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1850_1x1_tropicAtl_c091026.nc -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1850_1x1_tropicAtl_c091026.nc - -1 -1 -1 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1849-2006_1x1_tropicAtl_c091026.nc -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1849-2006_1x1_tropicAtl_c091026.nc - -1849 -2006 -1849 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1849-2006_1x1_tropicAtl_c091026.nc -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1849-2006_1x1_tropicAtl_c091026.nc - - -1 -1 -1 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1850_mean_1.9x2.5_c090421.nc -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1850_mean_1.9x2.5_c090421.nc - - -1 -1 -1 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_2000_mean_1.9x2.5_c090421.nc -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_2000_mean_1.9x2.5_c090421.nc - - -1849 -2006 -1849 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1849-2006_1.9x2.5_c090803.nc -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_monthly_1849-2006_1.9x2.5_c090803.nc - -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero - -aerosoldep_monthly_1849-2006_${CLM_USRDAT_NAME}.nc -aerosoldep_monthly_1849-2006_${CLM_USRDAT_NAME}.nc - - -1849 -2104 -1849 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp2.6_monthly_1849-2104_1.9x2.5_c100402.nc -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp2.6_monthly_1849-2104_1.9x2.5_c100402.nc - -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp2.6_monthly_1849-2104_${CLM_USRDAT_NAME}.nc -aerosoldep_rcp2.6_monthly_1849-2104_${CLM_USRDAT_NAME}.nc - - -1849 -2104 -1849 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp4.5_monthly_1849-2104_1.9x2.5_c100402.nc -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp4.5_monthly_1849-2104_1.9x2.5_c100402.nc - -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp4.5_monthly_1849-2104_${CLM_USRDAT_NAME}.nc -aerosoldep_rcp4.5_monthly_1849-2104_${CLM_USRDAT_NAME}.nc - - -1849 -2104 -1849 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp6.0_monthly_1849-2104_1.9x2.5_c100830.nc -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp6.0_monthly_1849-2104_1.9x2.5_c100830.nc - -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp6_monthly_1849-2104_${CLM_USRDAT_NAME}.nc -aerosoldep_rcp6_monthly_1849-2104_${CLM_USRDAT_NAME}.nc - - -1849 -2104 -1849 -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp8.5_monthly_1849-2104_1.9x2.5_c100201.nc -$DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero -aerosoldep_rcp8.5_monthly_1849-2104_1.9x2.5_c100201.nc - - - - - -0 - -lower - - time time - LONGXY lon - LATIXY lat - area area - mask mask - - - TOPO topo - - -1 -1 -1 -$DIN_LOC_ROOT/atm/datm7/topo_forcing -topodata_0.9x1.25_USGS_070110_stream_c151201.nc -$DIN_LOC_ROOT/atm/datm7/topo_forcing -topodata_0.9x1.25_USGS_070110_stream_c151201.nc - - - - - -0 - -linear - -nn - -nomask - -nomask - - - time time - xc lon - yc lat - area area - mask mask - - -bilinear -nn -nn - -cycle -cycle -extend - - - - - -1 - -unused -$DIN_LOC_ROOT/atm/datm7/CORE2/COREv2.correction_factors.T62.121007.nc -$DIN_LOC_ROOT/atm/datm7/CORE2/COREv2.correction_factors.T62.121007.nc -unused - - - - diff --git a/cime/components/data_comps/datm/bld/namelist_files/namelist_definition.xsl b/cime/components/data_comps/datm/bld/namelist_files/namelist_definition.xsl deleted file mode 100644 index 3b83f6a71163..000000000000 --- a/cime/components/data_comps/datm/bld/namelist_files/namelist_definition.xsl +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - CESM DATM (Data Atmosphere Model) Namelist Definition - - -

-

-
-

-

-

DATM namelist variables

-

Note, these all would go into the datm.buildnml file:

-

Included in the table are the following pieces of information:

-
    -
  • Variable name.
  • -
  • Variable type (char, integer, - real, or logical). The type - char has the length appended - following an asterisk, e.g., char*256. Variables that are - arrays have their dimension specifier appended inside parentheses. For - example char*1(6) denotes a array of six - char*1 values. -
  • -
  • Variable description (includes information on defaults).
  • -
  • Valid values (if restricted).
  • -
- - - - - - - - - - - - -
Data Atmosphere Model Streams File Settings
NameTypeDescription
Valid values, if restricted at all
- - - - - - - - - - - - -
Data Atmosphere Model Namelist Settings
NameTypeDescription
Valid values, if restricted at all
-

- NOTE: The following settings are NOT namelist settings, but - settings used by datm-build-namelist to figure out actual namelist - settings. -

- - - - - - - - - - - -
Data Atmosphere Model Internal Namelist Settings
NameTypeDescription
Valid values, if restricted at all
- - -
- - - - - - - - - Valid Values: - - - - -
diff --git a/cime/components/data_comps/datm/bld/namelist_files/namelist_definition_datm.xml b/cime/components/data_comps/datm/bld/namelist_files/namelist_definition_datm.xml deleted file mode 100644 index 8243e2d55c7d..000000000000 --- a/cime/components/data_comps/datm/bld/namelist_files/namelist_definition_datm.xml +++ /dev/null @@ -1,394 +0,0 @@ - - - - - - - - - - - -Data Model mode to process forcing data - - - -Prescribed aerosol mode - - - - - - - - - - - -valid values: CLMNCEP,COPYALL,CPLHIST,CORE2_NYF,CORE2_IAF,NULL -general method that operates on the data. this is generally -implemented in the data models but is set in the strdata method for -convenience. valid options are dependent on the data model and will -be described elsewhere. NULL is always a valid option and means no -data will be generated. default='NULL' - -datamode = "NULL" - turns off the data model as a provider of data to the coupler. - The atm_present flag will be set to false - and the coupler will assume no exchange of data to or from the data model. -datamode = "COPYALL" - The default science mode of the data model is the COPYALL mode. - COPYALL mode will examine the fields found in all input data streams, - if any input field names match the field names used internally, they - are copied into the export array and passed directly to the coupler - without any special user code. Any required fields not found on an - input stream will be set to zero except for aerosol deposition fields - which will be set to a special value. There are several other - scientific modes supported by the model, they are listed below. The - mode is selected by a character string set in the strdata namelist - variable dataMode. -datamode = "CPLHIST" - The same as COPYALL mode. -datamode = "CORE2_NYF" - Coordinated Ocean-ice Reference Experiments (CORE) Version 2 Normal Year Forcing. -datamode = "CORE2_IAF" - In conjunction with with CORE Version 2 atmospheric forcing data, - provides the atmosphere forcing favored by the Ocean Model Working - Group when coupling an active ocean model with observed atmospheric - forcing. This mode and associated data sets implement the CORE-IAF - Version 2 forcing data, as developed by Large and Yeager (2008) at - NCAR. See the documentation for CORE version 2 datasets at - http://data1.gfdl.noaa.gov/nomads/forms/mom4/COREv2.html Also see - W.G.Large, S.G.Yeager (2008), The global climatology of an - interannually varying air-sea flux data set. - Clm Dyn doi 10.1007/s00382-008-0441-3. -datamode = "CLMNCEP" - In conjunction with NCEP climatological atmosphere data, provides the - atmosphere forcing favored by the Land Model Working Group when - coupling an active land model with observed atmospheric forcing. This - mode replicates code previously found in CLM (circa 2005), before the - LMWG started using the CCSM flux coupler and data models to do - active-land-only simulations. - - - -spatial gridfile associated with the strdata. grid information will -be read from this file and that grid will serve as the target grid -for all input data for this strdata input. - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are just copy (ie. no fill), special value, -nearest neighbor, nearest neighbor in "i" direction, or nearest -neighbor in "j" direction. -valid values: 'copy','spval','nn','nnoni','nnonj' -default: "nn". - - - -plays no role is fill algorithm at the present time. -valid values: "nomask,srcmask,dstmask,bothmask" -default: "nomask" - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read in instead of computing the -weights on the fly for the fill operation. if this is set, fillalgo -and fillmask are ignored. -default: unset - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the fill operation. this allows a user to -save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of masking algorithms for mapping input data -associated with the array of streams. valid options are map only from -valid src points, map only to valid destination points, ignore all -masks, map only from valid src points to valid destination points. -valid values: srcmask, dstmask, nomask,bothmask -default: dstmask - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are copy by index, set to special value, -nearest neighbor, nearest neighbor in "i" direction, nearest neighbor -in "j" direction, or bilinear. -valid values: copy,spval,nn,nnoni,nnonj,bilinear -default: bilinear - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read instead of computing -weights on the fly for the mapping (interpolation) operation. if this -is set, mapalgo and mapmask are ignored. default="unset". - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the mapping (interpolation) operation. this -allows a user to save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of time interpolation options associated with the array of -streams. -valid values: lower,upper,nearest,linear,coszen - lower = Use lower time-value - upper = Use upper time-value - nearest = Use the nearest time-value - linear = Linearly interpolate between the two time-values - coszen = Scale according to the cosine of the solar zenith angle (for solar) -default="linear". - - - -array of time axis modes associated with the array of streams for -handling data outside the specified stream time axis. -valid options are to cycle the data based on the first, last, and -align settings associated with the stream dataset, to extend the first -and last valid value indefinitely, or to limit the interpolated data -to fall only between the least and greatest valid value of the time array. -valid values: cycle,extend,limit -default="cycle". - - - -array (up to 30 elements) of delta time ratio limits placed on the -time interpolation associated with the array of streams. this real -value causes the model to stop if the ratio of the running maximum -delta time divided by the minimum delta time is greater than the -dtlimit for that stream. for instance, with daily data, the delta -time should be exactly one day throughout the dataset and the computed -maximum divided by minimum delta time should always be 1.0. for -monthly data, the delta time should be between 28 and 31 days and the -maximum ratio should be about 1.1. the running value of the delta -time is computed as data is read and any wraparound or cycling is also -included. this input helps trap missing data or errors in cycling. -to turn off trapping, set the value to 1.0e30 or something similar. -default=1.5. - - - -character array (up to 30 elements) of stream input files. this -string is actually parsed by a stream method and so the format is -specified by the stream module. this string consists of a -"stream_input_filename year_align year_first year_last". the -stream_input_filename is a stream text input file and the format and -options are described elsewhere. year_align, year_first, and -year_last provide information about the time axis of the file and how -to relate the input time axis to the model time axis. -default="null". - - - -list of paired colon delimited field names that should be treated as -vectors when carrying out spatial interpolation. unlike other -character arrays in this namelist, this array is completely decoupled -from the list of streams. this is a list of vector pairs that span -all input streams where different fields of the vector pair could -appear in different streams. -for example, vectors = 'u:v','taux:tauy'. -default="". - - - - - - - - -If set, include bias correction streams in namelist. -default = "" - - - -If set, include anomaly forcing streams in namelist. -default = "" - - - - - -The data atmosphere specific namelist input is as follows. The -namelist input filename is hardwired in the data model code to -"datm_in". The namelist group is called "datm_nml". The variable -formats are character string (char), integer (int), double precision -real (r8), or logical (log) or one dimensional arrays of any of those -things. atm_in sets the filename for the data atmosphere shr_strmdata namelist. -default: datm_atm_in. - - - -Set the decomposition option for the data model. valid options are -placing the global array on the root task or a simple stride-one -load balanced one-dimensional decomposition. other decompositions -may be added in the future. -valid values are ['root','1d']. - 1d = Vector decomposition - root = run only on the master task -default='1d'. - - - -filename containing correction factors for use only with CORE2 modes (CORE2_IAF and CORE2_NYF). -default='null'. - - - -If TRUE, prescribed aerosols are sent from datm (must be true for running with CLM). - - - -If TRUE, prognostic is forced to true. -default=false - - - -Frequency to update radiation in number of steps (or hours if negative) -irdasw is the radiation setting used to compute the next shortwave -Julian date. values greater than 1 set the next radiation to the -present time plus 2 timesteps every iradsw. values less than 0 turn -set the next radiation to the present time plus two timesteps every --iradsw hours. if iradsw is zero, the next radiation time is the -present time plus 1 timestep. -default=0. - - - -Model restart filename for the data atmosphere model data. This is -optional. If both restfils and restfilm are undefined, the restart -filename will be read from the DATM restart pointer file (or files for multiple instances). -default='undefined'. - - - -Stream restart filename for the data atmosphere stream data. This is -optional. If both restfils and restfilm are undefined, the restart -filename will be read from the DATM restart pointer file (or files for multiple instances). -default='undefined'. - - - - - - - -DATM logfile name -default='atm.log' - - - diff --git a/cime/components/data_comps/datm/bld/unit_testers/build-namelist_test.pl b/cime/components/data_comps/datm/bld/unit_testers/build-namelist_test.pl deleted file mode 100755 index 37073c9202ae..000000000000 --- a/cime/components/data_comps/datm/bld/unit_testers/build-namelist_test.pl +++ /dev/null @@ -1,607 +0,0 @@ -#!/usr/bin/env perl - -# Test methods of the datm build-namelist script. -# Try to test that all the different options at least work. -# Test that inconsistentcies are appropriately caught. - -######################### - -use Test::More; -use IO::File; -use Cwd qw(abs_path); - -######################### - -use strict; -use Getopt::Long; - -sub usage { - die < Compare namelists for this version to namelists - created by another version. - -generate Leave the namelists in place to do a later compare. - -EOF -} -# The env variables that will need to be set -my %xmlenv = ( "DATM_CO2_TSERIES", "RUN_TYPE", "DIN_LOC_ROOT", "ATM_DOMAIN_FILE", "ATM_DOMAIN_PATH", "DATM_MODE", "DATM_PRESAERO", "ATM_GRID", -"GRID", "DATM_TOPO" ); -my $envxmlfile = "env_utrun.xml"; # Filename to write env settings to -# -# Process command-line options. -# -my %opts = ( help => 0, - generate => 0, - compare => undef, - ); - -GetOptions( - "h|help" => \$opts{'help'}, - "compare=s" => \$opts{'compare'}, - "generate" => \$opts{'generate'}, -) or usage(); - -# Give usage message. -usage() if $opts{'help'}; - -# Check for unparsed arguments -if (@ARGV) { - print "ERROR: unrecognized arguments: @ARGV\n"; - usage(); -} - -# -# Figure out number of tests that will run -# -my $ntests = 490; -if ( defined($opts{'compare'}) ) { - $ntests += 50; -} -plan( tests=>$ntests ); - -# Set testcase to a subdirectory -my $cwd = `pwd`; -chomp( $cwd ); -my $CASEROOT = "$cwd/testcase"; -print "CASEROOT = $CASEROOT\n"; -my $confdir = "$CASEROOT/Buildconf/datmconf"; - -# Check that CIMEROOT set so can run -if ( $ENV{'CIMEROOT'} eq "" ) { - my $dir = abs_path("../../../../.."); - if ( ! -d "$dir/scripts" ) { - die "CIMEROOT NOT set, and scripts directory $dir/scripts does not exist\n"; - } - $ENV{'CIMEROOT'} = $dir; - print "CIMEROOT = $ENV{'CIMEROOT'}\n"; -} else { - if ( ! -d "$ENV{'CIMEROOT'}"."/scripts" ) { - die "CIMEROOT scripts dir does not exist\n"; - } -} -# -# -my $bldnml = "../build-namelist -debug -caseroot $CASEROOT -cimeroot $ENV{'CIMEROOT'}"; - -my $tempfile = "temp_file.txt"; -if ( -f $tempfile ) { - system( "/bin/rm $tempfile" ); -} -# Set some basic ENV vars -$xmlenv{'RUN_TYPE'} = "startup"; -if ( $ENV{'CSMDATA'} ne "" ) { - $xmlenv{'DIN_LOC_ROOT'} = $ENV{'CSMDATA'}; -} else { - $xmlenv{'DIN_LOC_ROOT'} = "/fs/cgd/csm/inputdata"; -} -$xmlenv{'DIN_LOC_ROOT_CLMFORC'} = "/glade/proj2/cgd/tss"; -$xmlenv{'ATM_DOMAIN_FILE'} = "domain.lnd.T31_gx3v7.090928.nc"; -$xmlenv{'ATM_DOMAIN_PATH'} = "\$DIN_LOC_ROOT/share/domains"; -$xmlenv{'ATM_GRID'} = "48x96"; -$xmlenv{'GRID'} = "48x96_g37"; -$xmlenv{'DATM_MODE'} = "CLMQIAN"; -$xmlenv{'DATM_TOPO'} = "observed"; -$xmlenv{'DATM_PRESAERO'} = "clim_2000"; -$xmlenv{'DATM_CO2_TSERIES'} = "none"; -# Set some ENV vars needed for CLM_QIAN -$xmlenv{'DATM_CLMNCEP_YR_START'} = 1948; -$xmlenv{'DATM_CLMNCEP_YR_END'} = 2004; -$xmlenv{'DATM_CLMNCEP_YR_ALIGN'} = 2000; - -# Set some ENV vars needed for CPLHIST -$xmlenv{'DATM_CPLHIST_CASE'} = "b40.1850.track1.1deg.006a"; -$xmlenv{'DATM_CPLHIST_YR_START'} = 1948; -$xmlenv{'DATM_CPLHIST_YR_END'} = 2004; -$xmlenv{'DATM_CPLHIST_YR_ALIGN'} = 2000; -foreach my $env ( "DATM_CLMNCEP_YR_START", "DATM_CLMNCEP_YR_END", "DATM_CLMNCEP_YR_ALIGN", - "DATM_CPLHIST_YR_START", "DATM_CPLHIST_YR_END", "DATM_CPLHIST_YR_ALIGN", - "DATM_CPLHIST_CASE", - ) { - print "$env = ".$xmlenv{$env}."\n"; -} - - -# Simple test -- just run build-namelist with -help option -eval{ system( "$bldnml -help > $tempfile 2>&1 " ); }; -is( $@, '', "help" ); - -# Simple test -- just run build-namelist -$xmlenv{'DATM_MODE'} = "CLM_QIAN"; -print "DATM_MODE = $xmlenv{'DATM_MODE'}\n"; -mkdir( "$CASEROOT" ); -&writeEnv( %xmlenv ); -eval{ system( "$bldnml" ); }; -ok( ! $?, "plain build-namelist" ); -&checkfilesexist( ); -my %diff; -©defaultfiles( "default", \%diff ); - -# Compare to baseline -if ( defined($opts{'compare'}) ) { - &comparefiles( \%diff, "default", "$xmlenv{'DATM_MODE'}", $opts{'compare'} ); -} -# Cleanup -system( "/bin/rm -rf $confdir" ); - -my %wc; -# Run all the different options -foreach my $option ( "-print 0", "-print 1", "-print 2", "-test -print 2", - "-namelist \"&datm_exp taxmode='extend'/\"", - "-user_xml_dir .", - "-user_xml_dir $cwd/user_xml_dir -print 2" ) { - &writeEnv( %xmlenv ); - eval{ system( "$bldnml $option > $tempfile 2>&1 " ); }; - ok( ! $?, "$option" ); - $wc{$option} = `wc -l $tempfile | awk '{print \$1}'`; - chomp( $wc{$option} ); - &checkfilesexist( ); - if ( $option =~ /extend/ ) { - &doNOTdodiffonfile( \%diff, "datm_atm_in", "default" ); - } else { - &dodiffonfile( \%diff, "datm_atm_in", "default" ); - } - if ( $option =~ /$cwd\/user_xml_dir/ ) { - &doNOTdodiffonfile( \%diff, "datm_atm_in", "default" ); - &doNOTdodiffonfile( \%diff, "datm.streams.txt.CLM_QIAN.Precip", "default" ); - &doNOTdodiffonfile( \%diff, "datm.streams.txt.CLM_QIAN.Solar", "default" ); - &doNOTdodiffonfile( \%diff, "datm.streams.txt.CLM_QIAN.TPQW", "default" ); - } - &comparefiles( \%diff, "default", "$xmlenv{'DATM_MODE'}" ); - system( "/bin/rm -rf $confdir" ); -} -ok( $wc{'-print 0'} < $wc{'-print 1'}, , "Silent printing smaller than normal" ); -ok( $wc{'-print 1'} < $wc{'-print 2'}, , "Normal printing smaller than verbose" ); -ok( $wc{'-print 2'} < $wc{'-test -print 2'}, "Verbose printing smaller than test/verbose" ); -&dodiffonfile( \%diff, "datm_atm_in", "default" ); -# Run with user datm stream file -mkdir( "$CASEROOT" ); -&writeEnv( %xmlenv ); -my $streamfile = "datm.streams.txt.CLM_QIAN.Solar"; -system( "cp user_streams/user_$streamfile $CASEROOT" ); -eval{ system( "$bldnml" ); }; -ok( ! $?, "user_stream build-namelist" ); -&checkfilesexist( ); -my %diff; - -&comparefiles( \%diff, "default", "$xmlenv{'DATM_MODE'}", $opts{'compare'} ); -my $diffstat = `diff -q user_streams/user_$streamfile $CASEROOT/Buildconf/datmconf/$streamfile`; -ok( ! $?, "stream file same as user version" ); - -# Cleanup -system( "/bin/rm -rf $confdir" ); - -# Run different RUN_TYPE (all should be the same as default namelist) -foreach my $run_type ( "startup", "branch", "hybrid" ) { - $xmlenv{'RUN_TYPE'} = $run_type; - print "RUN_TYPE = $run_type\n"; - &writeEnv( %xmlenv ); - eval{ system( "$bldnml" ); }; - ok( ! $?, "type = $run_type" ); - &checkfilesexist( ); - &comparefiles( \%diff, "default", "$xmlenv{'DATM_MODE'}" ); - system( "/bin/rm -rf $confdir" ); -} -$xmlenv{'RUN_TYPE'} = "startup"; -print "RUN_TYPE = $xmlenv{'RUN_TYPE'}\n"; -# Run different presaero -foreach my $presaero ( - "1x1_brazil", - "1x1_camdenNJ", - "1x1_tropicAtl", - "1x1_asphaltjungleNJ", - "1x1_vancouverCAN", - "1x1_mexicocityMEX", - "1x1_urbanc_alpha", - "1x1_numaIA", - "1x1_smallvilleIA", - "5x5_amazon", - "clim_1850.1x1_tropicAtl", - "clim_2000.1x1_tropicAtl",, - "trans_1850-2000.1x1_tropicAtl", - "clim_1850", - "clim_2000", - "trans_1850-2000", - "rcp2.6", - "rcp4.5", - "rcp6.0", - "rcp8.5", - ) { - if ( $presaero =~ /^(clim|trans)*([_0-9\.-]*)([0-9]+x[0-9]+_[a-zA-Z0-9_]+)$/ ) { - $xmlenv{'GRID'} = $3; - $xmlenv{'ATM_GRID'} = $3; - if ( $3 eq "1x1_mexicocityMEX" ) { - $xmlenv{'DATM_MODE'} = "CLM1PT"; - } else { - $xmlenv{'DATM_MODE'} = "CLM_QIAN"; - } - $xmlenv{'DATM_PRESAERO'} = "pt1_pt1"; - &doNOTdodiffonfile( \%diff, "datm_atm_in", "default" ); - &doNOTdodiffonfile( \%diff, "datm.streams.txt.$xmlenv{'GRID'}", "default" ); - } else { - $xmlenv{'GRID'} = "1.9x2.5_g16"; - $xmlenv{'ATM_GRID'} = "1.9x2.5"; - $xmlenv{'DATM_PRESAERO'} = "$presaero"; - if ( $presaero eq "clim_2000" ) { - &dodiffonfile( \%diff, "datm_atm_in", "default" ); - &dodiffonfile( \%diff, "datm.streams.txt.$presaero", "default" ); - } else { - &doNOTdodiffonfile( \%diff, "datm_atm_in", "default" ); - &doNOTdodiffonfile( \%diff, "datm.streams.txt.$presaero", "default" ); - } - } - print "ATM_GRID = $xmlenv{'ATM_GRID'}"; - print "DATM_MODE = $xmlenv{'DATM_MODE'}"; - print "DATM_PRESAERO = $xmlenv{'DATM_PRESAERO'}"; - &writeEnv( %xmlenv ); - eval{ system( "$bldnml" ); }; - ok( ! $?, "presaero=$presaero" ); - &shownmldiff( "default", "$xmlenv{'DATM_MODE'}" ); - &checkfilesexist( ); - if ( $xmlenv{'DATM_MODE'} ne "CLM1PT" ) { - &comparefiles( \%diff, "default", "$xmlenv{'DATM_MODE'}" ); - } - system( "/bin/rm -rf $confdir" ); -} -$xmlenv{'DATM_MODE'} = "CLM_QIAN"; -$xmlenv{'DATM_PRESAERO'} = "clim_2000"; -print "DATM_MODE = $xmlenv{'DATM_MODE'}\n"; -print "DATM_PRESAERO= $xmlenv{'DATM_PRESAERO'}\n"; -# Check CLM_USRDAT_NAME -$xmlenv{'GRID'} = "CLM_USRDAT"; -$xmlenv{'ATM_GRID'} = $xmlenv{'GRID'}; -print "GRID = $xmlenv{'GRID'}\n"; -print "ATM_GRID = $xmlenv{'ATM_GRID'}\n"; -$xmlenv{'CLM_USRDAT_NAME'} = "13x12pt_f19_alaskaUSA"; -$xmlenv{'ATM_DOMAIN_FILE'} ="domain.lnd.\${CLM_USRDAT_NAME}_navy.nc"; -$xmlenv{'ATM_DOMAIN_PATH'} ="\$DIN_LOC_ROOT/share/domains/domain.clm"; -foreach my $env ( "CLM_USRDAT_NAME", "ATM_DOMAIN_FILE", "ATM_DOMAIN_PATH" ) { - print "$env\t\t= ".$xmlenv{$env}."\n"; -} -&writeEnv( %xmlenv ); -eval{ system( "$bldnml" ); }; -ok( ! $?, "CLM_USRDAT_NAME" ); -&doNOTdodiffonfile( \%diff, "datm_atm_in", "default" ); -&checkfilesexist( ); -&comparefiles( \%diff, "default", "$xmlenv{'DATM_MODE'}" ); -&shownmldiff( "default", "$xmlenv{'DATM_MODE'}" ); -# Turn transient CO2 on -$xmlenv{'DATM_CO2_TSERIES'} = "20tr"; -&writeEnv( %xmlenv ); -eval{ system( "$bldnml" ); }; -ok( ! $?, "CLM_USRDAT_NAME" ); -&doNOTdodiffonfile( \%diff, "datm_atm_in", "CO2_tseries" ); -&checkfilesexist( ); -&comparefiles( \%diff, "default", "$xmlenv{'DATM_MODE'}" ); -&shownmldiff( "default", "$xmlenv{'DATM_MODE'}" ); -$xmlenv{'DATM_CO2_TSERIES'} = "none"; -# Check CLM_USRDAT_NAME for CLM1PT mode -$xmlenv{'GRID'} = "CLM_USRDAT"; -$xmlenv{'ATM_GRID'} = $xmlenv{'GRID'}; -$xmlenv{'DATM_MODE'} = "CLM1PT"; -$xmlenv{'DATM_PRESAERO'} = "pt1_pt1"; -print "DATM_MODE = $xmlenv{'DATM_MODE'}\n"; -print "DATM_PRESAERO = $xmlenv{'DATM_PRESAERO'}\n"; -$xmlenv{'CLM_USRDAT_NAME'} = "US-UMB"; -$xmlenv{'ATM_DOMAIN_FILE'} ="domain.lnd.\${CLM_USRDAT_NAME}_navy.nc"; -$xmlenv{'ATM_DOMAIN_PATH'} ="\$DIN_LOC_ROOT/share/domains/domain.clm"; -foreach my $env ( "CLM_USRDAT_NAME", "ATM_DOMAIN_FILE", "ATM_DOMAIN_PATH" ) { - print "$env\t\t= ".$xmlenv{$env}."\n"; -} -&writeEnv( %xmlenv ); -eval{ system( "$bldnml" ); }; -ok( ! $?, "CLM_USRDAT_NAME with CLM1PT" ); -&doNOTdodiffonfile( \%diff, "datm_atm_in", "default" ); -&checkfilesexist( ); -&shownmldiff( "default", "$xmlenv{'DATM_MODE'}" ); -# Make sure there isn't any unresolved env variables in the output namelist ($) -my $stat = `fgrep \$ $confdir/datm_atm_in`; -isnt( $?, 0, "check for unresolved env variables" ); -system( "/bin/rm -rf $confdir" ); -# Run different DATM_MODE -foreach my $mode ( "CORE2_NYF", "CORE2_IAF", "CPLHIST3HrWx", "CLMCRUNCEP","CLMCRUNCEP_V5", "CLMGSWP3" ) { - $xmlenv{'DATM_MODE'} = $mode; - print "DATM_MODE = $xmlenv{'DATM_MODE'}\n"; - if ( $mode =~ /^CLM/ ) { - $xmlenv{'DATM_TOPO'} = "observed"; - } else { - $xmlenv{'DATM_TOPO'} = "none"; - } - &writeEnv( %xmlenv ); - eval{ system( "$bldnml" ); }; - ok( ! $?, "mode=$mode" ); - &shownmldiff( "default", "CLMQIAN" ); - &checkfilesexist( ); - ©defaultfiles( "default", \%diff ); - if ( defined($opts{'compare'}) ) { - &comparefiles( \%diff, "default", "$xmlenv{'DATM_MODE'}", $opts{'compare'} ); - } - system( "/bin/rm -rf $confdir" ); -} -# Run with presaero="none"; -$xmlenv{'DATM_MODE'} = "CORE2_NYF"; -$xmlenv{'DATM_PRESAERO'} = "none"; -$xmlenv{'DATM_TOPO'} = "none"; -print "DATM_MODE = $xmlenv{'DATM_MODE'}\n"; -print "DATM_PRESAERO = $xmlenv{'DATM_PRESAERO'}\n"; -&writeEnv( %xmlenv ); -eval{ system( "$bldnml" ); }; -ok( ! $?, "presaero=none" ); -&shownmldiff( "default", "$xmlenv{'DATM_MODE'}" ); -&checkfilesexist( ); -system( "/bin/rm -rf $confdir" ); -$xmlenv{'DATM_MODE'} = "CLM_QIAN"; -$xmlenv{'DATM_PRESAERO'} = "clim_2000"; -$xmlenv{'DATM_TOPO'} = "observed"; -print "DATM_MODE = $xmlenv{'DATM_MODE'}\n"; -print "DATM_PRESAERO = $xmlenv{'DATM_PRESAERO'}\n"; - -# -# Error testing -- verify that conditions that should FAIL -- do -# - -# Bad arguments or bad namelist value to build-namelist -foreach my $option ( "-zztop", "-namelist '&datm_exp zztop=24/'", "-user_xml_dir zztop" ) { - &writeEnv( %xmlenv ); - eval{ system( "$bldnml $option > $tempfile 2>&1 " ); }; - isnt( $?, 0, "Bad argument to build-namelist: $option" ); - system( "cat $tempfile" ); - system( "/bin/rm -rf $confdir" ); -} - -# Bad ENV settings -my %bad_env = ( - CLMQIAN_N_PAERONONE =>{ DATM_MODE =>"CLM_QIAN", DATM_PRESAERO=>"none" }, - TOPONONEAND_CLM =>{ DATM_MODE =>"CLM_QIAN", DATM_TOPO =>"none" }, - BAD_DATM_MODE =>{ DATM_MODE =>"zztop" }, - BAD_PRESAERO =>{ DATM_PRESAERO=>"zztop" }, - BAD_CQYR_RANGE =>{ DATM_CLMNCEP_YR_START=>2004, DATM_CLMNCEP_YR_END=>1948 }, - MISSING_CQYR_START =>{ DATM_CLMNCEP_YR_START=>undef }, - MISSING_CQYR_END =>{ DATM_CLMNCEP_YR_END =>undef }, - MISSING_CQYR_ALIGN =>{ DATM_CLMNCEP_YR_ALIGN=>undef }, - MISSING_CHYR_START =>{ DATM_MODE =>"CPLHIST3HrWx", DATM_CPLHIST_YR_START=>undef }, - MISSING_CHYR_END =>{ DATM_MODE =>"CPLHIST3HrWx", DATM_CPLHIST_YR_END =>undef }, - MISSING_CHYR_ALIGN =>{ DATM_MODE =>"CPLHIST3HrWx", DATM_CPLHIST_YR_ALIGN=>undef }, - BAD_CHYR_RANGE =>{ DATM_MODE =>"CPLHIST3HrWx", - DATM_CPLHIST_YR_START=>1000, DATM_CPLHIST_YR_END=>500 }, - BAD_DATM_CO2TSERIES =>{ DATM_CO2_TSERIES=>"thing" }, - READONLY_USERSTRM =>{ DATM_MODE =>"CLM_QIAN" }, - ); -foreach my $test ( keys(%bad_env) ) { - my $envvarref = $bad_env{$test}; - # Set values - my %def; - print "Test: $test\n"; - foreach my $env ( keys(%$envvarref) ) { - $def{$env} = $xmlenv{$env}; - $xmlenv{$env} = $bad_env{$test}{$env}; - print "$env = ".$xmlenv{$env}."\n"; - } - &writeEnv( %xmlenv ); - # Readonly user stream file - if ( $test =~ /READONLY_USERSTRM/ ) { - my $streamfile = "datm.streams.txt.CLM_QIAN.Solar"; - system( "cp -p user_streams/user_$streamfile.readonly $CASEROOT/user_$streamfile" ); - } - eval{ system( "$bldnml > $tempfile 2>&1 " ); }; - isnt( $?, 0, "$test" ); - system( "cat $tempfile" ); - # Set values back - foreach my $env ( keys(%$envvarref) ) { - $xmlenv{$env} = $def{$env}; - print "$env back to ".$xmlenv{$env}."\n"; - } - system( "/bin/rm -rf $confdir" ); -} -print "\nCompleted all error tests...\n\n"; - -# End and cleanup -print "\nCompleted all tests cleanup and quit...\n\n"; -system( "/bin/rm -rf $CASEROOT" ); -system( "/bin/rm $tempfile" ); -if ( ! $opts{'generate'} ) { - system( "/bin/rm *.default $CASEROOT/$envxmlfile" ); -} - -sub writeEnv { -# -# Write the input env hash to an env_*.xml file -# - my %xmlenv = @_; - - my $fh = new IO::File; - $fh->open(">$CASEROOT/$envxmlfile") or die "can't open file: $CASEROOT/$envxmlfile\n"; - print $fh < - - - -EOF - foreach my $id ( keys(%xmlenv) ) { - print $fh "\n\n"; - } - print $fh "\n\n"; - $fh->close(); -} - -sub checkfilesexist { -# -# Check that files exist -# - my @files = ( - "atm_modelio.nml", "../datm.input_data_list", - "config_cache.xml", "datm_atm_in", - "datm_in" - ); - foreach my $file ( glob("$confdir/datm.streams.txt.*") ) { - $file =~ s|$confdir/||; - push( @files, $file ); - } - foreach my $file ( @files ) { - ok( (-f "$confdir/$file" ), "$file file exists" ); - } -} - -sub comparefiles { -# -# Compare the the resultant files to the default versions -# - my $diffref = shift; - my $type = shift; - my $comp_mode = shift; - my $compdir = shift; - - if ( ! defined($type) ) { - $type = "default"; - } - my $compare = "compare to previous tag"; - if ( ! defined($compdir) ) { - $compdir = "."; - $compare = undef; - } - if ( ! -d "$compdir" ) { - die "Compare directory $compdir does NOT exist!\n"; - } - print "Compare files for $type type DATM_MODE=$comp_mode $compare\n"; - my $diffstat; - my %diffhas = %$diffref; - my $same = "file the same as expected"; - my $diff = "file different as expected"; - foreach my $file ( "datm_in", "datm_atm_in", "atm_modelio.nml" ) { - if ( ! -f "$compdir/${file}.$comp_mode.${type}" ) { - die "File $compdir/${file}.$comp_mode.${type} does NOT exist!\n"; - } - if ( ! exists($diffhas{$comp_mode}{$type}{$file}) ) { - next; - } - $diffstat = `diff -q $confdir/${file} $compdir/${file}.$comp_mode.${type}`; - if ( $diffhas{$comp_mode}{$type}{$file} ) { - ok( ! $?, "$file $same for $comp_mode" ); - } else { - like( $diffstat, "/Files $confdir/$file and $compdir/${file}.$comp_mode.${type} differ/", "$file $diff" ); - } - } - foreach my $file ( glob("$confdir/datm.streams.txt.*") ) { - $file =~ s|$confdir/||; - if ( ! exists($diffhas{$comp_mode}{$type}{$file}) ) { - next; - } - # Get rid of comment about command line options - system( "sed 's/build-namelist -debug.*/build-namelist -debug /' $confdir/$file > $confdir/${file}.tmp" ); - system( "/bin/mv $confdir/${file}.tmp $confdir/${file}" ); - if ( ! -f "$compdir/${file}.$comp_mode.${type}" ) { - die "File $compdir/${file}.$comp_mode.${type} does NOT exist!\n"; - } - $diffstat = `diff -q $confdir/$file $compdir/${file}.$comp_mode.${type}`; - if ( $diffhas{$comp_mode}{$type}{$file} ) { - ok( ! $?, "$file $same" ); - } else { - like( $diffstat, "/Files $confdir/$file and $compdir/${file}.$comp_mode.${type} differ/", "$file $diff" ); - } - } -} - -sub copydefaultfiles { -# -# Copy the namelist files to default names for comparisions -# - my $type = shift; - my $diffref = shift; - - my $mode = $xmlenv{'DATM_MODE'}; - foreach my $file ( "datm_in", "datm_atm_in", "atm_modelio.nml" ) { - system( "/bin/cp $confdir/$file ${file}.${mode}.${type}" ); - $$diffref{${mode}}{${type}}{$file} = 1; - } - foreach my $file ( glob("$confdir/datm.streams.txt.*") ) { - $file =~ s|$confdir/||; - system( "/bin/cp $confdir/$file ${file}.${mode}.${type}" ); - $$diffref{${mode}}{${type}}{$file} = 1; - } - print "$type namelists for $mode\n"; - system( "/bin/cat datm_in.${mode}.${type}" ); - system( "/bin/cat datm_atm_in.${mode}.${type}" ); -} - -sub shownmldiff { -# -# Show the differences in the namelists -# - my $type = shift; - my $comp_mode = shift; - - foreach my $file ( "datm_in", "datm_atm_in" ) { - my $file1 = "$confdir/$file"; - if ( ! -f "$file1" ) { - print "$file1 does NOT exist\n"; - return; - } - my $file2 = "${file}.${comp_mode}.${type}"; - if ( ! -f "$file2" ) { - print "$file2 does NOT exist\n"; - return; - } - print "Diff in in $file to $type $comp_mode version"; - system( "diff $file1 $file2" ); - } - -} - -sub dodiffonfile { -# -# Set it so that it does do a difference on the given input file -# - my $diffref = shift; - my $file = shift; - my $type = shift; - - if ( ! defined($type) ) { - $type = "default"; - } - my $mode = $xmlenv{'DATM_MODE'}; - if ( exists($$diffref{$mode}{$type}{$file}) ) { - $$diffref{$mode}{$type}{$file} = 1; - } -} - -sub doNOTdodiffonfile { -# -# Set it so that it does NOT do a difference on the given input file -# - my $diffref = shift; - my $file = shift; - my $type = shift; - - if ( ! defined($type) ) { - $type = "default"; - } - my $mode = $xmlenv{'DATM_MODE'}; - if ( exists($$diffref{$mode}{$type}{$file}) ) { - $$diffref{$mode}{$type}{$file} = 0; - } -} diff --git a/cime/components/data_comps/datm/bld/unit_testers/env_run.xml b/cime/components/data_comps/datm/bld/unit_testers/env_run.xml deleted file mode 100644 index 3a62fe8e498e..000000000000 --- a/cime/components/data_comps/datm/bld/unit_testers/env_run.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cime/components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_defaults_datm.xml b/cime/components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_defaults_datm.xml deleted file mode 100644 index 5731eb4affac..000000000000 --- a/cime/components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_defaults_datm.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -2001 -2016 -2001 -clmforc.Solar.%ym.nc -/TESTQIAN/Solar6Hrly -/TESTQIAN/Prec6Hrly -2001 -2016 -2001 -clmforc.Prec.%ym.nc -/TESTQIAN/TPQW6Hrly -2001 -2016 -2001 -clmforc.Prec.%ym.nc - - - - diff --git a/cime/components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_definition_datm.xml b/cime/components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_definition_datm.xml deleted file mode 100644 index 947936c0a9c4..000000000000 --- a/cime/components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_definition_datm.xml +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - - - - - -Data Model mode to process forcing data - - - -Prescribed aerosol mode - - - - - - - - - - - - - - -spatial gridfile associated with the strdata. grid information will -be read from this file and that grid will serve as the target grid -for all input data for this strdata input. - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are just copy (ie. no fill), special value, -nearest neighbor, nearest neighbor in "i" direction, or nearest -neighbor in "j" direction. -valid values: 'copy','spval','nn','nnoni','nnonj' -default: "nn". - - - -plays no role is fill algorithm at the present time. -valid values: "nomask,srcmask,dstmask,bothmask" -default: "nomask" - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read in instead of computing the -weights on the fly for the fill operation. if this is set, fillalgo -and fillmask are ignored. -default: unset - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the fill operation. this allows a user to -save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of masking algorithms for mapping input data -associated with the array of streams. valid options are map only from -valid src points, map only to valid destination points, ignore all -masks, map only from valid src points to valid destination points. -valid values: srcmask, dstmask, nomask,bothmask -default: dstmask - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are copy by index, set to special value, -nearest neighbor, nearest neighbor in "i" direction, nearest neighbor -in "j" direction, or bilinear. -valid values: copy,spval,nn,nnoni,nnonj,bilinear -default: bilinear - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read instead of computing -weights on the fly for the mapping (interpolation) operation. if this -is set, mapalgo and mapmask are ignored. default="unset". - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the mapping (interpolation) operation. this -allows a user to save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of time interpolation options associated with the array of -streams. -valid values: lower,upper,nearest,linear,coszen - lower = Use lower time-value - upper = Use upper time-value - nearest = Use the nearest time-value - linear = Linearly interpolate between the two time-values - coszen = Scale according to the cosine of the solar zenith angle (for solar) -default="linear". - - - -array of time axis modes associated with the array of streams for -handling data outside the specified stream time axis. -valid options are to cycle the data based on the first, last, and -align settings associated with the stream dataset, to extend the first -and last valid value indefinitely, or to limit the interpolated data -to fall only between the least and greatest valid value of the time array. -valid values: cycle,extend,limit -default="cycle". - - - -array (up to 30 elements) of delta time ratio limits placed on the -time interpolation associated with the array of streams. this real -value causes the model to stop if the ratio of the running maximum -delta time divided by the minimum delta time is greater than the -dtlimit for that stream. for instance, with daily data, the delta -time should be exactly one day throughout the dataset and the computed -maximum divided by minimum delta time should always be 1.0. for -monthly data, the delta time should be between 28 and 31 days and the -maximum ratio should be about 1.1. the running value of the delta -time is computed as data is read and any wraparound or cycling is also -included. this input helps trap missing data or errors in cycling. -to turn off trapping, set the value to 1.0e30 or something similar. -default=1.5. - - - -character array (up to 30 elements) of stream input files. this -string is actually parsed by a stream method and so the format is -specified by the stream module. this string consists of a -"stream_input_filename year_align year_first year_last". the -stream_input_filename is a stream text input file and the format and -options are described elsewhere. year_align, year_first, and -year_last provide information about the time axis of the file and how -to relate the input time axis to the model time axis. -default="null". - - - -list of paired colon delimited field names that should be treated as -vectors when carrying out spatial interpolation. unlike other -character arrays in this namelist, this array is completely decoupled -from the list of streams. this is a list of vector pairs that span -all input streams where different fields of the vector pair could -appear in different streams. -for example, vectors = 'u:v','taux:tauy'. -default="". - - - -The data atmosphere specific namelist input is as follows. The -namelist input filename is hardwired in the data model code to -"datm_in". The namelist group is called "datm_nml". The variable -formats are character string (char), integer (int), double precision -real (r8), or logical (log) or one dimensional arrays of any of those -things. atm_in sets the filename for the data atmosphere shr_strmdata namelist. -default: datm_atm_in. - - - - - - - -Set the decomposition option for the data model. valid options are -placing the global array on the root task or a simple stride-one -load balanced one-dimensional decomposition. other decompositions -may be added in the future. -valid values are ['root','1d']. - 1d = Vector decomposition - root = run only on the master task -default='1d'. - - - -filename containing correction factors for use only with CORE2 modes (CORE2_IAF and CORE2_NYF). -default='null'. - - - -If TRUE, prescribed aerosols are sent from datm (must be true for running with CLM). - - - -If TRUE, prognostic is forced to true. -default=false - - - -Frequency to update radiation in number of steps (or hours if negative) -irdasw is the radiation setting used to compute the next shortwave -Julian date. values greater than 1 set the next radiation to the -present time plus 2 timesteps every iradsw. values less than 0 turn -set the next radiation to the present time plus two timesteps every --iradsw hours. if iradsw is zero, the next radiation time is the -present time plus 1 timestep. -default=0. - - - -Model restart filename for the data atmosphere model data. This is -optional. If both restfils and restfilm are undefined, the restart -filename will be read from the DATM restart pointer file (or files for multiple instances). -default='undefined'. - - - -Stream restart filename for the data atmosphere stream data. This is -optional. If both restfils and restfilm are undefined, the restart -filename will be read from the DATM restart pointer file (or files for multiple instances). -default='undefined'. - - - - - - - -DATM logfile name -default='atm.log' - - - diff --git a/cime/components/data_comps/datm/cime_config/buildlib b/cime/components/data_comps/datm/cime_config/buildlib index 0ffe4a311bf4..5f901d7dedef 100755 --- a/cime/components/data_comps/datm/cime_config/buildlib +++ b/cime/components/data_comps/datm/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_data_lib diff --git a/cime/components/data_comps/datm/cime_config/buildnml b/cime/components/data_comps/datm/cime_config/buildnml index 01752a6bd212..a4c49f3baa8a 100755 --- a/cime/components/data_comps/datm/cime_config/buildnml +++ b/cime/components/data_comps/datm/cime_config/buildnml @@ -1,17 +1,255 @@ #!/usr/bin/env python +"""Namelist creator for CIME's data atmosphere model. """ -build data model library -""" -import sys, os +# Typically ignore this. +# pylint: disable=invalid-name + +# Disable these because this is our standard setup +# pylint: disable=wildcard-import,unused-wildcard-import,wrong-import-position + +import os, shutil, sys, glob -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_data_nml +from CIME.case import Case +from CIME.nmlgen import NamelistGenerator +from CIME.utils import expect +from CIME.buildnml import create_namelist_infile, parse_input +from CIME.XML.files import Files + +logger = logging.getLogger(__name__) + +# pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements +#################################################################################### +def _create_namelists(case, confdir, inst_string, infile, nmlgen): +#################################################################################### + """Write out the namelist for this component. + + Most arguments are the same as those for `NamelistGenerator`. The + `inst_string` argument is used as a suffix to distinguish files for + different instances. The `confdir` argument is used to specify the directory + in which output files will be placed. + """ + + #---------------------------------------------------- + # Get a bunch of information from the case. + #---------------------------------------------------- + atm_domain_file = case.get_value("ATM_DOMAIN_FILE") + atm_domain_path = case.get_value("ATM_DOMAIN_PATH") + datm_mode = case.get_value("DATM_MODE") + datm_topo = case.get_value("DATM_TOPO") + datm_presaero = case.get_value("DATM_PRESAERO") + datm_co2_tseries = case.get_value("DATM_CO2_TSERIES") + atm_grid = case.get_value("ATM_GRID") + grid = case.get_value("GRID") + clm_usrdat_name = case.get_value("CLM_USRDAT_NAME") + + #---------------------------------------------------- + # Check for incompatible options. + #---------------------------------------------------- + if "CLM" in datm_mode: + expect(datm_presaero != "none", + "A DATM_MODE for CLM is incompatible with DATM_PRESAERO=none.") + expect(datm_topo != "none", + "A DATM_MODE for CLM is incompatible with DATM_TOPO=none.") + expect(grid != "CLM_USRDAT" or clm_usrdat_name in ("", "UNSET"), + "GRID=CLM_USRDAT and CLM_USRDAT_NAME is NOT set.") + + #---------------------------------------------------- + # Log some settings. + #---------------------------------------------------- + logger.debug("DATM mode is %s", datm_mode) + logger.debug("DATM grid is %s", atm_grid) + logger.debug("DATM presaero mode is %s", datm_presaero) + logger.debug("DATM topo mode is %s", datm_topo) + + #---------------------------------------------------- + # Clear out old data. + #---------------------------------------------------- + data_list_path = os.path.join(case.get_case_root(), "Buildconf", + "datm.input_data_list") + if os.path.exists(data_list_path): + os.remove(data_list_path) + + #---------------------------------------------------- + # Create configuration information. + #---------------------------------------------------- + config = {} + config['grid'] = grid + config['atm_grid'] = atm_grid + config['datm_mode'] = datm_mode + config['datm_co2_tseries'] = datm_co2_tseries + config['datm_presaero'] = datm_presaero + + #---------------------------------------------------- + # Initialize namelist defaults + #---------------------------------------------------- + nmlgen.init_defaults(infile, config) + + #---------------------------------------------------- + # Construct the list of streams. + #---------------------------------------------------- + streams = nmlgen.get_streams() + # + # This disable is required because nmlgen.get_streams + # may return a string or a list. See issue #877 in ESMCI/cime + # + #pylint: disable=no-member + if datm_presaero != "none": + streams.append("presaero.%s" % datm_presaero) + + if datm_topo != "none": + streams.append("topo.%s" % datm_topo) + + if datm_co2_tseries != "none": + streams.append("co2tseries.%s" % datm_co2_tseries) + + # Add bias correction stream if given in namelist. + bias_correct = nmlgen.get_value("bias_correct") + streams.append(bias_correct) + + # Add all anomaly forcing streams given in namelist. + anomaly_forcing = nmlgen.get_value("anomaly_forcing") + streams += anomaly_forcing + + #---------------------------------------------------- + # For each stream, create stream text file and update + # shr_strdata_nml group and input data list. + #---------------------------------------------------- + for stream in streams: + + # Ignore null values. + if stream is None or stream in ("NULL", ""): + continue + + inst_stream = stream + inst_string + logger.debug("DATM stream is %s", inst_stream) + stream_path = os.path.join(confdir, "datm.streams.txt." + inst_stream) + user_stream_path = os.path.join(case.get_case_root(), "user_datm.streams.txt." + inst_stream) + + # Use the user's stream file, or create one if necessary. + if os.path.exists(user_stream_path): + shutil.copyfile(user_stream_path, stream_path) + config['stream'] = stream + nmlgen.update_shr_strdata_nml(config, stream, stream_path) + else: + nmlgen.create_stream_file_and_update_shr_strdata_nml(config, stream, stream_path, data_list_path) + + #---------------------------------------------------- + # Create `shr_strdata_nml` namelist group. + #---------------------------------------------------- + # set per-stream variables + nmlgen.create_shr_strdata_nml() + + # set variables that are not per-stream + if datm_mode == 'CPLHISTForcingForOcnIce': + nmlgen.add_default("domainfile", value='null') + if atm_domain_file != "UNSET": + if case.get_value('ATM_DOMAIN_FILE') != 'UNSET': + case.add_default('ATM_DOMAIN_FILE', value='UNSET', ignore_abs_path=True) + case.flush() + else: + full_domain_path = os.path.join(atm_domain_path, atm_domain_file) + nmlgen.add_default("domainfile", value=full_domain_path) + + #---------------------------------------------------- + # Finally, write out all the namelists. + #---------------------------------------------------- + namelist_file = os.path.join(confdir, "datm_in") + nmlgen.write_output_file(namelist_file, data_list_path, groups=['datm_nml','shr_strdata_nml']) + +############################################################################### +def buildnml(case, caseroot, compname): +############################################################################### + + # Build the component namelist and required stream txt files + if compname != "datm": + raise AttributeError + + rundir = case.get_value("RUNDIR") + ninst = case.get_value("NINST_ATM") + + # Determine configuration directory + confdir = os.path.join(caseroot,"Buildconf",compname + "conf") + if not os.path.isdir(confdir): + os.makedirs(confdir) + + #---------------------------------------------------- + # Construct the namelist generator + #---------------------------------------------------- + # Determine directory for user modified namelist_definitions.xml and namelist_defaults.xml + user_xml_dir = os.path.join(caseroot, "SourceMods", "src." + compname) + expect (os.path.isdir(user_xml_dir), + "user_xml_dir %s does not exist " %user_xml_dir) + + # NOTE: User definition *replaces* existing definition. + files = Files() + definition_file = [files.get_value("NAMELIST_DEFINITION_FILE", {"component":"datm"})] + + user_definition = os.path.join(user_xml_dir, "namelist_definition_datm.xml") + if os.path.isfile(user_definition): + definition_file = [user_definition] + for file_ in definition_file: + expect(os.path.isfile(file_), "Namelist XML file %s not found!" % file_) + + # Create the namelist generator object - independent of instance + nmlgen = NamelistGenerator(case, definition_file, files=files) + + #---------------------------------------------------- + # Loop over instances + #---------------------------------------------------- + for inst_counter in range(1, ninst+1): + + # determine instance string + inst_string = "" + if ninst > 1: + inst_string = '_' + '%04d' % inst_counter + + # If multi-instance case does not have restart file, use + # single-case restart for each instance + rpointer = "rpointer." + compname + 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), + os.path.join(rundir, rpointer + inst_string)) + + inst_string_label = inst_string + if not inst_string_label: + inst_string_label = "\"\"" + + # create namelist output infile using user_nl_file as input + user_nl_file = os.path.join(caseroot, "user_nl_" + compname + inst_string) + expect(os.path.isfile(user_nl_file), + "Missing required user_nl_file %s " %(user_nl_file)) + infile = os.path.join(confdir, "namelist_infile") + create_namelist_infile(case, user_nl_file, infile) + namelist_infile = [infile] + + # create namelist and stream file(s) data component + _create_namelists(case, confdir, inst_string, namelist_infile, nmlgen) + + # copy namelist files and stream text files, to rundir + if os.path.isdir(rundir): + filename = compname + "_in" + file_src = os.path.join(confdir, filename) + file_dest = os.path.join(rundir, filename) + if inst_string: + file_dest += inst_string + shutil.copy(file_src,file_dest) + + for txtfile in glob.glob(os.path.join(confdir, "*txt*")): + shutil.copy(txtfile, rundir) + +############################################################################### +def _main_func(): + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "datm") + -build_data_nml(sys.argv, 'atm') +if __name__ == "__main__": + _main_func() diff --git a/cime/components/data_comps/datm/cime_config/config_archive.xml b/cime/components/data_comps/datm/cime_config/config_archive.xml new file mode 100644 index 000000000000..4b34208dddeb --- /dev/null +++ b/cime/components/data_comps/datm/cime_config/config_archive.xml @@ -0,0 +1,10 @@ + + + \.r.* + unset + + rpointer$NINST_STRING.atm + $CASE.datm$NINST_STRING.r.$DATENAME.nc,$CASE.datm$NINST_STRING.rs1.$DATENAME.bin + + + diff --git a/cime/components/data_comps/datm/cime_config/config_component.xml b/cime/components/data_comps/datm/cime_config/config_component.xml index 6b7e82775ff2..f5a32e93253f 100644 --- a/cime/components/data_comps/datm/cime_config/config_component.xml +++ b/cime/components/data_comps/datm/cime_config/config_component.xml @@ -2,7 +2,7 @@ - + char @@ -15,7 +15,7 @@ char - CORE2_NYF,CORE2_IAF,TN460,CLM_QIAN,CLM1PT,CLMCRUNCEP,CLMCRUNCEP_V5,CLMGSWP3,CPLHIST3HrWx,COPYALL_NPS_v1,COPYALL_NPS_CORE2_v1,WRF,WW3 + CORE2_NYF,CORE2_IAF,TN460,CLM_QIAN,CLM_QIAN_WISO,CLM1PT,CLMCRUNCEP,CLMCRUNCEP_V5,CLMGSWP3,CPLHIST3HrWx,COPYALL_NPS_v1,COPYALL_NPS_CORE2_v1,WRF,WW3,CPLHISTForcingForOcnIce CORE2_NYF run_component_datm env_run.xml @@ -29,32 +29,36 @@ WW3 COPYALL_NPS_v1 COPYALL_NPS_CORE2_v1 + CLM_QIAN_WISO CLM_QIAN CLMCRUNCEP CLMGSWP3 CLM1PT CPLHIST3HrWx + CPLHISTForcingForOcnIce char - none,clim_1850,clim_2000,trans_1850-2000,rcp2.6,rcp4.5,rcp6.0,rcp8.5,pt1_pt1 + none,clim_1850,clim_2000,trans_1850-2000,rcp2.6,rcp4.5,rcp6.0,rcp8.5,cplhist none - clim_1850 - clim_2000 - clim_2000 - clim_2000 - clim_1850 - rcp8.5 - rcp6.0 - rcp4.5 - rcp2.6 - trans_1850-2000 - trans_1850-2000 + clim_1850 + clim_2000 + clim_2000 + clim_2000 + clim_1850 + rcp8.5 + rcp6.0 + rcp4.5 + rcp2.6 + trans_1850-2000 + trans_1850-2000 none none + none + cplhist run_component_datm env_run.xml @@ -80,18 +84,27 @@ none,20tr,rcp2.6,rcp4.5,rcp6.0,rcp8.5 none - rcp8.5 - rcp6.0 - rcp4.5 - rcp2.6 - 20tr - 20tr + rcp8.5 + rcp6.0 + rcp4.5 + rcp2.6 + 20tr + 20tr run_component_datm env_run.xml DATM CO2 time series + + char + + UNSET + run_component_datm + env_run.xml + directory for coupler history data mode (only used for CPLHIST3HrWx mode) + + char @@ -182,6 +195,7 @@ 1948 1901 1901 + 2000 1972 1948 1901 @@ -215,6 +229,7 @@ 1972 1920 1920 + 2004 2004 1972 1920 @@ -241,6 +256,7 @@ QIAN atm input data for 1948-1972: + QIAN atm input data with water isotopes for 2000-2004: QIAN atm input data for 1972-2004: QIAN atm input data for 2002-2003: QIAN atm input data for 1948-1972: @@ -273,5 +289,5 @@ ========================================= - + diff --git a/cime/components/data_comps/datm/cime_config/namelist_definition_datm.xml b/cime/components/data_comps/datm/cime_config/namelist_definition_datm.xml new file mode 100644 index 000000000000..bd30c536205c --- /dev/null +++ b/cime/components/data_comps/datm/cime_config/namelist_definition_datm.xml @@ -0,0 +1,2195 @@ + + + + + + + + + + + + + + char(100) + streams + streams_file + List of streams used for the given datm_mode + + CLM_QIAN.Solar,CLM_QIAN.Precip,CLM_QIAN.TPQW + CLM_QIAN_WISO.Solar,CLM_QIAN_WISO.Precip,CLM_QIAN_WISO.TPQW + CLM1PT.$ATM_GRID + CLMCRUNCEP.Solar,CLMCRUNCEP.Precip,CLMCRUNCEP.TPQW + CLMCRUNCEP_V5.Solar,CLMCRUNCEP_V5.Precip,CLMCRUNCEP_V5.TPQW + CLMGSWP3.Solar,CLMGSWP3.Precip,CLMGSWP3.TPQW + CORE2_NYF.GISS,CORE2_NYF.GXGXS,CORE2_NYF.NCEP + CORE2_IAF.GCGCS.PREC,CORE2_IAF.GISS.LWDN,CORE2_IAF.GISS.SWDN,CORE2_IAF.GISS.SWUP,CORE2_IAF.NCEP.DN10,CORE2_IAF.NCEP.Q_10,CORE2_IAF.NCEP.SLP_,CORE2_IAF.NCEP.T_10,CORE2_IAF.NCEP.U_10,CORE2_IAF.NCEP.V_10,CORE2_IAF.CORE2.ArcFactor + CORE2_IAF.NCEP.DENS.SOFS,CORE2_IAF.NCEP.PSLV.SOFS,CORE2_IAF.PREC.SOFS.DAILY,CORE2_IAF.LWDN.SOFS.DAILY,CORE2_IAF.SWDN.SOFS.DAILY,CORE2_IAF.SWUP.SOFS.DAILY,CORE2_IAF.SHUM.SOFS.6HOUR,CORE2_IAF.TBOT.SOFS.6HOUR,CORE2_IAF.U.SOFS.6HOUR,CORE2_IAF.V.SOFS.6HOUR,CORE2_IAF.CORE2.ArcFactor + WW3 + NLDAS + CPLHIST3HrWx.Solar,CPLHIST3HrWx.Precip,CPLHIST3HrWx.nonSolarNonPrecip + CPLHISTForcingForOcnIce.Solar,CPLHISTForcingForOcnIce.nonSolarFlux,CPLHISTForcingForOcnIce.State3hr,CPLHISTForcingForOcnIce.State1hr + + + + + char + streams + streams_file + Stream domain file directory. + + null + $DIN_LOC_ROOT/atm/datm7/domain.clm + $ATM_DOMAIN_PATH + $DIN_LOC_ROOT/atm/datm7 + $DATM_CPLHIST_DIR + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V5.c140715 + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.GSWP3.0.5d.V1.c141016 + $DIN_LOC_ROOT/atm/datm7/NYF + $DIN_LOC_ROOT/atm/datm7/CORE2 + $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/share/domains + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/atm/datm7 + $DIN_LOC_ROOT/wav/ww3 + $DIN_LOC_ROOT/share/domains/domain.clm + $DIN_LOC_ROOT/atm/datm7/CO2 + $DIN_LOC_ROOT/atm/datm7/bias_correction/precip/gpcp/qian + $DIN_LOC_ROOT/atm/datm7/clm_output/cruncep_precip_1deg/gpcp_1deg_bias_correction + $DIN_LOC_ROOT/atm/datm7/bias_correction/precip/cmap/cruncep + $DIN_LOC_ROOT/atm/datm7/anomaly_forcing + $DATM_CPLHIST_DIR + $DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero + $DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero + $DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero + $DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero + $DIN_LOC_ROOT/atm/datm7/topo_forcing + + + + + char + streams + streams_file + Stream domain file path(s). + + null + domain.lnd.1x1pt-mexicocityMEX_navy.090715.nc + domain.lnd.1x1pt-vancouverCAN_navy.090715.nc + domain.lnd.1x1pt-urbanc_alpha_navy.090715.nc + $ATM_DOMAIN_FILE + domain.lnd.fv0.9x1.25_gx1v6.090309.nc + null + domain.T62.050609.nc + domain.T62.050609.nc + domain.cruncep.V5.c2013.0.5d.nc + domain.lnd.360x720.130305.nc + domain.GSWP3.c2014.0.5d.nc + nyf.giss.T62.051007.nc + nyf.gxgxs.T62.051007.nc + nyf.ncep.T62.050923.nc + domain.ocn.01col.SOFS.20150828.nc + domain.ocn.01col.SOFS.20150828.nc + domain.ocn.01col.SOFS.20150828.nc + domain.ocn.01col.SOFS.20150828.nc + domain.ocn.01col.SOFS.20150828.nc + domain.ocn.01col.SOFS.20150828.nc + domain.ocn.01col.SOFS.20150828.nc + domain.ocn.01col.SOFS.20150828.nc + domain.ocn.01col.SOFS.20150828.nc + domain.ocn.01col.SOFS.20150828.nc + domain.T62.050609.nc + domain.T62.050609.nc + domain.T62.050609.nc + domain.T62.050609.nc + domain.T62.050609.nc + domain.T62.050609.nc + domain.T62.050609.nc + domain.T62.050609.nc + domain.T62.050609.nc + domain.T62.050609.nc + CORE2.t_10.ArcFactor.T62.1997-2004.nc + core2_G4_wns_30min_20000601_to_05.nc + domain.lnd.nldas2_0224x0464_c110415.nc + fco2_datm_1765-2007_c100614.nc + fco2_datm_rcp2.6_1765-2500_c130312.nc + fco2_datm_rcp4.5_1765-2500_c130312.nc + fco2_datm_rcp6.0_1765-2500_c130312.nc + fco2_datm_rcp8.5_1765-2500_c110919.nc + qian.bc.domain.c130531.nc + cruncep.bc.domain.0.9x1.25.nc + cruncep.bc.domain.c100429.nc + domain.permafrostRCN_P2.c2013.nc + null + aerosoldep_monthly_1849-2006_${CLM_USRDAT_NAME}.nc + aerosoldep_rcp2.6_monthly_1849-2104_${CLM_USRDAT_NAME}.nc + aerosoldep_rcp4.5_monthly_1849-2104_${CLM_USRDAT_NAME}.nc + aerosoldep_rcp6_monthly_1849-2104_${CLM_USRDAT_NAME}.nc + + + aerosoldep_monthly_1850_mean_1.9x2.5_c090421.nc + aerosoldep_monthly_2000_mean_1.9x2.5_c090421.nc + aerosoldep_monthly_1849-2006_1.9x2.5_c090803.nc + aerosoldep_rcp2.6_monthly_1849-2104_1.9x2.5_c100402.nc + aerosoldep_rcp4.5_monthly_1849-2104_1.9x2.5_c100402.nc + aerosoldep_rcp6.0_monthly_1849-2104_1.9x2.5_c100830.nc + aerosoldep_rcp8.5_monthly_1849-2104_1.9x2.5_c100201.nc + topodata_0.9x1.25_USGS_070110_stream_c151201.nc + + + + + char + streams + streams_file + Stream domain variable name(s). + + + time time + xc lon + yc lat + area area + mask mask + + + time time + doma_lon lon + doma_lat lat + doma_aream area + doma_mask mask + + + time time + lon lon + lat lat + area area + mask mask + + + time time + lon lon + lat lat + area area + mask mask + + + time time + gridLon lon + gridLat lat + area area + mask mask + + + time time + LONGXY lon + LATIXY lat + area area + mask mask + + + time time + lonc lon + latc lat + area area + mask mask + + + + + + char + streams + streams_file + Stream data file directory. + + null + $DIN_LOC_ROOT/atm/datm7/CLM1PT_data/mexicocityMEX.c080124 + $DIN_LOC_ROOT/atm/datm7/CLM1PT_data/vancouverCAN.c080124 + $DIN_LOC_ROOT/atm/datm7/CLM1PT_data/urbanc_alpha.c080416 + $DIN_LOC_ROOT_CLMFORC/$CLM_USRDAT_NAME/CLM1PT_data + /glade/p/cesm/shared_outputdata/cases/ccsm4/$DATM_CPLHIST_CASE/cpl/hist + $DATM_CPLHIST_DIR + $DIN_LOC_ROOT/atm/datm7/atm_forcing.datm7.Qian.T62.c080727/Solar6Hrly + $DIN_LOC_ROOT/atm/datm7/atm_forcing.datm7.Qian.T62.c080727/Precip6Hrly + $DIN_LOC_ROOT/atm/datm7/atm_forcing.datm7.Qian.T62.c080727/TmpPrsHumWnd3Hrly + $DIN_LOC_ROOT/atm/datm7/atm_forcing_iso.datm7.Qian.T62.c080727/Solar6Hrly + $DIN_LOC_ROOT/atm/datm7/atm_forcing_iso.datm7.Qian.T62.c080727/Precip6Hrly + $DIN_LOC_ROOT/atm/datm7/atm_forcing_iso.datm7.Qian.T62.c080727/TmpPrsHumWnd3Hrly + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V4.c130305/Solar6Hrly + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V4.c130305/Precip6Hrly + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V4.c130305/TPHWL6Hrly + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V5.c140715/Solar6Hrly + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V5.c140715/Precip6Hrly + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.cruncep_qianFill.0.5d.V5.c140715/TPHWL6Hrly + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.GSWP3.0.5d.V1.c141016/Solar + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.GSWP3.0.5d.V1.c141016/Precip + $DIN_LOC_ROOT_CLMFORC/atm_forcing.datm7.GSWP3.0.5d.V1.c141016/TPHWL + $DIN_LOC_ROOT/atm/datm7/NYF + $DIN_LOC_ROOT/atm/datm7/CORE2 + $DIN_LOC_ROOT/ocn/iaf + $DIN_LOC_ROOT/wav/ww3 + $DIN_LOC_ROOT/atm/datm7/NLDAS + $DIN_LOC_ROOT/atm/datm7/CO2 + $DIN_LOC_ROOT/atm/datm7/bias_correction/precip/gpcp/qian + $DIN_LOC_ROOT/atm/datm7/clm_output/cruncep_precip_1deg/gpcp_1deg_bias_correction + $DIN_LOC_ROOT/atm/datm7/bias_correction/precip/cmap/cruncep + $DIN_LOC_ROOT/atm/datm7/anomaly_forcing + $DATM_CPLHIST_DIR + $DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero + $DIN_LOC_ROOT/atm/datm7/topo_forcing + + + + + char + streams + streams_file + Stream data file path(s). + + null + clm1pt-1993-12.nc + clm1pt-1992-08.nc + + clm1pt-0001-08.nc + clm1pt-0001-09.nc + clm1pt-0001-10.nc + clm1pt-0001-11.nc + clm1pt-0001-12.nc + clm1pt-0002-01.nc + clm1pt-0002-02.nc + clm1pt-0002-03.nc + clm1pt-0002-04.nc + clm1pt-0002-05.nc + clm1pt-0002-06.nc + clm1pt-0002-07.nc + clm1pt-0002-08.nc + clm1pt-0002-09.nc + clm1pt-0002-10.nc + clm1pt-0002-11.nc + + %ym.nc + $DATM_CPLHIST_CASE.cpl.ha2x3h.%ym.nc + $DATM_CPLHIST_CASE.cpl.ha2x3h.%ym.nc + $DATM_CPLHIST_CASE.cpl.ha2x3h.%ym.nc + $DATM_CPLHIST_CASE.cpl.ha2x1hi.%ym.nc + $DATM_CPLHIST_CASE.cpl.ha2x3h.%ym.nc + $DATM_CPLHIST_CASE.cpl.ha2x3h.%ym.nc + $DATM_CPLHIST_CASE.cpl.ha2x1h.%ym.nc + $DATM_CPLHIST_CASE.cpl.ha2x1d.%ym.nc + clmforc.Qian.c2006.T62.Solr.%ym.nc + clmforc.Qian.c2006.T62.Prec.%ym.nc + clmforc.Qian.c2006.T62.TPQW.%ym.nc + clmforc.Qian.c2006.T62.Solr.%ym.nc + clmforc.Qian.c2006.T62.Prec.%ym.nc + clmforc.Qian.c2006.T62.TPQW.%ym.nc + clmforc.cruncep.V4.c2011.0.5d.Solr.%ym.nc + clmforc.cruncep.V4.c2011.0.5d.Prec.%ym.nc + clmforc.cruncep.V4.c2011.0.5d.TPQWL.%ym.nc + clmforc.cruncep.V5.c2014.0.5d.Solr.%ym.nc + clmforc.cruncep.V5.c2014.0.5d.Prec.%ym.nc + clmforc.cruncep.V5.c2014.0.5d.TPQWL.%ym.nc + clmforc.GSWP3.c2011.0.5x0.5.Solr.%ym.nc + clmforc.GSWP3.c2011.0.5x0.5.Prec.%ym.nc + clmforc.GSWP3.c2011.0.5x0.5.TPQWL.%ym.nc + nyf.giss.T62.051007.nc + nyf.gxgxs.T62.051007.nc + nyf.ncep.T62.050923.nc + ncep.SOFS.2010.nc + ncep.SOFS.2010.nc + SOFS.daily.03-09.2010.nc + SOFS.daily.03-09.2010.nc + SOFS.daily.03-09.2010.nc + SOFS.daily.03-09.2010.nc + SOFS.6hour.03-09.2010.nc + SOFS.6hour.03-09.2010.nc + SOFS.6hour.03-09.2010.nc + SOFS.6hour.03-09.2010.nc + + gcgcs.prec.T62.1948.nc + gcgcs.prec.T62.1949.nc + gcgcs.prec.T62.1950.nc + gcgcs.prec.T62.1951.nc + gcgcs.prec.T62.1952.nc + gcgcs.prec.T62.1953.nc + gcgcs.prec.T62.1954.nc + gcgcs.prec.T62.1955.nc + gcgcs.prec.T62.1956.nc + gcgcs.prec.T62.1957.nc + gcgcs.prec.T62.1958.nc + gcgcs.prec.T62.1959.nc + gcgcs.prec.T62.1960.nc + gcgcs.prec.T62.1961.nc + gcgcs.prec.T62.1962.nc + gcgcs.prec.T62.1963.nc + gcgcs.prec.T62.1964.nc + gcgcs.prec.T62.1965.nc + gcgcs.prec.T62.1966.nc + gcgcs.prec.T62.1967.nc + gcgcs.prec.T62.1968.nc + gcgcs.prec.T62.1969.nc + gcgcs.prec.T62.1970.nc + gcgcs.prec.T62.1971.nc + gcgcs.prec.T62.1972.nc + gcgcs.prec.T62.1973.nc + gcgcs.prec.T62.1974.nc + gcgcs.prec.T62.1975.nc + gcgcs.prec.T62.1976.nc + gcgcs.prec.T62.1977.nc + gcgcs.prec.T62.1978.nc + gcgcs.prec.T62.1979.nc + gcgcs.prec.T62.1980.nc + gcgcs.prec.T62.1981.nc + gcgcs.prec.T62.1982.nc + gcgcs.prec.T62.1983.nc + gcgcs.prec.T62.1984.nc + gcgcs.prec.T62.1985.nc + gcgcs.prec.T62.1986.nc + gcgcs.prec.T62.1987.nc + gcgcs.prec.T62.1988.nc + gcgcs.prec.T62.1989.nc + gcgcs.prec.T62.1990.nc + gcgcs.prec.T62.1991.nc + gcgcs.prec.T62.1992.nc + gcgcs.prec.T62.1993.nc + gcgcs.prec.T62.1994.nc + gcgcs.prec.T62.1995.nc + gcgcs.prec.T62.1996.nc + gcgcs.prec.T62.1997.nc + gcgcs.prec.T62.1998.nc + gcgcs.prec.T62.1999.nc + gcgcs.prec.T62.2000.nc + gcgcs.prec.T62.2001.nc + gcgcs.prec.T62.2002.nc + gcgcs.prec.T62.2003.nc + gcgcs.prec.T62.2004.nc + gcgcs.prec.T62.2005.nc + gcgcs.prec.T62.2006.nc + gcgcs.prec.T62.2007.nc + gcgcs.prec.T62.2008.20120412.nc + gcgcs.prec.T62.2009.20120412.nc + + + giss.lwdn.T62.1948.nc + giss.lwdn.T62.1949.nc + giss.lwdn.T62.1950.nc + giss.lwdn.T62.1951.nc + giss.lwdn.T62.1952.nc + giss.lwdn.T62.1953.nc + giss.lwdn.T62.1954.nc + giss.lwdn.T62.1955.nc + giss.lwdn.T62.1956.nc + giss.lwdn.T62.1957.nc + giss.lwdn.T62.1958.nc + giss.lwdn.T62.1959.nc + giss.lwdn.T62.1960.nc + giss.lwdn.T62.1961.nc + giss.lwdn.T62.1962.nc + giss.lwdn.T62.1963.nc + giss.lwdn.T62.1964.nc + giss.lwdn.T62.1965.nc + giss.lwdn.T62.1966.nc + giss.lwdn.T62.1967.nc + giss.lwdn.T62.1968.nc + giss.lwdn.T62.1969.nc + giss.lwdn.T62.1970.nc + giss.lwdn.T62.1971.nc + giss.lwdn.T62.1972.nc + giss.lwdn.T62.1973.nc + giss.lwdn.T62.1974.nc + giss.lwdn.T62.1975.nc + giss.lwdn.T62.1976.nc + giss.lwdn.T62.1977.nc + giss.lwdn.T62.1978.nc + giss.lwdn.T62.1979.nc + giss.lwdn.T62.1980.nc + giss.lwdn.T62.1981.nc + giss.lwdn.T62.1982.nc + giss.lwdn.T62.1983.nc + giss.lwdn.T62.1984.nc + giss.lwdn.T62.1985.nc + giss.lwdn.T62.1986.nc + giss.lwdn.T62.1987.nc + giss.lwdn.T62.1988.nc + giss.lwdn.T62.1989.nc + giss.lwdn.T62.1990.nc + giss.lwdn.T62.1991.nc + giss.lwdn.T62.1992.nc + giss.lwdn.T62.1993.nc + giss.lwdn.T62.1994.nc + giss.lwdn.T62.1995.nc + giss.lwdn.T62.1996.nc + giss.lwdn.T62.1997.nc + giss.lwdn.T62.1998.nc + giss.lwdn.T62.1999.nc + giss.lwdn.T62.2000.nc + giss.lwdn.T62.2001.nc + giss.lwdn.T62.2002.nc + giss.lwdn.T62.2003.nc + giss.lwdn.T62.2004.nc + giss.lwdn.T62.2005.nc + giss.lwdn.T62.2006.nc + giss.lwdn.T62.2007.nc + giss.lwdn.T62.2008.20120412.nc + giss.lwdn.T62.2009.20120412.nc + + + giss.swdn.T62.1948.nc + giss.swdn.T62.1949.nc + giss.swdn.T62.1950.nc + giss.swdn.T62.1951.nc + giss.swdn.T62.1952.nc + giss.swdn.T62.1953.nc + giss.swdn.T62.1954.nc + giss.swdn.T62.1955.nc + giss.swdn.T62.1956.nc + giss.swdn.T62.1957.nc + giss.swdn.T62.1958.nc + giss.swdn.T62.1959.nc + giss.swdn.T62.1960.nc + giss.swdn.T62.1961.nc + giss.swdn.T62.1962.nc + giss.swdn.T62.1963.nc + giss.swdn.T62.1964.nc + giss.swdn.T62.1965.nc + giss.swdn.T62.1966.nc + giss.swdn.T62.1967.nc + giss.swdn.T62.1968.nc + giss.swdn.T62.1969.nc + giss.swdn.T62.1970.nc + giss.swdn.T62.1971.nc + giss.swdn.T62.1972.nc + giss.swdn.T62.1973.nc + giss.swdn.T62.1974.nc + giss.swdn.T62.1975.nc + giss.swdn.T62.1976.nc + giss.swdn.T62.1977.nc + giss.swdn.T62.1978.nc + giss.swdn.T62.1979.nc + giss.swdn.T62.1980.nc + giss.swdn.T62.1981.nc + giss.swdn.T62.1982.nc + giss.swdn.T62.1983.nc + giss.swdn.T62.1984.nc + giss.swdn.T62.1985.nc + giss.swdn.T62.1986.nc + giss.swdn.T62.1987.nc + giss.swdn.T62.1988.nc + giss.swdn.T62.1989.nc + giss.swdn.T62.1990.nc + giss.swdn.T62.1991.nc + giss.swdn.T62.1992.nc + giss.swdn.T62.1993.nc + giss.swdn.T62.1994.nc + giss.swdn.T62.1995.nc + giss.swdn.T62.1996.nc + giss.swdn.T62.1997.nc + giss.swdn.T62.1998.nc + giss.swdn.T62.1999.nc + giss.swdn.T62.2000.nc + giss.swdn.T62.2001.nc + giss.swdn.T62.2002.nc + giss.swdn.T62.2003.nc + giss.swdn.T62.2004.nc + giss.swdn.T62.2005.nc + giss.swdn.T62.2006.nc + giss.swdn.T62.2007.nc + giss.swdn.T62.2008.20120412.nc + giss.swdn.T62.2009.20120412.nc + + + giss.swup.T62.1948.nc + giss.swup.T62.1949.nc + giss.swup.T62.1950.nc + giss.swup.T62.1951.nc + giss.swup.T62.1952.nc + giss.swup.T62.1953.nc + giss.swup.T62.1954.nc + giss.swup.T62.1955.nc + giss.swup.T62.1956.nc + giss.swup.T62.1957.nc + giss.swup.T62.1958.nc + giss.swup.T62.1959.nc + giss.swup.T62.1960.nc + giss.swup.T62.1961.nc + giss.swup.T62.1962.nc + giss.swup.T62.1963.nc + giss.swup.T62.1964.nc + giss.swup.T62.1965.nc + giss.swup.T62.1966.nc + giss.swup.T62.1967.nc + giss.swup.T62.1968.nc + giss.swup.T62.1969.nc + giss.swup.T62.1970.nc + giss.swup.T62.1971.nc + giss.swup.T62.1972.nc + giss.swup.T62.1973.nc + giss.swup.T62.1974.nc + giss.swup.T62.1975.nc + giss.swup.T62.1976.nc + giss.swup.T62.1977.nc + giss.swup.T62.1978.nc + giss.swup.T62.1979.nc + giss.swup.T62.1980.nc + giss.swup.T62.1981.nc + giss.swup.T62.1982.nc + giss.swup.T62.1983.nc + giss.swup.T62.1984.nc + giss.swup.T62.1985.nc + giss.swup.T62.1986.nc + giss.swup.T62.1987.nc + giss.swup.T62.1988.nc + giss.swup.T62.1989.nc + giss.swup.T62.1990.nc + giss.swup.T62.1991.nc + giss.swup.T62.1992.nc + giss.swup.T62.1993.nc + giss.swup.T62.1994.nc + giss.swup.T62.1995.nc + giss.swup.T62.1996.nc + giss.swup.T62.1997.nc + giss.swup.T62.1998.nc + giss.swup.T62.1999.nc + giss.swup.T62.2000.nc + giss.swup.T62.2001.nc + giss.swup.T62.2002.nc + giss.swup.T62.2003.nc + giss.swup.T62.2004.nc + giss.swup.T62.2005.nc + giss.swup.T62.2006.nc + giss.swup.T62.2007.nc + giss.swup.T62.2008.20120412.nc + giss.swup.T62.2009.20120412.nc + + + ncep.dn10.T62.1948.nc + ncep.dn10.T62.1949.nc + ncep.dn10.T62.1950.nc + ncep.dn10.T62.1951.nc + ncep.dn10.T62.1952.nc + ncep.dn10.T62.1953.nc + ncep.dn10.T62.1954.nc + ncep.dn10.T62.1955.nc + ncep.dn10.T62.1956.nc + ncep.dn10.T62.1957.nc + ncep.dn10.T62.1958.nc + ncep.dn10.T62.1959.nc + ncep.dn10.T62.1960.nc + ncep.dn10.T62.1961.nc + ncep.dn10.T62.1962.nc + ncep.dn10.T62.1963.nc + ncep.dn10.T62.1964.nc + ncep.dn10.T62.1965.nc + ncep.dn10.T62.1966.nc + ncep.dn10.T62.1967.nc + ncep.dn10.T62.1968.nc + ncep.dn10.T62.1969.nc + ncep.dn10.T62.1970.nc + ncep.dn10.T62.1971.nc + ncep.dn10.T62.1972.nc + ncep.dn10.T62.1973.nc + ncep.dn10.T62.1974.nc + ncep.dn10.T62.1975.nc + ncep.dn10.T62.1976.nc + ncep.dn10.T62.1977.nc + ncep.dn10.T62.1978.nc + ncep.dn10.T62.1979.nc + ncep.dn10.T62.1980.nc + ncep.dn10.T62.1981.nc + ncep.dn10.T62.1982.nc + ncep.dn10.T62.1983.nc + ncep.dn10.T62.1984.nc + ncep.dn10.T62.1985.nc + ncep.dn10.T62.1986.nc + ncep.dn10.T62.1987.nc + ncep.dn10.T62.1988.nc + ncep.dn10.T62.1989.nc + ncep.dn10.T62.1990.nc + ncep.dn10.T62.1991.nc + ncep.dn10.T62.1992.nc + ncep.dn10.T62.1993.nc + ncep.dn10.T62.1994.nc + ncep.dn10.T62.1995.nc + ncep.dn10.T62.1996.nc + ncep.dn10.T62.1997.nc + ncep.dn10.T62.1998.nc + ncep.dn10.T62.1999.nc + ncep.dn10.T62.2000.nc + ncep.dn10.T62.2001.nc + ncep.dn10.T62.2002.nc + ncep.dn10.T62.2003.nc + ncep.dn10.T62.2004.nc + ncep.dn10.T62.2005.20120414.nc + ncep.dn10.T62.2006.nc + ncep.dn10.T62.2007.nc + ncep.dn10.T62.2008.20120412.nc + ncep.dn10.T62.2009.20120412.nc + + + ncep.q_10.T62.1948.nc + ncep.q_10.T62.1949.nc + ncep.q_10.T62.1950.nc + ncep.q_10.T62.1951.nc + ncep.q_10.T62.1952.nc + ncep.q_10.T62.1953.nc + ncep.q_10.T62.1954.nc + ncep.q_10.T62.1955.nc + ncep.q_10.T62.1956.nc + ncep.q_10.T62.1957.nc + ncep.q_10.T62.1958.nc + ncep.q_10.T62.1959.nc + ncep.q_10.T62.1960.nc + ncep.q_10.T62.1961.nc + ncep.q_10.T62.1962.nc + ncep.q_10.T62.1963.nc + ncep.q_10.T62.1964.nc + ncep.q_10.T62.1965.nc + ncep.q_10.T62.1966.nc + ncep.q_10.T62.1967.nc + ncep.q_10.T62.1968.nc + ncep.q_10.T62.1969.nc + ncep.q_10.T62.1970.nc + ncep.q_10.T62.1971.nc + ncep.q_10.T62.1972.nc + ncep.q_10.T62.1973.nc + ncep.q_10.T62.1974.nc + ncep.q_10.T62.1975.nc + ncep.q_10.T62.1976.nc + ncep.q_10.T62.1977.nc + ncep.q_10.T62.1978.nc + ncep.q_10.T62.1979.nc + ncep.q_10.T62.1980.nc + ncep.q_10.T62.1981.nc + ncep.q_10.T62.1982.nc + ncep.q_10.T62.1983.nc + ncep.q_10.T62.1984.nc + ncep.q_10.T62.1985.nc + ncep.q_10.T62.1986.nc + ncep.q_10.T62.1987.nc + ncep.q_10.T62.1988.nc + ncep.q_10.T62.1989.nc + ncep.q_10.T62.1990.nc + ncep.q_10.T62.1991.nc + ncep.q_10.T62.1992.nc + ncep.q_10.T62.1993.nc + ncep.q_10.T62.1994.nc + ncep.q_10.T62.1995.nc + ncep.q_10.T62.1996.nc + ncep.q_10.T62.1997.nc + ncep.q_10.T62.1998.nc + ncep.q_10.T62.1999.nc + ncep.q_10.T62.2000.nc + ncep.q_10.T62.2001.nc + ncep.q_10.T62.2002.nc + ncep.q_10.T62.2003.nc + ncep.q_10.T62.2004.nc + ncep.q_10.T62.2005.20120414.nc + ncep.q_10.T62.2006.nc + ncep.q_10.T62.2007.nc + ncep.q_10.T62.2008.20120412.nc + ncep.q_10.T62.2009.20120412.nc + + + ncep.slp_.T62.1948.nc + ncep.slp_.T62.1949.nc + ncep.slp_.T62.1950.nc + ncep.slp_.T62.1951.nc + ncep.slp_.T62.1952.nc + ncep.slp_.T62.1953.nc + ncep.slp_.T62.1954.nc + ncep.slp_.T62.1955.nc + ncep.slp_.T62.1956.nc + ncep.slp_.T62.1957.nc + ncep.slp_.T62.1958.nc + ncep.slp_.T62.1959.nc + ncep.slp_.T62.1960.nc + ncep.slp_.T62.1961.nc + ncep.slp_.T62.1962.nc + ncep.slp_.T62.1963.nc + ncep.slp_.T62.1964.nc + ncep.slp_.T62.1965.nc + ncep.slp_.T62.1966.nc + ncep.slp_.T62.1967.nc + ncep.slp_.T62.1968.nc + ncep.slp_.T62.1969.nc + ncep.slp_.T62.1970.nc + ncep.slp_.T62.1971.nc + ncep.slp_.T62.1972.nc + ncep.slp_.T62.1973.nc + ncep.slp_.T62.1974.nc + ncep.slp_.T62.1975.nc + ncep.slp_.T62.1976.nc + ncep.slp_.T62.1977.nc + ncep.slp_.T62.1978.nc + ncep.slp_.T62.1979.nc + ncep.slp_.T62.1980.nc + ncep.slp_.T62.1981.nc + ncep.slp_.T62.1982.nc + ncep.slp_.T62.1983.nc + ncep.slp_.T62.1984.nc + ncep.slp_.T62.1985.nc + ncep.slp_.T62.1986.nc + ncep.slp_.T62.1987.nc + ncep.slp_.T62.1988.nc + ncep.slp_.T62.1989.nc + ncep.slp_.T62.1990.nc + ncep.slp_.T62.1991.nc + ncep.slp_.T62.1992.nc + ncep.slp_.T62.1993.nc + ncep.slp_.T62.1994.nc + ncep.slp_.T62.1995.nc + ncep.slp_.T62.1996.nc + ncep.slp_.T62.1997.nc + ncep.slp_.T62.1998.nc + ncep.slp_.T62.1999.nc + ncep.slp_.T62.2000.nc + ncep.slp_.T62.2001.nc + ncep.slp_.T62.2002.nc + ncep.slp_.T62.2003.nc + ncep.slp_.T62.2004.nc + ncep.slp_.T62.2005.20120414.nc + ncep.slp_.T62.2006.nc + ncep.slp_.T62.2007.nc + ncep.slp_.T62.2008.20120412.nc + ncep.slp_.T62.2009.20120412.nc + + + ncep.t_10.T62.1948.nc + ncep.t_10.T62.1949.nc + ncep.t_10.T62.1950.nc + ncep.t_10.T62.1951.nc + ncep.t_10.T62.1952.nc + ncep.t_10.T62.1953.nc + ncep.t_10.T62.1954.nc + ncep.t_10.T62.1955.nc + ncep.t_10.T62.1956.nc + ncep.t_10.T62.1957.nc + ncep.t_10.T62.1958.nc + ncep.t_10.T62.1959.nc + ncep.t_10.T62.1960.nc + ncep.t_10.T62.1961.nc + ncep.t_10.T62.1962.nc + ncep.t_10.T62.1963.nc + ncep.t_10.T62.1964.nc + ncep.t_10.T62.1965.nc + ncep.t_10.T62.1966.nc + ncep.t_10.T62.1967.nc + ncep.t_10.T62.1968.nc + ncep.t_10.T62.1969.nc + ncep.t_10.T62.1970.nc + ncep.t_10.T62.1971.nc + ncep.t_10.T62.1972.nc + ncep.t_10.T62.1973.nc + ncep.t_10.T62.1974.nc + ncep.t_10.T62.1975.nc + ncep.t_10.T62.1976.nc + ncep.t_10.T62.1977.nc + ncep.t_10.T62.1978.nc + ncep.t_10.T62.1979.nc + ncep.t_10.T62.1980.nc + ncep.t_10.T62.1981.nc + ncep.t_10.T62.1982.nc + ncep.t_10.T62.1983.nc + ncep.t_10.T62.1984.nc + ncep.t_10.T62.1985.nc + ncep.t_10.T62.1986.nc + ncep.t_10.T62.1987.nc + ncep.t_10.T62.1988.nc + ncep.t_10.T62.1989.nc + ncep.t_10.T62.1990.nc + ncep.t_10.T62.1991.nc + ncep.t_10.T62.1992.nc + ncep.t_10.T62.1993.nc + ncep.t_10.T62.1994.nc + ncep.t_10.T62.1995.nc + ncep.t_10.T62.1996.nc + ncep.t_10.T62.1997.nc + ncep.t_10.T62.1998.nc + ncep.t_10.T62.1999.nc + ncep.t_10.T62.2000.nc + ncep.t_10.T62.2001.nc + ncep.t_10.T62.2002.nc + ncep.t_10.T62.2003.nc + ncep.t_10.T62.2004.nc + ncep.t_10.T62.2005.20120414.nc + ncep.t_10.T62.2006.nc + ncep.t_10.T62.2007.nc + ncep.t_10.T62.2008.20120412.nc + ncep.t_10.T62.2009.20120412.nc + + + ncep.u_10.T62.1948.nc + ncep.u_10.T62.1949.nc + ncep.u_10.T62.1950.nc + ncep.u_10.T62.1951.nc + ncep.u_10.T62.1952.nc + ncep.u_10.T62.1953.nc + ncep.u_10.T62.1954.nc + ncep.u_10.T62.1955.nc + ncep.u_10.T62.1956.nc + ncep.u_10.T62.1957.nc + ncep.u_10.T62.1958.nc + ncep.u_10.T62.1959.nc + ncep.u_10.T62.1960.nc + ncep.u_10.T62.1961.nc + ncep.u_10.T62.1962.nc + ncep.u_10.T62.1963.nc + ncep.u_10.T62.1964.nc + ncep.u_10.T62.1965.nc + ncep.u_10.T62.1966.nc + ncep.u_10.T62.1967.nc + ncep.u_10.T62.1968.nc + ncep.u_10.T62.1969.nc + ncep.u_10.T62.1970.nc + ncep.u_10.T62.1971.nc + ncep.u_10.T62.1972.nc + ncep.u_10.T62.1973.nc + ncep.u_10.T62.1974.nc + ncep.u_10.T62.1975.nc + ncep.u_10.T62.1976.nc + ncep.u_10.T62.1977.nc + ncep.u_10.T62.1978.nc + ncep.u_10.T62.1979.nc + ncep.u_10.T62.1980.nc + ncep.u_10.T62.1981.nc + ncep.u_10.T62.1982.nc + ncep.u_10.T62.1983.nc + ncep.u_10.T62.1984.nc + ncep.u_10.T62.1985.nc + ncep.u_10.T62.1986.nc + ncep.u_10.T62.1987.nc + ncep.u_10.T62.1988.nc + ncep.u_10.T62.1989.nc + ncep.u_10.T62.1990.nc + ncep.u_10.T62.1991.nc + ncep.u_10.T62.1992.nc + ncep.u_10.T62.1993.nc + ncep.u_10.T62.1994.nc + ncep.u_10.T62.1995.nc + ncep.u_10.T62.1996.nc + ncep.u_10.T62.1997.nc + ncep.u_10.T62.1998.nc + ncep.u_10.T62.1999.nc + ncep.u_10.T62.2000.nc + ncep.u_10.T62.2001.nc + ncep.u_10.T62.2002.nc + ncep.u_10.T62.2003.nc + ncep.u_10.T62.2004.nc + ncep.u_10.T62.2005.20120414.nc + ncep.u_10.T62.2006.nc + ncep.u_10.T62.2007.nc + ncep.u_10.T62.2008.20120412.nc + ncep.u_10.T62.2009.20120412.nc + + + ncep.v_10.T62.1948.nc + ncep.v_10.T62.1949.nc + ncep.v_10.T62.1950.nc + ncep.v_10.T62.1951.nc + ncep.v_10.T62.1952.nc + ncep.v_10.T62.1953.nc + ncep.v_10.T62.1954.nc + ncep.v_10.T62.1955.nc + ncep.v_10.T62.1956.nc + ncep.v_10.T62.1957.nc + ncep.v_10.T62.1958.nc + ncep.v_10.T62.1959.nc + ncep.v_10.T62.1960.nc + ncep.v_10.T62.1961.nc + ncep.v_10.T62.1962.nc + ncep.v_10.T62.1963.nc + ncep.v_10.T62.1964.nc + ncep.v_10.T62.1965.nc + ncep.v_10.T62.1966.nc + ncep.v_10.T62.1967.nc + ncep.v_10.T62.1968.nc + ncep.v_10.T62.1969.nc + ncep.v_10.T62.1970.nc + ncep.v_10.T62.1971.nc + ncep.v_10.T62.1972.nc + ncep.v_10.T62.1973.nc + ncep.v_10.T62.1974.nc + ncep.v_10.T62.1975.nc + ncep.v_10.T62.1976.nc + ncep.v_10.T62.1977.nc + ncep.v_10.T62.1978.nc + ncep.v_10.T62.1979.nc + ncep.v_10.T62.1980.nc + ncep.v_10.T62.1981.nc + ncep.v_10.T62.1982.nc + ncep.v_10.T62.1983.nc + ncep.v_10.T62.1984.nc + ncep.v_10.T62.1985.nc + ncep.v_10.T62.1986.nc + ncep.v_10.T62.1987.nc + ncep.v_10.T62.1988.nc + ncep.v_10.T62.1989.nc + ncep.v_10.T62.1990.nc + ncep.v_10.T62.1991.nc + ncep.v_10.T62.1992.nc + ncep.v_10.T62.1993.nc + ncep.v_10.T62.1994.nc + ncep.v_10.T62.1995.nc + ncep.v_10.T62.1996.nc + ncep.v_10.T62.1997.nc + ncep.v_10.T62.1998.nc + ncep.v_10.T62.1999.nc + ncep.v_10.T62.2000.nc + ncep.v_10.T62.2001.nc + ncep.v_10.T62.2002.nc + ncep.v_10.T62.2003.nc + ncep.v_10.T62.2004.nc + ncep.v_10.T62.2005.20120414.nc + ncep.v_10.T62.2006.nc + ncep.v_10.T62.2007.nc + ncep.v_10.T62.2008.20120412.nc + ncep.v_10.T62.2009.20120412.nc + + CORE2.t_10.ArcFactor.T62.1997-2004.nc + core2_G4_wns_30min_20000601_to_05.nc + + clmforc.nldas.1980-01.nc + clmforc.nldas.1980-02.nc + clmforc.nldas.1980-03.nc + clmforc.nldas.1980-04.nc + clmforc.nldas.1980-05.nc + clmforc.nldas.1980-06.nc + clmforc.nldas.1980-07.nc + clmforc.nldas.1980-08.nc + clmforc.nldas.1980-09.nc + clmforc.nldas.1980-10.nc + clmforc.nldas.1980-11.nc + clmforc.nldas.1980-12.nc + + fco2_datm_1765-2007_c100614.nc + fco2_datm_rcp2.6_1765-2500_c130312.nc + fco2_datm_rcp4.5_1765-2500_c130312.nc + fco2_datm_rcp6.0_1765-2500_c130312.nc + fco2_datm_rcp8.5_1765-2500_c110919.nc + bias_correction.Prec.%y.nc + bias_correction.Prec.%y.nc + bias_correction.Prec.%y.nc + af.pr.ccsm4.rcp45.2006-2300.nc + af.tas.ccsm4.rcp45.2006-2300.nc + af.ps.ccsm4.rcp45.2006-2300.nc + af.huss.ccsm4.rcp45.2006-2300.nc + af.uas.ccsm4.rcp45.2006-2300.nc + af.vas.ccsm4.rcp45.2006-2300.nc + af.rsds.ccsm4.rcp45.2006-2300.nc + af.rlds.ccsm4.rcp45.2006-2300.nc + + + aerosoldep_monthly_1850_mean_1.9x2.5_c090421.nc + aerosoldep_monthly_2000_mean_1.9x2.5_c090421.nc + aerosoldep_monthly_1849-2006_1.9x2.5_c090803.nc + aerosoldep_rcp2.6_monthly_1849-2104_1.9x2.5_c100402.nc + aerosoldep_rcp2.6_monthly_1849-2104_${CLM_USRDAT_NAME}.nc + aerosoldep_rcp4.5_monthly_1849-2104_1.9x2.5_c100402.nc + aerosoldep_rcp4.5_monthly_1849-2104_${CLM_USRDAT_NAME}.nc + aerosoldep_rcp6.0_monthly_1849-2104_1.9x2.5_c100830.nc + aerosoldep_rcp6_monthly_1849-2104_${CLM_USRDAT_NAME}.nc + aerosoldep_rcp8.5_monthly_1849-2104_1.9x2.5_c100201.nc + topodata_0.9x1.25_USGS_070110_stream_c151201.nc + + + + + char + streams + streams_file + Stream data variable name(s). + + null + + ZBOT z + TBOT tbot + RH rh + WIND wind + PRECTmms precn + FSDS swdn + FSDSdir swdndr + FSDSdif swdndf + PSRF pbot + FLDS lwdn + + + ZBOT z + TBOT tbot + RH rh + WIND wind + PRECTmms precn + FSDS swdn + FSDSdir swdndr + FSDSdif swdndf + PSRF pbot + FLDS lwdn + + + ZBOT z + TBOT tbot + QBOT shum + WIND wind + PRECTmms precn + FSDS swdn + FSDSdir swdndr + FSDSdif swdndf + PSRF pbot + FLDS lwdn + + + ZBOT z + TBOT tbot + RH rh + WIND wind + PRECTmms precn + FSDS swdn + PSRF pbot + FLDS lwdn + + + a2x3h_Faxa_swndr swndr + a2x3h_Faxa_swvdr swvdr + a2x3h_Faxa_swndf swndf + a2x3h_Faxa_swvdf swvdf + + + a2x3h_Faxa_rainc rainc + a2x3h_Faxa_rainl rainl + a2x3h_Faxa_snowc snowc + a2x3h_Faxa_snowl snowl + + + a2x3h_Sa_z z + a2x3h_Sa_u u + a2x3h_Sa_v v + a2x3h_Sa_tbot tbot + a2x3h_Sa_ptem ptem + a2x3h_Sa_shum shum + a2x3h_Sa_pbot pbot + a2x3h_Faxa_lwdn lwdn + a2x3h_Sa_dens dens + a2x3h_Sa_pslv pslv + + + a2x1hi_Faxa_swndr swndr + a2x1hi_Faxa_swvdr swvdr + a2x1hi_Faxa_swndf swndf + a2x1hi_Faxa_swvdf swvdf + + + a2x3h_Faxa_rainc rainc + a2x3h_Faxa_rainl rainl + a2x3h_Faxa_snowc snowc + a2x3h_Faxa_snowl snowl + a2x3h_Faxa_lwdn lwdn + + + a2x3h_Sa_z z + a2x3h_Sa_tbot tbot + a2x3h_Sa_ptem ptem + a2x3h_Sa_shum shum + a2x3h_Sa_pbot pbot + a2x3h_Sa_dens dens + a2x3h_Sa_pslv pslv + a2x3h_Sa_co2diag co2diag + a2x3h_Sa_co2prog co2prog + + + a2x1h_Sa_u u + a2x1h_Sa_v v + + + FSDS swdn + + + PRECTmms precn + + + TBOT tbot + WIND wind + QBOT shum + PSRF pbot + + + FSDS swdn + + + PRECTmms precn + + + TBOT tbot + WIND wind + QBOT shum + PSRF pbot + + + FSDS swdn + + + PRECTmms precn + + + TBOT tbot + WIND wind + QBOT shum + PSRF pbot + + + FSDS swdn + + + PRECTmms precn + + + TBOT tbot + WIND wind + QBOT shum + PSRF pbot + + + FSDS swdn + + + PRECTmms precn + + + TBOT tbot + WIND wind + QBOT shum + PSRF pbot + FLDS lwdn + + + lwdn lwdn + swdn swdn + swup swup + + + prc prec + + + dn10 dens + slp_ pslv + q_10 shum + t_10 tbot + u_10 u + v_10 v + + + dn10 dens + + + slp_ pslv + + + prec prec + + + lwdn lwdn + + + swdn swdn + + + swup swup + + + q3_5 shum + + + t3_5 tbot + + + u3_5 u + + + v3_5 v + + + prc prec + + + lwdn lwdn + + + swdn swdn + + + swup swup + + + dn10 dens + + + q_10 shum + + + slp_ pslv + + + t_10 tbot + + + u_10 u + + + v_10 v + + + TarcFactor tarcf + + + uWind u + vWind v + airSeaTempDiff tbot + + + TBOT tbot + WIND wind + QBOT shum + PSRF pbot + FLDS lwdn + PRECTmms precn + FSDS swdn + + + CO2 co2diag + + + CO2 co2diag + + + CO2 co2diag + + + CO2 co2diag + + + CO2 co2diag + + + BC_PREC precsf + + + BC_PREC precsf + + + BC_PREC precsf + + + pr prec_af + + + tas tbot_af + + + ps pbot_af + + + huss shum_af + + + uas u_af + + + vas v_af + + + rsds swdn_af + + + rlds lwdn_af + + + a2x1d_Faxa_bcphiwet bcphiwet + a2x1d_Faxa_bcphodry bcphodry + a2x1d_Faxa_bcphidry bcphidry + a2x1d_Faxa_ocphiwet ocphiwet + a2x1d_Faxa_ocphidry ocphidry + a2x1d_Faxa_ocphodry ocphodry + a2x1d_Faxa_dstwet1 dstwet1 + a2x1d_Faxa_dstdry1 dstdry1 + a2x1d_Faxa_dstwet2 dstwet2 + a2x1d_Faxa_dstdry2 dstdry2 + a2x1d_Faxa_dstwet3 dstwet3 + a2x1d_Faxa_dstdry3 dstdry3 + a2x1d_Faxa_dstwet4 dstwet4 + a2x1d_Faxa_dstdry4 dstdry4 + + + BCDEPWET bcphiwet + BCPHODRY bcphodry + BCPHIDRY bcphidry + OCDEPWET ocphiwet + OCPHIDRY ocphidry + OCPHODRY ocphodry + DSTX01WD dstwet1 + DSTX01DD dstdry1 + DSTX02WD dstwet2 + DSTX02DD dstdry2 + DSTX03WD dstwet3 + DSTX03DD dstdry3 + DSTX04WD dstwet4 + DSTX04DD dstdry4 + + + TOPO topo + + + + + + integer + streams + streams_file + Simulation year to align stream to. + + -999 + $DATM_CLMNCEP_YR_ALIGN + $DATM_CPLHIST_YR_ALIGN + $DATM_CPLHIST_YR_ALIGN + $DATM_CLMNCEP_YR_ALIGN + $DATM_CLMNCEP_YR_ALIGN + $DATM_CLMNCEP_YR_ALIGN + 1 + 1 + 1 + 2000 + 1980 + 1850 + 2005 + 1979 + 1979 + 1979 + 2006 + $DATM_CPLHIST_YR_ALIGN + 1 + 1849 + 1849 + 1 + + + + + integer + streams + streams_file + First year of stream. + + -999 + 1993 + 1992 + 0001 + $DATM_CLMNCEP_YR_START + $DATM_CPLHIST_YR_START + $DATM_CPLHIST_YR_START + 2000 + $DATM_CLMNCEP_YR_START + $DATM_CLMNCEP_YR_START + $DATM_CLMNCEP_YR_START + 1 + 2010 + 2010 + 2010 + 2010 + 2010 + 2010 + 2010 + 2010 + 2010 + 2010 + 1948 + 1948 + 1948 + 1948 + 1948 + 1948 + 1948 + 1948 + 1948 + 1948 + 1948 + 2000 + 1980 + 1850 + 2005 + 1979 + 1979 + 2006 + $DATM_CPLHIST_YR_START + 1 + 1849 + 1849 + 1 + + + + + integer + streams + streams_file + Last year of stream. + + -999 + 1993 + 1992 + 0002 + $DATM_CLMNCEP_YR_END + $DATM_CPLHIST_YR_END + $DATM_CPLHIST_YR_END + 2004 + $DATM_CLMNCEP_YR_END + $DATM_CLMNCEP_YR_END + $DATM_CLMNCEP_YR_END + 1 + 2011 + 2011 + 2011 + 2011 + 2011 + 2011 + 2011 + 2011 + 2011 + 2011 + 2009 + 2009 + 2009 + 2009 + 2009 + 2009 + 2009 + 2009 + 2009 + 2009 + 2009 + 2000 + 1980 + 2007 + 2500 + 2004 + 2012 + 2010 + 2300 + $DATM_CPLHIST_YR_END + 1 + 2006 + 2104 + 1 + + + + + integer + streams + streams_file + Stream offset. + + 0 + -10800 + -5400 + -5400 + 2700 + 900 + 900 + 900 + 0 + + + + + + + + + + + + + char + streams + shr_strdata_nml + CLMNCEP,COPYALL,CPLHIST,CORE2_NYF,CORE2_IAF,NULL + + general method that operates on the data. this is generally + implemented in the data models but is set in the strdata method for + convenience. valid options are dependent on the data model and will + be described elsewhere. NULL is always a valid option and means no + data will be generated. default='NULL' + + datamode = "NULL" + turns off the data model as a provider of data to the coupler. + The atm_present flag will be set to false + and the coupler will assume no exchange of data to or from the data model. + datamode = "COPYALL" + The default science mode of the data model is the COPYALL mode. + COPYALL mode will examine the fields found in all input data streams, + if any input field names match the field names used internally, they + are copied into the export array and passed directly to the coupler + without any special user code. Any required fields not found on an + input stream will be set to zero except for aerosol deposition fields + which will be set to a special value. There are several other + scientific modes supported by the model, they are listed below. The + mode is selected by a character string set in the strdata namelist + variable dataMode. + datamode = "CPLHIST" + The same as COPYALL mode. + datamode = "CORE2_NYF" + Coordinated Ocean-ice Reference Experiments (CORE) Version 2 Normal Year Forcing. + datamode = "CORE2_IAF" + In conjunction with with CORE Version 2 atmospheric forcing data, + provides the atmosphere forcing favored by the Ocean Model Working + Group when coupling an active ocean model with observed atmospheric + forcing. This mode and associated data sets implement the CORE-IAF + Version 2 forcing data, as developed by Large and Yeager (2008) at + NCAR. See the documentation for CORE version 2 datasets at + http://data1.gfdl.noaa.gov/nomads/forms/mom4/COREv2.html Also see + W.G.Large, S.G.Yeager (2008), The global climatology of an + interannually varying air-sea flux data set. + Clm Dyn doi 10.1007/s00382-008-0441-3. + datamode = "CLMNCEP" + In conjunction with NCEP climatological atmosphere data, provides the + atmosphere forcing favored by the Land Model Working Group when + coupling an active land model with observed atmospheric forcing. This + mode replicates code previously found in CLM (circa 2005), before the + LMWG started using the CCSM flux coupler and data models to do + active-land-only simulations. + + + NULL + CLMNCEP + CPLHIST + CORE2_NYF + CORE2_IAF + COPYALL + CLMNCEP + CPLHIST + + + + + char + streams + abs + shr_strdata_nml + + model spatial gridfile associated with the strdata. grid information will + be read from this file and that grid will serve as the target grid + for all input data for this strdata input. + + + + + + + + char(30) + streams + shr_strdata_nml + copy,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are just copy (ie. no fill), special value, + nearest neighbor, nearest neighbor in "i" direction, or nearest + neighbor in "j" direction. + valid values: 'copy','spval','nn','nnoni','nnonj' + + + nn + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + plays no role is fill algorithm at the present time. + valid values: "nomask,srcmask,dstmask,bothmask" + + + nomask + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read in instead of computing the + weights on the fly for the fill operation. if this is set, fillalgo + and fillmask are ignored. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the fill operation. this allows a user to + save and reuse a set of weights later. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + array (up to 30 elements) of masking algorithms for mapping input data + associated with the array of streams. valid options are map only from + valid src points, map only to valid destination points, ignore all + masks, map only from valid src points to valid destination points. + valid values: srcmask, dstmask, nomask,bothmask + + + nomask + + + + + char(30) + streams + shr_strdata_nml + copy,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are copy by index, set to special value, + nearest neighbor, nearest neighbor in "i" direction, nearest neighbor + in "j" direction, or bilinear. + valid values: copy,spval,nn,nnoni,nnonj,bilinear + + + bilinear + nn + copy + copy + nn + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read instead of computing + weights on the fly for the mapping (interpolation) operation. if this + is set, mapalgo and mapmask are ignored. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the mapping (interpolation) operation. this + allows a user to save and reuse a set of weights later. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + coszen,nearest,linear,lower,upper + + array (up to 30 elements) of time interpolation options associated with the array of + streams. + valid values: lower,upper,nearest,linear,coszen + lower = Use lower time-value + upper = Use upper time-value + nearest = Use the nearest time-value + linear = Linearly interpolate between the two time-values + coszen = Scale according to the cosine of the solar zenith angle (for solar) + + + linear + nearest + nearest + nearest + nearest + coszen + nearest + nearest + nearest + linear + linear + nearest + coszen + nearest + coszen + nearest + coszen + nearest + coszen + nearest + coszen + nearest + nearest + nearest + nearest + nearest + nearest + nearest + nearest + nearest + nearest + nearest + + lower + + + + + char(30) + streams + shr_strdata_nml + extend,cycle,limit + + array of time axis modes associated with the array of streams for + handling data outside the specified stream time axis. + valid options are to cycle the data based on the first, last, and + align settings associated with the stream dataset, to extend the first + and last valid value indefinitely, or to limit the interpolated data + to fall only between the least and greatest valid value of the time array. + valid values: cycle,extend,limit + + + cycle + extend + extend + extend + cycle + + + + + real(30) + streams + shr_strdata_nml + + array (up to 30 elements) of delta time ratio limits placed on the + time interpolation associated with the array of streams. this real + value causes the model to stop if the ratio of the running maximum + delta time divided by the minimum delta time is greater than the + dtlimit for that stream. for instance, with daily data, the delta + time should be exactly one day throughout the dataset and the computed + maximum divided by minimum delta time should always be 1.0. for + monthly data, the delta time should be between 28 and 31 days and the + maximum ratio should be about 1.1. the running value of the delta + time is computed as data is read and any wraparound or cycling is also + included. this input helps trap missing data or errors in cycling. + to turn off trapping, set the value to 1.0e30 or something similar. + + + 1.5 + 1.e30 + 2.0 + 2.0 + 2.0 + 2.0 + 2.0 + + + + + char + streams + shr_strdata_nml + + list of paired colon delimited field names that should be treated as + vectors when carrying out spatial interpolation. unlike other + character arrays in this namelist, this array is completely decoupled + from the list of streams. this is a list of vector pairs that span + all input streams where different fields of the vector pair could + appear in different streams. + for example, vectors = 'u:v','taux:tauy'. + + + null + null + u:v + u:v + u:v + u:v + null + + + + + char(30) + streams + shr_strdata_nml + + character array (up to 30 elements) of stream input files. this + string is actually parsed by a stream method and so the format is + specified by the stream module. this string consists of a + "stream_input_filename year_align year_first year_last". the + stream_input_filename is a stream text input file and the format and + options are described elsewhere. year_align, year_first, and + year_last provide information about the time axis of the file and how + to relate the input time axis to the model time axis. + + + + + + + + + + + + + char + datm + datm_nml + BC.QIAN.CMAP.Precip,BC.QIAN.GPCP.Precip,BC.CRUNCEP.CMAP.Precip,BC.CRUNCEP.GPCP.Precip + + If set, include bias correction streams in namelist. + + + + + + + + char(10) + datm + datm_nml + Anomaly.Forcing.Precip,Anomaly.Forcing.Temperature,Anomaly.Forcing.Pressure,Anomaly.Forcing.Humidity,Anomaly.Forcing.Uwind,Anomaly.Forcing.Vwind,Anomaly.Forcing.Shortwave,Anomaly.Forcing.Longwave + + If set, include anomaly forcing streams in namelist. + + + + + + + + + char + datm + datm_nml + 1d,root + + Set the decomposition option for the data model. valid options are + placing the global array on the root task or a simple stride-one + load balanced one-dimensional decomposition. other decompositions + may be added in the future. valid values are ['root','1d']. + 1d = Vector decomposition, root = run only on the master task + + + 1d + + + + + char + datm + datm_nml + abs + + filename containing correction factors for use only with CORE2 modes (CORE2_IAF and CORE2_NYF). + + + null + $DIN_LOC_ROOT/atm/datm7/CORE2/COREv2.correction_factors.T62.121007.nc + $DIN_LOC_ROOT/atm/datm7/CORE2/COREv2.correction_factors.T62.121007.nc + null + + + + + logical + datm + datm_nml + + If true, prescribed aerosols are sent from datm (must be true for running with CLM). + + + .true. + .false. + + + + + logical + datm + datm_nml + + If true, prognostic is forced to true. (default=false) + + + .false. + + + + + integer + datm + datm_nml + + Frequency to update radiation in number of steps (or hours if negative) + irdasw is the radiation setting used to compute the next shortwave + Julian date. values greater than 1 set the next radiation to the + present time plus 2 timesteps every iradsw. values less than 0 turn + set the next radiation to the present time plus two timesteps every + -iradsw hours. if iradsw is zero, the next radiation time is the + present time plus 1 timestep. (default=0.) + + + 1 + -1 + + + + + char + datm + datm_nml + + Model restart filename for the data atmosphere model data. This is + optional. If both restfils and restfilm are undefined, the restart + filename will be read from the DATM restart pointer file (or files for multiple instances). + + + undefined + + + + + char + datm + datm_nml + + stream restart filename for the data atmosphere stream data. This is + optional. If both restfils and restfilm are undefined, the restart + filename will be read from the DATM restart pointer file (or files for multiple instances). + + + undefined + + + + + logical + datm + datm_nml + + flag which if true, says to turn on water isotopes + + + .false. + .true. + + + + diff --git a/cime/components/data_comps/datm/datm_comp_mod.F90 b/cime/components/data_comps/datm/datm_comp_mod.F90 index 4e060319f405..48a7d63e4171 100644 --- a/cime/components/data_comps/datm/datm_comp_mod.F90 +++ b/cime/components/data_comps/datm/datm_comp_mod.F90 @@ -102,6 +102,23 @@ module datm_comp_mod integer(IN) :: kanidr,kanidf,kavsdr,kavsdf integer(IN) :: stbot,swind,sz,spbot,sshum,stdew,srh,slwdn,sswdn,sswdndf,sswdndr integer(IN) :: sprecc,sprecl,sprecn,sco2p,sco2d,sswup,sprec,starcf + + ! + ! water isotopes / tracer input + integer(IN) :: & + kshum_16O, kshum_18O, kshum_HDO, & + krc_18O, krc_HDO, & + krl_18O, krl_HDO, & + ksc_18O, ksc_HDO, & + ksl_18O, ksl_HDO, & + sshum_16O, sshum_18O, sshum_HDO, & + srh_16O, srh_18O, srh_HDO, & + sprecc_18O, sprecc_HDO, & + sprecl_18O, sprecl_HDO, & + sprecn_16O, sprecn_18O, sprecn_HDO + + logical, public :: wiso_datm = .false. ! expect isotopic forcing from file? + ! ! anomaly forcing ! @@ -120,7 +137,11 @@ module datm_comp_mod ! ! for anomaly forcing ! - integer(IN),parameter :: ktrans = 66 + !X! integer(IN),parameter :: ktrans = 66 + + ! isotopic forcing + integer(IN),parameter :: ktrans = 77 + character(16),parameter :: avofld(1:ktrans) = & (/"Sa_z ","Sa_topo ", & @@ -144,7 +165,11 @@ module datm_comp_mod ! "Sa_precsf ", & "Sa_prec_af ","Sa_u_af ","Sa_v_af ","Sa_tbot_af ",& - "Sa_pbot_af ","Sa_shum_af ","Sa_swdn_af ","Sa_lwdn_af " & + "Sa_pbot_af ","Sa_shum_af ","Sa_swdn_af ","Sa_lwdn_af ",& + ! isotopic forcing + "Faxa_rainc_18O ","Faxa_rainc_HDO ","Faxa_rainl_18O ","Faxa_rainl_HDO ",& + "Faxa_snowc_18O ","Faxa_snowc_HDO ","Faxa_snowl_18O ","Faxa_snowl_HDO ",& + "Sa_shum_16O ","Sa_shum_18O ","Sa_shum_HDO " & /) character(16),parameter :: avifld(1:ktrans) = & @@ -167,11 +192,18 @@ module datm_comp_mod "dms ","precsf ", & ! add Sa_precsf for precip scale factor "prec_af ","u_af ","v_af ","tbot_af ", & - "pbot_af ","shum_af ","swdn_af ","lwdn_af " & + "pbot_af ","shum_af ","swdn_af ","lwdn_af ", & + ! isotopic forcing + "rainc_18O ","rainc_HDO ","rainl_18O ","rainl_HDO ", & + "snowc_18O ","snowc_HDO ","snowl_18O ","snowl_HDO ", & + "shum_16O ","shum_18O ","shum_HDO " & /) ! add stream for anomaly forcing - integer(IN),parameter :: ktranss = 28 + ! integer(IN),parameter :: ktranss = 28 + ! isotopic forcing + integer(IN),parameter :: ktranss = 33 + ! The stofld and stifld lists are used for fields that are read but not passed to the ! coupler (e.g., they are used to compute fields that are passed to the coupler), and @@ -186,8 +218,10 @@ module datm_comp_mod ! add bias correction / anomaly forcing streams "strm_precsf ", & "strm_prec_af ","strm_u_af ","strm_v_af ","strm_tbot_af ", & - "strm_pbot_af ","strm_shum_af ","strm_swdn_af ","strm_lwdn_af " & - /) + "strm_pbot_af ","strm_shum_af ","strm_swdn_af ","strm_lwdn_af ", & + "strm_rh_18O ","strm_rh_HDO ", & + "strm_precn_16O ","strm_precn_18O ","strm_precn_HDO " & + /) character(16),parameter :: stifld(1:ktranss) = & (/"tbot ","wind ","z ","pbot ", & @@ -198,7 +232,10 @@ module datm_comp_mod "swup ","prec ","tarcf ","precsf ", & ! add anomaly forcing streams "prec_af ","u_af ","v_af ","tbot_af ", & - "pbot_af ","shum_af ","swdn_af ","lwdn_af " & + "pbot_af ","shum_af ","swdn_af ","lwdn_af ", & + ! isotopic forcing + "rh_18O ","rh_HDO ", & + "precn_16O ","precn_18O ","precn_HDO " & /) character(CL), pointer :: ilist_av(:) ! input list for translation @@ -293,8 +330,8 @@ subroutine datm_comp_init( EClock, cdata, x2a, a2x, NLFilename ) !----- define namelist ----- namelist / datm_nml / & - atm_in, decomp, iradsw, factorFn, restfilm, restfils, presaero, bias_correct, & - anomaly_forcing, force_prognostic_true + decomp, iradsw, factorFn, restfilm, restfils, presaero, bias_correct, & + anomaly_forcing, force_prognostic_true, wiso_datm !--- formats --- character(*), parameter :: F00 = "('(datm_comp_init) ',8a)" @@ -365,7 +402,6 @@ subroutine datm_comp_init( EClock, cdata, x2a, a2x, NLFilename ) call t_startf('datm_readnml') filename = "datm_in"//trim(inst_suffix) - atm_in = "unset" decomp = "1d" iradsw = 0 factorFn = 'null' @@ -384,7 +420,6 @@ subroutine datm_comp_init( EClock, cdata, x2a, a2x, NLFilename ) write(logunit,F01) 'ERROR: reading input namelist, '//trim(filename)//' iostat=',ierr call shr_sys_abort(subName//': namelist read error '//trim(filename)) end if - write(logunit,F00)' atm_in = ',trim(atm_in) write(logunit,F00)' decomp = ',trim(decomp) write(logunit,F01)' iradsw = ',iradsw write(logunit,F00)' factorFn = ',trim(factorFn) @@ -392,12 +427,12 @@ subroutine datm_comp_init( EClock, cdata, x2a, a2x, NLFilename ) write(logunit,F00)' restfils = ',trim(restfils) write(logunit,F0L)' presaero = ',presaero write(logunit,F0L)' force_prognostic_true = ',force_prognostic_true + write(logunit,F0L)' wiso_datm = ', wiso_datm write(logunit,F01) 'inst_index = ',inst_index write(logunit,F00) 'inst_name = ',trim(inst_name) write(logunit,F00) 'inst_suffix = ',trim(inst_suffix) call shr_sys_flush(logunit) endif - call shr_mpi_bcast(atm_in,mpicom,'atm_in') call shr_mpi_bcast(decomp,mpicom,'decomp') call shr_mpi_bcast(iradsw,mpicom,'iradsw') call shr_mpi_bcast(factorFn,mpicom,'factorFn') @@ -405,6 +440,7 @@ subroutine datm_comp_init( EClock, cdata, x2a, a2x, NLFilename ) call shr_mpi_bcast(restfils,mpicom,'restfils') call shr_mpi_bcast(presaero,mpicom,'presaero') call shr_mpi_bcast(force_prognostic_true,mpicom,'force_prognostic_true') + call shr_mpi_bcast(wiso_datm, mpicom, 'wiso_datm') rest_file = trim(restfilm) rest_file_strm = trim(restfils) @@ -417,7 +453,7 @@ subroutine datm_comp_init( EClock, cdata, x2a, a2x, NLFilename ) ! Read dshr namelist !---------------------------------------------------------------------------- - call shr_strdata_readnml(SDATM,trim(atm_in),mpicom=mpicom) + call shr_strdata_readnml(SDATM,trim(filename),mpicom=mpicom) call shr_sys_flush(shrlogunit) !---------------------------------------------------------------------------- @@ -568,6 +604,21 @@ subroutine datm_comp_init( EClock, cdata, x2a, a2x, NLFilename ) kco2p = mct_aVect_indexRA(a2x,'Sa_co2prog',perrWith='quiet') kco2d = mct_aVect_indexRA(a2x,'Sa_co2diag',perrWith='quiet') + !isotopic forcing + if(wiso_datm) then + kshum_16O = mct_aVect_indexRA(a2x,'Sa_shum_16O') + kshum_18O = mct_aVect_indexRA(a2x,'Sa_shum_18O') + kshum_HDO = mct_aVect_indexRA(a2x,'Sa_shum_HDO') + krc_18O = mct_aVect_indexRA(a2x,'Faxa_rainc_18O') + krc_HDO = mct_aVect_indexRA(a2x,'Faxa_rainc_HDO') + krl_18O = mct_aVect_indexRA(a2x,'Faxa_rainl_18O') + krl_HDO = mct_aVect_indexRA(a2x,'Faxa_rainl_HDO') + ksc_18O = mct_aVect_indexRA(a2x,'Faxa_snowc_18O') + ksc_HDO = mct_aVect_indexRA(a2x,'Faxa_snowc_HDO') + ksl_18O = mct_aVect_indexRA(a2x,'Faxa_snowl_18O') + ksl_HDO = mct_aVect_indexRA(a2x,'Faxa_snowl_HDO') + end if + kbid = mct_aVect_indexRA(a2x,'Faxa_bcphidry') kbod = mct_aVect_indexRA(a2x,'Faxa_bcphodry') kbiw = mct_aVect_indexRA(a2x,'Faxa_bcphiwet') @@ -644,6 +695,18 @@ subroutine datm_comp_init( EClock, cdata, x2a, a2x, NLFilename ) sswdn_af = mct_aVect_indexRA(avstrm,'strm_swdn_af',perrWith='quiet') slwdn_af = mct_aVect_indexRA(avstrm,'strm_lwdn_af',perrWith='quiet') + if(wiso_datm) then + ! isotopic forcing + sprecn_16O = mct_aVect_indexRA(avstrm,'strm_precn_16O',perrWith='quiet') + sprecn_18O = mct_aVect_indexRA(avstrm,'strm_precn_18O',perrWith='quiet') + sprecn_HDO = mct_aVect_indexRA(avstrm,'strm_precn_HDO',perrWith='quiet') + ! Okay here to just use srh_18O and srh_HDO, because the forcing is (should) + ! just be deltas, applied in lnd_comp_mct to the base tracer + srh_16O = mct_aVect_indexRA(avstrm,'strm_rh_16O',perrWith='quiet') + srh_18O = mct_aVect_indexRA(avstrm,'strm_rh_18O',perrWith='quiet') + srh_HDO = mct_aVect_indexRA(avstrm,'strm_rh_HDO',perrWith='quiet') + end if + allocate(imask(lsize)) allocate(yc(lsize)) allocate(windFactor(lsize)) @@ -1101,6 +1164,14 @@ subroutine datm_comp_run( EClock, cdata, x2a, a2x) e = avstrm%rAttr(srh,n) * 0.01_R8 * datm_shr_esat(tbot,tbot) qsat = (0.622_R8 * e)/(pbot - 0.378_R8 * e) a2x%rAttr(kshum,n) = qsat + if(wiso_datm) then + ! isotopic forcing + ! For tracer specific humidity, lnd_import_mct expects a delta, so + ! just keep the delta from the input file - TW + a2x%rAttr(kshum_16O,n) = avstrm%rAttr(srh_16O,n) + a2x%rAttr(kshum_18O,n) = avstrm%rAttr(srh_18O,n) + a2x%rAttr(kshum_HDO,n) = avstrm%rAttr(srh_HDO,n) + end if else if (stdew > 0) then if (tdewmax < 50.0_R8) avstrm%rAttr(stdew,n) = avstrm%rAttr(stdew,n) + tkFrz e = datm_shr_esat(avstrm%rAttr(stdew,n),tbot) diff --git a/cime/components/data_comps/desp/cime_config/buildlib b/cime/components/data_comps/desp/cime_config/buildlib new file mode 100755 index 000000000000..5f9588e36523 --- /dev/null +++ b/cime/components/data_comps/desp/cime_config/buildlib @@ -0,0 +1,18 @@ +#!/usr/bin/env python + +""" +build data model library +""" + +import sys, os + +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) + +from standard_script_setup import * +from CIME.buildlib import build_data_lib + +build_data_lib(sys.argv, 'esp') + + + diff --git a/cime/components/data_comps/desp/cime_config/buildnml b/cime/components/data_comps/desp/cime_config/buildnml new file mode 100755 index 000000000000..45ac53215691 --- /dev/null +++ b/cime/components/data_comps/desp/cime_config/buildnml @@ -0,0 +1,174 @@ +#!/usr/bin/env python + +"""Namelist creator for CIME's data external system processing (ESP) model. +""" + +# Typically ignore this. +# pylint: disable=invalid-name + +# Disable these because this is our standard setup +# pylint: disable=wildcard-import,unused-wildcard-import + +import os, shutil, sys, glob + +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) + +from standard_script_setup import * +from CIME.case import Case +from CIME.nmlgen import NamelistGenerator +from CIME.utils import expect +from CIME.buildnml import create_namelist_infile, parse_input + +logger = logging.getLogger(__name__) + +# pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements +#################################################################################### +def _create_namelists(case, confdir, inst_string, infile, nmlgen): +#################################################################################### + """Write out the namelist for this component. + + Most arguments are the same as those for `NamelistGenerator`. The + `inst_string` argument is used as a suffix to distinguish files for + different instances. The `confdir` argument is used to specify the directory + in which output files will be placed. + """ + + #---------------------------------------------------- + # Get a bunch of information from the case. + #---------------------------------------------------- + desp_mode = case.get_value("DESP_MODE") + + #---------------------------------------------------- + # Check for incompatible options. + #---------------------------------------------------- + # At this point, we don't know what multiple instances of ESP means + expect(len(inst_string) == 0, "Multiple ESP instances not supported") + + #---------------------------------------------------- + # Log some settings. + #---------------------------------------------------- + logger.debug("DESP mode is %s", desp_mode) + + #---------------------------------------------------- + # Clear out old data. + #---------------------------------------------------- + data_list_path = os.path.join(case.get_case_root(), "Buildconf", + "datm.input_data_list") + if os.path.exists(data_list_path): + os.remove(data_list_path) + + #---------------------------------------------------- + # Create configuration information. + #---------------------------------------------------- + config = {} + config['desp_mode'] = desp_mode + + #---------------------------------------------------- + # Initialize namelist defaults + #---------------------------------------------------- + nmlgen.init_defaults(infile, config) + + # + # This disable is required because nmlgen.get_streams + # may return a string or a list. See issue #877 in ESMCI/cime + # + #pylint: disable=no-member + + #---------------------------------------------------- + # Finally, write out all the namelists. + #---------------------------------------------------- + namelist_file = os.path.join(confdir, "desp_in") + nmlgen.write_output_file(namelist_file, data_list_path, groups=['desp_nml']) + +############################################################################### +def buildnml(case, caseroot, compname): +############################################################################### + + # Build the component namelist and required stream txt files + if compname != "desp": + raise AttributeError + + cimeroot = case.get_value("CIMEROOT") + rundir = case.get_value("RUNDIR") + ninst = case.get_value("NINST_ESP") + + # Determine configuration directory + confdir = os.path.join(caseroot,"Buildconf",compname + "conf") + if not os.path.isdir(confdir): + os.makedirs(confdir) + + #---------------------------------------------------- + # Construct the namelist generator + #---------------------------------------------------- + # Determine directory for user modified namelist_definitions.xml and namelist_defaults.xml + user_xml_dir = os.path.join(caseroot, "SourceMods", "src." + compname) + expect (os.path.isdir(user_xml_dir), + "user_xml_dir %s does not exist " %user_xml_dir) + + # NOTE: User definition *replaces* existing definition. + namelist_xml_dir = os.path.join(cimeroot, "components", "data_comps", compname, "cime_config") + definition_file = [os.path.join(namelist_xml_dir, "namelist_definition_desp.xml")] + user_definition = os.path.join(user_xml_dir, "namelist_definition_desp.xml") + if os.path.isfile(user_definition): + definition_file = [user_definition] + for file_ in definition_file: + expect(os.path.isfile(file_), "Namelist XML file %s not found!" % file_) + + # Create the namelist generator object - independent of instance + nmlgen = NamelistGenerator(case, definition_file) + + #---------------------------------------------------- + # Loop over instances + #---------------------------------------------------- + for inst_counter in range(1, ninst+1): + + # determine instance string + inst_string = "" + if ninst > 1: + inst_string = '_' + '%04d' % inst_counter + + # If multi-instance case does not have restart file, use + # single-case restart for each instance + rpointer = "rpointer." + compname + 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), + os.path.join(rundir, rpointer + inst_string)) + + inst_string_label = inst_string + if not inst_string_label: + inst_string_label = "\"\"" + + # create namelist output infile using user_nl_file as input + user_nl_file = os.path.join(caseroot, "user_nl_" + compname + inst_string) + expect(os.path.isfile(user_nl_file), + "Missing required user_nl_file %s " %(user_nl_file)) + infile = os.path.join(confdir, "namelist_infile") + create_namelist_infile(case, user_nl_file, infile) + namelist_infile = [infile] + + # create namelist and stream file(s) data component + _create_namelists(case, confdir, inst_string, namelist_infile, nmlgen) + + # copy namelist files and stream text files, to rundir + if os.path.isdir(rundir): + filename = compname + "_in" + file_src = os.path.join(confdir, filename) + file_dest = os.path.join(rundir, filename) + if inst_string: + file_dest += inst_string + shutil.copy(file_src,file_dest) + + for txtfile in glob.glob(os.path.join(confdir, "*txt*")): + shutil.copy(txtfile, rundir) + +############################################################################### +def _main_func(): + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "desp") + + +if __name__ == "__main__": + _main_func() diff --git a/cime/components/data_comps/desp/cime_config/config_component.xml b/cime/components/data_comps/desp/cime_config/config_component.xml new file mode 100644 index 000000000000..01f1b49884c2 --- /dev/null +++ b/cime/components/data_comps/desp/cime_config/config_component.xml @@ -0,0 +1,40 @@ + + + + + + + + char + desp + desp + case_comp + env_case.xml + Name of external system processing component + + + + char + NOCHANGE,DATATEST + NOCHANGE + run_component_desp + env_run.xml + Mode for external system processing component. + The default is NOOP, do not modify any model data. + + NOCHANGE + DATATEST + + + + + + + + ========================================= + DESP naming conventions in compset name + ========================================= + + + + diff --git a/cime/components/data_comps/desp/cime_config/namelist_definition_desp.xml b/cime/components/data_comps/desp/cime_config/namelist_definition_desp.xml new file mode 100644 index 000000000000..01c17a3417d8 --- /dev/null +++ b/cime/components/data_comps/desp/cime_config/namelist_definition_desp.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + char + desp + desp_nml + NOCHANGE,DATATEST + + The mode of operation for the DESP model. + NOCHANGE: report status of model 'pause' but make no changes + DATATEST: make a roundoff change to the restart files of the + components in the 'PAUSE_COMPONENT_LIST' XML variable. + Default: NOCHANGE + + + $DESP_MODE + + + + + integer + desp + desp_nml + + Level of debug output, 0=minimum, 1=normal, 2=more, 3=too much (default: 0) + + + 0 + + + + + char + desp + desp_nml + + Model restart filename for the external system (ESP) model data. This is + optional. If restfilm is undefined, the restart filename will be + read from the DESP restart pointer file (or files for multiple instances). + + + undefined + + + + diff --git a/cime/components/data_comps/desp/cime_config/user_nl_desp b/cime/components/data_comps/desp/cime_config/user_nl_desp new file mode 100644 index 000000000000..0b6d4bbb1623 --- /dev/null +++ b/cime/components/data_comps/desp/cime_config/user_nl_desp @@ -0,0 +1,16 @@ +!------------------------------------------------------------------------ +! Users should ONLY USE user_nl_desp to change namelists variables +! Users should add all user specific namelist changes below in the form of +! namelist_var = new_namelist_value +! Note that any namelist variable from desp_nml can +! be modified below using the above syntax +! User preview_namelists to view (not modify) the output namelist in the +! directory $CASEROOT/CaseDocs +! +! Note that some namelist variables MAY NOT be changed in user_nl_desp - +! they are defined in a $CASEROOT xml file and must be changed with +! xmlchange. +! +! For example, rather than set username to 'foo' in user_nl_desp, call +! ./xmlchange USER=foo +!------------------------------------------------------------------------ diff --git a/cime/components/data_comps/desp/desp_comp_mod.F90 b/cime/components/data_comps/desp/desp_comp_mod.F90 new file mode 100644 index 000000000000..ab86eb3c2419 --- /dev/null +++ b/cime/components/data_comps/desp/desp_comp_mod.F90 @@ -0,0 +1,723 @@ +module desp_comp_mod + +! !USES: + + use shr_sys_mod, only: shr_sys_abort, shr_sys_flush + use shr_kind_mod, only: IN=>SHR_KIND_IN, R8=>SHR_KIND_R8 + use shr_kind_mod, only: CS=>SHR_KIND_CS, CL=>SHR_KIND_CL + use shr_file_mod, only: shr_file_getunit, shr_file_freeunit, shr_file_setio + use shr_file_mod, only: shr_file_getlogunit, shr_file_getloglevel + use shr_file_mod, only: shr_file_setlogunit, shr_file_setloglevel + use shr_mpi_mod, only: shr_mpi_bcast + use esmf, only: ESMF_Clock + use perf_mod, only: t_startf, t_stopf, t_barrierf + + use shr_strdata_mod, only: shr_strdata_type, shr_strdata_advance + use shr_strdata_mod, only: shr_strdata_pioinit + + use seq_timemgr_mod, only: seq_timemgr_EClockGetData, seq_timemgr_RestartAlarmIsOn + use seq_comm_mct, only: seq_comm_inst, seq_comm_name, seq_comm_suffix + + implicit none + private + +!-------------------------------------------------------------------------- +! Public interfaces +!-------------------------------------------------------------------------- + + public :: desp_comp_init + public :: desp_comp_run + public :: desp_comp_final + +!-------------------------------------------------------------------------- +! Public data +!-------------------------------------------------------------------------- + + integer, parameter, public :: atm_ind = 1 + integer, parameter, public :: lnd_ind = 2 + integer, parameter, public :: ice_ind = 3 + integer, parameter, public :: ocn_ind = 4 + integer, parameter, public :: glc_ind = 5 + integer, parameter, public :: rof_ind = 6 + integer, parameter, public :: wav_ind = 7 + integer, parameter, public :: cpl_ind = 8 + integer, parameter, public :: max_ind = cpl_ind + +!-------------------------------------------------------------------------- +! Private data +!-------------------------------------------------------------------------- + + character(len=CS) :: myModelName = 'esp' ! user defined model name + integer(IN) :: mpicom + integer(IN) :: COMPID ! mct comp id + integer(IN) :: my_task ! my task in mpi communicator mpicom + integer(IN) :: npes ! total number of tasks + integer(IN), parameter :: master_task=0 ! task number of master task + integer(IN) :: logunit ! logging unit number + integer(IN) :: loglevel + integer :: inst_index ! number of current instance (ie. 1) + character(len=16) :: inst_name ! fullname of current instance (ie. "lnd_0001") + character(len=16) :: inst_suffix ! char string associated with instance + ! (ie. "_0001" or "") + character(len=CL) :: desp_mode ! mode of operation + + character(len=3), parameter :: comp_names(8) = (/ 'atm', 'lnd', 'ice', & + 'ocn', 'glc', 'rof', 'wav', 'drv' /) + character(len=*), parameter :: rpprefix = 'rpointer.' + character(len=*), parameter :: rpfile = rpprefix//'esp' + character(len=*), parameter :: nullstr = 'undefined' + character(len=*), parameter :: null_mode = 'NULL' ! Take no action + character(len=*), parameter :: noop_mode = 'NOCHANGE' ! Do not change data + character(len=*), parameter :: test_mode = 'DATATEST' ! Modify restart data + + integer, parameter :: NOERR = 0 + integer, parameter :: BAD_ID = -1 + integer, parameter :: NO_RPOINTER = -2 + integer, parameter :: NO_RFILE = -3 + integer, parameter :: NO_RPREAD = -4 + integer, parameter :: NO_READ = -5 + integer, parameter :: NO_WRITE = -6 + + type(shr_strdata_type) :: SDESP + +!-------------------------------------------------------------------------- +! Private interface +!-------------------------------------------------------------------------- +interface get_restart_filenames + module procedure get_restart_filenames_a + module procedure get_restart_filenames_s +end interface get_restart_filenames + + SAVE + +!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CONTAINS +!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +!=============================================================================== +!BOP =========================================================================== +! +! !IROUTINE: desp_comp_init +! +! !DESCRIPTION: +! initialize data esp model +! +! !REVISION HISTORY: +! +! !INTERFACE: ------------------------------------------------------------------ + + subroutine desp_comp_init(EClock, espid, mpicom_in, phase, read_restart, & + esp_present, esp_prognostic) + use pio, only: iosystem_desc_t + use shr_pio_mod, only: shr_pio_getiosys, shr_pio_getiotype + + ! !INPUT/OUTPUT PARAMETERS: + + type(ESMF_Clock), intent(in) :: EClock + integer, intent(in) :: espid + integer, intent(in) :: mpicom_in + integer, intent(in) :: phase + logical, intent(in) :: read_restart + logical, intent(out) :: esp_present ! flag + logical, intent(out) :: esp_prognostic ! flag + + !EOP + + !--- local variables --- + integer(IN) :: ierr ! error code + integer(IN) :: shrlogunit ! original log unit + integer(IN) :: shrloglev ! original log level + integer(IN) :: nunit ! unit number + + type(iosystem_desc_t), pointer :: iosystem + + character(len=CL) :: fileName ! generic file name + + character(len=CL) :: rest_file ! restart filename + character(len=CL) :: restfilm ! model restart file namelist + logical :: exists ! filename existance + integer(IN) :: info_debug ! logging level + integer(IN) :: nu ! unit number + integer(IN) :: CurrentYMD ! model date + integer(IN) :: CurrentTOD ! model sec into model date + integer(IN) :: stepno ! step number + character(len=CL) :: calendar ! calendar type + + !----- define namelist ----- + namelist / desp_nml / & + desp_mode, info_debug, restfilm + + !--- formats --- + character(*), parameter :: F00 = "('(desp_comp_init) ',8a)" + character(*), parameter :: F0L = "('(desp_comp_init) ',a, l2)" + character(*), parameter :: F01 = "('(desp_comp_init) ',a,5i8)" + character(*), parameter :: F02 = "('(desp_comp_init) ',a,4es13.6)" + character(*), parameter :: F03 = "('(desp_comp_init) ',a,i8,a)" + character(*), parameter :: F04 = "('(desp_comp_init) ',2a,2i8,'s')" + character(*), parameter :: F05 = "('(desp_comp_init) ',a,2f10.4)" + character(*), parameter :: F90 = "('(desp_comp_init) ',73('='))" + character(*), parameter :: F91 = "('(desp_comp_init) ',73('-'))" + character(*), parameter :: subName = "(desp_comp_init) " +!------------------------------------------------------------------------------- + + call t_startf('DESP_INIT') + + !------------------------------------------------------------------------ + ! Initialize module variables from inputs + !------------------------------------------------------------------------ + COMPID = espid + mpicom = mpicom_in + + !------------------------------------------------------------------------ + ! Initialize output variables + !------------------------------------------------------------------------ + esp_present = .false. + esp_prognostic = .false. + + inst_name = seq_comm_name(COMPID) + inst_index = seq_comm_inst(COMPID) + inst_suffix = seq_comm_suffix(COMPID) + + if (phase == 1) then + ! Determine communicator groups and sizes + call mpi_comm_rank(mpicom, my_task, ierr) + call mpi_comm_size(mpicom, npes, ierr) + + !--- open log file --- + if (my_task == master_task) then + logUnit = shr_file_getUnit() + call shr_file_setIO('esp_modelio.nml'//trim(inst_suffix),logUnit) + else + logUnit = 6 + end if + + !------------------------------------------------------------------------ + ! Reset shr logging to my log file + !------------------------------------------------------------------------ + call shr_file_getLogUnit (shrlogunit) + call shr_file_getLogLevel(shrloglev) + call shr_file_setLogUnit (logUnit) + + !------------------------------------------------------------------------ + ! Read desp_in + !------------------------------------------------------------------------ + + call t_startf('desp_readnml') + + filename = "desp_in"//trim(inst_suffix) + desp_mode = trim(nullstr) + info_debug = -1 + restfilm = trim(nullstr) + if (my_task == master_task) then + nunit = shr_file_getUnit() ! get unused unit number + open (nunit,file=trim(filename),status="old",action="read") + read (nunit,nml=desp_nml,iostat=ierr) + close(nunit) + + call shr_file_freeUnit(nunit) + if (ierr > 0) then + write(logunit,F01) 'ERROR: reading input namelist, '//trim(filename)//' iostat=',ierr + call shr_sys_abort(subName//': namelist read error '//trim(filename)) + end if + write(logunit,F01)' info_debug = ',info_debug + write(logunit,F00)' restfilm = ',trim(restfilm) + write(logunit,F01) 'inst_index = ',inst_index + write(logunit,F00) 'inst_name = ',trim(inst_name) + write(logunit,F00) 'inst_suffix = ',trim(inst_suffix) + call shr_sys_flush(logunit) + end if + call shr_mpi_bcast(desp_mode, mpicom, 'desp_mode') + call shr_mpi_bcast(info_debug, mpicom, 'info_debug') + call shr_mpi_bcast(restfilm, mpicom, 'restfilm') + + rest_file = trim(restfilm) + loglevel = info_debug + call shr_file_setLogLevel(loglevel) + + !------------------------------------------------------------------------ + ! Initialize PIO + !------------------------------------------------------------------------ + + iosystem => shr_pio_getiosys(trim(inst_name)) + call shr_strdata_pioinit(SDESP, iosystem, shr_pio_getiotype(trim(inst_name))) + + !------------------------------------------------------------------------ + ! Validate mode + !------------------------------------------------------------------------ + + if ( (trim(desp_mode) == null_mode) .or. & + (trim(desp_mode) == noop_mode) .or. & + (trim(desp_mode) == test_mode)) then + + if (my_task == master_task) then + write(logunit,F00) ' desp mode = ',trim(desp_mode) + call shr_sys_flush(logunit) + end if + if (trim(desp_mode) /= null_mode) then + esp_present = .true. + end if + else + write(logunit,F00) ' ERROR illegal esp mode = ',trim(desp_mode) + call shr_sys_abort(subName//' Illegal ESP mode = '//trim(desp_mode)) + end if + + call t_stopf('desp_readnml') + + !------------------------------------------------------------------------ + ! Read restart + !------------------------------------------------------------------------ + + if (read_restart) then + if (trim(rest_file) == trim(nullstr)) then + if (my_task == master_task) then + write(logunit,F00) ' restart filename from rpointer' + call shr_sys_flush(logunit) + inquire(file=trim(rpfile)//trim(inst_suffix),exist=exists) + if (.not. exists) then + write(logunit,F00) ' ERROR: rpointer file does not exist' + call shr_sys_abort(trim(subname)//' ERROR: rpointer file missing') + end if + nu = shr_file_getUnit() + open(nu, file=trim(rpfile)//trim(inst_suffix), form='formatted') + read(nu,'(a)') rest_file + close(nu) + call shr_file_freeUnit(nu) + inquire(file=trim(rest_file),exist=exists) + end if + call shr_mpi_bcast(rest_file,mpicom,'rest_file') + else + ! use namelist already read + if (my_task == master_task) then + write(logunit,F00) ' restart filename from namelist ' + call shr_sys_flush(logunit) + inquire(file=trim(rest_file),exist=exists) + end if + end if + + call shr_mpi_bcast(exists, mpicom, 'exists') + + if (exists) then + if (my_task == master_task) then + write(logunit,F00) ' reading ',trim(rest_file) + end if + ! Read any restart info here? --XXgoldyXX + else + if (my_task == master_task) then + write(logunit,F00) ' file not found, skipping ',trim(rest_file) + end if + end if + call shr_sys_flush(logunit) + end if + + if (read_restart) then + call seq_timemgr_EClockGetData( EClock, curr_ymd=CurrentYMD, curr_tod=CurrentTOD) + call seq_timemgr_EClockGetData( EClock, calendar=calendar ) + else + call seq_timemgr_EClockGetData( EClock, stepno=stepno ) + end if + else + call shr_sys_abort(trim(subname)//' DESP initialization only has phase 1') + end if + + !-------------------------------------------------------------------------- + ! Reset shr logging to original values + !-------------------------------------------------------------------------- + + if (my_task == master_task) then + write(logunit,F00) 'desp_comp_init done' + end if + call shr_sys_flush(logunit) + + call shr_file_setLogUnit (shrlogunit) + call shr_file_setLogLevel(shrloglev) + call shr_sys_flush(logunit) + + call t_stopf('DESP_INIT') + + end subroutine desp_comp_init + + !============================================================================= + !BOP========================================================================== + ! + ! !IROUTINE: desp_comp_run + ! + ! !DESCRIPTION: + ! run method for data esp model + ! + ! !REVISION HISTORY: + ! + ! !INTERFACE: --------------------------------------------------------------- + + subroutine desp_comp_run(EClock, case_name, pause_sig, atm_resume, & + lnd_resume, rof_resume, ocn_resume, ice_resume, glc_resume, & + wav_resume, cpl_resume) + use seq_comm_mct, only: num_inst_atm, num_inst_lnd, num_inst_rof + use seq_comm_mct, only: num_inst_ocn, num_inst_ice, num_inst_glc + use seq_comm_mct, only: num_inst_wav + use esp_utils, only: esp_pio_modify_variable + + ! !INPUT/OUTPUT PARAMETERS: + + type(ESMF_Clock), intent(in) :: EClock + character(len=*), intent(in) :: case_name + logical, intent(in) :: pause_sig(max_ind) + character(len=CL), intent(inout) :: atm_resume(num_inst_atm) + character(len=CL), intent(inout) :: lnd_resume(num_inst_lnd) + character(len=CL), intent(inout) :: rof_resume(num_inst_rof) + character(len=CL), intent(inout) :: ocn_resume(num_inst_ocn) + character(len=CL), intent(inout) :: ice_resume(num_inst_ice) + character(len=CL), intent(inout) :: glc_resume(num_inst_glc) + character(len=CL), intent(inout) :: wav_resume(num_inst_wav) + character(len=CL), intent(inout) :: cpl_resume + + !--- local --- + integer(IN) :: CurrentYMD ! model date + integer(IN) :: CurrentTOD ! model sec into model date + integer(IN) :: yy,mm,dd ! year month day + integer(IN) :: ind ! loop index + integer(IN) :: inst ! loop index + integer(IN) :: errcode ! error return code + character(len=CL), allocatable :: rfilenames(:) ! Restart filenames + integer(IN) :: shrlogunit, shrloglev ! original log unit and level + integer(IN) :: idt ! integer timestep + real(R8) :: dt ! timestep + logical :: write_restart ! restart now + logical :: var_found ! var on file + character(len=CL) :: rest_file ! restart_file + integer(IN) :: nu ! unit number + integer(IN) :: stepno ! step number + character(len=CL) :: calendar ! calendar type + character(len=CS) :: varname + + character(len=*), parameter :: F00 = "('(desp_comp_run) ',8a)" + character(len=*), parameter :: F04 = "('(desp_comp_run) ',2a,2i8,'s')" + character(len=*), parameter :: subName = "(desp_comp_run) " + !-------------------------------------------------------------------------- + + call t_startf('DESP_RUN') + + call t_startf('desp_run1') + + !-------------------------------------------------------------------------- + ! Make sure output variables are set + !-------------------------------------------------------------------------- + atm_resume(:) = ' ' + lnd_resume(:) = ' ' + rof_resume(:) = ' ' + ocn_resume(:) = ' ' + ice_resume(:) = ' ' + glc_resume(:) = ' ' + wav_resume(:) = ' ' + cpl_resume = ' ' + + !-------------------------------------------------------------------------- + ! Reset shr logging to my log file + !-------------------------------------------------------------------------- + call shr_file_getLogUnit (shrlogunit) + call shr_file_getLogLevel(shrloglev) + call shr_file_setLogUnit (logUnit) + call shr_file_setLogLevel(loglevel) + + call seq_timemgr_EClockGetData( EClock, curr_ymd=CurrentYMD, curr_tod=CurrentTOD) + call seq_timemgr_EClockGetData( EClock, curr_yr=yy, curr_mon=mm, curr_day=dd) + call seq_timemgr_EClockGetData( EClock, stepno=stepno, dtime=idt) + call seq_timemgr_EClockGetData( EClock, calendar=calendar) + dt = idt * 1.0_r8 + write_restart = seq_timemgr_RestartAlarmIsOn(EClock) + + call t_stopf('desp_run1') + + !-------------------- + ! ADVANCE ESP + !-------------------- + + call t_barrierf('desp_BARRIER',mpicom) + call t_startf('desp') + + if (trim(desp_mode) /= null_mode) then + call t_startf('desp_strdata_advance') + call shr_strdata_advance(SDESP, currentYMD, currentTOD, mpicom, 'desp') + call t_stopf('desp_strdata_advance') + end if + + call t_startf('desp_mode') + + ! Find the active components and their restart files + ! Note hard-coded variable names are just for testing. This could be + ! changed if this feature comes to regular use + do ind = 1, max_ind + if (pause_sig(ind)) then + select case (ind) + case(atm_ind) + call get_restart_filenames(ind, atm_resume, errcode) + allocate(rfilenames(size(atm_resume))) + rfilenames = atm_resume + varname = 'T' + case(lnd_ind) + call get_restart_filenames(ind, lnd_resume, errcode) + allocate(rfilenames(size(lnd_resume))) + rfilenames = lnd_resume + varname = 'T' + case(ice_ind) + call get_restart_filenames(ind, ice_resume, errcode) + allocate(rfilenames(size(ice_resume))) + rfilenames = ice_resume + varname = 'T' + case(ocn_ind) + call get_restart_filenames(ind, ocn_resume, errcode) + allocate(rfilenames(size(ocn_resume))) + rfilenames = ocn_resume + varname = 'T' + case(glc_ind) + call get_restart_filenames(ind, glc_resume, errcode) + allocate(rfilenames(size(glc_resume))) + rfilenames = glc_resume + varname = 'T' + case(rof_ind) + call get_restart_filenames(ind, rof_resume, errcode) + allocate(rfilenames(size(rof_resume))) + rfilenames = rof_resume + varname = 'T' + case(wav_ind) + call get_restart_filenames(ind, wav_resume, errcode) + allocate(rfilenames(size(wav_resume))) + rfilenames = wav_resume + varname = 'T' + case(cpl_ind) + call get_restart_filenames(ind, cpl_resume, errcode) + allocate(rfilenames(1)) + rfilenames(1) = cpl_resume + varname = 'a2x_ax_Sa_tbot' + case default + call shr_sys_abort(subname//'Unrecognized ind') + end select + ! Just die on errors for now + select case (errcode) + case(NO_RPOINTER) + call shr_sys_abort(subname//'Missing rpointer file for '//comp_names(ind)) + case(NO_RPREAD) + call shr_sys_abort(subname//'Cannot read rpointer file for '//comp_names(ind)) + case(NO_RFILE) + call shr_sys_abort(subname//'Missing restart file for '//comp_names(ind)) + case(NO_READ) + call shr_sys_abort(subname//'No restart read access for '//comp_names(ind)) + case(NO_WRITE) + call shr_sys_abort(subname//'No restart write access for '//comp_names(ind)) + ! No default case needed, just fall through + end select + select case (trim(desp_mode)) + case(noop_mode) + ! Find the correct restart files but do not change them. + do inst = 1, size(rfilenames) + if ((my_task == master_task) .and. (loglevel > 0)) then + write(logunit, *) subname, 'Found restart file ',trim(rfilenames(inst)) + end if + end do + case(test_mode) + ! Find the correct restart files and 'tweak' them + do inst = 1, size(rfilenames) + if ((my_task == master_task) .and. (loglevel > 0)) then + write(logunit, *) subname, 'Found restart file ',trim(rfilenames(inst)) + end if + call esp_pio_modify_variable(COMPID, mpicom, rfilenames(inst), varname, var_found) + end do + case (null_mode) + ! Since DESP is not 'present' for this mode, we should not get here. + call shr_sys_abort(subname//'DESP should not run in "NULL" mode') + end select + if (allocated(rfilenames)) then + deallocate(rfilenames) + end if + end if + end do + + call t_stopf('desp_mode') + + if (write_restart) then + call t_startf('desp_restart') + write(rest_file,"(2a,i4.4,a,i2.2,a,i2.2,a,i5.5,a)") & + trim(case_name), '.desp'//trim(inst_suffix)//'.r.', & + yy,'-',mm,'-',dd,'-',currentTOD,'.nc' + if (my_task == master_task) then + nu = shr_file_getUnit() + open(nu,file=trim(rpfile)//trim(inst_suffix),form='formatted') + write(nu,'(a)') rest_file + close(nu) + call shr_file_freeUnit(nu) + end if + + if (my_task == master_task) then + write(logunit,F04) ' writing ',trim(rest_file), currentYMD, currentTOD + end if + ! Write any restart info here? -- XXgoldyXX + call shr_sys_flush(logunit) + call t_stopf('desp_restart') + + end if + + call t_stopf('desp') + + !-------------------------------------------------------------------------- + ! Log output for model date + ! Reset shr logging to original values + !-------------------------------------------------------------------------- + + call t_startf('desp_run2') + if ((loglevel > 1) .and. (my_task == master_task)) then + write(logunit,F04) trim(myModelName),': model date ', CurrentYMD,CurrentTOD + call shr_sys_flush(logunit) + end if + + call shr_file_setLogUnit (shrlogunit) + call shr_file_setLogLevel(shrloglev) + call shr_sys_flush(logunit) + call t_stopf('desp_run2') + + call t_stopf('DESP_RUN') + + end subroutine desp_comp_run + + !============================================================================ + !BOP ======================================================================== + ! + ! !IROUTINE: desp_comp_final + ! + ! !DESCRIPTION: + ! finalize method for data esp model + ! + ! !REVISION HISTORY: + ! + ! !INTERFACE: --------------------------------------------------------------- + ! + subroutine desp_comp_final() + + !EOP + + !--- formats --- + character(*), parameter :: F00 = "('(desp_comp_final) ',8a)" + character(*), parameter :: F91 = "('(desp_comp_final) ',73('-'))" + character(*), parameter :: subName = "(desp_comp_final) " + + !-------------------------------------------------------------------------- + ! + !-------------------------------------------------------------------------- + + call t_startf('DESP_FINAL') + + if (my_task == master_task) then + write(logunit,F91) + write(logunit,F00) trim(myModelName),': end of main integration loop' + write(logunit,F91) + end if + + call t_stopf('DESP_FINAL') + + end subroutine desp_comp_final + !============================================================================ + !============================================================================ + + subroutine get_restart_filenames_a(comp_ind, filenames, retcode) + use seq_comm_mct, only: ATMID, LNDID, OCNID, ICEID, GLCID, ROFID + use seq_comm_mct, only: WAVID, CPLID, seq_comm_suffix + use shr_file_mod, only: shr_file_getUnit, shr_file_freeUnit + + ! Dummy arguments + integer, intent(in) :: comp_ind ! Internal comp. type index + character(len=CL), intent(inout) :: filenames(:) + integer, intent(out) :: retcode + + ! Local variables + integer :: num_inst + integer :: ind + integer :: ierr + integer :: unitn + integer, allocatable :: ids(:) + logical :: file_exists + character(len=8) :: file_read + character(len=CS) :: rpointer_name + character(len=CL) :: errmsg + character(len=*), parameter :: subname = "(desp_restart_filenames) " + + retcode = NOERR + filenames = ' ' + num_inst = size(filenames) + allocate(ids(num_inst)) + select case (comp_ind) + case(atm_ind) + ids = ATMID + case(lnd_ind) + ids = LNDID + case(ice_ind) + ids = ICEID + case(ocn_ind) + ids = OCNID + case(glc_ind) + ids = GLCID + case(rof_ind) + ids = ROFID + case(wav_ind) + ids = WAVID + case(cpl_ind) + ids = CPLID + case default + call shr_sys_abort(subname//'Unrecognized comp_ind') + end select + rpointer_name = rpprefix//comp_names(comp_ind) + + do ind = 1, num_inst + rpointer_name = rpprefix//comp_names(comp_ind)//trim(seq_comm_suffix(ids(ind))) + if (my_task == master_task) then + inquire(file=rpointer_name, EXIST=file_exists) + if (.not. file_exists) then + retcode = NO_RPOINTER + else + unitn = shr_file_getUnit() + if (loglevel > 0) then + write(logunit,"(3A)") subname,"read rpointer file ", rpointer_name + end if + open(unitn, file=rpointer_name, form='FORMATTED', status='old', & + action='READ', iostat=ierr) + if (ierr /= 0) then + write(errmsg, '(a,i0)') 'rpointer file open returns error condition, ',ierr + call shr_sys_abort(subname//trim(errmsg)) + end if + read(unitn,'(a)', iostat=ierr) filenames(ind) + if (ierr /= 0) then + write(errmsg, '(a,i0)') 'rpointer file read returns error condition, ',ierr + call shr_sys_abort(subname//trim(errmsg)) + end if + close(unitn) + call shr_file_freeUnit(unitn) + inquire(file=filenames(ind), EXIST=file_exists) + if (.not. file_exists) then + retcode = NO_RFILE + ! No else + end if + end if + end if + ! Broadcast what we learned about files + call shr_mpi_bcast(retcode, mpicom, 'rpointer status') + call shr_mpi_bcast(filenames(ind), mpicom, 'filenames(ind)') + end do + + if (allocated(ids)) then + deallocate(ids) + end if + + end subroutine get_restart_filenames_a + + subroutine get_restart_filenames_s(comp_ind, filename, retcode) + + ! Dummy arguments + integer, intent(in) :: comp_ind ! Internal comp. type index + character(len=CL), intent(inout) :: filename + integer, intent(out) :: retcode + + ! Local variable + character(len=CL) :: filenames(1) + + call get_restart_filenames(comp_ind, filenames, retcode) + filename = filenames(1) + end subroutine get_restart_filenames_s + +end module desp_comp_mod diff --git a/cime/components/data_comps/desp/esp_comp_mct.F90 b/cime/components/data_comps/desp/esp_comp_mct.F90 new file mode 100644 index 000000000000..549a1ce1027c --- /dev/null +++ b/cime/components/data_comps/desp/esp_comp_mct.F90 @@ -0,0 +1,179 @@ +module esp_comp_mct + + ! !USES: + + use esmf, only: ESMF_Clock + use mct_mod, only: mct_aVect + use seq_cdata_mod, only: seq_cdata + use seq_infodata_mod, only: seq_infodata_type + + ! !PUBLIC TYPES: + implicit none + private + + !-------------------------------------------------------------------------- + ! Public interfaces + !-------------------------------------------------------------------------- + + public :: esp_init_mct + public :: esp_run_mct + public :: esp_final_mct + + !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CONTAINS + !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + !============================================================================ + !BOP ======================================================================== + ! + ! !IROUTINE: esp_init_mct + ! + ! !DESCRIPTION: + ! initialize data esp model + ! + ! !REVISION HISTORY: + ! + ! !INTERFACE: --------------------------------------------------------------- + + subroutine esp_init_mct(EClock, cdata, x2a, a2x, NLFilename) + use desp_comp_mod, only: desp_comp_init + use seq_cdata_mod, only: seq_cdata_setptrs + use seq_infodata_mod, only: seq_infodata_putData, seq_infodata_GetData + + ! !INPUT/OUTPUT PARAMETERS: + + type(ESMF_Clock), intent(inout) :: EClock + type(seq_cdata), intent(inout) :: cdata + type(mct_aVect), intent(inout) :: x2a, a2x ! Not used + character(len=*), optional, intent(in) :: NLFilename ! Not used + + !EOP + + integer :: ESPID + integer :: mpicom_esp + integer :: esp_phase + logical :: esp_present + logical :: esp_prognostic + logical :: read_restart + type(seq_infodata_type), pointer :: infodata + character(len=*), parameter :: subName = "(esp_init_mct) " + !-------------------------------------------------------------------------- + + + ! Retrieve info for init method + call seq_cdata_setptrs(cdata, ID=ESPID, mpicom=mpicom_esp, & + infodata=infodata) + call seq_infodata_getData(infodata, esp_phase=esp_phase, & + read_restart=read_restart) + + call desp_comp_init(EClock, ESPID, mpicom_esp, esp_phase, read_restart, & + esp_present, esp_prognostic) + + ! Set the ESP model state + call seq_infodata_PutData(infodata, & + esp_present=esp_present, esp_prognostic=esp_prognostic) + + end subroutine esp_init_mct + + !============================================================================ + !BOP ======================================================================== + ! + ! !IROUTINE: esp_run_mct + ! + ! !DESCRIPTION: + ! run method for data esp model + ! + ! !REVISION HISTORY: + ! + ! !INTERFACE: ------------------------------------------------------------------ + + subroutine esp_run_mct( EClock, cdata, x2a, a2x) + use seq_comm_mct, only: num_inst_atm, num_inst_lnd, num_inst_rof + use seq_comm_mct, only: num_inst_ocn, num_inst_ice, num_inst_glc + use seq_comm_mct, only: num_inst_wav + use desp_comp_mod, only: desp_comp_run, atm_ind, lnd_ind, ocn_ind + use desp_comp_mod, only: ice_ind, glc_ind, rof_ind, wav_ind, cpl_ind, max_ind + use seq_cdata_mod, only: seq_cdata_setptrs + use seq_infodata_mod, only: seq_infodata_putData, seq_infodata_GetData + use shr_kind_mod, only: CL=>SHR_KIND_CL + + ! !INPUT/OUTPUT PARAMETERS: + + type(ESMF_Clock), intent(inout) :: EClock + type(seq_cdata), intent(inout) :: cdata + type(mct_aVect), intent(inout) :: x2a ! Not used + type(mct_aVect), intent(inout) :: a2x ! Not used + + !EOP + + type(seq_infodata_type), pointer :: infodata + logical :: pause_sig(max_ind) + character(len=CL) :: atm_resume(num_inst_atm) + character(len=CL) :: lnd_resume(num_inst_lnd) + character(len=CL) :: rof_resume(num_inst_rof) + character(len=CL) :: ocn_resume(num_inst_ocn) + character(len=CL) :: ice_resume(num_inst_ice) + character(len=CL) :: glc_resume(num_inst_glc) + character(len=CL) :: wav_resume(num_inst_wav) + character(len=CL) :: cpl_resume + character(len=CL) :: case_name + character(len=*), parameter :: subName = "(esp_run_mct) " + !-------------------------------------------------------------------------- + + ! Grab infodata + call seq_cdata_setptrs(cdata, infodata=infodata) + ! Find out if we should be running + ! The data ESP component only runs during a pause alarm + call seq_infodata_GetData(infodata, atm_pause=pause_sig(atm_ind), & + lnd_pause=pause_sig(lnd_ind), ocn_pause=pause_sig(ocn_ind), & + ice_pause=pause_sig(ice_ind), glc_pause=pause_sig(glc_ind), & + rof_pause=pause_sig(rof_ind), wav_pause=pause_sig(wav_ind), & + cpl_pause=pause_sig(cpl_ind), case_name=case_name) + + call desp_comp_run(EClock, case_name, pause_sig, atm_resume, lnd_resume, & + rof_resume, ocn_resume, ice_resume, glc_resume, wav_resume, & + cpl_resume) + ! Set any resume signals resulting from data ESP run + call seq_infodata_PutData(infodata, atm_resume=atm_resume, & + lnd_resume=lnd_resume, ocn_resume=ocn_resume, ice_resume=ice_resume, & + glc_resume=glc_resume, rof_resume=rof_resume, wav_resume=wav_resume, & + cpl_resume=cpl_resume) + + end subroutine esp_run_mct + + !============================================================================ + !BOP ======================================================================== + ! + ! !IROUTINE: esp_final_mct + ! + ! !DESCRIPTION: + ! finalize method for data esp model + ! + ! !REVISION HISTORY: + ! + ! !INTERFACE: --------------------------------------------------------------- + ! + subroutine esp_final_mct(EClock, cdata, x2d, d2x) + use desp_comp_mod, only: desp_comp_final + + ! !INPUT/OUTPUT PARAMETERS: + + type(ESMF_Clock) ,intent(inout) :: EClock ! clock + type(seq_cdata) ,intent(inout) :: cdata + type(mct_aVect) ,intent(inout) :: x2d ! driver -> data + type(mct_aVect) ,intent(inout) :: d2x ! data -> driver + + !EOP + + !--- formats --- + character(*), parameter :: subName = "(esp_final_mct) " + !-------------------------------------------------------------------------- + + call desp_comp_final() + + end subroutine esp_final_mct + !============================================================================ + !============================================================================ + + +end module esp_comp_mct diff --git a/cime/components/data_comps/desp/esp_utils.F90 b/cime/components/data_comps/desp/esp_utils.F90 new file mode 100644 index 000000000000..a9fc6f1e54f9 --- /dev/null +++ b/cime/components/data_comps/desp/esp_utils.F90 @@ -0,0 +1,343 @@ +module esp_utils + +! !USES: + + use shr_kind_mod, only: r8=>shr_kind_r8, CL=>SHR_KIND_CL + use shr_sys_mod, only: shr_sys_abort, shr_sys_flush + + implicit none + private + + public :: esp_pio_modify_variable + +CONTAINS + + subroutine esp_modify_array(array, pertlim, absolute) + real(r8), intent(inout) :: array(:) + real(r8), intent(in) :: pertlim + logical, intent(in) :: absolute + + integer :: ind + integer :: rndm_seed_sz + integer, allocatable :: rndm_seed(:) + real(r8) :: pertval + + call random_seed(size=rndm_seed_sz) + allocate(rndm_seed(rndm_seed_sz)) + rndm_seed = 8.53973422267357_r8 + call random_seed(put=rndm_seed) + do ind = 1, size(array) + call random_number(pertval) + pertval = 2._r8 * pertlim * (0.5_r8 - pertval) + if (absolute) then + array(ind) = pertval + else + array(ind) = array(ind) * (1.0_r8 + pertval) + end if + end do + + end subroutine esp_modify_array + + subroutine esp_pio_handle_error(ierr, errorstr) + use pio, only: pio_noerr + + ! Dummy arguments + integer, intent(in) :: ierr + character(len=*), intent(in) :: errorstr + + ! Local variables + character(len=256) :: errormsg + + if (ierr /= PIO_NOERR) then + write(errormsg, '(a,i6,2a)') '(PIO:', ierr, ') ', trim(errorstr) + call shr_sys_abort(errormsg) + end if + + end subroutine esp_pio_handle_error + + subroutine esp_pio_openfile(file, fname, piosys, iotype, mode, iulog) + use pio, only: pio_openfile, file_desc_t, pio_iotask_rank, iosystem_desc_t + use pio, only: PIO_NOWRITE, PIO_WRITE, PIO_NOERR + + type(file_desc_t), target, intent(inout) :: file + character(len=*), intent(in) :: fname + type(iosystem_desc_t), pointer :: piosys + integer, intent(in) :: iotype + integer, intent(in) :: mode + integer, optional, intent(in) :: iulog + + integer :: ierr + character(len=CL) :: errmsg + character(len=*), parameter :: subname = 'ESP_PIO_OPENFILE: ' + + ierr = pio_openfile(piosys, file, iotype, fname, mode) + + if(ierr/= PIO_NOERR) then + if (mode == PIO_nowrite) then + write(errmsg, '(3a,i0)') 'Failed to open ',trim(fname),' to read, error = ',ierr + call shr_sys_abort(subname//trim(errmsg)) + else if (mode == PIO_write) then + write(errmsg, '(3a,i0)') 'Failed to open ',trim(fname),' to write, error = ',ierr + call shr_sys_abort(subname//trim(errmsg)) + else + write(errmsg, '(3a,i0,a,i0)') 'Failed to open ',trim(fname),' with mode = ',mode,', error = ',ierr + call shr_sys_abort(subname//trim(errmsg)) + end if + else if((pio_iotask_rank(piosys) == 0) .and. present(iulog)) then + write(iulog,'(2a)') 'Opened existing file, ', trim(fname) + call shr_sys_flush(iulog) + end if + + end subroutine esp_pio_openfile + + subroutine esp_pio_closefile(file) + + use pio, only : pio_closefile, file_desc_t + + type(file_desc_t), intent(inout), target :: file + + call pio_closefile(file) + + end subroutine esp_pio_closefile + + logical function esp_pio_fileexists(fname, piosys, iotype) + use pio, only: pio_openfile, file_desc_t, iosystem_desc_t + use pio, only: pio_seterrorhandling, PIO_BCAST_ERROR + use pio, only: pio_closefile, PIO_NOERR, PIO_NOWRITE + + character(len=*), intent(in) :: fname + type(iosystem_desc_t), pointer :: piosys + integer, intent(in) :: iotype + + type(file_desc_t) :: file + integer :: ierr + integer :: err_handling + + ! We will handle errors for this routine + + call pio_seterrorhandling(piosys, PIO_BCAST_ERROR, err_handling) + + ierr = pio_openfile(piosys, file, iotype, fname, PIO_NOWRITE) + esp_pio_fileexists = (ierr == PIO_NOERR) + if (esp_pio_fileexists) then + call pio_closefile(file) + end if + + ! Back to whatever error handling was running before this routine + call pio_seterrorhandling(File, err_handling) + + end function esp_pio_fileexists + + !----------------------------------------------------------------------- + ! + ! esp_pio_var_info: Retrieve variable properties + ! + !----------------------------------------------------------------------- + subroutine esp_pio_var_info(ncid, varid, ndims, dimids, dimlens, dimnames, varname, unlimDimID) + use pio, only: file_desc_t, var_desc_t + use pio, only: PIO_inq_varndims, PIO_inq_vardimid, PIO_inq_dimlen + use pio, only: PIO_inquire, PIO_inq_dimname + use pio, only: PIO_seterrorhandling, PIO_BCAST_ERROR + + + ! Dummy arguments + type(file_desc_t), intent(inout) :: ncid + type(var_desc_t), intent(in) :: varid + integer, intent(out) :: ndims + integer, intent(out) :: dimids(:) + integer, intent(out) :: dimlens(:) + character(len=*), optional, intent(out) :: dimnames(:) + integer, optional, intent(out) :: unlimDimID + character(len=*), optional, intent(in) :: varname + + ! Local variables + integer :: ret ! PIO return value + integer :: i + integer :: err_handling + character(len=128) :: errsuff + !----------------------------------------------------------------------- + ! We will handle errors for this routine + + call PIO_seterrorhandling(ncid, PIO_BCAST_ERROR, err_handling) + + dimids = -1 + ndims = 0 + dimlens = 0 + + if (present(varname)) then + errsuff = ' for '//trim(varname) + else + errsuff = '' + end if + ! Check dimensions + ret = PIO_inq_varndims(ncid, varid, ndims) + call esp_pio_handle_error(ret, 'ESP_PIO_VAR_INFO: Error with num dimensions') + if (size(dimids) < ndims) then + call shr_sys_abort('ESP_PIO_VAR_INFO: dimids too small'//trim(errsuff)) + end if + ret = PIO_inq_vardimid(ncid, varid, dimids(1:ndims)) + call esp_pio_handle_error(ret, 'ESP_PIO_VAR_INFO: Error with inq dim ids'//trim(errsuff)) + if (size(dimlens) < ndims) then + call shr_sys_abort('ESP_PIO_VAR_INFO: dimlens too small'//trim(errsuff)) + end if + do i = 1, ndims + ret = PIO_inq_dimlen(ncid, dimids(i), dimlens(i)) + call esp_pio_handle_error(ret, 'ESP_PIO_VAR_INFO: Error with inq dimlens') + if (present(dimnames)) then + ret = PIO_inq_dimname(ncid, dimids(i), dimnames(i)) + call esp_pio_handle_error(ret, 'ESP_PIO_VAR_INFO: Error with inq dimnames') + end if + end do + if (present(unlimDimID)) then + ret = PIO_inquire(ncid, unlimitedDimID=unlimDimID) + call esp_pio_handle_error(ret, 'ESP_PIO_VAR_INFO: Error with inquire') + end if + call PIO_seterrorhandling(ncid, err_handling) + + end subroutine esp_pio_var_info + + subroutine esp_pio_find_var(ncid, varname, varid, found) + use pio, only: file_desc_t, var_desc_t + use pio, only: pio_inq_varid, pio_noerr + use pio, only: PIO_seterrorhandling, PIO_BCAST_ERROR + + ! Dummy arguments + type(file_desc_t), intent(inout) :: ncid + character(len=*), intent(in) :: varname + type(var_desc_t), intent(out) :: varid + logical, intent(out) :: found + + ! Local variables + integer :: ret ! PIO return value + integer :: err_handling + + !----------------------------------------------------------------------- + ! We will handle errors for this routine + + call PIO_seterrorhandling(ncid, PIO_BCAST_ERROR, err_handling) + ret = PIO_inq_varid(ncid, trim(varname), varid) + found = (ret == PIO_NOERR) + call PIO_seterrorhandling(ncid, err_handling) + + end subroutine esp_pio_find_var + + subroutine esp_pio_newdecomp(iodesc, piosys, iotype, dims, dof, dtype) + use pio, only: pio_initdecomp, pio_offset_kind, pio_iotype_pnetcdf + use pio, only: io_desc_t, iosystem_desc_t, PIO_REARR_SUBSET, PIO_REARR_BOX + + type(io_desc_t) :: iodesc + type(iosystem_desc_t), pointer :: piosys + integer, intent(in) :: iotype + integer, intent(in) :: dims(:) + integer(kind=PIO_OFFSET_KIND), intent(in) :: dof(:) + integer, intent(in) :: dtype + + integer :: pio_rearranger + + if(iotype == pio_iotype_pnetcdf) then + pio_rearranger = PIO_REARR_SUBSET + else + pio_rearranger = PIO_REARR_BOX + endif + + call pio_initdecomp(piosys, dtype, dims, dof, iodesc, rearr=pio_rearranger) + + end subroutine esp_pio_newdecomp + + subroutine esp_pio_modify_variable(id, comm, filename, varname, found) + use mpi, only: MPI_LOGICAL, MPI_LAND + use shr_mpi_mod, only: shr_mpi_commsize, shr_mpi_commrank + use shr_pio_mod, only: shr_pio_getiosys, shr_pio_getiotype + use pio, only: PIO_write, file_desc_t, pio_offset_kind + use pio, only: io_desc_t, var_desc_t, pio_freedecomp, PIO_DOUBLE + use pio, only: pio_read_darray, pio_write_darray, iosystem_desc_t + + integer, intent(in) :: id + integer, intent(in) :: comm + character(len=*), intent(in) :: filename + character(len=*), intent(in) :: varname + logical, intent(out) :: found + + type(file_desc_t) :: file + integer :: ierr + integer :: mode + integer :: pio_iotype + type(var_desc_t) :: varid + integer :: ndims + integer :: dimids(7) + integer :: dimlens(7) + integer :: totalsize, mysize + integer :: i + integer :: uid + integer :: npes, iam + logical :: equiv, all_equiv + integer :: offset + real(r8), allocatable :: varr(:) + integer(pio_offset_kind), allocatable :: ldof(:) + type(io_desc_t) :: iodesc + type(iosystem_desc_t), pointer :: pio_subsystem + character(len=*), parameter :: subname = 'ESP_PIO_MODIFY_VARIABLE: ' + + pio_subsystem => shr_pio_getiosys(id) + pio_iotype = shr_pio_getiotype(id) + mode = PIO_WRITE + + call esp_pio_openfile(file, filename, pio_subsystem, pio_iotype, mode) + ! Find the variable + call esp_pio_find_var(file, varname, varid, found) + if (found) then + ! Check dimensions + call esp_pio_var_info(file, varid, ndims, dimids, dimlens, & + varname=varname, unlimDimID=uid) + ! Skip the unlimited dimension if it is in varname + ierr = 1 + do i = 1, ndims + if (i > ierr) then + dimids(ierr) = dimids(i) + dimlens(ierr) = dimlens(i) + end if + if (dimids(i) /= uid) then + ierr = ierr + 1 + end if + end do + ndims = ndims - COUNT(dimids(1:ndims) == uid) + ! Calculate global and local array sizes + totalsize = PRODUCT(dimlens(1:ndims)) + call shr_mpi_commsize(comm, npes) + call shr_mpi_commrank(comm, iam) + mysize = totalsize / npes + if (iam < MOD(totalsize, npes)) then + mysize = mysize + 1 + end if + allocate(varr(mysize)) + allocate(ldof(mysize)) + offset = (iam * (totalsize / npes)) + MIN(iam, MOD(totalsize, npes)) + do i = 1, mysize + ldof(i) = i + offset + end do + call esp_pio_newdecomp(iodesc, pio_subsystem, pio_iotype, & + dimlens(1:ndims), ldof, PIO_DOUBLE) + call pio_read_darray(file, varid, iodesc, varr, ierr) + call esp_pio_handle_error(ierr, subname//'Error reading variable '//trim(varname)) + ! See if we have a constant zero value + equiv = ALL(varr == 0.0_r8) + call mpi_allreduce(equiv, all_equiv, 1, MPI_LOGICAL, MPI_LAND, comm, ierr) + ! Modify and write back to file + call esp_modify_array(varr, 1.0e-12_r8, all_equiv) + call pio_write_darray(file, varid, iodesc, varr, ierr) + call esp_pio_handle_error(ierr, subname//'Error writing variable '//trim(varname)) + ! Cleanup + call pio_freedecomp(pio_subsystem, iodesc) + end if + + call esp_pio_closefile(file) + if (allocated(varr)) then + deallocate(varr) + end if + if (allocated(ldof)) then + deallocate(ldof) + end if + + end subroutine esp_pio_modify_variable + +end module esp_utils diff --git a/cime/components/data_comps/dice/bld/build-namelist b/cime/components/data_comps/dice/bld/build-namelist deleted file mode 100755 index faa1dab5fda6..000000000000 --- a/cime/components/data_comps/dice/bld/build-namelist +++ /dev/null @@ -1,806 +0,0 @@ -#!/usr/bin/env perl -#----------------------------------------------------------------------------------------------- -# -# build-namelist -# -# This is the build-namelist script for the CIME dice (Data Ice Model). -#-------------------------------------------------------------------------------------------- - -use strict; -#use warnings; -#use diagnostics; -use Cwd qw(getcwd abs_path); -use English; -use Getopt::Long; -use IO::File; -use File::Basename; -use Data::Dumper; - -#----------------------------------------------------------------------------------------------- - -sub usage { - die < 0, - silent => 0, - caseroot => undef, - cimeroot => undef, - inst_string => undef, - user_xml_dir=> undef, - ); - -GetOptions( - "h|help" => \$opts{'help'}, - "infile=s" => \$opts{'infile'}, - "namelist=s" => \$opts{'namelist'}, - "print=i" => \$opts{'print'}, - "caseroot=s" => \$opts{'caseroot'}, - "cimeroot=s" => \$opts{'cimeroot'}, - "inst_string=s" => \$opts{'inst_string'}, - "user_xml_dir=s" => \$opts{'user_xml_dir'}, -) or usage(); - -# Give usage message. -usage() if $opts{'help'}; - -# Check for unparsed arguments -if (@ARGV) { - print "ERROR: unrecognized arguments: @ARGV\n"; - usage(); -} - -# Define print levels: -# 0 - only issue fatal error messages -# 1 - only informs what files are created (default) -# 2 - verbose -my $print = $opts{'print'}; -my $eol = "\n"; - -# user_xml_dir -my $opt = 'user_xml_dir'; -if (defined $opts{$opt}) { - my $dir = $opts{$opt}; - if ( ! -d "$dir" ) { - die << "EOF"; -** $ProgName - $opt: $dir does NOT exist -EOF - } -} - -my $CASEROOT = $opts{'caseroot'}; -my $CIMEROOT = $opts{'cimeroot'}; -my $INST_STRING = $opts{'inst_string'}; - -if ($print>=2) { print "Setting dice configuration script directory to $cfgdir$eol"; } - -#----------------------------------------------------------------------------------------------- -# build empty config_cache.xml file (needed below) -my $config_cache = "$CASEROOT/Buildconf/diceconf/config_cache.xml"; -my $fh = new IO::File; -$fh->open(">$config_cache") or die "** can't open file: $config_cache\n"; -print $fh <<"EOF"; - - - -EOF -$fh->close; -if ($print>=1) { print "Wrote file $config_cache $eol"; } -(-f $config_cache) or die <<"EOF"; -** $ProgName - Cannot find configuration cache file: $config_cache\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Make sure we can find required perl modules, definition, and defaults files. -# Look for them under the directory that contains the configure script. - -# The root directory to utils Tools -my $cimeroot = abs_path( $CIMEROOT ); -my $perl5lib = "$cimeroot/utils/perl5lib"; - -# The XML::Lite module is required to parse the XML files. -(-f "$perl5lib/XML/Lite.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"XML/Lite.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Config module provides utilities to access the configuration information -# in the config_cache.xml file -(-f "$perl5lib/Build/Config.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Config.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist definition file contains entries for all namelist variables that -# can be output by build-namelist. -my $nl_definition_file = "$cfgdir/namelist_files/namelist_definition_dice.xml"; - -# If user has user namelist definition files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_definition_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_definition_file = $newfile; - } -} - -(-f "$nl_definition_file") or die <<"EOF"; -** $ProgName - Cannot find namelist definition file \"$nl_definition_file\" ** -EOF -if ($print>=2) { print "Using namelist definition file $nl_definition_file$eol"; } - -# The Build::NamelistDefinition module provides utilities to validate that the output -# namelists are consistent with the namelist definition file -(-f "$perl5lib/Build/NamelistDefinition.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefinition.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist defaults file contains default values for all required namelist variables. -my $nl_defaults_file = "$cfgdir/namelist_files/namelist_defaults_dice.xml"; - -# If user has user namelist defaults files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_defaults_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_defaults_file = $newfile; - } -} - -(-f "$nl_defaults_file") or die <<"EOF"; -** $ProgName - Cannot find namelist defaults file \"$nl_defaults_file\" ** -EOF -if ($print>=2) { print "Using namelist defaults file $nl_defaults_file$eol"; } - - -# The Build::NamelistDefaults module provides a utility to obtain default values of namelist -# variables based on finding a best fit with the attributes specified in the defaults file. -(-f "$perl5lib/Build/NamelistDefaults.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefaults.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Namelist module provides utilities to parse input namelists, to query and modify -# namelists, and to write output namelists. -(-f "$perl5lib/Build/Namelist.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Namelist.pm\" in directory - \"$perl5lib\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Add $cfgdir/perl5lib to the list of paths that Perl searches for modules -my @dirs = ( "$cfgdir/..", "$perl5lib"); -unshift @INC, @dirs; -require XML::Lite; -require Build::Config; -require Build::NamelistDefinition; -require Build::NamelistDefaults; -require Build::Namelist; -require Streams::TemplateGeneric; -require Config::SetupTools; - -#----------------------------------------------------------------------------------------------- -# Create a configuration object from the DICE config_cache.xml file. -my $cfg = Build::Config->new('config_cache.xml'); - -# Validate some of the commandline option values. -validate_options("commandline", $cfg, \%opts); - -# Create a namelist definition object. This object provides a method for verifying that the -# output namelist variables are in the definition file, and are output in the correct -# namelist groups. -my $definition = Build::NamelistDefinition->new($nl_definition_file); - -# Create a namelist defaults object. This object provides default values for variables -# contained in the input defaults file. The configuration object provides attribute -# values that are relevent for the DICE for which the namelist is being produced. -my $defaults = Build::NamelistDefaults->new( $nl_defaults_file, $cfg); -$defaults->add( "$nl_defaults_file" ); - -# Create an empty namelist object. Add values to it in order of precedence. -my $nl = Build::Namelist->new(); - -#----------------------------------------------------------------------------------------------- -# Process the user input in order of precedence. At each point we'll only add new -# values to the namelist and not overwrite previously specified specified values which -# have higher precedence. - -# Process the -namelist arg. -if (defined $opts{'namelist'}) { - # Parse commandline namelist - my $nl_arg = Build::Namelist->new($opts{'namelist'}); - - # Validate input namelist -- trap exceptions - my $nl_arg_valid; - eval { $nl_arg_valid = $definition->validate($nl_arg); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in commandline arg '-namelist'.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_arg_valid); -} - -# Process the -infile arg. -if (defined $opts{'infile'}) { - foreach my $infile ( split( /,/, $opts{'infile'} ) ) { - # Parse namelist input from a file - my $nl_infile = Build::Namelist->new($infile); - - # Validate input namelist -- trap exceptions - my $nl_infile_valid; - eval { $nl_infile_valid = $definition->validate($nl_infile); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in '-infile' $infile.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_infile_valid); - } -} - -#----------------------------------------------------------------------------------------------- - -#################################### -# Required xml variables # -#################################### - -my %xmlvars = (); -SetupTools::getxmlvars(${CASEROOT},\%xmlvars); -# need to expand DIN_LOC_ROOT first -$xmlvars{DIN_LOC_ROOT}=SetupTools::expand_xml_var($xmlvars{DIN_LOC_ROOT}, \%xmlvars); - -foreach my $attr (keys %xmlvars) { - $xmlvars{$attr} = SetupTools::expand_xml_var($xmlvars{$attr}, \%xmlvars); -} - -my $RUN_TYPE = $xmlvars{'RUN_TYPE'}; -my $DIN_LOC_ROOT = $xmlvars{'DIN_LOC_ROOT'}; -my $ICE_DOMAIN_FILE = $xmlvars{'ICE_DOMAIN_FILE'}; -my $ICE_DOMAIN_PATH = $xmlvars{'ICE_DOMAIN_PATH'}; -my $ICE_GRID = $xmlvars{'ICE_GRID'}; -my $DICE_MODE = $xmlvars{'DICE_MODE'}; - -(-d $DIN_LOC_ROOT) or mkdir $DIN_LOC_ROOT; - -if ($print>=2) { - print " Inputdata root directory: $DIN_LOC_ROOT$eol"; - print " dice_mode is $DICE_MODE \n"; - print " dice grid is $ICE_GRID \n"; -} - -#################################### -# Streams file(s) # -#################################### - -# Create input data list (written to later) -my $input_data_list = "$CASEROOT/Buildconf/dice.input_data_list"; -my $fh_out = new IO::File; -$fh_out->open(">$CASEROOT/Buildconf/dice.input_data_list") or - die "** can't open filepath file: dice.input_data_list\n"; - -# Create hash needed to parse namelist_defaults_dice.xml file -my %default_namelist_opts; -$default_namelist_opts{'dice_mode'} = $DICE_MODE; -$default_namelist_opts{'ice_grid'} = $ICE_GRID; - -# Create streams template file(s) - loop over streams -my $streams = $defaults->get_value( "streamslist", \%default_namelist_opts ); -my @streams = split ",", $streams, -1; - -my $ostreams = undef; -my $omapalgo = undef; -my $omapmask = undef; -my $otintalgo = undef; -my $otaxmode = undef; -my $ofillalgo = undef; -my $ofillmask = undef; -foreach my $stream ( @streams ) { - - # Set stream specific part of default_namelist_opts hash - $default_namelist_opts{'stream'} = $stream; - - my $outstream = "dice.streams.txt" . ".$stream" . "$INST_STRING"; - if ($print>=1) { print " dice stream is $stream$INST_STRING \n"; } - - if ($stream eq "NULL") { - - # do nothing - - } elsif (-e "$CASEROOT/user_$outstream") { - - my $command = "cp -p $CASEROOT/user_$outstream $CASEROOT/Buildconf/diceconf/$outstream"; - system($command) == 0 or die "system $command failed: $? \n"; - - } else { - - # Create hash to initialze streams object - my %stream_template_opts; - if ( $print == 0 ) { - $stream_template_opts{'printing'} = 0; - } else { - $stream_template_opts{'printing'} = 1; - } - $stream_template_opts{'test'} = $opts{'test'}; - $stream_template_opts{'ProgName'} = $ProgName; - $stream_template_opts{'ProgDir'} = "$cfgdir"; - $stream_template_opts{'cmdline'} = $cmdline; - - if ($stream eq "prescribed" || $stream eq "copyall") { - # Currently ASSUME ONLY 1 FILE for prescribed mode - my $grid_file = $defaults->get_value( "strm_grid_file", \%default_namelist_opts ); - my $data_file = $defaults->get_value( "strm_data_file", \%default_namelist_opts ); - my $grid_file = SetupTools::expand_xml_var($grid_file, \%xmlvars); - my $data_file = SetupTools::expand_xml_var($data_file, \%xmlvars); - $stream_template_opts{'domainpath'} = dirname($grid_file); - $stream_template_opts{'domain'} = basename($grid_file); - $stream_template_opts{'filepath'} = dirname($data_file); - $stream_template_opts{'filenames'} = basename($data_file); - } else { - $stream_template_opts{'filepath'} = $defaults->get_value( "strm_datdir" , \%default_namelist_opts ); - $stream_template_opts{'filenames'} = $defaults->get_value( "strm_datfil" , \%default_namelist_opts ); - $stream_template_opts{'domainpath'} = $defaults->get_value( "strm_domdir" , \%default_namelist_opts ); - $stream_template_opts{'domain'} = $defaults->get_value( "strm_domfil" , \%default_namelist_opts ); - } - $stream_template_opts{'offset'} = 0; - $stream_template_opts{'datvarnames'}= $defaults->get_value( "strm_datvar" , \%default_namelist_opts ); - $stream_template_opts{'domvarnames'}= $defaults->get_value( "strm_domvar" , \%default_namelist_opts ); - $stream_template_opts{'yearfirst'} = $defaults->get_value( "strm_year_start", \%default_namelist_opts ); - $stream_template_opts{'yearlast'} = $defaults->get_value( "strm_year_end" , \%default_namelist_opts ); - - $stream_template_opts{'filepath'} = SetupTools::expand_xml_var($stream_template_opts{'filepath'} , \%xmlvars); - $stream_template_opts{'filenames'} = SetupTools::expand_xml_var($stream_template_opts{'filenames'} , \%xmlvars); - $stream_template_opts{'domainpath'} = SetupTools::expand_xml_var($stream_template_opts{'domainpath'}, \%xmlvars); - $stream_template_opts{'domain'} = SetupTools::expand_xml_var($stream_template_opts{'domain'} , \%xmlvars); - $stream_template_opts{'yearfirst'} = SetupTools::expand_xml_var($stream_template_opts{'yearfirst'} , \%xmlvars); - $stream_template_opts{'yearlast'} = SetupTools::expand_xml_var($stream_template_opts{'yearlast'} , \%xmlvars); - - - # Create the streams txt file for this stream (from a generic template) - my $stream_template = Streams::TemplateGeneric->new( \%stream_template_opts ); - $stream_template->Read( "${CASEROOT}/Buildconf/dice.template.streams.xml" ); - $stream_template->Write( $outstream ); - - - # Append to dice.input_data_list - my @filenames = $stream_template->GetDataFilenames( 'domain'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "domain${i} = $file\n"; - } - - my @filenames = $stream_template->GetDataFilenames( 'data'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "file${i} = $file\n"; - } - } - - # Stream specific namelist variables used below for $nl - my $tintalgo = $defaults->get_value( "strm_tintalgo" , \%default_namelist_opts); - my $mapalgo = $defaults->get_value( 'strm_mapalgo' , \%default_namelist_opts); - my $mapmask = $defaults->get_value( 'strm_mapmask' , \%default_namelist_opts); - my $taxmode = $defaults->get_value( "strm_taxmode" , \%default_namelist_opts); - my $fillalgo = $defaults->get_value( 'strm_fillalgo' , \%default_namelist_opts); - my $fillmask = $defaults->get_value( 'strm_fillmask' , \%default_namelist_opts); - my $dtlimit = $defaults->get_value( 'strm_dtlimit' , \%default_namelist_opts); - my $beg_year = $defaults->get_value( 'strm_year_start', \%default_namelist_opts); - my $end_year = $defaults->get_value( 'strm_year_end' , \%default_namelist_opts); - my $align_year = $defaults->get_value( 'strm_year_align', \%default_namelist_opts); - $beg_year = SetupTools::expand_xml_var($beg_year , \%xmlvars); - $end_year = SetupTools::expand_xml_var($end_year , \%xmlvars); - $align_year = SetupTools::expand_xml_var($align_year, \%xmlvars); - - if ( $beg_year > $end_year ) { - print "\n\nbeg_year=$beg_year end_year=$end_year\n"; - die "$ProgName ERROR:: beg_year greater than end_year\n"; - } - - if ( ! defined($ostreams) ) { - $ostreams = "\"$outstream $align_year $beg_year $end_year\""; - $omapalgo = "\'$mapalgo\'"; - $omapmask = "\'$mapmask\'"; - $otintalgo = "\'$tintalgo\'"; - $otaxmode = "\'$taxmode\'"; - $ofillalgo = "\'$fillalgo\'"; - $ofillmask = "\'$fillmask\'"; - } else { - $ostreams = "$ostreams,\"$outstream $align_year $beg_year $end_year\""; - $omapalgo .= ",\'$mapalgo\'"; - $omapmask .= ",\'$mapmask\'"; - $otintalgo .= ",\'$tintalgo\'"; - $otaxmode .= ",\'$taxmode\'"; - $ofillalgo .= ",\'$fillalgo\'"; - $ofillmask .= ",\'$fillmask\'"; - } -} - -$fh_out->close; - -######################################################### -# namelist group: shr_strdata_nml (in file dice_ice_in) # -######################################################### - -my $datamode = $defaults->get_value( "datamode", \%default_namelist_opts ); -add_default($nl, 'datamode', 'val' => "$datamode" ); -add_default($nl, 'domainfile', 'val' => "$ICE_DOMAIN_PATH/$ICE_DOMAIN_FILE"); -if ($datamode ne 'NULL') { - add_default($nl, 'streams', 'val' => "$ostreams" ); - add_default($nl, 'mapalgo', 'val' => "$omapalgo" ); - add_default($nl, 'mapmask', 'val' => "$omapmask" ); - add_default($nl, 'tintalgo', 'val' => "$otintalgo" ); - add_default($nl, 'taxmode', 'val' => "$otaxmode" ); - add_default($nl, 'fillalgo', 'val' => "$ofillalgo" ); - add_default($nl, 'fillmask', 'val' => "$ofillmask" ); -} - -############################################## -# namelist group: dice_nml (in file dice_in) # -############################################## - -add_default($nl, 'ice_in', 'val'=>"dice_ice_in$INST_STRING"); -add_default($nl, 'decomp'); -add_default($nl, 'force_prognostic_true', 'val'=>'.false.'); -add_default($nl, 'flux_qacc'); - -if ( $RUN_TYPE =~ /branch/ ) { - # The dice master restart file is currently unused - #if (not defined $nl->get_value('restfilm')) { - # die "$ProgName ERROR:: restfilm is required for a branch type.\n"; - #} -} - -#----------------------------------------------------------------------------------------------- -# Validate that the entire resultant namelist is valid -# -$definition->validate($nl); - -#----------------------------------------------------------------------------------------------- -# Write output files -# -my $note = ""; - -# dice_ice_in -my @groups = qw(shr_strdata_nml); -my $outfile = "./dice_ice_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing dice_dshr namelist to $outfile $eol"; } - -# dice_in -@groups = qw(dice_nml); -$outfile = "./dice_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing dice_in namelist to $outfile $eol"; } - -# ice_modelio -@groups = qw(modelio); -$outfile = "./ice_modelio.nml"; -$nl->set_variable_value( "modelio", "logfile", "'ice.log'" ); -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing ice_modelio.nml namelist to $outfile $eol"; } - -# Write out required local input files -check_input_files($nl, $DIN_LOC_ROOT, "$CASEROOT/Buildconf/dice.input_data_list"); - -#=============================================================================================== -#=============================================================================================== -# END OF MAIN SCRIPT -#=============================================================================================== -#=============================================================================================== - -sub add_default { - -# Add a value for the specified variable to the specified namelist object. The variables -# already in the object have the higher precedence, so if the specified variable is already -# defined in the object then don't overwrite it, just return. -# -# This method checks the definition file and adds the variable to the correct -# namelist group. -# -# The value can be provided by using the optional argument key 'val' in the -# calling list. Otherwise a default value is obtained from the namelist -# defaults object. If no default value is found this method throws an exception -# unless the 'nofail' option is set true. -# -# Example 1: Specify the default value $val for the namelist variable $var in namelist -# object $nl: -# -# add_default($nl, $var, 'val'=>$val) -# -# Example 2: Add a default for variable $var if an appropriate value is found. Otherwise -# don't add the variable -# -# add_default($nl, $var, 'nofail'=>1) -# -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object -# $defaults -- the namelist defaults object -# $DIN_LOC_ROOT -- inputdata root directory - - my $nl = shift; # namelist object - my $var = shift; # name of namelist variable - my %opts = @_; # options - - # If variable has quotes around it - if ( $var =~ /'(.+)'/ ) { - $var = $1; - } - # Query the definition to find which group the variable belongs to. Exit if not found. - my $group = $definition->get_group_name($var); - unless ($group) { - my $fname = $definition->get_file_name(); - die "$ProgName - ERROR: variable \"$var\" not found in namelist definition file $fname.\n"; - } - - # check whether the variable has a value in the namelist object -- if so then skip to end - my $val = $nl->get_variable_value($group, $var); - if (! defined $val) { - - # Look for a specified value in the options hash - - if (defined $opts{'val'}) { - $val = $opts{'val'}; - } - # or else get a value from namelist defaults object. - # Note that if the 'val' key isn't in the hash, then just pass anything else - # in %opts to the get_value method to be used as attributes that are matched - # when looking for default values. - else { - $val = $defaults->get_value($var, \%opts); - - # Truncate model_version appropriately - - if ( $var eq "model_version" ) { - $val =~ /(URL: https:\/\/[a-zA-Z0-9._-]+\/)([a-zA-Z0-9\/._-]+)(\/bld\/.+)/; - $val = $2; - } - } - - unless ( defined($val) ) { - unless ($opts{'nofail'}) { - die "$ProgName - No default value found for $var.\n" . - " Are defaults provided? \n"; - } - else { - return; - } - } - - - # query the definition to find out if the variable is an input pathname - my $is_input_pathname = $definition->is_input_pathname($var); - - # The default values for input pathnames are relative. If the namelist - # variable is defined to be an absolute pathname, then prepend - # the inputdata root directory. - if (not defined $opts{'no_abspath'}) { - if (defined $opts{'set_abspath'}) { - $val = set_abs_filepath($val, $opts{'set_abspath'}); - } else { - if ($is_input_pathname eq 'abs') { - $val = set_abs_filepath($val, $DIN_LOC_ROOT); - } - } - } - - # query the definition to find out if the variable takes a string value. - # The returned string length will be >0 if $var is a string, and 0 if not. - my $str_len = $definition->get_str_len($var); - - # If the variable is a string, then add quotes if they're missing - if ($str_len > 0) { - $val = quote_string($val); - } - - # set the value in the namelist - $nl->set_variable_value($group, $var, $val); - } - -} - -#----------------------------------------------------------------------------------------------- - -sub check_input_files { - -# For each variable in the namelist which is an input dataset, check to see if it -# exists locally. -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object - - my $nl = shift; # namelist object - my $inputdata_rootdir = shift; # if false prints test, else creates inputdata file - my $outfile = shift; - open(OUTFILE, ">>$outfile") if defined $inputdata_rootdir; - - # Look through all namelist groups - my @groups = $nl->get_group_names(); - foreach my $group (@groups) { - - # Look through all variables in each group - my @vars = $nl->get_variable_names($group); - foreach my $var (@vars) { - - # Is the variable an input dataset? - my $input_pathname_type = $definition->is_input_pathname($var); - - # If it is, check whether it exists locally and print status - if ($input_pathname_type) { - - # Get pathname of input dataset - my $pathname = $nl->get_variable_value($group, $var); - # Need to strip the quotes - $pathname =~ s/[\'\"]//g; - - if ($input_pathname_type eq 'abs') { - if ($inputdata_rootdir) { - print OUTFILE "$var = $pathname\n"; - } - else { - if (-e $pathname) { # use -e rather than -f since the absolute pathname - # might be a directory - print "OK -- found $var = $pathname\n"; - } - else { - print "NOT FOUND: $var = $pathname\n"; - } - } - } - elsif ($input_pathname_type =~ m/rel:(.+)/o) { - # The match provides the namelist variable that contains the - # root directory for a relative filename - my $rootdir_var = $1; - my $rootdir = $nl->get_variable_value($group, $rootdir_var); - $rootdir =~ s/[\'\"]//g; - if ($inputdata_rootdir) { - $pathname = "$rootdir/$pathname"; - print OUTFILE "$var = $pathname\n"; - } - else { - if (-f "$rootdir/$pathname") { - print "OK -- found $var = $rootdir/$pathname\n"; - } - else { - print "NOT FOUND: $var = $rootdir/$pathname\n"; - } - } - } - } - } - } - close OUTFILE if defined $inputdata_rootdir; - return 0 if defined $inputdata_rootdir; -} - -#----------------------------------------------------------------------------------------------- - -sub set_abs_filepath { - -# check whether the input filepath is an absolute path, and if it isn't then -# prepend a root directory - - my ($filepath, $rootdir) = @_; - - # strip any leading/trailing whitespace - $filepath =~ s/^\s+//; - $filepath =~ s/\s+$//; - $rootdir =~ s/^\s+//; - $rootdir =~ s/\s+$//; - - # strip any leading/trailing quotes - $filepath =~ s/^['"]+//; - $filepath =~ s/["']+$//; - $rootdir =~ s/^['"]+//; - $rootdir =~ s/["']+$//; - - my $out = $filepath; - unless ( $filepath =~ /^\// ) { # unless $filepath starts with a / - $out = "$rootdir/$filepath"; # prepend the root directory - } - return $out; -} - -#----------------------------------------------------------------------------------------------- - -#------------------------------------------------------------------------------- - -sub valid_option { - - my ($val, @expect) = @_; - my ($expect); - - $val =~ s/^\s+//; - $val =~ s/\s+$//; - foreach $expect (@expect) { - if ($val =~ /^$expect$/i) { return $expect; } - } - return undef; -} - -#------------------------------------------------------------------------------- - -sub validate_options { - - my $source = shift; # text string declaring the source of the options being validated - my $cfg = shift; # configure object - my $opts = shift; # reference to hash that contains the options - - my ($opt, $old, @expect); -} - -#------------------------------------------------------------------------------- - -sub quote_string { - my $str = shift; - $str =~ s/^\s+//; - $str =~ s/\s+$//; - unless ($str =~ /^['"]/) { #"' - $str = "\'$str\'"; - } - return $str; -} - -#------------------------------------------------------------------------------- - diff --git a/cime/components/data_comps/dice/bld/namelist_files/namelist_defaults_dice.xml b/cime/components/data_comps/dice/bld/namelist_files/namelist_defaults_dice.xml deleted file mode 100644 index 9b62d7bf6931..000000000000 --- a/cime/components/data_comps/dice/bld/namelist_files/namelist_defaults_dice.xml +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - -NULL -SSTDATA -SSTDATA -SSTDATA -COPYALL - - - - - -NULL -SSMI -SSMI_IAF -prescribed -copyall - - - - - -1 -1 -1 -$DIN_LOC_ROOT/ice/dice7 -domain.ocn.x0.5.090227.nc -$DIN_LOC_ROOT/ice/dice7/SSMI -ssmi_ifrac.clim.x0.5.090319.nc - - time time - xc lon - yc lat - area area - mask mask - - - ifrac ifrac - - - - - - - 1 -1948 -2009 -$DIN_LOC_ROOT/ice/dice7 -domain.ocn.x0.5.090227.nc -$DIN_LOC_ROOT/ocn/iaf - -ssmi.ifrac.0.5x0.5.1948.nc -ssmi.ifrac.0.5x0.5.1949.nc -ssmi.ifrac.0.5x0.5.1950.nc -ssmi.ifrac.0.5x0.5.1951.nc -ssmi.ifrac.0.5x0.5.1952.nc -ssmi.ifrac.0.5x0.5.1953.nc -ssmi.ifrac.0.5x0.5.1954.nc -ssmi.ifrac.0.5x0.5.1955.nc -ssmi.ifrac.0.5x0.5.1956.nc -ssmi.ifrac.0.5x0.5.1957.nc -ssmi.ifrac.0.5x0.5.1958.nc -ssmi.ifrac.0.5x0.5.1959.nc -ssmi.ifrac.0.5x0.5.1960.nc -ssmi.ifrac.0.5x0.5.1961.nc -ssmi.ifrac.0.5x0.5.1962.nc -ssmi.ifrac.0.5x0.5.1963.nc -ssmi.ifrac.0.5x0.5.1964.nc -ssmi.ifrac.0.5x0.5.1965.nc -ssmi.ifrac.0.5x0.5.1966.nc -ssmi.ifrac.0.5x0.5.1967.nc -ssmi.ifrac.0.5x0.5.1968.nc -ssmi.ifrac.0.5x0.5.1969.nc -ssmi.ifrac.0.5x0.5.1970.nc -ssmi.ifrac.0.5x0.5.1971.nc -ssmi.ifrac.0.5x0.5.1972.nc -ssmi.ifrac.0.5x0.5.1973.nc -ssmi.ifrac.0.5x0.5.1974.nc -ssmi.ifrac.0.5x0.5.1975.nc -ssmi.ifrac.0.5x0.5.1976.nc -ssmi.ifrac.0.5x0.5.1977.nc -ssmi.ifrac.0.5x0.5.1978.nc -ssmi.ifrac.0.5x0.5.1979.nc -ssmi.ifrac.0.5x0.5.1980.nc -ssmi.ifrac.0.5x0.5.1981.nc -ssmi.ifrac.0.5x0.5.1982.nc -ssmi.ifrac.0.5x0.5.1983.nc -ssmi.ifrac.0.5x0.5.1984.nc -ssmi.ifrac.0.5x0.5.1985.nc -ssmi.ifrac.0.5x0.5.1986.nc -ssmi.ifrac.0.5x0.5.1987.nc -ssmi.ifrac.0.5x0.5.1988.nc -ssmi.ifrac.0.5x0.5.1989.nc -ssmi.ifrac.0.5x0.5.1990.nc -ssmi.ifrac.0.5x0.5.1991.nc -ssmi.ifrac.0.5x0.5.1992.nc -ssmi.ifrac.0.5x0.5.1993.nc -ssmi.ifrac.0.5x0.5.1994.nc -ssmi.ifrac.0.5x0.5.1995.nc -ssmi.ifrac.0.5x0.5.1996.nc -ssmi.ifrac.0.5x0.5.1997.nc -ssmi.ifrac.0.5x0.5.1998.nc -ssmi.ifrac.0.5x0.5.1999.nc -ssmi.ifrac.0.5x0.5.2000.nc -ssmi.ifrac.0.5x0.5.2001.nc -ssmi.ifrac.0.5x0.5.2002.nc -ssmi.ifrac.0.5x0.5.2003.nc -ssmi.ifrac.0.5x0.5.2004.nc -ssmi.ifrac.0.5x0.5.2005.nc -ssmi.ifrac.0.5x0.5.2006.nc -ssmi.ifrac.0.5x0.5.2007.nc -ssmi.ifrac.0.5x0.5.2008.20120420.nc -ssmi.ifrac.0.5x0.5.2009.20120420.nc - - - time time - xc lon - yc lat - area area - mask mask - - - ifrac ifrac - - - - - - -$SSTICE_YEAR_ALIGN -$SSTICE_YEAR_START -$SSTICE_YEAR_END -$SSTICE_GRID_FILENAME -$SSTICE_DATA_FILENAME - - - - - -$SSTICE_YEAR_ALIGN -$SSTICE_YEAR_START -$SSTICE_YEAR_END -$SSTICE_GRID_FILENAME -$SSTICE_DATA_FILENAME - - - time time - gridLon lon - gridLat lat - - - iceCon ifrac - - - - - - -1d - -.true. - -nn - -nomask - -bilinear - -dstmask - -linear - -cycle - - diff --git a/cime/components/data_comps/dice/bld/namelist_files/namelist_definition_dice.xml b/cime/components/data_comps/dice/bld/namelist_files/namelist_definition_dice.xml deleted file mode 100644 index 3a53ec15dd44..000000000000 --- a/cime/components/data_comps/dice/bld/namelist_files/namelist_definition_dice.xml +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - - - - - - - - - -general method that operates on the data. this is generally -implemented in the data models but is set in the strdata method for -convenience. valid options are dependent on the data model and will -be described elsewhere. NULL is always a valid option and means no -data will be generated. default='NULL' - datamode = "NULL" -Turns off the data model as a provider of data to the coupler. The -ice_present flag will be set to false and the coupler will assume no -exchange of data to or from the data model. - dataMode = "COPYALL" -Copies all fields directly from the input data streams Any required -fields not found on an input stream will be set to zero. - dataMode = "SSTDATA" -Is a prognostic mode. It requires data be sent to the ice -model. Ice fraction (extent) data is read from an input stream, -atmosphere state variables are received from the coupler, and then -an atmosphere-ice surface flux is computed and sent to the -coupler. It is called "SSTDATA" mode because normally the ice -fraction data is found in the same data files that provide SST -data to the data ocean model. They are normally found in the same -file because the SST and ice fraction data are derived from the -same observational data sets and are consistent with each other. - Set by the xml variable DICE_MODE in env_run.xml - Currently, DICE_MODE can be [ssmi, ssmi_iaf, null] -If DICE_MODE is set to ssmi or ssmi_iaf, datamode will be set to SSTDATA -If DICE_MODE is set to null, datamodel will be set to NULL - - - -spatial gridfile associated with the strdata. grid information will -be read from this file and that grid will serve as the target grid -for all input data for this strdata input. - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are just copy (ie. no fill), special value, -nearest neighbor, nearest neighbor in "i" direction, or nearest -neighbor in "j" direction. -valid values: 'copy','spval','nn','nnoni','nnonj' -default: "nn". - - - -plays no role is fill algorithm at the present time. -valid values: "nomask,srcmask,dstmask,bothmask" -default: "nomask" - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read in instead of computing the -weights on the fly for the fill operation. if this is set, fillalgo -and fillmask are ignored. -default: unset - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the fill operation. this allows a user to -save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of masking algorithms for mapping input data -associated with the array of streams. valid options are map only from -valid src points, map only to valid destination points, ignore all -masks, map only from valid src points to valid destination points. -valid values: srcmask, dstmask, nomask,bothmask -default: dstmask - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are copy by index, set to special value, -nearest neighbor, nearest neighbor in "i" direction, nearest neighbor -in "j" direction, or bilinear. -valid values: copy,spval,nn,nnoni,nnonj,bilinear -default: bilinear - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read instead of computing -weights on the fly for the mapping (interpolation) operation. if this -is set, mapalgo and mapmask are ignored. default="unset". - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the mapping (interpolation) operation. this -allows a user to save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of time interpolation options associated with the array of -streams. -valid values: lower,upper,nearest,linear,coszen - lower = Use lower time-value - upper = Use upper time-value - nearest = Use the nearest time-value - linear = Linearly interpolate between the two time-values - coszen = Scale according to the cosine of the solar zenith angle (for solar) -default="linear". - - - -array of time axis modes associated with the array of streams for -handling data outside the specified stream time axis. -valid options are to cycle the data based on the first, last, and -align settings associated with the stream dataset, to extend the first -and last valid value indefinitely, or to limit the interpolated data -to fall only between the least and greatest valid value of the time array. -valid values: cycle,extend,limit - extend = extrapolate before and after the period by using the first or last value. - cycle = cycle between the range of data - limit = restrict to the period for which the data is valid -default="cycle". - - - -array (up to 30 elements) of delta time ratio limits placed on the -time interpolation associated with the array of streams. this real -value causes the model to stop if the ratio of the running maximum -delta time divided by the minimum delta time is greater than the -dtlimit for that stream. for instance, with daily data, the delta -time should be exactly one day throughout the dataset and the computed -maximum divided by minimum delta time should always be 1.0. for -monthly data, the delta time should be between 28 and 31 days and the -maximum ratio should be about 1.1. the running value of the delta -time is computed as data is read and any wraparound or cycling is also -included. this input helps trap missing data or errors in cycling. -to turn off trapping, set the value to 1.0e30 or something similar. -default=1.5. - - - -character array (up to 30 elements) of stream input files. this -string is actually parsed by a stream method and so the format is -specified by the stream module. this string consists of a -"stream_input_filename year_align year_first year_last". the -stream_input_filename is a stream text input file and the format and -options are described elsewhere. year_align, year_first, and -year_last provide information about the time axis of the file and how -to relate the input time axis to the model time axis. -default="null". - - - - - - - -The data ice specific namelist input is as follows. The namelist -input filename is hardwired in the data model code to "dice_in". The -namelist group is called "dice_nml". The variable formats are -character string (char), integer (int), double precision real (r8), or -logical (log) or one dimensional arrays of any of those things. -ice_in sets the filename for the data ice shr_strmdata namelist. -default: dice_ice_in. - - - -set the decomposition option for the data model. valid options are -placing the global array on the root task or a simple stride-one -load balanced one-dimensional decomposition. other decompositions -may be added in the future. -valid values are ['root','1d']. - 1d = Vector decomposition - root = run only on the master task -default='1d'. - - - -activates water accumulation/melt wrt Q -default: .false. - - - -initial water accumulation value -default: 0. - - - -bound on melt rate -default: -300.0e0 - - - -short-wave penatration factor -default: 0. - - - -Model restart filename for the data ice model data. This is optional. -If both restfils and restfilm are undefined, the restart filename will -be read from the ICE restart pointer file (or files for multiple instances). -default='undefined'. - - - -Stream restart filename for the data ice stream data. This is -optional. If both restfils and restfilm are undefined, the restart -filename will be read from the DICE restart pointer file (or files for -multiple instances). -default: 'undefined' - - - -If TRUE, prognostic is forced to true. -default=false - - - -DICE logfile name -default: 'ice.log' - - - - diff --git a/cime/components/data_comps/dice/cime_config/buildlib b/cime/components/data_comps/dice/cime_config/buildlib index b4ef905d8117..4730f0ea1026 100755 --- a/cime/components/data_comps/dice/cime_config/buildlib +++ b/cime/components/data_comps/dice/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_data_lib diff --git a/cime/components/data_comps/dice/cime_config/buildnml b/cime/components/data_comps/dice/cime_config/buildnml index 4ff821072ddc..e4d2be36b206 100755 --- a/cime/components/data_comps/dice/cime_config/buildnml +++ b/cime/components/data_comps/dice/cime_config/buildnml @@ -1,17 +1,216 @@ #!/usr/bin/env python +"""Namelist creator for CIME's data ice model. """ -build data model library -""" -import sys, os +# Typically ignore this. +# pylint: disable=invalid-name + +# Disable these because this is our standard setup +# pylint: disable=wildcard-import,unused-wildcard-import,wrong-import-position + +import os, shutil, sys, glob -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_data_nml +from CIME.case import Case +from CIME.XML.files import Files +from CIME.nmlgen import NamelistGenerator +from CIME.utils import expect +from CIME.buildnml import create_namelist_infile, parse_input + +logger = logging.getLogger(__name__) + +# pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements +#################################################################################### +def _create_namelists(case, confdir, inst_string, infile, nmlgen): +#################################################################################### + """Write out the namelist for this component. + + Most arguments are the same as those for `NamelistGenerator`. The + `inst_string` argument is used as a suffix to distinguish files for + different instances. The `confdir` argument is used to specify the directory + in which output files will be placed. + """ + + #---------------------------------------------------- + # Get a bunch of information from the case. + #---------------------------------------------------- + ice_domain_file = case.get_value("ICE_DOMAIN_FILE") + ice_domain_path = case.get_value("ICE_DOMAIN_PATH") + dice_mode = case.get_value("DICE_MODE") + ice_grid = case.get_value("ICE_GRID") + sstice_stream = case.get_value("SSTICE_STREAM") + + #---------------------------------------------------- + # Check for incompatible options. + #---------------------------------------------------- + expect(ice_grid != "null", + "ICE_GRID cannot be null") + expect(dice_mode != "NULL", + "DICE_MODE cannot be NULL") + + #---------------------------------------------------- + # Log some settings. + #---------------------------------------------------- + logger.debug("DICE mode is %s", dice_mode) + logger.debug("DICE grid is %s", ice_grid) + + #---------------------------------------------------- + # Clear out old data. + #---------------------------------------------------- + data_list_path = os.path.join(case.get_case_root(), "Buildconf", + "dice.input_data_list") + if os.path.exists(data_list_path): + os.remove(data_list_path) + + #---------------------------------------------------- + # Create configuration information. + #---------------------------------------------------- + config = {} + config['ice_grid'] = ice_grid + config['dice_mode'] = dice_mode + config['sstice_stream'] = sstice_stream + + #---------------------------------------------------- + # Initialize namelist defaults + #---------------------------------------------------- + nmlgen.init_defaults(infile, config) + + #---------------------------------------------------- + # Construct the list of streams. + #---------------------------------------------------- + streams = nmlgen.get_streams() + + #---------------------------------------------------- + # For each stream, create stream text file and update + # shr_strdata_nml group and input data list. + #---------------------------------------------------- + for stream in streams: + + # Ignore null values. + if stream is None or stream in ("NULL", ""): + continue + + inst_stream = stream + inst_string + logger.debug("DICE stream is %s", inst_stream) + stream_path = os.path.join(confdir, "dice.streams.txt." + inst_stream) + user_stream_path = os.path.join(case.get_case_root(), + "user_dice.streams.txt." + inst_stream) + + # Use the user's stream file, or create one if necessary. + if os.path.exists(user_stream_path): + shutil.copyfile(user_stream_path, stream_path) + config['stream'] = stream + nmlgen.update_shr_strdata_nml(config, stream, stream_path) + else: + nmlgen.create_stream_file_and_update_shr_strdata_nml(config, stream, stream_path, data_list_path) + + #---------------------------------------------------- + # Create `shr_strdata_nml` namelist group. + #---------------------------------------------------- + # set per-stream variables + nmlgen.create_shr_strdata_nml() + + # set variables that are not per-stream + if ice_domain_file != "UNSET": + full_domain_path = os.path.join(ice_domain_path, ice_domain_file) + nmlgen.add_default("domainfile", value=full_domain_path) + + #---------------------------------------------------- + # Finally, write out all the namelists. + #---------------------------------------------------- + namelist_file = os.path.join(confdir, "dice_in") + nmlgen.write_output_file(namelist_file, data_list_path, groups=['dice_nml','shr_strdata_nml']) + +############################################################################### +def buildnml(case, caseroot, compname): +############################################################################### + if compname != "dice": + raise AttributeError + + rundir = case.get_value("RUNDIR") + ninst = case.get_value("NINST_ICE") + + # Determine configuration directory + confdir = os.path.join(caseroot,"Buildconf",compname + "conf") + if not os.path.isdir(confdir): + os.makedirs(confdir) + + #---------------------------------------------------- + # Construct the namelist generator + #---------------------------------------------------- + # determine directory for user modified namelist_definitions.xml and namelist_defaults.xml + user_xml_dir = os.path.join(caseroot, "SourceMods", "src." + compname) + expect (os.path.isdir(user_xml_dir), + "user_xml_dir %s does not exist " %user_xml_dir) + + # NOTE: User definition *replaces* existing definition. + files = Files() + definition_file = [files.get_value("NAMELIST_DEFINITION_FILE", {"component":"dice"})] + + user_definition = os.path.join(user_xml_dir, "namelist_definition_dice.xml") + if os.path.isfile(user_definition): + definition_file = [user_definition] + for file_ in definition_file: + expect(os.path.isfile(file_), "Namelist XML file %s not found!" % file_) + + # Create the namelist generator object - independent of instance + nmlgen = NamelistGenerator(case, definition_file, files=files) + + #---------------------------------------------------- + # Loop over instances + #---------------------------------------------------- + for inst_counter in range(1, ninst+1): + + # determine instance string + inst_string = "" + if ninst > 1: + inst_string = '_' + '%04d' % inst_counter + + # If multi-instance case does not have restart file, use + # single-case restart for each instance + rpointer = "rpointer." + compname + 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), + os.path.join(rundir, rpointer + inst_string)) + + inst_string_label = inst_string + if not inst_string_label: + inst_string_label = "\"\"" + + # create namelist output infile using user_nl_file as input + user_nl_file = os.path.join(caseroot, "user_nl_" + compname + inst_string) + expect(os.path.isfile(user_nl_file), + "Missing required user_nl_file %s " %(user_nl_file)) + infile = os.path.join(confdir, "namelist_infile") + create_namelist_infile(case, user_nl_file, infile) + namelist_infile = [infile] + + # create namelist and stream file(s) data component + _create_namelists(case, confdir, inst_string, namelist_infile, nmlgen) + + # copy namelist files and stream text files, to rundir + if os.path.isdir(rundir): + filename = compname + "_in" + file_src = os.path.join(confdir, filename) + file_dest = os.path.join(rundir, filename) + if inst_string: + file_dest += inst_string + shutil.copy(file_src,file_dest) + + for txtfile in glob.glob(os.path.join(confdir, "*txt*")): + shutil.copy(txtfile, rundir) + +############################################################################### +def _main_func(): + # Build the component namelist and required stream txt files + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "dice") -build_data_nml(sys.argv, 'ice') +if __name__ == "__main__": + _main_func() diff --git a/cime/components/data_comps/dice/cime_config/config_archive.xml b/cime/components/data_comps/dice/cime_config/config_archive.xml new file mode 100644 index 000000000000..330deab5c7ff --- /dev/null +++ b/cime/components/data_comps/dice/cime_config/config_archive.xml @@ -0,0 +1,10 @@ + + + \.r.* + unset + + rpointer$NINST_STRING.ice + $CASE.dice$NINST_STRING.r.$DATENAME.nc,$CASE.dice$NINST_STRING.rs1.$DATENAME.bin + + + diff --git a/cime/components/data_comps/dice/cime_config/config_component.xml b/cime/components/data_comps/dice/cime_config/config_component.xml index 2fd6f5ae47c1..26591c92f2bb 100644 --- a/cime/components/data_comps/dice/cime_config/config_component.xml +++ b/cime/components/data_comps/dice/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -58,4 +58,4 @@ ========================================= - + diff --git a/cime/components/data_comps/dice/cime_config/namelist_definition_dice.xml b/cime/components/data_comps/dice/cime_config/namelist_definition_dice.xml new file mode 100644 index 000000000000..57b32f6bce56 --- /dev/null +++ b/cime/components/data_comps/dice/cime_config/namelist_definition_dice.xml @@ -0,0 +1,694 @@ + + + + + + + + + + + + + + char(100) + streams + streams_file + List of streams used for the given dice_mode. + + NULL + SSMI + SSMI_IAF + prescribed + copyall + + + + + char + streams + derived + does not appear in namelist - only used to set domain and data information + + $SSTICE_GRID_FILENAME + $SSTICE_GRID_FILENAME + + + + + char + streams + derived + does not appear in namelist - only used to set domain and data information + + $SSTICE_GRID_FILENAME + $SSTICE_GRID_FILENAME + + + + + char + streams + streams_file + Stream domain file directory. + + null + $DIN_LOC_ROOT/ice/dice7 + $DIN_LOC_ROOT/ice/dice7 + + + + + char + streams + streams_file + Stream domain file path(s). + + null + domain.ocn.x0.5.090227.nc + domain.ocn.x0.5.090227.nc + + + + + char + streams + streams_file + Stream domain variable name(s). + + + time time + xc lon + yc lat + area area + mask mask + + + time time + gridLon lon + gridLat lat + + + + + + char + streams + streams_file + Stream data file directory. + + null + $DIN_LOC_ROOT/ice/dice7/SSMI + $DIN_LOC_ROOT/ocn/iaf + + + + + char + streams + streams_file + Stream data file path(s). + + null + ssmi_ifrac.clim.x0.5.090319.nc + + ssmi.ifrac.0.5x0.5.1948.nc + ssmi.ifrac.0.5x0.5.1949.nc + ssmi.ifrac.0.5x0.5.1950.nc + ssmi.ifrac.0.5x0.5.1951.nc + ssmi.ifrac.0.5x0.5.1952.nc + ssmi.ifrac.0.5x0.5.1953.nc + ssmi.ifrac.0.5x0.5.1954.nc + ssmi.ifrac.0.5x0.5.1955.nc + ssmi.ifrac.0.5x0.5.1956.nc + ssmi.ifrac.0.5x0.5.1957.nc + ssmi.ifrac.0.5x0.5.1958.nc + ssmi.ifrac.0.5x0.5.1959.nc + ssmi.ifrac.0.5x0.5.1960.nc + ssmi.ifrac.0.5x0.5.1961.nc + ssmi.ifrac.0.5x0.5.1962.nc + ssmi.ifrac.0.5x0.5.1963.nc + ssmi.ifrac.0.5x0.5.1964.nc + ssmi.ifrac.0.5x0.5.1965.nc + ssmi.ifrac.0.5x0.5.1966.nc + ssmi.ifrac.0.5x0.5.1967.nc + ssmi.ifrac.0.5x0.5.1968.nc + ssmi.ifrac.0.5x0.5.1969.nc + ssmi.ifrac.0.5x0.5.1970.nc + ssmi.ifrac.0.5x0.5.1971.nc + ssmi.ifrac.0.5x0.5.1972.nc + ssmi.ifrac.0.5x0.5.1973.nc + ssmi.ifrac.0.5x0.5.1974.nc + ssmi.ifrac.0.5x0.5.1975.nc + ssmi.ifrac.0.5x0.5.1976.nc + ssmi.ifrac.0.5x0.5.1977.nc + ssmi.ifrac.0.5x0.5.1978.nc + ssmi.ifrac.0.5x0.5.1979.nc + ssmi.ifrac.0.5x0.5.1980.nc + ssmi.ifrac.0.5x0.5.1981.nc + ssmi.ifrac.0.5x0.5.1982.nc + ssmi.ifrac.0.5x0.5.1983.nc + ssmi.ifrac.0.5x0.5.1984.nc + ssmi.ifrac.0.5x0.5.1985.nc + ssmi.ifrac.0.5x0.5.1986.nc + ssmi.ifrac.0.5x0.5.1987.nc + ssmi.ifrac.0.5x0.5.1988.nc + ssmi.ifrac.0.5x0.5.1989.nc + ssmi.ifrac.0.5x0.5.1990.nc + ssmi.ifrac.0.5x0.5.1991.nc + ssmi.ifrac.0.5x0.5.1992.nc + ssmi.ifrac.0.5x0.5.1993.nc + ssmi.ifrac.0.5x0.5.1994.nc + ssmi.ifrac.0.5x0.5.1995.nc + ssmi.ifrac.0.5x0.5.1996.nc + ssmi.ifrac.0.5x0.5.1997.nc + ssmi.ifrac.0.5x0.5.1998.nc + ssmi.ifrac.0.5x0.5.1999.nc + ssmi.ifrac.0.5x0.5.2000.nc + ssmi.ifrac.0.5x0.5.2001.nc + ssmi.ifrac.0.5x0.5.2002.nc + ssmi.ifrac.0.5x0.5.2003.nc + ssmi.ifrac.0.5x0.5.2004.nc + ssmi.ifrac.0.5x0.5.2005.nc + ssmi.ifrac.0.5x0.5.2006.nc + ssmi.ifrac.0.5x0.5.2007.nc + ssmi.ifrac.0.5x0.5.2008.20120420.nc + ssmi.ifrac.0.5x0.5.2009.20120420.nc + + + + + + char + streams + streams_file + Stream data variable name(s). + + + ifrac ifrac + + + iceCon ifrac + + + + + + integer + streams + streams_file + Stream offset. + + 0 + + + + + integer + streams + streams_file + Simulation year to align stream to. + + -999 + 1 + 1 + $SSTICE_YEAR_ALIGN + $SSTICE_YEAR_ALIGN + + + + + integer + streams + streams_file + First year of stream. + + -999 + 1 + 1948 + $SSTICE_YEAR_START + $SSTICE_YEAR_START + + + + + integer + streams + streams_file + Last year of stream. + + -999 + 1 + 2009 + $SSTICE_YEAR_END + $SSTICE_YEAR_END + + + + + + + + + + + + + char + streams + shr_strdata_nml + NULL,SSTDATA,COPYALL + + general method that operates on the data. this is generally + implemented in the data models but is set in the strdata method for + convenience. valid options are dependent on the data model and will + be described elsewhere. NULL is always a valid option and means no + data will be generated. default='NULL' + datamode = "NULL" + Turns off the data model as a provider of data to the coupler. The + ice_present flag will be set to false and the coupler will assume no + exchange of data to or from the data model. + dataMode = "COPYALL" + Copies all fields directly from the input data streams Any required + fields not found on an input stream will be set to zero. + dataMode = "SSTDATA" + Is a prognostic mode. It requires data be sent to the ice + model. Ice fraction (extent) data is read from an input stream, + atmosphere state variables are received from the coupler, and then + an atmosphere-ice surface flux is computed and sent to the + coupler. It is called "SSTDATA" mode because normally the ice + fraction data is found in the same data files that provide SST + data to the data ocean model. They are normally found in the same + file because the SST and ice fraction data are derived from the + same observational data sets and are consistent with each other. + Set by the xml variable DICE_MODE in env_run.xml + Currently, DICE_MODE can be [ssmi, ssmi_iaf, null] + If DICE_MODE is set to ssmi or ssmi_iaf, datamode will be set to SSTDATA + If DICE_MODE is set to null, datamodel will be set to NULL + + + NULL + SSTDATA + SSTDATA + SSTDATA + COPYALL + + + + + char + streams + abs + shr_strdata_nml + + spatial gridfile associated with the strdata. grid information will + be read from this file and that grid will serve as the target grid + for all input data for this strdata input. + + + $ICE_DOMAIN_PATH/$ICE_DOMAIN_FILE + $SSTICE_GRID_FILENAME + $SSTICE_GRID_FILENAME + + + + + char(30) + streams + shr_strdata_nml + copy,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are just copy (ie. no fill), special value, + nearest neighbor, nearest neighbor in "i" direction, or nearest + neighbor in "j" direction. + valid values: 'copy','spval','nn','nnoni','nnonj' + + + nn + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + plays no role is fill algorithm at the present time. + valid values: "nomask,srcmask,dstmask,bothmask" + + + nomask + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read in instead of computing the + weights on the fly for the fill operation. if this is set, fillalgo + and fillmask are ignored. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the fill operation. this allows a user to + save and reuse a set of weights later. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + array (up to 30 elements) of masking algorithms for mapping input data + associated with the array of streams. valid options are map only from + valid src points, map only to valid destination points, ignore all + masks, map only from valid src points to valid destination points. + valid values: srcmask, dstmask, nomask, bothmask + + + dstmask + + + + + char(30) + streams + shr_strdata_nml + copy,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are copy by index, set to special value, + nearest neighbor, nearest neighbor in "i" direction, nearest neighbor + in "j" direction, or bilinear. + valid values: copy,spval,nn,nnoni,nnonj,bilinear + + + bilinear + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read instead of computing + weights on the fly for the mapping (interpolation) operation. if this + is set, mapalgo and mapmask are ignored. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the mapping (interpolation) operation. this + allows a user to save and reuse a set of weights later. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + coszen,nearest,linear,lower,upper + + array (up to 30 elements) of time interpolation options associated with the array of + streams. + valid values: lower,upper,nearest,linear,coszen + lower = Use lower time-value + upper = Use upper time-value + nearest = Use the nearest time-value + linear = Linearly interpolate between the two time-values + coszen = Scale according to the cosine of the solar zenith angle (for solar) + + + linear + + + + + char(30) + streams + shr_strdata_nml + extend,cycle,limit + + array of time axis modes associated with the array of streams for + handling data outside the specified stream time axis. + valid options are to cycle the data based on the first, last, and + align settings associated with the stream dataset, to extend the first + and last valid value indefinitely, or to limit the interpolated data + to fall only between the least and greatest valid value of the time array. + valid values: cycle,extend,limit + extend = extrapolate before and after the period by using the first or last value. + cycle = cycle between the range of data + limit = restrict to the period for which the data is valid + + + cycle + + + + + real(30) + streams + shr_strdata_nml + + array (up to 30 elements) of delta time ratio limits placed on the + time interpolation associated with the array of streams. this real + value causes the model to stop if the ratio of the running maximum + delta time divided by the minimum delta time is greater than the + dtlimit for that stream. for instance, with daily data, the delta + time should be exactly one day throughout the dataset and the computed + maximum divided by minimum delta time should always be 1.0. for + monthly data, the delta time should be between 28 and 31 days and the + maximum ratio should be about 1.1. the running value of the delta + time is computed as data is read and any wraparound or cycling is also + included. this input helps trap missing data or errors in cycling. + to turn off trapping, set the value to 1.0e30 or something similar. + + + 1.5e0 + + + + + char + streams + shr_strdata_nml + + list of paired colon delimited field names that should be treated as + vectors when carrying out spatial interpolation. unlike other + character arrays in this namelist, this array is completely decoupled + from the list of streams. this is a list of vector pairs that span + all input streams where different fields of the vector pair could + appear in different streams. + for example, vectors = 'u:v','taux:tauy'. + + + null + + + + + char(30) + streams + shr_strdata_nml + + character array (up to 30 elements) of stream input files. this + string is actually parsed by a stream method and so the format is + specified by the stream module. this string consists of a + "stream_input_filename year_align year_first year_last". the + stream_input_filename is a stream text input file and the format and + options are described elsewhere. year_align, year_first, and + year_last provide information about the time axis of the file and how + to relate the input time axis to the model time axis. + default="null". + + + + + + + + + + + + char + dice + dice_nml + 1d,root + + set the decomposition option for the data model. valid options are + placing the global array on the root task or a simple stride-one + load balanced one-dimensional decomposition. other decompositions + may be added in the future. + valid values are ['root','1d']. + 1d = Vector decomposition + root = run only on the master task + + + 1d + + + + + logical + dice + dice_nml + + activates water accumulation/melt wrt Q + + + .true. + + + + + real + dice + dice_nml + + initial water accumulation value + + + 0. + + + + + real + dice + dice_nml + + bound on melt rate + + + -300.e0 + + + + + real + dice + dice_nml + + short-wave penatration factor + + + 0. + + + + + logical + dice + dice_nml + + If true, prognostic is forced to true. + + + .false. + + + + + char + dice + dice_nml + + Model restart filename for the data ice model data. This is optional. + If both restfils and restfilm are undefined, the restart filename will + be read from the ICE restart pointer file (or files for multiple instances). + + + undefined + + + + + char + dice + dice_nml + + Stream restart filename for the data ice stream data. This is + optional. If both restfils and restfilm are undefined, the restart + filename will be read from the DICE restart pointer file (or files for + multiple instances). + + + undefined + + + + diff --git a/cime/components/data_comps/dice/dice_comp_mod.F90 b/cime/components/data_comps/dice/dice_comp_mod.F90 index 3dd49fa35960..ec31b04cdb7f 100644 --- a/cime/components/data_comps/dice/dice_comp_mod.F90 +++ b/cime/components/data_comps/dice/dice_comp_mod.F90 @@ -201,7 +201,6 @@ subroutine dice_comp_init( EClock, cdata, x2i, i2x, NLFilename ) integer(IN) :: yearAlign ! data year that aligns with yearFirst character(CL) :: calendar ! calendar type - character(CL) :: ice_in ! dshr ice namelist character(CL) :: decomp ! decomp strategy character(CL) :: rest_file ! restart filename character(CL) :: rest_file_strm ! restart filename for stream @@ -215,7 +214,7 @@ subroutine dice_comp_init( EClock, cdata, x2i, i2x, NLFilename ) !----- define namelist ----- namelist / dice_nml / & - ice_in, decomp, flux_swpf, flux_Qmin, flux_Qacc, flux_Qacc0, restfilm, restfils, & + decomp, flux_swpf, flux_Qmin, flux_Qacc, flux_Qacc0, restfilm, restfils, & force_prognostic_true !--- formats --- @@ -284,7 +283,6 @@ subroutine dice_comp_init( EClock, cdata, x2i, i2x, NLFilename ) call t_startf('dice_readnml') filename = "dice_in"//trim(inst_suffix) - ice_in = "unset" decomp = "1d" flux_swpf = 0.0_R8 ! no penetration flux_Qmin = -300.0_R8 ! kg/s/m^2 @@ -303,7 +301,6 @@ subroutine dice_comp_init( EClock, cdata, x2i, i2x, NLFilename ) write(logunit,F01) 'ERROR: reading input namelist, '//trim(filename)//' iostat=',ierr call shr_sys_abort(subName//': namelist read error '//trim(filename)) end if - write(logunit,F00)' ice_in = ',trim(ice_in) write(logunit,F00)' decomp = ',trim(decomp) write(logunit,F02)' flux_swpf = ',flux_swpf write(logunit,F02)' flux_Qmin = ',flux_Qmin @@ -313,7 +310,6 @@ subroutine dice_comp_init( EClock, cdata, x2i, i2x, NLFilename ) write(logunit,F00)' restfils = ',trim(restfils) write(logunit,F0L)' force_prognostic_true = ',force_prognostic_true endif - call shr_mpi_bcast(ice_in ,mpicom,'ice_in') call shr_mpi_bcast(decomp ,mpicom,'decomp') call shr_mpi_bcast(flux_swpf ,mpicom,'flux_swpf') call shr_mpi_bcast(flux_Qmin ,mpicom,'flux_Qmin') @@ -334,7 +330,7 @@ subroutine dice_comp_init( EClock, cdata, x2i, i2x, NLFilename ) ! Read dshr namelist !---------------------------------------------------------------------------- - call shr_strdata_readnml(SDICE,trim(ice_in),mpicom=mpicom) + call shr_strdata_readnml(SDICE,trim(filename),mpicom=mpicom) !---------------------------------------------------------------------------- ! Initialize IO diff --git a/cime/components/data_comps/dice/ice_comp_esmf.F90 b/cime/components/data_comps/dice/ice_comp_esmf.F90 deleted file mode 100644 index 31d449898957..000000000000 --- a/cime/components/data_comps/dice/ice_comp_esmf.F90 +++ /dev/null @@ -1,253 +0,0 @@ -module ice_comp_esmf - -#ifdef ESMF_INTERFACE - use shr_kind_mod, only: R8=>SHR_KIND_R8, IN=>SHR_KIND_IN, & - CS=>SHR_KIND_CS, CL=>SHR_KIND_CL - use shr_sys_mod ! shared system calls - - use seq_cdata_mod - use seq_infodata_mod - - use esmf - use esmfshr_mod - - use dice_comp_mod - use perf_mod - use mct_mod - - implicit none - - public :: ice_init_esmf - public :: ice_run_esmf - public :: ice_final_esmf - public :: ice_register_esmf - - private ! except - - type(seq_cdata) :: cdata - type(seq_infodata_type) :: infodata - type(mct_gsMap) :: gsmap - type(mct_gGrid) :: ggrid - type(mct_aVect) :: x2d - type(mct_aVect) :: d2x - - !----- formats ----- - character(*),parameter :: subName = "(ice_comp_esmf) " - - save ! save everything - - ! - ! Author: Fei Liu - ! This module is ESMF compliant ice data component - !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -contains - !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - !=============================================================================== - - subroutine ice_register_esmf(comp, rc) - - implicit none - - type(ESMF_GridComp) :: comp - integer, intent(out) :: rc - - rc = ESMF_SUCCESS - - print *, "In ice register routine" - ! Register the callback routines. - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_INITIALIZE, ice_init_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_RUN, ice_run_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_FINALIZE, ice_final_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - end subroutine ice_register_esmf - - !=============================================================================== - - subroutine ice_init_esmf(comp, import_state, export_state, EClock, rc) - !---------------------------------------------------------- - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !----- local ----- - integer(IN) :: MYID - character(CL) :: NLFilename - type(ESMF_Array) :: Ex2d, Ed2x, Edom - - character(*),parameter :: subName = "(ice_init_esmf) " - character(ESMF_MAXSTR) :: convCIM, purpComp - !---------------------------------------------------------- - - rc = ESMF_SUCCESS - - NLFilename = 'unused' - - call esmfshr_infodata_state2infodata(export_state,infodata,ID=MYID, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call seq_cdata_init(cdata,MYID,ggrid,gsmap,infodata,'dice') - - call dice_comp_init(EClock, cdata, x2d, d2x, NLFilename) - - call esmfshr_infodata_infodata2state(infodata,export_state,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Edom = mct2esmf_init(ggrid%data,gsmap,name='domain',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(ggrid%data,Edom,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Ed2x = mct2esmf_init(d2x,gsmap,name='d2x',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Ex2d = mct2esmf_init(x2d,gsmap,name='x2d',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(d2x,Ed2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(export_state,(/Edom/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(export_state,(/Ed2x/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(import_state,(/Ex2d/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - -#ifdef USE_ESMF_METADATA - convCIM = "CIM" - purpComp = "Model Component Simulation Description" - - call ESMF_AttributeAdd(comp, & - convention=convCIM, purpose=purpComp, rc=rc) - - call ESMF_AttributeSet(comp, "ShortName", "DICE", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "LongName", & - "Climatological Ice Data Model", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "Description", & - "The CESM data models perform the basic function of " // & - "reading external data, modifying that data, and then " // & - "sending it to the driver via standard CESM coupling " // & - "interfaces. The driver and other models have no " // & - "fundamental knowledge of whether another component " // & - "is fully active or just a data model. In some cases, " // & - "data models are prognostic and also receive and use " // & - "some data sent by the driver to the data model. But " // & - "in most cases, the data models are not running " // & - "prognostically and have no need to receive any data " // & - "from the driver.", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "ReleaseDate", "2010", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "ModelType", "Sea Ice", & - convention=convCIM, purpose=purpComp, rc=rc) - - ! call ESMF_AttributeSet(comp, "Name", "someone", & - ! convention=convCIM, purpose=purpComp, rc=rc) - ! call ESMF_AttributeSet(comp, "EmailAddress", & - ! "someone@someplace", & - ! convention=convCIM, purpose=purpComp, rc=rc) - ! call ESMF_AttributeSet(comp, "ResponsiblePartyRole", "contact", & - ! convention=convCIM, purpose=purpComp, rc=rc) -#endif - - rc = ESMF_SUCCESS - - end subroutine ice_init_esmf - - !=============================================================================== - - subroutine ice_run_esmf(comp, import_state, export_state, EClock, rc) - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !----- local ----- - integer(IN) :: MYID - type(ESMF_Array) :: Ex2d, Ed2x - - character(*),parameter :: subName = "(ice_run_esmf) " - !---------------------------------------------------------- - - rc = ESMF_SUCCESS - - ! Unpack import state - - call esmfshr_infodata_state2infodata(export_state,infodata,ID=MYID, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateGet(import_state, itemName="x2d", array=Ex2d, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call esmf2mct_copy(Ex2d, x2d, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - ! Run model - - call dice_comp_run(EClock, cdata, x2d, d2x) - - ! Pack export state - - call esmfshr_infodata_infodata2state(infodata,export_state,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateGet(export_state, itemName="d2x", array=Ed2x, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(d2x,Ed2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - rc = ESMF_SUCCESS - - end subroutine ice_run_esmf - - !=============================================================================== - - subroutine ice_final_esmf(comp, import_state, export_state, EClock, rc) - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !---------------------------------------------------------------------------- - ! Finalize routine - !---------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - call dice_comp_final() - - end subroutine ice_final_esmf - - !=============================================================================== -#endif - -end module ice_comp_esmf diff --git a/cime/components/data_comps/dlnd/bld/build-namelist b/cime/components/data_comps/dlnd/bld/build-namelist deleted file mode 100755 index d807cfac06cd..000000000000 --- a/cime/components/data_comps/dlnd/bld/build-namelist +++ /dev/null @@ -1,791 +0,0 @@ -#!/usr/bin/env perl -#----------------------------------------------------------------------------------------------- -# -# build-namelist -# -# This is the build-namelist script for the CIME dlnd (Data Lnd Model). -#-------------------------------------------------------------------------------------------- - -use strict; -#use warnings; -#use diagnostics; -use Cwd qw(getcwd abs_path); -use English; -use Getopt::Long; -use IO::File; -use File::Basename; -use Data::Dumper; -#----------------------------------------------------------------------------------------------- - -sub usage { - die < 0, - silent => 0, - caseroot => undef, - cimeroot => undef, - inst_string => undef, - user_xml_dir=> undef, - ); - -GetOptions( - "h|help" => \$opts{'help'}, - "infile=s" => \$opts{'infile'}, - "namelist=s" => \$opts{'namelist'}, - "print=i" => \$opts{'print'}, - "caseroot=s" => \$opts{'caseroot'}, - "cimeroot=s" => \$opts{'cimeroot'}, - "inst_string=s" => \$opts{'inst_string'}, - "user_xml_dir=s" => \$opts{'user_xml_dir'}, -) or usage(); - -# Give usage message. -usage() if $opts{'help'}; - -# Check for unparsed arguments -if (@ARGV) { - print "ERROR: unrecognized arguments: @ARGV\n"; - usage(); -} - -# Define print levels: -# 0 - only issue fatal error messages -# 1 - only informs what files are created (default) -# 2 - verbose -my $print = $opts{'print'}; -my $eol = "\n"; - -# user_xml_dir -my $opt = 'user_xml_dir'; -if (defined $opts{$opt}) { - my $dir = $opts{$opt}; - if ( ! -d "$dir" ) { - die << "EOF"; -** $ProgName - $opt: $dir does NOT exist -EOF - } -} - -my $CASEROOT = $opts{'caseroot'}; -my $CIMEROOT = $opts{'cimeroot'}; -my $INST_STRING = $opts{'inst_string'}; - -if ($print>=2) { print "Setting dlnd configuration script directory to $cfgdir$eol"; } - -#----------------------------------------------------------------------------------------------- -# build empty config_cache.xml file (needed below) -my $config_cache = "$CASEROOT/Buildconf/dlndconf/config_cache.xml"; -my $fh = new IO::File; -$fh->open(">$config_cache") or die "** can't open file: $config_cache\n"; -print $fh <<"EOF"; - - - -EOF -$fh->close; -if ($print>=1) { print "Wrote file $config_cache $eol"; } -(-f $config_cache) or die <<"EOF"; -** $ProgName - Cannot find configuration cache file: $config_cache\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Make sure we can find required perl modules, definition, and defaults files. -# Look for them under the directory that contains the configure script. - -# The root directory for the input data files must be specified. - -#The root directory to utils Tools -my $cimeroot = abs_path( $CIMEROOT ); -my $perl5lib = "$cimeroot/utils/perl5lib"; - -# The XML::Lite module is required to parse the XML files. -(-f "$perl5lib/XML/Lite.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"XML/Lite.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Config module provides utilities to access the configuration information -# in the config_cache.xml file -(-f "$perl5lib/Build/Config.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Config.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist definition file contains entries for all namelist variables that -# can be output by build-namelist. The version of the file that is associate with a -# fixed dlnd tag is $cfgdir/namelist_files/namelist_definition_dlnd.xml. -my $nl_definition_file = "${cfgdir}/namelist_files/namelist_definition_dlnd.xml"; - -# If user has user namelist definition files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_definition_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_definition_file = $newfile; - } -} - -(-f "$nl_definition_file") or die <<"EOF"; -** $ProgName - Cannot find namelist definition file \"$nl_definition_file\" ** -EOF -if ($print>=2) { print "Using namelist definition file $nl_definition_file$eol"; } - -# The Build::NamelistDefinition module provides utilities to validate that the output -# namelists are consistent with the namelist definition file -(-f "$perl5lib/Build/NamelistDefinition.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefinition.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist defaults file contains default values for most namelist variables -# can be output by build-namelist. The version of the file that is associated with a -# fixed dlnd tag is $cfgdir/namelist_files/namelist_defaults_dlnd.xml. -my $nl_defaults_file = "$cfgdir/namelist_files/namelist_defaults_dlnd.xml"; - -# If user has user namelist defaults files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_defaults_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_defaults_file = $newfile; - } -} - -(-f "$nl_defaults_file") or die <<"EOF"; -** $ProgName - Cannot find namelist defaults file \"$nl_defaults_file\" ** -EOF -if ($print>=2) { print "Using namelist defaults file $nl_defaults_file$eol"; } - -# The Build::NamelistDefaults module provides a utility to obtain default values of namelist -# variables based on finding a best fit with the attributes specified in the defaults file. -(-f "$perl5lib/Build/NamelistDefaults.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefaults.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Namelist module provides utilities to parse input namelists, to query and modify -# namelists, and to write output namelists. -(-f "$perl5lib/Build/Namelist.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Namelist.pm\" in directory - \"$perl5lib\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Add $cfgdir/perl5lib to the list of paths that Perl searches for modules -my @dirs = ( "$cfgdir/..", "$perl5lib"); -unshift @INC, @dirs; -require XML::Lite; -require Build::Config; -require Build::NamelistDefinition; -require Build::NamelistDefaults; -require Build::Namelist; -require Streams::TemplateGeneric; -require Config::SetupTools; - -#----------------------------------------------------------------------------------------------- -# Create a configuration object from the DLND config_cache.xml file. -my $cfg = Build::Config->new($config_cache); - -# Validate some of the commandline option values. -validate_options("commandline", $cfg, \%opts); - -# Create a namelist definition object. This object provides a method for verifying that the -# output namelist variables are in the definition file, and are output in the correct -# namelist groups. -my $definition = Build::NamelistDefinition->new($nl_definition_file); - -# Create a namelist defaults object. This object provides default values for variables -# contained in the input defaults file. The configuration object provides attribute -# values that are relevent for the DLND for which the namelist is being produced. -my $defaults = Build::NamelistDefaults->new( $nl_defaults_file, $cfg); - -# Create an empty namelist object. Add values to it in order of precedence. -my $nl = Build::Namelist->new(); - -#----------------------------------------------------------------------------------------------- -# Process the user input in order of precedence. At each point we'll only add new -# values to the namelist and not overwrite previously specified specified values which -# have higher precedence. - -# Process the -namelist arg. -if (defined $opts{'namelist'}) { - # Parse commandline namelist - my $nl_arg = Build::Namelist->new($opts{'namelist'}); - - # Validate input namelist -- trap exceptions - my $nl_arg_valid; - eval { $nl_arg_valid = $definition->validate($nl_arg); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in commandline arg '-namelist'.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_arg_valid); -} - -# Process the -infile arg. -if (defined $opts{'infile'}) { - foreach my $infile ( split( /,/, $opts{'infile'} ) ) { - # Parse namelist input from a file - my $nl_infile = Build::Namelist->new($infile); - - # Validate input namelist -- trap exceptions - my $nl_infile_valid; - eval { $nl_infile_valid = $definition->validate($nl_infile); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in '-infile' $infile.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_infile_valid); - } -} - -#----------------------------------------------------------------------------------------------- - -#################################### -# Required xml variables # -#################################### - -my %xmlvars = {}; -SetupTools::getxmlvars(${CASEROOT},\%xmlvars); -foreach my $attr (keys %xmlvars) { - $xmlvars{$attr} = SetupTools::expand_xml_var($xmlvars{$attr}, \%xmlvars); -} - -my $RUN_TYPE = $xmlvars{'RUN_TYPE'}; -my $DIN_LOC_ROOT = $xmlvars{'DIN_LOC_ROOT'}; -my $LND_DOMAIN_FILE = $xmlvars{'LND_DOMAIN_FILE'}; -my $LND_DOMAIN_PATH = $xmlvars{'LND_DOMAIN_PATH'}; -my $LND_GRID = $xmlvars{'LND_GRID'}; -my $DLND_MODE = $xmlvars{'DLND_MODE'}; -my $GLC_NEC = $xmlvars{'GLC_NEC'}; - -(-d $DIN_LOC_ROOT) or mkdir $DIN_LOC_ROOT; -if ($print>=2) { print "Inputdata root directory: $DIN_LOC_ROOT$eol"; } - -#################################### -# Streams file(s) # -#################################### - -# Create input data list (written to later) -my $fh_out = new IO::File; -$fh_out->open(">$CASEROOT/Buildconf/dlnd.input_data_list") or - die "** can't open filepath file: dlnd.input_data_list\n"; - -# Create hash needed to parse namelist_defaults_dlnd.xml file -my %default_namelist_opts; -$default_namelist_opts{'dlnd_mode'} = $DLND_MODE; -$default_namelist_opts{'lnd_grid'} = $LND_GRID; - -# Create streams template file(s) - loop over streams -my $streams = $defaults->get_value( "streamslist", \%default_namelist_opts ); -my @streams = split ",", $streams, -1; - -my $ostreams = undef; -my $omapalgo = undef; -my $omapmask = undef; -my $otintalgo = undef; -my $otaxmode = undef; -my $ofillalgo = undef; -my $ofillmask = undef; -my $odtlimit = undef; -foreach my $stream ( @streams ) { - - # Set stream specific part of default_namelist_opts hash - $default_namelist_opts{'stream'} = $stream; - - my $outstream = "dlnd.streams.txt" . ".$stream" . "$INST_STRING"; - if ($print>=1) { print " dlnd stream is $stream$INST_STRING \n";} - - if ($stream eq "NULL") { - - # do nothing - - } elsif (-e "$CASEROOT/user_$outstream") { - - my $command = "cp -p $CASEROOT/user_$outstream $CASEROOT/CaseDocs/$outstream"; - system($command) == 0 or die "system $command failed: $? \n"; - - } else { - - # Create hash to initialze streams object - my %stream_template_opts; - if ( $print == 0 ) { - $stream_template_opts{'printing'} = 0; - } else { - $stream_template_opts{'printing'} = 1; - } - $stream_template_opts{'test'} = $opts{'test'}; - $stream_template_opts{'ProgName'} = $ProgName; - $stream_template_opts{'ProgDir'} = "$cfgdir"; - $stream_template_opts{'cmdline'} = $cmdline; - - $stream_template_opts{'offset'} = 0; - $stream_template_opts{'filepath'} = $defaults->get_value( "strm_datdir" , \%default_namelist_opts ); - $stream_template_opts{'filenames'} = $defaults->get_value( "strm_datfil" , \%default_namelist_opts ); - $stream_template_opts{'domainpath'} = $defaults->get_value( "strm_domdir" , \%default_namelist_opts ); - $stream_template_opts{'domain'} = $defaults->get_value( "strm_domfil" , \%default_namelist_opts ); - $stream_template_opts{'datvarnames'}= $defaults->get_value( "strm_datvar" , \%default_namelist_opts ); - $stream_template_opts{'domvarnames'}= $defaults->get_value( "strm_domvar" , \%default_namelist_opts ); - $stream_template_opts{'yearfirst'} = $defaults->get_value( "strm_year_start", \%default_namelist_opts ); - $stream_template_opts{'yearlast'} = $defaults->get_value( "strm_year_end" , \%default_namelist_opts ); - - $stream_template_opts{'filepath'} = SetupTools::expand_xml_var($stream_template_opts{'filepath'} , \%xmlvars); - $stream_template_opts{'filenames'} = SetupTools::expand_xml_var($stream_template_opts{'filenames'} , \%xmlvars); - $stream_template_opts{'domainpath'} = SetupTools::expand_xml_var($stream_template_opts{'domainpath'}, \%xmlvars); - $stream_template_opts{'domain'} = SetupTools::expand_xml_var($stream_template_opts{'domain'} , \%xmlvars); - $stream_template_opts{'yearfirst'} = SetupTools::expand_xml_var($stream_template_opts{'yearfirst'} , \%xmlvars); - $stream_template_opts{'yearlast'} = SetupTools::expand_xml_var($stream_template_opts{'yearlast'} , \%xmlvars); - - $stream_template_opts{'glc_nec'} = $GLC_NEC; - - # Create the streams txt file for this stream (from a generic template) - my $stream_template = Streams::TemplateGeneric->new( \%stream_template_opts ); - $stream_template->Read( "${CASEROOT}/Buildconf/dlnd.template.streams.xml" ); - $stream_template->Write( $outstream ); - - # Append to dice.input_data_list - my @filenames = $stream_template->GetDataFilenames( 'domain'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "domain${i} = $file\n"; - } - - my @filenames = $stream_template->GetDataFilenames( 'data'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "file${i} = $file\n"; - } - } - - # Stream specific namelist variables used below for $nl - my $tintalgo = $defaults->get_value( "strm_tintalgo" , \%default_namelist_opts); - my $mapalgo = $defaults->get_value( 'strm_mapalgo' , \%default_namelist_opts); - my $mapmask = $defaults->get_value( 'strm_mapmask' , \%default_namelist_opts); - my $taxmode = $defaults->get_value( "strm_taxmode" , \%default_namelist_opts); - my $fillalgo = $defaults->get_value( 'strm_fillalgo' , \%default_namelist_opts); - my $fillmask = $defaults->get_value( 'strm_fillmask' , \%default_namelist_opts); - my $dtlimit = $defaults->get_value( 'strm_dtlimit' , \%default_namelist_opts); - my $beg_year = $defaults->get_value( 'strm_year_start', \%default_namelist_opts); - my $end_year = $defaults->get_value( 'strm_year_end' , \%default_namelist_opts); - my $align_year = $defaults->get_value( 'strm_year_align', \%default_namelist_opts); - $beg_year = SetupTools::expand_xml_var($beg_year , \%xmlvars); - $end_year = SetupTools::expand_xml_var($end_year , \%xmlvars); - $align_year = SetupTools::expand_xml_var($align_year, \%xmlvars); - - if ( $beg_year > $end_year ) { - print "\n\nbeg_year=$beg_year end_year=$end_year\n"; - die "$ProgName ERROR:: beg_year greater than end_year\n"; - } - - if ( ! defined($ostreams) ) { - $ostreams = "\"$outstream $align_year $beg_year $end_year\""; - $omapalgo = "\'$mapalgo\'"; - $omapmask = "\'$mapmask\'"; - $otintalgo = "\'$tintalgo\'"; - $otaxmode = "\'$taxmode\'"; - $ofillalgo = "\'$fillalgo\'"; - $ofillmask = "\'$fillmask\'"; - $odtlimit = "$dtlimit"; - } else { - $ostreams = "$ostreams,\"$outstream $align_year $beg_year $end_year\""; - $omapalgo .= ",\'$mapalgo\'"; - $omapmask .= ",\'$mapmask\'"; - $otintalgo .= ",\'$tintalgo\'"; - $otaxmode .= ",\'$taxmode\'"; - $ofillalgo .= ",\'$fillalgo\'"; - $ofillmask .= ",\'$fillmask\'"; - $odtlimit .= ",$dtlimit"; - } -} - -$fh_out->close; - -#################################### -# namelist group: shr_strdata_nml # -#################################### - -my $datamode = $defaults->get_value( "datamode", \%default_namelist_opts ); -add_default($nl, 'datamode', 'val' => "$datamode"); -add_default($nl, 'domainfile', 'val' => "$LND_DOMAIN_PATH/$LND_DOMAIN_FILE" ); -if ($datamode ne 'NULL') { - add_default($nl, 'streams', 'val' => "$ostreams" ); - add_default($nl, 'mapalgo', 'val' => "$omapalgo" ); - add_default($nl, 'mapmask', 'val' => "$omapmask" ); - add_default($nl, 'tintalgo', 'val' => "$otintalgo" ); - add_default($nl, 'taxmode', 'val' => "$otaxmode" ); - add_default($nl, 'fillalgo', 'val' => "$ofillalgo" ); - add_default($nl, 'fillmask', 'val' => "$ofillmask" ); - add_default($nl, 'dtlimit', 'val' => "$odtlimit" ); -} - -############################# -# namelist group: dlnd_nml # -############################# - -add_default($nl, 'lnd_in', 'val'=>"dlnd_lnd_in${INST_STRING}"); -add_default($nl, 'decomp'); -add_default($nl, 'force_prognostic_true', 'val'=>'.false.'); - -if ( $RUN_TYPE =~ /branch/ ) { - # The dlnd master restart file is currently unused - #if (not defined $nl->get_value('restfilm')) { - # die "$ProgName ERROR:: restfilm is required for a branch type.\n"; - #} -} - -#----------------------------------------------------------------------------------------------- -# Validate that the entire resultant namelist is valid -# -$definition->validate($nl); - -#----------------------------------------------------------------------------------------------- -# Write output files -# -my $note = ""; - -# dlnd_lnd_in -my @groups = qw(shr_strdata_nml); -my $outfile; -$outfile = "./dlnd_lnd_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing dlnd_dshr namelist to $outfile $eol"; } - -# dlnd_in -@groups = qw(dlnd_nml); -$outfile = "./dlnd_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing dlnd_in namelist to $outfile $eol"; } - -# lnd_modelio -@groups = qw(modelio); -$outfile = "./lnd_modelio.nml"; -$nl->set_variable_value( "modelio", "logfile", "'lnd.log'" ); -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing lnd_modelio.nml namelist to $outfile $eol"; } - -# Create file of required local input datasets -check_input_files($nl, $DIN_LOC_ROOT, "$CASEROOT/Buildconf/dlnd.input_data_list"); - - -#=============================================================================================== -#=============================================================================================== -# END OF MAIN SCRIPT -#=============================================================================================== -#=============================================================================================== - -sub add_default { - -# Add a value for the specified variable to the specified namelist object. The variables -# already in the object have the higher precedence, so if the specified variable is already -# defined in the object then don't overwrite it, just return. -# -# This method checks the definition file and adds the variable to the correct -# namelist group. -# -# The value can be provided by using the optional argument key 'val' in the -# calling list. Otherwise a default value is obtained from the namelist -# defaults object. If no default value is found this method throws an exception -# unless the 'nofail' option is set true. -# -# Example 1: Specify the default value $val for the namelist variable $var in namelist -# object $nl: -# -# add_default($nl, $var, 'val'=>$val) -# -# Example 2: Add a default for variable $var if an appropriate value is found. Otherwise -# don't add the variable -# -# add_default($nl, $var, 'nofail'=>1) -# -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object -# $defaults -- the namelist defaults object -# $DIN_LOC_ROOT -- inputdata root directory - - my $nl = shift; # namelist object - my $var = shift; # name of namelist variable - my %opts = @_; # options - - # If variable has quotes around it - if ( $var =~ /'(.+)'/ ) { - $var = $1; - } - # Query the definition to find which group the variable belongs to. Exit if not found. - my $group = $definition->get_group_name($var); - unless ($group) { - my $fname = $definition->get_file_name(); - die "$ProgName - ERROR: variable \"$var\" not found in namelist definition file $fname.\n"; - } - - # check whether the variable has a value in the namelist object -- if so then skip to end - my $val = $nl->get_variable_value($group, $var); - if (! defined $val) { - - # Look for a specified value in the options hash - - if (defined $opts{'val'}) { - $val = $opts{'val'}; - } - # or else get a value from namelist defaults object. - # Note that if the 'val' key isn't in the hash, then just pass anything else - # in %opts to the get_value method to be used as attributes that are matched - # when looking for default values. - else { - $val = $defaults->get_value($var, \%opts); - - # Truncate model_version appropriately - - if ( $var eq "model_version" ) { - $val =~ /(URL: https:\/\/[a-zA-Z0-9._-]+\/)([a-zA-Z0-9\/._-]+)(\/bld\/.+)/; - $val = $2; - } - } - - unless ( defined($val) ) { - unless ($opts{'nofail'}) { - die "$ProgName - No default value found for $var.\n" . - " Are defaults provided? \n"; - } - else { - return; - } - } - - - # query the definition to find out if the variable is an input pathname - my $is_input_pathname = $definition->is_input_pathname($var); - - # The default values for input pathnames are relative. If the namelist - # variable is defined to be an absolute pathname, then prepend - # the inputdata root directory. - if (not defined $opts{'no_abspath'}) { - if (defined $opts{'set_abspath'}) { - $val = set_abs_filepath($val, $opts{'set_abspath'}); - } else { - if ($is_input_pathname eq 'abs') { - $val = set_abs_filepath($val, $DIN_LOC_ROOT); - } - } - } - - # query the definition to find out if the variable takes a string value. - # The returned string length will be >0 if $var is a string, and 0 if not. - my $str_len = $definition->get_str_len($var); - - # If the variable is a string, then add quotes if they're missing - if ($str_len > 0) { - $val = quote_string($val); - } - - # set the value in the namelist - $nl->set_variable_value($group, $var, $val); - } - -} - -#----------------------------------------------------------------------------------------------- - -sub check_input_files { - -# For each variable in the namelist which is an input dataset, check to see if it -# exists locally. -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object - - my $nl = shift; # namelist object - my $inputdata_rootdir = shift; # if false prints test, else creates inputdata file - my $outfile = shift; - open(OUTFILE, ">>$outfile") if defined $inputdata_rootdir; - - # Look through all namelist groups - my @groups = $nl->get_group_names(); - foreach my $group (@groups) { - - # Look through all variables in each group - my @vars = $nl->get_variable_names($group); - foreach my $var (@vars) { - - # Is the variable an input dataset? - my $input_pathname_type = $definition->is_input_pathname($var); - - # If it is, check whether it exists locally and print status - if ($input_pathname_type) { - - # Get pathname of input dataset - my $pathname = $nl->get_variable_value($group, $var); - # Need to strip the quotes - $pathname =~ s/[\'\"]//g; - - if ($input_pathname_type eq 'abs') { - if ($inputdata_rootdir) { - print OUTFILE "$var = $pathname\n"; - } - else { - if (-e $pathname) { # use -e rather than -f since the absolute pathname - # might be a directory - print "OK -- found $var = $pathname\n"; - } - else { - print "NOT FOUND: $var = $pathname\n"; - } - } - } - elsif ($input_pathname_type =~ m/rel:(.+)/o) { - # The match provides the namelist variable that contains the - # root directory for a relative filename - my $rootdir_var = $1; - my $rootdir = $nl->get_variable_value($group, $rootdir_var); - $rootdir =~ s/[\'\"]//g; - if ($inputdata_rootdir) { - $pathname = "$rootdir/$pathname"; - print OUTFILE "$var = $pathname\n"; - } - else { - if (-f "$rootdir/$pathname") { - print "OK -- found $var = $rootdir/$pathname\n"; - } - else { - print "NOT FOUND: $var = $rootdir/$pathname\n"; - } - } - } - } - } - } - close OUTFILE if defined $inputdata_rootdir; - return 0 if defined $inputdata_rootdir; -} - -#----------------------------------------------------------------------------------------------- - -sub set_abs_filepath { - -# check whether the input filepath is an absolute path, and if it isn't then -# prepend a root directory - - my ($filepath, $rootdir) = @_; - - # strip any leading/trailing whitespace - $filepath =~ s/^\s+//; - $filepath =~ s/\s+$//; - $rootdir =~ s/^\s+//; - $rootdir =~ s/\s+$//; - - # strip any leading/trailing quotes - $filepath =~ s/^['"]+//; - $filepath =~ s/["']+$//; - $rootdir =~ s/^['"]+//; - $rootdir =~ s/["']+$//; - - my $out = $filepath; - unless ( $filepath =~ /^\// ) { # unless $filepath starts with a / - $out = "$rootdir/$filepath"; # prepend the root directory - } - return $out; -} - -#----------------------------------------------------------------------------------------------- - -sub valid_option { - - my ($val, @expect) = @_; - my ($expect); - - $val =~ s/^\s+//; - $val =~ s/\s+$//; - foreach $expect (@expect) { - if ($val =~ /^$expect$/i) { return $expect; } - } - return undef; -} - -#----------------------------------------------------------------------------------------------- - -sub validate_options { - - my $source = shift; # text string declaring the source of the options being validated - my $cfg = shift; # configure object - my $opts = shift; # reference to hash that contains the options - - my ($opt, $old, @expect); -} - -#----------------------------------------------------------------------------------------------- - -sub quote_string { - my $str = shift; - $str =~ s/^\s+//; - $str =~ s/\s+$//; - unless ($str =~ /^['"]/) { #"' - $str = "\'$str\'"; - } - return $str; -} - -#------------------------------------------------------------------------------- - diff --git a/cime/components/data_comps/dlnd/bld/namelist_files/namelist_defaults_dlnd.xml b/cime/components/data_comps/dlnd/bld/namelist_files/namelist_defaults_dlnd.xml deleted file mode 100644 index a9ca57434cd2..000000000000 --- a/cime/components/data_comps/dlnd/bld/namelist_files/namelist_defaults_dlnd.xml +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - -NULL -COPYALL -COPYALL - - - - - -NULL -lnd.cplhist -sno.cplhist - - - - - -$DLND_CPLHIST_YR_ALIGN -$DLND_CPLHIST_YR_START -$DLND_CPLHIST_YR_END -$DLND_CPLHIST_CASE -0 -lower -cycle -$DIN_LOC_ROOT/lnd/dlnd7 -domain.lnd.fv0.9x1.25_gx1v6.090309.nc -$DLND_CPLHIST_DIR -$DLND_CPLHIST_CASE.cpl.hs2x.%y-01-01.nc - - time time - xc lon - yc lat - area area - mask mask - - - s2x_Ss_tsrf%glc tsrf%glc - s2x_Ss_topo%glc topo%glc - s2x_Fgss_qice%glc qice%glc - - - - - - -1d - -1.5e0 - -nn - -nomask - -bilinear - -dstmask - -linear - -cycle - - diff --git a/cime/components/data_comps/dlnd/bld/namelist_files/namelist_definition_dlnd.xml b/cime/components/data_comps/dlnd/bld/namelist_files/namelist_definition_dlnd.xml deleted file mode 100644 index a7175032ffd8..000000000000 --- a/cime/components/data_comps/dlnd/bld/namelist_files/namelist_definition_dlnd.xml +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - - - - - - - - - -valid values: NULL,COPYALL -datamode = "NULL" - NULL is always a valid option and means no data will be generated. - Turns off the data model as a provider of data to the coupler. The - ice_present flag will be set to false and the coupler will assume no - exchange of data to or from the data model. -dataMode = "COPYALL" - Copies all fields directly from the input data streams Any required - fields not found on an input stream will be set to zero. - -Set by the following xml variables in env_run.xml -DLND_MODE - default value: NULL - - - -spatial gridfile associated with the strdata. grid information will -be read from this file and that grid will serve as the target grid -for all input data for this strdata input. - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are just copy (ie. no fill), special value, -nearest neighbor, nearest neighbor in "i" direction, or nearest -neighbor in "j" direction. -valid values: 'copy','spval','nn','nnoni','nnonj' -default: "nn". - - - -plays no role is fill algorithm at the present time. -valid values: "nomask,srcmask,dstmask,bothmask" -default: "nomask" - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read in instead of computing the -weights on the fly for the fill operation. if this is set, fillalgo -and fillmask are ignored. -default: unset - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the fill operation. this allows a user to -save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of masking algorithms for mapping input data -associated with the array of streams. valid options are map only from -valid src points, map only to valid destination points, ignore all -masks, map only from valid src points to valid destination points. -valid values: srcmask, dstmask, nomask,bothmask -default: dstmask - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are copy by index, set to special value, -nearest neighbor, nearest neighbor in "i" direction, nearest neighbor -in "j" direction, or bilinear. -valid values: copy,spval,nn,nnoni,nnonj,bilinear -default: bilinear - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read instead of computing -weights on the fly for the mapping (interpolation) operation. if this -is set, mapalgo and mapmask are ignored. default="unset". - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the mapping (interpolation) operation. this -allows a user to save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of time interpolation options associated with the array of -streams. -valid values: lower,upper,nearest,linear,coszen - lower = Use lower time-value - upper = Use upper time-value - nearest = Use the nearest time-value - linear = Linearly interpolate between the two time-values - coszen = Scale according to the cosine of the solar zenith angle (for solar) -default="linear". - - - -array of time axis modes associated with the array of streams for -handling data outside the specified stream time axis. -valid options are to cycle the data based on the first, last, and -align settings associated with the stream dataset, to extend the first -and last valid value indefinitely, or to limit the interpolated data -to fall only between the least and greatest valid value of the time array. -valid values: cycle,extend,limit - extend = extrapolate before and after the period by using the first or last value. - cycle = cycle between the range of data - limit = restrict to the period for which the data is valid -default="cycle". - - - -array (up to 30 elements) of delta time ratio limits placed on the -time interpolation associated with the array of streams. this real -value causes the model to stop if the ratio of the running maximum -delta time divided by the minimum delta time is greater than the -dtlimit for that stream. for instance, with daily data, the delta -time should be exactly one day throughout the dataset and the computed -maximum divided by minimum delta time should always be 1.0. for -monthly data, the delta time should be between 28 and 31 days and the -maximum ratio should be about 1.1. the running value of the delta -time is computed as data is read and any wraparound or cycling is also -included. this input helps trap missing data or errors in cycling. -to turn off trapping, set the value to 1.0e30 or something similar. -default=1.5. - - - -character array (up to 30 elements) of stream input files. this -string is actually parsed by a stream method and so the format is -specified by the stream module. this string consists of a -"stream_input_filename year_align year_first year_last". the -stream_input_filename is a stream text input file and the format and -options are described elsewhere. year_align, year_first, and -year_last provide information about the time axis of the file and how -to relate the input time axis to the model time axis. -default="null". - - - - - - - -Namelist filename for data model lnd share stream data namelist - - - -DLND Decomposition strategy - 1d = Vector decomposition - root = run only on the master task - - - -Master restart file name for dlnd model - - - -Stream restart file name for dlnd model, needed for branch simulations - - - -If TRUE, prognostic is forced to true. -default=false - - - diff --git a/cime/components/data_comps/dlnd/cime_config/buildlib b/cime/components/data_comps/dlnd/cime_config/buildlib index d8112b6f24da..81bad4d7411c 100755 --- a/cime/components/data_comps/dlnd/cime_config/buildlib +++ b/cime/components/data_comps/dlnd/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_data_lib diff --git a/cime/components/data_comps/dlnd/cime_config/buildnml b/cime/components/data_comps/dlnd/cime_config/buildnml index b9c3c7bfe37a..04c6de1f9d60 100755 --- a/cime/components/data_comps/dlnd/cime_config/buildnml +++ b/cime/components/data_comps/dlnd/cime_config/buildnml @@ -1,17 +1,219 @@ #!/usr/bin/env python +"""Namelist creator for CIME's data ocn model. """ -build data model library -""" -import sys, os +# Typically ignore this. +# pylint: disable=invalid-name + +# Disable these because this is our standard setup +# pylint: disable=wildcard-import,unused-wildcard-import,wrong-import-position + +import os, shutil, sys, glob -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_data_nml +from CIME.case import Case +from CIME.nmlgen import NamelistGenerator +from CIME.utils import expect +from CIME.XML.files import Files +from CIME.buildnml import create_namelist_infile, parse_input + +logger = logging.getLogger(__name__) + +# pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements +#################################################################################### +def _create_namelists(case, confdir, inst_string, infile, nmlgen): +#################################################################################### + """Write out the namelist for this component. + + Most arguments are the same as those for `NamelistGenerator`. The + `inst_string` argument is used as a suffix to distinguish files for + different instances. The `confdir` argument is used to specify the directory + in which output files will be placed. + """ + + #---------------------------------------------------- + # Get a bunch of information from the case. + #---------------------------------------------------- + lnd_domain_file = case.get_value("LND_DOMAIN_FILE") + lnd_domain_path = case.get_value("LND_DOMAIN_PATH") + dlnd_mode = case.get_value("DLND_MODE") + lnd_grid = case.get_value("LND_GRID") + + glc_nec = case.get_value("GLC_NEC") + + #---------------------------------------------------- + # Check for incompatible options. + #---------------------------------------------------- + expect(lnd_grid != "null", + "LND_GRID cannot be null") + expect(dlnd_mode != "NULL", + "DLND_MODE cannot be NULL") + + #---------------------------------------------------- + # Log some settings. + #---------------------------------------------------- + logger.debug("DLND mode is %s", dlnd_mode) + logger.debug("DLND grid is %s", lnd_grid) + logger.debug("DLND glc_nec is %s", glc_nec) + + #---------------------------------------------------- + # Clear out old data. + #---------------------------------------------------- + data_list_path = os.path.join(case.get_case_root(), "Buildconf", + "dlnd.input_data_list") + if os.path.exists(data_list_path): + os.remove(data_list_path) + + #---------------------------------------------------- + # Create configuration information. + #---------------------------------------------------- + config = {} + config['lnd_grid'] = lnd_grid + config['dlnd_mode'] = dlnd_mode + + #---------------------------------------------------- + # Initialize namelist defaults + #---------------------------------------------------- + nmlgen.init_defaults(infile, config) + + #---------------------------------------------------- + # Construct the list of streams. + #---------------------------------------------------- + streams = nmlgen.get_streams() + + #---------------------------------------------------- + # For each stream, create stream text file and update + # shr_strdata_nml group and input data list. + #---------------------------------------------------- + for stream in streams: + + # Ignore null values. + if stream is None or stream in ("NULL", ""): + continue + + inst_stream = stream + inst_string + logger.debug("DLND stream is %s", inst_stream) + stream_path = os.path.join(confdir, "dlnd.streams.txt." + inst_stream) + user_stream_path = os.path.join(case.get_case_root(), + "user_dlnd.streams.txt." + inst_stream) + + # Use the user's stream file, or create one if necessary. + if os.path.exists(user_stream_path): + shutil.copyfile(user_stream_path, stream_path) + config['stream'] = stream + nmlgen.update_shr_strdata_nml(config, stream, stream_path) + else: + nmlgen.create_stream_file_and_update_shr_strdata_nml(config, stream, stream_path, data_list_path) + + #---------------------------------------------------- + # Create `shr_strdata_nml` namelist group. + #---------------------------------------------------- + # set per-stream variables + nmlgen.create_shr_strdata_nml() + + # set variables that are not per-stream + if lnd_domain_file != "UNSET": + full_domain_path = os.path.join(lnd_domain_path, lnd_domain_file) + nmlgen.add_default("domainfile", value=full_domain_path) + + #---------------------------------------------------- + # Finally, write out all the namelists. + #---------------------------------------------------- + namelist_file = os.path.join(confdir, "dlnd_in") + nmlgen.write_output_file(namelist_file, data_list_path, groups=['dlnd_nml','shr_strdata_nml']) + +############################################################################### +def buildnml(case, caseroot, compname): +############################################################################### + + # Build the component namelist and required stream txt files + + if compname != "dlnd": + raise AttributeError + + rundir = case.get_value("RUNDIR") + ninst = case.get_value("NINST_LND") + + confdir = os.path.join(caseroot,"Buildconf",compname + "conf") + if not os.path.isdir(confdir): + os.makedirs(confdir) + + #---------------------------------------------------- + # Construct the namelist generator + #---------------------------------------------------- + # determine directory for user modified namelist_definitions.xml + user_xml_dir = os.path.join(caseroot, "SourceMods", "src." + compname) + expect (os.path.isdir(user_xml_dir), + "user_xml_dir %s does not exist " %user_xml_dir) + + # NOTE: User definition *replaces* existing definition. + files = Files() + definition_file = [files.get_value("NAMELIST_DEFINITION_FILE", {"component":"dlnd"})] + + user_definition = os.path.join(user_xml_dir, "namelist_definition_dlnd.xml") + if os.path.isfile(user_definition): + definition_file = [user_definition] + for file_ in definition_file: + expect(os.path.isfile(file_), "Namelist XML file %s not found!" % file_) + + # Create the namelist generator object - independent of instance + nmlgen = NamelistGenerator(case, definition_file, files=files) + + #---------------------------------------------------- + # Loop over instances + #---------------------------------------------------- + for inst_counter in range(1, ninst+1): + + # determine instance string + inst_string = "" + if ninst > 1: + inst_string = '_' + '%04d' % inst_counter + + # If multi-instance case does not have restart file, use + # single-case restart for each instance + rpointer = "rpointer." + compname + 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), + os.path.join(rundir, rpointer + inst_string)) + + inst_string_label = inst_string + if not inst_string_label: + inst_string_label = "\"\"" + + # create namelist output infile using user_nl_file as input + user_nl_file = os.path.join(caseroot, "user_nl_" + compname + inst_string) + expect(os.path.isfile(user_nl_file), + "Missing required user_nl_file %s " %(user_nl_file)) + infile = os.path.join(confdir, "namelist_infile") + create_namelist_infile(case, user_nl_file, infile) + namelist_infile = [infile] + + # create namelist and stream file(s) data component + _create_namelists(case, confdir, inst_string, namelist_infile, nmlgen) + + # copy namelist files and stream text files, to rundir + if os.path.isdir(rundir): + filename = compname + "_in" + file_src = os.path.join(confdir, filename) + file_dest = os.path.join(rundir, filename) + if inst_string: + file_dest += inst_string + shutil.copy(file_src,file_dest) + + for txtfile in glob.glob(os.path.join(confdir, "*txt*")): + shutil.copy(txtfile, rundir) + +############################################################################### +def _main_func(): + # Build the component namelist and required stream txt files + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "dlnd") -build_data_nml(sys.argv, 'lnd') +if __name__ == "__main__": + _main_func() diff --git a/cime/components/data_comps/dlnd/cime_config/config_archive.xml b/cime/components/data_comps/dlnd/cime_config/config_archive.xml new file mode 100644 index 000000000000..1ccea9bdf31f --- /dev/null +++ b/cime/components/data_comps/dlnd/cime_config/config_archive.xml @@ -0,0 +1,10 @@ + + + \.r.* + unset + + rpointer$NINST_STRING.lnd + $CASE.dlnd$NINST_STRING.r.$DATENAME.nc,$CASE.dlnd$NINST_STRING.rs1.$DATENAME.bin + + + diff --git a/cime/components/data_comps/dlnd/cime_config/config_component.xml b/cime/components/data_comps/dlnd/cime_config/config_component.xml index e2814b9248e9..f74f63c47d79 100644 --- a/cime/components/data_comps/dlnd/cime_config/config_component.xml +++ b/cime/components/data_comps/dlnd/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -34,11 +34,11 @@ char UNSET - $DIN_LOC_ROOT/lnd/dlnd7/CPLHIST_SNO/b.e10.BG20TRCN.f09_g16.002_c121001 - $DIN_LOC_ROOT/lnd/dlnd7/CPLHIST_SNO/b.e10.BG1850CN.f09_g16.002_c121001 - $DIN_LOC_ROOT/lnd/dlnd7/CPLHIST_SNO/b.e10.BG20TRCN.f09_g16.002_c121001 - $DIN_LOC_ROOT/lnd/dlnd7/CPLHIST_SNO/b.e10.BG20TRCN.f09_g16.002_c121001 - $DIN_LOC_ROOT/lnd/dlnd7/CPLHIST_SNO/b.e10.BGRCP85CN.f09_g16.002_c121001 + $DIN_LOC_ROOT/lnd/dlnd7/CPLHIST_SNO/b.e10.BG20TRCN.f09_g16.002_c121001 + $DIN_LOC_ROOT/lnd/dlnd7/CPLHIST_SNO/b.e10.BG1850CN.f09_g16.002_c121001 + $DIN_LOC_ROOT/lnd/dlnd7/CPLHIST_SNO/b.e10.BG20TRCN.f09_g16.002_c121001 + $DIN_LOC_ROOT/lnd/dlnd7/CPLHIST_SNO/b.e10.BGRCP85CN.f09_g16.002_c121001 + $DIN_LOC_ROOT/lnd/dlnd7/CPLHIST_SNO/b.e10.BG20TRCN.f09_g16.002_c121001 run_component_dlnd env_run.xml @@ -49,11 +49,11 @@ char UNSET - b.e10.BG20TRCN.f09_g16.002 - b.e10.BG1850CN.f09_g16.002 - b.e10.BG20TRCN.f09_g16.002 - b.e10.BG20TRCN.f09_g16.002 - b.e10.BGRCP85CN.f09_g16.002 + b.e10.BG20TRCN.f09_g16.002 + b.e10.BG1850CN.f09_g16.002 + b.e10.BG20TRCN.f09_g16.002 + b.e10.BG20TRCN.f09_g16.002 + b.e10.BGRCP85CN.f09_g16.002 run_component_dlnd env_run.xml @@ -64,11 +64,11 @@ integer 1 - 1 - 1 - 1850 - 1850 - 2006 + 1 + 1 + 1850 + 1850 + 2006 run_component_dlnd env_run.xml @@ -79,11 +79,11 @@ integer 1 - 1976 - 26 - 1850 - 1850 - 2006 + 1976 + 26 + 1850 + 1850 + 2006 run_component_dlnd env_run.xml @@ -94,11 +94,11 @@ integer 1 - 2005 - 100 - 2005 - 2005 - 2100 + 2005 + 100 + 2005 + 2005 + 2100 run_component_dlnd env_run.xml @@ -117,5 +117,5 @@ ========================================= - + diff --git a/cime/components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml b/cime/components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml new file mode 100644 index 000000000000..406c2636c4a1 --- /dev/null +++ b/cime/components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml @@ -0,0 +1,514 @@ + + + + + + + + + + + + + + char(100) + streams + streams_file + List of streams used for the given datm_mode. + + NULL + lnd.cplhist + sno.cplhist + + + + + char + streams + streams_file + Stream domain file directory. + + $DIN_LOC_ROOT/lnd/dlnd7 + + + + + char + streams + streams_file + Stream domain file path(s). + + domain.lnd.fv0.9x1.25_gx1v6.090309.nc + + + + + char + streams + streams_file + Stream domain variable name(s). + + + time time + xc lon + yc lat + area area + mask mask + + + + + + char + streams + streams_file + Stream data file directory. + + $DLND_CPLHIST_DIR + + + + + char + streams + streams_file + Stream data file path(s). + + $DLND_CPLHIST_CASE.cpl.hs2x.%y-01-01.nc + + + + + char + streams + streams_file + Stream data variable name(s). + + + s2x_Ss_tsrf%glc tsrf%glc + s2x_Ss_topo%glc topo%glc + s2x_Fgss_qice%glc qice%glc + + + + + + integer + streams + streams_file + Stream offset. + + 0 + + + + + integer + streams + streams_file + Simulation year to align stream to. + + $DLND_CPLHIST_YR_ALIGN + + + + + integer + streams + streams_file + First year of stream. + + $DLND_CPLHIST_YR_START + + + + + integer + streams + streams_file + Last year of stream. + + $DLND_CPLHIST_YR_END + + + + + + + + + + + + + char + streams + shr_strdata_nml + NULL,COPYALL + + datamode = "NULL" + NULL is always a valid option and means no data will be generated. + Turns off the data model as a provider of data to the coupler. The + ice_present flag will be set to false and the coupler will assume no + exchange of data to or from the data model. + dataMode = "COPYALL" + Copies all fields directly from the input data streams Any required + fields not found on an input stream will be set to zero. + + Set by the following xml variables in env_run.xml + DLND_MODE + default value: NULL + + + NULL + COPYALL + COPYALL + + + + + char + streams + abs + shr_strdata_nml + + spatial gridfile associated with the strdata. grid information will + be read from this file and that grid will serve as the target grid + for all input data for this strdata input. + + + null + + + + + char(30) + streams + shr_strdata_nml + copy,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are just copy (ie. no fill), special value, + nearest neighbor, nearest neighbor in "i" direction, or nearest + neighbor in "j" direction. + valid values: 'copy','spval','nn','nnoni','nnonj' + + + nn + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + plays no role is fill algorithm at the present time. + + + nomask + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read in instead of computing the + weights on the fly for the fill operation. if this is set, fillalgo + and fillmask are ignored. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the fill operation. this allows a user to + save and reuse a set of weights later. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + array (up to 30 elements) of masking algorithms for mapping input data + associated with the array of streams. valid options are map only from + valid src points, map only to valid destination points, ignore all + masks, map only from valid src points to valid destination points. + + + dstmask + + + + + char(30) + streams + shr_strdata_nml + copy,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are copy by index, set to special value, + nearest neighbor, nearest neighbor in "i" direction, nearest neighbor + in "j" direction, or bilinear. + valid values: copy,spval,nn,nnoni,nnonj,bilinear + + + bilinear + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read instead of computing + weights on the fly for the mapping (interpolation) operation. if this + is set, mapalgo and mapmask are ignored. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the mapping (interpolation) operation. this + allows a user to save and reuse a set of weights later. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + coszen,nearest,linear,lower,upper + + array (up to 30 elements) of time interpolation options associated with the array of + streams. + valid values: lower,upper,nearest,linear,coszen + lower = Use lower time-value + upper = Use upper time-value + nearest = Use the nearest time-value + linear = Linearly interpolate between the two time-values + coszen = Scale according to the cosine of the solar zenith angle (for solar) + + + linear + lower + + + + + char(30) + streams + shr_strdata_nml + extend,cycle,limit + + array of time axis modes associated with the array of streams for + handling data outside the specified stream time axis. + valid options are to cycle the data based on the first, last, and + align settings associated with the stream dataset, to extend the first + and last valid value indefinitely, or to limit the interpolated data + to fall only between the least and greatest valid value of the time array. + valid values: cycle,extend,limit + extend = extrapolate before and after the period by using the first or last value. + cycle = cycle between the range of data + limit = restrict to the period for which the data is valid + + + cycle + + + + + real(30) + streams + shr_strdata_nml + + array (up to 30 elements) of delta time ratio limits placed on the + time interpolation associated with the array of streams. this real + value causes the model to stop if the ratio of the running maximum + delta time divided by the minimum delta time is greater than the + dtlimit for that stream. for instance, with daily data, the delta + time should be exactly one day throughout the dataset and the computed + maximum divided by minimum delta time should always be 1.0. for + monthly data, the delta time should be between 28 and 31 days and the + maximum ratio should be about 1.1. the running value of the delta + time is computed as data is read and any wraparound or cycling is also + included. this input helps trap missing data or errors in cycling. + to turn off trapping, set the value to 1.0e30 or something similar. + + + 1.5e0 + + + + + char + streams + shr_strdata_nml + + list of paired colon delimited field names that should be treated as + vectors when carrying out spatial interpolation. unlike other + character arrays in this namelist, this array is completely decoupled + from the list of streams. this is a list of vector pairs that span + all input streams where different fields of the vector pair could + appear in different streams. + for example, vectors = 'u:v','taux:tauy'. + + + null + + + + + char(30) + streams + shr_strdata_nml + + character array (up to 30 elements) of stream input files. this + string is actually parsed by a stream method and so the format is + specified by the stream module. this string consists of a + "stream_input_filename year_align year_first year_last". the + stream_input_filename is a stream text input file and the format and + options are described elsewhere. year_align, year_first, and + year_last provide information about the time axis of the file and how + to relate the input time axis to the model time axis. + + + + + + + + + + + + char + dlnd + dlnd_nml + 1d,root" + + DLND Decomposition strategy + 1d = Vector decomposition + root = run only on the master task + + + 1d + + + + + char + dlnd + dlnd_nml + + Master restart file name for dlnd model + + + undefined + + + + + char + dlnd + dlnd_nml + + Stream restart file name for dlnd model, needed for branch simulations + + + undefined + + + + + logical + dlnd + dlnd_nml + If TRUE, prognostic is forced to true. + + .false. + + + + diff --git a/cime/components/data_comps/dlnd/dlnd_comp_mod.F90 b/cime/components/data_comps/dlnd/dlnd_comp_mod.F90 index 158f0d2bb564..087c1213ff7f 100644 --- a/cime/components/data_comps/dlnd/dlnd_comp_mod.F90 +++ b/cime/components/data_comps/dlnd/dlnd_comp_mod.F90 @@ -161,12 +161,11 @@ subroutine dlnd_comp_init( EClock, cdata_l, x2l, l2x, NLFilename ) integer(IN) :: yearLast ! last year to use in data stream integer(IN) :: yearAlign ! data year that aligns with yearFirst - character(CL) :: lnd_in ! dshr lnd namelist character(CL) :: decomp ! decomp strategy character(CL) :: rest_file ! restart filename character(CL) :: rest_file_strm_l ! restart filename for stream character(CL) :: restfilm ! model restart file namelist - character(CL) :: restfilsl ! stream restart file namelist + character(CL) :: restfils ! stream restart file namelist logical :: exists ! file existance logical logical :: exists_l ! file existance logical integer(IN) :: nu ! unit number @@ -176,7 +175,7 @@ subroutine dlnd_comp_init( EClock, cdata_l, x2l, l2x, NLFilename ) !----- define namelist ----- namelist / dlnd_nml / & - lnd_in, decomp, restfilm, restfilsl, & + decomp, restfilm, restfils, & force_prognostic_true !--- formats --- @@ -241,10 +240,9 @@ subroutine dlnd_comp_init( EClock, cdata_l, x2l, l2x, NLFilename ) call t_startf('dlnd_readnml') filename = "dlnd_in"//trim(inst_suffix) - lnd_in = "unset" decomp = "1d" restfilm = trim(nullstr) - restfilsl = trim(nullstr) + restfils = trim(nullstr) force_prognostic_true = .false. if (my_task == master_task) then nunit = shr_file_getUnit() ! get unused unit number @@ -256,20 +254,18 @@ subroutine dlnd_comp_init( EClock, cdata_l, x2l, l2x, NLFilename ) write(logunit,F01) 'ERROR: reading input namelist, '//trim(filename)//' iostat=',ierr call shr_sys_abort(subName//': namelist read error '//trim(filename)) end if - write(logunit,F00)' lnd_in = ',trim(lnd_in) write(logunit,F00)' decomp = ',trim(decomp) write(logunit,F00)' restfilm = ',trim(restfilm) - write(logunit,F00)' restfilsl = ',trim(restfilsl) + write(logunit,F00)' restfils = ',trim(restfils) write(logunit,F0L)' force_prognostic_true = ',force_prognostic_true endif - call shr_mpi_bcast(lnd_in,mpicom,'lnd_in') call shr_mpi_bcast(decomp,mpicom,'decomp') call shr_mpi_bcast(restfilm,mpicom,'restfilm') - call shr_mpi_bcast(restfilsl,mpicom,'restfilsl') + call shr_mpi_bcast(restfils,mpicom,'restfils') call shr_mpi_bcast(force_prognostic_true,mpicom,'force_prognostic_true') rest_file = trim(restfilm) - rest_file_strm_l = trim(restfilsl) + rest_file_strm_l = trim(restfils) if (force_prognostic_true) then lnd_present = .true. lnd_prognostic = .true. @@ -279,7 +275,7 @@ subroutine dlnd_comp_init( EClock, cdata_l, x2l, l2x, NLFilename ) ! Read dshr namelist !---------------------------------------------------------------------------- - call shr_strdata_readnml(SDLND,trim(lnd_in),mpicom=mpicom) + call shr_strdata_readnml(SDLND,trim(filename),mpicom=mpicom) !---------------------------------------------------------------------------- ! Validate mode diff --git a/cime/components/data_comps/dlnd/lnd_comp_esmf.F90 b/cime/components/data_comps/dlnd/lnd_comp_esmf.F90 deleted file mode 100644 index b7db917480e5..000000000000 --- a/cime/components/data_comps/dlnd/lnd_comp_esmf.F90 +++ /dev/null @@ -1,254 +0,0 @@ -module lnd_comp_esmf - -#ifdef ESMF_INTERFACE - use shr_kind_mod, only: R8=>SHR_KIND_R8, IN=>SHR_KIND_IN, & - CS=>SHR_KIND_CS, CL=>SHR_KIND_CL - use shr_sys_mod ! shared system calls - - use seq_cdata_mod - use seq_infodata_mod - - use esmf - use esmfshr_mod - - use dlnd_comp_mod - use perf_mod - use mct_mod - - implicit none - - public :: lnd_init_esmf - public :: lnd_run_esmf - public :: lnd_final_esmf - public :: lnd_register_esmf - - private ! except - - type(seq_infodata_type) :: infodata - type(seq_cdata) :: cdata - type(mct_gsMap) :: gsmap - type(mct_gGrid) :: ggrid - type(mct_aVect) :: x2l - type(mct_aVect) :: l2x - - !----- formats ----- - character(*),parameter :: subName = "(lnd_comp_esmf) " - - save ! save everything - - ! - ! Author: Fei Liu - ! This module is ESMF compliant lnd data component - !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -contains - !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - !=============================================================================== - - subroutine lnd_register_esmf(comp, rc) - - implicit none - - type(ESMF_GridComp) :: comp - integer, intent(out) :: rc - - rc = ESMF_SUCCESS - - print *, "In lnd register routine" - ! Register the callback routines. - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_INITIALIZE, lnd_init_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_RUN, lnd_run_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_FINALIZE, lnd_final_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - end subroutine lnd_register_esmf - - !=============================================================================== - - subroutine lnd_init_esmf(comp, import_state, export_state, EClock, rc) - !---------------------------------------------------------- - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !----- local ----- - integer(IN) :: MYID - character(CL) :: NLFilename - type(ESMF_Array) :: Ex2l, El2x, Edoml - - character(*),parameter :: subName = "(lnd_init_esmf) " - character(ESMF_MAXSTR) :: convCIM, purpComp - !---------------------------------------------------------- - - rc = ESMF_SUCCESS - - NLFilename = 'unused' - - call esmfshr_infodata_state2infodata(export_state,infodata,ID=MYID) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call seq_cdata_init(cdata, MYID, ggrid, gsmap, infodata,'dlnd') - - call dlnd_comp_init(EClock, cdata, x2l, l2x, NLFilename) - - call esmfshr_infodata_infodata2state(infodata,export_state,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Edoml = mct2esmf_init(ggrid%data,gsmap,name='domain',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(ggrid%data,Edoml,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - El2x = mct2esmf_init(l2x,gsmap,name='d2x',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(l2x,El2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Ex2l = mct2esmf_init(x2l,gsmap,name='x2d',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(export_state,(/Edoml/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(export_state,(/El2x/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(import_state,(/Ex2l/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - -#ifdef USE_ESMF_METADATA - convCIM = "CIM" - purpComp = "Model Component Simulation Description" - - call ESMF_AttributeAdd(comp, & - convention=convCIM, purpose=purpComp, rc=rc) - - call ESMF_AttributeSet(comp, "ShortName", "DLND", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "LongName", & - "Climatological Land Data Model", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "Description", & - "The CESM data models perform the basic function of " // & - "reading external data, modifying that data, and then " // & - "sending it to the driver via standard CESM coupling " // & - "interfaces. The driver and other models have no " // & - "fundamental knowledge of whether another component " // & - "is fully active or just a data model. In some cases, " // & - "data models are prognostic and also receive and use " // & - "some data sent by the driver to the data model. But " // & - "in most cases, the data models are not running " // & - "prognostically and have no need to receive any data " // & - "from the driver.", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "ReleaseDate", "2010", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "ModelType", "Land", & - convention=convCIM, purpose=purpComp, rc=rc) - - ! call ESMF_AttributeSet(comp, "Name", "Sam Levis", & - ! convention=convCIM, purpose=purpComp, rc=rc) - ! call ESMF_AttributeSet(comp, "EmailAddress", & - ! "slevis@ucar.edu", & - ! convention=convCIM, purpose=purpComp, rc=rc) - ! call ESMF_AttributeSet(comp, "ResponsiblePartyRole", "contact", & - ! convention=convCIM, purpose=purpComp, rc=rc) -#endif - - rc = ESMF_SUCCESS - - end subroutine lnd_init_esmf - - !=============================================================================== - - subroutine lnd_run_esmf(comp, import_state, export_state, EClock, rc) - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !----- local ----- - integer(IN) :: MYID - type(ESMF_Array) :: Ex2l, El2x - - character(*),parameter :: subName = "(lnd_run_esmf) " - !---------------------------------------------------------- - - rc = ESMF_SUCCESS - - ! Unpack import state - - call esmfshr_infodata_state2infodata(export_state,infodata,ID=MYID) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateGet(import_state, itemName="x2d", array=Ex2l, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call esmf2mct_copy(Ex2l, x2l, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - ! Run model - - call dlnd_comp_run(EClock, cdata, x2l, l2x) - - ! Pack export state - - call esmfshr_infodata_infodata2state(infodata,export_state,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateGet(export_state, itemName="d2x", array=El2x, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(l2x,El2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - rc = ESMF_SUCCESS - - end subroutine lnd_run_esmf - - !=============================================================================== - - subroutine lnd_final_esmf(comp, import_state, export_state, EClock, rc) - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !---------------------------------------------------------------------------- - ! Finalize routine - !---------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - call dlnd_comp_final() - - end subroutine lnd_final_esmf - - !=============================================================================== -#endif - -end module lnd_comp_esmf diff --git a/cime/components/data_comps/docn/bld/build-namelist b/cime/components/data_comps/docn/bld/build-namelist deleted file mode 100755 index d9e8369ff0e9..000000000000 --- a/cime/components/data_comps/docn/bld/build-namelist +++ /dev/null @@ -1,794 +0,0 @@ -#!/usr/bin/env perl -#----------------------------------------------------------------------------------------------- -# -# build-namelist -# -# This is the build-namelist script for the CIME docn (Data Ocean Model). -#-------------------------------------------------------------------------------------------- - -use strict; -#use warnings; -#use diagnostics; -use Cwd qw(getcwd abs_path); -use English; -use Getopt::Long; -use IO::File; -use File::Basename; -use Data::Dumper; - -#----------------------------------------------------------------------------------------------- - -sub usage { - die < 0, - silent => 0, - caseroot => 0, - cimeroot => 0, - inst_string => 0, - user_xml_dir=> undef, - ); - -GetOptions( - "h|help" => \$opts{'help'}, - "infile=s" => \$opts{'infile'}, - "namelist=s" => \$opts{'namelist'}, - "print=i" => \$opts{'print'}, - "caseroot=s" => \$opts{'caseroot'}, - "cimeroot=s" => \$opts{'cimeroot'}, - "inst_string=s" => \$opts{'inst_string'}, - "user_xml_dir=s" => \$opts{'user_xml_dir'}, -) or usage(); - -# Give usage message. -usage() if $opts{'help'}; - -# Check for unparsed arguments -if (@ARGV) { - print "ERROR: unrecognized arguments: @ARGV\n"; - usage(); -} - -# Define print levels: -# 0 - only issue fatal error messages -# 1 - only informs what files are created (default) -# 2 - verbose -my $print = $opts{'print'}; -my $eol = "\n"; - -# user_xml_dir -my $opt = 'user_xml_dir'; -if (defined $opts{$opt}) { - my $dir = $opts{$opt}; - if ( ! -d "$dir" ) { - die << "EOF"; -** $ProgName - $opt: $dir does NOT exist -EOF - } -} - -my $CASEROOT = $opts{'caseroot'}; -my $CIMEROOT = $opts{'cimeroot'}; -my $INST_STRING = $opts{'inst_string'}; - -if ($print>=2) { print "Setting docn configuration script directory to $cfgdir$eol"; } - -#----------------------------------------------------------------------------------------------- -# Create config_cache.xml file (needed below) - -my $config_cache = "$CASEROOT/Buildconf/docnconf/config_cache.xml"; -my $fh = new IO::File; -$fh->open(">$config_cache") or die "** can't open file: $config_cache\n"; -print $fh <<"EOF"; - - - -EOF -$fh->close; -if ($print>=1) { print "Wrote file $config_cache $eol"; } -(-f $config_cache) or die <<"EOF"; -** $ProgName - Cannot find configuration cache file: $config_cache\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Make sure we can find required perl modules, definition, and defaults files. -# Look for them under the directory that contains the configure script. - -# The root directory to utils Tools -my $cimeroot = abs_path($CIMEROOT); -my $perl5lib = "$cimeroot/utils/perl5lib"; - -# The XML::Lite module is required to parse the XML files. -(-f "$perl5lib/XML/Lite.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"XML/Lite.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Config module provides utilities to access the configuration information -# in the config_cache.xml file -(-f "$perl5lib/Build/Config.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Config.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist definition file contains entries for all namelist variables that -# can be output by build-namelist. -my $nl_definition_file = "$cfgdir/namelist_files/namelist_definition_docn.xml"; - -# If user has user namelist definition files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_definition_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_definition_file = $newfile; - } -} - - -(-f "$nl_definition_file") or die <<"EOF"; -** $ProgName - Cannot find namelist definition file \"$nl_definition_file\" ** -EOF -if ($print>=2) { print "Using namelist definition file $nl_definition_file$eol"; } - -# The Build::NamelistDefinition module provides utilities to validate that the output -# namelists are consistent with the namelist definition file -(-f "$perl5lib/Build/NamelistDefinition.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefinition.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist defaults file contains default values for all required namelist variables. -my $nl_defaults_file = "$cfgdir/namelist_files/namelist_defaults_docn.xml"; - -# If user has user namelist defaults files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_defaults_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_defaults_file = $newfile; - } -} - -(-f "$nl_defaults_file") or die <<"EOF"; -** $ProgName - Cannot find namelist defaults file \"$nl_defaults_file\" ** -EOF -if ($print>=2) { print "Using namelist defaults file $nl_defaults_file$eol"; } - -# The Build::NamelistDefaults module provides a utility to obtain default values of namelist -# variables based on finding a best fit with the attributes specified in the defaults file. -(-f "$perl5lib/Build/NamelistDefaults.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefaults.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Namelist module provides utilities to parse input namelists, to query and modify -# namelists, and to write output namelists. -(-f "$perl5lib/Build/Namelist.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Namelist.pm\" in directory - \"$perl5lib\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Add $cfgdir/perl5lib to the list of paths that Perl searches for modules -my @dirs = ( "$cfgdir/..", "$perl5lib"); -unshift @INC, @dirs; -require XML::Lite; -require Build::Config; -require Build::NamelistDefinition; -require Build::NamelistDefaults; -require Build::Namelist; -require Streams::TemplateGeneric; -require Config::SetupTools; - -#----------------------------------------------------------------------------------------------- -# Create a configuration object from the DOCN config_cache.xml file. -my $cfg = Build::Config->new('config_cache.xml'); - -# Validate some of the commandline option values. -validate_options("commandline", $cfg, \%opts); - -# Create a namelist definition object. This object provides a method for verifying that the -# output namelist variables are in the definition file, and are output in the correct -# namelist groups. -my $definition = Build::NamelistDefinition->new($nl_definition_file); - -# Create a namelist defaults object. This object provides default values for variables -# contained in the input defaults file. The configuration object provides attribute -# values that are relevent for the DOCN for which the namelist is being produced. -my $defaults = Build::NamelistDefaults->new( $nl_defaults_file, $cfg); -$defaults->add( "$nl_defaults_file" ); - -# Create an empty namelist object. Add values to it in order of precedence. -my $nl = Build::Namelist->new(); - -#----------------------------------------------------------------------------------------------- -# Process the user input in order of precedence. At each point we'll only add new -# values to the namelist and not overwrite previously specified specified values which -# have higher precedence. - -# Process the -namelist arg. -if (defined $opts{'namelist'}) { - # Parse commandline namelist - my $nl_arg = Build::Namelist->new($opts{'namelist'}); - - # Validate input namelist -- trap exceptions - my $nl_arg_valid; - eval { $nl_arg_valid = $definition->validate($nl_arg); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in commandline arg '-namelist'.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_arg_valid); -} - -# Process the -infile arg. -if (defined $opts{'infile'}) { - foreach my $infile ( split( /,/, $opts{'infile'} ) ) { - # Parse namelist input from a file - my $nl_infile = Build::Namelist->new($infile); - - # Validate input namelist -- trap exceptions - my $nl_infile_valid; - eval { $nl_infile_valid = $definition->validate($nl_infile); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in '-infile' $infile.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_infile_valid); - } -} - -#----------------------------------------------------------------------------------------------- - -#################################### -# Required xml variables # -#################################### - -my %xmlvars = (); -SetupTools::getxmlvars(${CASEROOT},\%xmlvars); -foreach my $attr (keys %xmlvars) { - $xmlvars{$attr} = SetupTools::expand_xml_var($xmlvars{$attr}, \%xmlvars); -} - -my $RUN_TYPE = $xmlvars{'RUN_TYPE'}; -my $DIN_LOC_ROOT = $xmlvars{'DIN_LOC_ROOT'}; -my $OCN_DOMAIN_FILE = $xmlvars{'OCN_DOMAIN_FILE'}; -my $OCN_DOMAIN_PATH = $xmlvars{'OCN_DOMAIN_PATH'}; -my $OCN_GRID = $xmlvars{'OCN_GRID'}; -my $DOCN_MODE = $xmlvars{'DOCN_MODE'}; -my $SSTICE_STREAM = $xmlvars{'SSTICE_STREAM'}; - -(-d $DIN_LOC_ROOT) or mkdir $DIN_LOC_ROOT; - -if ($print>=2) { - print "Inputdata root directory: $DIN_LOC_ROOT \n"; - print " docn mode is $DOCN_MODE \n"; - print " docn grid is $OCN_GRID \n"; -} - -#################################### -# Streams file(s) # -#################################### - -# Create input data list file (written to later) -my $fh_out = new IO::File; -$fh_out->open(">$CASEROOT/Buildconf/docn.input_data_list") or - die "** can't open filepath file: docn.input_data_list\n"; - -# Create hash needed to parse namelist_defaults_docn.xml file -my %default_namelist_opts; -$default_namelist_opts{'docn_mode'} = $DOCN_MODE; -$default_namelist_opts{'ocn_grid'} = $OCN_GRID; -$default_namelist_opts{'sstice_stream'} = $SSTICE_STREAM; - -# Create streams template file(s) - loop over streams -my $streams = $defaults->get_value( "streamslist", \%default_namelist_opts ); -my @streams = split ",", $streams, -1; - -my $ostreams = undef; -my $omapalgo = undef; -my $omapmask = undef; -my $otintalgo = undef; -my $otaxmode = undef; -my $ofillalgo = undef; -my $ofillmask = undef; -my $filepath = undef ; -foreach my $stream ( @streams ) { - - # Set stream specific part of default_namelist_opts hash - $default_namelist_opts{'stream'} = $stream; - - my $outstream = "docn.streams.txt" . ".$stream" . "$INST_STRING"; - if ($print>=1) {print " docn stream is $stream$INST_STRING \n";} - - if ($stream eq "NULL") { - - # do nothing - - } elsif (-e "$CASEROOT/user_$outstream") { - - my $command = "cp -p $CASEROOT/user_$outstream $CASEROOT/Buildconf/docnconf/$outstream"; - system($command) == 0 or die "system $command failed: $? \n"; - - } else { - - # Create hash to initialze streams object - my %stream_template_opts; - - if ( $print == 0 ) { - $stream_template_opts{'printing'} = 0; - } else { - $stream_template_opts{'printing'} = 1; - } - $stream_template_opts{'test'} = $opts{'test'}; - $stream_template_opts{'ProgName'} = $ProgName; - $stream_template_opts{'ProgDir'} = "$cfgdir"; - $stream_template_opts{'cmdline'} = $cmdline; - - if ($stream eq "prescribed" || $stream eq "copyall") { - # Currently ASSUME ONLY 1 FILE for prescribed mode - my $grid_file = $defaults->get_value( "strm_grid_file", \%default_namelist_opts ); - my $data_file = $defaults->get_value( "strm_data_file", \%default_namelist_opts ); - - my $grid_file = SetupTools::expand_xml_var($grid_file, \%xmlvars); - my $data_file = SetupTools::expand_xml_var($data_file, \%xmlvars); - - $stream_template_opts{'domainpath'} = dirname($grid_file); - $stream_template_opts{'domain'} = basename($grid_file); - $stream_template_opts{'filepath'} = dirname($data_file); - $stream_template_opts{'filenames'} = basename($data_file); - } else { - $stream_template_opts{'domainpath'} = SetupTools::expand_xml_var($defaults->get_value( "strm_domdir", \%default_namelist_opts ), \%xmlvars); - $stream_template_opts{'domain'} = SetupTools::expand_xml_var($defaults->get_value( "strm_domfil", \%default_namelist_opts ), \%xmlvars); - $stream_template_opts{'filepath'} = SetupTools::expand_xml_var($defaults->get_value( "strm_datdir", \%default_namelist_opts ), \%xmlvars); - $stream_template_opts{'filenames'} = SetupTools::expand_xml_var($defaults->get_value( "strm_datfil", \%default_namelist_opts ), \%xmlvars); - } - - $stream_template_opts{'offset'} = 0; - $stream_template_opts{'datvarnames'}= $defaults->get_value( "strm_datvar" , \%default_namelist_opts ); - $stream_template_opts{'domvarnames'}= $defaults->get_value( "strm_domvar" , \%default_namelist_opts ); - $stream_template_opts{'yearfirst'} = SetupTools::expand_xml_var($defaults->get_value( "strm_year_start", \%default_namelist_opts ), \%xmlvars); - $stream_template_opts{'yearlast'} = SetupTools::expand_xml_var($defaults->get_value( "strm_year_end" , \%default_namelist_opts ), \%xmlvars); - - # Create the streams txt file for this stream (from a generic template) - my $stream_template = Streams::TemplateGeneric->new( \%stream_template_opts ); - $stream_template->Read( "${CASEROOT}/Buildconf/docn.template.streams.xml" ); - $stream_template->Write( $outstream ); - - # Append to docn.input_data_list - my @filenames = $stream_template->GetDataFilenames( 'domain'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "domain${i} = $file\n"; - } - - my @filenames = $stream_template->GetDataFilenames( 'data'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "file${i} = $file\n"; - } - - } - - # Stream specific namelist variables used below for $nl - my $tintalgo = $defaults->get_value( "strm_tintalgo" , \%default_namelist_opts); - my $mapalgo = $defaults->get_value( 'strm_mapalgo' , \%default_namelist_opts); - my $mapmask = $defaults->get_value( 'strm_mapmask' , \%default_namelist_opts); - my $taxmode = $defaults->get_value( "strm_taxmode" , \%default_namelist_opts); - my $fillalgo = $defaults->get_value( 'strm_fillalgo' , \%default_namelist_opts); - my $fillmask = $defaults->get_value( 'strm_fillmask' , \%default_namelist_opts); - my $beg_year = SetupTools::expand_xml_var($defaults->get_value( 'strm_year_start', \%default_namelist_opts), \%xmlvars); - my $end_year = SetupTools::expand_xml_var($defaults->get_value( 'strm_year_end' , \%default_namelist_opts), \%xmlvars); - my $align_year = SetupTools::expand_xml_var($defaults->get_value( 'strm_year_align', \%default_namelist_opts), \%xmlvars); - - if ( $beg_year > $end_year ) { - print "\n\nbeg_year=$beg_year end_year=$end_year\n"; - die "$ProgName ERROR:: beg_year greater than end_year\n"; - } - - if ( ! defined($ostreams) ) { - $ostreams = "\"$outstream $align_year $beg_year $end_year\""; - $omapalgo = "\'$mapalgo\'"; - $omapmask = "\'$mapmask\'"; - $otintalgo = "\'$tintalgo\'"; - $otaxmode = "\'$taxmode\'"; - $ofillalgo = "\'$fillalgo\'"; - $ofillmask = "\'$fillmask\'"; - } else { - $ostreams = "$ostreams,\"$outstream $align_year $beg_year $end_year\""; - $omapalgo .= ",\'$mapalgo\'"; - $omapmask .= ",\'$mapmask\'"; - $otintalgo .= ",\'$tintalgo\'"; - $otaxmode .= ",\'$taxmode\'"; - $ofillalgo .= ",\'$fillalgo\'"; - $ofillmask .= ",\'$fillmask\'"; - } -} - -$fh_out->close; - -#################################### -# namelist group: shr_strdata_nml # -#################################### - -my $datamode = $defaults->get_value( "datamode", \%default_namelist_opts ); -add_default($nl, 'datamode', 'val' => "$datamode" ); -add_default($nl, 'domainfile', 'val' => "${OCN_DOMAIN_PATH}/${OCN_DOMAIN_FILE}"); -if ($datamode ne 'NULL') { - add_default($nl, 'streams', 'val' => "$ostreams" ); - add_default($nl, 'mapalgo', 'val' => "$omapalgo" ); - add_default($nl, 'mapmask', 'val' => "$omapmask" ); - add_default($nl, 'tintalgo', 'val' => "$otintalgo" ); - add_default($nl, 'taxmode', 'val' => "$otaxmode" ); - add_default($nl, 'fillalgo', 'val' => "$ofillalgo" ); - add_default($nl, 'fillmask', 'val' => "$ofillmask" ); -} - -############################# -# namelist group: docn_nml # -############################# - -add_default($nl, 'ocn_in', 'val'=>"docn_ocn_in$INST_STRING"); -add_default($nl, 'decomp'); -add_default($nl, 'force_prognostic_true', 'val'=>'.false.'); - -if ( $RUN_TYPE =~ /branch/ ) { - # The docn master restart file is currently unused - #if (not defined $nl->get_value('restfilm')) { - # die "$ProgName ERROR:: restfilm is required for a branch type.\n"; - #} -} - -#----------------------------------------------------------------------------------------------- -# Validate that the entire resultant namelist is valid -# -$definition->validate($nl); - -#----------------------------------------------------------------------------------------------- -# Write output files -# -my $note = ""; - -# docn_ocn_in -my @groups = qw(shr_strdata_nml); -my $outfile = "./docn_ocn_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing docn_dshr namelist to $outfile $eol"; } - -# docn_in -@groups = qw(docn_nml); -$outfile = "./docn_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing docn_in namelist to $outfile $eol"; } - -# ocn_modelio -@groups = qw(modelio); -$outfile = "./ocn_modelio.nml"; -$nl->set_variable_value( "modelio", "logfile", "'ocn.log'" ); -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing ocn_modelio.nml namelist to $outfile $eol"; } - -# Write out required local input files -check_input_files($nl, $DIN_LOC_ROOT, "$CASEROOT/Buildconf/docn.input_data_list"); - -#=============================================================================================== -#=============================================================================================== -# END OF MAIN SCRIPT -#=============================================================================================== -#=============================================================================================== - -sub add_default { - -# Add a value for the specified variable to the specified namelist object. The variables -# already in the object have the higher precedence, so if the specified variable is already -# defined in the object then don't overwrite it, just return. -# -# This method checks the definition file and adds the variable to the correct -# namelist group. -# -# The value can be provided by using the optional argument key 'val' in the -# calling list. Otherwise a default value is obtained from the namelist -# defaults object. If no default value is found this method throws an exception -# unless the 'nofail' option is set true. -# -# Example 1: Specify the default value $val for the namelist variable $var in namelist -# object $nl: -# -# add_default($nl, $var, 'val'=>$val) -# -# Example 2: Add a default for variable $var if an appropriate value is found. Otherwise -# don't add the variable -# -# add_default($nl, $var, 'nofail'=>1) -# -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object -# $defaults -- the namelist defaults object -# $DIN_LOC_ROOT -- inputdata root directory - - my $nl = shift; # namelist object - my $var = shift; # name of namelist variable - my %opts = @_; # options - - # If variable has quotes around it - if ( $var =~ /'(.+)'/ ) { - $var = $1; - } - # Query the definition to find which group the variable belongs to. Exit if not found. - my $group = $definition->get_group_name($var); - unless ($group) { - my $fname = $definition->get_file_name(); - die "$ProgName - ERROR: variable \"$var\" not found in namelist definition file $fname.\n"; - } - - # check whether the variable has a value in the namelist object -- if so then skip to end - my $val = $nl->get_variable_value($group, $var); - if (! defined $val) { - - # Look for a specified value in the options hash - - if (defined $opts{'val'}) { - $val = $opts{'val'}; - } - # or else get a value from namelist defaults object. - # Note that if the 'val' key isn't in the hash, then just pass anything else - # in %opts to the get_value method to be used as attributes that are matched - # when looking for default values. - else { - $val = $defaults->get_value($var, \%opts); - - # Truncate model_version appropriately - - if ( $var eq "model_version" ) { - $val =~ /(URL: https:\/\/[a-zA-Z0-9._-]+\/)([a-zA-Z0-9\/._-]+)(\/bld\/.+)/; - $val = $2; - } - } - - unless ( defined($val) ) { - unless ($opts{'nofail'}) { - die "$ProgName - No default value found for $var.\n" . - " Are defaults provided? \n"; - } - else { - return; - } - } - - - # query the definition to find out if the variable is an input pathname - my $is_input_pathname = $definition->is_input_pathname($var); - - # The default values for input pathnames are relative. If the namelist - # variable is defined to be an absolute pathname, then prepend - # the inputdata root directory. - if (not defined $opts{'no_abspath'}) { - if (defined $opts{'set_abspath'}) { - $val = set_abs_filepath($val, $opts{'set_abspath'}); - } else { - if ($is_input_pathname eq 'abs') { - $val = set_abs_filepath($val, $DIN_LOC_ROOT); - } - } - } - - # query the definition to find out if the variable takes a string value. - # The returned string length will be >0 if $var is a string, and 0 if not. - my $str_len = $definition->get_str_len($var); - - # If the variable is a string, then add quotes if they're missing - if ($str_len > 0) { - $val = quote_string($val); - } - - # set the value in the namelist - $nl->set_variable_value($group, $var, $val); - } - -} - -#----------------------------------------------------------------------------------------------- - -sub check_input_files { - -# For each variable in the namelist which is an input dataset, check to see if it -# exists locally. -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object - - my $nl = shift; # namelist object - my $inputdata_rootdir = shift; # if false prints test, else creates inputdata file - my $outfile = shift; - open(OUTFILE, ">>$outfile") if defined $inputdata_rootdir; - - # Look through all namelist groups - my @groups = $nl->get_group_names(); - foreach my $group (@groups) { - - # Look through all variables in each group - my @vars = $nl->get_variable_names($group); - foreach my $var (@vars) { - - # Is the variable an input dataset? - my $input_pathname_type = $definition->is_input_pathname($var); - - # If it is, check whether it exists locally and print status - if ($input_pathname_type) { - - # Get pathname of input dataset - my $pathname = $nl->get_variable_value($group, $var); - # Need to strip the quotes - $pathname =~ s/[\'\"]//g; - - if ($input_pathname_type eq 'abs') { - if ($inputdata_rootdir) { - print OUTFILE "$var = $pathname\n"; - } - else { - if (-e $pathname) { # use -e rather than -f since the absolute pathname - # might be a directory - print "OK -- found $var = $pathname\n"; - } - else { - print "NOT FOUND: $var = $pathname\n"; - } - } - } - elsif ($input_pathname_type =~ m/rel:(.+)/o) { - # The match provides the namelist variable that contains the - # root directory for a relative filename - my $rootdir_var = $1; - my $rootdir = $nl->get_variable_value($group, $rootdir_var); - $rootdir =~ s/[\'\"]//g; - if ($inputdata_rootdir) { - $pathname = "$rootdir/$pathname"; - print OUTFILE "$var = $pathname\n"; - } - else { - if (-f "$rootdir/$pathname") { - print "OK -- found $var = $rootdir/$pathname\n"; - } - else { - print "NOT FOUND: $var = $rootdir/$pathname\n"; - } - } - } - } - } - } - close OUTFILE if defined $inputdata_rootdir; - return 0 if defined $inputdata_rootdir; -} - -#----------------------------------------------------------------------------------------------- - -sub set_abs_filepath { - -# check whether the input filepath is an absolute path, and if it isn't then -# prepend a root directory - - my ($filepath, $rootdir) = @_; - - # strip any leading/trailing whitespace - $filepath =~ s/^\s+//; - $filepath =~ s/\s+$//; - $rootdir =~ s/^\s+//; - $rootdir =~ s/\s+$//; - - # strip any leading/trailing quotes - $filepath =~ s/^['"]+//; - $filepath =~ s/["']+$//; - $rootdir =~ s/^['"]+//; - $rootdir =~ s/["']+$//; - - my $out = $filepath; - unless ( $filepath =~ /^\// ) { # unless $filepath starts with a / - $out = "$rootdir/$filepath"; # prepend the root directory - } - return $out; -} - -#----------------------------------------------------------------------------------------------- - -sub valid_option { - - my ($val, @expect) = @_; - my ($expect); - - $val =~ s/^\s+//; - $val =~ s/\s+$//; - foreach $expect (@expect) { - if ($val =~ /^$expect$/i) { return $expect; } - } - return undef; -} - -#----------------------------------------------------------------------------------------------- - -sub validate_options { - - my $source = shift; # text string declaring the source of the options being validated - my $cfg = shift; # configure object - my $opts = shift; # reference to hash that contains the options - - my ($opt, $old, @expect); -} - -#----------------------------------------------------------------------------------------------- - -sub quote_string { - my $str = shift; - $str =~ s/^\s+//; - $str =~ s/\s+$//; - unless ($str =~ /^['"]/) { #"' - $str = "\'$str\'"; - } - return $str; -} - diff --git a/cime/components/data_comps/docn/bld/namelist_files/namelist_defaults_docn.xml b/cime/components/data_comps/docn/bld/namelist_files/namelist_defaults_docn.xml deleted file mode 100644 index f10a358e3aff..000000000000 --- a/cime/components/data_comps/docn/bld/namelist_files/namelist_defaults_docn.xml +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - - - -NULL -SSTDATA -SOM -IAF -COPYALL - - - - - -prescribed -som -interannual -copyall - - - - - - - - - -$SSTICE_YEAR_ALIGN -$SSTICE_YEAR_START -$SSTICE_YEAR_END -$SSTICE_GRID_FILENAME -$SSTICE_DATA_FILENAME - - - time time - xc lon - yc lat - area area - mask mask - - - SST_cpl t - - - - time time - lon lon - lat lat - area area - mask mask - - - sst t - - - - time time - xc lon - yc lat - area area - mask mask - - - SST t - - - sst_wus12_110111.2003-10.nc - sst_wus12_110111.2003-11.nc - sst_wus12_110111.2003-12.nc - sst_wus12_110111.2004-01.nc - sst_wus12_110111.2004-02.nc - sst_wus12_110111.2004-03.nc - sst_wus12_110111.2004-04.nc - sst_wus12_110111.2004-05.nc - sst_wus12_110111.2004-06.nc - sst_wus12_110111.2004-07.nc - sst_wus12_110111.2004-08.nc - sst_wus12_110111.2004-09.nc - -limit - - - time time - xc lon - yc lat - area area - mask mask - - - SST t - -limit - - - - - - - - - -$SSTICE_YEAR_ALIGN -$SSTICE_YEAR_START -$SSTICE_YEAR_END -$SSTICE_GRID_FILENAME -$SSTICE_DATA_FILENAME - - - time time - gridLon lon - gridLat lat - - - iceCon s - - - - - - -1 -1 -1 -$DIN_LOC_ROOT/ocn/docn7/SOM -$DOCN_SOM_FILENAME -$DIN_LOC_ROOT/ocn/docn7/SOM -$DOCN_SOM_FILENAME - - time time - xc lon - yc lat - area area - mask mask - - - T t - S s - U u - V v - dhdx dhdx - dhdy dhdy - hblt h - qdp qbot - - - - - - -1 -1850 -2014 -$DIN_LOC_ROOT/atm/cam/sst -sst_HadOIBl_bc_1x1_1850_2014_c150416.nc -$DIN_LOC_ROOT/atm/cam/sst -sst_HadOIBl_bc_1x1_1850_2014_c150416.nc - - time time - lon lon - lat lat - - - SST_cpl t - - - - - - -1d - -nn - -nomask - -bilinear - -dstmask - -linear - -cycle - - diff --git a/cime/components/data_comps/docn/bld/namelist_files/namelist_definition_docn.xml b/cime/components/data_comps/docn/bld/namelist_files/namelist_definition_docn.xml deleted file mode 100644 index 5a10f2393aca..000000000000 --- a/cime/components/data_comps/docn/bld/namelist_files/namelist_definition_docn.xml +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - - - - - - - -valid values: SSTDATA,SOM,IAF,NULL,COPYALL -General method that operates on the data. This is generally -implemented in the data models but is set in the strdata method for -convenience. - -datamode = "NULL" - NULL is always a valid option and means no data will be generated. - Turns off the data model as a provider of data to the coupler. The - ice_present flag will be set to false and the coupler will assume no - exchange of data to or from the data model. -dataMode = "COPYALL" - Copies all fields directly from the input data streams Any required - fields not found on an input stream will be set to zero. -dataMode = "SSTDATA" - SSTDATA mode assumes the only field in the input stream is SST. - It also assumes the SST is in Celsius and must be converted to Kelvin. - All other fields are set to zero except for ocean salinity, which - is set to a constant reference salinity value. - Normally the ice fraction data is found in the same data files that - provide SST data to the data ocean model. They are normally found in - the same file because the SST and ice fraction data are derived from - the same observational data sets and are consistent with each other. - to the data ocean model. They are normally found in the same file - because the SST and ice fraction data are derived from the same - observational data sets and are consistent with each other. -dataMode = "IAF" - IAF is the interannually varying version of SSTDATA -dataMode = "SOM" - SOM ("slab ocean model") mode is a prognostic mode. This mode - computes a prognostic sea surface temperature and a freeze/melt - potential (surface Q-flux) used by the sea ice model. This - calculation requires an external SOM forcing data file that includes - ocean mixed layer depths and bottom-of-the-slab Q-fluxes. - Scientifically appropriate bottom-of-the-slab Q-fluxes are normally - ocean resolution dependent and are derived from the ocean model output - of a fully coupled CCSM run. Note that while this mode runs out of - the box, the default SOM forcing file is not scientifically - appropriate and is provided for testing and development purposes only. - Users must create scientifically appropriate data for their particular - application. A tool is available to derive valid SOM forcing. - -Set by the xml variable DOCN_MODE in env_run.xml -Currently, DOCN_MODE can be [prescribed,som,interannual,null] - If DOCN_MODE is prescribed, datamode will be set to SSTDATA - If DOCN_MODE is interannual, datamode will be set to IAF - If DOCN_MODE is som , datamode will be set to SOM - If DOCN_MODE is null, datamode will be set to NULL - -default: SSTDATA (prescribed setting for DOCN_MODE)' - - - -spatial gridfile associated with the strdata. grid information will -be read from this file and that grid will serve as the target grid -for all input data for this strdata input. - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are just copy (ie. no fill), special value, -nearest neighbor, nearest neighbor in "i" direction, or nearest -neighbor in "j" direction. -valid values: 'copy','none','spval','nn','nnoni','nnonj' -default: "nn". - - - -plays no role is fill algorithm at the present time. -valid values: "nomask,srcmask,dstmask,bothmask" -default: "nomask" - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read in instead of computing the -weights on the fly for the fill operation. if this is set, fillalgo -and fillmask are ignored. -default: unset - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the fill operation. this allows a user to -save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of masking algorithms for mapping input data -associated with the array of streams. valid options are map only from -valid src points, map only to valid destination points, ignore all -masks, map only from valid src points to valid destination points. -valid values: srcmask, dstmask, nomask,bothmask -default: dstmask - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are copy by index, set to special value, -nearest neighbor, nearest neighbor in "i" direction, nearest neighbor -in "j" direction, or bilinear. -valid values: copy,spval,nn,nnoni,nnonj,bilinear -default: bilinear - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read instead of computing -weights on the fly for the mapping (interpolation) operation. if this -is set, mapalgo and mapmask are ignored. default="unset". - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the mapping (interpolation) operation. this -allows a user to save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of time interpolation options associated with the array of -streams. -valid values: lower,upper,nearest,linear,coszen - lower = Use lower time-value - upper = Use upper time-value - nearest = Use the nearest time-value - linear = Linearly interpolate between the two time-values - coszen = Scale according to the cosine of the solar zenith angle (for solar) -default="linear". - - - -array of time axis modes associated with the array of streams for -handling data outside the specified stream time axis. -valid options are to cycle the data based on the first, last, and -align settings associated with the stream dataset, to extend the first -and last valid value indefinitely, or to limit the interpolated data -to fall only between the least and greatest valid value of the time array. -valid values: cycle,extend,limit - extend = extrapolate before and after the period by using the first or last value. - cycle = cycle between the range of data - limit = restrict to the period for which the data is valid -default="cycle". - - - -array (up to 30 elements) of delta time ratio limits placed on the -time interpolation associated with the array of streams. this real -value causes the model to stop if the ratio of the running maximum -delta time divided by the minimum delta time is greater than the -dtlimit for that stream. for instance, with daily data, the delta -time should be exactly one day throughout the dataset and the computed -maximum divided by minimum delta time should always be 1.0. for -monthly data, the delta time should be between 28 and 31 days and the -maximum ratio should be about 1.1. the running value of the delta -time is computed as data is read and any wraparound or cycling is also -included. this input helps trap missing data or errors in cycling. -to turn off trapping, set the value to 1.0e30 or something similar. -default=1.5. - - - -character array (up to 30 elements) of stream input files. this -string is actually parsed by a stream method and so the format is -specified by the stream module. this string consists of a -"stream_input_filename year_align year_first year_last". the -stream_input_filename is a stream text input file and the format and -options are described elsewhere. year_align, year_first, and -year_last provide information about the time axis of the file and how -to relate the input time axis to the model time axis. -default="null". - - - - - - - -Namelist filename for data model share stream data namelist - - - -DOCN Decomposition strategy - 1d = Vector decomposition - root = run only on the master task - - - -Master restart file name for docn model - - - -Stream restart file name for docn model, needed for branch simulations - - - -If TRUE, prognostic is forced to true. -default=false - - - diff --git a/cime/components/data_comps/docn/cime_config/buildlib b/cime/components/data_comps/docn/cime_config/buildlib index 0524a4739239..75ed5840ce4f 100755 --- a/cime/components/data_comps/docn/cime_config/buildlib +++ b/cime/components/data_comps/docn/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_data_lib diff --git a/cime/components/data_comps/docn/cime_config/buildnml b/cime/components/data_comps/docn/cime_config/buildnml index d1eb56fec0e1..42ec4c424178 100755 --- a/cime/components/data_comps/docn/cime_config/buildnml +++ b/cime/components/data_comps/docn/cime_config/buildnml @@ -1,17 +1,218 @@ #!/usr/bin/env python +"""Namelist creator for CIME's data ocn model. """ -build data model library -""" -import sys, os +# Typically ignore this. +# pylint: disable=invalid-name + +# Disable these because this is our standard setup +# pylint: disable=wildcard-import,unused-wildcard-import,wrong-import-position + +import os, shutil, sys, glob -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_data_nml +from CIME.case import Case +from CIME.XML.files import Files +from CIME.nmlgen import NamelistGenerator +from CIME.utils import expect +from CIME.buildnml import create_namelist_infile, parse_input + +logger = logging.getLogger(__name__) + +# pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements +#################################################################################### +def _create_namelists(case, confdir, inst_string, infile, nmlgen): +#################################################################################### + """Write out the namelist for this component. + + Most arguments are the same as those for `NamelistGenerator`. The + `inst_string` argument is used as a suffix to distinguish files for + different instances. The `confdir` argument is used to specify the directory + in which output files will be placed. + """ + + #---------------------------------------------------- + # Get a bunch of information from the case. + #---------------------------------------------------- + ocn_domain_file = case.get_value("OCN_DOMAIN_FILE") + ocn_domain_path = case.get_value("OCN_DOMAIN_PATH") + docn_mode = case.get_value("DOCN_MODE") + ocn_grid = case.get_value("OCN_GRID") + sstice_stream = case.get_value("SSTICE_STREAM") + + #---------------------------------------------------- + # Check for incompatible options. + #---------------------------------------------------- + expect(ocn_grid != "null", + "OCN_GRID cannot be null") + expect(docn_mode != "NULL", + "DOCN_MODE cannot be NULL") + + #---------------------------------------------------- + # Log some settings. + #---------------------------------------------------- + logger.debug("DOCN mode is %s", docn_mode) + logger.debug("DOCN grid is %s", ocn_grid) + + #---------------------------------------------------- + # Clear out old data. + #---------------------------------------------------- + data_list_path = os.path.join(case.get_case_root(), "Buildconf", + "docn.input_data_list") + if os.path.exists(data_list_path): + os.remove(data_list_path) + + #---------------------------------------------------- + # Create configuration information. + #---------------------------------------------------- + config = {} + config['ocn_grid'] = ocn_grid + config['docn_mode'] = docn_mode + config['sstice_stream'] = sstice_stream + + #---------------------------------------------------- + # Initialize namelist defaults + #---------------------------------------------------- + nmlgen.init_defaults(infile, config) + + #---------------------------------------------------- + # Construct the list of streams. + #---------------------------------------------------- + streams = nmlgen.get_streams() + + #---------------------------------------------------- + # For each stream, create stream text file and update + # shr_strdata_nml group and input data list. + #---------------------------------------------------- + for stream in streams: + + # Ignore null values. + if stream is None or stream in ("NULL", ""): + continue + + inst_stream = stream + inst_string + logger.debug("DOCN stream is %s", inst_stream) + stream_path = os.path.join(confdir, "docn.streams.txt." + inst_stream) + user_stream_path = os.path.join(case.get_case_root(), + "user_docn.streams.txt." + inst_stream) + + # Use the user's stream file, or create one if necessary. + if os.path.exists(user_stream_path): + shutil.copyfile(user_stream_path, stream_path) + config['stream'] = stream + nmlgen.update_shr_strdata_nml(config, stream, stream_path) + else: + nmlgen.create_stream_file_and_update_shr_strdata_nml(config, stream, stream_path, data_list_path) + + #---------------------------------------------------- + # Create `shr_strdata_nml` namelist group. + #---------------------------------------------------- + # set per-stream variables + nmlgen.create_shr_strdata_nml() + + # set variables that are not per-stream + if ocn_domain_file != "UNSET": + full_domain_path = os.path.join(ocn_domain_path, ocn_domain_file) + nmlgen.add_default("domainfile", value=full_domain_path) + + #---------------------------------------------------- + # Finally, write out all the namelists. + #---------------------------------------------------- + namelist_file = os.path.join(confdir, "docn_in") + nmlgen.write_output_file(namelist_file, data_list_path, groups=['docn_nml','shr_strdata_nml']) + +############################################################################### +def buildnml(case, caseroot, compname): +############################################################################### + + # Build the component namelist and required stream txt files + if compname != "docn": + raise AttributeError + + rundir = case.get_value("RUNDIR") + ninst = case.get_value("NINST_OCN") + + # Determine configuration directory + confdir = os.path.join(caseroot,"Buildconf",compname + "conf") + if not os.path.isdir(confdir): + os.makedirs(confdir) + + #---------------------------------------------------- + # Construct the namelist generator + #---------------------------------------------------- + # determine directory for user modified namelist_definitions.xml + user_xml_dir = os.path.join(caseroot, "SourceMods", "src." + compname) + expect (os.path.isdir(user_xml_dir), + "user_xml_dir %s does not exist " %user_xml_dir) + + # NOTE: User definition *replaces* existing definition. + files = Files() + definition_file = [files.get_value("NAMELIST_DEFINITION_FILE", {"component":"docn"})] + + user_definition = os.path.join(user_xml_dir, "namelist_definition_docn.xml") + if os.path.isfile(user_definition): + definition_file = [user_definition] + for file_ in definition_file: + expect(os.path.isfile(file_), "Namelist XML file %s not found!" % file_) + + # Create the namelist generator object - independent of instance + nmlgen = NamelistGenerator(case, definition_file, files=files) + + #---------------------------------------------------- + # Loop over instances + #---------------------------------------------------- + for inst_counter in range(1, ninst+1): + + # determine instance string + inst_string = "" + if ninst > 1: + inst_string = '_' + '%04d' % inst_counter + + # If multi-instance case does not have restart file, use + # single-case restart for each instance + rpointer = "rpointer." + compname + 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), + os.path.join(rundir, rpointer + inst_string)) + + inst_string_label = inst_string + if not inst_string_label: + inst_string_label = "\"\"" + + # create namelist output infile using user_nl_file as input + user_nl_file = os.path.join(caseroot, "user_nl_" + compname + inst_string) + expect(os.path.isfile(user_nl_file), + "Missing required user_nl_file %s " %(user_nl_file)) + infile = os.path.join(confdir, "namelist_infile") + create_namelist_infile(case, user_nl_file, infile) + namelist_infile = [infile] + + # create namelist and stream file(s) data component + _create_namelists(case, confdir, inst_string, namelist_infile, nmlgen) + + # copy namelist files and stream text files, to rundir + if os.path.isdir(rundir): + filename = compname + "_in" + file_src = os.path.join(confdir, filename) + file_dest = os.path.join(rundir, filename) + if inst_string: + file_dest += inst_string + shutil.copy(file_src,file_dest) + + for txtfile in glob.glob(os.path.join(confdir, "*txt*")): + shutil.copy(txtfile, rundir) + +############################################################################### +def _main_func(): + # Build the component namelist and required stream txt files + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "docn") -build_data_nml(sys.argv, 'ocn') +if __name__ == "__main__": + _main_func() diff --git a/cime/components/data_comps/docn/cime_config/config_archive.xml b/cime/components/data_comps/docn/cime_config/config_archive.xml new file mode 100644 index 000000000000..69b7e07d38b7 --- /dev/null +++ b/cime/components/data_comps/docn/cime_config/config_archive.xml @@ -0,0 +1,11 @@ + + + \.r.* + unset + + rpointer$NINST_STRING.ocn + $CASE.docn$NINST_STRING.r.$DATENAME.nc,$CASE.docn$NINST_STRING.rs1.$DATENAME.bin + + + + diff --git a/cime/components/data_comps/docn/cime_config/config_component.xml b/cime/components/data_comps/docn/cime_config/config_component.xml index 6a233408c567..335a75481aa2 100644 --- a/cime/components/data_comps/docn/cime_config/config_component.xml +++ b/cime/components/data_comps/docn/cime_config/config_component.xml @@ -2,7 +2,7 @@ - + char @@ -112,6 +112,7 @@ $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.47x0.63_clim_pi_c101028.nc $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.23x0.31_clim_pi_c101028.nc $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.9x1.25_clim_c040926.nc + $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.9x1.25_clim_c040926.nc $DIN_LOC_ROOT/wav/ww3/core2_G4_ice_30min_20000601_to_05.nc run_component_docn @@ -143,6 +144,7 @@ $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.0.47x0.63_gx1v6_090408.nc $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.0.23x0.31_gx1v6_101108.nc $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.0.9x1.25_gx1v6_090403.nc + $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.0.9x1.25_gx1v6_090403.nc $DIN_LOC_ROOT/wav/ww3/core2_G4_ice_30min_20000601_to_05.nc run_component_cam_sstice @@ -188,7 +190,6 @@ - value integer 0 @@ -219,5 +220,5 @@ ========================================= - + diff --git a/cime/components/data_comps/docn/cime_config/namelist_definition_docn.xml b/cime/components/data_comps/docn/cime_config/namelist_definition_docn.xml new file mode 100644 index 000000000000..32d2d7f5ba5a --- /dev/null +++ b/cime/components/data_comps/docn/cime_config/namelist_definition_docn.xml @@ -0,0 +1,618 @@ + + + + + + + + + + + + + + char(100) + streams + streams_file + List of streams used for the given docn_mode. + + prescribed + som + interannual + copyall + + + + + char + streams + derived + does not appear in namelist - only used to set domain and data information + + $SSTICE_GRID_FILENAME + $SSTICE_GRID_FILENAME + + + + + char + streams + derived + does not appear in namelist - only used to set domain and data information + + $SSTICE_DATA_FILENAME + $SSTICE_DATA_FILENAME + + + + + char + streams + streams_file + Stream domain file directory. + + null + $DIN_LOC_ROOT/ocn/docn7/SOM + $DIN_LOC_ROOT/atm/cam/sst + + + + + char + streams + streams_file + Stream domain file path(s). + + null + $DOCN_SOM_FILENAME + sst_HadOIBl_bc_1x1_1850_2014_c150416.nc + + + + + char + streams + streams_file + Stream domain variable name(s). + + + time time + xc lon + yc lat + area area + mask mask + + + time time + gridLon lon + gridLat lat + + + time time + lon lon + lat lat + + + + + + char + streams + streams_file + Stream data file directory. + + null + $DIN_LOC_ROOT/ocn/docn7/SOM + $DIN_LOC_ROOT/atm/cam/sst + + + + + char + streams + streams_file + Stream data file path(s). + + null + + sst_wus12_110111.2003-10.nc + sst_wus12_110111.2003-11.nc + sst_wus12_110111.2003-12.nc + sst_wus12_110111.2004-01.nc + sst_wus12_110111.2004-02.nc + sst_wus12_110111.2004-03.nc + sst_wus12_110111.2004-04.nc + sst_wus12_110111.2004-05.nc + sst_wus12_110111.2004-06.nc + sst_wus12_110111.2004-07.nc + sst_wus12_110111.2004-08.nc + sst_wus12_110111.2004-09.nc + + $DOCN_SOM_FILENAME + sst_HadOIBl_bc_1x1_1850_2014_c150416.nc + + + + + char + streams + streams_file + Stream data variable name(s). + + + sst t + + + iceCon s + + + T t + S s + U u + V v + dhdx dhdx + dhdy dhdy + hblt h + qdp qbot + + + SST_cpl t + + + SST_cpl t + + + + + + integer + streams + streams_file + Stream offset. + + 0 + + + + + integer + streams + streams_file + Simulation year to align stream to. + + -999 + $SSTICE_YEAR_ALIGN + $SSTICE_YEAR_ALIGN + 1 + 1 + + + + + integer + streams + streams_file + First year of stream. + + -999 + $SSTICE_YEAR_START + $SSTICE_YEAR_START + 1 + 1850 + + + + + integer + streams + streams_file + Last year of stream. + + -999 + $SSTICE_YEAR_END + $SSTICE_YEAR_END + 1 + 2014 + + + + + + + + + + + + + char + streams + shr_strdata_nml + SSTDATA,SOM,IAF,NULL,COPYALL + + General method that operates on the data. This is generally + implemented in the data models but is set in the strdata method for + convenience. + + datamode = "NULL" + NULL is always a valid option and means no data will be generated. + Turns off the data model as a provider of data to the coupler. The + ice_present flag will be set to false and the coupler will assume no + exchange of data to or from the data model. + dataMode = "COPYALL" + Copies all fields directly from the input data streams Any required + fields not found on an input stream will be set to zero. + dataMode = "SSTDATA" + SSTDATA mode assumes the only field in the input stream is SST. + It also assumes the SST is in Celsius and must be converted to Kelvin. + All other fields are set to zero except for ocean salinity, which + is set to a constant reference salinity value. + Normally the ice fraction data is found in the same data files that + provide SST data to the data ocean model. They are normally found in + the same file because the SST and ice fraction data are derived from + the same observational data sets and are consistent with each other. + to the data ocean model. They are normally found in the same file + because the SST and ice fraction data are derived from the same + observational data sets and are consistent with each other. + dataMode = "IAF" + IAF is the interannually varying version of SSTDATA + dataMode = "SOM" + SOM ("slab ocean model") mode is a prognostic mode. This mode + computes a prognostic sea surface temperature and a freeze/melt + potential (surface Q-flux) used by the sea ice model. This + calculation requires an external SOM forcing data file that includes + ocean mixed layer depths and bottom-of-the-slab Q-fluxes. + Scientifically appropriate bottom-of-the-slab Q-fluxes are normally + ocean resolution dependent and are derived from the ocean model output + of a fully coupled CCSM run. Note that while this mode runs out of + the box, the default SOM forcing file is not scientifically + appropriate and is provided for testing and development purposes only. + Users must create scientifically appropriate data for their particular + application. A tool is available to derive valid SOM forcing. + + Set by the xml variable DOCN_MODE in env_run.xml + Currently, DOCN_MODE can be [prescribed,som,interannual,null] + If DOCN_MODE is prescribed, datamode will be set to SSTDATA + If DOCN_MODE is interannual, datamode will be set to IAF + If DOCN_MODE is som , datamode will be set to SOM + If DOCN_MODE is null, datamode will be set to NULL + + default: SSTDATA (prescribed setting for DOCN_MODE)' + + + NULL + SSTDATA + SOM + IAF + COPYALL + + + + + char + streams + abs + shr_strdata_nml + + spatial gridfile associated with the strdata. grid information will + be read from this file and that grid will serve as the target grid + for all input data for this strdata input. + + + null + + + + + char(30) + streams + shr_strdata_nml + copy,none,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are just copy (ie. no fill), special value, + nearest neighbor, nearest neighbor in "i" direction, or nearest + neighbor in "j" direction. + valid values: 'copy','none','spval','nn','nnoni','nnonj' + + + nn + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + plays no role is fill algorithm at the present time. + valid values: "nomask,srcmask,dstmask,bothmask" + + + nomask + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read in instead of computing the + weights on the fly for the fill operation. if this is set, fillalgo + and fillmask are ignored. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the fill operation. this allows a user to + save and reuse a set of weights later. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + array (up to 30 elements) of masking algorithms for mapping input data + associated with the array of streams. valid options are map only from + valid src points, map only to valid destination points, ignore all + masks, map only from valid src points to valid destination points. + valid values: srcmask, dstmask, nomask,bothmask + + + dstmask + + + + + char(30) + streams + shr_strdata_nml + copy,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are copy by index, set to special value, + nearest neighbor, nearest neighbor in "i" direction, nearest neighbor + in "j" direction, or bilinear. + valid values: copy,spval,nn,nnoni,nnonj,bilinear + + + bilinear + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read instead of computing + weights on the fly for the mapping (interpolation) operation. if this + is set, mapalgo and mapmask are ignored. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the mapping (interpolation) operation. this + allows a user to save and reuse a set of weights later. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + coszen,nearest,linear,lower,upper + + array (up to 30 elements) of time interpolation options associated with the array of + streams. + valid values: lower,upper,nearest,linear,coszen + lower = Use lower time-value + upper = Use upper time-value + nearest = Use the nearest time-value + linear = Linearly interpolate between the two time-values + coszen = Scale according to the cosine of the solar zenith angle (for solar) + + + linear + + + + + char(30) + streams + shr_strdata_nml + extend,cycle,limit + + array of time axis modes associated with the array of streams for + handling data outside the specified stream time axis. + valid options are to cycle the data based on the first, last, and + align settings associated with the stream dataset, to extend the first + and last valid value indefinitely, or to limit the interpolated data + to fall only between the least and greatest valid value of the time array. + valid values: cycle,extend,limit + extend = extrapolate before and after the period by using the first or last value. + cycle = cycle between the range of data + limit = restrict to the period for which the data is valid + + + cycle + limit + limit + + + + + real(30) + streams + shr_strdata_nml + + array (up to 30 elements) of delta time ratio limits placed on the + time interpolation associated with the array of streams. this real + value causes the model to stop if the ratio of the running maximum + delta time divided by the minimum delta time is greater than the + dtlimit for that stream. for instance, with daily data, the delta + time should be exactly one day throughout the dataset and the computed + maximum divided by minimum delta time should always be 1.0. for + monthly data, the delta time should be between 28 and 31 days and the + maximum ratio should be about 1.1. the running value of the delta + time is computed as data is read and any wraparound or cycling is also + included. this input helps trap missing data or errors in cycling. + to turn off trapping, set the value to 1.0e30 or something similar. + + + 1.5e0 + + + + + char + streams + shr_strdata_nml + + list of paired colon delimited field names that should be treated as + vectors when carrying out spatial interpolation. unlike other + character arrays in this namelist, this array is completely decoupled + from the list of streams. this is a list of vector pairs that span + all input streams where different fields of the vector pair could + appear in different streams. + for example, vectors = 'u:v','taux:tauy'. + + + null + + + + + char(30) + streams + shr_strdata_nml + + character array (up to 30 elements) of stream input files. this + string is actually parsed by a stream method and so the format is + specified by the stream module. this string consists of a + "stream_input_filename year_align year_first year_last". the + stream_input_filename is a stream text input file and the format and + options are described elsewhere. year_align, year_first, and + year_last provide information about the time axis of the file and how + to relate the input time axis to the model time axis. + + + + + + + + + + + + char + docn + docn_nml + 1d,root + + DOCN Decomposition strategy + 1d = Vector decomposition + root = run only on the master task + + + 1d + + + + + char + docn + docn_nml + + Master restart file name for docn model + + + undefined + + + + + char + docn + docn_nml + + Stream restart file name for docn model, needed for branch simulations + + + undefined + + + + + logical + docn + docn_nml + If TRUE, prognostic is forced to true. (default=false) + + .false. + + + + diff --git a/cime/components/data_comps/docn/docn_comp_mod.F90 b/cime/components/data_comps/docn/docn_comp_mod.F90 index 72f886d18f14..88cd3bc70a48 100644 --- a/cime/components/data_comps/docn/docn_comp_mod.F90 +++ b/cime/components/data_comps/docn/docn_comp_mod.F90 @@ -165,7 +165,6 @@ subroutine docn_comp_init( EClock, cdata, x2o, o2x, NLFilename ) integer(IN) :: yearLast ! last year to use in data stream integer(IN) :: yearAlign ! data year that aligns with yearFirst - character(CL) :: ocn_in ! dshr ocn namelist character(CL) :: decomp ! decomp strategy character(CL) :: rest_file ! restart filename character(CL) :: rest_file_strm ! restart filename for stream @@ -178,7 +177,7 @@ subroutine docn_comp_init( EClock, cdata, x2o, o2x, NLFilename ) !----- define namelist ----- namelist / docn_nml / & - ocn_in, decomp, restfilm, restfils, & + decomp, restfilm, restfils, & force_prognostic_true !--- formats --- @@ -249,7 +248,6 @@ subroutine docn_comp_init( EClock, cdata, x2o, o2x, NLFilename ) call t_startf('docn_readnml') filename = "docn_in"//trim(inst_suffix) - ocn_in = "unset" decomp = "1d" restfilm = trim(nullstr) restfils = trim(nullstr) @@ -264,13 +262,11 @@ subroutine docn_comp_init( EClock, cdata, x2o, o2x, NLFilename ) write(logunit,F01) 'ERROR: reading input namelist, '//trim(filename)//' iostat=',ierr call shr_sys_abort(subName//': namelist read error '//trim(filename)) end if - write(logunit,F00)' ocn_in = ',trim(ocn_in) write(logunit,F00)' decomp = ',trim(decomp) write(logunit,F00)' restfilm = ',trim(restfilm) write(logunit,F00)' restfils = ',trim(restfils) write(logunit,F0L)' force_prognostic_true = ',force_prognostic_true endif - call shr_mpi_bcast(ocn_in,mpicom,'ocn_in') call shr_mpi_bcast(decomp,mpicom,'decomp') call shr_mpi_bcast(restfilm,mpicom,'restfilm') call shr_mpi_bcast(restfils,mpicom,'restfils') @@ -288,7 +284,7 @@ subroutine docn_comp_init( EClock, cdata, x2o, o2x, NLFilename ) ! Read dshr namelist !---------------------------------------------------------------------------- - call shr_strdata_readnml(SDOCN,trim(ocn_in),mpicom=mpicom) + call shr_strdata_readnml(SDOCN,trim(filename),mpicom=mpicom) !---------------------------------------------------------------------------- ! Validate mode diff --git a/cime/components/data_comps/docn/ocn_comp_esmf.F90 b/cime/components/data_comps/docn/ocn_comp_esmf.F90 deleted file mode 100644 index 2896980063a1..000000000000 --- a/cime/components/data_comps/docn/ocn_comp_esmf.F90 +++ /dev/null @@ -1,252 +0,0 @@ -module ocn_comp_esmf - -#ifdef ESMF_INTERFACE - use shr_kind_mod, only: R8=>SHR_KIND_R8, IN=>SHR_KIND_IN, & - CS=>SHR_KIND_CS, CL=>SHR_KIND_CL - use shr_sys_mod ! shared system calls - - use seq_cdata_mod - use seq_infodata_mod - - use esmfshr_mod - - use docn_comp_mod - use esmf - use perf_mod - use mct_mod - - implicit none - - public :: ocn_init_esmf - public :: ocn_run_esmf - public :: ocn_final_esmf - public :: ocn_register_esmf - - private ! except - - type(seq_cdata) :: cdata - type(seq_infodata_type) :: infodata - type(mct_gsMap) :: gsmap - type(mct_gGrid) :: ggrid - type(mct_aVect) :: x2d - type(mct_aVect) :: d2x - - !----- formats ----- - character(*),parameter :: subName = "(ocn_comp_esmf) " - - save ! save everything - - ! - ! Author: Fei Liu - ! This module is ESMF compliant ocn data component - !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -contains - !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - !=============================================================================== - - subroutine ocn_register_esmf(comp, rc) - - implicit none - - type(ESMF_GridComp) :: comp - integer, intent(out) :: rc - - rc = ESMF_SUCCESS - - print *, "In ocn register routine" - ! Register the callback routines. - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_INITIALIZE, ocn_init_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_RUN, ocn_run_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_FINALIZE, ocn_final_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - end subroutine ocn_register_esmf - - !=============================================================================== - - subroutine ocn_init_esmf(comp, import_state, export_state, EClock, rc) - - !---------------------------------------------------------- - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !----- local ----- - integer(IN) :: MYID - character(CL) :: NLFilename - type(ESMF_Array) :: Ex2d, Ed2x, Edom - - character(*),parameter :: subName = "(ocn_init_esmf) " - character(ESMF_MAXSTR) :: convCIM, purpComp - !---------------------------------------------------------- - - rc = ESMF_SUCCESS - - NLFilename = 'unused' - - call esmfshr_infodata_state2infodata(export_state,infodata,ID=MYID, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call seq_cdata_init(cdata, MYID, ggrid, gsmap, infodata, 'docn') - - call docn_comp_init(EClock, cdata, x2d, d2x, NLFilename) - - call esmfshr_infodata_infodata2state(infodata,export_state,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Edom = mct2esmf_init(ggrid%data,gsmap,name='domain',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - call mct2esmf_copy(ggrid%data,Edom,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Ed2x = mct2esmf_init(d2x,gsmap,name='d2x',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Ex2d = mct2esmf_init(x2d,gsmap,name='x2d',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(d2x,Ed2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(export_state,(/Edom/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(export_state,(/Ed2x/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(import_state,(/Ex2d/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - -#ifdef USE_ESMF_METADATA - convCIM = "CIM" - purpComp = "Model Component Simulation Description" - - call ESMF_AttributeAdd(comp, & - convention=convCIM, purpose=purpComp, rc=rc) - - call ESMF_AttributeSet(comp, "ShortName", "DOCN", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "LongName", & - "Climatological Ocean Data Model", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "Description", & - "The CESM data models perform the basic function of " // & - "reading external data, modifying that data, and then " // & - "sending it to the driver via standard CESM coupling " // & - "interfaces. The driver and other models have no " // & - "fundamental knowledge of whether another component " // & - "is fully active or just a data model. In some cases, " // & - "data models are prognostic and also receive and use " // & - "some data sent by the driver to the data model. But " // & - "in most cases, the data models are not running " // & - "prognostically and have no need to receive any data " // & - "from the driver.", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "ReleaseDate", "2010", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "ModelType", "Ocean", & - convention=convCIM, purpose=purpComp, rc=rc) - - ! call ESMF_AttributeSet(comp, "Name", "Susan Bates", & - ! convention=convCIM, purpose=purpComp, rc=rc) - ! call ESMF_AttributeSet(comp, "EmailAddress", & - ! "bates@ucar.edu", & - ! convention=convCIM, purpose=purpComp, rc=rc) - ! call ESMF_AttributeSet(comp, "ResponsiblePartyRole", "contact", & - ! convention=convCIM, purpose=purpComp, rc=rc) -#endif - - rc = ESMF_SUCCESS - - end subroutine ocn_init_esmf - - !=============================================================================== - - subroutine ocn_run_esmf(comp, import_state, export_state, EClock, rc) - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !----- local ----- - integer(IN) :: MYID - type(ESMF_Array) :: Ex2d, Ed2x - - character(*),parameter :: subName = "(ocn_run_esmf) " - !---------------------------------------------------------- - - rc = ESMF_SUCCESS - - ! Unpack import state - - call esmfshr_infodata_state2infodata(export_state,infodata,ID=MYID) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateGet(import_state, itemName="x2d", array=Ex2d, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call esmf2mct_copy(Ex2d, x2d, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - ! Run model - - call docn_comp_run(EClock, cdata, x2d, d2x) - - ! Pack export state - - call esmfshr_infodata_infodata2state(infodata,export_state,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateGet(export_state, itemName="d2x", array=Ed2x, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(d2x,Ed2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - rc = ESMF_SUCCESS - - end subroutine ocn_run_esmf - - !=============================================================================== - - subroutine ocn_final_esmf(comp, import_state, export_state, EClock, rc) - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !---------------------------------------------------------------------------- - ! Finalize routine - !---------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - call docn_comp_final() - - end subroutine ocn_final_esmf - -#endif - -end module ocn_comp_esmf diff --git a/cime/components/data_comps/drof/bld/build-namelist b/cime/components/data_comps/drof/bld/build-namelist deleted file mode 100755 index b140d9492ffc..000000000000 --- a/cime/components/data_comps/drof/bld/build-namelist +++ /dev/null @@ -1,792 +0,0 @@ -#!/usr/bin/env perl -#----------------------------------------------------------------------------------------------- -# -# build-namelist -# -# This is the build-namelist script for the CIME drof (Data River Model). -#-------------------------------------------------------------------------------------------- - -use strict; -#use warnings; -#use diagnostics; -use Cwd qw(getcwd abs_path); -use English; -use Getopt::Long; -use IO::File; -use File::Basename; -use Data::Dumper; -#----------------------------------------------------------------------------------------------- - -sub usage { - die < 0, - silent => 0, - caseroot => undef, - cimeroot => undef, - inst_string => undef, - user_xml_dir=> undef, - ); - -GetOptions( - "h|help" => \$opts{'help'}, - "infile=s" => \$opts{'infile'}, - "namelist=s" => \$opts{'namelist'}, - "print=i" => \$opts{'print'}, - "caseroot=s" => \$opts{'caseroot'}, - "cimeroot=s" => \$opts{'cimeroot'}, - "inst_string=s" => \$opts{'inst_string'}, - "user_xml_dir=s" => \$opts{'user_xml_dir'}, -) or usage(); - -# Give usage message. -usage() if $opts{'help'}; - -# Check for unparsed arguments -if (@ARGV) { - print "ERROR: unrecognized arguments: @ARGV\n"; - usage(); -} - -# Define print levels: -# 0 - only issue fatal error messages -# 1 - only informs what files are created (default) -# 2 - verbose -my $print = $opts{'print'}; -my $eol = "\n"; - -# user_xml_dir -my $opt = 'user_xml_dir'; -if (defined $opts{$opt}) { - my $dir = $opts{$opt}; - if ( ! -d "$dir" ) { - die << "EOF"; -** $ProgName - $opt: $dir does NOT exist -EOF - } -} - -my $CASEROOT = $opts{'caseroot'}; -my $CIMEROOT = $opts{'cimeroot'}; -my $INST_STRING = $opts{'inst_string'}; - -if ($print>=2) { print "Setting drof configuration script directory to $cfgdir$eol"; } - -#----------------------------------------------------------------------------------------------- -# build empty config_cache.xml file (needed below) -my $config_cache = "$CASEROOT/Buildconf/drofconf/config_cache.xml"; -my $fh = new IO::File; -$fh->open(">$config_cache") or die "** can't open file: $config_cache\n"; -print $fh <<"EOF"; - - - -EOF -$fh->close; -if ($print>=1) { print "Wrote file $config_cache $eol"; } -(-f $config_cache) or die <<"EOF"; -** $ProgName - Cannot find configuration cache file: $config_cache\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Make sure we can find required perl modules, definition, and defaults files. -# Look for them under the directory that contains the configure script. - -# The root directory for the input data files must be specified. - -#The root directory to utils Tools -my $cimeroot = abs_path($CIMEROOT); -my $perl5lib = "$cimeroot/utils/perl5lib"; - -# The XML::Lite module is required to parse the XML files. -(-f "$perl5lib/XML/Lite.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"XML/Lite.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Config module provides utilities to access the configuration information -# in the config_cache.xml file -(-f "$perl5lib/Build/Config.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Config.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist definition file contains entries for all namelist variables that -# can be output by build-namelist. The version of the file that is associate with a -# fixed drof tag is $cfgdir/namelist_files/namelist_definition_drof.xml. -my $nl_definition_file = "${cfgdir}/namelist_files/namelist_definition_drof.xml"; - -# If user has user namelist definition files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_definition_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_definition_file = $newfile; - } -} - -(-f "$nl_definition_file") or die <<"EOF"; -** $ProgName - Cannot find namelist definition file \"$nl_definition_file\" ** -EOF -if ($print>=2) { print "Using namelist definition file $nl_definition_file$eol"; } - -# The Build::NamelistDefinition module provides utilities to validate that the output -# namelists are consistent with the namelist definition file -(-f "$perl5lib/Build/NamelistDefinition.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefinition.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist defaults file contains default values for most namelist variables -# can be output by build-namelist. The version of the file that is associated with a -# fixed drof tag is $cfgdir/namelist_files/namelist_defaults_drof.xml. -my $nl_defaults_file = "$cfgdir/namelist_files/namelist_defaults_drof.xml"; - -# If user has user namelist defaults files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_defaults_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_defaults_file = $newfile; - } -} - -(-f "$nl_defaults_file") or die <<"EOF"; -** $ProgName - Cannot find namelist defaults file \"$nl_defaults_file\" ** -EOF -if ($print>=2) { print "Using namelist defaults file $nl_defaults_file$eol"; } - -# The Build::NamelistDefaults module provides a utility to obtain default values of namelist -# variables based on finding a best fit with the attributes specified in the defaults file. -(-f "$perl5lib/Build/NamelistDefaults.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefaults.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Namelist module provides utilities to parse input namelists, to query and modify -# namelists, and to write output namelists. -(-f "$perl5lib/Build/Namelist.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Namelist.pm\" in directory - \"$perl5lib\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Add $cfgdir/perl5lib to the list of paths that Perl searches for modules -my @dirs = ( "$cfgdir/..", "$perl5lib"); -unshift @INC, @dirs; -require XML::Lite; -require Build::Config; -require Build::NamelistDefinition; -require Build::NamelistDefaults; -require Build::Namelist; -require Streams::TemplateGeneric; -require Config::SetupTools; - -#----------------------------------------------------------------------------------------------- -# Create a configuration object from the DROF config_cache.xml file. -my $cfg = Build::Config->new($config_cache); - -# Validate some of the commandline option values. -validate_options("commandline", $cfg, \%opts); - -# Create a namelist definition object. This object provides a method for verifying that the -# output namelist variables are in the definition file, and are output in the correct -# namelist groups. -my $definition = Build::NamelistDefinition->new($nl_definition_file); - -# Create a namelist defaults object. This object provides default values for variables -# contained in the input defaults file. The configuration object provides attribute -# values that are relevent for the DROF for which the namelist is being produced. -my $defaults = Build::NamelistDefaults->new( $nl_defaults_file, $cfg); - -# Create an empty namelist object. Add values to it in order of precedence. -my $nl = Build::Namelist->new(); - -#----------------------------------------------------------------------------------------------- -# Process the user input in order of precedence. At each point we'll only add new -# values to the namelist and not overwrite previously specified specified values which -# have higher precedence. - -# Process the -namelist arg. -if (defined $opts{'namelist'}) { - # Parse commandline namelist - my $nl_arg = Build::Namelist->new($opts{'namelist'}); - - # Validate input namelist -- trap exceptions - my $nl_arg_valid; - eval { $nl_arg_valid = $definition->validate($nl_arg); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in commandline arg '-namelist'.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_arg_valid); -} - -# Process the -infile arg. -if (defined $opts{'infile'}) { - foreach my $infile ( split( /,/, $opts{'infile'} ) ) { - # Parse namelist input from a file - my $nl_infile = Build::Namelist->new($infile); - - # Validate input namelist -- trap exceptions - my $nl_infile_valid; - eval { $nl_infile_valid = $definition->validate($nl_infile); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in '-infile' $infile.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_infile_valid); - } -} - -#----------------------------------------------------------------------------------------------- - -#################################### -# Required xml variables # -#################################### - -my %xmlvars = (); -my @files = <${CASEROOT}/*xml>; -SetupTools::getxmlvars(${CASEROOT},\%xmlvars); -foreach my $attr (keys %xmlvars) { - $xmlvars{$attr} = SetupTools::expand_xml_var($xmlvars{$attr}, \%xmlvars); -} - -my $RUN_TYPE = $xmlvars{'RUN_TYPE'}; -my $DIN_LOC_ROOT = $xmlvars{'DIN_LOC_ROOT'}; -my $ROF_GRID = $xmlvars{'ROF_GRID'}; -my $DROF_MODE = $xmlvars{'DROF_MODE'}; - -if ($ROF_GRID eq "null") { - if ($DROF_MODE ne "NULL") { - die "$ProgName ERROR:: ROF_GRID null DROF_MODE not NULL.\n"; - } -} - -(-d $DIN_LOC_ROOT) or mkdir $DIN_LOC_ROOT; -if ($print>=2) { print "Inputdata root directory: $DIN_LOC_ROOT$eol"; } - -#################################### -# Streams file(s) # -#################################### - -# Create input data list (written to later) -my $fh_out = new IO::File; -$fh_out->open(">>$CASEROOT/Buildconf/drof.input_data_list") or - die "** can't open filepath file: drof.input_data_list\n"; - -# Create hash needed to parse namelist_defaults_drof.xml file -my %default_namelist_opts; -$default_namelist_opts{'drof_mode'} = $DROF_MODE; -$default_namelist_opts{'rof_grid'} = $ROF_GRID; - -# Create streams template file(s) - loop over streams -my $streams = $defaults->get_value( "streamslist", \%default_namelist_opts ); -my @streams = split ",", $streams, -1; - -my $ostreams = undef; -my $omapalgo = undef; -my $omapmask = undef; -my $otintalgo = undef; -my $otaxmode = undef; -my $ofillalgo = undef; -my $ofillmask = undef; -my $odtlimit = undef; -foreach my $stream ( @streams ) { - - # Set stream specific part of default_namelist_opts hash - $default_namelist_opts{'stream'} = $stream; - - my $outstream = "drof.streams.txt" . ".$stream" . "$INST_STRING"; - if ($print>=1) { print " drof stream is $stream$INST_STRING \n";} - - if ($stream eq "NULL") { - - # do nothing - - } elsif (-e "$CASEROOT/user_$outstream") { - - my $command = "cp -p $CASEROOT/user_$outstream $CASEROOT/Buildconf/drofconf/$outstream"; - system($command) == 0 or die "system $command failed: $? \n"; - - } else { - - # Create hash to initialze streams object - my %stream_template_opts; - if ( $print == 0 ) { - $stream_template_opts{'printing'} = 0; - } else { - $stream_template_opts{'printing'} = 1; - } - $stream_template_opts{'test'} = $opts{'test'}; - $stream_template_opts{'ProgName'} = $ProgName; - $stream_template_opts{'ProgDir'} = "$cfgdir"; - $stream_template_opts{'cmdline'} = $cmdline; - - $stream_template_opts{'offset'} = 0; - $stream_template_opts{'filepath'} = $defaults->get_value( "strm_datdir" , \%default_namelist_opts ); - $stream_template_opts{'filenames'} = $defaults->get_value( "strm_datfil" , \%default_namelist_opts ); - $stream_template_opts{'domainpath'} = $defaults->get_value( "strm_domdir" , \%default_namelist_opts ); - $stream_template_opts{'domain'} = $defaults->get_value( "strm_domfil" , \%default_namelist_opts ); - $stream_template_opts{'datvarnames'}= $defaults->get_value( "strm_datvar" , \%default_namelist_opts ); - $stream_template_opts{'domvarnames'}= $defaults->get_value( "strm_domvar" , \%default_namelist_opts ); - $stream_template_opts{'yearfirst'} = $defaults->get_value( "strm_year_start", \%default_namelist_opts ); - $stream_template_opts{'yearlast'} = $defaults->get_value( "strm_year_end" , \%default_namelist_opts ); - - $stream_template_opts{'filepath'} = SetupTools::expand_xml_var($stream_template_opts{'filepath'} , \%xmlvars); - $stream_template_opts{'filenames'} = SetupTools::expand_xml_var($stream_template_opts{'filenames'} , \%xmlvars); - $stream_template_opts{'domainpath'} = SetupTools::expand_xml_var($stream_template_opts{'domainpath'}, \%xmlvars); - $stream_template_opts{'domain'} = SetupTools::expand_xml_var($stream_template_opts{'domain'} , \%xmlvars); - $stream_template_opts{'yearfirst'} = SetupTools::expand_xml_var($stream_template_opts{'yearfirst'} , \%xmlvars); - $stream_template_opts{'yearlast'} = SetupTools::expand_xml_var($stream_template_opts{'yearlast'} , \%xmlvars); - - # Create the streams txt file for this stream (from a generic template) - # QL, 150527,typos fixed, dice->drof - my $stream_template = Streams::TemplateGeneric->new( \%stream_template_opts ); - $stream_template->Read( "${CASEROOT}/Buildconf/drof.template.streams.xml" ); - $stream_template->Write( $outstream ); - - # Append to drof.input_data_list - my @filenames = $stream_template->GetDataFilenames( 'domain'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "domain${i} = $file\n"; - } - - my @filenames = $stream_template->GetDataFilenames( 'data'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "file${i} = $file\n"; - } - } - - # Stream specific namelist variables used below for $nl - my $tintalgo = $defaults->get_value( "strm_tintalgo" , \%default_namelist_opts); - my $mapalgo = $defaults->get_value( 'strm_mapalgo' , \%default_namelist_opts); - my $mapmask = $defaults->get_value( 'strm_mapmask' , \%default_namelist_opts); - my $taxmode = $defaults->get_value( "strm_taxmode" , \%default_namelist_opts); - my $fillalgo = $defaults->get_value( 'strm_fillalgo' , \%default_namelist_opts); - my $fillmask = $defaults->get_value( 'strm_fillmask' , \%default_namelist_opts); - my $dtlimit = $defaults->get_value( 'strm_dtlimit' , \%default_namelist_opts); - my $beg_year = $defaults->get_value( 'strm_year_start', \%default_namelist_opts); - my $end_year = $defaults->get_value( 'strm_year_end' , \%default_namelist_opts); - my $align_year = $defaults->get_value( 'strm_year_align', \%default_namelist_opts); - $beg_year = SetupTools::expand_xml_var($beg_year , \%xmlvars); - $end_year = SetupTools::expand_xml_var($end_year , \%xmlvars); - $align_year = SetupTools::expand_xml_var($align_year, \%xmlvars); - - if ( $beg_year > $end_year ) { - print "\n\nbeg_year=$beg_year end_year=$end_year\n"; - die "$ProgName ERROR:: beg_year greater than end_year\n"; - } - - if ( ! defined($ostreams) ) { - $ostreams = "\"$outstream $align_year $beg_year $end_year\""; - $omapalgo = "\'$mapalgo\'"; - $omapmask = "\'$mapmask\'"; - $otintalgo = "\'$tintalgo\'"; - $otaxmode = "\'$taxmode\'"; - $ofillalgo = "\'$fillalgo\'"; - $ofillmask = "\'$fillmask\'"; - $odtlimit = "$dtlimit"; - } else { - $ostreams = "$ostreams,\"$outstream $align_year $beg_year $end_year\""; - $omapalgo .= ",\'$mapalgo\'"; - $omapmask .= ",\'$mapmask\'"; - $otintalgo .= ",\'$tintalgo\'"; - $otaxmode .= ",\'$taxmode\'"; - $ofillalgo .= ",\'$fillalgo\'"; - $ofillmask .= ",\'$fillmask\'"; - $odtlimit .= ",$dtlimit"; - } -} - -$fh_out->close; - -#################################### -# namelist group: shr_strdata_nml # -#################################### - -my $datamode = $defaults->get_value( "datamode", \%default_namelist_opts ); -add_default($nl, 'datamode', 'val' => "$datamode"); -if ($datamode ne 'NULL') { - add_default($nl, 'streams', 'val' => "$ostreams" ); - add_default($nl, 'mapalgo', 'val' => "$omapalgo" ); - add_default($nl, 'mapmask', 'val' => "$omapmask" ); - add_default($nl, 'tintalgo', 'val' => "$otintalgo" ); - add_default($nl, 'taxmode', 'val' => "$otaxmode" ); - add_default($nl, 'fillalgo', 'val' => "$ofillalgo" ); - add_default($nl, 'fillmask', 'val' => "$ofillmask" ); - add_default($nl, 'dtlimit', 'val' => "$odtlimit" ); -} - -############################# -# namelist group: drof_nml # -############################# - -add_default($nl, 'rof_in', 'val'=>"drof_rof_in${INST_STRING}"); -add_default($nl, 'decomp'); -add_default($nl, 'force_prognostic_true', 'val'=>'.false.'); - -if ( $RUN_TYPE =~ /branch/ ) { - # The drof master restart file is currently unused - #if (not defined $nl->get_value('restfilm')) { - # die "$ProgName ERROR:: restfilm is required for a branch type.\n"; - #} -} - -#----------------------------------------------------------------------------------------------- -# Validate that the entire resultant namelist is valid -# -$definition->validate($nl); - -#----------------------------------------------------------------------------------------------- -# Write output files -# -my $note = ""; - -# drof_rof_in -my @groups = qw(shr_strdata_nml); -my $outfile; -$outfile = "./drof_rof_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing drof_dshr namelist to $outfile $eol"; } - -# drof_in -@groups = qw(drof_nml); -$outfile = "./drof_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing drof_in namelist to $outfile $eol"; } - -# rof_modelio -@groups = qw(modelio); -$outfile = "./rof_modelio.nml"; -$nl->set_variable_value( "modelio", "logfile", "'rof.log'" ); -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing rof_modelio.nml namelist to $outfile $eol"; } - -# Create file of required local input datasets -check_input_files($nl, $DIN_LOC_ROOT, "$CASEROOT/Buildconf/drof.input_data_list"); - - -#=============================================================================================== -#=============================================================================================== -# END OF MAIN SCRIPT -#=============================================================================================== -#=============================================================================================== - -sub add_default { - -# Add a value for the specified variable to the specified namelist object. The variables -# already in the object have the higher precedence, so if the specified variable is already -# defined in the object then don't overwrite it, just return. -# -# This method checks the definition file and adds the variable to the correct -# namelist group. -# -# The value can be provided by using the optional argument key 'val' in the -# calling list. Otherwise a default value is obtained from the namelist -# defaults object. If no default value is found this method throws an exception -# unless the 'nofail' option is set true. -# -# Example 1: Specify the default value $val for the namelist variable $var in namelist -# object $nl: -# -# add_default($nl, $var, 'val'=>$val) -# -# Example 2: Add a default for variable $var if an appropriate value is found. Otherwise -# don't add the variable -# -# add_default($nl, $var, 'nofail'=>1) -# -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object -# $defaults -- the namelist defaults object -# $DIN_LOC_ROOT -- inputdata root directory - - my $nl = shift; # namelist object - my $var = shift; # name of namelist variable - my %opts = @_; # options - - # If variable has quotes around it - if ( $var =~ /'(.+)'/ ) { - $var = $1; - } - # Query the definition to find which group the variable belongs to. Exit if not found. - my $group = $definition->get_group_name($var); - unless ($group) { - my $fname = $definition->get_file_name(); - die "$ProgName - ERROR: variable \"$var\" not found in namelist definition file $fname.\n"; - } - - # check whether the variable has a value in the namelist object -- if so then skip to end - my $val = $nl->get_variable_value($group, $var); - if (! defined $val) { - - # Look for a specified value in the options hash - - if (defined $opts{'val'}) { - $val = $opts{'val'}; - } - # or else get a value from namelist defaults object. - # Note that if the 'val' key isn't in the hash, then just pass anything else - # in %opts to the get_value method to be used as attributes that are matched - # when looking for default values. - else { - $val = $defaults->get_value($var, \%opts); - - # Truncate model_version appropriately - - if ( $var eq "model_version" ) { - $val =~ /(URL: https:\/\/[a-zA-Z0-9._-]+\/)([a-zA-Z0-9\/._-]+)(\/bld\/.+)/; - $val = $2; - } - } - - unless ( defined($val) ) { - unless ($opts{'nofail'}) { - die "$ProgName - No default value found for $var.\n" . - " Are defaults provided? \n"; - } - else { - return; - } - } - - - # query the definition to find out if the variable is an input pathname - my $is_input_pathname = $definition->is_input_pathname($var); - - # The default values for input pathnames are relative. If the namelist - # variable is defined to be an absolute pathname, then prepend - # the inputdata root directory. - if (not defined $opts{'no_abspath'}) { - if (defined $opts{'set_abspath'}) { - $val = set_abs_filepath($val, $opts{'set_abspath'}); - } else { - if ($is_input_pathname eq 'abs') { - $val = set_abs_filepath($val, $DIN_LOC_ROOT); - } - } - } - - # query the definition to find out if the variable takes a string value. - # The returned string length will be >0 if $var is a string, and 0 if not. - my $str_len = $definition->get_str_len($var); - - # If the variable is a string, then add quotes if they're missing - if ($str_len > 0) { - $val = quote_string($val); - } - - # set the value in the namelist - $nl->set_variable_value($group, $var, $val); - } - -} - -#----------------------------------------------------------------------------------------------- - -sub check_input_files { - -# For each variable in the namelist which is an input dataset, check to see if it -# exists locally. -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object - - my $nl = shift; # namelist object - my $inputdata_rootdir = shift; # if false prints test, else creates inputdata file - my $outfile = shift; - open(OUTFILE, ">>$outfile") if defined $inputdata_rootdir; - - # Look through all namelist groups - my @groups = $nl->get_group_names(); - foreach my $group (@groups) { - - # Look through all variables in each group - my @vars = $nl->get_variable_names($group); - foreach my $var (@vars) { - - # Is the variable an input dataset? - my $input_pathname_type = $definition->is_input_pathname($var); - - # If it is, check whether it exists locally and print status - if ($input_pathname_type) { - - # Get pathname of input dataset - my $pathname = $nl->get_variable_value($group, $var); - # Need to strip the quotes - $pathname =~ s/[\'\"]//g; - - if ($input_pathname_type eq 'abs') { - if ($inputdata_rootdir) { - print OUTFILE "$var = $pathname\n"; - } - else { - if (-e $pathname) { # use -e rather than -f since the absolute pathname - # might be a directory - print "OK -- found $var = $pathname\n"; - } - else { - print "NOT FOUND: $var = $pathname\n"; - } - } - } - elsif ($input_pathname_type =~ m/rel:(.+)/o) { - # The match provides the namelist variable that contains the - # root directory for a relative filename - my $rootdir_var = $1; - my $rootdir = $nl->get_variable_value($group, $rootdir_var); - $rootdir =~ s/[\'\"]//g; - if ($inputdata_rootdir) { - $pathname = "$rootdir/$pathname"; - print OUTFILE "$var = $pathname\n"; - } - else { - if (-f "$rootdir/$pathname") { - print "OK -- found $var = $rootdir/$pathname\n"; - } - else { - print "NOT FOUND: $var = $rootdir/$pathname\n"; - } - } - } - } - } - } - close OUTFILE if defined $inputdata_rootdir; - return 0 if defined $inputdata_rootdir; -} - -#----------------------------------------------------------------------------------------------- - -sub set_abs_filepath { - -# check whether the input filepath is an absolute path, and if it isn't then -# prepend a root directory - - my ($filepath, $rootdir) = @_; - - # strip any leading/trailing whitespace - $filepath =~ s/^\s+//; - $filepath =~ s/\s+$//; - $rootdir =~ s/^\s+//; - $rootdir =~ s/\s+$//; - - # strip any leading/trailing quotes - $filepath =~ s/^['"]+//; - $filepath =~ s/["']+$//; - $rootdir =~ s/^['"]+//; - $rootdir =~ s/["']+$//; - - my $out = $filepath; - unless ( $filepath =~ /^\// ) { # unless $filepath starts with a / - $out = "$rootdir/$filepath"; # prepend the root directory - } - return $out; -} - -#----------------------------------------------------------------------------------------------- - -sub valid_option { - - my ($val, @expect) = @_; - my ($expect); - - $val =~ s/^\s+//; - $val =~ s/\s+$//; - foreach $expect (@expect) { - if ($val =~ /^$expect$/i) { return $expect; } - } - return undef; -} - -#----------------------------------------------------------------------------------------------- - -sub validate_options { - - my $source = shift; # text string declaring the source of the options being validated - my $cfg = shift; # configure object - my $opts = shift; # reference to hash that contains the options - - my ($opt, $old, @expect); -} - -#----------------------------------------------------------------------------------------------- - -sub quote_string { - my $str = shift; - $str =~ s/^\s+//; - $str =~ s/\s+$//; - unless ($str =~ /^['"]/) { #"' - $str = "\'$str\'"; - } - return $str; -} - - diff --git a/cime/components/data_comps/drof/bld/namelist_files/namelist_defaults_drof.xml b/cime/components/data_comps/drof/bld/namelist_files/namelist_defaults_drof.xml deleted file mode 100644 index ce50d372ae26..000000000000 --- a/cime/components/data_comps/drof/bld/namelist_files/namelist_defaults_drof.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - -NULL -CPLHIST -DIATREN_ANN_RX1 -DIATREN_IAF_RX1 - - - - - -NULL -rof.cplhist -rof.diatren_ann_rx1 -rof.diatren_iaf_rx1 - - - - - - - - -1 -1 -1 -0 -upper -cycle -$DIN_LOC_ROOT/lnd/dlnd7/RX1 -runoff.daitren.annual.090225.nc -$DIN_LOC_ROOT/lnd/dlnd7/RX1 -runoff.daitren.annual.090225.nc - - time time - xc lon - yc lat - area area - mask mask - - - runoff rofl - - - - - - - - -1 -1948 -2009 -0 -upper -cycle -$DIN_LOC_ROOT/lnd/dlnd7/RX1 -runoff.daitren.iaf.20120419.nc -$DIN_LOC_ROOT/lnd/dlnd7/RX1 -runoff.daitren.iaf.20120419.nc - - time time - xc lon - yc lat - arear area - mask mask - - - runoff rofl - - - - - - -$DROF_CPLHIST_YR_ALIGN -$DROF_CPLHIST_YR_START -$DROF_CPLHIST_YR_END -$DROF_CPLHIST_CASE --43200 -lower -cycle -$DIN_LOC_ROOT/lnd/dlnd7 -domain.lnd.fv1.9x2.5_gx1v6.090206.nc -$DROF_CPLHIST_DIR -$DROF_CPLHIST_CASE.cpl.hr2xacc.%y.nc - - time time - xc lon - yc lat - area area - mask mask - - - r2xacc_Forr_roff rofl - r2xacc_Forr_ioff rofi - - - - - - -1d - -1.5e0 - -nn - -nomask - -bilinear - -dstmask - -linear - -cycle - - diff --git a/cime/components/data_comps/drof/bld/namelist_files/namelist_definition_drof.xml b/cime/components/data_comps/drof/bld/namelist_files/namelist_definition_drof.xml deleted file mode 100644 index f8ec980d26c3..000000000000 --- a/cime/components/data_comps/drof/bld/namelist_files/namelist_definition_drof.xml +++ /dev/null @@ -1,270 +0,0 @@ - - - - - - - - - - - - - - - -valid values: NULL,CPLHIST,DIATREN_ANN_RX1,DIATREN_IAF_RX1 -The runoff data is associated with the runoff model -and is normally on a different grid than the land data. -In the data model, the land and snow modes are treated completely -independently as if there were two models. - -datamode = "NULL" - NULL is always a valid option and means no data will be generated. - Turns off the data model as a provider of data to the coupler. The - ice_present flag will be set to false and the coupler will assume no - exchange of data to or from the data model. -dataMode = "COPYALL" - Copies all fields directly from the input data streams Any required - fields not found on an input stream will be set to zero. -datamode = "CPLHIST" - Reads in data from coupler history files generated by a previous run -datamode = DIATREN_ANN_RX1,DIATREN_IAF_RX1 - Reads in annual and intra-annual forcing runoff data used for CORE2 forcing runs - Only valid for rof mode - -Set by the following xml variables in env_run.xml -DROF_MODE - specifies values for rof mode: CPLHIST,DIATREN_ANN_RX1,DIATREN_IAF_RX1,NULL - default value: DIATREN_ANN_RX1 - - - -spatial gridfile associated with the strdata. grid information will -be read from this file and that grid will serve as the target grid -for all input data for this strdata input. - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are just copy (ie. no fill), special value, -nearest neighbor, nearest neighbor in "i" direction, or nearest -neighbor in "j" direction. -valid values: 'copy','spval','nn','nnoni','nnonj' -default: "nn". - - - -plays no role is fill algorithm at the present time. -valid values: "nomask,srcmask,dstmask,bothmask" -default: "nomask" - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read in instead of computing the -weights on the fly for the fill operation. if this is set, fillalgo -and fillmask are ignored. -default: unset - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the fill operation. this allows a user to -save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of masking algorithms for mapping input data -associated with the array of streams. valid options are map only from -valid src points, map only to valid destination points, ignore all -masks, map only from valid src points to valid destination points. -valid values: srcmask, dstmask, nomask,bothmask -default: dstmask - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are copy by index, set to special value, -nearest neighbor, nearest neighbor in "i" direction, nearest neighbor -in "j" direction, or bilinear. -valid values: copy,spval,nn,nnoni,nnonj,bilinear -default: bilinear - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read instead of computing -weights on the fly for the mapping (interpolation) operation. if this -is set, mapalgo and mapmask are ignored. default="unset". - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the mapping (interpolation) operation. this -allows a user to save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of time interpolation options associated with the array of -streams. -valid values: lower,upper,nearest,linear,coszen - lower = Use lower time-value - upper = Use upper time-value - nearest = Use the nearest time-value - linear = Linearly interpolate between the two time-values - coszen = Scale according to the cosine of the solar zenith angle (for solar) -default="linear". - - - -array of time axis modes associated with the array of streams for -handling data outside the specified stream time axis. -valid options are to cycle the data based on the first, last, and -align settings associated with the stream dataset, to extend the first -and last valid value indefinitely, or to limit the interpolated data -to fall only between the least and greatest valid value of the time array. -valid values: cycle,extend,limit - extend = extrapolate before and after the period by using the first or last value. - cycle = cycle between the range of data - limit = restrict to the period for which the data is valid -default="cycle". - - - -array (up to 30 elements) of delta time ratio limits placed on the -time interpolation associated with the array of streams. this real -value causes the model to stop if the ratio of the running maximum -delta time divided by the minimum delta time is greater than the -dtlimit for that stream. for instance, with daily data, the delta -time should be exactly one day throughout the dataset and the computed -maximum divided by minimum delta time should always be 1.0. for -monthly data, the delta time should be between 28 and 31 days and the -maximum ratio should be about 1.1. the running value of the delta -time is computed as data is read and any wraparound or cycling is also -included. this input helps trap missing data or errors in cycling. -to turn off trapping, set the value to 1.0e30 or something similar. -default=1.5. - - - -character array (up to 30 elements) of stream input files. this -string is actually parsed by a stream method and so the format is -specified by the stream module. this string consists of a -"stream_input_filename year_align year_first year_last". the -stream_input_filename is a stream text input file and the format and -options are described elsewhere. year_align, year_first, and -year_last provide information about the time axis of the file and how -to relate the input time axis to the model time axis. -default="null". - - - - - - - -Namelist filename for data model rof share stream data namelist - - - -Namelist filename for data model rof share stream data namelist - - - -DROF Decomposition strategy - 1d = Vector decomposition - root = run only on the master task - - - -Master restart file name for drof model - - - -Stream restart file name for drof model, needed for branch simulations - - - -If TRUE, prognostic is forced to true. -default=false - - - diff --git a/cime/components/data_comps/drof/cime_config/buildlib b/cime/components/data_comps/drof/cime_config/buildlib index 8b7682a2b199..b53123f5dacc 100755 --- a/cime/components/data_comps/drof/cime_config/buildlib +++ b/cime/components/data_comps/drof/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_data_lib diff --git a/cime/components/data_comps/drof/cime_config/buildnml b/cime/components/data_comps/drof/cime_config/buildnml index e3565e47dd58..e76eea5a8c38 100755 --- a/cime/components/data_comps/drof/cime_config/buildnml +++ b/cime/components/data_comps/drof/cime_config/buildnml @@ -1,17 +1,216 @@ #!/usr/bin/env python +"""Namelist creator for CIME's data river model. """ -build data model library -""" -import sys, os +# Typically ignore this. +# pylint: disable=invalid-name + +# Disable these because this is our standard setup +# pylint: disable=wildcard-import,unused-wildcard-import,wrong-import-position + +import os, shutil, sys, glob -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_data_nml +from CIME.case import Case +from CIME.XML.files import Files +from CIME.nmlgen import NamelistGenerator +from CIME.utils import expect +from CIME.buildnml import create_namelist_infile, parse_input + +logger = logging.getLogger(__name__) + +# pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements +#################################################################################### +def _create_namelists(case, confdir, inst_string, infile, nmlgen): +#################################################################################### + """Write out the namelist for this component. + + Most arguments are the same as those for `NamelistGenerator`. The + `inst_string` argument is used as a suffix to distinguish files for + different instances. The `confdir` argument is used to specify the directory + in which output files will be placed. + """ + + #---------------------------------------------------- + # Get a bunch of information from the case. + #---------------------------------------------------- + rof_domain_file = case.get_value("ROF_DOMAIN_FILE") + rof_domain_path = case.get_value("ROF_DOMAIN_PATH") + drof_mode = case.get_value("DROF_MODE") + rof_grid = case.get_value("ROF_GRID") + + #---------------------------------------------------- + # Check for incompatible options. + #---------------------------------------------------- + expect(rof_grid != "null", + "ROF_GRID cannot be null") + expect(drof_mode != "NULL", + "DROF_MODE cannot be NULL") + + #---------------------------------------------------- + # Log some settings. + #---------------------------------------------------- + logger.debug("DROF mode is %s", drof_mode) + logger.debug("DROF grid is %s", rof_grid) + + #---------------------------------------------------- + # Clear out old data. + #---------------------------------------------------- + data_list_path = os.path.join(case.get_case_root(), "Buildconf", + "drof.input_data_list") + if os.path.exists(data_list_path): + os.remove(data_list_path) + + #---------------------------------------------------- + # Create configuration information. + #---------------------------------------------------- + config = {} + config['rof_grid'] = rof_grid + config['drof_mode'] = drof_mode + + #---------------------------------------------------- + # Initialize namelist defaults + #---------------------------------------------------- + nmlgen.init_defaults(infile, config) + + #---------------------------------------------------- + # Construct the list of streams. + #---------------------------------------------------- + streams = nmlgen.get_streams() + + #---------------------------------------------------- + # For each stream, create stream text file and update + # shr_strdata_nml group and input data list. + #---------------------------------------------------- + for stream in streams: + + # Ignore null values. + if stream is None or stream in ("NULL", ""): + continue + + inst_stream = stream + inst_string + logger.debug("DROF stream is %s", inst_stream) + stream_path = os.path.join(confdir, "drof.streams.txt." + inst_stream) + user_stream_path = os.path.join(case.get_case_root(), + "user_drof.streams.txt." + inst_stream) + + # Use the user's stream file, or create one if necessary. + if os.path.exists(user_stream_path): + shutil.copyfile(user_stream_path, stream_path) + config['stream'] = stream + nmlgen.update_shr_strdata_nml(config, stream, stream_path) + else: + nmlgen.create_stream_file_and_update_shr_strdata_nml(config, stream, stream_path, data_list_path) + + #---------------------------------------------------- + # Create `shr_strdata_nml` namelist group. + #---------------------------------------------------- + # set per-stream variables + nmlgen.create_shr_strdata_nml() + + # set variables that are not per-stream + if rof_domain_file != "UNSET": + full_domain_path = os.path.join(rof_domain_path, rof_domain_file) + nmlgen.add_default("domainfile", value=full_domain_path) + + #---------------------------------------------------- + # Finally, write out all the namelists. + #---------------------------------------------------- + namelist_file = os.path.join(confdir, "drof_in") + nmlgen.write_output_file(namelist_file, data_list_path, groups=['drof_nml','shr_strdata_nml']) + +############################################################################### +def buildnml(case, caseroot, compname): +############################################################################### + + # Build the component namelist and required stream txt files + if compname != "drof": + raise AttributeError + + rundir = case.get_value("RUNDIR") + ninst = case.get_value("NINST_ROF") + + # Determine configuration directory + confdir = os.path.join(caseroot,"Buildconf",compname + "conf") + if not os.path.isdir(confdir): + os.makedirs(confdir) + + #---------------------------------------------------- + # Construct the namelist generator + #---------------------------------------------------- + # determine directory for user modified namelist_definitions.xml + user_xml_dir = os.path.join(caseroot, "SourceMods", "src." + compname) + expect (os.path.isdir(user_xml_dir), + "user_xml_dir %s does not exist " %user_xml_dir) + + # NOTE: User definition *replaces* existing definition. + files = Files() + definition_file = [files.get_value("NAMELIST_DEFINITION_FILE", {"component":"drof"})] + + user_definition = os.path.join(user_xml_dir, "namelist_definition_drof.xml") + if os.path.isfile(user_definition): + definition_file = [user_definition] + for file_ in definition_file: + expect(os.path.isfile(file_), "Namelist XML file %s not found!" % file_) + + # Create the namelist generator object - independent of instance + nmlgen = NamelistGenerator(case, definition_file) + + #---------------------------------------------------- + # Loop over instances + #---------------------------------------------------- + for inst_counter in range(1, ninst+1): + + # determine instance string + inst_string = "" + if ninst > 1: + inst_string = '_' + '%04d' % inst_counter + + # If multi-instance case does not have restart file, use + # single-case restart for each instance + rpointer = "rpointer." + compname + 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), + os.path.join(rundir, rpointer + inst_string)) + + inst_string_label = inst_string + if not inst_string_label: + inst_string_label = "\"\"" + + # create namelist output infile using user_nl_file as input + user_nl_file = os.path.join(caseroot, "user_nl_" + compname + inst_string) + expect(os.path.isfile(user_nl_file), + "Missing required user_nl_file %s " %(user_nl_file)) + infile = os.path.join(confdir, "namelist_infile") + create_namelist_infile(case, user_nl_file, infile) + namelist_infile = [infile] + + # create namelist and stream file(s) data component + _create_namelists(case, confdir, inst_string, namelist_infile, nmlgen) + + # copy namelist files and stream text files, to rundir + if os.path.isdir(rundir): + filename = compname + "_in" + file_src = os.path.join(confdir, filename) + file_dest = os.path.join(rundir, filename) + if inst_string: + file_dest += inst_string + shutil.copy(file_src,file_dest) + + for txtfile in glob.glob(os.path.join(confdir, "*txt*")): + shutil.copy(txtfile, rundir) + +############################################################################### +def _main_func(): + # Build the component namelist and required stream txt files + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "drof") -build_data_nml(sys.argv, 'rof') +if __name__ == "__main__": + _main_func() diff --git a/cime/components/data_comps/drof/cime_config/config_archive.xml b/cime/components/data_comps/drof/cime_config/config_archive.xml new file mode 100644 index 000000000000..804933fe8e15 --- /dev/null +++ b/cime/components/data_comps/drof/cime_config/config_archive.xml @@ -0,0 +1,10 @@ + + + \.r.* + unset + + rpointer$NINST_STRING.rof + $CASE.drof$NINST_STRING.r.$DATENAME.nc,$CASE.drof$NINST_STRING.rs1.$DATENAME.bin + + + diff --git a/cime/components/data_comps/drof/cime_config/config_component.xml b/cime/components/data_comps/drof/cime_config/config_component.xml index 373af732a213..3619af3dac92 100644 --- a/cime/components/data_comps/drof/cime_config/config_component.xml +++ b/cime/components/data_comps/drof/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -21,6 +21,7 @@ NULL DIATREN_ANN_RX1 DIATREN_IAF_RX1 + CPLHIST NULL run_component_drof @@ -29,9 +30,9 @@ observational climatological or interannual 1-degree runoff data is used. In CPLHIST mode, runoff data from a previous model run is read in. In NULL mode, the runoff - data is set to zero. In CPLHIST mode, land forcing data from a previous - model run is output by the coupler and read in by the data land - model. In NULL mode, land forcing is set to zero and not used. The + data is set to zero. In CPLHIST mode, runoff forcing data from a previous + model run is output by the coupler and read in by the data rof + model. In NULL mode, runoff forcing is set to zero and not used. The default is DIATREN_ANN_RX1. @@ -84,6 +85,7 @@ NULL drof mode: COREv2 drof normal year forcing: COREv2 drof interannual year forcing: + CPLHIST mode: @@ -92,4 +94,4 @@ ========================================= - + diff --git a/cime/components/data_comps/drof/cime_config/namelist_definition_drof.xml b/cime/components/data_comps/drof/cime_config/namelist_definition_drof.xml new file mode 100644 index 000000000000..a5a953ba8ed6 --- /dev/null +++ b/cime/components/data_comps/drof/cime_config/namelist_definition_drof.xml @@ -0,0 +1,538 @@ + + + + + + + + + + + + + + char(100) + streams + streams_file + List of streams used for the given drof_mode. + + NULL + rof.cplhist + rof.diatren_ann_rx1 + rof.diatren_iaf_rx1 + + + + + char + streams + streams_file + Stream domain file directory. + + $DIN_LOC_ROOT/lnd/dlnd7/RX1 + $DIN_LOC_ROOT/lnd/dlnd7/RX1 + null + + + + + char + streams + streams_file + Stream domain file path(s). + + runoff.daitren.annual.090225.nc + runoff.daitren.iaf.20120419.nc + null + + + + + char + streams + streams_file + Stream domain variable name(s). + + + time time + xc lon + yc lat + area area + mask mask + + + time time + xc lon + yc lat + arear area + mask mask + + + time time + domrb_lon lon + domrb_lat lat + domrb_aream area + domrb_mask mask + + + + + + char + streams + streams_file + Stream data file directory. + + $DIN_LOC_ROOT/lnd/dlnd7/RX1 + $DIN_LOC_ROOT/lnd/dlnd7/RX1 + $DROF_CPLHIST_DIR + + + + + char + streams + streams_file + Stream data file path(s). + + runoff.daitren.annual.090225.nc + runoff.daitren.iaf.20120419.nc + $DROF_CPLHIST_CASE.cpl.hr2x.%ym.nc + + + + + char + streams + streams_file + Stream data variable name(s). + + + runoff rofl + + + runoff rofl + + + r2x_Forr_rofl rofl + r2x_Forr_rofi rofi + + + + + + integer + streams + streams_file + Stream offset. + + 0 + 0 + + + + + integer + streams + streams_file + Simulation year to align stream to. + + 1 + 1 + $DROF_CPLHIST_YR_ALIGN + + + + + integer + streams + streams_file + First year of stream. + + 1 + 1948 + $DROF_CPLHIST_YR_START + + + + + integer + streams + streams_file + Last year of stream. + + 1 + 2009 + $DROF_CPLHIST_YR_END + + + + + + + + + + + + + char + streams + shr_strdata_nml + NULL,CPLHIST,DIATREN_ANN_RX1,DIATREN_IAF_RX1 + + The runoff data is associated with the river model. + datamode = "NULL" + NULL is always a valid option and means no data will be generated. + Turns off the data model as a provider of data to the coupler. The + rof_present flag will be set to false and the coupler will assume no + exchange of data to or from the data model. + dataMode = "COPYALL" + Copies all fields directly from the input data streams Any required + fields not found on an input stream will be set to zero. + datamode = "CPLHIST" + Reads in data from coupler history files generated by a previous run + datamode = DIATREN_ANN_RX1 + Reads in annual forcing river data used for CORE2 forcing runs + datamode = DIATREN_ANN_RX1,DIATREN_IAF_RX1 + Reads in intra-annual forcing river data used for CORE2 forcing runs + Set by the the DROF_MODE xml variables in env_run.xml + specifies values for rof mode: CPLHIST,DIATREN_ANN_RX1,DIATREN_IAF_RX1,NULL + default value: DIATREN_ANN_RX1 + + + NULL + CPLHIST + DIATREN_ANN_RX1 + DIATREN_IAF_RX1 + + + + + char + streams + abs + shr_strdata_nml + + spatial gridfile associated with the strdata. grid information will + be read from this file and that grid will serve as the target grid + for all input data for this strdata input. + + + null + + + + + char(30) + streams + shr_strdata_nml + copy,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are just copy (ie. no fill), special value, + nearest neighbor, nearest neighbor in "i" direction, or nearest + neighbor in "j" direction. + valid values: 'copy','spval','nn','nnoni','nnonj' + + + nn + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + plays no role is fill algorithm at the present time. + valid values: "nomask,srcmask,dstmask,bothmask" + + + nomask + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read in instead of computing the + weights on the fly for the fill operation. if this is set, fillalgo + and fillmask are ignored. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the fill operation. this allows a user to + save and reuse a set of weights later. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + "nomask,srcmask,dstmask,bothmask" + + array (up to 30 elements) of masking algorithms for mapping input data + associated with the array of streams. valid options are map only from + valid src points, map only to valid destination points, ignore all + masks, map only from valid src points to valid destination points. + valid values: srcmask, dstmask, nomask,bothmask + + + dstmask + + + + + char(30) + streams + shr_strdata_nml + "copy,bilinear,nn,nnoni,nnonj,spval" + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are copy by index, set to special value, + nearest neighbor, nearest neighbor in "i" direction, nearest neighbor + in "j" direction, or bilinear. + valid values: copy,spval,nn,nnoni,nnonj,bilinear + + + bilinear + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read instead of computing + weights on the fly for the mapping (interpolation) operation. if this + is set, mapalgo and mapmask are ignored. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the mapping (interpolation) operation. this + allows a user to save and reuse a set of weights later. + + + NOT_SET + + + + + char(30) + streams + shr_strdata_nml + coszen,nearest,linear,lower,upper + + array (up to 30 elements) of time interpolation options associated with the array of + streams. + valid values: lower,upper,nearest,linear,coszen + lower = Use lower time-value + upper = Use upper time-value + nearest = Use the nearest time-value + linear = Linearly interpolate between the two time-values + coszen = Scale according to the cosine of the solar zenith angle (for solar) + + + linear + upper + upper + nearest + + + + + char(30) + streams + shr_strdata_nml + "extend,cycle,limit" + + array of time axis modes associated with the array of streams for + handling data outside the specified stream time axis. + valid options are to cycle the data based on the first, last, and + align settings associated with the stream dataset, to extend the first + and last valid value indefinitely, or to limit the interpolated data + to fall only between the least and greatest valid value of the time array. + valid values: cycle,extend,limit + extend = extrapolate before and after the period by using the first or last value. + cycle = cycle between the range of data + limit = restrict to the period for which the data is valid + + + cycle + + + + + real(30) + streams + shr_strdata_nml + + array (up to 30 elements) of delta time ratio limits placed on the + time interpolation associated with the array of streams. this real + value causes the model to stop if the ratio of the running maximum + delta time divided by the minimum delta time is greater than the + dtlimit for that stream. for instance, with daily data, the delta + time should be exactly one day throughout the dataset and the computed + maximum divided by minimum delta time should always be 1.0. for + monthly data, the delta time should be between 28 and 31 days and the + maximum ratio should be about 1.1. the running value of the delta + time is computed as data is read and any wraparound or cycling is also + included. this input helps trap missing data or errors in cycling. + to turn off trapping, set the value to 1.0e30 or something similar. + + + 1.5e0 + + + + + char + streams + shr_strdata_nml + + list of paired colon delimited field names that should be treated as + vectors when carrying out spatial interpolation. unlike other + character arrays in this namelist, this array is completely decoupled + from the list of streams. this is a list of vector pairs that span + all input streams where different fields of the vector pair could + appear in different streams. + for example, vectors = 'u:v','taux:tauy'. + + + null + + + + + char(30) + streams + shr_strdata_nml + + character array (up to 30 elements) of stream input files. this + string is actually parsed by a stream method and so the format is + specified by the stream module. this string consists of a + "stream_input_filename year_align year_first year_last". the + stream_input_filename is a stream text input file and the format and + options are described elsewhere. year_align, year_first, and + year_last provide information about the time axis of the file and how + to relate the input time axis to the model time axis. + + + + + + + + + + + + char + drof + drof_nml + 1d,root + + DROF Decomposition strategy + 1d = Vector decomposition + root = run only on the master task + + + 1d + + + + + logical + drof + drof_nml + If true, prognostic is forced to true. + + .false. + + + + + char + drof + drof_nml + Master restart file name for drof model + + undefined + + + + + char + drof + drof_nml + Stream restart file name for drof model, needed for branch simulations + + undefined + + + + diff --git a/cime/components/data_comps/drof/drof_comp_mod.F90 b/cime/components/data_comps/drof/drof_comp_mod.F90 index d6cd9b4b60d9..060b5fad678c 100644 --- a/cime/components/data_comps/drof/drof_comp_mod.F90 +++ b/cime/components/data_comps/drof/drof_comp_mod.F90 @@ -131,12 +131,11 @@ subroutine drof_comp_init( EClock, cdata, x2r, r2x, NLFilename ) integer(IN) :: yearLast ! last year to use in data stream integer(IN) :: yearAlign ! data year that aligns with yearFirst - character(CL) :: rof_in ! dshr rof namelist character(CL) :: decomp ! decomp strategy character(CL) :: rest_file ! restart filename character(CL) :: rest_file_strm_r ! restart filename for stream character(CL) :: restfilm ! model restart file namelist - character(CL) :: restfilsr ! stream restart file namelist + character(CL) :: restfils ! stream restart file namelist logical :: force_prognostic_true ! if true set prognostic true logical :: exists ! file existance logical logical :: exists_r ! file existance logical @@ -147,7 +146,7 @@ subroutine drof_comp_init( EClock, cdata, x2r, r2x, NLFilename ) !----- define namelist ----- namelist / drof_nml / & - rof_in, decomp, restfilm, restfilsr, & + decomp, restfilm, restfils, & force_prognostic_true !--- formats --- @@ -211,10 +210,9 @@ subroutine drof_comp_init( EClock, cdata, x2r, r2x, NLFilename ) call t_startf('drof_readnml') filename = "drof_in"//trim(inst_suffix) - rof_in = "unset" decomp = "1d" - restfilm = trim(nullstr) - restfilsr = trim(nullstr) + restfilm = trim(nullstr) + restfils = trim(nullstr) force_prognostic_true = .false. if (my_task == master_task) then nunit = shr_file_getUnit() ! get unused unit number @@ -226,20 +224,18 @@ subroutine drof_comp_init( EClock, cdata, x2r, r2x, NLFilename ) write(logunit,F01) 'ERROR: reading input namelist, '//trim(filename)//' iostat=',ierr call shr_sys_abort(subName//': namelist read error '//trim(filename)) end if - write(logunit,F00)' rof_in = ',trim(rof_in) write(logunit,F00)' decomp = ',trim(decomp) write(logunit,F00)' restfilm = ',trim(restfilm) - write(logunit,F00)' restfilsr = ',trim(restfilsr) + write(logunit,F00)' restfils = ',trim(restfils) write(logunit,F0L)' force_prognostic_true = ',force_prognostic_true endif - call shr_mpi_bcast(rof_in,mpicom,'rof_in') call shr_mpi_bcast(decomp,mpicom,'decomp') call shr_mpi_bcast(restfilm,mpicom,'restfilm') - call shr_mpi_bcast(restfilsr,mpicom,'restfilsr') + call shr_mpi_bcast(restfils,mpicom,'restfils') call shr_mpi_bcast(force_prognostic_true,mpicom,'force_prognostic_true') rest_file = trim(restfilm) - rest_file_strm_r = trim(restfilsr) + rest_file_strm_r = trim(restfils) if (force_prognostic_true) then rof_present = .true. rof_prognostic = .true. @@ -249,7 +245,7 @@ subroutine drof_comp_init( EClock, cdata, x2r, r2x, NLFilename ) ! Read dshr namelist !---------------------------------------------------------------------------- - call shr_strdata_readnml(SDROF,trim(rof_in),mpicom=mpicom) + call shr_strdata_readnml(SDROF,trim(filename),mpicom=mpicom) !---------------------------------------------------------------------------- ! Validate mode diff --git a/cime/components/data_comps/drof/rof_comp_esmf.F90 b/cime/components/data_comps/drof/rof_comp_esmf.F90 deleted file mode 100644 index 7bae23027eff..000000000000 --- a/cime/components/data_comps/drof/rof_comp_esmf.F90 +++ /dev/null @@ -1,251 +0,0 @@ -module rof_comp_esmf - -#ifdef ESMF_INTERFACE - use shr_kind_mod, only: R8=>SHR_KIND_R8, IN=>SHR_KIND_IN, & - CS=>SHR_KIND_CS, CL=>SHR_KIND_CL - use shr_sys_mod ! shared system calls - - use seq_cdata_mod - use seq_infodata_mod - - use esmf - use esmfshr_mod - - use drof_comp_mod - use perf_mod - use mct_mod - - implicit none - - public :: rof_init_esmf - public :: rof_run_esmf - public :: rof_final_esmf - public :: rof_register_esmf - - private ! except - - type(seq_infodata_type) :: infodata - type(seq_cdata) :: cdata - type(mct_gsMap) :: gsmap - type(mct_gGrid) :: ggrid - type(mct_aVect) :: x2d - type(mct_aVect) :: d2x - - !----- formats ----- - character(*),parameter :: subName = "(rof_comp_esmf) " - - save ! save everything - ! - ! Author: Mariana Vertenstein - ! This module is ESMF compliant rof data component - !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -contains - !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - !=============================================================================== - - subroutine rof_register_esmf(comp, rc) - - implicit none - - type(ESMF_GridComp) :: comp - integer, intent(out) :: rc - - rc = ESMF_SUCCESS - - print *, "In rof register routine" - ! Register the callback routines. - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_INITIALIZE, rof_init_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_RUN, rof_run_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_GridCompSetEntryPoint(comp, ESMF_METHOD_FINALIZE, rof_final_esmf, phase=1, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - end subroutine rof_register_esmf - - !=============================================================================== - - subroutine rof_init_esmf(comp, import_state, export_state, EClock, rc) - !---------------------------------------------------------- - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !----- local ----- - integer(IN) :: MYID - character(CL) :: NLFilename - type(ESMF_Array) :: Ex2d, Ed2x, Edom - - character(*),parameter :: subName = "(rof_init_esmf) " - character(ESMF_MAXSTR) :: convCIM, purpComp - !---------------------------------------------------------- - - rc = ESMF_SUCCESS - - NLFilename = 'unused' - - call esmfshr_infodata_state2infodata(export_state,infodata,ID=MYID,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call seq_cdata_init(cdata,MYID,ggrid,gsmap,infodata,'drof') - - call drof_comp_init(EClock, cdata, x2d, d2x, NLFilename) - - call esmfshr_infodata_infodata2state(infodata,export_state,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Edom = mct2esmf_init(ggrid%data,gsmap,name='domain',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(ggrid%data,Edom,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Ed2x = mct2esmf_init(d2x,gsmap,name='d2x',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(d2x,Ed2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - Ex2d = mct2esmf_init(x2d,gsmap,name='x2d',rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(export_state,(/Edom/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(export_state,(/Ed2x/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateAdd(import_state,(/Ex2d/),rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - -#ifdef USE_ESMF_METADATA - convCIM = "CIM" - purpComp = "Model Component Simulation Description" - - call ESMF_AttributeAdd(comp, & - convention=convCIM, purpose=purpComp, rc=rc) - - call ESMF_AttributeSet(comp, "ShortName", "DROF", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "LongName", & - "Climatological River Runoff Data Model", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "Description", & - "The CESM data models perform the basic function of " // & - "reading external data, modifying that data, and then " // & - "sending it to the driver via standard CESM coupling " // & - "interfaces. The driver and other models have no " // & - "fundamental knowledge of whether another component " // & - "is fully active or just a data model. In some cases, " // & - "data models are prognostic and also receive and use " // & - "some data sent by the driver to the data model. But " // & - "in most cases, the data models are not running " // & - "prognostically and have no need to receive any data " // & - "from the driver.", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "ReleaseDate", "2010", & - convention=convCIM, purpose=purpComp, rc=rc) - call ESMF_AttributeSet(comp, "ModelType", "Runoff", & - convention=convCIM, purpose=purpComp, rc=rc) - - ! call ESMF_AttributeSet(comp, "Name", "Sam Levis", & - ! convention=convCIM, purpose=purpComp, rc=rc) - ! call ESMF_AttributeSet(comp, "EmailAddress", & - ! "slevis@ucar.edu", & - ! convention=convCIM, purpose=purpComp, rc=rc) - ! call ESMF_AttributeSet(comp, "ResponsiblePartyRole", "contact", & - ! convention=convCIM, purpose=purpComp, rc=rc) -#endif - - rc = ESMF_SUCCESS - - end subroutine rof_init_esmf - - !=============================================================================== - - subroutine rof_run_esmf(comp, import_state, export_state, EClock, rc) - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !----- local ----- - integer(IN) :: MYID - type(ESMF_Array) :: Ex2d, Ed2x - - character(*),parameter :: subName = "(rof_run_esmf) " - !---------------------------------------------------------- - - rc = ESMF_SUCCESS - - ! Unpack import state - - call esmfshr_infodata_state2infodata(export_state,infodata, ID=MYID, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateGet(import_state, itemName="x2d", array=Ex2d, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call esmf2mct_copy(Ex2d, x2d, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - ! Run model - - call drof_comp_run(EClock, cdata, x2d, d2x) - - ! Pack export state - - call esmfshr_infodata_infodata2state(infodata,export_state,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call ESMF_StateGet(export_state, itemName="d2x", array=Ed2x, rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - call mct2esmf_copy(d2x,Ed2x,rc=rc) - if(rc /= ESMF_SUCCESS) call ESMF_Finalize(rc=rc, endflag=ESMF_END_ABORT) - - rc = ESMF_SUCCESS - - end subroutine rof_run_esmf - - !=============================================================================== - - subroutine rof_final_esmf(comp, import_state, export_state, EClock, rc) - - implicit none - - !----- arguments ----- - type(ESMF_GridComp) :: comp - type(ESMF_State) :: import_state - type(ESMF_State) :: export_state - type(ESMF_Clock) :: EClock - integer, intent(out) :: rc - - !---------------------------------------------------------------------------- - ! Finalize routine - !---------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - call drof_comp_final() - - end subroutine rof_final_esmf - -#endif - -end module rof_comp_esmf diff --git a/cime/components/data_comps/dwav/bld/build-namelist b/cime/components/data_comps/dwav/bld/build-namelist deleted file mode 100755 index 89f88efe088e..000000000000 --- a/cime/components/data_comps/dwav/bld/build-namelist +++ /dev/null @@ -1,799 +0,0 @@ -#!/usr/bin/env perl -#----------------------------------------------------------------------------------------------- -# -# build-namelist -# -# The simplest use of build-namelist is to execute it from the build directory where configure -# was run. -# -# Date Contributor Modification -# ------------------------------------------------------------------------------------------- -# 2012-03-10 Vertenstein Updated for cesm1.1 -#-------------------------------------------------------------------------------------------- - -use strict; -#use warnings; -#use diagnostics; -use Cwd qw(getcwd abs_path); -use English; -use Getopt::Long; -use IO::File; -use File::Basename; -use Data::Dumper; -#----------------------------------------------------------------------------------------------- - -sub usage { - die < 0, - silent => 0, - caseroot => undef, - cimeroot => undef, - inst_string => undef, - user_xml_dir=> undef, - ); - -GetOptions( - "h|help" => \$opts{'help'}, - "infile=s" => \$opts{'infile'}, - "namelist=s" => \$opts{'namelist'}, - "print=i" => \$opts{'print'}, - "caseroot=s" => \$opts{'caseroot'}, - "cimeroot=s" => \$opts{'cimeroot'}, - "inst_string=s" => \$opts{'inst_string'}, - "user_xml_dir=s" => \$opts{'user_xml_dir'}, -) or usage(); - -# Give usage message. -usage() if $opts{'help'}; - -# Check for unparsed arguments -if (@ARGV) { - print "ERROR: unrecognized arguments: @ARGV\n"; - usage(); -} - -# Define print levels: -# 0 - only issue fatal error messages -# 1 - only informs what files are created (default) -# 2 - verbose -my $print = $opts{'print'}; -my $eol = "\n"; - -# user_xml_dir -my $opt = 'user_xml_dir'; -if (defined $opts{$opt}) { - my $dir = $opts{$opt}; - if ( ! -d "$dir" ) { - die << "EOF"; -** $ProgName - $opt: $dir does NOT exist -EOF - } -} - -my $CASEROOT = $opts{'caseroot'}; -my $CIMEROOT = $opts{'cimeroot'}; -my $INST_STRING = $opts{'inst_string'}; - -if ($print>=2) { print "Setting dwav configuration script directory to $cfgdir$eol"; } - -#----------------------------------------------------------------------------------------------- -# build empty config_cache.xml file (needed below) -my $config_cache = "$CASEROOT/Buildconf/dwavconf/config_cache.xml"; -my $fh = new IO::File; -$fh->open(">$config_cache") or die "** can't open file: $config_cache\n"; -print $fh <<"EOF"; - - - -EOF -$fh->close; -if ($print>=1) { print "Wrote file $config_cache $eol"; } -(-f $config_cache) or die <<"EOF"; -** $ProgName - Cannot find configuration cache file: $config_cache\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Make sure we can find required perl modules, definition, and defaults files. -# Look for them under the directory that contains the configure script. - -# The root directory for the input data files must be specified. - -#The root directory to cesm utils Tools -my $cimeroot = abs_path($CIMEROOT); -my $perl5lib = "$cimeroot/utils/perl5lib"; - -# The XML::Lite module is required to parse the XML files. -(-f "$perl5lib/XML/Lite.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"XML/Lite.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Config module provides utilities to access the configuration information -# in the config_cache.xml file -(-f "$perl5lib/Build/Config.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Config.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist definition file contains entries for all namelist variables that -# can be output by build-namelist. The version of the file that is associate with a -# fixed dwav tag is $cfgdir/namelist_files/namelist_definition_dwav.xml. -my $nl_definition_file = "${cfgdir}/namelist_files/namelist_definition_dwav.xml"; - -# If user has user namelist definition files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_definition_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_definition_file = $newfile; - } -} - -(-f "$nl_definition_file") or die <<"EOF"; -** $ProgName - Cannot find namelist definition file \"$nl_definition_file\" ** -EOF -if ($print>=2) { print "Using namelist definition file $nl_definition_file$eol"; } - -# The Build::NamelistDefinition module provides utilities to validate that the output -# namelists are consistent with the namelist definition file -(-f "$perl5lib/Build/NamelistDefinition.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefinition.pm\" in directory - \"$perl5lib\" ** -EOF - -# The namelist defaults file contains default values for most namelist variables -# can be output by build-namelist. The version of the file that is associated with a -# fixed dwav tag is $cfgdir/namelist_files/namelist_defaults_dwav.xml. -my $nl_defaults_file = "$cfgdir/namelist_files/namelist_defaults_dwav.xml"; - -# If user has user namelist defaults files -if (defined $opts{'user_xml_dir'}) { - my $filename = $nl_defaults_file; - $filename =~ s!(.*)/!!; - my $newfile = "$opts{'user_xml_dir'}/$filename"; - if ( -f "$newfile" ) { - $nl_defaults_file = $newfile; - } -} - -(-f "$nl_defaults_file") or die <<"EOF"; -** $ProgName - Cannot find namelist defaults file \"$nl_defaults_file\" ** -EOF -if ($print>=2) { print "Using namelist defaults file $nl_defaults_file$eol"; } - -# The Build::NamelistDefaults module provides a utility to obtain default values of namelist -# variables based on finding a best fit with the attributes specified in the defaults file. -(-f "$perl5lib/Build/NamelistDefaults.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/NamelistDefaults.pm\" in directory - \"$perl5lib\" ** -EOF - -# The Build::Namelist module provides utilities to parse input namelists, to query and modify -# namelists, and to write output namelists. -(-f "$perl5lib/Build/Namelist.pm") or die <<"EOF"; -** $ProgName - Cannot find perl module \"Build/Namelist.pm\" in directory - \"$perl5lib\" ** -EOF - -#----------------------------------------------------------------------------------------------- -# Add $cfgdir/perl5lib to the list of paths that Perl searches for modules -my @dirs = ( "$cfgdir/..", "$perl5lib"); -unshift @INC, @dirs; - -require XML::Lite; -require Build::Config; -require Build::NamelistDefinition; -require Build::NamelistDefaults; -require Build::Namelist; -require Streams::TemplateGeneric; -require Config::SetupTools; - -#----------------------------------------------------------------------------------------------- -# Create a configuration object from the DWAV config_cache.xml file. -my $cfg = Build::Config->new($config_cache); - -# Validate some of the commandline option values. -validate_options("commandline", $cfg, \%opts); - -# Create a namelist definition object. This object provides a method for verifying that the -# output namelist variables are in the definition file, and are output in the correct -# namelist groups. -my $definition = Build::NamelistDefinition->new($nl_definition_file); - -# Create a namelist defaults object. This object provides default values for variables -# contained in the input defaults file. The configuration object provides attribute -# values that are relevent for the DWAV for which the namelist is being produced. -my $defaults = Build::NamelistDefaults->new( $nl_defaults_file, $cfg); - -# Create an empty namelist object. Add values to it in order of precedence. -my $nl = Build::Namelist->new(); - -#----------------------------------------------------------------------------------------------- -# Process the user input in order of precedence. At each point we'll only add new -# values to the namelist and not overwrite previously specified specified values which -# have higher precedence. - -# Process the -namelist arg. -if (defined $opts{'namelist'}) { - # Parse commandline namelist - my $nl_arg = Build::Namelist->new($opts{'namelist'}); - - # Validate input namelist -- trap exceptions - my $nl_arg_valid; - eval { $nl_arg_valid = $definition->validate($nl_arg); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in commandline arg '-namelist'.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_arg_valid); -} - -# Process the -infile arg. -if (defined $opts{'infile'}) { - foreach my $infile ( split( /,/, $opts{'infile'} ) ) { - # Parse namelist input from a file - my $nl_infile = Build::Namelist->new($infile); - - # Validate input namelist -- trap exceptions - my $nl_infile_valid; - eval { $nl_infile_valid = $definition->validate($nl_infile); }; - if ($@) { - die "$ProgName - ERROR: Invalid namelist variable in '-infile' $infile.\n $@"; - } - - # Merge input values into namelist. Previously specified values have higher precedence - # and are not overwritten. - $nl->merge_nl($nl_infile_valid); - } -} - -#----------------------------------------------------------------------------------------------- - -#################################### -# Required xml variables # -#################################### - -my %xmlvars = (); -my @files = <${CASEROOT}/*xml>; -SetupTools::getxmlvars(${CASEROOT},\%xmlvars); -foreach my $attr (keys %xmlvars) { - $xmlvars{$attr} = SetupTools::expand_xml_var($xmlvars{$attr}, \%xmlvars); -} - -my $RUN_TYPE = $xmlvars{'RUN_TYPE'}; -my $DIN_LOC_ROOT = $xmlvars{'DIN_LOC_ROOT'}; -my $WAV_GRID = $xmlvars{'WAV_GRID'}; -my $DWAV_MODE = $xmlvars{'DWAV_MODE'}; - -if ($WAV_GRID eq "null") { - if ($DWAV_MODE ne "NULL") { - die "$ProgName ERROR:: WAV_GRID null DWAV_MODE not NULL.\n"; - } -} - -(-d $DIN_LOC_ROOT) or die <<"EOF"; -** $ProgName - Inputdata root is not a directory: \"$DIN_LOC_ROOT\" ** -EOF -if ($print>=2) { print "Inputdata root directory: $DIN_LOC_ROOT$eol"; } - -#################################### -# Streams file(s) # -#################################### - -# Create input data list (written to later) -my $fh_out = new IO::File; -$fh_out->open(">>$CASEROOT/Buildconf/dwav.input_data_list") or - die "** can't open filepath file: dwav.input_data_list\n"; - -# Create hash needed to parse namelist_defaults_dwav.xml file -my %default_namelist_opts; -$default_namelist_opts{'dwav_mode'} = $DWAV_MODE; -$default_namelist_opts{'wav_grid'} = $WAV_GRID; - -# Create streams template file(s) - loop over streams -my $streams = $defaults->get_value( "streamslist", \%default_namelist_opts ); -my @streams = split ",", $streams, -1; - -my $ostreams = undef; -my $omapalgo = undef; -my $omapmask = undef; -my $otintalgo = undef; -my $otaxmode = undef; -my $ofillalgo = undef; -my $ofillmask = undef; -my $odtlimit = undef; -foreach my $stream ( @streams ) { - - # Set stream specific part of default_namelist_opts hash - $default_namelist_opts{'stream'} = $stream; - - my $outstream = "dwav.streams.txt" . ".$stream" . "$INST_STRING"; - if ($print>=1) { print " dwav stream is $stream$INST_STRING \n";} - - if ($stream eq "NULL") { - - # do nothing - - } elsif (-e "$CASEROOT/user_$outstream") { - - my $command = "cp -p $CASEROOT/user_$outstream $CASEROOT/Buildconf/dwavconf/$outstream"; - system($command) == 0 or die "system $command failed: $? \n"; - - } else { - - # Create hash to initialze streams object - my %stream_template_opts; - if ( $print == 0 ) { - $stream_template_opts{'printing'} = 0; - } else { - $stream_template_opts{'printing'} = 1; - } - $stream_template_opts{'test'} = $opts{'test'}; - $stream_template_opts{'ProgName'} = $ProgName; - $stream_template_opts{'ProgDir'} = "$cfgdir"; - $stream_template_opts{'cmdline'} = $cmdline; - - $stream_template_opts{'offset'} = 0; - $stream_template_opts{'filepath'} = $defaults->get_value( "strm_datdir" , \%default_namelist_opts ); - $stream_template_opts{'filenames'} = $defaults->get_value( "strm_datfil" , \%default_namelist_opts ); - $stream_template_opts{'domainpath'} = $defaults->get_value( "strm_domdir" , \%default_namelist_opts ); - $stream_template_opts{'domain'} = $defaults->get_value( "strm_domfil" , \%default_namelist_opts ); - $stream_template_opts{'datvarnames'}= $defaults->get_value( "strm_datvar" , \%default_namelist_opts ); - $stream_template_opts{'domvarnames'}= $defaults->get_value( "strm_domvar" , \%default_namelist_opts ); - $stream_template_opts{'yearfirst'} = $defaults->get_value( "strm_year_start", \%default_namelist_opts ); - $stream_template_opts{'yearlast'} = $defaults->get_value( "strm_year_end" , \%default_namelist_opts ); - - $stream_template_opts{'filepath'} = SetupTools::expand_xml_var($stream_template_opts{'filepath'} , \%xmlvars); - $stream_template_opts{'filenames'} = SetupTools::expand_xml_var($stream_template_opts{'filenames'} , \%xmlvars); - $stream_template_opts{'domainpath'} = SetupTools::expand_xml_var($stream_template_opts{'domainpath'}, \%xmlvars); - $stream_template_opts{'domain'} = SetupTools::expand_xml_var($stream_template_opts{'domain'} , \%xmlvars); - $stream_template_opts{'yearfirst'} = SetupTools::expand_xml_var($stream_template_opts{'yearfirst'} , \%xmlvars); - $stream_template_opts{'yearlast'} = SetupTools::expand_xml_var($stream_template_opts{'yearlast'} , \%xmlvars); - - # Create the streams txt file for this stream (from a generic template) - my $stream_template = Streams::TemplateGeneric->new( \%stream_template_opts ); - $stream_template->Read( "${CASEROOT}/Buildconf/dwav.template.streams.xml" ); - $stream_template->Write( $outstream ); - - # Append to dwav.input_data_list - my @filenames = $stream_template->GetDataFilenames( 'domain'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "domain${i} = $file\n"; - } - - my @filenames = $stream_template->GetDataFilenames( 'data'); - my $i = 0; - foreach my $file ( @filenames ) { - $i++; - print $fh_out "file${i} = $file\n"; - } - } - - # Stream specific namelist variables used below for $nl - my $tintalgo = $defaults->get_value( "strm_tintalgo" , \%default_namelist_opts); - my $mapalgo = $defaults->get_value( 'strm_mapalgo' , \%default_namelist_opts); - my $mapmask = $defaults->get_value( 'strm_mapmask' , \%default_namelist_opts); - my $taxmode = $defaults->get_value( "strm_taxmode" , \%default_namelist_opts); - my $fillalgo = $defaults->get_value( 'strm_fillalgo' , \%default_namelist_opts); - my $fillmask = $defaults->get_value( 'strm_fillmask' , \%default_namelist_opts); - my $dtlimit = $defaults->get_value( 'strm_dtlimit' , \%default_namelist_opts); - my $beg_year = $defaults->get_value( 'strm_year_start', \%default_namelist_opts); - my $end_year = $defaults->get_value( 'strm_year_end' , \%default_namelist_opts); - my $align_year = $defaults->get_value( 'strm_year_align', \%default_namelist_opts); - $beg_year = SetupTools::expand_xml_var($beg_year , \%xmlvars); - $end_year = SetupTools::expand_xml_var($end_year , \%xmlvars); - $align_year = SetupTools::expand_xml_var($align_year, \%xmlvars); - - if ( $beg_year > $end_year ) { - print "\n\nbeg_year=$beg_year end_year=$end_year\n"; - die "$ProgName ERROR:: beg_year greater than end_year\n"; - } - - if ( ! defined($ostreams) ) { - $ostreams = "\"$outstream $align_year $beg_year $end_year\""; - $omapalgo = "\'$mapalgo\'"; - $omapmask = "\'$mapmask\'"; - $otintalgo = "\'$tintalgo\'"; - $otaxmode = "\'$taxmode\'"; - $ofillalgo = "\'$fillalgo\'"; - $ofillmask = "\'$fillmask\'"; - $odtlimit = "$dtlimit"; - } else { - $ostreams = "$ostreams,\"$outstream $align_year $beg_year $end_year\""; - $omapalgo .= ",\'$mapalgo\'"; - $omapmask .= ",\'$mapmask\'"; - $otintalgo .= ",\'$tintalgo\'"; - $otaxmode .= ",\'$taxmode\'"; - $ofillalgo .= ",\'$fillalgo\'"; - $ofillmask .= ",\'$fillmask\'"; - $odtlimit .= ",$dtlimit"; - } -} - -$fh_out->close; - -#################################### -# namelist group: shr_strdata_nml # -#################################### - -my $datamode = $defaults->get_value( "datamode", \%default_namelist_opts ); -add_default($nl, 'datamode', 'val' => "$datamode"); -if ($datamode ne 'null') { - add_default($nl, 'streams', 'val' => "$ostreams" ); - add_default($nl, 'mapalgo', 'val' => "$omapalgo" ); - add_default($nl, 'mapmask', 'val' => "$omapmask" ); - add_default($nl, 'tintalgo', 'val' => "$otintalgo" ); - add_default($nl, 'taxmode', 'val' => "$otaxmode" ); - add_default($nl, 'fillalgo', 'val' => "$ofillalgo" ); - add_default($nl, 'fillmask', 'val' => "$ofillmask" ); - add_default($nl, 'dtlimit', 'val' => "$odtlimit" ); -} - -############################# -# namelist group: dwav_nml # -############################# - -add_default($nl, 'wav_in', 'val'=>"dwav_wav_in${INST_STRING}"); -add_default($nl, 'decomp'); -add_default($nl, 'force_prognostic_true', 'val'=>'.false.'); - -if ( $RUN_TYPE =~ /branch/ ) { - # The dwav master restart file is currently unused - #if (not defined $nl->get_value('restfilm')) { - # die "$ProgName ERROR:: restfilm is required for a branch type.\n"; - #} -} - -#----------------------------------------------------------------------------------------------- -# Validate that the entire resultant namelist is valid -# -$definition->validate($nl); - -#----------------------------------------------------------------------------------------------- -# Write output files -# -my $note = ""; - -# dwav_wav_in -my @groups = qw(shr_strdata_nml); -my $outfile; -$outfile = "./dwav_wav_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing dwav_dshr namelist to $outfile $eol"; } - -# dwav_in -@groups = qw(dwav_nml); -$outfile = "./dwav_in"; -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing dwav_in namelist to $outfile $eol"; } - -# wav_modelio -@groups = qw(modelio); -$outfile = "./wav_modelio.nml"; -$nl->set_variable_value( "modelio", "logfile", "'wav.log'" ); -$nl->write($outfile, 'groups'=>\@groups, 'note'=>"$note" ); -if ($print>=2) { print "Writing wav_modelio.nml namelist to $outfile $eol"; } - -# Create file of required local input datasets -check_input_files($nl, $DIN_LOC_ROOT, "$CASEROOT/Buildconf/dwav.input_data_list"); - - -#=============================================================================================== -#=============================================================================================== -# END OF MAIN SCRIPT -#=============================================================================================== -#=============================================================================================== - -sub add_default { - -# Add a value for the specified variable to the specified namelist object. The variables -# already in the object have the higher precedence, so if the specified variable is already -# defined in the object then don't overwrite it, just return. -# -# This method checks the definition file and adds the variable to the correct -# namelist group. -# -# The value can be provided by using the optional argument key 'val' in the -# calling list. Otherwise a default value is obtained from the namelist -# defaults object. If no default value is found this method throws an exception -# unless the 'nofail' option is set true. -# -# Example 1: Specify the default value $val for the namelist variable $var in namelist -# object $nl: -# -# add_default($nl, $var, 'val'=>$val) -# -# Example 2: Add a default for variable $var if an appropriate value is found. Otherwise -# don't add the variable -# -# add_default($nl, $var, 'nofail'=>1) -# -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object -# $defaults -- the namelist defaults object -# $DIN_LOC_ROOT -- CESM inputdata root directory - - my $nl = shift; # namelist object - my $var = shift; # name of namelist variable - my %opts = @_; # options - - # If variable has quotes around it - if ( $var =~ /'(.+)'/ ) { - $var = $1; - } - # Query the definition to find which group the variable belongs to. Exit if not found. - my $group = $definition->get_group_name($var); - unless ($group) { - my $fname = $definition->get_file_name(); - die "$ProgName - ERROR: variable \"$var\" not found in namelist definition file $fname.\n"; - } - - # check whether the variable has a value in the namelist object -- if so then skip to end - my $val = $nl->get_variable_value($group, $var); - if (! defined $val) { - - # Look for a specified value in the options hash - - if (defined $opts{'val'}) { - $val = $opts{'val'}; - } - # or else get a value from namelist defaults object. - # Note that if the 'val' key isn't in the hash, then just pass anything else - # in %opts to the get_value method to be used as attributes that are matched - # when looking for default values. - else { - $val = $defaults->get_value($var, \%opts); - - # Truncate model_version appropriately - - if ( $var eq "model_version" ) { - $val =~ /(URL: https:\/\/[a-zA-Z0-9._-]+\/)([a-zA-Z0-9\/._-]+)(\/bld\/.+)/; - $val = $2; - } - } - - unless ( defined($val) ) { - unless ($opts{'nofail'}) { - die "$ProgName - No default value found for $var.\n" . - " Are defaults provided? \n"; - } - else { - return; - } - } - - - # query the definition to find out if the variable is an input pathname - my $is_input_pathname = $definition->is_input_pathname($var); - - # The default values for input pathnames are relative. If the namelist - # variable is defined to be an absolute pathname, then prepend - # the CESM inputdata root directory. - if (not defined $opts{'no_abspath'}) { - if (defined $opts{'set_abspath'}) { - $val = set_abs_filepath($val, $opts{'set_abspath'}); - } else { - if ($is_input_pathname eq 'abs') { - $val = set_abs_filepath($val, $DIN_LOC_ROOT); - } - } - } - - # query the definition to find out if the variable takes a string value. - # The returned string length will be >0 if $var is a string, and 0 if not. - my $str_len = $definition->get_str_len($var); - - # If the variable is a string, then add quotes if they're missing - if ($str_len > 0) { - $val = quote_string($val); - } - - # set the value in the namelist - $nl->set_variable_value($group, $var, $val); - } - -} - -#----------------------------------------------------------------------------------------------- - -sub check_input_files { - -# For each variable in the namelist which is an input dataset, check to see if it -# exists locally. -# -# ***** N.B. ***** This routine assumes the following variables are in package main:: -# $definition -- the namelist definition object - - my $nl = shift; # namelist object - my $inputdata_rootdir = shift; # if false prints test, else creates inputdata file - my $outfile = shift; - open(OUTFILE, ">>$outfile") if defined $inputdata_rootdir; - - # Look through all namelist groups - my @groups = $nl->get_group_names(); - foreach my $group (@groups) { - - # Look through all variables in each group - my @vars = $nl->get_variable_names($group); - foreach my $var (@vars) { - - # Is the variable an input dataset? - my $input_pathname_type = $definition->is_input_pathname($var); - - # If it is, check whether it exists locally and print status - if ($input_pathname_type) { - - # Get pathname of input dataset - my $pathname = $nl->get_variable_value($group, $var); - # Need to strip the quotes - $pathname =~ s/[\'\"]//g; - - if ($input_pathname_type eq 'abs') { - if ($inputdata_rootdir) { - print OUTFILE "$var = $pathname\n"; - } - else { - if (-e $pathname) { # use -e rather than -f since the absolute pathname - # might be a directory - print "OK -- found $var = $pathname\n"; - } - else { - print "NOT FOUND: $var = $pathname\n"; - } - } - } - elsif ($input_pathname_type =~ m/rel:(.+)/o) { - # The match provides the namelist variable that contains the - # root directory for a relative filename - my $rootdir_var = $1; - my $rootdir = $nl->get_variable_value($group, $rootdir_var); - $rootdir =~ s/[\'\"]//g; - if ($inputdata_rootdir) { - $pathname = "$rootdir/$pathname"; - print OUTFILE "$var = $pathname\n"; - } - else { - if (-f "$rootdir/$pathname") { - print "OK -- found $var = $rootdir/$pathname\n"; - } - else { - print "NOT FOUND: $var = $rootdir/$pathname\n"; - } - } - } - } - } - } - close OUTFILE if defined $inputdata_rootdir; - return 0 if defined $inputdata_rootdir; -} - -#----------------------------------------------------------------------------------------------- - -sub set_abs_filepath { - -# check whether the input filepath is an absolute path, and if it isn't then -# prepend a root directory - - my ($filepath, $rootdir) = @_; - - # strip any leading/trailing whitespace - $filepath =~ s/^\s+//; - $filepath =~ s/\s+$//; - $rootdir =~ s/^\s+//; - $rootdir =~ s/\s+$//; - - # strip any leading/trailing quotes - $filepath =~ s/^['"]+//; - $filepath =~ s/["']+$//; - $rootdir =~ s/^['"]+//; - $rootdir =~ s/["']+$//; - - my $out = $filepath; - unless ( $filepath =~ /^\// ) { # unless $filepath starts with a / - $out = "$rootdir/$filepath"; # prepend the root directory - } - return $out; -} - -#----------------------------------------------------------------------------------------------- - -sub valid_option { - - my ($val, @expect) = @_; - my ($expect); - - $val =~ s/^\s+//; - $val =~ s/\s+$//; - foreach $expect (@expect) { - if ($val =~ /^$expect$/i) { return $expect; } - } - return undef; -} - -#----------------------------------------------------------------------------------------------- - -sub validate_options { - - my $source = shift; # text string declaring the source of the options being validated - my $cfg = shift; # configure object - my $opts = shift; # reference to hash that contains the options - - my ($opt, $old, @expect); -} - -#----------------------------------------------------------------------------------------------- - -sub quote_string { - my $str = shift; - $str =~ s/^\s+//; - $str =~ s/\s+$//; - unless ($str =~ /^['"]/) { #"' - $str = "\'$str\'"; - } - return $str; -} - - diff --git a/cime/components/data_comps/dwav/bld/namelist_files/namelist_defaults_dwav.xml b/cime/components/data_comps/dwav/bld/namelist_files/namelist_defaults_dwav.xml deleted file mode 100644 index f28ddea4b508..000000000000 --- a/cime/components/data_comps/dwav/bld/namelist_files/namelist_defaults_dwav.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - -null -copyall - - - - - -NULL -wav.copyall - - - - - - -1 -1 -1 -0 -$DIN_LOC_ROOT/wav/dwav -waveclim.mon.ww3a.150612.nc -$DIN_LOC_ROOT/wav/dwav -waveclim.mon.ww3a.150612.nc - - time time - xc lon - yc lat - area area - mask mask - - - lamult lamult - ustokes ustokes - vstokes vstokes - - - - - - -1d - -1.5e0 - -nn - -nomask - -bilinear - -dstmask - -linear - -cycle - - diff --git a/cime/components/data_comps/dwav/bld/namelist_files/namelist_definition_dwav.xml b/cime/components/data_comps/dwav/bld/namelist_files/namelist_definition_dwav.xml deleted file mode 100644 index 6842bff96315..000000000000 --- a/cime/components/data_comps/dwav/bld/namelist_files/namelist_definition_dwav.xml +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - - - - - - - - -valid values: null,copyall -The wave data is associated with the wave model -and is normally on a different grid than the ocean data. - -datamode = "null" - null is always a valid option and means no data will be generated. - Turns off the data model as a provider of data to the coupler. -datamode = "copyall" - Copies all fields directly from the input data streams Any required - fields not found on an input stream will be set to zero. - -Set by the following xml variables in env_run.xml -DWAV_MODE - specifies values for wav mode: copyall,null - default value: copyall - - - -spatial gridfile associated with the strdata. grid information will -be read from this file and that grid will serve as the target grid -for all input data for this strdata input. - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are just copy (ie. no fill), special value, -nearest neighbor, nearest neighbor in "i" direction, or nearest -neighbor in "j" direction. -valid values: 'copy','spval','nn','nnoni','nnonj' -default: "nn". - - - -plays no role is fill algorithm at the present time. -valid values: "nomask,srcmask,dstmask,bothmask" -default: "nomask" - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read in instead of computing the -weights on the fly for the fill operation. if this is set, fillalgo -and fillmask are ignored. -default: unset - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the fill operation. this allows a user to -save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of masking algorithms for mapping input data -associated with the array of streams. valid options are map only from -valid src points, map only to valid destination points, ignore all -masks, map only from valid src points to valid destination points. -valid values: srcmask, dstmask, nomask,bothmask -default: dstmask - - - -array (up to 30 elements) of fill algorithms associated with the array -of streams. valid options are copy by index, set to special value, -nearest neighbor, nearest neighbor in "i" direction, nearest neighbor -in "j" direction, or bilinear. -valid values: copy,spval,nn,nnoni,nnonj,bilinear -default: bilinear - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to read instead of computing -weights on the fly for the mapping (interpolation) operation. if this -is set, mapalgo and mapmask are ignored. default="unset". - - - -array (up to 30 elements) of filenames associated with the array of -streams. specifies the weights file to generate after weights are -computed on the fly for the mapping (interpolation) operation. this -allows a user to save and reuse a set of weights later. -default="unset". - - - -array (up to 30 elements) of time interpolation options associated with the array of -streams. -valid values: lower,upper,nearest,linear,coszen - lower = Use lower time-value - upper = Use upper time-value - nearest = Use the nearest time-value - linear = Linearly interpolate between the two time-values - coszen = Scale according to the cosine of the solar zenith angle (for solar) -default="linear". - - - -array of time axis modes associated with the array of streams for -handling data outside the specified stream time axis. -valid options are to cycle the data based on the first, last, and -align settings associated with the stream dataset, to extend the first -and last valid value indefinitely, or to limit the interpolated data -to fall only between the least and greatest valid value of the time array. -valid values: cycle,extend,limit - extend = extrapolate before and after the period by using the first or last value. - cycle = cycle between the range of data - limit = restrict to the period for which the data is valid -default="cycle". - - - -array (up to 30 elements) of delta time ratio limits placed on the -time interpolation associated with the array of streams. this real -value causes the model to stop if the ratio of the running maximum -delta time divided by the minimum delta time is greater than the -dtlimit for that stream. for instance, with daily data, the delta -time should be exactly one day throughout the dataset and the computed -maximum divided by minimum delta time should always be 1.0. for -monthly data, the delta time should be between 28 and 31 days and the -maximum ratio should be about 1.1. the running value of the delta -time is computed as data is read and any wraparound or cycling is also -included. this input helps trap missing data or errors in cycling. -to turn off trapping, set the value to 1.0e30 or something similar. -default=1.5. - - - -character array (up to 30 elements) of stream input files. this -string is actually parsed by a stream method and so the format is -specified by the stream module. this string consists of a -"stream_input_filename year_align year_first year_last". the -stream_input_filename is a stream text input file and the format and -options are described elsewhere. year_align, year_first, and -year_last provide information about the time axis of the file and how -to relate the input time axis to the model time axis. -default="null". - - - - - - - -Namelist filename for data model wav share stream data namelist - - - -DWAV Decomposition strategy - 1d = Vector decomposition - root = run only on the master task - - - -Master restart file name for dwav model - - - -Stream restart file name for dwav model, needed for branch simulations - - - -If TRUE, prognostic is forced to true. -default=false - - diff --git a/cime/components/data_comps/dwav/cime_config/buildlib b/cime/components/data_comps/dwav/cime_config/buildlib index 81c87c3a2b34..1c9cb28ac5fb 100755 --- a/cime/components/data_comps/dwav/cime_config/buildlib +++ b/cime/components/data_comps/dwav/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_data_lib diff --git a/cime/components/data_comps/dwav/cime_config/buildnml b/cime/components/data_comps/dwav/cime_config/buildnml index 8bc4debaa96a..3a412278f2d5 100755 --- a/cime/components/data_comps/dwav/cime_config/buildnml +++ b/cime/components/data_comps/dwav/cime_config/buildnml @@ -1,17 +1,222 @@ #!/usr/bin/env python +"""Namelist creator for CIME's data ocn model. +`build_namelist` function. """ -build data model library -""" +# Typically ignore this. +# pylint: disable=invalid-name + +# Disable these because this is our standard setup +# pylint: disable=wildcard-import,unused-wildcard-import,wrong-import-position -import sys, os +import os +import shutil +import sys +import glob -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_data_nml +from CIME.case import Case +from CIME.XML.files import Files +from CIME.nmlgen import NamelistGenerator +from CIME.utils import expect +from CIME.buildnml import create_namelist_infile, parse_input + +logger = logging.getLogger(__name__) + +# pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements +#################################################################################### +def _create_namelists(case, confdir, inst_string, infile, nmlgen): +#################################################################################### + """Write out the namelist for this component. + + Most arguments are the same as those for `NamelistGenerator`. The + `inst_string` argument is used as a suffix to distinguish files for + different instances. The `confdir` argument is used to specify the directory + in which output files will be placed. + """ + + #---------------------------------------------------- + # Get a bunch of information from the case. + #---------------------------------------------------- + wav_domain_file = case.get_value("WAV_DOMAIN_FILE") + wav_domain_path = case.get_value("WAV_DOMAIN_PATH") + dwav_mode = case.get_value("DWAV_MODE") + wav_grid = case.get_value("WAV_GRID") + + #---------------------------------------------------- + # Check for incompatible options. + #---------------------------------------------------- + expect(wav_grid != "null", + "WAV_GRID cannot be null") + expect(dwav_mode != "NULL", + "DWAV_MODE cannot be NULL") + + #---------------------------------------------------- + # Log some settings. + #---------------------------------------------------- + logger.debug("DWAV mode is %s", dwav_mode) + logger.debug("DWAV grid is %s", wav_grid) + + #---------------------------------------------------- + # Clear out old data. + #---------------------------------------------------- + data_list_path = os.path.join(case.get_case_root(), "Buildconf", + "dwav.input_data_list") + if os.path.exists(data_list_path): + os.remove(data_list_path) + + #---------------------------------------------------- + # Create configuration information. + #---------------------------------------------------- + config = {} + config['wav_grid'] = wav_grid + config['dwav_mode'] = dwav_mode + + #---------------------------------------------------- + # Initialize namelist defaults + #---------------------------------------------------- + nmlgen.init_defaults(infile, config) + + #---------------------------------------------------- + # Construct the list of streams. + #---------------------------------------------------- + streams = nmlgen.get_streams() + + #---------------------------------------------------- + # For each stream, create stream text file and update + # shr_strdata_nml group and input data list. + #---------------------------------------------------- + for stream in streams: + + # Ignore null values. + if stream is None or stream in ("NULL", ""): + continue + + inst_stream = stream + inst_string + logger.debug("DWAV stream is %s", inst_stream) + stream_path = os.path.join(confdir, + "dwav.streams.txt." + inst_stream) + user_stream_path = os.path.join(case.get_case_root(), + "user_dwav.streams.txt." + inst_stream) + + # Use the user's stream file, or create one if necessary. + if os.path.exists(user_stream_path): + shutil.copyfile(user_stream_path, stream_path) + config['stream'] = stream + nmlgen.update_shr_strdata_nml(config, stream, stream_path) + else: + nmlgen.create_stream_file_and_update_shr_strdata_nml(config, stream, stream_path, data_list_path) + + #---------------------------------------------------- + # Create dwav_nml namelists group + #---------------------------------------------------- + nmlgen.create_shr_strdata_nml() + nmlgen.add_default("decomp", "1d") + nmlgen.add_default("force_prognostic_true", value=".false.") + nmlgen.add_default("restfilm", value="undefined") + nmlgen.add_default("restfils", value="undefined") + if wav_domain_file != "UNSET": + full_domain_path = os.path.join(wav_domain_path, wav_domain_file) + nmlgen.add_default("domainfile", value=full_domain_path) + + #---------------------------------------------------- + # Finally, write out all the namelists. + #---------------------------------------------------- + namelist_file = os.path.join(confdir, "dwav_in") + nmlgen.write_output_file(namelist_file, data_list_path) + +############################################################################### +def buildnml(case, caseroot, compname): +############################################################################### + + # Build the component namelist and required stream txt files + + if compname != "dwav": + raise AttributeError + + rundir = case.get_value("RUNDIR") + ninst = case.get_value("NINST_WAV") + + # Determine configuration directory + confdir = os.path.join(caseroot,"Buildconf",compname + "conf") + if not os.path.isdir(confdir): + os.makedirs(confdir) + + #---------------------------------------------------- + # Construct the namelist generator + #---------------------------------------------------- + # determine directory for user modified namelist_definitions.xml + user_xml_dir = os.path.join(caseroot, "SourceMods", "src." + compname) + expect (os.path.isdir(user_xml_dir), + "user_xml_dir %s does not exist " %user_xml_dir) + + # NOTE: User definition *replaces* existing definition. + files = Files() + definition_file = [files.get_value("NAMELIST_DEFINITION_FILE", {"component":"dwav"})] + + user_definition = os.path.join(user_xml_dir, "namelist_definition_dwav.xml") + if os.path.isfile(user_definition): + definition_file = [user_definition] + for file_ in definition_file: + expect(os.path.isfile(file_), "Namelist XML file %s not found!" % file_) + + # Create the namelist generator object - independent of instance + nmlgen = NamelistGenerator(case, definition_file) + + #---------------------------------------------------- + # Loop over instances + #---------------------------------------------------- + for inst_counter in range(1, ninst+1): + + # determine instance string + inst_string = "" + if ninst > 1: + inst_string = '_' + '%04d' % inst_counter + + # If multi-instance case does not have restart file, use + # single-case restart for each instance + rpointer = "rpointer." + compname + 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), + os.path.join(rundir, rpointer + inst_string)) + + inst_string_label = inst_string + if not inst_string_label: + inst_string_label = "\"\"" + + # create namelist output infile using user_nl_file as input + user_nl_file = os.path.join(caseroot, "user_nl_" + compname + inst_string) + expect(os.path.isfile(user_nl_file), + "Missing required user_nl_file %s " %(user_nl_file)) + infile = os.path.join(confdir, "namelist_infile") + create_namelist_infile(case, user_nl_file, infile) + namelist_infile = [infile] + + # create namelist and stream file(s) data component + _create_namelists(case, confdir, inst_string, namelist_infile, nmlgen) + + # copy namelist files and stream text files, to rundir + if os.path.isdir(rundir): + filename = compname + "_in" + file_src = os.path.join(confdir, filename) + file_dest = os.path.join(rundir, filename) + if inst_string: + file_dest += inst_string + shutil.copy(file_src,file_dest) + + for txtfile in glob.glob(os.path.join(confdir, "*txt*")): + shutil.copy(txtfile, rundir) + +############################################################################### +def _main_func(): + # Build the component namelist and required stream txt files + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "dwav") -build_data_nml(sys.argv, 'wav') +if __name__ == "__main__": + _main_func() diff --git a/cime/components/data_comps/dwav/cime_config/config_archive.xml b/cime/components/data_comps/dwav/cime_config/config_archive.xml new file mode 100644 index 000000000000..1c0dfdbe84ba --- /dev/null +++ b/cime/components/data_comps/dwav/cime_config/config_archive.xml @@ -0,0 +1,10 @@ + + + \.r.* + unset + + rpointer$NINST_STRING.wav + $CASE.dwav$NINST_STRING.r.$DATENAME.nc,$CASE.dwav$NINST_STRING.rs1.$DATENAME.bin + + + diff --git a/cime/components/data_comps/dwav/cime_config/config_component.xml b/cime/components/data_comps/dwav/cime_config/config_component.xml index 4068df99b1fa..a7fb6c1c0558 100644 --- a/cime/components/data_comps/dwav/cime_config/config_component.xml +++ b/cime/components/data_comps/dwav/cime_config/config_component.xml @@ -1,6 +1,6 @@ - + char @@ -37,4 +37,4 @@ ========================================= - + diff --git a/cime/components/data_comps/dwav/cime_config/namelist_definition_dwav.xml b/cime/components/data_comps/dwav/cime_config/namelist_definition_dwav.xml new file mode 100644 index 000000000000..c2f12ca9b4e6 --- /dev/null +++ b/cime/components/data_comps/dwav/cime_config/namelist_definition_dwav.xml @@ -0,0 +1,494 @@ + + + + + + + + + + + + + + char(100) + streams + streams_file + List of streams used for the given datm_mode. + + NULL + wav.copyall + + + + + char + streams + streams_file + Stream domain file directory. + + $DIN_LOC_ROOT/wav/dwav + + + + + char + streams + streams_file + Stream domain file path(s). + + waveclim.mon.ww3a.150612.nc + + + + + char + streams + streams_file + Stream domain variable name(s). + + + time time + xc lon + yc lat + area area + mask mask + + + + + + char + streams + streams_file + Stream data file directory. + + $DIN_LOC_ROOT/wav/dwav + + + + + char + streams + streams_file + Stream data file path(s). + + waveclim.mon.ww3a.150612.nc + + + + + char + streams + streams_file + Stream data variable name(s). + + + lamult lamult + ustokes ustokes + vstokes vstokes + + + + + + integer + streams + streams_file + Stream offset. + + 0 + + + + + integer + streams + streams_file + Simulation year to align stream to. + + 1 + + + + + integer + streams + streams_file + First year of stream. + + 1 + + + + + integer + streams + streams_file + Last year of stream. + + 1 + + + + + + + + + + + + + char + streams + shr_strdata_nml + null,copyall + + The wave data is associated with the wave model + and is normally on a different grid than the ocean data. + datamode = "null" + null is always a valid option and means no data will be generated. + Turns off the data model as a provider of data to the coupler. + datamode = "copyall" + Copies all fields directly from the input data streams Any required + fields not found on an input stream will be set to zero. + Set by the following xml variables in env_run.xml DWAV_MODE + specifies values for wav mode: copyall,null + default value: copyall + + + null + copyall + + + + + char + streams + abs + shr_strdata_nml + + spatial gridfile associated with the strdata. grid information will + be read from this file and that grid will serve as the target grid + for all input data for this strdata input. + + + + + + + + char(30) + streams + shr_strdata_nml + copy,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are just copy (ie. no fill), special value, + nearest neighbor, nearest neighbor in "i" direction, or nearest + neighbor in "j" direction. + valid values: 'copy','spval','nn','nnoni','nnonj' + + + nn + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + plays no role is fill algorithm at the present time. + valid values: "nomask,srcmask,dstmask,bothmask" + + + nomask + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read in instead of computing the + weights on the fly for the fill operation. if this is set, fillalgo + and fillmask are ignored. + + + + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the fill operation. this allows a user to + save and reuse a set of weights later. + + + + + + + + char(30) + streams + shr_strdata_nml + nomask,srcmask,dstmask,bothmask + + array (up to 30 elements) of masking algorithms for mapping input data + associated with the array of streams. valid options are map only from + valid src points, map only to valid destination points, ignore all + masks, map only from valid src points to valid destination points. + valid values: srcmask, dstmask, nomask,bothmask + + + dstmask + + + + + char(30) + streams + shr_strdata_nml + copy,bilinear,nn,nnoni,nnonj,spval + + array (up to 30 elements) of fill algorithms associated with the array + of streams. valid options are copy by index, set to special value, + nearest neighbor, nearest neighbor in "i" direction, nearest neighbor + in "j" direction, or bilinear. + valid values: copy,spval,nn,nnoni,nnonj,bilinear + + + bilinear + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to read instead of computing + weights on the fly for the mapping (interpolation) operation. if this + is set, mapalgo and mapmask are ignored. + + + + + + + + char(30) + streams + shr_strdata_nml + + array (up to 30 elements) of filenames associated with the array of + streams. specifies the weights file to generate after weights are + computed on the fly for the mapping (interpolation) operation. this + allows a user to save and reuse a set of weights later. + + + + + + + + char(30) + streams + shr_strdata_nml + coszen,nearest,linear,lower,upper + + array (up to 30 elements) of time interpolation options associated with the array of + streams. + valid values: lower,upper,nearest,linear,coszen + lower = Use lower time-value + upper = Use upper time-value + nearest = Use the nearest time-value + linear = Linearly interpolate between the two time-values + coszen = Scale according to the cosine of the solar zenith angle (for solar) + + + linear + + + + + char(30) + streams + shr_strdata_nml + extend,cycle,limit + + array of time axis modes associated with the array of streams for + handling data outside the specified stream time axis. + valid options are to cycle the data based on the first, last, and + align settings associated with the stream dataset, to extend the first + and last valid value indefinitely, or to limit the interpolated data + to fall only between the least and greatest valid value of the time array. + valid values: cycle,extend,limit + extend = extrapolate before and after the period by using the first or last value. + cycle = cycle between the range of data + limit = restrict to the period for which the data is valid + + + cycle + + + + + real(30) + streams + shr_strdata_nml + + array (up to 30 elements) of delta time ratio limits placed on the + time interpolation associated with the array of streams. this real + value causes the model to stop if the ratio of the running maximum + delta time divided by the minimum delta time is greater than the + dtlimit for that stream. for instance, with daily data, the delta + time should be exactly one day throughout the dataset and the computed + maximum divided by minimum delta time should always be 1.0. for + monthly data, the delta time should be between 28 and 31 days and the + maximum ratio should be about 1.1. the running value of the delta + time is computed as data is read and any wraparound or cycling is also + included. this input helps trap missing data or errors in cycling. + to turn off trapping, set the value to 1.0e30 or something similar. + + + 1.5e0 + + + + + char + streams + shr_strdata_nml + + list of paired colon delimited field names that should be treated as + vectors when carrying out spatial interpolation. unlike other + character arrays in this namelist, this array is completely decoupled + from the list of streams. this is a list of vector pairs that span + all input streams where different fields of the vector pair could + appear in different streams. + for example, vectors = 'u:v','taux:tauy'. + + + null + + + + + char(30) + streams + shr_strdata_nml + + character array (up to 30 elements) of stream input files. this + string is actually parsed by a stream method and so the format is + specified by the stream module. this string consists of a + "stream_input_filename year_align year_first year_last". the + stream_input_filename is a stream text input file and the format and + options are described elsewhere. year_align, year_first, and + year_last provide information about the time axis of the file and how + to relate the input time axis to the model time axis. + + + + + + + + + + + + char + dwav + dwav_nml + 1d,root + + DWAV Decomposition strategy + 1d = Vector decomposition + root = run only on the master task + + + 1d + + + + + char + dwav + dwav_nml + + Master restart file name for dwav model + + + undefined + + + + + char + dwav + dwav_nml + + Stream restart file name for dwav model, needed for branch simulations + + + undefined + + + + + logical + drof + drof_nml + If TRUE, prognostic is forced to true. + + .false. + + + + diff --git a/cime/components/data_comps/dwav/dwav_comp_mod.F90 b/cime/components/data_comps/dwav/dwav_comp_mod.F90 index f78963902763..4c45d364d4a2 100644 --- a/cime/components/data_comps/dwav/dwav_comp_mod.F90 +++ b/cime/components/data_comps/dwav/dwav_comp_mod.F90 @@ -139,7 +139,7 @@ subroutine dwav_comp_init( EClock, cdata, x2w, w2x, NLFilename ) !----- define namelist ----- namelist / dwav_nml / & - wav_in, decomp, restfilm, restfils + decomp, restfilm, restfils !--- formats --- character(*), parameter :: F00 = "('(dwav_comp_init) ',8a)" @@ -205,7 +205,6 @@ subroutine dwav_comp_init( EClock, cdata, x2w, w2x, NLFilename ) !write(logunit,F00)' dwav_readnml...' filename = "dwav_in"//trim(inst_suffix) - wav_in = "unset" decomp = "1d" restfilm = trim(nullstr) restfils = trim(nullstr) @@ -224,7 +223,6 @@ subroutine dwav_comp_init( EClock, cdata, x2w, w2x, NLFilename ) write(logunit,F00)' restfilm = ',trim(restfilm) write(logunit,F00)' restfils = ',trim(restfils) endif - call shr_mpi_bcast(wav_in,mpicom,'wav_in') call shr_mpi_bcast(decomp,mpicom,'decomp') call shr_mpi_bcast(restfilm,mpicom,'restfilm') call shr_mpi_bcast(restfils,mpicom,'restfils') @@ -237,7 +235,7 @@ subroutine dwav_comp_init( EClock, cdata, x2w, w2x, NLFilename ) !---------------------------------------------------------------------------- !write(logunit,F00)' read dshr nml...' - call shr_strdata_readnml(SDWAV,trim(wav_in),mpicom=mpicom) + call shr_strdata_readnml(SDWAV,trim(filename),mpicom=mpicom) !---------------------------------------------------------------------------- ! Validate mode diff --git a/cime/components/stub_comps/satm/cime_config/buildlib b/cime/components/stub_comps/satm/cime_config/buildlib index 0bdf9f9025ed..83e8d9a5b586 100755 --- a/cime/components/stub_comps/satm/cime_config/buildlib +++ b/cime/components/stub_comps/satm/cime_config/buildlib @@ -6,10 +6,8 @@ build stub model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_stub_lib diff --git a/cime/components/stub_comps/satm/cime_config/config_component.xml b/cime/components/stub_comps/satm/cime_config/config_component.xml index 2dbb2c188be4..eabe56dbc1cc 100644 --- a/cime/components/stub_comps/satm/cime_config/config_component.xml +++ b/cime/components/stub_comps/satm/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub atm component - + diff --git a/cime/components/stub_comps/sesp/cime_config/buildlib b/cime/components/stub_comps/sesp/cime_config/buildlib index 72d905011dad..c54e5d4cfc80 100755 --- a/cime/components/stub_comps/sesp/cime_config/buildlib +++ b/cime/components/stub_comps/sesp/cime_config/buildlib @@ -6,10 +6,8 @@ build stub model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_stub_lib diff --git a/cime/components/stub_comps/sesp/cime_config/config_component.xml b/cime/components/stub_comps/sesp/cime_config/config_component.xml index a29428230b73..0290f9100dec 100644 --- a/cime/components/stub_comps/sesp/cime_config/config_component.xml +++ b/cime/components/stub_comps/sesp/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -18,4 +18,4 @@ Stub esp component - + diff --git a/cime/components/stub_comps/sglc/cime_config/buildlib b/cime/components/stub_comps/sglc/cime_config/buildlib index 678e389a8b55..dfaa11d6d124 100755 --- a/cime/components/stub_comps/sglc/cime_config/buildlib +++ b/cime/components/stub_comps/sglc/cime_config/buildlib @@ -6,10 +6,8 @@ build stub model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_stub_lib diff --git a/cime/components/stub_comps/sglc/cime_config/config_component.xml b/cime/components/stub_comps/sglc/cime_config/config_component.xml index 76f4da12aa48..85e78d97b54b 100644 --- a/cime/components/stub_comps/sglc/cime_config/config_component.xml +++ b/cime/components/stub_comps/sglc/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub glc component - + diff --git a/cime/components/stub_comps/sice/cime_config/buildlib b/cime/components/stub_comps/sice/cime_config/buildlib index 397e5fdb17fd..a179856cc9a7 100755 --- a/cime/components/stub_comps/sice/cime_config/buildlib +++ b/cime/components/stub_comps/sice/cime_config/buildlib @@ -6,10 +6,8 @@ build stub model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_stub_lib diff --git a/cime/components/stub_comps/sice/cime_config/config_component.xml b/cime/components/stub_comps/sice/cime_config/config_component.xml index 931190fa0d7e..987b15fdf2aa 100644 --- a/cime/components/stub_comps/sice/cime_config/config_component.xml +++ b/cime/components/stub_comps/sice/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub ice component - + diff --git a/cime/components/stub_comps/slnd/cime_config/buildlib b/cime/components/stub_comps/slnd/cime_config/buildlib index 4160a1b81ddf..d464e7a10879 100755 --- a/cime/components/stub_comps/slnd/cime_config/buildlib +++ b/cime/components/stub_comps/slnd/cime_config/buildlib @@ -6,10 +6,8 @@ build stub model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_stub_lib diff --git a/cime/components/stub_comps/slnd/cime_config/config_component.xml b/cime/components/stub_comps/slnd/cime_config/config_component.xml index 1a4a2aa2c077..d0b4639e0ce6 100644 --- a/cime/components/stub_comps/slnd/cime_config/config_component.xml +++ b/cime/components/stub_comps/slnd/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub lnd component - + diff --git a/cime/components/stub_comps/socn/cime_config/buildlib b/cime/components/stub_comps/socn/cime_config/buildlib index 08fc40d6b603..559ea1c36ea1 100755 --- a/cime/components/stub_comps/socn/cime_config/buildlib +++ b/cime/components/stub_comps/socn/cime_config/buildlib @@ -6,10 +6,8 @@ build stub model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_stub_lib diff --git a/cime/components/stub_comps/socn/cime_config/config_component.xml b/cime/components/stub_comps/socn/cime_config/config_component.xml index c9c8719d85e5..daf1d2c9ffb2 100644 --- a/cime/components/stub_comps/socn/cime_config/config_component.xml +++ b/cime/components/stub_comps/socn/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub ocn component - + diff --git a/cime/components/stub_comps/srof/cime_config/buildlib b/cime/components/stub_comps/srof/cime_config/buildlib index 9c169c6fbfa8..d448e16bcf8f 100755 --- a/cime/components/stub_comps/srof/cime_config/buildlib +++ b/cime/components/stub_comps/srof/cime_config/buildlib @@ -6,10 +6,8 @@ build stub model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_stub_lib diff --git a/cime/components/stub_comps/srof/cime_config/config_component.xml b/cime/components/stub_comps/srof/cime_config/config_component.xml index c2e5258e115f..92bdcca611b1 100644 --- a/cime/components/stub_comps/srof/cime_config/config_component.xml +++ b/cime/components/stub_comps/srof/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub river component - + diff --git a/cime/components/stub_comps/swav/cime_config/buildlib b/cime/components/stub_comps/swav/cime_config/buildlib index b7d948c34739..0cb5ff5666ae 100755 --- a/cime/components/stub_comps/swav/cime_config/buildlib +++ b/cime/components/stub_comps/swav/cime_config/buildlib @@ -6,10 +6,8 @@ build stub model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_stub_lib diff --git a/cime/components/stub_comps/swav/cime_config/config_component.xml b/cime/components/stub_comps/swav/cime_config/config_component.xml index a98795ce4348..8b5be883ed94 100644 --- a/cime/components/stub_comps/swav/cime_config/config_component.xml +++ b/cime/components/stub_comps/swav/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub wave component - + diff --git a/cime/components/xcpl_comps/xatm/cime_config/buildlib b/cime/components/xcpl_comps/xatm/cime_config/buildlib index 63d763ac9ee0..37fde2cc30d8 100755 --- a/cime/components/xcpl_comps/xatm/cime_config/buildlib +++ b/cime/components/xcpl_comps/xatm/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_xcpl_lib diff --git a/cime/components/xcpl_comps/xatm/cime_config/buildnml b/cime/components/xcpl_comps/xatm/cime_config/buildnml index 2c26a62f0094..b8104013501c 100755 --- a/cime/components/xcpl_comps/xatm/cime_config/buildnml +++ b/cime/components/xcpl_comps/xatm/cime_config/buildnml @@ -6,12 +6,22 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_xcpl_nml +from CIME.buildnml import build_xcpl_nml, parse_input +from CIME.case import Case -build_xcpl_nml(sys.argv, 'atm') +def buildnml(case, caseroot, compname): + if compname != "xatm": + raise AttributeError + build_xcpl_nml(case, caseroot, compname) + +def _main_func(): + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "xatm") + +if __name__ == "__main__": + _main_func() diff --git a/cime/components/xcpl_comps/xatm/cime_config/config_component.xml b/cime/components/xcpl_comps/xatm/cime_config/config_component.xml index 0fb2b9546316..a1ad59fe62d7 100644 --- a/cime/components/xcpl_comps/xatm/cime_config/config_component.xml +++ b/cime/components/xcpl_comps/xatm/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,5 +17,5 @@ Dead atm component - + diff --git a/cime/components/xcpl_comps/xglc/cime_config/buildlib b/cime/components/xcpl_comps/xglc/cime_config/buildlib index ae93c2197e1c..33fcc2187dea 100755 --- a/cime/components/xcpl_comps/xglc/cime_config/buildlib +++ b/cime/components/xcpl_comps/xglc/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_xcpl_lib diff --git a/cime/components/xcpl_comps/xglc/cime_config/buildnml b/cime/components/xcpl_comps/xglc/cime_config/buildnml index 4d20918fbdfe..a02ca3f951f7 100755 --- a/cime/components/xcpl_comps/xglc/cime_config/buildnml +++ b/cime/components/xcpl_comps/xglc/cime_config/buildnml @@ -6,12 +6,22 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_xcpl_nml +from CIME.buildnml import build_xcpl_nml, parse_input +from CIME.case import Case -build_xcpl_nml(sys.argv, 'glc') +def buildnml(case, caseroot, compname): + if compname != "xglc": + raise AttributeError + build_xcpl_nml(case, caseroot, compname) + +def _main_func(): + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "xglc") + +if __name__ == "__main__": + _main_func() diff --git a/cime/components/xcpl_comps/xglc/cime_config/config_component.xml b/cime/components/xcpl_comps/xglc/cime_config/config_component.xml index 1211e5842b46..9535d9a58f20 100644 --- a/cime/components/xcpl_comps/xglc/cime_config/config_component.xml +++ b/cime/components/xcpl_comps/xglc/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Dead land-ice component - + diff --git a/cime/components/xcpl_comps/xice/cime_config/buildlib b/cime/components/xcpl_comps/xice/cime_config/buildlib index 21f6a390ebd4..57137c68a9da 100755 --- a/cime/components/xcpl_comps/xice/cime_config/buildlib +++ b/cime/components/xcpl_comps/xice/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_xcpl_lib diff --git a/cime/components/xcpl_comps/xice/cime_config/buildnml b/cime/components/xcpl_comps/xice/cime_config/buildnml index f5e4aa24e69c..f6fcbcc8a3b2 100755 --- a/cime/components/xcpl_comps/xice/cime_config/buildnml +++ b/cime/components/xcpl_comps/xice/cime_config/buildnml @@ -6,12 +6,22 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_xcpl_nml +from CIME.buildnml import build_xcpl_nml, parse_input +from CIME.case import Case -build_xcpl_nml(sys.argv, 'ice') +def buildnml(case, caseroot, compname): + if compname != "xice": + raise AttributeError + build_xcpl_nml(case, caseroot, compname) + +def _main_func(): + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "xice") + +if __name__ == "__main__": + _main_func() diff --git a/cime/components/xcpl_comps/xice/cime_config/config_component.xml b/cime/components/xcpl_comps/xice/cime_config/config_component.xml index 155de00bda57..34062742afd9 100644 --- a/cime/components/xcpl_comps/xice/cime_config/config_component.xml +++ b/cime/components/xcpl_comps/xice/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Dead ice component - + diff --git a/cime/components/xcpl_comps/xlnd/cime_config/buildlib b/cime/components/xcpl_comps/xlnd/cime_config/buildlib index 86b3616a7888..52d6dde11546 100755 --- a/cime/components/xcpl_comps/xlnd/cime_config/buildlib +++ b/cime/components/xcpl_comps/xlnd/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_xcpl_lib diff --git a/cime/components/xcpl_comps/xlnd/cime_config/buildnml b/cime/components/xcpl_comps/xlnd/cime_config/buildnml index 9b5bbeb47f12..f2354a124ae8 100755 --- a/cime/components/xcpl_comps/xlnd/cime_config/buildnml +++ b/cime/components/xcpl_comps/xlnd/cime_config/buildnml @@ -6,12 +6,22 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_xcpl_nml +from CIME.buildnml import build_xcpl_nml, parse_input +from CIME.case import Case -build_xcpl_nml(sys.argv, 'lnd') +def buildnml(case, caseroot, compname): + if compname != "xlnd": + raise AttributeError + build_xcpl_nml(case, caseroot, compname) + +def _main_func(): + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "xlnd") + +if __name__ == "__main__": + _main_func() diff --git a/cime/components/xcpl_comps/xlnd/cime_config/config_component.xml b/cime/components/xcpl_comps/xlnd/cime_config/config_component.xml index 39c458a9c6a2..792c3b28bcf7 100644 --- a/cime/components/xcpl_comps/xlnd/cime_config/config_component.xml +++ b/cime/components/xcpl_comps/xlnd/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Dead land component - + diff --git a/cime/components/xcpl_comps/xocn/cime_config/buildlib b/cime/components/xcpl_comps/xocn/cime_config/buildlib index 0a765771e4c2..f376d7ae2eec 100755 --- a/cime/components/xcpl_comps/xocn/cime_config/buildlib +++ b/cime/components/xcpl_comps/xocn/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_xcpl_lib diff --git a/cime/components/xcpl_comps/xocn/cime_config/buildnml b/cime/components/xcpl_comps/xocn/cime_config/buildnml index 8d6d9b1512ff..246cea266021 100755 --- a/cime/components/xcpl_comps/xocn/cime_config/buildnml +++ b/cime/components/xcpl_comps/xocn/cime_config/buildnml @@ -6,12 +6,22 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_xcpl_nml +from CIME.buildnml import build_xcpl_nml, parse_input +from CIME.case import Case -build_xcpl_nml(sys.argv, 'ocn') +def buildnml(case, caseroot, compname): + if compname != "xocn": + raise AttributeError + build_xcpl_nml(case, caseroot, compname) + +def _main_func(): + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "xocn") + +if __name__ == "__main__": + _main_func() diff --git a/cime/components/xcpl_comps/xocn/cime_config/config_component.xml b/cime/components/xcpl_comps/xocn/cime_config/config_component.xml index c0473bbb9550..755f010d6001 100644 --- a/cime/components/xcpl_comps/xocn/cime_config/config_component.xml +++ b/cime/components/xcpl_comps/xocn/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Dead ocean component - + diff --git a/cime/components/xcpl_comps/xrof/cime_config/buildlib b/cime/components/xcpl_comps/xrof/cime_config/buildlib index 3c2a7f5b0369..3976c96932d4 100755 --- a/cime/components/xcpl_comps/xrof/cime_config/buildlib +++ b/cime/components/xcpl_comps/xrof/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_xcpl_lib diff --git a/cime/components/xcpl_comps/xrof/cime_config/buildnml b/cime/components/xcpl_comps/xrof/cime_config/buildnml index 6341d6142551..06e9f1b86bdf 100755 --- a/cime/components/xcpl_comps/xrof/cime_config/buildnml +++ b/cime/components/xcpl_comps/xrof/cime_config/buildnml @@ -6,12 +6,22 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_xcpl_nml +from CIME.buildnml import build_xcpl_nml, parse_input +from CIME.case import Case -build_xcpl_nml(sys.argv, 'rof') +def buildnml(case, caseroot, compname): + if compname != "xrof": + raise AttributeError + build_xcpl_nml(case, caseroot, compname) + +def _main_func(): + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "xrof") + +if __name__ == "__main__": + _main_func() diff --git a/cime/components/xcpl_comps/xrof/cime_config/config_component.xml b/cime/components/xcpl_comps/xrof/cime_config/config_component.xml index e6c7570cc0db..0daa65009f9d 100644 --- a/cime/components/xcpl_comps/xrof/cime_config/config_component.xml +++ b/cime/components/xcpl_comps/xrof/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -30,4 +30,4 @@ Dead river component - + diff --git a/cime/components/xcpl_comps/xwav/cime_config/buildlib b/cime/components/xcpl_comps/xwav/cime_config/buildlib index 6520b9f2fcb3..df2c40dd11b5 100755 --- a/cime/components/xcpl_comps/xwav/cime_config/buildlib +++ b/cime/components/xcpl_comps/xwav/cime_config/buildlib @@ -6,10 +6,8 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * from CIME.buildlib import build_xcpl_lib diff --git a/cime/components/xcpl_comps/xwav/cime_config/buildnml b/cime/components/xcpl_comps/xwav/cime_config/buildnml index 68c01dff2910..ba0ae95a8a46 100755 --- a/cime/components/xcpl_comps/xwav/cime_config/buildnml +++ b/cime/components/xcpl_comps/xwav/cime_config/buildnml @@ -6,12 +6,22 @@ build data model library import sys, os -_CIMEROOT = os.environ.get("CIMEROOT") -if _CIMEROOT is None: - raise SystemExit("ERROR: must set CIMEROOT environment variable") -sys.path.append(os.path.join(os.environ["CIMEROOT"],"scripts","Tools")) +_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","..","..") +sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools")) from standard_script_setup import * -from CIME.buildnml import build_xcpl_nml +from CIME.buildnml import build_xcpl_nml, parse_input +from CIME.case import Case -build_xcpl_nml(sys.argv, 'wav') +def buildnml(case, caseroot, compname): + if compname != "xwav": + raise AttributeError + build_xcpl_nml(case, caseroot, compname) + +def _main_func(): + caseroot = parse_input(sys.argv) + with Case(caseroot) as case: + buildnml(case, caseroot, "xwav") + +if __name__ == "__main__": + _main_func() diff --git a/cime/components/xcpl_comps/xwav/cime_config/config_component.xml b/cime/components/xcpl_comps/xwav/cime_config/config_component.xml index 2abcc70bfd18..02c6b7eae5bd 100644 --- a/cime/components/xcpl_comps/xwav/cime_config/config_component.xml +++ b/cime/components/xcpl_comps/xwav/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Dead wave component - + diff --git a/cime/doc/README b/cime/doc/README deleted file mode 100644 index b22360d57f34..000000000000 --- a/cime/doc/README +++ /dev/null @@ -1,32 +0,0 @@ --------------------------------------------------------------------------------- - CESM1.3 DOCUMENTATION README - -To generate documentation for a CESM1.3 tag, follow these steps: - -1. Check out the entire CESM code base tag from SVN - -2. generate usersguide using docbook - - cd scripts/doc/usersguide - - ./rundocbook.csh - - cp *.* [path-to-web-server-accessible-directory] - example on CGD host: cp *.* /cesmweb/html/models/cesm1.3/cesm/doc/usersguide - and corresponding URL: http://www.cesm.ucar.edu/models/cesm1.3/cesm/doc/usersguide/book1.html - -3. generate modelnl documentation - - cd scripts/doc/modelnl - - ./create_tables - - cp *.* [path-to-web-server-accessible-directory] - example on CGD host: cp * /cesmweb/html/models/cesm1.3/cesm/doc/modelnl - and corresponding URL: http://www.cesm.ucar.edu/models/cesm1.3/cesm/doc/modelnl/index.html - -4. generate scripts and tools API documentation using doxygen - - cd scripts/doc/apidocs - - doxygen - - cd html - - cp *.* [path-to-web-server-accessible-directory] - example on CGD host: cp -R html /cesmweb/html/models/cesm1.3/cesm/doc/apidocs - and corresponding URL: http://www.cesm.ucar.edu/models/cesm1.3/cesm/doc/apidocs/html - -http://www.cesm.ucar.edu/models/cesm1.3/cesm/doc - --------------------------------------------------------------------------------- diff --git a/cime/doc/apidocs/Doxyfile b/cime/doc/apidocs/Doxyfile deleted file mode 100644 index 2621f14f061b..000000000000 --- a/cime/doc/apidocs/Doxyfile +++ /dev/null @@ -1,2351 +0,0 @@ -# Doxyfile 1.8.5 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "CESM 1.3.x Scripts and Tools" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "CESM scripts documentation." - -# With the PROJECT_LOGO tag one can specify an logo or icon that is included in -# the documentation. The maximum height of the logo should not exceed 55 pixels -# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo -# to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -#OUTPUT_DIRECTORY = /cesmweb/html/models/cesm1.3/cesm/doc/apidocs -OUTPUT_DIRECTORY = . - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese- -# Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto, Farsi, -# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en, -# Korean, Korean-en, Latvian, Norwegian, Macedonian, Persian, Polish, -# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, -# Turkish, Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -#ABBREVIATE_BRIEF = -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = YES - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a -# new page for each member. If set to NO, the documentation of a member will be -# part of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. -# -# Note For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = no_extension=Python - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = NO - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by by putting a % sign in front of the word -# or globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO these classes will be included in the various overviews. This option has -# no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO the members will appear in declaration order. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the -# todo list. This list is created by putting \todo commands in the -# documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the -# test list. This list is created by putting \test commands in the -# documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES the list -# will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. Do not use file names with spaces, bibtex cannot handle them. See -# also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO doxygen will only warn about wrong or incomplete parameter -# documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. -# Note: If this tag is empty the current directory is searched. - -INPUT = ./doc_txt/ \ - ../../tools \ - ../../scripts \ - ../../scripts/validation_testing \ - ../../scripts/create_clone \ - ../../scripts/create_newcase \ - ../../scripts/create_test \ - ../../scripts/manage_testlists \ - ../../scripts/Tools \ - ../../scripts/Tools/cesm_setup \ - ../../scripts/Tools/check_input_date \ - ../../scripts/Tools/create_production_test \ - ../../scripts/Tools/create_train \ - ../../scripts/Tools/cs.status \ - ../../scripts/Tools/cs.submit \ - ../../scripts/Tools/st_archive \ - ../../scripts/Tools/user_nl_add \ - ../../scripts/Tools/user_nlcreate \ - ../../scripts/Tools/xml2env \ - ../../scripts/Tools/xmlchange \ - ../../scripts/Tools/xmlquery \ - ../../scripts/Tools/xmltestentry \ - ../../machines/buildlib.csm_share \ - ../../machines/configure \ - ../../machines/mkDepends \ - ../../machines/mkSrcFiles - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. - -FILE_PATTERNS = *.py *.pl *.pm *.txt *.no_extension -#FILE_PATTERNS = * - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = ../usersguide \ - ../modelnl \ - ./Doxyfile \ - ./doxypypy_filter.sh \ - ../../../tools/pyAverager/Doxyfile \ - ../../../tools/pyAverager/doxypy.py \ - ../../../tools/pyReshaper/Doxyfile \ - ../../../tools/pyReshaper/doxypy.py - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = *.html *.gif *~ - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = ./examples - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -#FILTER_PATTERNS = "*.py=./doxypypy_filter.sh" "*.pl=./doxypypy_filter.sh" "*.pm=./doxypypy_filter.sh" "*.no_extension=./doxypypy_filter.sh" -#FILTER_PATTERNS = "*.py=./doxypypy_filter.sh" "*.pl=/usr/local/bin/doxygen-filter-perl" "*.pm=/usr/local/bin/doxygen-filter-perl" "*.no_extension=./doxypypy_filter.sh" -#FILTER_PATTERNS = "*.py=./doxypypy_filter.sh" -#FILTER_PATTERNS += "st_archive=/usr/local/bin/doxygen-filter-perl" -#FILTER_PATTERNS += "*.pl=/usr/local/bin/doxygen-filter-perl" -#FILTER_PATTERNS += "*.pm=/usr/local/bin/doxygen-filter-perl" - - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER ) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = YES - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES, then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more acurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# compiled with the --with-libclang option. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user- -# defined cascading style sheet that is included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefor more robust against future updates. -# Doxygen will copy the style sheet file to the output directory. For an example -# see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the stylesheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler ( hhc.exe). If non-empty -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated ( -# YES) or that it should be included in the master .chm file ( NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated ( -# YES) or a normal table of contents ( NO) in the .chm file. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using prerendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /