From 83634512187f89f012c73f3e42e0a1c1dd0b3ab8 Mon Sep 17 00:00:00 2001 From: Robert Jacob Date: Mon, 6 Mar 2017 18:29:18 -0600 Subject: [PATCH 01/26] Squashed 'cime/' changes from 0eb331d..34d9a6d 215e459 Merge pull request #1182 from jedwards4b/config_archive_split 441136f fix pylint problems 46e7d99 Revert "Revert "add --mpilib option to create_test"" Not sure how the first revert got there This reverts commit 6bb7d0b3492e6fa3ed3ff24bb29badc3e0bf6583. 33dcf97 break up config_archive into component specific files 6bb7d0b Revert "add --mpilib option to create_test" 9f45612 Update ChangeLog 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 dc74164 Add S-case test to cime_developers 5efd5b7 update to resolve problem with merge and PR #1159 9d25fcf Merge branch 'bertinia-master' Fix for conflict with ESMCI master and PR #1159 9ac175a Merge branch 'master' of https://github.com/ESMCI/cime into bertinia-master 42acfd4 add --mpilib option to create_test ad5ff79 Merge pull request #1172 from ESMCI/mvertens/pop_python_namelist 4ab605f Merge pull request #1177 from jedwards4b/pio1_bld_fixes 2f1b3b8 make sure pio1 finds netcdf4 9c2a499 Tweak ChangeLog text 933b92e Update ChangeLog for cime5.2.0-alpha.25 bac0ce7 Merge pull request #1174 from jedwards4b/compiler_backout cc6a1c2 back out pgi and gnu compilers on yellowstone cf6e97f revert intel compiler change on yellowstone 646cc2f Update ChangeLog for cime5.2.0-alpha.24 980a6b8 Merge pull request #1167 from fischer-ncar/drip_annual_changes_test_fix 4d88e2a Add for_testing_allow_non_annual_changes = .true. to fix a testing issue with clm. Also remove SMS_D.f09_g16.B1850.yellowstone_intel since we also have a ERS_D.f09_g16.B1850.yellowstone_intel test. c452564 updating 3e3a73f Revert "update case_lt_archive python implimentation" e8929e2 Merge pull request #1165 from ESMCI/jayeshkrishna/cond_incl_make_undefine fac6377 Conditionally use undefine in Makefile for backward compatibility 9554cce Merge pull request #1160 from jedwards4b/get_timing_correction 642cc32 Merge pull request #1164 from billsacks/unit_tests_local b657cd0 Bring back setting of -DOS 89354ea add back whitespace, improve case.build output 143972d update case_lt_archive python implimentation a886a17 Changes needed to get unit tests to build on my Mac efcdb3d remove cam version requirement from ccsm_bgc setting 1f7694c Nothing to do is a dumb thing to write e630446 more timing file fixes b19a1de Merge remote-tracking branch 'upstream/master' d8e92cb remove cime_config/cesm/allactive from CIME and replace it with an external d3262cb correction to get_timing output, updates for cheyenne and yellowstone 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 f3cb2ac Updating master 032f57a change from allactive to drv testlist for testing db95da1 Merge pull request #1151 from ESMCI/agsalin/gitignore 20d7e17 Build unit tests in debug mode by default eafcfe1 Get circle_area CTest-based test passing 06f81c7 Enable parallel builds of the unit tests, controlled by --make-j argument. 88a3b27 Change recommended unit testing command to be shell independent c447cc2 pass correct args to cmake 2394b9e replace hard coded path with query of config_files.xml b19c3b5 replace hard coded path with query of config_files.xml 43040e0 gitignore: add buildnmlc c80c65c Merge pull request #1145 from billsacks/unit_test_cleanup bdd9518 Suggest creating a temporary directory for the unit test build 4746c74 Change build-type default back to CESM_DEBUG rather than CIME_DEBUG 2821dd5 Bring back a commented-out line in the circle_area CMakeLists.txt 4f2ec39 Add comment e8d8c67 fix pylint issue cd50668 changes to get pop namelists working with user_nl_pop changes 7ef40c0 Merge pull request #1140 from jedwards4b/cleanbld_refactor 1497e80 fix issues with tests fa5ed4c update README.unit_testing; 00b7038 revert to rmtree for clean-all option 3782eb0 response to review 4a5076c get clean working for tests b610338 refactor clean bld bd3fc66 Merge pull request #1135 from jedwards4b/unit_test_refactor a731c7e Tweak the pylint fixes for plot_gradient 534aade Merge branch 'jgfouca/allow_arbitrary_batch_args' (PR #1137) 5c88b36 No longer need to specify PAPI_LIB - this must be picked up implicitly now fb1707e Merge remote-tracking branch 'jedwards4b/unit_test_refactor' into unit_test_refactor 9ed4097 better cleanup after testing f06f9bc cleanup after testing 9394134 fix cime unit tests, all tests now pass on yellowstone d4f0b39 use correct word df34102 Document that --use-openmp is now needed 85931b7 Fix documentation to refer to CIME_utils rather than CESM_utils 2064822 Rename CMAKE_MODULE_DIRECTORY to CIME_CMAKE_MODULE_DIRECTORY d0a1616 Merge pull request #1136 from ESMCI/jgfouca/handle_batch_errors_better 69ed15e Add support to case.submit for sending arbitrary arguments to the batch submission cmd 9a1f703 Better handling of exceptions in batch code a867fb3 fix pio1 build 15f0257 more cleanup 342659a still working on tests 6d1e898 cleanup pylint issues 0021f0a add unit_test tool test to scripts_regression_tests.py 04ae9f2 some tests are working now f5c6476 just commit to rebase 732547f use pio2 cmake tools 5c2dd68 update toplevel CMakeList 766552a getting close f725e31 baby steps 00f113e begin to refactor 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 b47ccce Fix config_archive.xml and case_st_archive.py a51fb8c Merge pull request #1128 from ESMCI/jgfouca/xmlquery_partial_match 505410b Changes based on reviews 253a3a0 xmlquery: allow partial match of variable name 02df5c4 Allow star to appear in namelists 77cf83e Merge branch 'worleyph/timing/non-null-terminated_string_support_fix' into master (PR #895) b10ffcb Update to bless_test_results 21ea438 Merge pull request #1122 from gold2718/DAEfix 7248aef Merge branch 'jgfouca/acme5.1_to_esmci_try2' (PR #1123) bf458af Sync up with old jgfouca/5.1_integration 4cd5a94 Merge branch 'maint-cime5.1' into jgfouca/acme5.1_to_esmci_try2 3ad0cf6 Merge branch 'rljacob/split-cime51-5' into maint-cime5.1 62116a2 Added more re-run cleanup to set CONTINUE_RUN back to FALSE. 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 95386c9 change message wording 64aea96 Disable PRE.f19_f19.ADESP test, it's far too expension 23b2ef4 Couple fixes to recent PR. 11e30d6 Merge pull request #1109 from gold2718/TimeMgrFix e84d7f2 Restore interfaces used by active components 67fd4aa change from ERROR to STOP e367fb4 Merge pull request #1098 from ESMCI/mfdeakin-sandia/map_field_build 8d110fd Merge branch 'mfdeakin-sandia/map_field_build' of github.com:ESMCI/cime into mfdeakin-sandia/map_field_build 277a3c5 update INSTALL doc b1af290 Merge branch 'mfdeakin-sandia/map_field_build' of github.com:ESMCI/cime into mfdeakin-sandia/map_field_build 68d1d91 Fix typo in config_machines.xml and it's associated entry in config_compilers.xml a499612 update Makefiles to match config_compilers change 825e43e autofind CIME_MODEL, fix issue with CPPDEFS ff4f207 Merge pull request #1095 from gold2718/DAdesp 81fd416 Clean directory before running to avoid issues with multiple run calls. aa1c548 Changes requested in PR review cdbd4ce only count tests in prealpha prebeta or aux_* categories a93184d Merge pull request #1097 from jedwards4b/tie_timers_to_xml 86c0bf2 Merge branch 'mfdeakin-sandia/map_field_build' of github.com:ESMCI/cime into mfdeakin-sandia/map_field_build a63600d Move 'CPPDEFS += -DLINUX' from the Makefile to block so that it's a part of Macros.make f91bf1d Attempt at fixing Macros.make for building map_field 0816471 update netcdf on cheyenne e0bb5f6 fix typo in xml 7f61116 change args to match e8404fd update create_newcase --mach to --machine to match create_test 86bb24a reconnect timer level and depth to xml variables 9e20e45 Merge branch 'DAdesp' of github.com:gold2718/cime into DAdesp Forgot to pull changes from repo 0fb525c Addressed most PR comments by @jedwards4b 618f515 Merge pull request #1092 from mgduda/esmf_timemgr/i8_interval_division 654504c Merge pull request #1094 from ESMCI/jgfouca/err_resub_fix 167a7ca pylint comment change for pelayout 6ebb452 ERR XML settings need CONTINUE_RUN=FALSE 5a92de2 Fix pylint issues 025a9d9 Create data ESP component and add pause/resume to driver Create DESP model and test compset (ADESP) Added PAUSE options to driver XML Removed unused public interfaces: public :: seq_timemgr_restartAlarmSetOff ! Turn off restart alarm public :: seq_timemgr_runAlarmSetOff ! Turn off run alarm public :: seq_timemgr_historyAlarmSetOff ! Turn off history alarm public :: seq_timemgr_stopAlarmIsOn ! Is a stop alarm ringing public :: seq_timemgr_runAlarmIsOn ! Is a run alarm ringing public :: seq_timemgr_historyAlarmIsOn ! Is a history alarm ringing Replace CASE with TEST in testname documentation for create_test Cleanup error output for adding timers Added new test, PRE, to test pause/resume 0c6398f Merge branch 'mfdeakin-sandia/map_field_build' of github.com:ESMCI/cime into mfdeakin-sandia/map_field_build 03822a9 Move 'CPPDEFS += -DLINUX' from the Makefile to block so that it's a part of Macros.make 8f3c188 Attempt at fixing Macros.make for building map_field fc7e808 Move 'CPPDEFS += -DLINUX' from the Makefile to block so that it's a part of Macros.make 1472b8d Add homme.log to TestStatus.log for HOMME test f56a446 Merge pull request #1090 from jedwards4b/lt_archive_issues 656670e Add ESMF_TimeIntervalProdI8 routine to multiply a time interval by an 8-byte int c9bcfe4 fix issues with lt_archive ccd1e96 Merge pull request #1082 from jedwards4b/addback_mask_grid 81f08e1 Merge pull request #1081 from jedwards4b/fix_no_nesting_fail efd958d add back the mask grid dropped in v2 but used by components ccd67d9 fix expect statement for directive nesting error 1d083cc fix pylint issue 9e2764c Merge pull request #1080 from jedwards4b/config_compilers_conformity 1be8831 revert to $ENV style in config_compilers 59ab0ca remove incorrect comment c92ce35 add tests for new syntax 79fbb8b fix regression tests e13ffae update config_compilers to use $ENV{} $SHELL{} and ${} syntax b559f27 Cleanup config_grids.xml to remove duplicate entries and fix discrepancies. ccb7c22 Revert "Change over acme env usage to correct syntax" ce2dbab Merge pull request #1077 from jedwards4b/update_changelog 8175e43 updates to template and ChangeLog 09da9a2 fix documentation error 6dfa124 Attempt at fixing Macros.make for building map_field 7ee5f68 update changelog feb28f3 Merge pull request #1076 from ESMCI/mvertens/fix_clm_usrdat 853da02 Merge pull request #1069 from jtruesdal/cime_plus_defs 3fb0130 fixed #1075 38cc009 Merge pull request #1068 from jedwards4b/test_fixes dd32465 updating pop defaults for cesm 077100f update cime_developer tests to catch this problem 0e0cde9 refactor tests to catch this problem c088e09 fix names in lock 7318d40 backout machines changes for testing, will move to seperate PR bbd8ba7 restore filenames reversed d179cac fix for ers and err, cp env_mach_pes for pfs, no sharedlibroot for single test 3d0965a Merge pull request #1062 from ESMCI/mvertens/tfreeze_option 834ed3e made the input namelist variable tfreeze_option either acme or cesm settable in terms of defaults f0d4fe6 Merge branch 'jonbob/mpas/new_mpas_grids_V3' (PR #1240) 19a104d Change over acme env usage to correct syntax 29aac9b Merge branch 'yinghuilu/cice/fix952' (PR #1196) 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 dfc7cdf add f19_g16_r01 grid 4d144d7 Add access to shell in XML files a532692 Fix ERI resubmission 19cca33 Script changes to support new MPAS v3 grids. a32a28c remove duplicate in config_grids.xml 9321f45 Merge branch 'azamat/mira/default-pio-stride' (PR #1242) e94ae3c Fix PIO stride at Mira+Cetus to 128 to avoid OOM errors f659d2d Merge branch 'azamat/machfiles/homme-on-anvil' (PR #1119) c46e8f0 Merge branch 'ACME-Climate/jgfouca/cime/perf_data_fixes' (PR #1201) 441aba9 Change depends file precidence c11093d Update Blues and Anvil machine files for HOMME 18479ce Merge pull request #1039 from ESMCI/jgfouca/lock_env_batch 3a84a6e Merge pull request #1046 from jedwards4b/some_log_issues 49b1e4a Update ACME batch configs, do not lock env_batch.xml d4a6945 add test case directory to log info output 2d4dfb1 add create_test command line to README.case 0489798 Fix Z_FullSystemTests on batch machines 3dba187 Update Anvil Intel compiler to v17 20f5614 Lock env_mach.xml file 742c8dc Merge pull request #1036 from ESMCI/jgfouca/fix_resubmission_of_some_testcases 49a7de6 fix pylint issue 7c3edd9 Merge branch 'azamat/anvil/improve-defaults' (PR #1225) 03948a3 Update defaults 2a2fc7f rename corip1 as cori-haswell and cori-knl 2a1d924 Merge branch 'azamat/cetus/fix-runjob-settings' (PR #1229) d7b370a Update default PEs on Cetus b3ca367 When all PEs fit in one node, request at least one node b572ed4 Make Cetus build settings identical as Mira's d20cfd1 Fix pylint warning 23072b4 Fix syslog_jobid path name 3062ea4 Better solution for getting the jobid into slurm output files 85cd34f Revert "Add timestamp to output_error_path" 5211b4d Add timestamp to output_error_path 167c8c1 Change gzip utility function to preserve timestamps of original file c47bf26 Address additional feedback for PR. c592938 Fixes based on review 1aa8242 Fixes to provenance/timing saving aa5b443 Merge branch 'ndk/machinefiles/cori-haswell-knl' (PR #1222) 3e5e93d Fix submission of ERS and ERR tests. 289e39e Merge pull request #1034 from ESMCI/jgfouca/better_support_for_custom_input_files a0796d8 Only flag an error if they try to download the file 4b2c22b check_input_data: better support for custom input files 869f904 Merge pull request #1025 from ESMCI/jgfouca/more_create_test_force_pecount_chgs df10e41 Minor changes. 25de83b update ChangeLog b344d31 Minor adjustments to calculations of cores_per_task 5b52add remove flag from cori PBS 33d74c3 Merge pull request #1030 from jedwards4b/fix_drive_namelist_issue 83a388d fix drv namelist issue 9f707da update ChangeLog 4309786 Simplify library paths cf59a6b Adjustments to TOTAL_CORES and cores_per_task 281625a Merge pull request #1028 from jedwards4b/science_support_field 924f00d Changes to allow for the HOMME test to pass for cori-haswell and cori-knl. Add "module load zlib" and use this library. Add custom srun flags temporarily Remove old corip1 config file 8f50f07 fix typos fce60ef add science_support field to xml 3fff2cc Adding default F-case PE layouts for Anvil 1aef6ab fix issue in create_newcase 82bcfc3 add science_support field 476f87a Fixes non-BFB issue with F-compsets when threading is used 63b6046 Refactor implementation of forcing procs/threads in create_test 5b97dc5 Make Mira and Cetus Depends files identical efc4c2a Merge pull request #1024 from jedwards4b/create_clone_cime_output_root d0fc04c add cime-output-root option to create_clone 7a64201 Merge pull request #1022 from jedwards4b/yellowstone_gnu_serial_build_issue ca192f9 SCC was not being defined in Macros.make 5bc9040 Make Mira and Cetus PE calculations identical eee0cd5 Fix PE calculation for Cobalt e3ea27e Merge pull request #1018 from jedwards4b/config_batch_schema 178ca8e add schema for config_files 8aaff27 add compsets schema to config_files. 5b6c249 add config_compsets schema 95cda1d fix issue in testlist schema 6dacf08 fix path 1ab88b0 add NAMELIST_DEFINITION_FILE to config files 6da3bd6 add BATCH_SPEC_FILE to config_files.xml update code to read and use schema files 6432695 add schema for config_batch.xml 269751c Merge pull request #1016 from ESMCI/jgfouca/create_test_force_pecount 2082b26 Merge pull request #1015 from ESMCI/jgfouca/fix_z_full_system_test_race_cond b5af1b5 Updating Anvil defaults 5436f3b create_test: Add --force-procs and --force-threads options 868b9a5 ERS and ERR also do not re-run successfully e3d2010 Fix race condition in Z_FullSystemTests test re-runs 329b53e Fixes non-BFB issue with F-compsets when threading is used d281b24 Merge pull request #1013 from jedwards4b/config_machines_template 64dee72 Merge pull request #1012 from ESMCI/mfdeakin-sandia/no_invalid_characters_fortran d59a558 Add a fully documented template for the config_machines file 79cea1b Update PE layouts for edison. Add -z muldefs to link line for edison. Remove machine hopper. b516ae0 Initialize strings in structures in the structure declaration 66526fa Paranoia about preinitializing strings, think it's all of them 054e60e update modules and PE layouts for cori-knl and cori-haswell 61a6a49 Merge pull request #1007 from ESMCI/mvertens/split_drv_config_component 2876a10 Preinitialize strings to blank before using them to try and fix #1000 e44e727 Merge pull request #1011 from jedwards4b/costpes_correction 0b6b6d5 added DRV_THREADING,SAVE_TIING,SAVE_TIMING_DIR,BFBFLAG to config_component_[acme|cesm].xml 6158dd9 update ChangeLog 99bef30 improved evaluation of cost_pes 244804f Merge pull request #1010 from jedwards4b/pea_test_fix 8081074 Merge pull request #1009 from fischer-ncar/testlist_tuning 7d3f3eb Update CESM testlist. Increase wall clock times for some yellowstone tests. Remove test that's too large for hobart. Fix grid names. 6d92e59 make sure netcdf is used when totattasks=1 7f376ef Merge remote-tracking branch 'upstream/master' 1629d33 Merge pull request #1008 from jedwards4b/machine_updates d179d98 Merge branch 'cheyenne_updates' into machine_updates e369668 updates for cori e1660bb update compiler and fix pbs dependancy bug c0d83a6 Merge pull request #1005 from jedwards4b/add_overrides_for_pes 0e30690 additional fixes for branch c8f131e create new additional model specific config_component_[acme|cesm].xml that has compset dependent attributes f971fbc add schema for config_pes.xml and add overrides section to that file c4ff567 add an overrides section to config_pes.xml c782486 Merge branch 'azamat/mpas/scratch-file-io' (PR #1110) 9e57a5c update changelog 658e7e2 Merge pull request #1004 from jedwards4b/first_cheyenne_port 76a9b42 change comment cbb1124 port to cheyenne 77cae9b Merge pull request #1003 from ESMCI/jgfouca/print_job_id 8fc9f80 Always print jobid unless --silent dc71c08 update ChangeLog bf8dc8c Merge pull request #1001 from jedwards4b/backout_982 f71821e backout PR 982 993a170 Merge pull request #998 from jedwards4b/config_machines_schema 0606129 update documentation 05980d1 add documentation to config_machines.xsd 52c7fbf turn pio timing on by default 6f2cf78 move PIO settings to correct location ff1ff02 clean up acme config_machines.xml d57e9e1 add schema for config_machines.xml 1a40caa cesm machines validates e966685 Change cron_script to always submit to dashboard. 116e114 add a schema for config_machines.xml 870953d correction to ChangeLog f7ec9c9 update ChangeLog 61015da Merge pull request #997 from jedwards4b/nersc_updates cfe3b86 Merge pull request #996 from jedwards4b/ERI_test_fix dfa1635 some updates for nersc systems d21d726 make sure log directory exists d112fef Merge pull request #984 from ESMCI/mvertens/add_cime_model_attribute 801a5ff Merge pull request #995 from ESMCI/jgfouca/add_run_env_txt 8efa7f1 Merge pull request #994 from ESMCI/jgfouca/fix_append_status_exc c32b882 Add run_environment.txt output for all runs of CIME. ee7977f Make sure to convert exception to string before appending to status 3758cbd Merge pull request #993 from ESMCI/jgfouca/ensure_threadpool_threads_are_closed f6a4086 Merge pull request #988 from ESMCI/jgfouca/add_machine_to_tests 950927e Merge pull request #986 from ESMCI/jgfouca/reduce_case_setup_calls 5dc3666 Ensure thread pool threads for code_checker are closed upon exit 3e0fcf8 Merge pull request #987 from ESMCI/jgfouca/memleak_not_impact_case_test_success 527185f Minor fixes, comment update 83eb0f3 Merge pull request #989 from ESMCI/jgfouca/improve_msgs_from_nl_cmpgen 62cf600 Add back cron_script from pre-CIME5 ACME. 7abe68e Merge pull request #991 from jedwards4b/netcdf_build_fix a11981e Change case_test to return success based on run_phase only 1f0250b update error message 48a55a8 update error message 252fdfc NETCDF include path is needed by all components f8b6015 Add NLCOMP tag, say which files failed 684c801 Add CIME_MACHINE env variable a184ecb Add support for --machine to scripts_regression_tests 37d2fa9 added test to ensure that cesm and acme attributes were working correctly for X compset and CPL_SEQ_OPTION 9130e4b Presence of a memleak should not impact case.test success 36ef260 Reduce redundant case setups 0374167 Add expect statement for jobid search 9fd6719 added cime_model attribute to all value entries that had compset attribute matches 297076d Merge pull request #982 from jtruesdal/cime_plus_119defaults a3d3009 new cesm defaults - 1hr pop cpl, Robert Filtering, new grid files for EBM, mushy ice 96acbbf update ChangeLog 00ac7a6 Merge pull request #978 from ESMCI/mfdeakin-sandia/Separate_NetCDF_C_Fortran 9e84e54 Merge pull request #981 from fischer-ncar/testlist_upates 434cb98 Simplify logic for determining whether to check for NetCDF information. Also fix driver name after verifying with info statements 651b2cb Fix model name for building the coupled acme and cesm dfc75c1 Use a cleaner method to detect if we're building PIO or the coupled model. Also explicitly link to both netcdff and netcdf d8139d0 Update tests, remove IOP, update stampede configuration ff5c949 Merge remote-tracking branch 'upstream/master' 0207191 Add more robust checks for conditions on NETCDF_SEPARATE. Also link to the NetCDF C library on Skybridge ad02138 Merge pull request #977 from ESMCI/jgfouca/get_sandia_climate_machine_working 6e3353a sandia-srn-sems was missing compiler block 193de2a Fix case.build --clean for CESM using the same fix as the previous fix commit 6719870 Merge branch 'mfdeakin-sandia/Separate_NetCDF_C_Fortran' of github.com:ESMCI/cime into mfdeakin-sandia/Separate_NetCDF_C_Fortran 9d324cd Fix case.build --clean by raising an error when the NetCDF library isn't defined only when building PIO or ACME d1eda0f Fix PIO1 builds for CESM using the same fix as the previous commit 745919a Fix building PIO1 on Edison - always use , not fb4eb37 Add support to the CESM makefile for separate NetCDF C and Fortran installations Tested on Skybridge with an A compset, need to verify on Edison Change CESM config_compilers.xml skybridge entry to not rely on nf-config which isn't available for all modules 1ecb96e Minor cleanups: Remove some information printing Remove superfluous check for the definition of NETCDF_SEPARATE Change Skybridge ACME config back to using the single NetCDF install 19a15d6 Merge pull request #974 from ESMCI/jgfouca/significant_code_checker_refactor 32aac5b Fix for case when NETCDF_PATH is defined in the users environment. Not robust - it'd probably be better to undefine variables not specified by the compiler/machine xml 0cc002a Significant refactor of code_checker and related tests 421b173 Merge pull request #971 from ESMCI/jgfouca/minor_refactor_of_namelists 42bd1b5 Allow flexible spacing methods 408d3e2 Better support of multiply operation, other refactors 156a3fb update ChangeLog 7ba7124 Merge pull request #969 from ESMCI/jgfouca/shared_area_context 893bb03 Merge pull request #970 from jedwards4b/1x1_grid_fix 4583c0a explicitly set rof grid to null for this single column cases 762f1e0 Add SharedArea context manager 8dd6e98 Merge pull request #968 from ESMCI/jgfouca/fix_pelayout_pylint_issues 2fff644 Merge pull request #967 from jedwards4b/pio_namelist_fix de6c95e Fix pelayout pylint issues ebe3e43 Merge pull request #966 from ESMCI/fischer/cime5.2.0-alpha.13.bhist 6d493bc cleanup, change args to da script c286dae fix for buildnml issue e0f9f2f initialize and check pio vars in case_setup de35e5b Fix git describe errors on some platforms bc654b0 Fix cesm configuration for building on Skybridge 493380e Update changelog 306b342 Fix ChangeLog 0abba7d Fix merge conflicts for cime_config/cesm/allactive/config_compsets.xml cime_config/cesm/allactive/testlist_allactive.xml 2bba07d Another minor fix for the makefile. Also fix the SLIBS variable on Skybridge 47efa8e update ChangeLog 01bf497 Merge pull request #957 from gold2718/pelayout 444fa41 Merge pull request #965 from ESMCI/mvertens/nmlgen_update2 cba21bd fix pylint issue d6c68f3 Work on supporting separate NETCDF_C_PATH and NETCDF_FORTRAN_PATH defines instead of just a conglomerate NETCDF_PATH for pio Add test configuration lines to Skybridge's entry in config_compilers.xml Makefile cleanup 575ba31 reverted add_default changes back to original set_value 7faf48d fixed startdate setting d418428 fixed typo fe6f915 fixed pylint problems 3f77665 a few more bugfixes 7484f29 fixes for dealing with skipped groups correctly bc19a79 added attribute to add_default to ignore_abs_path cd2e9c6 more cleanup updates for performance optimization 955214b fixed rebasing problem 880de69 fixed pylint errors 86a177c fixed problems with drv_flds_in refactor 771ac08 fixed pylint problems a488388 updates to new interfaces for nmlgen fb47fde more cleanup for performance optimization eba840b changes to permit performance optimization 7e4203c first set of performance updates - in validation step 34b5866 fix pylint issue 5bf83db Merge pull request #964 from ESMCI/mvertens/nmlgen_updates a8ba7fc Merge pull request #963 from jedwards4b/comp_classes_cleanup 1df1b57 removed hack that is no longer needed 27fe222 fixed doc tests for new uncompressed list format 24db0e9 changes to speed up buildnml for data models 602490f removed unused variable 7d498a4 quick hack to give env objects access to the comp_classes b70bc64 expanded get_value interface in entry_id to add an optional node argument f14d413 more updates and fixes for removing compression in namelist 7b6bf8e updates for performances and bugfixes 78697b6 Fix pnetcdf module for pgi on hobart. Update BHIST compset names. fc70a7f Merge pull request #960 from ESMCI/jgfouca/fix_tprof_setting_in_buildnml 1e68418 cleanup whitespace changes fbc515d fix indentation 861d956 fix issue with lookups 8eb87ed clean up components code 19b1871 Fix bug in setting up tprof namelist vals. e43ff82 Merge pull request #959 from billsacks/cism4km_new_grid 359c2eb Restored mysteriously disappearing return statement df3d603 Added --header and --no-header options 908781d Fixed bug with complex layouts 85e18ec Improved documentation and implemented options to change layouts fdf5c5d Fix machine config for edison. 1497546 Point to new glc -> ocn runoff mapping files 41234d8 Implemented pelayout tool for viewing PE layouts d44810b Point to new lnd <-> glc mapping files for redefined CISM 4km grid 9ae308e Merge pull request #952 from jedwards4b/minor_tuning 75a8e46 Fix pnetcdf module for pgi on hobart. Update BHIST compset names. 31361e3 Merge branch 'minor_tuning' of github.com:jedwards4b/cime into minor_tuning 9476917 update README 5292e9b more issues from laramie 4cfc084 add sort to xmlquery, fix a test d3a3d85 clean up Makefile and scripts_regression_tests d3d90ab Merge pull request #944 from ESMCI/mvertens/remove_clm40_compsets 195d71c Merge pull request #951 from ESMCI/jgfouca/fix_single_submit 271c92d Detect the NETCDFF_PATH environment variable in the makefile. If it exists, set the CMake arguments for it cadd8d5 Fix single submit. 9c99fe4 Allow for suite-specific test walltimes in ACME 518e5a2 Merge pull request #948 from jedwards4b/build_improvements 7ac1343 response to review be917a0 set sharedlibroot as subdirectory of outputroot (instead of testroot) e097f2c build gptl prior to mct 2494f7b Merge pull request #932 from jedwards4b/refactor_xml_compvars 2172903 removed clm40 compsets from allactive compsets and tests 13610bb Merge branch 'jgfouca/machine_files/redsky_updates' into master (PR #1193) f3feb78 Merge branch 'mt5555/homme/removeFVM' 7f8995e Update redsky configuration 56e8537 response to review 193219e fix pylint issues 50baad2 change DRV on comp_classes to CPL 3fdd621 fixes after rebase be1db99 pylint cleanup and testing fixes b32a3cf finish pio vars ffdb514 add more pio vars fe3f631 better approach fd9601c more cleanup 6df92f9 add PIO_TYPENAME, rearrange code 5e15389 add more fields 200a75a fix pylint issues e63d8c8 handle mpi-serial, cleanup 7669b43 NTASKS working be2f946 update changelog cb79f75 Merge pull request #941 from jedwards4b/alpha05b_fixes f3c871d add -v back, fix output of xmlquery for logicals 46470d6 Merge branch 'jgfouca/titan_env_fix' into master (PR #1175) 7f36442 Only do titan pgiacc fix for ACME 5df5855 logicals need to return string type a268a0d fix nag build issue d75c214 fix mpi-serial issue on yellowstone c87142e Merge pull request #939 from jedwards4b/fix_cmake_srt 340367b set default timer depth limit to 2 99264c9 cleanup b370b60 remove unused macro 90a486e ctest now calls scripts_regression_tests instead of unittest.main bce83f4 Changing pgi_acc to pgiacc in config_machines.xml b69a50f compare_test_results: Support ACME's $compiler/$name baseline scheme 7e800c3 Merge pull request #936 from ESMCI/mvertens/dlnd_nmlbugfix f2b6717 fixed typo 60baa24 changes for getting cesm prognostic components to work correctly with python buildnml, buildlib and new configure_xxx.py 7c696b5 Special case for titan and pgiacc c10ff81 Adjust default walltimes for sandia HPCs 88412af Merge pull request #930 from jedwards4b/xlmquery_refactor 79455a5 add valid_values and type f845fab fix indentation issue 0de957f fix indentation issue 9cbbc34 update ChangeLog, fix for cori-haswell 6840d9b Merge pull request #931 from ESMCI/jgfouca/use_umask_for_check_input 42676f9 Merge pull request #933 from ESMCI/mvertens/datm_nmlbugfix 5ec175b explicitly add pylint tests d7285f7 bug fixes that appeared in the datm_udpates PR 4a2a905 check_input_data: Use umask before svn export fb18a59 fix issue in scripts_regression_tests, breakdown tests by class for ctest in list_tests 5d6dcab rebase and resolve conflict f03b43e add full option 07df7a8 update xmlquery testing 0c3470e progress on env_batch variables aa5050e listall working 78b9ed6 fix get_groups 944bcea more progres 0d83047 add support for listall 3b817c9 add description option fdf9b58 rearranging code 731c093 Merge pull request #929 from ESMCI/jgfouca/fixes_to_J_TestCreateNewcase aeadaa5 Be much more clear about using cls vs self 1ce9d5e update ChangeLog f881c99 Merge pull request #928 from jedwards4b/clm_bld_fix eccb58d Merge pull request #923 from ESMCI/mvertens/datm_updates a01ac6a fix include paths 51fb758 fix clm shared bld issue 8173e4c Merge pull request #926 from ESMCI/jgfouca/minor_fix_for_acme_tests d49e7d9 Merge pull request #927 from ESMCI/jgfouca/fix_skybridge_env b651ae4 Fix hdf5 serial version on skybrdige e56f0d8 Fix bug in negation of test_suite for acme tests 753afa6 Update melvin gcc to 5.3.0 14c52ef Merge pull request #924 from ESMCI/jgfouca/fix_bless_test_test_for_cesm e5d0b4b bless_test_results: make namelist blessing compatible for both models 4edd850 Merge remote-tracking branch 'remotes/origin/mvertens/datm_updates' into mvertens/datm_updates 3b6a861 updated regular expression handling 5e05c06 Renaming Depends.titan.pgi_acc to Depends.titan.pgiacc b657765 Merge pull request #921 from billsacks/query_testlists_error ff4c081 fixed 5x5_amazon grid name 3010661 set domainfile to null if CPLHISTForcingForOcnIce mode 802ef25 Merge remote-tracking branch 'esmci/mvertens/datm_updates' into mvertens/datm_updates 4eaaefe Fix pgiacc environment for titan 69ce49a bless_test_results: hot fix to support acme baseline naming 38a3ce2 Hotfix for anvil SAVE_TIMING_DIR a92dd7c removed DEBUG comment 6244802 fixed bug for numa_IA grid 9eec70d refactored namelist_definition_datm.xml by using regular expressions for matches in nmlgen rather than exact matches 635df6d Merge pull request #919 from jedwards4b/clone_fix 72836f0 Merge pull request #920 from ESMCI/jgfouca/fix_bless_regr_test f1bddbc Fix for Q_TestBlessTestResults do not wait for namelist-only 5c932df Merge pull request #915 from ESMCI/mvertens/python_namelists 52131e8 Merge pull request #914 from ESMCI/remove_pesetuphist acadec7 Merge pull request #912 from ESMCI/starchive_bugfix 9f80be7 Merge pull request #918 from mnlevy1981/runoff/remove_src_mask 1120d0c Merge branch 'rljacob/cime/cime5-upgrade' (PR #1169) d592ba7 pylint cleanup 0e59da7 improve cleanup 43945f8 fix create_clone and add tests to scripts_regression_tests f3bd0ba runoff src mask = 1 globally 119d969 Change skybridge and redsky envs to be exact match to cime2 891fff6 fixed iradsw for GECO spinup cd09234 fixed issue #916 29341b8 added comment d8fc3b6 Give a meaningful error message when query_testlists can't find anything b07ec81 For titan, don't put numa_node on aprun for pgi 64f03b2 added T42 domain 3fe48c6 added T42 domain 85dc29a added T42 domain 9400ac4 removed PESetupHist backup directory a9abeba removed verbose output in create_namelists - this is a big cleanup in the output and makes it much more understandable, the output can be obtained in debug mode 1c49362 data components only output in debug mode - cleanup in output ad30dcd bug fixes for new grids specfication 2fe35ca Merge pull request #913 from ESMCI/remove_docs 23fe061 reverted to original buildnml scripts ba64359 removed doc directory that is not longer needed - since all documentation is now on esmci wiki 46213ff short term archiving bugfix 5817ede Merge pull request #909 from jedwards4b/laramie_port2 21ba5b9 Merge pull request #906 from ESMCI/jayeshkrishna/conflict-resolve-br/santos/quote-timing e28ecc4 Merge pull request #911 from gold2718/fixFCD 3f8b623 Fix for Depends with multiple spaces between filenames 8d0cc0f removed call to create_namelists for the case of tests 9a5203b cleaned up TestStatus.log and put in bug fixes for new pythonization of cesm buildnml for active components 3d6e665 put in capability to have unsorted namelists be written out 483efec updated xmlchange to head of master 80b0c86 changes needed for cice pythonization of buildlib and buildnml 9e17508 first set of fixes to address #826 a4c078f Update CIME5 config_grids w ocean cavities 8ba1236 Set CO2_PPMV value for ACME AV1C-04P2 compset 04d30bb Replace ERP_Ln3.ne30_oEC.A_WCYCL2000 with ERP_Ld3.ne30_oEC.A_WCYCL2000 d202c78 Revert "Switch to using several config_pes.xml files" e89ca40 Switch skybridge and redsky back to openmpi-1.6 9e0e29f Unshare sharedlibs, fix bug in machines.py ec5924e more laramie updates 3b25b50 Merge pull request #898 from jedwards4b/compilers1_fix 703dfcc Merge pull request #891 from fvitt/compsets_cime5.2.0-alpha.7 60669c1 Merge branch 'santos/quote-timing' into jayeshkrishna/conflict-resolve-br/santos/quote-timing 36fc024 Switch to using several config_pes.xml files 298963e update 3 config_pes files after testing 9fe9a76 fix name in config_compilers for acme 3bc12f0 fix Macros file name e0eb0eb force compilers version 2 for regression testing 90912e0 Merge branch 'rljacob/cime/cime5-upgrade' of github.com:ACME-Climate/ACME into rljacob/cime/cime5-upgrade d9d0147 removed print statements for debugging 7c24b95 removed print statement aa8e1ca Add entry for coupled cases on anvil in config_pes f5c3f15 Set up the ACME coupled config_pes.xml c6fa9da Make sure glc_do_dynglacier is true for MPASLI de4699e Update ChangeLog to correct original description of the problem 0095ff9 Merge pull request #828 from jedwards4b/config_build c088677 always code_check file if full path provided a1a46fe MP_MPILIB over defined c940582 updates for cori-knl d042b1c changes for cori-knl c925d41 fix include file name bec57d1 remove whitespace difference be40065 fix issue in mct configure 886720f update for NAG 0195917 save this change for another PR 7de9f18 rename corip1 cori-haswell 0414f47 update for theta d39d236 file cleanup f117402 rearrange some files a4e0e0c fix unit tests 999ca40 fix tests 450c6e3 merge build into compilers b450b10 move into CIME 44d1d2d improve configure program flow 311f78a mv build to BuildTools cc0b9ba restructuring code 364b3cc Revert "Cleanup duplicate PE layouts" 995ba58 Cleanup duplicate PE layouts 604f247 Prioritize machine matching over grid,compset,size in PE matching 9a20827 Replace strncpy and snprintf where applied to non-null-term. strings 3f14453 Update Mira compiler to the latest version 70b8252 Merge pull request #886 from ESMCI/jgfouca/minor_fix_to_bless_tests ae81376 Another minor naming change to provenance file 691cf5a Minor rename of showq file c616a69 Added numa node computation and creation of aprun options for Titan 66a1bad Replace execution place holder string with path; Titan/aprun specific 525788d Replaced aprun option with "aprun" variable, value computed in task_maker 27f716c Increase Anvil default stack size for threaded runs edd70a1 Add namelist capability to compare_test_results, add tests 0df8f4e Change NTHRDS_ESP default to 1 a7240d0 Remove PFS test 1aef408 Added option for printing mpirun command 0a74631 Make bless_test_results more robust by providing full path to create_test run_cmd 38635ee Merge pull request #885 from jedwards4b/xmlchange_div_by_zero 99baa5a prevent division by 0 ff23f9a Merge pull request #825 from ESMCI/ndk/machines/cori-haswell4 3c8ceaa Merge pull request #880 from jedwards4b/buildnml_fix 08cecc5 raise error if file is python bafc903 trap on perl buildnml f61a8c5 Correct pe layout for MPASLISIA case fce75f0 Merge pull request #879 from jedwards4b/buildnml_without_run_cmd 69748cb fix pylint issues, extend pylint coverage 6d63d47 convert buildnml scripts to callable modules d209769 load_source working 35f3822 first attempt e3a7623 ACME use driver_cpl config_pes for X,A,S cases 70ae92f Merge pull request #875 from jedwards4b/fix_clone_and_format_issues e6c06fa fix an issue with cloning and format 7e155a5 Move long-running atm test to acme_integration 8f2b190 Debug, check for existing directory 2862060 Avoid misspelling, define filename once 9aea3c0 Copy additional file into caseroot/Tools if exists c55e1f8 Give problems 5 hours on skybridge 391c215 Merge pull request #846 from jedwards4b/module_load_error_message 561ce10 Add intel support to climate fe792b7 fix tab issue again ff0e7cf make sure we get errors from module load 9ed873f Merge pull request #844 from jedwards4b/debug_attribute_fix 3ec818c Merge pull request #833 from mvertens/klindsay_spinup3 cc16b84 the comma was causing debug to be set incorrectly 909565d Fixes DATM_CLMNCEP_YR_END for 20TR compset a420cc6 Merge pull request #840 from jtruesdal/cime_plus_marblmod 82cc763 Change DRV_THREADING default to TRUE cc1d036 Fix typo in provenance.py 365eee1 Set SAVE_TIMING default to TRUE ab48984 Add timing variables and update defaults 37889ec remove cvmixlib creation now done in pop 13ba9e4 update ChangeLog 826b0f7 Merge pull request #831 from jedwards4b/remove_ccsm_baseline ea774b7 Merge pull request #836 from jedwards4b/pylint_and_xmlchange_fixes f6c34b0 Merge pull request #835 from fischer-ncar/stampede_and_testfix 7991922 Update support for stampede. Change ERR_N3 tests to NCK_N3 tests. Removed blank spaces from testlist_allactive.xml. 57d16eb report errors if xmlchange or xmlquery is given bad input 31c7d2f Fix log reporting for sharedlib builds 0452cd6 add error check in xmlquery c9e9359 add an error message if var not found 5575267 fixed bug in wrong setting of prescribed aerosols for G compsets ef4feb2 fixed problem with rebasing error 1a3ac33 Merge pull request #832 from mvertens/ww3fixes cd64444 changes need for getting ww3 to have branch capabilities f3e1d1e Adjustments to building/running on KNL 7755f64 one more e40fa5a replace CCSM_BASELINE with BASELINE_ROOT 69ca9cf take out the --cpu_binding=cores flag to srun for now, while we try to get the "correct" value to the -c arg of srun. Currently setting -c 2 for cori-haswell and -c 4 for cori-knl. 37e6e14 Changes to get tests building/running with cori-haswell. Some changes to modules for edison. Some changes to build/run on cori-knl e767f7b Another HOMME fix acc888c Fix CCSM_BASELINE again 3074eea Change homme to use BASELINE_ROOT instead of CCSM_BASELINE 4892641 Changes to build/run on cori-haswell. Stubs got cori-knl. 46e8f1d Merge pull request #813 from gold2718/addTool 11093f2 Renamed file to utils directory and added a main function 2cc6268 More updates for 20TR compset b4783ba added files back in that were mistakenly deleted 52d6b9d Make infra work with ACME-style testmods 50387fb fixed more ocean spinup issues 13b349c put in latest changes from Keith - particularly to get drof and datm to set domain to stream for CPLHISTForcingForOcnIce f145731 changes needed for geco test for Keith 579e193 first test using changes now runs e331d89 changes for creating forcing files for ocn/ice spinup a2ce180 reverted prep_ocn_mod.F90 to esmci/master - changes not relevant 672d2cb first pass for putting in klindsay's changes 62fb6dd Make clm not a sharedlib for ACME 26534bd Keep MPAS SCRATCH files open during init, run and finalization 4c6b57b Merge pull request #812 from ESMCI/mfdeakin-sandia/SystemTestsCompareTwo/NOC f35d4b7 Merge pull request #823 from ESMCI/jgfouca/fix_bless_tests_results 64dd303 bless_test_results: Fix a couple mistakes in interactive code a51ebd1 Fix mistake in create_test 18b8796 remove fvm code from I/O routines 5b86c49 Merge pull request #814 from jedwards4b/config_grids2 da9ef7f Merge branch 'jgfouca/copy_balwinder_constance' (PR #820) 5bff500 Correct layout for titan and low-res wcycl 21393f8 Merge pull request #809 from ESMCI/ndk/machines/cori-haswell 2cf2160 Merge pull request #808 from ESMCI/sarich/fix-config_pes_converter 746d9df Updates machine files for PNNL's constance machine for ACME d95f3af fix that darn tab 920edef Merge pull request #817 from ESMCI/singhbalwinder/machines/constance-mach-files-maint-cime5.1 b472bc3 Updates machine files for PNNL's constance machine for ACME f791a8e response to review, removed RUN STATUS and replaced testsavetimings 6398013 remove debug comment, fix tab f9675c1 cleanup pylint issues 72b34fc fixed short term archiving bug for multiple instances 34d8c85 only check schema if version > 1.0 b5cba8f fixed problems for TG compsets 039f4df uncomment mapping file ed2dc6e rearrange for more code reuse 3f0c546 domain path should only be used if provided 381bf66 make schema check generic 5b97fda fix indents and xml spaces 24e4356 code cleanup ccbfee9 rearrange a little d8cbaff new grids schema 34382c1 Revert changes to this file back to original per request by Rob Jacob f4f3b94 New tool to find circular dependencies in a Depends file. b94d051 Remove NOC test d4a0c7e Restore auto-addition of compiler to baseline_name a5b523b Temporary revert of env changes on melvin and climate 685a84c Merge pull request #811 from ESMCI/jgfouca/skip_single_submit_unless_skybridge c4226a7 Skip single-submit test unless on skybridge 18102e7 Fix env settings for sandia climate machine eda093f Add back support for 20TR time period 5794829 Add support for compsets with 20TR in datm 98bad8c Add help string to allactive config_compsets adf1e26 Remove a duplicate entry from config_pesall.xmo 03b8302 Correct CCSM_CO2_PPMV setting for waccm and cam-chem compsets 6a74fa3 Change CMPASO_NYF compset name back 2245f67 Allow for building/running on cori-haswell (basically same as corip1, but renaming) and some stubs for cori-knl. 34aa9fa Update config_pesall.xml with missing configs. 6a1f94c Update config_components for ACME bbe10e1 clean up code a little 4f1c95c change cime4 references to cime5 ab64f25 config_pes_converter automatically fixes bad xml comments from cime2 file 5d4e743 Fix 2 mpasli items in config files 27950c1 Change shr_orb_cosz calculation back to cime2 f154398 Change compset names in tests to match new ones 9264e62 Merge pull request #799 from jedwards4b/make_dependancy_fix 7656437 Merge pull request #751 from ESMCI/jayeshkrishna/update_anvil_max_tasks_36 1af4177 Merge remote-tracking branch 'upstream/master' 6b6ac15 fix an issue with clm bld dependancies 864c77b Remove unsupported waccm and chemistry compsets and modify test list accordingly 4aff1cc update ChangeLog 151b965 Merge pull request #795 from jedwards4b/laramie_update3 d70623a pnetcdf module still broken 26ceb2c readd pnetcdf d0f417c pnetcdf module fixed 36d218c Merge pull request #755 from ESMCI/jgfouca/handle_timeout_in_teststatus 20f2ca2 Merge pull request #777 from bertinia/st_archive a38b0f4 update for PR #777 to more completely check restart files and remove doc/images 221ee7a remove doc/images a336573 Merge pull request #788 from billsacks/compare_test_results_maintain_comment 19bdc1e Merge pull request #790 from jedwards4b/laramie_update2 b975026 add images for wiki documentation 40540cb move logger message outside of try block for case_st_archive.py add image file subdirectory to docs for wiki documentation. a4b82e3 updates for laramie 180ee86 Print the comment from comparison if it's a brief one-liner 125d819 Delete nav-cesm-ug.png 7c362ba Delete cplug-02.1-figx1.jpg b85a8c8 Add CIME Users Guide image 4bd6f83 Add image file for Coupler User's Guide documentation 0ead034 updates for laramie port 0f7f1fe make logger output debug instead of warn Fixes #783 d1dd00d Be sure to terminate children upon receiving a signal 01fa586 Merge pull request #780 from fischer-ncar/stampede_update 091a405 Updates to config_machines.xml to fix builds on stampede 47978b1 Merge remote-tracking branch 'upstream/master' 00ad619 Merge pull request #778 from jedwards4b/erio_fix b87c52a fix erio test,and a minor format change for cray compiler 45bdde9 Merge pull request #775 from jedwards4b/cori_port2a 10d6383 fix needed for erio test 8a81b1b port to corip1 c595180 Handle additional signals, better exception message 952ce71 port to cori 8e075c9 rework to support derived variables a56fd3c Merge pull request #764 from jedwards4b/buildexe_fix 48d0d60 Merge pull request #769 from jedwards4b/pio_netcdf4_detect_fix 9814832 detect netcdf4 correctly in pio1 f60e3cd straighten out postional argument mess 081dab4 Merge pull request #765 from jedwards4b/caseroot_file_fix c81f4a6 fix mixed up positional args 6e9eb60 Merge pull request #762 from billsacks/rename_xmlchange_cmnds 61f4ba0 only put caseroot file in bld and run dirs 8c8c457 build exe in correct location fc91c86 Merge pull request #758 from mnlevy1981/user_mod_fix4 825fb0d Add actual file name to log message b9aec4c Add log message about deprecated xmlchange_cmnds 68125e2 Merge pull request #760 from bertinia/st_archive 0799a66 minor bug fix to restart pattern match for datm suffix 044e3ab Combine shell_commands and xmlchange_cmnds 9a4e934 Rename xmlchange_cmnds files to shell_commands 20605f6 Add comment explaining why loop is reversed 84c9cbe Merge pull request #752 from billsacks/cism2_default 78b70d7 Merge pull request #730 from ESMCI/azamat/machines/theta 2f6b396 Merge pull request #759 from ESMCI/jgfouca/check_scripts_using_GMAKE 2914889 minor bug fix to restart pattern match for datm suffix 19e3efb Ensure all of CIME is using the GMAKE case setting 5ef1543 Another possible fix to #756 e78ae82 Better handling of timeouts for case.test c33b8e1 Update anvil's MAX_TASKS/PES_PER_NODE to occupy all cores 4a50948 Merge pull request #748 from billsacks/compare_test_results_output 9f2c652 Return a non-zero error code if there are diffs 1b4c722 update Changelog 02e5635 Merge pull request #749 from fischer-ncar/testreporter_fixes 31f578c Bug fixes for test reporter and update wall clocks for long tests. 8eb9544 Merge remote-tracking branch 'upstream/master' into testreporter_fixes 98e689f Bug fixes for test reporter and update wall clocks for long tests. 82ab32a Merge pull request #747 from ESMCI/jgfouca/wait_for_create_tests 8a49eb7 Merge pull request #746 from jedwards4b/laramie_update 64115e1 Merge pull request #725 from jedwards4b/cpl_rest_read_fix 77a7a17 add a little documentation 2c1f3fe need to add MPI_SHEPHERD=true for fake tests on laramie 740f3aa Fix scripts_regression_tests for new output format 470ca7d remove EXEROOT and BLDDIR from machine definition e1c1883 Add some documentation 65693e6 Convert CESMSCRATCHROOT to CIME_OUTPUT_ROOT caf6a05 Build-in support for waiting for create_test d4c9811 Allow optional output_suffix in summarize_cprnc_diffs 0fa63a9 Merge pull request #745 from ESMCI/jgfouca/erio_test 9ece311 Add new ERIO test type. f9d196e Put detailed comments in log file rather than stdout 17dd09d Give cprnc.out files a unique name 8eb7ae3 Add baseline_root to the log file 783edab correct for total nodes < 1 488c079 Change reporting for compare_test_results c6e1b35 Always exit with a 0 status from compare_test_results 90f1b9a continue work on port 3acee39 add aprun fix for using less than full node of tasks 099f028 CESM machine updates for Theta e9e11ca If TOTALPES is less than PES_PER_NODE, set PES_PER_NODE to TOTALPES 77b0ad9 Initial port to ALCF Theta machine df92be7 Merge pull request #743 from ESMCI/jgfouca/fix_regr_test 6f00066 Merge pull request #735 from billsacks/copy_user_nl_to_multiinst c2e85e1 Fix regression namelist regression test ecc022d remove unused variables 94fcfa2 Merge pull request #739 from jedwards4b/add_output_root_option 24bdc90 Merge pull request #742 from jedwards4b/pea_test_fix f0ec12f Just apply user_mods in create_newcase; remove unneeded multiinst code ff977d3 Merge pull request #736 from jedwards4b/build_improvements 3dbe959 update for acme 8410e95 response to review 469b769 move case.load_env up in case.setup, make sure pnetcdf is not loaded when building mpi-serial builds 645ebba Merge branch 'master' into copy_user_nl_to_multiinst e3431e0 Merge pull request #727 from jedwards4b/user_mod_fix2 912caed add CASEROOT file to bld and run directories 2ef4bc1 update user defined template for cesm bda3c01 further cleanup 64eded0 rename CESMSCRATCHROOT to CIME_OUTPUT_ROOT, add cli 6edc721 fix bad argument to clm build ed44be8 Merge pull request #623 from ESMCI/jayeshkrishna/machinefiles/add_Anvil 9d855d1 improve output on build errors 9d85e90 Revert "remove testmods application from case.setup, remove check for duplication of entries in user_nl files" 0f31ddf Copy user_nl_foo from the case directory to the multi-instance version de38a26 remove testmods application from case.setup, remove check for duplication of entries in user_nl files df524a6 fix pylint issue 7bf81e8 try again 67eefee get unique list of dirs 0732c4c update ChangeLog f210c86 Merge pull request #733 from jedwards4b/xmlchange_revert a0d1557 backout change to xmlchange (needed by external components) 213c37c Change allactive compsets to use CISM2 rather than CISM1 by default 4ecde62 Do not turn on cpl hist output in CISM cases f4acb96 Merge pull request #729 from ESMCI/jgfouca/fix_namelist_cmpgen a9e887c Merge pull request #722 from ESMCI/jgfouca/misc_changes 09d761f Merge pull request #731 from billsacks/fix_eri_and_erp 51192b7 Merge pull request #709 from ESMCI/jgfouca/fix_anl_workstations 8efc834 hardcode pnetcdf path for now b25c7fe Don't assume . is in PATH. a79cf81 cpl restart read should only happen on cpl tasks 80253cd Ensure that ERP halves tasks and threads for all components 43c761d Remove BUILD_THREADED for ERI and DAE tests c55e505 trim include directories list so that each is only added once ce3572f Change sleep in cleanup. Minor fixes to code_checker so it can run standalone 6098bde Merge pull request #721 from jedwards4b/lt_archive_queue 0f1bbc1 change lt_archive queue to caldera, add sleep in scripts_regression_tests 6ecb119 update changelog 4c406d8 Merge pull request #717 from jedwards4b/shr_scam_fix 5c52d8b update documentation 216d864 Merge pull request #711 from jedwards4b/erp_test_fix da1ce6f Merge pull request #715 from billsacks/indent_cs_status cb231c5 Merge pull request #713 from jedwards4b/user_mods_include_fix ed27808 Merge pull request #680 from billsacks/summarize_cprnc_suffix edf6ac3 fixes issue #704 5fc549d Merge pull request #716 from ESMCI/revert-705-scam_fix 5fb3265 Revert "fix for issue #704" 0d7f609 restructure to reduce code 9557764 Add indentation in cs.status output 61e3c47 response to review 83939b7 fix issue with recursive include of user mods 141e28a Merge pull request #705 from jedwards4b/scam_fix f31677b erp test needs create_namelist in case.setup 753c42e create_namelists when case.setup is run in testmode 27722c8 Change env settings from use of bash to use of environment b609fcc resolve merge conflict 43ef805 Merge branch 'pylint_cleanup_Tools' d53d9b8 move python path settings into pylint so that code_checker can be run without mods dc01576 response to review 16e1c04 Merge pull request #707 from jedwards4b/env_mach_specific_bug_fix 3569a19 more cleanup b6a2808 xmlchange cleanup f29ab4b fix indentation error af9f697 more cleanup b111a7e cleanup of Tools directory 883e199 more cleanup b7761ea begin cleanup of Tools 2d129ba Merge branch 'jgfouca/changes_to_env_mach_spec_env' (PR #701) 114f39b Merge branch 'master' into jgfouca/changes_to_env_mach_spec_env 849dfce fix for issue #704 d7acfef update ChangeLog cf82013 Merge pull request #697 from jedwards4b/sharedlib_build_installs_to_case 76dc62c fix rebase issue dd9e936 remove unneeded copy c7a46f6 need to create include directory 684e846 change copy method for mpi-serial files 0f69fa1 fix issues with mpi-serial build and install f1085b0 fix merge issue e6ffa16 add comment on sharedpath 52401ae update acme side 83ea569 install sharedlib builds to individual case to avoid conflict d766617 Merge pull request #689 from ESMCI/jgfouca/optimize_preview_namelists db1d397 Changes to handling of environment_variables f6e3e14 Merge pull request #699 from jedwards4b/code_checker_fix 5342abf fix issue with pylint f7b98c4 Merge branch 'master' into jgfouca/optimize_preview_namelists f317808 Merge pull request #696 from jedwards4b/jgfouca/optimize_preview_namelists d6a27fa need to create_namelists in build e9202d5 Merge pull request #693 from jedwards4b/pio_build_update bab357e Merge pull request #694 from cacraigucar/geotrace_cime eff82fc reorganize 2825d34 response to review 39110ea add limited buildnml back to build.py 3ed3929 add new buildlib.pio script to acme 04b6f10 fix issue with unresolved var in env settings 7665b99 Changes to support DATM in isotopes 435de61 Merge pull request #681 from billsacks/irrig_as_fraction_cime5 080af4c mv buildlib.pio to python, add smarts c3e3974 Fix preview_namelists, add test for preview_namelists 52c3cac Change do_namelists to cmpgen_namelists, add missing tool 94bb46a Major refactor to handling of namelists 5ffd940 Merge pull request #688 from jedwards4b/pio_workaround_removed c3e73fa remove workaround, now done in scripts 57a7a7f Merge pull request #686 from mnlevy1981/mlevy/bugfix/runoff-update-take2 071f341 Group similar calls together a8cb7d2 Bugfix for failing C compset DEBUG tests 943199b Merge remote-tracking branch 'cesmdev/master' into geotrace_cime 1239bd2 Merge pull request #683 from billsacks/always_print_provenance 04c4afe add extra newline 0cd148d Print provenance info from main function, rather than in a 'test' 001fa3d Merge pull request #682 from billsacks/print_cime_model df1fcac Merge pull request #679 from billsacks/fix_fortran_unit_tests 0a13ef4 In addition to printing the commit, print the current cime_model 9d24c28 add warning for version not found 8d68524 fix issue causing fail when not in CIME_MODEL structure 23acbc7 Get fortran unit tests passing 8a2953a Delete trailing whitespace b06306e summarize_cprnc_diffs uses .nc.cprnc.out rather than .base.cprnc.out d3b2cfb Merge pull request #678 from ESMCI/jgfouca/make_regr_tests_more_portable 801533e Make all cime test suites use P1 instead of mpi-serial. f90b4bc update ChangeLog 5f9299d Merge branch 'jgfouca/make_pea_work_without_mpi_serial' (PR #647) edb5a25 Merge pull request #640 from mvertens/build-namelist2 41b0e92 fix issue in test 405663f merge to head of master, resolve conflicts 7a8a247 Merge pull request #677 from jedwards4b/set_walltime_for_queue_option 0065904 Merge pull request #676 from jedwards4b/MODEL_VERSION_IN_CASE 14447b4 fix pylint issue e7e3029 fix issue 675 0f8596b clean up xml version code 5edbe51 clean up xml version code 6e1c6d1 move this to case configure 9994647 Merge pull request #674 from ESMCI/jgfouca/improve_test_status_documentation 0822fed add host model version to case information df53174 Improve test status documentation e65a578 Merge pull request #673 from ESMCI/jgfouca/create_test_enhancements 68567bf Enhance use_existing capability for create_test, add test 7fbd5a2 Merge remote-tracking branch 'jedwards/build-namelist2' into build-namelist2 2ca20b1 Initial change to use SystemTestsCompareTwo for NOC tests 4dab377 remove obsolete documentation 90884a0 fix issues in acme config_grids.xml file 2e26413 response to self review 6612ed8 Merge remote-tracking branch 'jedwards/build-namelist2' into build-namelist2 f785358 Merge pull request #670 from ESMCI/jgfouca/code_checker_too_verbose 3e7b796 Merge pull request #652 from fischer-ncar/testlist_wallclock 45cad1a expand pylint testing and fix issues 4899ac8 code_checker: don't be so verbose in debug mode 3fffa7f more pylint cleanup de8ce42 Merge pull request #668 from ESMCI/jgfouca/remove_support_for_cimeroot_env_var 9028e81 Add cimeroot env setting back to standard_script_setup 580e552 out of date, unit tests are now in scripts deaf2c5 fixes found in testing xml schema 951a460 Remove CIMEROOT from cesm batch.xml a21286b Remove support for user setting CIMEROOT. 9af04a2 remove tabs from data model namelist_definition files a87817a fix issue with single_column setting b6789d4 Merge pull request #664 from ESMCI/jayeshkrishna/machinefiles/anlworkstation_lib_ver_updates 2e2feb6 remove drydep_list valid_values, add better message for invalid values 54d7be0 port changes to pio2 ce183a7 Merge remote-tracking branch 'jedwards/build-namelist2' into build-namelist2 eb6ef04 Merge pull request #661 from billsacks/test_status_cleanup f1b7e44 Merge pull request #660 from ESMCI/mfdeakin-sandia/SystemTestsCompareTwo/PEM 57a6789 Remove unneeded imports, fixes pylint issues 9ccec99 Remove _common_setup from pem by moving variables to config_tests.xml 681e6b4 do not fail if drydep_inparm not found 0d6e22e fix drv_flds_in, clean up 2cee122 Minor cleanup and documentation 105445b Move options to cime_config/config_tests.xml b0d48e5 Merge pull request #658 from jedwards4b/pbs_problem_fix a8b9bcc Make certain to use integer division for computing the new number of tasks 44d6a17 Remove unneeded import c724e3b Remove second case_setup call left in 0329207 Remove _pem_first_phase and _pem_second_phase; use SystemTestsCompareTwo instead Move use of case_setup with reset=True to PEM 43f1480 Fixed issue with HIST_OPTION and HIST_N not being set correctly due to dependency on unset environment variables 7ac9c1a Merge remote-tracking branch 'jedwards/build-namelist2' into build-namelist2 9991c86 fix version check info 58644f0 Start of conversion of PEM tests to SystemTestsCompareTwo Currently only sets up the environment files correctly (I'm in the process of verifying this, but a diff of) system_tests_compare_two now resets the setup for case 2 after it's been setup; this allows case 2 to modify env_mach_pes fb9afe4 some pbs systems want the directives first 471aa3c cleanup pylint issues 82fd542 works with A case e28f698 git rid of defaults d2408d6 removed namelist-defaults object 1a2e8a7 merge to build-namelist2 67a381d driver buildnml working 9a18528 cleanup namelist_definition d8f7322 cleanup namelist_definition d81ea0d change modify_in_xml 8f4d479 split entry_id schema for namelist xml validation 3082912 Merge pull request #654 from jedwards4b/thread_count_fix 5c383de Update wallclocks in testlist_allactive.xml 8c9c2d3 Merge remote-tracking branch 'upstream/master' 880ae14 Merge pull request #648 from ESMCI/jgfouca/improve_compare_test_status_entries 51f2b75 fix problem getting thread_count 0776377 Merge pull request #649 from jedwards4b/get_values_rename a448815 fixed attributes by making atm_grid lower case 7645def removed char* references in namelist_definition_xxx.xml files dfadcf3 progress 2ccd7ee changes to schema for all namelist definition files af6263c fixed bug for AIAF 721ec62 bug fixes 6c9f213 incorporated more streamlined approached for adding defaults via scanning the namelist_definition file for all entries and automatically adding them e3ef21a now looping over all possible default values in namelist_definition_drv.xml - significantly shortened driver buildnml cacafc1 fixed doctest issue 322e01b fixed more bugs necessary to run prealpha and prebeta aux tests e11dac7 updates to fix numerous bugs 734d748 updates to fix numerous bugs dd12c06 added new required method get_case_root d47676c incorporated changes to have all build-namelist occur in python for driver and all data models 5c37c1f apply get_values to COMP_CLASSES xml variable e62f89e rename get_values to get_full_records 82a0e2b fixed attributes by making atm_grid lower case 2ff833f Separate baseline and non-baseline compare phases 68c19a3 removed char* references in namelist_definition_xxx.xml files 2a73760 PEA should not always fail on machines without mpi-serial 82ba881 Merge remote-tracking branch 'jedwards/build-namelist3' into build-namelist3 1de7d37 progress ce63e7a Merge pull request #645 from jedwards4b/xsd_improved_format 62374e8 Merge pull request #644 from ESMCI/jgfouca/internal_diff_fail b1022d1 Ensure that internal (non-baseline) test diffs cause the test to FAIL da6a246 improved format for entry_id schema file 42c726a changes to schema for all namelist definition files d973cf2 Merge pull request #642 from ESMCI/jgfouca/improve_test_sched_msg f5ed87d Improve test_scheduler runphase message for batch systems 67e8b38 Merge pull request #641 from jedwards4b/add_xsd_and_test_xml 23a8cf5 Merge pull request #639 from ESMCI/jgfouca/pend_refactor fe767fb Change TEST_PENDING_STATUS to TEST_PEND_STATUS d794942 change log messages to debug e3344a1 all config_component.xml files now validate f63b831 fixed bug for AIAF 8cb1f9b bug fixes 2fc0952 Refactor TestStatus 692e957 Merge pull request #637 from billsacks/query_testlists_show_options_v2 016b356 add and test schema for config_component xml files 275f21d incorporated more streamlined approached for adding defaults via scanning the namelist_definition file for all entries and automatically adding them 77b9ad6 Align comments and options better 49d0a5c Show comment and (optionally) options in query_testlists 2f8fc63 resolve merge conflict 38fc267 change testlist format to match ad90d5a rework options in test data hash, move machine independent options out one level 18b2a44 remove debug stateements 8e415b6 correction to option path 42cc67f fix issue with options level 8c6363e response to review 56b6436 undo unintended change e86b409 undo testing change 13f8a90 add memleak_tolerance variable for tests b80e839 Merge pull request #634 from billsacks/list_tests aa3d539 Merge branch 'master' of github.com:ESMCI/cime 019f523 Merge pull request #636 from ESMCI/jgfouca/update_sandia_envs f397f1a Fix pylint issues 3bd480a Update sandia machines to use SEMS smart modules 094f438 Merge pull request #635 from jedwards4b/cobalt_walltimemax_fix 3b64f3a Merge branch 'master' of github.com:ESMCI/cime edecd05 Merge pull request #619 from jedwards4b/cprnc_cmake_update bc65a81 Merge pull request #633 from jedwards4b/create_test_fix fa05f41 response to review d0b3b45 fix walltime max specification for mira/cetus b58cfd4 Merge branch 'master' of github.com:ESMCI/cime 7296701 now looping over all possible default values in namelist_definition_drv.xml - significantly shortened driver buildnml 91cc6b6 Merge pull request #632 from Katetc/master df5a955 add INCOMPLETE_PHASE e98556f fixed doctest issue 218f1b0 st_archive should use config_files.xml additional sanity check for CIMEROOT 858c466 Merge commit '45c1c327749d755ec9ded868a5e2ecf688949f31' into list_tests ef47d25 Add --list option to query_testlists 19c4e62 remove incorrect comment 8ab062b Properly include extra_args in test of query_testlists eb706b9 Add --count option to query_testlists b244dce More fixes for spaces in compiler names a7275e3 fixed more bugs necessary to run prealpha and prebeta aux tests 41a5a8a Update to fix errors about not enough comp tasks for io tasks 60160ef Add a smoke integration test for query_testlists 2640468 Merge pull request #1 from ESMCI/master 674a0d1 remove logic to resolve from env 363e013 warn if variable is resolved from env 8365444 Merge pull request #597 from billsacks/archive_cism_initial_hist f7d80da Minor cleanup 0ecdd23 Get logger set up correctly e74e0ab fix logic of env logicals 0c33bc0 cleanup erp test for nag 45c1c32 Merge pull request #622 from ESMCI/jgfouca/pylint_fixes_for_hist_utils bfce69c fix usage error in create_test and threading issue in erp c21f36c Always print category c954f67 First cut at query_testlists e67c783 Fix typo in test list 8832b6d updates to fix numerous bugs ab0db13 updates to fix numerous bugs 2189236 added new required method get_case_root 435bcc6 incorporated changes to have all build-namelist occur in python for driver and all data models 8d04fa4 Merge branch 'master' of github.com:ESMCI/cime 627c5d5 Merge pull request #621 from ESMCI/agsalin/fix_pes_mpaslialb_redsky 1728e2a Merge pull request #617 from ESMCI/jayeshkrishna/add_walltime_for_blues 3633dcf Minor pylint fixes for hist_utils.py 0e3343f machines: remove penn as separate machine 64a2d82 allows cprnc to build with cmake 48e815f Add walltimemax for blues 562cd13 Merge branch 'master' of github.com:ESMCI/cime f63e863 Merge pull request #613 from jedwards4b/fix-perms-and-names 0483c98 chmod files in baseline directory, modify test names 68b6111 acme: pes layout fix for MPASLIALB test on redsky 2dd8e67 fix permissions on baseline files and testnames 9b6a075 Add a comment b738725 Avoid crash with rof_present false 57dcd28 Fix typo 89b176d Avoid trying to handle the irrigation field in ACME 82b6d5d Merge pull request #607 from jedwards4b/gen_domain_build_fix f698a6b fix DOPT assignment 8d34e1c fix issues with gen_domain build process c6f1f78 Merge pull request #605 from jedwards4b/thread_fix_laramie_updates 1d7935e Merge remote-tracking branch 'esmci/master' into irrig_as_fraction_cime5 5d8e408 fix threading issue in generating batch, update laramie port 6f01b43 fix threading issue in generating batch, update laramie port 3400b6b Merge branch 'master' of github.com:ESMCI/cime d321e4b Merge pull request #603 from fischer-ncar/fix_missing_baseline_comment 279f178 Fix bug in comment when baselines are missing 3d22d6d Remove comment 0bfac21 Set volr_r to 0 where it is < 0 fda5e34 Extract irrigation mapping routine to its own module, add unit test 537a47a Remap volr from rof to lnd when it's needed d15e835 Add some comments fca7426 Rework comments and variable names 721aaa5 Add a unit test 7b3fcaf Changes from Sean Swenson 6079ba1 Fix list of fields that are remapped a7cb297 Fix compilation error 6656f91 Handle zero or negative volr_l 302805b Convert irrigation fraction back to a flux before sending to ROF f72b296 Add a unit test f349bf8 Fix compilation error d2a8698 Initial implementation of mapping irrigation as fraction of volr 10a1759 Changes from Sean Swenson 49448e6 Merge branch 'master' of github.com:ESMCI/cime 3b899f9 Update name as per Sean to a flux from a state 185b2d7 Add Sl_frac_irrig and Flrr_irrig b29bbb3 Merge remote-tracking branch 'upstream/master' into fix_missing_baseline_comment 626c588 Merge pull request #602 from ESMCI/jgfouca/skybridge_fixes e1f39b5 Merge remote-tracking branch 'upstream/master' 4757c28 Add walltimemax to skybridge and redsky fa8f25b Merge pull request #596 from billsacks/hist_utils_rename_move_to_copy de0cee3 Rename 'move' to 'copy' in hist_utils db03e89 Add new history file extension for cism 31b7195 Merge branch 'master' of github.com:CESM-Development/cime dff36bb update time format for mira d953ad9 Merge branch 'master' of github.com:ESMCI/cime 14f0b84 resolve merge conflict 6f66974 minor changes for machine mira and compiler nag 469dec3 Merge pull request #595 from Katetc/master b5aa722 Merge pull request #590 from jedwards4b/eri_hybrid_fix ec296bd Merge pull request #593 from ESMCI/jgfouca/minor_fix_for_test_status ca97c7c Minor fix to repair unit tests 6e44d7e Merge pull request #591 from jedwards4b/laramie_update_rasm_merge_fix 4d0d3d2 response to comment e3a2eed response to comment cd9b7bf redo rand generator 76277f5 fix error introduced in rasm merge, update laramie port 973749d response to review b349a1d fix pylint issue 15d0db0 fix eri for hybrid case, add random int to testid 9043b4c fix so that an ERI test works when the compset is hybrid 185071b Merge pull request #567 from ESMCI/jgfouca/test_report_sha e6d5123 Merge branch 'jedwards4b-rasm_fix' 4705eb3 merge rasm changes c381d48 Merge remote-tracking branch 'upstream/master' f55da30 Merge pull request #577 from fischer-ncar/cs_status_output_updates 4f36761 Update PIO2 external to commit 17da3226928... from Apr 15 2016 071a8da Merge pull request #587 from jedwards4b/memleak_adjustment 0bcfacf Merge pull request #559 from jedwards4b/laramie_port 5ff5812 ignore final cpl mem entry in memleak test f89d550 Blank space cleanup c45ed58 Lines should be wrapped at about 72 characters. ] Merge remote-tracking branch 'upstream/master' into cs_status_output_updates 0a90543 Updates to test_status and hist_utils to address comments. 51add77 Merge pull request #578 from jedwards4b/TaskMaker_cleanup 5017e36 Merge pull request #584 from mvertens/budgets_bugfix 0fada52 update for bluewaters ceb81b4 remove debug code 723ae43 remove old cost estimate code dd6eaf1 more cleanup e16be6e fixes for slurm a897ade fixes for pbs 2ef9da5 remove redundant vars, safer math 2f86218 remove taskmaker from env_batch eb7d0c9 Updates to cs.status outputs e5a65d1 Updates to for cs.status outputs 08fd0cc Merge remote-tracking branch 'upstream/master' 41eb918 pylint cleanup 0588493 remove unused code fcc5802 remove TaskMaker and Machines from case_run ea5b990 Merge pull request #555 from gold2718/DAtest b09998b Merge pull request #575 from jedwards4b/cesm_xml_args_fix f1a1425 if not xml based testing and compiler not specified use default a45cdb7 do not force compiler option for cesm xml tests 55d7ca3 Merge pull request #570 from fischer-ncar/cs_status_testname_comment 3bf7aab Fix indenting, and switch print to logging.info 09488ef Merge pull request #571 from jedwards4b/check_input_data_fix c523053 Add testname and comment to the output of cs_status 1c056c5 Merge remote-tracking branch 'upstream/master' 53caf38 Merge branch 'master' of github.com:ESMCI/cime b8f7518 no pnetcdf available on laramie yet 77ab554 Merge branch 'master' of github.com:ESMCI/cime aca6996 mpi-serial fix d060bfb fix batch issues 30cf67c updates for laramie port 09331aa initial laramie port 73d965e Double dash not allowed in an XML comment fb52f2f Restore original ssh cmd line b2ad047 removed some extra entries that I made to the acme version of config_grids bc7148a Fixed comment about data assimilation test type 8f58836 Added a new test for data assimilation and added new DA params 45ed7c8 bug fixes for acme version of rof2ocn liq and ice 9e5a757 changes to allow separate maps for rof2ocn liq and ice. 94f30dd Merge branch 'master' of github.com:CESM-Development/cime 1aa0218 Merge pull request #476 from apcraig/rasmbudgetfix b2e06e2 update coupler budget calculation to correct an error when using RASM_OPTION1 and RASM_OPTION2. This change is bit-for-bit. bd7a6a4 Add quotation marks to timing entry names. 17e0c07 Fix PIO error in CICE git-subtree-dir: cime git-subtree-split: 34d9a6d161ae5c83c913f9a60147c58cb51d9bbd --- .gitignore | 1 + CMakeLists.txt | 17 +- ChangeLog | 1553 +- ChangeLog_template | 4 +- README.unit_testing | 16 +- .../acme/allactive/config_compsets.xml | 37 + .../acme/allactive/config_compsets.xml.cime2 | 15 +- cime_config/acme/allactive/config_pes.xml | 3742 ++--- cime_config/acme/allactive/config_pesall.xml | 967 +- .../{xmlchange_cmnds => shell_commands} | 0 .../{xmlchange_cmnds => shell_commands} | 0 cime_config/acme/config_archive.xml | 5 +- cime_config/acme/config_files.xml | 94 +- cime_config/acme/config_grids.xml | 184 +- cime_config/acme/machines/Depends.cetus | 5 + ...nds.titan.pgi_acc => Depends.titan.pgiacc} | 0 .../acme/machines/Depends.titan.pgicuda | 11 - cime_config/acme/machines/Makefile | 220 +- cime_config/acme/machines/buildlib.csm_share | 106 - cime_config/acme/machines/buildlib.gptl | 25 - cime_config/acme/machines/buildlib.mct | 100 - cime_config/acme/machines/buildlib.pio | 52 - cime_config/acme/machines/ccsm_getenv | 110 - cime_config/acme/machines/config_batch.xml | 244 +- cime_config/acme/machines/config_build.xml | 1571 --- .../acme/machines/config_compilers.xml | 146 +- cime_config/acme/machines/config_machines.xml | 727 +- cime_config/acme/machines/config_pio.xml | 9 +- cime_config/acme/machines/configure | 484 - cime_config/acme/machines/syslog.cetus | 10 +- cime_config/acme/machines/syslog.cori-haswell | 72 + .../{syslog.corip1 => syslog.cori-knl} | 12 +- cime_config/acme/machines/syslog.edison | 10 +- cime_config/acme/machines/syslog.mira | 10 +- cime_config/acme/machines/syslog.titan | 10 +- .../machines/template.tseries_generate.pl | 46 - .../config_machines.xml | 13 +- .../allactive}/cam/outfrq9s/user_nl_cam | 0 .../allactive}/cam/outfrq9s/user_nl_clm | 0 .../{cesm/machines => }/buildlib.csm_share | 18 +- cime_config/{cesm/machines => }/buildlib.gptl | 8 +- cime_config/buildlib.mct | 62 + cime_config/buildlib.mpi-serial | 47 + cime_config/buildlib.pio | 152 + .../cesm/allactive/config_compsets.xml | 495 - cime_config/cesm/allactive/config_pes.xml | 1759 --- .../cesm/allactive/testlist_allactive.xml | 370 - .../allactive/cesm2dev01/include_user_mods | 2 - .../allactive/cesm2dev01io/include_user_mods | 2 - .../allactive/cism/oneway/README | 1 - .../allactive/cism/oneway/xmlchange_cmnds | 1 - .../allactive/cism/trilinos/README | 5 - .../allactive/cism/trilinos/include_user_mods | 1 - .../allactive/cism/trilinos/shell_commands | 1 - .../allactive/cism/trilinos/user_nl_cism | 2 - .../allactive/default/user_nl_cice | 0 .../allactive/default/user_nl_clm | 1 - .../allactive/default/user_nl_mosart | 0 .../allactive/default/user_nl_pop | 0 .../allactive/default/user_nl_rtm | 0 .../allactive/defaultio/include_user_mods | 1 - .../allactive/defaultio/user_nl_cam | 3 - .../allactive/defaultio/user_nl_cice | 98 - .../allactive/defaultio/user_nl_cism | 7 - .../allactive/defaultio/user_nl_clm | 4 - .../allactive/defaultio/user_nl_mosart | 13 - .../allactive/defaultio/user_nl_pop | 6 - .../allactive/defaultio/user_nl_rtm | 13 - .../usermods_dirs/b1850/shell_commands | 2 - .../allactive/usermods_dirs/b1850/user_nl_clm | 1 - .../allactive/usermods_dirs/b1850/user_nl_cpl | 2 - .../b1850_cism/include_user_mods | 1 - .../usermods_dirs/b1850_cism/user_nl_cism | 5 - cime_config/cesm/config_archive.xml | 72 +- cime_config/cesm/config_files.xml | 113 +- cime_config/cesm/config_grids.xml | 2723 ++-- cime_config/cesm/machines/Makefile | 296 +- cime_config/cesm/machines/buildlib.mct | 100 - cime_config/cesm/machines/buildlib.pio | 52 - cime_config/cesm/machines/config_batch.xml | 225 +- cime_config/cesm/machines/config_batch.xsd | 59 - cime_config/cesm/machines/config_build.xml | 1370 -- .../cesm/machines/config_compilers.xml | 1618 ++- .../cesm/machines/config_lt_archive.xml | 2 +- cime_config/cesm/machines/config_machines.xml | 838 +- .../cesm/machines/nag_mpi_argument.txt | 1 + cime_config/cesm/machines/template.case.run | 10 +- cime_config/cesm/machines/template.lt_archive | 5 +- cime_config/cesm/machines/template.st_archive | 4 +- .../config_machines.xml | 13 +- cime_config/config_headers.xml | 55 +- cime_config/config_tests.xml | 127 +- .../{archive.xsd => config_archive.xsd} | 4 +- cime_config/xml_schemas/config_batch.xsd | 164 + ...nfig_build.xsd => config_compilers_v2.xsd} | 129 +- cime_config/xml_schemas/config_compsets.xsd | 77 + cime_config/xml_schemas/config_grids_v2.xsd | 167 + cime_config/xml_schemas/config_machines.xsd | 204 + .../xml_schemas/config_machines_template.xml | 151 + cime_config/xml_schemas/config_pes.xsd | 137 + cime_config/xml_schemas/entry_id.xsd | 22 + cime_config/xml_schemas/entry_id_base.xsd | 67 + cime_config/xml_schemas/entry_id_namelist.xsd | 39 + cime_config/xml_schemas/testlist.xsd | 59 +- components/data_comps/datm/atm_comp_esmf.F90 | 271 - components/data_comps/datm/bld/build-namelist | 939 -- .../bld/namelist_files/namelist_defaults.xsl | 86 - .../namelist_files/namelist_defaults_datm.xml | 2671 ---- .../namelist_files/namelist_definition.xsl | 96 - .../namelist_definition_datm.xml | 394 - .../bld/unit_testers/build-namelist_test.pl | 607 - .../datm/bld/unit_testers/env_run.xml | 37 - .../user_xml_dir/namelist_defaults_datm.xml | 25 - .../user_xml_dir/namelist_definition_datm.xml | 329 - .../data_comps/datm/cime_config/buildlib | 6 +- .../data_comps/datm/cime_config/buildnml | 256 +- .../datm/cime_config/config_archive.xml | 10 + .../datm/cime_config/config_component.xml | 68 +- .../cime_config/namelist_definition_datm.xml | 2195 +++ components/data_comps/datm/datm_comp_mod.F90 | 97 +- .../data_comps/desp/cime_config/buildlib | 18 + .../data_comps/desp/cime_config/buildnml | 174 + .../desp/cime_config/config_component.xml | 40 + .../cime_config/namelist_definition_desp.xml | 78 + .../data_comps/desp/cime_config/user_nl_desp | 16 + components/data_comps/desp/desp_comp_mod.F90 | 723 + components/data_comps/desp/esp_comp_mct.F90 | 179 + components/data_comps/desp/esp_utils.F90 | 343 + components/data_comps/dice/bld/build-namelist | 806 -- .../namelist_files/namelist_defaults_dice.xml | 210 - .../namelist_definition_dice.xml | 324 - .../data_comps/dice/cime_config/buildlib | 6 +- .../data_comps/dice/cime_config/buildnml | 217 +- .../dice/cime_config/config_archive.xml | 10 + .../dice/cime_config/config_component.xml | 6 +- .../cime_config/namelist_definition_dice.xml | 694 + components/data_comps/dice/dice_comp_mod.F90 | 8 +- components/data_comps/dice/ice_comp_esmf.F90 | 253 - components/data_comps/dlnd/bld/build-namelist | 791 -- .../namelist_files/namelist_defaults_dlnd.xml | 119 - .../namelist_definition_dlnd.xml | 252 - .../data_comps/dlnd/cime_config/buildlib | 6 +- .../data_comps/dlnd/cime_config/buildnml | 220 +- .../dlnd/cime_config/config_archive.xml | 10 + .../dlnd/cime_config/config_component.xml | 51 +- .../cime_config/namelist_definition_dlnd.xml | 514 + components/data_comps/dlnd/dlnd_comp_mod.F90 | 18 +- components/data_comps/dlnd/lnd_comp_esmf.F90 | 254 - components/data_comps/docn/bld/build-namelist | 794 -- .../namelist_files/namelist_defaults_docn.xml | 227 - .../namelist_definition_docn.xml | 288 - .../data_comps/docn/cime_config/buildlib | 6 +- .../data_comps/docn/cime_config/buildnml | 219 +- .../docn/cime_config/config_archive.xml | 11 + .../docn/cime_config/config_component.xml | 37 +- .../cime_config/namelist_definition_docn.xml | 618 + components/data_comps/docn/docn_comp_mod.F90 | 8 +- components/data_comps/docn/ocn_comp_esmf.F90 | 252 - components/data_comps/drof/bld/build-namelist | 792 -- .../namelist_files/namelist_defaults_drof.xml | 170 - .../namelist_definition_drof.xml | 270 - .../data_comps/drof/cime_config/buildlib | 6 +- .../data_comps/drof/cime_config/buildnml | 217 +- .../drof/cime_config/config_archive.xml | 10 + .../drof/cime_config/config_component.xml | 14 +- .../cime_config/namelist_definition_drof.xml | 538 + components/data_comps/drof/drof_comp_mod.F90 | 20 +- components/data_comps/drof/rof_comp_esmf.F90 | 251 - components/data_comps/dwav/bld/build-namelist | 799 -- .../namelist_files/namelist_defaults_dwav.xml | 110 - .../namelist_definition_dwav.xml | 252 - .../data_comps/dwav/cime_config/buildlib | 6 +- .../data_comps/dwav/cime_config/buildnml | 223 +- .../dwav/cime_config/config_archive.xml | 10 + .../dwav/cime_config/config_component.xml | 4 +- .../cime_config/namelist_definition_dwav.xml | 494 + components/data_comps/dwav/dwav_comp_mod.F90 | 6 +- .../stub_comps/satm/cime_config/buildlib | 6 +- .../satm/cime_config/config_component.xml | 6 +- .../stub_comps/sesp/cime_config/buildlib | 6 +- .../sesp/cime_config/config_component.xml | 6 +- .../stub_comps/sglc/cime_config/buildlib | 6 +- .../sglc/cime_config/config_component.xml | 6 +- .../stub_comps/sice/cime_config/buildlib | 6 +- .../sice/cime_config/config_component.xml | 6 +- .../stub_comps/slnd/cime_config/buildlib | 6 +- .../slnd/cime_config/config_component.xml | 6 +- .../stub_comps/socn/cime_config/buildlib | 6 +- .../socn/cime_config/config_component.xml | 6 +- .../stub_comps/srof/cime_config/buildlib | 6 +- .../srof/cime_config/config_component.xml | 6 +- .../stub_comps/swav/cime_config/buildlib | 6 +- .../swav/cime_config/config_component.xml | 6 +- .../xcpl_comps/xatm/cime_config/buildlib | 6 +- .../xcpl_comps/xatm/cime_config/buildnml | 22 +- .../xatm/cime_config/config_component.xml | 6 +- .../xcpl_comps/xglc/cime_config/buildlib | 6 +- .../xcpl_comps/xglc/cime_config/buildnml | 22 +- .../xglc/cime_config/config_component.xml | 6 +- .../xcpl_comps/xice/cime_config/buildlib | 6 +- .../xcpl_comps/xice/cime_config/buildnml | 22 +- .../xice/cime_config/config_component.xml | 6 +- .../xcpl_comps/xlnd/cime_config/buildlib | 6 +- .../xcpl_comps/xlnd/cime_config/buildnml | 22 +- .../xlnd/cime_config/config_component.xml | 6 +- .../xcpl_comps/xocn/cime_config/buildlib | 6 +- .../xcpl_comps/xocn/cime_config/buildnml | 22 +- .../xocn/cime_config/config_component.xml | 6 +- .../xcpl_comps/xrof/cime_config/buildlib | 6 +- .../xcpl_comps/xrof/cime_config/buildnml | 22 +- .../xrof/cime_config/config_component.xml | 6 +- .../xcpl_comps/xwav/cime_config/buildlib | 6 +- .../xcpl_comps/xwav/cime_config/buildnml | 22 +- .../xwav/cime_config/config_component.xml | 6 +- doc/README | 32 - doc/apidocs/Doxyfile | 2351 ---- doc/apidocs/doc_txt/main.txt | 40 - doc/apidocs/doc_txt/perl.txt | 27 - doc/apidocs/doc_txt/python.txt | 33 - doc/apidocs/dox-filter.sh | 127 - doc/apidocs/doxypypy_filter.sh | 2 - doc/apidocs/examples/template.py | 110 - doc/modelnl/compsets.html | 6615 --------- doc/modelnl/create_tables | 26 - doc/modelnl/env_build.html | 1326 -- doc/modelnl/env_case.html | 826 -- doc/modelnl/env_mach_pes.html | 994 -- doc/modelnl/env_pesetup.html | 902 -- doc/modelnl/env_run.html | 3619 ----- doc/modelnl/grid.html | 3762 ----- doc/modelnl/images/arrow_down.gif | Bin 163 -> 0 bytes doc/modelnl/images/arrow_right.gif | Bin 165 -> 0 bytes doc/modelnl/index.html | 78 - doc/modelnl/machines.html | 1137 -- doc/modelnl/modelnl.html | 78 - doc/modelnl/nl_cam.html | 11726 ---------------- doc/modelnl/nl_cice.html | 3307 ----- doc/modelnl/nl_cism.html | 2144 --- doc/modelnl/nl_clm.html | 70 - doc/modelnl/nl_clm40.html | 1132 -- doc/modelnl/nl_clm45.html | 1746 --- doc/modelnl/nl_datm.html | 733 - doc/modelnl/nl_dice.html | 639 - doc/modelnl/nl_dlnd.html | 513 - doc/modelnl/nl_docn.html | 546 - doc/modelnl/nl_drof.html | 524 - doc/modelnl/nl_drv.html | 5972 -------- doc/modelnl/nl_pop2.html | 11232 --------------- doc/modelnl/nl_rtm.html | 418 - doc/modelnl/nldef2html_cam | 280 - doc/modelnl/nldef2html_cice | 215 - doc/modelnl/nldef2html_cism | 221 - doc/modelnl/nldef2html_clm | 212 - doc/modelnl/nldef2html_clm40 | 212 - doc/modelnl/nldef2html_clm45 | 212 - doc/modelnl/nldef2html_datm | 232 - doc/modelnl/nldef2html_dice | 201 - doc/modelnl/nldef2html_dlnd | 201 - doc/modelnl/nldef2html_docn | 201 - doc/modelnl/nldef2html_drof | 201 - doc/modelnl/nldef2html_drv | 213 - doc/modelnl/nldef2html_pop2 | 258 - doc/modelnl/nldef2html_rtm | 200 - doc/modelnl/showinfo.js | 223 - doc/modelnl/xmldef2html_compsets | 174 - doc/modelnl/xmldef2html_env_build | 200 - doc/modelnl/xmldef2html_env_case | 172 - doc/modelnl/xmldef2html_env_pesetup | 174 - doc/modelnl/xmldef2html_env_run | 232 - doc/modelnl/xmldef2html_grid | 226 - doc/modelnl/xmldef2html_machines | 216 - doc/usersguide/128pe_layout.jpg | Bin 58035 -> 0 bytes doc/usersguide/896pe_layout.jpg | Bin 34318 -> 0 bytes doc/usersguide/bookinfo.xml | 17 - doc/usersguide/buildcase.xml | 320 - doc/usersguide/createcase.xml | 1066 -- doc/usersguide/faq.xml | 954 -- doc/usersguide/glossary.xml | 175 - doc/usersguide/greenland_pole_grid.jpg | Bin 55817 -> 0 bytes doc/usersguide/grid_descriptions.jpg | Bin 135530 -> 0 bytes doc/usersguide/introduction.xml | 1184 -- doc/usersguide/newgrid.xml | 415 - doc/usersguide/pe_layout.jpg | Bin 15911 -> 0 bytes doc/usersguide/porting.xml | 457 - doc/usersguide/runcase.xml | 1466 -- doc/usersguide/rundocbook.csh | 17 - doc/usersguide/stylesheet.dsl | 68 - doc/usersguide/testing.xml | 432 - doc/usersguide/tripolegrid.jpg | Bin 112129 -> 0 bytes doc/usersguide/troubleshoot.xml | 209 - doc/usersguide/ug.xml | 101 - doc/usersguide/usecases.xml | 2909 ---- driver_cpl/bld/build-namelist | 1351 -- .../namelist_files/namelist_defaults_drv.xml | 268 - .../namelist_definition_drv.xml | 2805 +--- .../namelist_definition_drv_flds.xml | 231 +- driver_cpl/bld/testdir/env_run.xml | 17 +- driver_cpl/cime_config/buildexe | 9 +- driver_cpl/cime_config/buildnml | 373 +- driver_cpl/cime_config/config_archive.xml | 12 + driver_cpl/cime_config/config_component.xml | 1822 +-- .../cime_config/config_component_acme.xml | 711 + .../cime_config/config_component_cesm.xml | 532 + driver_cpl/cime_config/config_compsets.xml | 24 +- .../cime_config/namelist_definition_drv.xml | 3851 +++++ .../namelist_definition_modelio.xml | 184 + .../cime_config/testdefs/testlist_drv.xml | 6 +- driver_cpl/cime_config/user_nl_cpl | 36 +- driver_cpl/driver/CMakeLists.txt | 1 + driver_cpl/driver/cesm_comp_mod.F90 | 286 +- driver_cpl/driver/component_mod.F90 | 13 +- driver_cpl/driver/map_lnd2rof_irrig_mod.F90 | 287 + driver_cpl/driver/prep_lnd_mod.F90 | 5 + driver_cpl/driver/prep_ocn_mod.F90 | 64 +- driver_cpl/driver/prep_rof_mod.F90 | 74 +- driver_cpl/driver/seq_diag_mct.F90 | 11 + driver_cpl/driver/seq_hist_mod.F90 | 154 +- driver_cpl/driver/seq_io_mod.F90 | 406 +- driver_cpl/shr/seq_drydep_mod.F90 | 27 +- driver_cpl/shr/seq_flds_mod.F90 | 42 +- driver_cpl/shr/seq_infodata_mod.F90 | 1569 ++- driver_cpl/shr/seq_timemgr_mod.F90 | 408 +- driver_cpl/unit_test/CMakeLists.txt | 3 +- .../map_lnd2rof_irrig_test/CMakeLists.txt | 8 + .../test_map_lnd2rof_irrig.pf | 242 + .../plot_gradient | 15 +- externals/CMake/CESM_utils.cmake | 75 +- externals/CMake/CIME_utils.cmake | 81 + externals/CMake/Compilers.cmake | 67 - externals/CMake/FindNETCDF.cmake | 257 - externals/CMake/FindNETCDF_C.cmake | 38 - externals/CMake/FindNETCDF_Fortran.cmake | 25 - externals/CMake/FindPnetcdf.cmake | 58 - externals/CMake/FindpFUnit.cmake | 5 +- externals/CMake/LibFindMacros.cmake | 265 - externals/CMake/README.md | 2 +- externals/pio1/pio/CMakeLists.txt | 33 +- externals/pio1/pio/pionfput_mod.F90.in | 7 +- externals/pio2/CMakeLists.txt | 16 - externals/pio2/CTestScript.cmake | 22 +- externals/pio2/README.md | 16 +- externals/pio2/cmake/FindGPTL.cmake | 6 +- externals/pio2/cmake/FindHDF5.cmake | 16 +- externals/pio2/cmake/FindLIBRT.cmake | 4 +- externals/pio2/cmake/FindLIBZ.cmake | 4 +- externals/pio2/cmake/FindMPE.cmake | 4 +- externals/pio2/cmake/FindMPISERIAL.cmake | 4 +- externals/pio2/cmake/FindNetCDF.cmake | 30 +- externals/pio2/cmake/FindPAPI.cmake | 2 +- externals/pio2/cmake/FindPnetCDF.cmake | 8 +- externals/pio2/cmake/FindSZIP.cmake | 4 +- externals/pio2/cmake/LibCheck.cmake | 26 +- externals/pio2/cmake/LibFind.cmake | 54 +- externals/pio2/cmake/LibMPI.cmake | 36 +- externals/pio2/cmake/mpiexec.alcf | 2 +- .../pio2/ctest/CTestEnvironment-alcf.cmake | 2 +- .../pio2/ctest/CTestEnvironment-ncsa.cmake | 2 +- .../pio2/ctest/CTestEnvironment-nersc.cmake | 2 +- .../pio2/ctest/CTestEnvironment-nwsc.cmake | 4 +- externals/pio2/ctest/CTestScript-Test.cmake | 6 +- externals/pio2/ctest/runcdash-cgd-nag.sh | 6 +- externals/pio2/ctest/runcdash-nersc-intel.sh | 2 +- externals/pio2/ctest/runctest-cgd.sh | 2 +- externals/pio2/ctest/runctest-ncsa.sh | 2 +- externals/pio2/ctest/runctest-nwsc.sh | 2 +- externals/pio2/doc/CMakeFiles/CMakeOutput.log | 28 +- externals/pio2/doc/CMakeLists.txt | 37 +- externals/pio2/doc/Doxyfile.in | 8 +- externals/pio2/doc/DoxygenLayout.xml | 2 +- externals/pio2/doc/customdoxygen.css | 54 +- .../pio2/doc/images/block-cyclic-rearr.eps | 450 +- externals/pio2/doc/images/block-cyclic.eps | 450 +- externals/pio2/doc/images/dof-rearr.eps | 450 +- externals/pio2/doc/images/dof.eps | 450 +- externals/pio2/doc/source/CAMexample.txt | 6 +- externals/pio2/doc/source/Decomp.txt | 34 +- externals/pio2/doc/source/Error.txt | 3 + externals/pio2/doc/source/Examples.txt | 2 - externals/pio2/doc/source/GettingStarted.txt | 14 +- externals/pio2/doc/source/Installing.txt | 2 +- externals/pio2/doc/source/Testing.txt | 181 - externals/pio2/doc/source/api.txt | 6 +- externals/pio2/doc/source/base.txt | 2 - externals/pio2/doc/source/example/simple-bc | 2 +- .../pio2/doc/source/example/simple-bc-rearr | 2 +- .../doc/source/example/simple-bc-rearr-pe1 | 2 +- .../doc/source/example/simple-bc-rearr-pe2 | 2 +- externals/pio2/doc/source/example/simple-dof | 2 +- .../pio2/doc/source/example/simple-dof-rearr | 2 +- externals/pio2/doc/source/faq.txt | 14 +- .../pio2/doc/source/mach_walkthrough.txt | 20 +- externals/pio2/doc/source/testpio_example.txt | 64 +- externals/pio2/examples/basic/CMakeLists.txt | 4 +- externals/pio2/examples/basic/MPASA30km.csh | 2 +- externals/pio2/examples/basic/README.testpio | 64 +- .../pio2/examples/basic/alloc_mod.F90.in | 22 +- .../pio2/examples/basic/build_defaults.xml | 40 +- externals/pio2/examples/basic/check_mod.F90 | 58 +- .../pio2/examples/basic/config_bench.xml | 30 +- externals/pio2/examples/basic/fdepends.awk | 12 +- externals/pio2/examples/basic/gdecomp_mod.F90 | 36 +- .../pio2/examples/basic/namelist_mod.F90 | 24 +- .../pio2/examples/basic/perl5lib/ChangeLog | 14 +- .../pio2/examples/basic/perl5lib/XML/Changes | 54 +- .../pio2/examples/basic/perl5lib/XML/Lite.pm | 108 +- .../basic/perl5lib/XML/Lite/Element.pm | 88 +- .../pio2/examples/basic/perl5lib/XML/README | 2 +- .../basic/perl5lib/XML/man3/XML::Lite.3 | 78 +- .../perl5lib/XML/man3/XML::Lite::Element.3 | 16 +- externals/pio2/examples/basic/testdecomp.F90 | 4 +- externals/pio2/examples/basic/testpio.F90 | 202 +- .../pio2/examples/basic/testpio_bench.pl | 16 +- .../pio2/examples/basic/testpio_build.pl | 4 +- externals/pio2/examples/basic/testpio_run.pl | 18 +- externals/pio2/examples/basic/utils_mod.F90 | 2 +- externals/pio2/examples/basic/wstest.c | 10 +- externals/pio2/examples/c/example2.c | 4 +- .../pio2/examples/c/valsupp_example1.supp | 15 - externals/pio2/examples/cxx/examplePio.cxx | 16 +- externals/pio2/examples/f03/CMakeLists.txt | 2 +- externals/pio2/examples/f03/examplePio.f90 | 2 +- externals/pio2/scripts/prune_decomps.pl | 6 +- externals/pio2/src/CMakeLists.txt | 6 +- externals/pio2/src/clib/CMakeLists.txt | 23 +- externals/pio2/src/clib/bget.c | 1 + externals/pio2/src/clib/config.h.in | 3 - externals/pio2/src/clib/ncputgetparser.pl | 36 +- externals/pio2/src/clib/pio.h | 894 +- externals/pio2/src/clib/pio_c_get_template.c | 4 +- externals/pio2/src/clib/pio_c_put_template.c | 8 +- externals/pio2/src/clib/pio_c_template.c | 2 +- externals/pio2/src/clib/pio_darray.c | 1218 +- externals/pio2/src/clib/pio_darray_async.c | 2164 --- externals/pio2/src/clib/pio_file.c | 889 +- externals/pio2/src/clib/pio_get_nc.c | 390 +- externals/pio2/src/clib/pio_get_nc_async.c | 921 -- externals/pio2/src/clib/pio_internal.h | 639 +- externals/pio2/src/clib/pio_lists.c | 41 +- externals/pio2/src/clib/pio_msg.c | 2119 --- externals/pio2/src/clib/pio_nc.c | 28 +- externals/pio2/src/clib/pio_nc4.c | 56 +- externals/pio2/src/clib/pio_nc_async.c | 2513 ---- externals/pio2/src/clib/pio_put_nc.c | 650 +- externals/pio2/src/clib/pio_put_nc_async.c | 988 -- externals/pio2/src/clib/pio_rearrange.c | 206 +- externals/pio2/src/clib/pio_spmd.c | 62 +- externals/pio2/src/clib/pio_varm.c | 1990 --- externals/pio2/src/clib/pioc.c | 111 +- externals/pio2/src/clib/pioc_sc.c | 38 +- externals/pio2/src/clib/pioc_support.c | 150 - externals/pio2/src/clib/topology.c | 100 +- externals/pio2/src/flib/CMakeLists.txt | 30 +- externals/pio2/src/flib/pio.F90 | 18 +- externals/pio2/src/flib/pio_kinds.F90 | 6 +- externals/pio2/src/flib/pio_nf.F90 | 78 +- externals/pio2/src/flib/pio_support.F90 | 20 +- externals/pio2/src/flib/pio_types.F90 | 13 + externals/pio2/src/flib/piodarray.F90.in | 42 +- externals/pio2/src/flib/piolib_mod.F90 | 2 +- externals/pio2/src/flib/pionfatt_mod.F90.in | 56 +- externals/pio2/src/flib/pionfget_mod.F90.in | 16 +- externals/pio2/src/flib/pionfput_mod.F90.in | 44 +- externals/pio2/src/gptl/CMakeLists.txt | 6 +- externals/pio2/src/gptl/ChangeLog | 70 +- externals/pio2/src/gptl/GPTLget_memusage.c | 12 +- externals/pio2/src/gptl/GPTLprint_memusage.c | 20 +- externals/pio2/src/gptl/GPTLutil.c | 10 +- externals/pio2/src/gptl/README | 8 +- externals/pio2/src/gptl/f_wrappers.c | 20 +- externals/pio2/src/gptl/gptl.c | 400 +- externals/pio2/src/gptl/gptl.inc | 8 +- externals/pio2/src/gptl/gptl_papi.c | 142 +- externals/pio2/src/gptl/perf_mod.F90 | 2 +- externals/pio2/src/gptl/perf_utils.F90 | 38 +- externals/pio2/src/gptl/private.h | 8 +- externals/pio2/src/gptl/threadutil.c | 20 +- externals/pio2/tests/general/ncdf_fail.F90.in | 14 +- .../pio2/tests/general/ncdf_get_put.F90.in | 4 +- .../tests/general/ncdf_simple_tests.F90.in | 10 +- .../tests/general/pio_decomp_fillval.F90.in | 18 +- .../tests/general/pio_decomp_fillval2.F90 | 14 +- .../tests/general/pio_decomp_tests.F90.in | 6 +- .../pio2/tests/general/pio_file_fail.F90.in | 2 +- .../general/pio_file_simple_tests.F90.in | 2 +- externals/pio2/tests/general/test_memleak.c | 48 +- .../pio2/tests/general/util/pio_tf_f90gen.pl | 28 +- .../pio2/tests/general/util/pio_tutil.F90 | 4 +- .../pio2/tests/performance/CMakeLists.txt | 4 +- externals/pio2/tests/unit/CMakeLists.txt | 21 - externals/pio2/tests/unit/Levy_Notes | 4 +- externals/pio2/tests/unit/README | 2 +- externals/pio2/tests/unit/basic_tests.F90 | 53 +- externals/pio2/tests/unit/driver.F90 | 17 +- externals/pio2/tests/unit/test_darray.c | 260 - externals/pio2/tests/unit/test_darray_async.c | 261 - externals/pio2/tests/unit/test_intercomm.c | 575 - externals/pio2/tests/unit/test_names.c | 54 +- externals/pio2/tests/unit/test_nc4.c | 12 +- scripts/Testing/Testcases/NOC_script | 136 - scripts/Testing/testreporter.pl | 8 +- scripts/Tools/bless_test_results | 16 +- scripts/Tools/case.build | 28 +- scripts/Tools/case.cmpgen_namelists | 72 + scripts/Tools/case.setup | 2 +- scripts/Tools/case.submit | 9 +- scripts/Tools/case_diff | 6 +- scripts/Tools/check_case | 4 +- scripts/Tools/check_input_data | 4 +- scripts/Tools/cime_bisect | 4 +- scripts/Tools/cimeteststatus | 25 +- scripts/Tools/code_checker | 76 +- scripts/Tools/compare_namelists | 5 +- scripts/Tools/compare_test_results | 40 +- ...nt_compare_move => component_compare_copy} | 8 +- scripts/Tools/cron_script | 14 + scripts/Tools/cs_status | 8 +- scripts/Tools/jenkins_generic_job | 4 +- scripts/Tools/pelayout | 222 + scripts/Tools/preview_namelists | 14 +- scripts/Tools/simple_compare | 5 +- scripts/Tools/standard_script_setup.py | 10 +- scripts/Tools/taskmaker | 122 - scripts/Tools/update_acme_tests | 8 +- scripts/Tools/xmlchange | 31 +- .../config_pes_converter.py | 90 +- .../{ => xmlconvertors}/grid_xml_converter.py | 68 +- scripts/Tools/xmlquery | 314 +- scripts/create_clone | 19 +- scripts/create_newcase | 69 +- scripts/create_test | 63 +- scripts/manage_case | 4 +- scripts/manage_pes | 22 +- scripts/query_testlists | 172 + share/csm_share/shr/shr_file_mod.F90 | 4 +- share/csm_share/shr/shr_pio_mod.F90 | 43 +- share/csm_share/shr/shr_scam_mod.F90 | 7 +- share/csm_share/shr/shr_strdata_mod.F90 | 163 +- share/csm_share/shr/shr_stream_mod.F90 | 6 +- .../test/unit/dynamic_vector/CMakeLists.txt | 6 +- .../unit/shr_string_test/test_shr_string.pf | 24 + .../unit_test_stubs/pio/CMakeLists.txt | 11 +- share/csm_share/unit_test_stubs/pio/do_genf90 | 10 - share/csm_share/unit_test_stubs/pio/pio.F90 | 4070 ------ .../csm_share/unit_test_stubs/pio/pio.F90.in | 3 + .../esmf_wrf_timemgr/ESMF_TimeIntervalMod.F90 | 52 + share/timing/ChangeLog | 9 + share/timing/Makefile | 2 +- share/timing/f_wrappers.c | 14 +- share/timing/gptl.c | 24 +- share/timing/perf_mod.F90 | 34 +- tools/configure | 68 +- tools/cprnc/CMake/FindNetcdf.cmake | 193 - tools/cprnc/CMakeLists.txt | 8 +- tools/cprnc/README | 9 +- tools/cprnc/compare_vars_mod.F90.in | 6 + tools/cprnc/cprnc.F90 | 2 +- tools/cprnc/filestruct.F90 | 7 +- tools/cprnc/summarize_cprnc_diffs | 37 +- tools/mapping/gen_domain_files/INSTALL | 4 +- tools/mapping/gen_domain_files/src/Makefile | 4 +- .../runoff_to_ocn/src/map_mod.F90 | 9 +- tools/mapping/map_field/INSTALL | 2 +- tools/mapping/map_field/README | 6 +- .../system_tests/configure.test/configtest.pl | 194 - .../Examples/circle_area/tests/CMakeLists.txt | 5 +- .../circle_area/tests/pFUnit/CMakeLists.txt | 11 +- .../interpolate_1d/tests/CMakeLists.txt | 4 +- .../tests/pFUnit/CMakeLists.txt | 10 +- tools/unit_testing/README | 10 +- tools/unit_testing/run_tests.py | 564 +- tools/utils/find_circular_dependency.py | 99 + utils/data_assimilation/da_no_data_mod.sh | 22 + utils/perl5lib/Config/SetupTools.pm | 4 +- utils/perl5lib/Streams/TemplateGeneric.pm | 868 -- .../python/CIME/BuildTools/__init__.py | 0 .../CIME/BuildTools/cmakemacroswriter.py | 119 + utils/python/CIME/BuildTools/configure.py | 91 + .../CIME/BuildTools/macroconditiontree.py | 170 + .../python/CIME/BuildTools/macrowriterbase.py | 254 + .../CIME/BuildTools/makemacroswriter.py | 93 + .../python/CIME/BuildTools/possiblevalues.py | 139 + utils/python/CIME/BuildTools/valuesetting.py | 107 + utils/python/CIME/SystemTests/dae.py | 110 + utils/python/CIME/SystemTests/eri.py | 18 +- utils/python/CIME/SystemTests/erio.py | 69 + utils/python/CIME/SystemTests/erp.py | 50 +- utils/python/CIME/SystemTests/err.py | 7 + utils/python/CIME/SystemTests/ers.py | 13 +- utils/python/CIME/SystemTests/homme.py | 30 +- utils/python/CIME/SystemTests/nck.py | 4 +- utils/python/CIME/SystemTests/ncr.py | 29 +- utils/python/CIME/SystemTests/noc.py | 16 - utils/python/CIME/SystemTests/pea.py | 14 +- utils/python/CIME/SystemTests/pem.py | 119 +- utils/python/CIME/SystemTests/pre.py | 101 + utils/python/CIME/SystemTests/seq.py | 30 +- .../CIME/SystemTests/system_tests_common.py | 113 +- utils/python/CIME/XML/archive.py | 37 +- utils/python/CIME/XML/batch.py | 13 +- utils/python/CIME/XML/build.py | 756 - utils/python/CIME/XML/compilerblock.py | 277 + utils/python/CIME/XML/compilers.py | 247 +- utils/python/CIME/XML/component.py | 22 +- utils/python/CIME/XML/compsets.py | 31 +- utils/python/CIME/XML/entry_id.py | 344 +- utils/python/CIME/XML/env_archive.py | 5 +- utils/python/CIME/XML/env_base.py | 119 +- utils/python/CIME/XML/env_batch.py | 209 +- utils/python/CIME/XML/env_build.py | 5 +- utils/python/CIME/XML/env_case.py | 4 +- utils/python/CIME/XML/env_mach_pes.py | 78 +- utils/python/CIME/XML/env_mach_specific.py | 200 +- utils/python/CIME/XML/env_run.py | 8 +- utils/python/CIME/XML/env_test.py | 4 +- utils/python/CIME/XML/files.py | 14 +- utils/python/CIME/XML/generic_xml.py | 103 +- utils/python/CIME/XML/grids.py | 341 +- utils/python/CIME/XML/lt_archive.py | 10 +- utils/python/CIME/XML/machines.py | 118 +- utils/python/CIME/XML/namelist_definition.py | 413 + utils/python/CIME/XML/pes.py | 153 +- utils/python/CIME/XML/testlist.py | 88 +- utils/python/CIME/XML/testspec.py | 4 - utils/python/CIME/bless_test_results.py | 54 +- utils/python/CIME/build.py | 381 +- utils/python/CIME/buildlib.py | 7 +- utils/python/CIME/buildnml.py | 120 +- utils/python/CIME/case.py | 644 +- utils/python/CIME/case_cmpgen_namelists.py | 135 + utils/python/CIME/case_lt_archive.py | 14 +- utils/python/CIME/case_run.py | 102 +- utils/python/CIME/case_setup.py | 257 +- utils/python/CIME/case_st_archive.py | 41 +- utils/python/CIME/case_submit.py | 52 +- utils/python/CIME/case_test.py | 42 +- utils/python/CIME/check_input_data.py | 150 +- utils/python/CIME/check_lockedfiles.py | 82 +- utils/python/CIME/code_checker.py | 112 + utils/python/CIME/compare_namelists.py | 371 +- utils/python/CIME/compare_test_results.py | 171 +- utils/python/CIME/get_timing.py | 23 +- utils/python/CIME/hist_utils.py | 66 +- utils/python/CIME/macros_writers.py | 326 - utils/python/CIME/namelist.py | 1946 +++ utils/python/CIME/nmlgen.py | 647 + utils/python/CIME/preview_namelists.py | 140 +- utils/python/CIME/provenance.py | 120 +- utils/python/CIME/simple_compare.py | 59 +- utils/python/CIME/task_maker.py | 234 - utils/python/CIME/test_scheduler.py | 372 +- utils/python/CIME/test_status.py | 159 +- utils/python/CIME/test_utils.py | 44 +- .../test_system_tests_compare_two.py | 15 +- utils/python/CIME/user_mod_support.py | 66 +- utils/python/CIME/utils.py | 170 +- utils/python/CIME/wait_for_tests.py | 4 +- utils/python/tests/CMakeLists.txt | 5 +- utils/python/tests/CTestConfig.cmake | 2 +- utils/python/tests/list_tests | 12 +- .../python/tests/scripts_regression_tests.py | 898 +- utils/python/update_acme_tests.py | 204 +- 661 files changed, 42624 insertions(+), 139570 deletions(-) rename cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/{xmlchange_cmnds => shell_commands} (100%) rename cime_config/acme/allactive/testmods_dirs/force_netcdf_pio/{xmlchange_cmnds => shell_commands} (100%) rename cime_config/acme/machines/{Depends.titan.pgi_acc => Depends.titan.pgiacc} (100%) delete mode 100644 cime_config/acme/machines/Depends.titan.pgicuda delete mode 100755 cime_config/acme/machines/buildlib.csm_share delete mode 100755 cime_config/acme/machines/buildlib.gptl delete mode 100755 cime_config/acme/machines/buildlib.mct delete mode 100755 cime_config/acme/machines/buildlib.pio delete mode 100755 cime_config/acme/machines/ccsm_getenv delete mode 100644 cime_config/acme/machines/config_build.xml delete mode 100755 cime_config/acme/machines/configure create mode 100755 cime_config/acme/machines/syslog.cori-haswell rename cime_config/acme/machines/{syslog.corip1 => syslog.cori-knl} (90%) delete mode 100644 cime_config/acme/machines/template.tseries_generate.pl rename cime_config/acme/{allactive/testmods_dirs => testmods_dirs/allactive}/cam/outfrq9s/user_nl_cam (100%) rename cime_config/acme/{allactive/testmods_dirs => testmods_dirs/allactive}/cam/outfrq9s/user_nl_clm (100%) rename cime_config/{cesm/machines => }/buildlib.csm_share (89%) rename cime_config/{cesm/machines => }/buildlib.gptl (74%) create mode 100755 cime_config/buildlib.mct create mode 100755 cime_config/buildlib.mpi-serial create mode 100755 cime_config/buildlib.pio delete mode 100644 cime_config/cesm/allactive/config_compsets.xml delete mode 100644 cime_config/cesm/allactive/config_pes.xml delete mode 100644 cime_config/cesm/allactive/testlist_allactive.xml delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01/include_user_mods delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01io/include_user_mods delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/README delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/xmlchange_cmnds delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/README delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/include_user_mods delete mode 100755 cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/shell_commands delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/user_nl_cism delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_cice delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_clm delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_mosart delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_pop delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_rtm delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/include_user_mods delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cam delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cice delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cism delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_clm delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_mosart delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_pop delete mode 100644 cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_rtm delete mode 100644 cime_config/cesm/allactive/usermods_dirs/b1850/shell_commands delete mode 100644 cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_clm delete mode 100644 cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_cpl delete mode 100644 cime_config/cesm/allactive/usermods_dirs/b1850_cism/include_user_mods delete mode 100644 cime_config/cesm/allactive/usermods_dirs/b1850_cism/user_nl_cism delete mode 100755 cime_config/cesm/machines/buildlib.mct delete mode 100755 cime_config/cesm/machines/buildlib.pio delete mode 100644 cime_config/cesm/machines/config_batch.xsd delete mode 100644 cime_config/cesm/machines/config_build.xml rename cime_config/xml_schemas/{archive.xsd => config_archive.xsd} (94%) create mode 100644 cime_config/xml_schemas/config_batch.xsd rename cime_config/xml_schemas/{config_build.xsd => config_compilers_v2.xsd} (79%) create mode 100644 cime_config/xml_schemas/config_compsets.xsd create mode 100644 cime_config/xml_schemas/config_grids_v2.xsd create mode 100644 cime_config/xml_schemas/config_machines.xsd create mode 100644 cime_config/xml_schemas/config_machines_template.xml create mode 100644 cime_config/xml_schemas/config_pes.xsd create mode 100644 cime_config/xml_schemas/entry_id.xsd create mode 100644 cime_config/xml_schemas/entry_id_base.xsd create mode 100644 cime_config/xml_schemas/entry_id_namelist.xsd delete mode 100644 components/data_comps/datm/atm_comp_esmf.F90 delete mode 100755 components/data_comps/datm/bld/build-namelist delete mode 100644 components/data_comps/datm/bld/namelist_files/namelist_defaults.xsl delete mode 100644 components/data_comps/datm/bld/namelist_files/namelist_defaults_datm.xml delete mode 100644 components/data_comps/datm/bld/namelist_files/namelist_definition.xsl delete mode 100644 components/data_comps/datm/bld/namelist_files/namelist_definition_datm.xml delete mode 100755 components/data_comps/datm/bld/unit_testers/build-namelist_test.pl delete mode 100644 components/data_comps/datm/bld/unit_testers/env_run.xml delete mode 100644 components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_defaults_datm.xml delete mode 100644 components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_definition_datm.xml create mode 100644 components/data_comps/datm/cime_config/config_archive.xml create mode 100644 components/data_comps/datm/cime_config/namelist_definition_datm.xml create mode 100755 components/data_comps/desp/cime_config/buildlib create mode 100755 components/data_comps/desp/cime_config/buildnml create mode 100644 components/data_comps/desp/cime_config/config_component.xml create mode 100644 components/data_comps/desp/cime_config/namelist_definition_desp.xml create mode 100644 components/data_comps/desp/cime_config/user_nl_desp create mode 100644 components/data_comps/desp/desp_comp_mod.F90 create mode 100644 components/data_comps/desp/esp_comp_mct.F90 create mode 100644 components/data_comps/desp/esp_utils.F90 delete mode 100755 components/data_comps/dice/bld/build-namelist delete mode 100644 components/data_comps/dice/bld/namelist_files/namelist_defaults_dice.xml delete mode 100644 components/data_comps/dice/bld/namelist_files/namelist_definition_dice.xml create mode 100644 components/data_comps/dice/cime_config/config_archive.xml create mode 100644 components/data_comps/dice/cime_config/namelist_definition_dice.xml delete mode 100644 components/data_comps/dice/ice_comp_esmf.F90 delete mode 100755 components/data_comps/dlnd/bld/build-namelist delete mode 100644 components/data_comps/dlnd/bld/namelist_files/namelist_defaults_dlnd.xml delete mode 100644 components/data_comps/dlnd/bld/namelist_files/namelist_definition_dlnd.xml create mode 100644 components/data_comps/dlnd/cime_config/config_archive.xml create mode 100644 components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml delete mode 100644 components/data_comps/dlnd/lnd_comp_esmf.F90 delete mode 100755 components/data_comps/docn/bld/build-namelist delete mode 100644 components/data_comps/docn/bld/namelist_files/namelist_defaults_docn.xml delete mode 100644 components/data_comps/docn/bld/namelist_files/namelist_definition_docn.xml create mode 100644 components/data_comps/docn/cime_config/config_archive.xml create mode 100644 components/data_comps/docn/cime_config/namelist_definition_docn.xml delete mode 100644 components/data_comps/docn/ocn_comp_esmf.F90 delete mode 100755 components/data_comps/drof/bld/build-namelist delete mode 100644 components/data_comps/drof/bld/namelist_files/namelist_defaults_drof.xml delete mode 100644 components/data_comps/drof/bld/namelist_files/namelist_definition_drof.xml create mode 100644 components/data_comps/drof/cime_config/config_archive.xml create mode 100644 components/data_comps/drof/cime_config/namelist_definition_drof.xml delete mode 100644 components/data_comps/drof/rof_comp_esmf.F90 delete mode 100755 components/data_comps/dwav/bld/build-namelist delete mode 100644 components/data_comps/dwav/bld/namelist_files/namelist_defaults_dwav.xml delete mode 100644 components/data_comps/dwav/bld/namelist_files/namelist_definition_dwav.xml create mode 100644 components/data_comps/dwav/cime_config/config_archive.xml create mode 100644 components/data_comps/dwav/cime_config/namelist_definition_dwav.xml delete mode 100644 doc/README delete mode 100644 doc/apidocs/Doxyfile delete mode 100644 doc/apidocs/doc_txt/main.txt delete mode 100644 doc/apidocs/doc_txt/perl.txt delete mode 100644 doc/apidocs/doc_txt/python.txt delete mode 100755 doc/apidocs/dox-filter.sh delete mode 100755 doc/apidocs/doxypypy_filter.sh delete mode 100644 doc/apidocs/examples/template.py delete mode 100644 doc/modelnl/compsets.html delete mode 100755 doc/modelnl/create_tables delete mode 100644 doc/modelnl/env_build.html delete mode 100644 doc/modelnl/env_case.html delete mode 100644 doc/modelnl/env_mach_pes.html delete mode 100644 doc/modelnl/env_pesetup.html delete mode 100644 doc/modelnl/env_run.html delete mode 100644 doc/modelnl/grid.html delete mode 100644 doc/modelnl/images/arrow_down.gif delete mode 100644 doc/modelnl/images/arrow_right.gif delete mode 100755 doc/modelnl/index.html delete mode 100644 doc/modelnl/machines.html delete mode 100755 doc/modelnl/modelnl.html delete mode 100644 doc/modelnl/nl_cam.html delete mode 100644 doc/modelnl/nl_cice.html delete mode 100644 doc/modelnl/nl_cism.html delete mode 100644 doc/modelnl/nl_clm.html delete mode 100644 doc/modelnl/nl_clm40.html delete mode 100755 doc/modelnl/nl_clm45.html delete mode 100644 doc/modelnl/nl_datm.html delete mode 100644 doc/modelnl/nl_dice.html delete mode 100644 doc/modelnl/nl_dlnd.html delete mode 100644 doc/modelnl/nl_docn.html delete mode 100644 doc/modelnl/nl_drof.html delete mode 100644 doc/modelnl/nl_drv.html delete mode 100644 doc/modelnl/nl_pop2.html delete mode 100644 doc/modelnl/nl_rtm.html delete mode 100755 doc/modelnl/nldef2html_cam delete mode 100755 doc/modelnl/nldef2html_cice delete mode 100755 doc/modelnl/nldef2html_cism delete mode 100755 doc/modelnl/nldef2html_clm delete mode 100755 doc/modelnl/nldef2html_clm40 delete mode 100755 doc/modelnl/nldef2html_clm45 delete mode 100755 doc/modelnl/nldef2html_datm delete mode 100755 doc/modelnl/nldef2html_dice delete mode 100755 doc/modelnl/nldef2html_dlnd delete mode 100755 doc/modelnl/nldef2html_docn delete mode 100755 doc/modelnl/nldef2html_drof delete mode 100755 doc/modelnl/nldef2html_drv delete mode 100755 doc/modelnl/nldef2html_pop2 delete mode 100755 doc/modelnl/nldef2html_rtm delete mode 100644 doc/modelnl/showinfo.js delete mode 100755 doc/modelnl/xmldef2html_compsets delete mode 100755 doc/modelnl/xmldef2html_env_build delete mode 100755 doc/modelnl/xmldef2html_env_case delete mode 100755 doc/modelnl/xmldef2html_env_pesetup delete mode 100755 doc/modelnl/xmldef2html_env_run delete mode 100755 doc/modelnl/xmldef2html_grid delete mode 100755 doc/modelnl/xmldef2html_machines delete mode 100644 doc/usersguide/128pe_layout.jpg delete mode 100644 doc/usersguide/896pe_layout.jpg delete mode 100644 doc/usersguide/bookinfo.xml delete mode 100644 doc/usersguide/buildcase.xml delete mode 100644 doc/usersguide/createcase.xml delete mode 100644 doc/usersguide/faq.xml delete mode 100644 doc/usersguide/glossary.xml delete mode 100644 doc/usersguide/greenland_pole_grid.jpg delete mode 100644 doc/usersguide/grid_descriptions.jpg delete mode 100644 doc/usersguide/introduction.xml delete mode 100644 doc/usersguide/newgrid.xml delete mode 100644 doc/usersguide/pe_layout.jpg delete mode 100644 doc/usersguide/porting.xml delete mode 100644 doc/usersguide/runcase.xml delete mode 100755 doc/usersguide/rundocbook.csh delete mode 100644 doc/usersguide/stylesheet.dsl delete mode 100644 doc/usersguide/testing.xml delete mode 100644 doc/usersguide/tripolegrid.jpg delete mode 100644 doc/usersguide/troubleshoot.xml delete mode 100644 doc/usersguide/ug.xml delete mode 100644 doc/usersguide/usecases.xml delete mode 100755 driver_cpl/bld/build-namelist create mode 100644 driver_cpl/cime_config/config_archive.xml create mode 100644 driver_cpl/cime_config/config_component_acme.xml create mode 100644 driver_cpl/cime_config/config_component_cesm.xml create mode 100644 driver_cpl/cime_config/namelist_definition_drv.xml create mode 100644 driver_cpl/cime_config/namelist_definition_modelio.xml create mode 100644 driver_cpl/driver/map_lnd2rof_irrig_mod.F90 create mode 100644 driver_cpl/unit_test/map_lnd2rof_irrig_test/CMakeLists.txt create mode 100644 driver_cpl/unit_test/map_lnd2rof_irrig_test/test_map_lnd2rof_irrig.pf create mode 100644 externals/CMake/CIME_utils.cmake delete mode 100644 externals/CMake/FindNETCDF.cmake delete mode 100644 externals/CMake/FindNETCDF_C.cmake delete mode 100644 externals/CMake/FindNETCDF_Fortran.cmake delete mode 100644 externals/CMake/FindPnetcdf.cmake delete mode 100644 externals/CMake/LibFindMacros.cmake delete mode 100644 externals/pio2/doc/source/Testing.txt delete mode 100644 externals/pio2/examples/c/valsupp_example1.supp delete mode 100644 externals/pio2/src/clib/pio_darray_async.c delete mode 100644 externals/pio2/src/clib/pio_get_nc_async.c delete mode 100644 externals/pio2/src/clib/pio_msg.c delete mode 100644 externals/pio2/src/clib/pio_nc_async.c delete mode 100644 externals/pio2/src/clib/pio_put_nc_async.c delete mode 100644 externals/pio2/src/clib/pio_varm.c delete mode 100644 externals/pio2/tests/unit/test_darray.c delete mode 100644 externals/pio2/tests/unit/test_darray_async.c delete mode 100644 externals/pio2/tests/unit/test_intercomm.c delete mode 100755 scripts/Testing/Testcases/NOC_script create mode 100755 scripts/Tools/case.cmpgen_namelists rename scripts/Tools/{component_compare_move => component_compare_copy} (86%) create mode 100755 scripts/Tools/cron_script create mode 100755 scripts/Tools/pelayout delete mode 100755 scripts/Tools/taskmaker rename scripts/Tools/{ => xmlconvertors}/config_pes_converter.py (86%) rename scripts/Tools/{ => xmlconvertors}/grid_xml_converter.py (89%) create mode 100755 scripts/query_testlists delete mode 100755 share/csm_share/unit_test_stubs/pio/do_genf90 delete mode 100644 share/csm_share/unit_test_stubs/pio/pio.F90 delete mode 100644 tools/cprnc/CMake/FindNetcdf.cmake delete mode 100755 tools/system_tests/configure.test/configtest.pl create mode 100755 tools/utils/find_circular_dependency.py create mode 100755 utils/data_assimilation/da_no_data_mod.sh delete mode 100644 utils/perl5lib/Streams/TemplateGeneric.pm rename cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_cam => utils/python/CIME/BuildTools/__init__.py (100%) create mode 100644 utils/python/CIME/BuildTools/cmakemacroswriter.py create mode 100644 utils/python/CIME/BuildTools/configure.py create mode 100644 utils/python/CIME/BuildTools/macroconditiontree.py create mode 100644 utils/python/CIME/BuildTools/macrowriterbase.py create mode 100644 utils/python/CIME/BuildTools/makemacroswriter.py create mode 100644 utils/python/CIME/BuildTools/possiblevalues.py create mode 100644 utils/python/CIME/BuildTools/valuesetting.py create mode 100644 utils/python/CIME/SystemTests/dae.py create mode 100644 utils/python/CIME/SystemTests/erio.py delete mode 100644 utils/python/CIME/SystemTests/noc.py create mode 100644 utils/python/CIME/SystemTests/pre.py delete mode 100644 utils/python/CIME/XML/build.py create mode 100644 utils/python/CIME/XML/compilerblock.py create mode 100644 utils/python/CIME/XML/namelist_definition.py create mode 100644 utils/python/CIME/case_cmpgen_namelists.py mode change 100644 => 100755 utils/python/CIME/case_st_archive.py create mode 100644 utils/python/CIME/code_checker.py delete mode 100644 utils/python/CIME/macros_writers.py create mode 100644 utils/python/CIME/namelist.py create mode 100644 utils/python/CIME/nmlgen.py delete mode 100644 utils/python/CIME/task_maker.py diff --git a/.gitignore b/.gitignore index d1a44bcd5eda..ffc61196a709 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Ignore python bytecode files *.pyc +buildnmlc # Ignore emacs backup files *~ diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ef40e36a0f1..ae90c8bd74c9 100644 --- a/CMakeLists.txt +++ b/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/ChangeLog b/ChangeLog index eb79ad71e9c2..f769eb097e58 100644 --- a/ChangeLog +++ b/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/ChangeLog_template b/ChangeLog_template index cc79169fed7d..118195965b96 100644 --- a/ChangeLog_template +++ b/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/README.unit_testing b/README.unit_testing index c28e27b09631..7b2a3d1983e8 100644 --- a/README.unit_testing +++ b/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_config/acme/allactive/config_compsets.xml b/cime_config/acme/allactive/config_compsets.xml index 342e4dcd9770..455870818213 100644 --- a/cime_config/acme/allactive/config_compsets.xml +++ b/cime_config/acme/allactive/config_compsets.xml @@ -2,6 +2,43 @@ + + + ========================================= + compset naming convention + ========================================= + The compset longname below has the specified order + atm, lnd, ice, ocn, river, glc wave model-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 = [CAM4, CAM5, SATM] + LND = [CLM40, CLM45, CLM50, SLND] + ICE = [MPASCICE, CICE, DICE, SICE] + OCN = [MPASO, DOCN, ,AQUAP, SOCN] + ROF = [RTM, MOSART, SROF] + GLC = [MPASLISIA, MPASLIALB, 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) + + + diff --git a/cime_config/acme/allactive/config_compsets.xml.cime2 b/cime_config/acme/allactive/config_compsets.xml.cime2 index 1b7073eac6e8..1a902e21f71b 100644 --- a/cime_config/acme/allactive/config_compsets.xml.cime2 +++ b/cime_config/acme/allactive/config_compsets.xml.cime2 @@ -242,12 +242,14 @@ value of RUN_STARTDATE will be date2. 1850_CAM5%AV1C-03_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 1850_CAM5%AV1C-04_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 1850_CAM5%AV1C-04P_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV +1850_CAM5%AV1C-04P2_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 1850_CAM5%AV1C-L_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 2000_CAM5%AV1C-01_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 2000_CAM5%AV1C-02_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 2000_CAM5%AV1C-03_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 2000_CAM5%AV1C-04_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 2000_CAM5%AV1C-04P_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV +2000_CAM5%AV1C-04P2_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 2000_CAM5%AV1C-L_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 2000_CAM5%AV1F_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 2000_CAM5%AV1F-00_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV @@ -255,6 +257,7 @@ value of RUN_STARTDATE will be date2. 20TR_CAM5%AV1C-03_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 20TR_CAM5%AV1C-04_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 20TR_CAM5%AV1C-04P_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV +20TR_CAM5%AV1C-04P2_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 20TR_CAM5%AV1C-L_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 2000_CAM5%ATMMODCOSP_CLM45%SPBC_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV 2000_CAM5%COSP_CLM40%SP_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV @@ -704,6 +707,7 @@ GEOS => GEOS5 meteorology for "stand-alone" CAM -clubb_sgs -microphys mg2 -chem linoz_mam4_resus_mom_soag -rain_evap_to_coarse_aero -nlev 72 -clubb_sgs -microphys mg2 -chem linoz_mam4_resus_mom_soag -rain_evap_to_coarse_aero -nlev 72 -clubb_sgs -microphys mg2 -chem linoz_mam4_resus_mom_soag -rain_evap_to_coarse_aero -nlev 72 +-clubb_sgs -microphys mg2 -chem linoz_mam4_resus_mom_soag -rain_evap_to_coarse_aero -nlev 72 -clubb_sgs -microphys mg2 -chem linoz_mam4_resus_mom_soag -rain_evap_to_coarse_aero -nlev 72 -clubb_sgs -microphys mg2 -chem trop_mam4_resus -rain_evap_to_coarse_aero -nlev 72 -clubb_sgs -microphys mg2 -chem trop_mam4_resus -rain_evap_to_coarse_aero -nlev 72 @@ -806,20 +810,23 @@ GEOS => GEOS5 meteorology for "stand-alone" CAM 1850_cam5_av1c-03 1850_cam5_av1c-04 1850_cam5_av1c-04p -1850_cam5_av1c-04p +1850_cam5_av1c-04p2 +1850_cam5_av1c-04p2 2000_cam5_av1c-01 2000_cam5_av1c-02 2000_cam5_av1c-03 2000_cam5_av1c-04 2000_cam5_av1c-04p -2000_cam5_av1c-04p +2000_cam5_av1c-04p2 +2000_cam5_av1c-04p2 2000_cam5_av1f 2000_cam5_av1f-00 2000_cam5_av1f-01 20TR_cam5_av1c-03 20TR_cam5_av1c-04 20TR_cam5_av1c-04p -20TR_cam5_av1c-04p +20TR_cam5_av1c-04p2 +20TR_cam5_av1c-04p2 2000_cam5_cosp waccmx_2000_cam4 waccmx_1996_cam4 @@ -886,6 +893,7 @@ GEOS => GEOS5 meteorology for "stand-alone" CAM CAM with complete set of ACME atmospheric mods for V1 (72 layers model) and ACES4BGC SOAG emissions- v03: CAM with complete set of ACME atmospheric mods for V1 (72 layers model) and ACES4BGC SOAG emissions- v04: CAM with complete set of ACME atmospheric mods for V1 (72 layers model) and ACES4BGC SOAG emissions- v04p: +CAM with complete set of ACME atmospheric mods for V1 (72 layers model) and ACES4BGC SOAG emissions- v04p2: CAM with complete set of ACME atmospheric mods for V1 (72 layers model) and ACES4BGC SOAG emissions- v04p: CAM with familiar set of ACME atmospheric mods for V1 (72 Layers model): CAM with familiar set of ACME atmospheric mods for V1 (72 Layers model)- v00: @@ -2029,6 +2037,7 @@ DOCN%COPY => docn copy mode 368.865 368.865 368.865 +368.865 368.865 diff --git a/cime_config/acme/allactive/config_pes.xml b/cime_config/acme/allactive/config_pes.xml index 889dc2006304..5626ff022922 100644 --- a/cime_config/acme/allactive/config_pes.xml +++ b/cime_config/acme/allactive/config_pes.xml @@ -1,83 +1,195 @@ - + + - - 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 + -4 + -4 + -4 + -4 + -4 + -4 + -4 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + - + + + + none + + 960 + 960 + 960 + 960 + 960 + 960 + 960 + 960 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 1024 + 1024 + 1024 + 1024 + 1024 + 1024 + 1024 + 1024 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 1024 + 1024 + 1024 + 1024 + 1024 + 1024 + 1024 + 1024 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 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 + + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + - + none @@ -113,173 +225,1209 @@ - - - - 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 - + + + + none + + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 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 + + 1024 + 1024 + 1024 + 1024 + 1024 + 1024 + 1024 + 1024 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 675 + 168 + 168 + 512 + 512 + 1 + 512 + 512 + + + 2 + 2 + 2 + 2 + 1 + 2 + 2 + 2 + + + 0 + 512 + 512 + 0 + 680 + 512 + 0 + 0 + + + + + + + + none + + 256 + 256 + 256 + 256 + 256 + 256 + 256 + 256 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 9600 + 9600 + 9600 + 9600 + 9600 + 9600 + 1 + 9600 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 9600 + 9600 + 9600 + 9600 + 9600 + 9600 + 1 + 9600 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 7200 + 256 + 256 + 6688 + 992 + 1 + 1 + 7200 + + + 16 + 16 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 256 + 512 + 7200 + 0 + 0 + 0 + + + + + + + + none + + 7200 + 256 + 256 + 6688 + 992 + 1 + 1 + 7200 + + + 16 + 16 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 256 + 512 + 7200 + 0 + 0 + 0 + + + + + + + + none + + 7200 + 992 + 992 + 992 + 992 + 1 + 1 + 992 + + + 16 + 16 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 7200 + 7200 + 7200 + 7200 + 7200 + 7200 + 7200 + + + + + + + + none + + 3200 + 1600 + 3200 + 1600 + 32 + 3200 + 3200 + 3200 + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + + + 0 + 0 + 0 + 1600 + 3200 + 0 + 0 + 0 + + + + + + + + none + + 2000 + 960 + 2000 + 1040 + 32 + 1 + 2000 + 960 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 960 + 2000 + 0 + 0 + 0 + + + + + + + + none + + 960 + 48 + 960 + 912 + 48 + 1 + 960 + 960 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 0 + 48 + 960 + 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 + 16 + 16 + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + - + - - none - - -16 - -16 - -16 - -16 - -16 - -16 - -16 - -16 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - + + none + + 8 + 8 + 8 + 5 + 4 + 8 + 8 + 8 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + - - + + + + none + + 1 + 1 + 1 + 32 + 96 + 1 + 1 + 32 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 16 + 0 + 0 + 32 + 0 + 0 + 0 + + + + + + + + none + + 1 + 1 + 1 + 80 + 192 + 1 + 1 + 80 + + + 1 + 1 + 1 + 4 + 4 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 80 + 0 + 0 + 0 + + + + + + + + none + + 8 + 8 + 8 + 8 + 480 + 8 + 8 + 32 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 8 + 0 + 16 + 32 + 24 + 0 + 0 + + + + + + + + none + + 16 + 8 + 16 + 480 + 480 + 8 + 16 + 32 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 16 + 0 + 32 + 32 + 24 + 0 + 0 + + + + + + + + none + + 48 + 48 + 48 + 48 + 1024 + 48 + 48 + 48 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 48 + 0 + 192 + 0 + 96 + 0 + 144 + + + + + + + + none + + 48 + 48 + 48 + 1024 + 1024 + 48 + 48 + 48 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 48 + 0 + 0 + 0 + 96 + 0 + 144 + + + + + + + + none + + 48 + 48 + 48 + 960 + 960 + 48 + 48 + 48 + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + + + 0 + 48 + 0 + 0 + 0 + 96 + 0 + 144 + + + + + + + + none + + 8 + 8 + 8 + 5 + 4 + 8 + 8 + 8 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 8 + 8 + 8 + 5 + 4 + 8 + 8 + 8 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 160 + 160 + 160 + 160 + 240 + 160 + 160 + 160 + + + 2 + 1 + 2 + 2 + 1 + 2 + 2 + 1 + + + 0 + 0 + 0 + 0 + 160 + 0 + 0 + 0 + + + + + + + + none + + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 64 + 32 + 64 + 32 + 64 + 64 + 64 + 64 + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + + + 0 + 0 + 0 + 32 + 0 + 0 + 0 + 0 + + + + + + + + none + + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 384 + 64 + 384 + 320 + 32 + 384 + 384 + 64 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 1 + + + 0 + 0 + 0 + 64 + 384 + 0 + 0 + 0 + + + + + + + + none + + 768 + 128 + 768 + 640 + 60 + 768 + 768 + 128 + + + 3 + 3 + 3 + 3 + 3 + 3 + 3 + 1 + + + 0 + 0 + 0 + 128 + 768 + 0 + 0 + 0 + + + + + + + + none + + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 1525 + 71 + 71 + 1454 + 256 + 1 + 1525 + 1525 + + + 16 + 16 + 16 + 16 + 1 + 1 + 16 + 4 + + + 0 + 0 + 0 + 71 + 1525 + 0 + 0 + 0 + + + + + + + + none + + 1525 + 71 + 71 + 1454 + 256 + 1 + 1525 + 1525 + + + 16 + 16 + 16 + 16 + 1 + 1 + 16 + 4 + + + 0 + 0 + 0 + 71 + 1525 + 0 + 0 + 0 + + + + + + none - 2600 - 144 - 144 - 2456 - 192 - 1 - 192 - 2600 + -16 + -9 + -9 + -7 + -1 + -1 + -1 + -16 8 8 - 8 8 + 8 8 8 8 @@ -288,1437 +1436,865 @@ 0 0 - 144 0 - 2600 + -9 + -16 0 - 2600 + 0 0 - - - - none - - 960 - 48 - 48 - 912 - 48 - 1 - 960 - 960 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 4 - - - 0 - 0 - 0 - 48 - 960 - 0 - 0 - 0 - + + + + none + + 512 + 512 + 512 + 512 + 512 + 512 + 512 + 512 + + + 16 + 16 + 16 + 16 + 16 + 16 + 16 + 16 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + - - - - none - - 900 - 300 - 300 - 600 - 60 - 900 - 900 - 900 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 300 - 900 - 0 - 0 - 0 - + + + + none + + 1525 + 71 + 71 + 1454 + 256 + 1 + 1525 + 1525 + + + 16 + 16 + 16 + 16 + 1 + 1 + 16 + 4 + + + 0 + 0 + 0 + 71 + 1525 + 0 + 0 + 0 + - - - - none - - 1024 - 1024 - 1024 - 1024 - 1024 - 1024 - 1024 - 1024 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - none - - 12384 - 96 - 96 - 12288 - 4000 - 1 - 4000 - 12384 - - - 8 - 8 - 8 - 8 - 8 - 8 - 8 - 8 - - - 0 - 0 - 0 - 96 - 12384 - 0 - 0 - 0 - - - - - - - - none - - 1440 - 1440 - 1440 - 512 - 2048 - 1440 - 1440 - 1440 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 1440 - 0 - 0 - 0 - - - - - - - - none - - 4096 - 2048 - 512 - 2048 - 512 - 4096 - 4096 - 4096 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 2048 - 4096 - 0 - 0 - 0 - - - - - - - - none - - 4096 - 2048 - 2048 - 2048 - 512 - 4096 - 4096 - 4096 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 2048 - 4096 - 0 - 0 - 0 - - - - - - - - none - - 9600 - 8640 - 600 - 960 - 960 - 960 - 960 - 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 - 192 - 192 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 120 - 120 - 0 - 192 - 0 - 0 - 0 - - - - - - - - none - - 256 - 64 - 64 - 192 - 16 - 256 - 256 - 256 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 192 - 0 - 0 - 256 - 0 - 0 - 0 - - - - - - - - none - - 240 - 40 - 40 - 200 - 20 - 240 - 240 - 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 - -12 - -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 - - 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 - 180 - 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 + + 1525 + 71 + 71 + 1454 + 256 + 1 + 1525 + 1525 + + + 16 + 16 + 16 + 16 + 1 + 1 + 16 + 4 + + + 0 + 0 + 0 + 71 + 1525 + 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 + + 496 + 176 + 496 + 320 + 16 + 496 + 496 + 160 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 320 + 0 + 0 + 496 + 0 + 0 + 0 + - - - - none - - 256 - 256 - 256 - 256 - 256 - 256 - 256 - 256 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - + + + + none + + 512 + 192 + 512 + 320 + 64 + 512 + 512 + 512 + + + 4 + 4 + 4 + 1 + 1 + 4 + 4 + 1 + + + 0 + 320 + 0 + 0 + 512 + 0 + 0 + 0 + - - - - none - - 240 - 240 - 240 - 240 - 240 - 240 - 240 - 240 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - + + + + none + + 480 + 416 + 480 + 480 + 480 + 480 + 480 + 480 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + - - - - none - - 960 - 48 - 48 - 912 - 48 - 1 - 960 - 960 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 4 - - - 0 - 0 - 0 - 48 - 960 - 0 - 0 - 0 - + + + + none + + 1024 + 416 + 1024 + 1024 + 1024 + 1024 + 1024 + 1024 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + - - - - none - - 384 - 64 - 64 - 320 - 32 - 384 - 384 - 64 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 1 - - - 0 - 0 - 0 - 64 - 384 - 0 - 0 - 0 - + + + + none + + 480 + 416 + 480 + 480 + 1232 + 480 + 480 + 432 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 480 + 0 + 0 + 0 + - - - - none - - 300 - 90 - 90 - 210 - 60 - 300 - 300 - 300 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 90 - 300 - 0 - 0 - 0 - + + + + none + + 1024 + 416 + 1024 + 1024 + 2356 + 1024 + 1024 + 432 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 1024 + 0 + 0 + 0 + - - - - none - - -40 - -24 - -24 - -16 - -6 - -40 - -40 - -40 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - -24 - -40 - 0 - 0 - 0 - + + + + none + + 1664 + 416 + 1664 + 1800 + 3476 + 1664 + 1664 + 432 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 1800 + 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 - + + + + none + + 496 + 336 + 496 + 160 + 16 + 496 + 496 + 160 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 160 + 0 + 0 + 496 + 0 + 0 + 0 + - - - - none - - 900 - 300 - 300 - 600 - 90 - 900 - 900 - 900 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 300 - 900 - 0 - 0 - 0 - + + + + none + + 1916 + 120 + 120 + 1796 + 132 + 1 + 1916 + 1916 + + + 16 + 16 + 16 + 16 + 1 + 1 + 16 + 16 + + + 0 + 0 + 0 + 120 + 1916 + 0 + 0 + 0 + - - - - none - - 300 - 120 - 120 - 180 - 180 - 300 - 300 - 300 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 120 - 300 - 0 - 0 - 0 - + + + + none + + 2560 + 512 + 2560 + 512 + 512 + 2560 + 2560 + 512 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 1536 + 512 + 1536 + 0 + 0 + 1536 + 1536 + 1023 + - - - - none - - 600 - 210 - 600 - 390 - 120 - 600 - 600 - 600 - - - 2 - 2 - 2 - 1 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 210 - 600 - 0 - 0 - 0 - + + + + none + + 9600 + 960 + 960 + 960 + 960 + 960 + 9600 + 960 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 5800 + 960 + 1920 + 4840 + 0 + 3880 + - - - - none - - 192 - 192 - 192 - 192 - 192 - 192 - 192 - 192 - - - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 4 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - + + + + none + + 2048 + 112 + 2048 + 1800 + 4028 + 2048 + 2048 + 2048 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 2048 + 0 + 2160 + 3960 + 0 + 0 + 0 + - - - - none - - 1024 - 416 - 1024 - 1024 - 1024 - 1024 - 1024 - 1024 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - + + + + none + + 512 + 512 + 512 + 512 + 512 + 512 + 512 + 512 + + + 6 + 6 + 6 + 1 + 1 + 6 + 6 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + - - - - none - - 15330 - 5115 - 5115 - 10215 - 30 - 15330 - 15330 - 15330 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 5115 - 15330 - 0 - 0 - 0 - + + + + none + + 2048 + 112 + 2048 + 1800 + 4028 + 2048 + 2048 + 1800 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 2048 + 0 + 2160 + 3960 + 0 + 0 + 0 + - - - - none - - 3200 - 1600 - 1600 - 1600 - 32 - 3200 - 3200 - 3200 - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - 0 - 0 - 0 - 1600 - 3200 - 0 - 0 - 0 - + + + + none + + 1824 + 112 + 1824 + 1600 + 3600 + 1824 + 1824 + 1600 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 1824 + 0 + 1936 + 3536 + 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 - - - + + + + none + + 512 + 512 + 512 + 1800 + 2048 + 512 + 512 + 512 + + + 6 + 6 + 6 + 1 + 1 + 6 + 6 + 1 + + + 0 + 512 + 0 + 512 + 2312 + 0 + 0 + 0 + + + + + + + + none + + 512 + 512 + 512 + 1800 + 2048 + 512 + 512 + 512 + + + 6 + 6 + 6 + 1 + 1 + 6 + 6 + 1 + + + 0 + 512 + 0 + 512 + 2312 + 0 + 0 + 0 + + + + + + + + none + + 1440 + 512 + 1440 + 512 + 2048 + 1440 + 1440 + 512 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 1440 + 0 + 0 + 0 + + + + + + + + none + + 3600 + 512 + 3600 + 512 + 512 + 3600 + 3600 + 512 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 14400 + 512 + 14400 + 512 + 512 + 14400 + 14400 + 512 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + - - diff --git a/cime_config/acme/allactive/config_pesall.xml b/cime_config/acme/allactive/config_pesall.xml index 277c085edc4a..1da5dab4b257 100644 --- a/cime_config/acme/allactive/config_pesall.xml +++ b/cime_config/acme/allactive/config_pesall.xml @@ -112,18 +112,18 @@ - + none - 12 - 12 - 12 - 12 - 12 - 12 - 12 - 12 + 8 + 8 + 8 + 8 + 8 + 8 + 8 + 8 4 @@ -148,29 +148,29 @@ - - + + none - 8 - 8 - 8 - 8 - 8 - 8 - 8 - 8 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 - 4 - 4 - 4 - 4 - 4 - 4 - 4 - 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 0 @@ -185,19 +185,19 @@ - + none - 64 - 64 - 64 - 64 - 64 - 64 - 64 - 64 + 2048 + 2048 + 2048 + 2048 + 2048 + 2048 + 2048 + 2048 1 @@ -259,6 +259,43 @@ + + + + none + + 4800 + 4800 + 4800 + 4800 + 4800 + 4800 + 4800 + 4800 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + @@ -297,7 +334,7 @@ - + none @@ -370,6 +407,43 @@ + + + + none + + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + @@ -407,6 +481,7 @@ + @@ -479,19 +554,94 @@ + + + + none + + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + - + none - 960 - 960 - 960 - 960 - 960 - 960 - 960 - 960 + 192 + 192 + 192 + 192 + 192 + 192 + 192 + 192 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 256 + 256 + 256 + 256 + 256 + 256 + 256 + 256 4 @@ -592,7 +742,7 @@ - + none 1280 @@ -628,28 +778,28 @@ - - + + none - 1200 - 1200 - 1200 - 1200 - 1200 - 1200 - 1200 - 1200 + 1280 + 1280 + 1280 + 1280 + 1280 + 1280 + 1280 + 1280 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 0 @@ -664,43 +814,6 @@ - - - - none - - 1200 - 600 - 1200 - 600 - 120 - 1200 - 1200 - 1320 - - - 2 - 2 - 2 - 2 - 1 - 2 - 2 - 2 - - - 0 - 0 - 0 - 600 - 1200 - 0 - 0 - 0 - - - - @@ -743,14 +856,14 @@ none - 256 - 256 - 256 - 256 - 256 - 256 - 256 - 256 + 512 + 512 + 512 + 512 + 512 + 512 + 512 + 512 1 @@ -777,17 +890,54 @@ - + MPASLIALB. - 1 - 1 - 1 - 1 - 1 - 64 - 1 - 64 + 1 + 1 + 1 + 1 + 1 + 64 + 1 + 64 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + MPASLISIA. + + 8 + 8 + 8 + 8 + 8 + 8 + 8 + 8 1 @@ -1294,7 +1444,7 @@ - + none @@ -1478,6 +1628,43 @@ + + + + none + + 192 + 192 + 192 + 192 + 192 + 192 + 192 + 192 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + @@ -1626,6 +1813,80 @@ + + + + none + + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + none + + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + @@ -1812,18 +2073,18 @@ - + none - 48 - 48 - 48 - 48 - 48 - 48 - 48 - 48 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 1 @@ -2070,6 +2331,43 @@ + + + + none + + 25 + 25 + 25 + 25 + 25 + 25 + 25 + 25 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + @@ -2260,14 +2558,14 @@ none - 512 - 512 - 512 - 512 - 512 - 512 - 512 - 512 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 16 @@ -2885,7 +3183,7 @@ - + none @@ -2921,6 +3219,43 @@ + + + + none + + 16 + 16 + 16 + 16 + 16 + 16 + 16 + 16 + + + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + @@ -3069,43 +3404,6 @@ - - - - none - - 768 - 128 - 768 - 640 - 60 - 768 - 768 - 128 - - - 3 - 3 - 3 - 3 - 3 - 3 - 3 - 1 - - - 0 - 0 - 0 - 128 - 768 - 0 - 0 - 0 - - - - @@ -3328,43 +3626,6 @@ - - - - none - - 1525 - 71 - 71 - 1454 - 256 - 1 - 1525 - 1525 - - - 16 - 16 - 16 - 16 - 1 - 1 - 16 - 4 - - - 0 - 0 - 0 - 71 - 1525 - 0 - 0 - 0 - - - - @@ -3439,43 +3700,6 @@ - - - - none - - 1525 - 71 - 71 - 1454 - 256 - 1 - 1525 - 1525 - - - 16 - 16 - 16 - 16 - 1 - 1 - 16 - 4 - - - 0 - 0 - 0 - 71 - 1525 - 0 - 0 - 0 - - - - @@ -3514,7 +3738,7 @@ - + none @@ -3808,30 +4032,98 @@ + + + 40nodes-36ppn + + 1350 + 72 + 72 + 72 + 72 + 72 + 1 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 1350 + 1350 + 1350 + 1350 + 1350 + 0 + 0 + + + + 77nodes-6ppn-6tpp + + 450 + 12 + 12 + 12 + 12 + 12 + 1 + 1 + + + 6 + 6 + 6 + 6 + 6 + 6 + 1 + 1 + + + 0 + 450 + 450 + 450 + 450 + 450 + 0 + 0 + + + - - + + - none + default,20nodes*36tasks*1threads - 2048 - 2048 - 2048 - 2048 - 2048 - 2048 - 2048 - 2048 + 720 + 720 + 720 + 720 + 720 + 720 + 720 + 720 - 16 - 16 - 16 - 16 - 16 - 16 - 16 - 16 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 0 @@ -3920,43 +4212,6 @@ - - - - none - - 1916 - 120 - 120 - 1796 - 132 - 1 - 1916 - 1916 - - - 16 - 16 - 16 - 16 - 1 - 1 - 16 - 16 - - - 0 - 0 - 0 - 120 - 1916 - 0 - 0 - 0 - - - - @@ -4069,7 +4324,7 @@ - + none @@ -4106,7 +4361,7 @@ - + none @@ -4180,7 +4435,7 @@ - + none @@ -4217,7 +4472,7 @@ - + none @@ -4254,7 +4509,7 @@ - + none @@ -4291,7 +4546,7 @@ - + none @@ -4328,7 +4583,7 @@ - + none @@ -4623,43 +4878,6 @@ - - - - none - - 16 - 16 - 16 - 16 - 16 - 16 - 16 - 16 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - @@ -4957,7 +5175,7 @@ - + none @@ -5290,7 +5508,7 @@ - + none @@ -5326,7 +5544,7 @@ - + none @@ -5438,7 +5656,7 @@ - + none @@ -5475,7 +5693,7 @@ - + none @@ -5623,7 +5841,7 @@ - + none @@ -5696,4 +5914,41 @@ + + + + T62_oQU120.CMPASO-NYF on 16 nodes pure-MPI + + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + diff --git a/cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/xmlchange_cmnds b/cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/shell_commands similarity index 100% rename from cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/xmlchange_cmnds rename to cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/shell_commands diff --git a/cime_config/acme/allactive/testmods_dirs/force_netcdf_pio/xmlchange_cmnds b/cime_config/acme/allactive/testmods_dirs/force_netcdf_pio/shell_commands similarity index 100% rename from cime_config/acme/allactive/testmods_dirs/force_netcdf_pio/xmlchange_cmnds rename to cime_config/acme/allactive/testmods_dirs/force_netcdf_pio/shell_commands diff --git a/cime_config/acme/config_archive.xml b/cime_config/acme/config_archive.xml index 919c69a7d439..619e6972fd96 100644 --- a/cime_config/acme/config_archive.xml +++ b/cime_config/acme/config_archive.xml @@ -12,7 +12,7 @@ - \.r\..* + \.r.* unset rpointer$NINST_STRING.atm @@ -131,7 +131,8 @@ \.[ri]\..* - \.h.*.nc$ + \.h\..*\.nc$ + \.initial_hist\..*\.nc$ unset rpointer$NINST_STRING.glc diff --git a/cime_config/acme/config_files.xml b/cime_config/acme/config_files.xml index 747f0c8a03eb..bae4be6ab1b0 100644 --- a/cime_config/acme/config_files.xml +++ b/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 @@ -102,7 +105,7 @@ unset $CIMEROOT/cime_config/$MODEL/allactive/config_pesall.xml - $CIMEROOT/cime_config/$MODEL/allactive/config_pesall.xml + $CIMEROOT/driver_cpl/cime_config/config_pes.xml $CIMEROOT/cime_config/$MODEL/allactive/config_pesall.xml $CIMEROOT/cime_config/$MODEL/allactive/config_pesall.xml $CIMEROOT/cime_config/$MODEL/allactive/config_pesall.xml @@ -115,6 +118,7 @@ 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 @@ -155,15 +159,15 @@ char unset - $CIMEROOT/cime_config/$MODEL//allactive/testmods_dirs - $CIMEROOT/driver_cpl/cime_config/testdefs/testmods_dirs - $SRCROOT/components/cam/cime_config/testdefs/testmods_dirs - $SRCROOT/components/cism/cime_config/testdefs/testmods_dirs - $SRCROOT/components/clm/cime_config/testdefs/testmods_dirs - $SRCROOT/components/cice/cime_config/testdefs/testmods_dirs - $SRCROOT/components/rtm/cime_config/testdefs/testmods_dirs - $SRCROOT/components/mosart/cime_config/testdefs/testmods_dirs - $SRCROOT/components/pop/cime_config/testdefs/testmods_dirs + $CIMEROOT/cime_config/$MODEL/testmods_dirs + $CIMEROOT/cime_config/$MODEL/testmods_dirs + $CIMEROOT/cime_config/$MODEL/testmods_dirs + $CIMEROOT/cime_config/$MODEL/testmods_dirs + $CIMEROOT/cime_config/$MODEL/testmods_dirs + $CIMEROOT/cime_config/$MODEL/testmods_dirs + $CIMEROOT/cime_config/$MODEL/testmods_dirs + $CIMEROOT/cime_config/$MODEL/testmods_dirs + $CIMEROOT/cime_config/$MODEL/testmods_dirs case_last env_case.xml @@ -189,11 +193,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 +243,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 +363,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_config/acme/config_grids.xml b/cime_config/acme/config_grids.xml index 55b0896ee43e..495a916fd239 100644 --- a/cime_config/acme/config_grids.xml +++ b/cime_config/acme/config_grids.xml @@ -162,12 +162,24 @@ a%T62_l%T62_oi%oEC60to30_r%rx1_m%oEC60to30_g%null_w%null + + T62_oEC60to30wLI + T62_oEC60to30wLI + a%T62_l%T62_oi%oEC60to30wLI_r%rx1_m%oEC60to30wLI_g%null_w%null + + T62_oRRS30to10 T62_oRRS30to10 a%T62_l%T62_oi%oRRS30to10_r%rx1_m%oRRS30to10_g%null_w%null + + T62_oRRS30to10wLI + T62_oRRS30to10wLI + a%T62_l%T62_oi%oRRS30to10wLI_r%rx1_m%oRRS30to10wLI_g%null_w%null + + T62_oRRS18to6 a%T62_l%T62_oi%oRRS18to6_r%rx1_m%oRRS18to6_g%null_w%null @@ -235,7 +247,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 @@ -299,6 +311,12 @@ ne4_oQU240 + + ne4np4_oQU240wLI + a%ne4np4_l%ne4np4_oi%oQU240wLI_r%r05_m%oQU240wLI_g%null_w%null + ne4_oQU240wLI + + ne11np4_oQU240 a%ne11np4_l%ne11np4_oi%oQU240_r%r05_m%oQU240_g%null_w%null @@ -624,6 +642,11 @@ a%T62_l%T62_oi%oQU240_r%rx1_m%oQU240_g%null_w%null T62_oQU240 + + T62_oQU240wLI + a%T62_l%T62_oi%oQU240wLI_r%rx1_m%oQU240wLI_g%null_w%null + T62_oQU240wLI + T62_oQU120 @@ -667,12 +690,24 @@ ne30_oEC + + ne30np4_oEC60to30wLI + a%ne30np4_l%ne30np4_oi%oEC60to30wLI_r%r05_m%oEC60to30wLI_g%null_w%null + ne30_oECwLI + + ne30np4_oRRS30to10 a%ne30np4_l%ne30np4_oi%oRRS30to10_r%r05_m%oRRS30to10_g%null_w%null ne30_oRRS30 + + ne30np4_oRRS30to10wLI + a%ne30np4_l%ne30np4_oi%oRRS30to10wLI_r%r05_m%oRRS30to10wLI_g%null_w%null + ne30_oRRS30wLI + + ne120np4_oRRS15to5 a%ne120np4_l%ne120np4_oi%oRRS15to5_r%r05_m%oRRS15to5_g%null_w%null @@ -965,9 +1000,12 @@ domain.lnd.T62_tx0.1v2_090623.nc domain.lnd.T62_mpasgx1.150903.nc domain.lnd.T62_oQU240.151209.nc + domain.lnd.T62_oQU240wLI_mask.160929.nc domain.lnd.T62_oQU120.151209.nc domain.lnd.T62_oEC60to30.150616.nc + domain.lnd.T62_oEC60to30wLI_mask.160830.nc domain.lnd.T62_oRRS30to10.150722.nc + domain.lnd.T62_oRRS30to10wLI_mask.160930.nc domain.lnd.T62_oRRS18to6.160831.nc domain.lnd.T62_oRRS15to5.150722.nc domain.lnd.T62_gx1v6.090320.nc @@ -976,9 +1014,12 @@ domain.lnd.T62_tx0.1v2_090623.nc domain.lnd.T62_mpasgx1.150903.nc domain.lnd.T62_oQU240.151209.nc + domain.lnd.T62_oQU240wLI_mask.160929.nc domain.lnd.T62_oQU120.151209.nc domain.lnd.T62_oEC60to30.150616.nc + domain.lnd.T62_oEC60to30wLI_mask.160830.nc domain.lnd.T62_oRRS30to10.150722.nc + domain.lnd.T62_oRRS30to10wLI_mask.160930.nc domain.lnd.T62_oRRS18to6.160831.nc domain.lnd.T62_oRRS15to5.150722.nc @@ -1038,19 +1079,27 @@ domain.lnd.ne30np4_gx1v6.110905.nc domain.lnd.ne30np4_oQU120.160401.nc domain.lnd.ne30np4_oEC60to30.20151214.nc + domain.lnd.ne30np4_oEC60to30wLI_mask.160915.nc domain.lnd.ne30np4_oRRS30to10.160419.nc + domain.lnd.ne30np4_oRRS30to10wLI.160930.nc domain.ocn.ne30np4_gx1v6_110217.nc domain.ocn.ne30np4_oQU120.160401.nc domain.ocn.ne30np4_oEC60to30.20151214.nc + domain.ocn.ne30np4_oEC60to30wLI_mask.160915.nc domain.ocn.ne30np4_oRRS30to10.160419.nc + domain.ocn.ne30np4_oRRS30to10wLI.160930.nc domain.lnd.ne30np4_gx1v6.110905.nc domain.lnd.ne30np4_oQU120.160401.nc domain.lnd.ne30np4_oEC60to30.20151214.nc + domain.lnd.ne30np4_oEC60to30wLI_mask.160915.nc domain.lnd.ne30np4_oRRS30to10.160419.nc + domain.lnd.ne30np4_oRRS30to10wLI.160930.nc domain.ocn.ne30np4_gx1v6_110217.nc domain.ocn.ne30np4_oQU120.160401.nc domain.ocn.ne30np4_oEC60to30.20151214.nc + domain.ocn.ne30np4_oEC60to30wLI_mask.160915.nc domain.ocn.ne30np4_oRRS30to10.160419.nc + domain.ocn.ne30np4_oRRS30to10wLI.160930.nc ne30np4 is Spectral Elem 1-deg grid: @@ -1099,17 +1148,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: @@ -1123,8 +1172,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 @@ -1154,6 +1203,14 @@ Experimental, under development + + 236689 1 + domain.ocn.oEC60to30wLI.160830.nc + domain.ocn.oEC60to30wLI.160830.nc + oEC60to30wLI is a MPAS ocean grid generated with the eddy closure density function with 30 km gridcells at the equator, 60 km at mid-latitudes, and 35 km at high latitudes. It is roughly comparable to the POP 1 degree resolution. Additionally, it has ocean under landice cavities: + Experimental, under development + + 1444565 1 domain.ocn.oRRS30to10.150722.nc @@ -1162,6 +1219,14 @@ Experimental, under development + + 1462411 1 + domain.ocn.oRRS30to10wLI.160930.nc + domain.ocn.oRRS30to10wLI.160930.nc + oRRS30to10wLI is an MPAS ocean grid with a mesh density function that is roughly proportional to the Rossby radius of deformation, with 30 km gridcells at low and 10 km gridcells at high latitudes: Additionally, it has ocean under landice cavities: + Experimental, under development + + 234988 1 @@ -1322,6 +1387,14 @@ domain.ocn.oQU240.151209.nc + + 7268 + 1 + oQU240wLI is an MPAS ocean mesh with quasi-uniform 240 km grid cells, nominally 2 degree resolution. Additionally, it has ocean under landice cavities.: + domain.ocn.oQU240wLI.160929.nc + domain.ocn.oQU240wLI.160929.nc + + 28571 1 @@ -1476,6 +1549,20 @@ cpl/gridmaps/oEC60to30/map_oEC60to30_TO_ne30np4_aave.151207.nc cpl/gridmaps/oEC60to30/map_oEC60to30_TO_ne30np4_aave.151207.nc + + cpl/gridmaps/ne30np4/map_ne30np4_to_oEC60to30wLI_mask_aave.160915.nc + cpl/gridmaps/ne30np4/map_ne30np4_to_oEC60to30wLI_mask_aave.160915.nc + cpl/gridmaps/ne30np4/map_ne30np4_to_oEC60to30wLI_nomask_aave.160915.nc + cpl/gridmaps/oEC60to30wLI/map_oEC60to30wLI_mask_to_ne30np4_aave.160915.nc + cpl/gridmaps/oEC60to30wLI/map_oEC60to30wLI_mask_to_ne30np4_aave.160915.nc + + + cpl/gridmaps/ne30np4/map_ne30np4_to_oRRS30to10wLI_mask_aave.160930.nc + cpl/gridmaps/ne30np4/map_ne30np4_to_oRRS30to10wLI_mask_aave.160930.nc + cpl/gridmaps/ne30np4/map_ne30np4_to_oRRS30to10wLI_nomask_aave.160930.nc + cpl/gridmaps/oRRS30to10wLI/map_oRRS30to10wLI_mask_to_ne30np4_aave.160930.nc + cpl/gridmaps/oRRS30to10wLI/map_oRRS30to10wLI_mask_to_ne30np4_aave.160930.nc + cpl/cpl6/map_ne30np4_TO_MPASO_QU120km_aave.151110.nc cpl/cpl6/map_ne30np4_TO_MPASO_QU120km_bilin.151110.nc @@ -1592,6 +1679,13 @@ cpl/gridmaps/mpas120/map_mpas120_TO_T62_aave.121116.nc cpl/gridmaps/mpas120/map_mpas120_TO_T62_aave.121116.nc + + cpl/gridmaps/T62/map_T62_TO_oQU240wLI_mask_aave.160929.nc + cpl/gridmaps/T62/map_T62_TO_oQU240wLI_nomask_aave.160929.nc + cpl/gridmaps/T62/map_T62_TO_oQU240wLI_mask_patc.160929.nc + cpl/gridmaps/oQU240wLI/map_oQU240wLI_mask_TO_T62_aave.160929.nc + cpl/gridmaps/oQU240wLI/map_oQU240wLI_mask_TO_T62_aave.160929.nc + cpl/gridmaps/T62/map_T62_TO_mpasgx1_aave.150827.nc cpl/gridmaps/T62/map_T62_TO_mpasgx1_blin.150827.nc @@ -1606,6 +1700,13 @@ cpl/gridmaps/oEC60to30/map_oEC60to30_TO_T62_aave.150615.nc cpl/gridmaps/oEC60to30/map_oEC60to30_TO_T62_aave.150615.nc + + cpl/gridmaps/T62/map_T62_TO_oEC60to30wLI_aave.160830.nc + cpl/gridmaps/T62/map_T62_TO_oEC60to30wLI_nm_aave.160830.nc + cpl/gridmaps/T62/map_T62_TO_oEC60to30wLI_aave.160830.nc + cpl/gridmaps/oEC60to30wLI/map_oEC60to30wLI_TO_T62_aave.160830.nc + cpl/gridmaps/oEC60to30wLI/map_oEC60to30wLI_TO_T62_aave.160830.nc + cpl/gridmaps/T62/map_T62_TO_oRRS30to10_aave.150722.nc cpl/gridmaps/T62/map_T62_TO_oRRS30to10_blin.150722.nc @@ -1613,6 +1714,13 @@ cpl/gridmaps/oRRS30to10/map_oRRS30to10_TO_T62_aave.150722.nc cpl/gridmaps/oRRS30to10/map_oRRS30to10_TO_T62_aave.150722.nc + + cpl/gridmaps/T62/map_T62_TO_oRRS30to10wLI_mask_aave.160930.nc + cpl/gridmaps/T62/map_T62_TO_oRRS30to10wLI_nomask_aave.160930.nc + cpl/gridmaps/T62/map_T62_TO_oRRS30to10wLI_mask_aave.160930.nc + cpl/gridmaps/oRRS30to10wLI/map_oRRS30to10wLI_mask_TO_T62_aave.160930.nc + cpl/gridmaps/oRRS30to10wLI/map_oRRS30to10wLI_mask_TO_T62_aave.160930.nc + cpl/gridmaps/T62/map_T62_to_oRRS18to6_aave.160831.nc cpl/gridmaps/T62/map_T62_to_oRRS18to6_patc.160831.nc @@ -1822,51 +1930,81 @@ - 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_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_rx1_to_oQU240wLI_nn.160929.nc cpl/cpl6/map_rx1_to_oEC60to30_nn.160527.nc + + cpl/cpl6/map_rx1_to_oEC60to30wLI_nn.160830.nc + cpl/cpl6/map_rx1_to_oRRS30to10_nn.160527.nc - + + cpl/cpl6/map_rx1_to_oRRS30to10wLI_smoothed.r500e1000.160930.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_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_r05_to_oQU240wLI_nn.160929.nc cpl/cpl6/map_r05_to_oEC60to30_nn.160113.nc + + cpl/cpl6/map_r05_to_oEC60to30wLI_nn.160926.nc + + + cpl/cpl6/map_r05_to_oRRS30to10wLI_nn.160930.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 @@ -2208,7 +2346,7 @@ - cpl/cpl6/map_rx1_to_oQU120_nn.1608.nc + cpl/cpl6/map_rx1_to_oQU120_nn.160527.nc diff --git a/cime_config/acme/machines/Depends.cetus b/cime_config/acme/machines/Depends.cetus index 7f9c05b62994..4a2f02b424ba 100644 --- a/cime_config/acme/machines/Depends.cetus +++ b/cime_config/acme/machines/Depends.cetus @@ -26,6 +26,11 @@ wetdep.o ifeq ($(DEBUG),FALSE) $(PERFOBJS): %.o: %.F90 $(FC) -c $(INCLDIR) $(INCS) $(FFLAGS) $(FREEFLAGS) -qnostrict $< +#Model crashes if these files are compiled with O3(default) optimizations + seasalt_model.o: seasalt_model.F90 + $(FC) -c $(INCLDIR) $(INCS) $(FFLAGS) $(FREEFLAGS) -O2 $< + linoz_data.o: linoz_data.F90 + $(FC) -c $(INCLDIR) $(INCS) $(FFLAGS) $(FREEFLAGS) -O2 $< endif ### These files take long time to compile with default optimization flags. diff --git a/cime_config/acme/machines/Depends.titan.pgi_acc b/cime_config/acme/machines/Depends.titan.pgiacc similarity index 100% rename from cime_config/acme/machines/Depends.titan.pgi_acc rename to cime_config/acme/machines/Depends.titan.pgiacc diff --git a/cime_config/acme/machines/Depends.titan.pgicuda b/cime_config/acme/machines/Depends.titan.pgicuda deleted file mode 100644 index 75ce1e0b30b1..000000000000 --- a/cime_config/acme/machines/Depends.titan.pgicuda +++ /dev/null @@ -1,11 +0,0 @@ -dyn_comp.o: dyn_comp.F90 - $(FC) -c $(INCLDIR) $(INCS) $(FFLAGS_NOOPT) $(FREEFLAGS) $< - -uwshcu.o: uwshcu.F90 - $(FC) -c $(INCLDIR) $(INCS) $(FFLAGS_NOOPT) $(FREEFLAGS) $< - -mo_drydep.o: mo_drydep.F90 - $(FC) -c $(INCLDIR) $(INCS) $(FFLAGS_NOOPT) $(FREEFLAGS) $< - -micro_mg1_5.o: micro_mg1_5.F90 - $(FC) -c $(INCLDIR) $(INCS) $(FFLAGS_NOOPT) $(FREEFLAGS) $< diff --git a/cime_config/acme/machines/Makefile b/cime_config/acme/machines/Makefile index a97934709ce4..49a2e13a2336 100644 --- a/cime_config/acme/machines/Makefile +++ b/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 endif - ifndef LIB_PNETCDF - LIB_PNETCDF:=$(PNETCDF_PATH)/lib +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 - -# -# Tell gmake to look in the csm_share directory for shr_*.mod files -# - -vpath shr%.mod $(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/csm_share +INCLDIR += -I$(INSTALL_SHAREDPATH)/include -I$(INSTALL_SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/$(NINST_VALUE)/include - -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 @@ -425,24 +461,25 @@ 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) $< -ifdef COSP_LIBDIR -INCLDIR+=-I$(COSP_LIBDIR) -I$(COSP_LIBDIR)/../ -$(COSP_LIBDIR)/libcosp.a: cam_abortutils.o - $(MAKE) -C $(COSP_LIBDIR) F90='$(FC)' F90FLAGS='$(INCLDIR) $(INCS) $(FREEFLAGS) $(FFLAGS) $(FC_AUTO_R8)' \ - F90FLAGS_noauto='$(INCLDIR) $(INCS) $(FREEFLAGS) $(FFLAGS)' \ - F90FLAGS_fixed='$(INCLDIR) $(INCS) $(FIXEDFLAGS) $(FFLAGS) $(FC_AUTO_R8)' + ifdef COSP_LIBDIR + INCLDIR+=-I$(COSP_LIBDIR) -I$(COSP_LIBDIR)/../ + $(COSP_LIBDIR)/libcosp.a: cam_abortutils.o + $(MAKE) -C $(COSP_LIBDIR) F90='$(FC)' F90FLAGS='$(INCLDIR) $(INCS) $(FREEFLAGS) $(FFLAGS) $(FC_AUTO_R8)' \ + F90FLAGS_noauto='$(INCLDIR) $(INCS) $(FREEFLAGS) $(FFLAGS)' \ + F90FLAGS_fixed='$(INCLDIR) $(INCS) $(FIXEDFLAGS) $(FFLAGS) $(FC_AUTO_R8)' -cospsimulator_intr.o: $(COSP_LIBDIR)/libcosp.a -endif + cospsimulator_intr.o: $(COSP_LIBDIR)/libcosp.a + endif endif @@ -458,8 +495,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 +566,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 +595,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 +612,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 +718,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,20 +747,9 @@ ifeq ($(ULIBDEP),$(null)) LNDLIB := liblnd.a endif endif - ifeq ($(findstring libclm.a,$(LNDLIB)),libclm.a) - ULIBDEP += $(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/lib/$(LNDLIB) - else - ULIBDEP += $(LIBROOT)/$(LNDLIB) - endif - ifeq ($(MODEL),driver) - ifeq ($(findstring libclm.a,$(LNDLIB)),libclm.a) - INCLDIR += -I$(SHAREDPATH)/$(COMP_INTERFACE)/$(ESMFDIR)/clm/obj - else - INCLDIR += -I$(EXEROOT)/lnd/obj - endif - endif - + ULIBDEP += $(LIBROOT)/$(LNDLIB) + INCLDIR += -I$(EXEROOT)/lnd/obj ULIBDEP += $(LIBROOT)/libocn.a ULIBDEP += $(LIBROOT)/librof.a ULIBDEP += $(LIBROOT)/libglc.a @@ -747,7 +782,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) #------------------------------------------------------------------------------- @@ -758,12 +793,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) @@ -835,25 +870,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_config/acme/machines/buildlib.csm_share b/cime_config/acme/machines/buildlib.csm_share deleted file mode 100755 index 5fc6cc6a982f..000000000000 --- a/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_config/acme/machines/buildlib.gptl b/cime_config/acme/machines/buildlib.gptl deleted file mode 100755 index c750690195df..000000000000 --- a/cime_config/acme/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_config/acme/machines/buildlib.mct b/cime_config/acme/machines/buildlib.mct deleted file mode 100755 index 65cf5f5e5ef7..000000000000 --- a/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_config/acme/machines/buildlib.pio b/cime_config/acme/machines/buildlib.pio deleted file mode 100755 index 569a26872511..000000000000 --- a/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_config/acme/machines/ccsm_getenv b/cime_config/acme/machines/ccsm_getenv deleted file mode 100755 index 759196466da5..000000000000 --- a/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_config/acme/machines/config_batch.xml b/cime_config/acme/machines/config_batch.xml index 24c3ce70b44c..448fce30194f 100644 --- a/cime_config/acme/machines/config_batch.xml +++ b/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 }} - --ntasks-per-node={{ tasks_per_node }} - --output={{ output_error_path }} + --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 + regular debug - - 01:15:00 - 01:50:00 - 05:00:00 - - + -A {{ project }} -l nodes={{ num_nodes }} @@ -183,107 +191,82 @@ batch - - 01:15:00 - 01:50:00 - 05:00:00 - - + + + --constraint=haswell + - regular - regular + regular debug - - 01:15:00 - 01:50:00 - 05:00:00 - + + + + + --constraint=knl,quad,cache + + + regular + debug + - default + default - - 03:00:00 - - default + default - - 01:00:00 - - + -A climate + --ntasks-per-node={{ tasks_per_node }} --mail-type=END --mail-user=email@pnnl.gov --output=slurm.out --error=slurm.err - slurm + slurm - - 0:30:00 - - + + + --ntasks-per-node={{ tasks_per_node }} + - ec + ec - - 0:50:00 - 1:50:00 - 5:00:00 - - + + + + --ntasks-per-node={{ tasks_per_node }} + - ec + ec - - 0:50:00 - 1:50:00 - 6:00:00 - - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} - - 00:30:00 - 02:00:00 - 16:00:00 - - - moab - - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} - - 00:30:00 - 02:00:00 - 16:00:00 - - - moab - @@ -291,13 +274,9 @@ mesabi debug - - 00:45:00 - 02:00:00 - - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} -q esd08q @@ -305,12 +284,9 @@ esd08q - - 24:00:00 - - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} -q esd13q @@ -319,12 +295,9 @@ esd13q esddbg13q - - 24:00:00 - - + -l nodes={{ num_nodes }}:ppn={{ tasks_per_node }} -W group_list=cades-ccsi @@ -332,9 +305,6 @@ batch - - 24:00:00 - @@ -342,13 +312,9 @@ batch debug - - 00:45:00 - 02:00:00 - - + -A {{ project }} -l nodes={{ num_nodes }} @@ -357,38 +323,30 @@ batch debug - - 00:45:00 - 02:00:00 - - + --partition=lr2 + --ntasks-per-node={{ tasks_per_node }} --account={{ project }} --exclusive - lr_normal + lr_normal - - 00:59:00 - - + --partition=lr3 + --ntasks-per-node={{ tasks_per_node }} --account={{ project }} --exclusive - lr_normal + lr_normal - - 00:59:00 - diff --git a/cime_config/acme/machines/config_build.xml b/cime_config/acme/machines/config_build.xml deleted file mode 100644 index 026fc1322bcc..000000000000 --- a/cime_config/acme/machines/config_build.xml +++ /dev/null @@ -1,1571 +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 - - -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5 -lhdf5_hl - - mpixlc_r - /soft/compilers/bgclang/mpi/bgclang/bin/mpic++11 - mpixlf2003_r - /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/ - /soft/libraries/petsc/3.5.3.1 - /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 -lhdf5_hl -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 - - - - - /global/project/projectdirs/acme/software/AlbanyTrilinos/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 - - - -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 - - - - - 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_config/acme/machines/config_compilers.xml b/cime_config/acme/machines/config_compilers.xml index f2f503c3b1f4..b26d37b8073e 100644 --- a/cime_config/acme/machines/config_compilers.xml +++ b/cime_config/acme/machines/config_compilers.xml @@ -100,7 +100,7 @@ for mct, etc. -C => runtime array bounds checking (runs slow) -qinitauto=... => initializes automatic variables --> - -DFORTRAN_SAME + -DFORTRAN_SAME -DCPRIBM -WF,-D -g -qfullpath -qmaxmem=-1 -qsuffix=f=f -qfixed=132 @@ -149,7 +149,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 + -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DCPRPGI -gopt -Mlist -time @@ -185,8 +185,7 @@ for mct, etc. CXX + need some machine-specific libraries --> + need some machine-specific libraries --> @@ -271,7 +269,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL -openmp -openmp -openmp @@ -311,7 +309,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL -openmp -openmp -openmp @@ -339,7 +337,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL -openmp -openmp -openmp @@ -369,7 +367,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL -openmp -openmp -openmp @@ -399,7 +397,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRGNU -fopenmp -fopenmp -fopenmp @@ -444,7 +442,7 @@ for mct, etc. - -DFORTRANUNDERSCORE -DNO_R16 + -DFORTRANUNDERSCORE -DNO_R16 -DCPRCRAY -DDIR=NOOP -h noomp -h noomp @@ -467,7 +465,7 @@ for mct, etc. gcc mpicc - -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH + -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH -DCPRNAG @@ -554,7 +552,7 @@ for mct, etc. -O2 --host=Linux -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_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 + ${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 -z muldefs -DHAVE_PAPI ftn cc @@ -563,18 +561,54 @@ for mct, etc. /global/project/projectdirs/acme/software/AlbanyTrilinos_09232015/Albany/build/install - - -O2 -no-opt-dynamic-align + + -xCORE-AVX2 + -xCORE-AVX2 + -O2 -qno-opt-dynamic-align -O2 + -qopenmp + -qopenmp + -qopenmp + -qopenmp --host=Linux -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_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 + -DHAVE_PAPI + -DHAVE_SLASHPROC ftn cc CC + ifort + icc + icpc + $(PETSC_DIR) + + + + -xMIC-AVX512 -diag-disable 10121 + -axMIC-AVX512 -xCORE-AVX2 + -O2 -qno-opt-dynamic-align + -O2 + -qopenmp + -qopenmp + -qopenmp + -qopenmp + --host=Linux + -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_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 + + + -DHAVE_PAPI + -DHAVE_SLASHPROC + + ftn + cc + CC + ifort + icc + icpc $(PETSC_DIR) - /global/project/projectdirs/acme/software/AlbanyTrilinos/Albany/build/install @@ -624,6 +658,18 @@ for mct, etc. /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install + + -O2 + -O2 + --host=Linux + $(NETCDFROOT) + $(PNETCDFROOT) + $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -L/usr/lib64 -L/usr/lib64/atlas -lblas -llapack + /projects/sems/install/rhel6-x86_64/sems/compiler/intel/15.0.2/base/mkl/lib/mic/libmkl_scalapack_lp64.a -Wl,--start-group /projects/sems/install/rhel6-x86_64/sems/compiler/intel/15.0.2/base/mkl/lib/intel64/libmkl_intel_lp64.a /projects/sems/install/rhel6-x86_64/sems/compiler/intel/15.0.2/base/mkl/lib/intel64/libmkl_core.a /projects/sems/install/rhel6-x86_64/sems/compiler/intel/15.0.2/base/mkl/lib/intel64/libmkl_sequential.a -Wl,--end-group /projects/sems/install/rhel6-x86_64/sems/compiler/intel/15.0.2/base/mkl/lib/mic/libmkl_blacs_intelmpi_lp64.a -lpthread -lm + -lstdc++ -lmpi_cxx + /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install + + -O2 -O2 @@ -734,7 +780,7 @@ for mct, etc. -ffixed-form -ffree-form -g -Wall - -O -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none -fno-range-check -O0 @@ -866,8 +912,8 @@ for mct, etc. /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/ /soft/libraries/pnetcdf/1.6.0/cnk-xl/current/ /home/santos/pFUnit/pFUnit_IBM - /soft/libraries/hdf5/1.8.14/cnk-xl/current/ - -L$(NETCDF_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 + /soft/libraries/hdf5/1.8.14/cnk-xl/current/ + -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L$(HDF5_PATH)/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 -L$(IBM_MAIN_DIR)/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -L$(IBM_MAIN_DIR)/xlsmp/bg/3.1/bglib64 -lxlsmp gpfs /soft/libraries/petsc/3.5.3.1 @@ -885,11 +931,12 @@ for mct, etc. mpixlf2003_r mpixlc_r mpixlc_r - /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/ - /soft/libraries/pnetcdf/1.3.1/cnk-xl/current/ + mpixlf77_r + /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/ + /soft/libraries/pnetcdf/1.6.0/cnk-xl/current/ /home/santos/pFUnit/pFUnit_IBM - -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5 -lhdf5_hl - -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5 -lhdf5_hl -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 + /soft/libraries/hdf5/1.8.14/cnk-xl/current/ + -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L$(HDF5_PATH)/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 -L$(IBM_MAIN_DIR)/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -L$(IBM_MAIN_DIR)/xlsmp/bg/3.1/bglib64 -lxlsmp gpfs /soft/libraries/petsc/3.5.3.1 @@ -969,39 +1016,20 @@ for mct, etc. - $(PNETCDFROOT) - $(NETCDFROOT) - /blues/gpfs/home/software/spack-0.9.1/opt/spack/linux-centos6-x86_64/intel-16.0.3/mvapich2-2.2b-ow5ikyjehwemgdr4h6k7ii7da6hs6lfz - mpi - $(shell $(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 + $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas -mkl + -Wl,-rpath -Wl,$(NETCDF_PATH)/lib gpfs - $(PNETCDFROOT) - $(NETCDFROOT) - /soft/spack/opt/spack/linux-x86_64/gcc-4.4.7/gcc-5.3.0-fygfl7rvyuiteto27dlhmilp5cstw2o2 - mpi $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas -DHAVE_NANOTIME -DBIT64 -DHAVE_SLASHPROC -DHAVE_GETTIMEOFDAY gpfs - $(PNETCDFROOT) - $(NETCDFROOT) - soft/spack/opt/spack/linux-x86_64/pgi-16.3-0/mvapich2-2.2b-2t45yukj4ij6ek24fwimzydo2dg6i3n2 - mpi $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas - -rpath $(NETCDFROOT)/lib + -rpath $(NETCDF_PATH)/lib gpfs @@ -1120,32 +1148,6 @@ for mct, etc. -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi -L$(MKL_PATH) -lmkl_rt - - - -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 - - - - $(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/ - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl=cluster - -mkl - - - - /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-gnu/install - - mpicc mpif90 diff --git a/cime_config/acme/machines/config_machines.xml b/cime_config/acme/machines/config_machines.xml index 10133d48dd1f..ffc500ded8e2 100644 --- a/cime_config/acme/machines/config_machines.xml +++ b/cime_config/acme/machines/config_machines.xml @@ -60,9 +60,10 @@ acme_developer intel,gnu,cray mpt,mpi-serial - $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 @@ -70,19 +71,19 @@ 8 48 24 - $ENV{SCRATCH}/acme_scratch + acme + 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 @@ -100,6 +101,7 @@ PrgEnv-gnu intel cce + gcc cray-parallel-netcdf cray-parallel-hdf5 pmi @@ -112,19 +114,19 @@ craype-sandybridge craype-ivybridge craype + papi + cmake + cray-petsc + esmf PrgEnv-intel - intel intel/16.0.0.109 + intel + intel/15.0.1.133 + + cray-libsci - /global/project/projectdirs/ccsm1/modulefiles/edison - - - esmf/6.3.0rp1-defio-intel15.0-mpi-O - - - esmf/6.3.0rp1-defio-intel15.0-mpiuni-O PrgEnv-cray @@ -132,55 +134,65 @@ PrgEnv-gnu - gcc gcc/5.2.0 - - - papi/5.4.1.3 - craype craype/2.5.1 - craype-ivybridge + gcc gcc/5.1.0 - cray-libsci/13.3.0 + cray-libsci/16.07.1 + - cray-mpich/7.3.1 - + craype + craype/2.5.5 + craype-ivybridge + pmi + pmi/5.0.10-1.0000.11050.0.0.ari + + + + cray-mpich/7.2.5 + cray-hdf5/1.8.16 - cray-netcdf/4.3.3.1 + cray-netcdf/4.4.0 - cray-netcdf-hdf5parallel/4.3.3.1 + cray-netcdf-hdf5parallel/4.4.0 cray-hdf5-parallel/1.8.16 cray-parallel-netcdf/1.6.1 + papi/5.4.3.2 perl/5.20.0 - cmake/3.0.0 + cmake/3.3.2 + + 1 + 1 + 1 + 64M - - NERSC XC40 Haswell, os is CNL, 32 pes/node, batch system is SLURM + + Cori. XC40 Cray system at NERSC. Haswell partition. os is CNL, 32 pes/node, batch system is SLURM cori 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 @@ -196,25 +208,29 @@ srun --label - -n {{ num_tasks }} - -c {{ thread_count }} + -n $TOTALPES + + -c 2 + - /opt/modules/default/init/perl.pm - /opt/modules/default/init/python.py + /opt/modules/default/init/perl + /opt/modules/default/init/python /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 + gcc cray-parallel-netcdf cray-parallel-hdf5 pmi @@ -227,19 +243,26 @@ craype-sandybridge craype-ivybridge craype + papi + cmake + cray-petsc + esmf + + + + craype + craype/2.5.7 + craype-haswell + + cray-mpich/7.4.4 PrgEnv-intel - intel intel/17.0.0.042 - cray-libsci - /global/project/projectdirs/ccsm1/modulefiles/cori - - - esmf/6.3.0rp1-defio-intel2016-mpi-O - - - esmf/6.3.0rp1-defio-intel2016-mpiuni-O + intel + + + intel/17.0.1.132 @@ -248,31 +271,178 @@ PrgEnv-gnu - gcc gcc/5.3.0 + gcc gcc/6.2.0 + + + + cray-libsci + cray-libsci/16.09.1 + + + + cray-hdf5/1.8.16 + cray-netcdf/4.4.0 + + + cray-netcdf-hdf5parallel/4.4.0 + cray-hdf5-parallel/1.8.16 + cray-parallel-netcdf/1.7.0 + + cmake/3.3.2 + pmi/5.0.10-1.0000.11050.0.0.ari papi/5.4.3.2 - craype craype/2.5.5 + zlib + + + + + + + 1 + 1 + + + 128M + spread + threads + + + + + + + Cori. XC40 Cray system at NERSC. KNL partition. os is CNL, 68 pes/node (for now only use 64), batch system is SLURM + cori-knl-haswell-is-default + acme_developer + intel,gnu,cray + mpt,mpi-serial + $ENV{SCRATCH}/acme_scratch + $CIME_OUTPUT_ROOT/$CASE/run + $CIME_OUTPUT_ROOT/$CASE/bld + /project/projectdirs/acme/inputdata + /project/projectdirs/acme/inputdata/atm/datm7 + $CIME_OUTPUT_ROOT/archive/$CASE + csm/$CASE + /project/projectdirs/acme/baselines + /project/projectdirs/acme/tools/cprnc.cori/cprnc + /project/projectdirs/$PROJECT + CNL + slurm + acme + 8 + 256 + 64 + acme + TRUE + -D PIO_BUILD_TIMING:BOOL=ON + + srun + + --label + -n $TOTALPES + + -c 4 + --cpu_bind=cores + + + + /opt/modules/default/init/perl + /opt/modules/default/init/python + /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 + gcc + cray-parallel-netcdf + cray-parallel-hdf5 + pmi + cray-libsci + cray-mpich2 + cray-mpich + cray-netcdf + cray-hdf5 + cray-netcdf-hdf5parallel + craype-sandybridge + craype-ivybridge + craype + cray-libsci + papi + cmake + cray-petsc + esmf + + + + PrgEnv-intel + intel + + + intel/17.0.1.132 + + + + PrgEnv-cray + cce cce/8.5.0 + + + PrgEnv-gnu + gcc gcc/6.2.0 - cray-libsci/16.06.1 + cray-libsci/16.09.1 + - cray-mpich/7.4.0 + craype + craype/2.5.7 + + craype-haswell + + + cray-mpich/7.4.4 + + cray-netcdf-hdf5parallel cray-hdf5/1.8.16 cray-netcdf/4.4.0 + cray-netcdf-hdf5parallel cray-netcdf-hdf5parallel/4.4.0 cray-hdf5-parallel/1.8.16 cray-parallel-netcdf/1.7.0 cmake/3.3.2 + pmi/5.0.10-1.0000.11050.0.0.ari + papi/5.4.3.2 + zlib + + + + + 1 + 1 + + + 128M + spread + threads + + @@ -288,8 +458,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 @@ -303,8 +473,8 @@ Linux workstation or laptop + LINUX acme_developer - Linux gnu openmpi,mpich,mpi-serial $ENV{HOME}/projects/acme/scratch/$CASE/run @@ -313,8 +483,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 @@ -325,7 +495,7 @@ mpirun - -np {{ num_tasks }} + -np $TOTALPES @@ -338,14 +508,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 @@ -357,7 +527,7 @@ mpirun - -np {{ num_tasks }} + -np $TOTALPES @@ -374,7 +544,7 @@ sems-env sems-git sems-python/2.7.9 - sems-gcc/5.1.0 + sems-gcc/5.3.0 sems-openmpi/1.8.7 sems-cmake/2.8.12 sems-netcdf/4.3.2/parallel @@ -392,16 +562,16 @@ wwwproxy.sandia.gov:80 acme_developer LINUX - gnu + 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 @@ -413,7 +583,7 @@ mpirun - -np {{ num_tasks }} + -np $TOTALPES @@ -426,17 +596,26 @@ module module - - git/2.1.3 - 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-intel/15.0.2 + + + 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} @@ -448,16 +627,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 @@ -469,7 +648,7 @@ mpirun - -np {{ num_tasks }} + -np $TOTALPES @@ -488,8 +667,8 @@ - $(dirname $(dirname $(which ncdump))) - $(dirname $(dirname $(which pnetcdf_version))) + $SHELL{dirname $(dirname $(which ncdump))} + $SHELL{dirname $(dirname $(which pnetcdf_version))} @@ -501,14 +680,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 @@ -524,8 +703,8 @@ mpiexec --bind-to-core - --n {{ num_tasks }} - --npernode {{ tasks_per_node }} + --n $TOTALPES + --npernode $PES_PER_NODE @@ -545,20 +724,30 @@ sems-env sems-git sems-python/2.7.9 + sems-cmake gnu/4.9.2 intel/intel-15.0.3.187 - openmpi-intel/1.8 - libraries/intel-mkl-15.0.2.164 + openmpi-intel/1.6 libraries/intel-mkl-15.0.2.164 - sems-hdf5/1.8.12/parallel - sems-netcdf/4.3.2/parallel - sems-hdf5/1.8.11/base - sems-netcdf/4.3.2/base + + + + + - $SEMS_NETCDF_ROOT - $SEMS_NETCDF_ROOT + + /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 @@ -571,14 +760,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 @@ -594,8 +783,8 @@ mpiexec --bind-to-core - --n {{ num_tasks }} - --npernode {{ tasks_per_node }} + --n $TOTALPES + --npernode $PES_PER_NODE @@ -615,20 +804,30 @@ sems-env sems-git sems-python/2.7.9 + sems-cmake gnu/4.9.2 intel/intel-15.0.3.187 - openmpi-intel/1.8 - libraries/intel-mkl-15.0.2.164 + openmpi-intel/1.6 libraries/intel-mkl-15.0.2.164 - sems-hdf5/1.8.12/parallel - sems-netcdf/4.3.2/parallel - sems-hdf5/1.8.11/base - sems-netcdf/4.3.2/base + + + + + - $SEMS_NETCDF_ROOT - $SEMS_NETCDF_ROOT + + /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 @@ -639,15 +838,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 @@ -660,7 +859,7 @@ mpiexec - -n {{ num_tasks }} + -n $TOTALPES @@ -698,40 +897,49 @@ /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 - + + 64M + ANL/LCRC Linux Cluster b.*.lcrc.anl.gov acme_integration - gnu,intel,pgi + intel,gnu,pgi mvapich,openmpi,mpi-serial - /lcrc/group/acme/$USER/acme_scratch - /lcrc/project/$PROJECT - $CESMSCRATCHROOT/$CASE/run - $CESMSCRATCHROOT/$CASE/bld + /lcrc/group/acme/$USER/acme_scratch + /lcrc/group/acme + $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 acme - 4 + 8 36 36 FALSE ACME - + + mpiexec + + -n $TOTALPES + --map-by ppr:{{ tasks_per_numa }}:socket:PE=$OMP_NUM_THREADS --bind-to core + + + mpiexec -n $TOTALPES @@ -745,25 +953,25 @@ /etc/profile.d/a_softenv.sh soft soft - - +intel-16.0.3 - +netcdf-c-4.4.0-f77-4.4.4-intel-16.0.3-serial + +cmake-2.8.12 +python-2.7 + + +intel-17.0.0 + +netcdf-c-4.4.1-f77-4.4.4-intel-17.0.0-serial + - +mvapich2-2.2b-intel-16.0.3-acme - +pnetcdf-1.7.0-intel-16.0.3-mvapich2-2.2b-acme + +mvapich2-2.2-intel-17.0.0-acme + +pnetcdf-1.7.0-intel-17.0.0-mvapich2-2.2-acme - +openmpi-1.10.3-intel-16.0.3-acme - +pnetcdf-1.7.0-intel-16.0.3-openmpi-1.10.3-acme + +openmpi-2.0.1-intel-17.0.0-acme + +pnetcdf-1.7.0-intel-17.0.0-openmpi-2.0.1-acme +gcc-5.3.0 +netcdf-c-4.4.0-f77-4.4.3-gcc-5.3.0-serial - +cmake-2.8.12 - +python-2.7 +mvapich2-2.2b-gcc-5.3.0-acme @@ -776,8 +984,6 @@ +pgi-16.3 +netcdf-c-4.4.0-f77-4.4.3-pgi-16.3-serial - +cmake-2.8.12 - +python-2.7 +mvapich2-2.2b-pgi-16.3-acme @@ -788,32 +994,17 @@ +pnetcdf-1.6.1-pgi-16.3-openmpi-1.10.2-acme - - /soft/spack/opt/spack/linux-centos6-x86_64/intel-16.0.3/netcdf-4.4.0-ds5gqquzjytf4efz3d5njsvpkfmmrwq7 - - - /soft/spack/opt/spack/linux-centos6-x86_64/intel-16.0.3/parallel-netcdf-1.7.0-gabvxdumr3chrvldpid5sqwtkijq6xkr - - - /soft/spack/opt/spack/linux-centos6-x86_64/intel-16.0.3/parallel-netcdf-1.7.0-3gxxcl2twfmvvq7rvs7z3yykaw4t2trr - - - /soft/spack/opt/spack/linux-x86_64/gcc-5.3.0/netcdf-4.4.0-xezev3j3kyay6obokfjvwfzqc2l6uwh5 - - - /soft/spack/opt/spack/linux-x86_64/gcc-5.3.0/parallel-netcdf-1.6.1-njywxqs3qjc75ah5mrziqln3qk2nkzg6 - - - /soft/spack/opt/spack/linux-x86_64/gcc-5.3.0/parallel-netcdf-1.6.1-vdvnv2sfg53mug2rcyalhb47nfxk2ki7 - - - /soft/spack/opt/spack/linux-x86_64/pgi-16.3-0/netcdf-4.4.0-3jeeee43ip5lcnvdgxssbqhnvylxw5gp - - - /soft/spack/opt/spack/linux-x86_64/pgi-16.3-0/parallel-netcdf-1.6.1-4uarepsh5u2am2bbv2cbct4fl7jombz4 + + `which nc-config | xargs dirname | xargs dirname` + `which pnetcdf_version | xargs dirname | xargs dirname` - - /soft/spack/opt/spack/linux-x86_64/pgi-16.3-0/parallel-netcdf-1.6.1-5lmcmthdcd2ewbvtpncpnryzocj5b3bd + + 256M + spread + threads + 1 + 1 + 1 @@ -823,14 +1014,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 @@ -850,11 +1041,11 @@ --ranks-per-node $PES_PER_NODE --np $TOTALPES - --block $COBALT_PARTNAME --envs OMP_WAIT_POLICY=active --envs BG_SMP_FAST_WAKEUP=yes --envs MPI_TYPE_MAX=100000 --envs OMP_DYNAMIC=FALSE $LOCARGS + --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 @@ -873,7 +1064,6 @@ 100000 FALSE 64M - /soft/libraries/hdf5/1.8.14/cnk-xl/current @@ -884,15 +1074,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 @@ -906,13 +1096,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 @@ -942,18 +1132,18 @@ ANL IBM BG/Q, os is BGP, 16 cores/node, batch system is cobalt - .*.fst.alcf.anl.gov + mira.* 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 @@ -973,11 +1163,11 @@ --ranks-per-node $PES_PER_NODE --np $TOTALPES - --block $COBALT_PARTNAME --envs OMP_WAIT_POLICY=active --envs BG_SMP_FAST_WAKEUP=yes $LOCARGS + --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 @@ -987,7 +1177,7 @@ soft +mpiwrapper-xl - @ibm-compilers-2015-02 + @ibm-compilers-2016-05 +cmake +python @@ -996,7 +1186,6 @@ 10000 FALSE 64M - /soft/libraries/hdf5/1.8.14/cnk-xl/current @@ -1009,12 +1198,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 @@ -1035,8 +1224,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 @@ -1052,12 +1241,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 @@ -1067,7 +1256,7 @@ srun --mpi=none - --ntasks={{ num_tasks }} + --ntasks=$TOTALPES --cpu_bind=sockets --cpu_bind=verbose --kill-on-bad-exit @@ -1087,7 +1276,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 @@ -1100,7 +1289,7 @@ /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpirun - -np {{ num_tasks }} + -np $TOTALPES --hostfile $ENV{PBS_NODEFILE} @@ -1135,7 +1324,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 @@ -1148,7 +1337,7 @@ /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpirun - -np {{ num_tasks }} + -np $TOTALPES --hostfile $ENV{PBS_NODEFILE} @@ -1173,8 +1362,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 @@ -1184,7 +1373,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} @@ -1216,14 +1405,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 @@ -1239,12 +1428,14 @@ aprun - -j {{ hyperthreading }} + + {{ aprun }} @@ -1307,11 +1498,11 @@ + /ccs/home/norton/.modules PrgEnv-pgi - pgi pgi/15.7.0 - + pgi pgi/15.9.lustre cray-mpich/7.4.0 - cray-libsci/16.06.01 + cray-libsci/16.06.1 esmf/5.2.0rp2 atp/2.0.2 cudatoolkit @@ -1350,7 +1541,6 @@ subversion/1.8.3 cmake/2.8.10.2 - >& software_environment.txt - - $ENV{MODULEPATH}:/ccs/home/norton/.modules + istanbul 1 @@ -1391,14 +1580,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 @@ -1414,9 +1603,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 @@ -1490,8 +1679,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 /turquoise/usr/projects/climate/SHARED_CLIMATE/software/wolf/cprnc/v0.40/cprnc /usr/share/Modules/init/perl.pm @@ -1531,7 +1720,7 @@ mpirun - -n {{ num_tasks }} + -n $TOTALPES --bind-to core --map-by node @@ -1539,7 +1728,7 @@ mpirun - -n {{ num_tasks }} + -n $TOTALPES --map-by node --bind-to core @@ -1568,8 +1757,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 /turquoise/usr/projects/climate/SHARED_CLIMATE/software/wolf/cprnc/v0.40/cprnc /usr/share/Modules/init/perl.pm @@ -1613,19 +1802,19 @@ mpirun - -n {{ num_tasks }} + -n $TOTALPES mpirun - -n {{ num_tasks }} + -n $TOTALPES srun - -n {{ num_tasks }} + -n $TOTALPES @@ -1645,14 +1834,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 @@ -1756,7 +1945,7 @@ USERDEFINED_optional_run - USERDEFINED_optional_run + USERDEFINED_optional_run USERDEFINED_optional_test @@ -1768,10 +1957,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 @@ -1796,7 +1985,7 @@ USERDEFINED_optional_run - USERDEFINED_optional_run + USERDEFINED_optional_run USERDEFINED_optional_test @@ -1807,10 +1996,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 @@ -1820,15 +2009,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 @@ -1837,15 +2026,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 @@ -1855,15 +2044,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 @@ -1873,15 +2062,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_config/acme/machines/config_pio.xml b/cime_config/acme/machines/config_pio.xml index ae837f347ff3..6df81a56703f 100644 --- a/cime_config/acme/machines/config_pio.xml +++ b/cime_config/acme/machines/config_pio.xml @@ -22,7 +22,7 @@ $PES_PER_NODE 60 - 64 + 128 @@ -79,13 +79,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_config/acme/allactive/testmods_dirs/cam/outfrq9s/user_nl_cam b/cime_config/acme/testmods_dirs/allactive/cam/outfrq9s/user_nl_cam similarity index 100% rename from cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/user_nl_cam rename to cime_config/acme/testmods_dirs/allactive/cam/outfrq9s/user_nl_cam diff --git a/cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/user_nl_clm b/cime_config/acme/testmods_dirs/allactive/cam/outfrq9s/user_nl_clm similarity index 100% rename from cime_config/acme/allactive/testmods_dirs/cam/outfrq9s/user_nl_clm rename to cime_config/acme/testmods_dirs/allactive/cam/outfrq9s/user_nl_clm diff --git a/cime_config/cesm/machines/buildlib.csm_share b/cime_config/buildlib.csm_share similarity index 89% rename from cime_config/cesm/machines/buildlib.csm_share rename to cime_config/buildlib.csm_share index 25562ae352a0..dd482bd91d72 100755 --- a/cime_config/cesm/machines/buildlib.csm_share +++ b/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_config/cesm/machines/buildlib.gptl b/cime_config/buildlib.gptl similarity index 74% rename from cime_config/cesm/machines/buildlib.gptl rename to cime_config/buildlib.gptl index c750690195df..1269c3fd4ccc 100755 --- a/cime_config/cesm/machines/buildlib.gptl +++ b/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_config/buildlib.mct b/cime_config/buildlib.mct new file mode 100755 index 000000000000..c0bcc343fd2a --- /dev/null +++ b/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_config/buildlib.mpi-serial b/cime_config/buildlib.mpi-serial new file mode 100755 index 000000000000..a065fc3eec00 --- /dev/null +++ b/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_config/buildlib.pio b/cime_config/buildlib.pio new file mode 100755 index 000000000000..3556edc3a6e8 --- /dev/null +++ b/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_config/cesm/allactive/config_compsets.xml b/cime_config/cesm/allactive/config_compsets.xml deleted file mode 100644 index bf3f7fa09de6..000000000000 --- a/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_config/cesm/allactive/config_pes.xml b/cime_config/cesm/allactive/config_pes.xml deleted file mode 100644 index 05bfbdcd1ad8..000000000000 --- a/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_config/cesm/allactive/testlist_allactive.xml b/cime_config/cesm/allactive/testlist_allactive.xml deleted file mode 100644 index d847e74041bd..000000000000 --- a/cime_config/cesm/allactive/testlist_allactive.xml +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01/include_user_mods b/cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01/include_user_mods deleted file mode 100644 index 449be787cb7d..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01io/include_user_mods b/cime_config/cesm/allactive/testmods_dirs/allactive/cesm2dev01io/include_user_mods deleted file mode 100644 index 2a540bec29c3..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/README b/cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/README deleted file mode 100644 index 4a6807ea65c6..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/xmlchange_cmnds b/cime_config/cesm/allactive/testmods_dirs/allactive/cism/oneway/xmlchange_cmnds deleted file mode 100644 index 404b22b0067e..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/README b/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/README deleted file mode 100644 index e8fe16fd420b..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/include_user_mods b/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/include_user_mods deleted file mode 100644 index 1c29cfcb0057..000000000000 --- a/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../apply_to_multiinstance diff --git a/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/shell_commands b/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/shell_commands deleted file mode 100755 index de22fb6073d7..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/user_nl_cism b/cime_config/cesm/allactive/testmods_dirs/allactive/cism/trilinos/user_nl_cism deleted file mode 100644 index 7b6d595280e9..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_cice b/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_cice deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_clm b/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_clm deleted file mode 100644 index 6dd9ac051670..000000000000 --- a/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_clm +++ /dev/null @@ -1 +0,0 @@ - finidat = '' diff --git a/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_mosart b/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_mosart deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_pop b/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_pop deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_rtm b/cime_config/cesm/allactive/testmods_dirs/allactive/default/user_nl_rtm deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/include_user_mods b/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/include_user_mods deleted file mode 100644 index fe0e18cf8896..000000000000 --- a/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../default diff --git a/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cam b/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cam deleted file mode 100644 index 101fcd23a61a..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cice b/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cice deleted file mode 100644 index 4aa86d5cbf89..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cism b/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_cism deleted file mode 100644 index 1e65ec4b98f5..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_clm b/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_clm deleted file mode 100644 index 946a7a4f4a45..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_mosart b/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_mosart deleted file mode 100644 index ecd3d1730ede..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_pop b/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_pop deleted file mode 100644 index 0173835581db..000000000000 --- a/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_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_rtm b/cime_config/cesm/allactive/testmods_dirs/allactive/defaultio/user_nl_rtm deleted file mode 100644 index ecd3d1730ede..000000000000 --- a/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_config/cesm/allactive/usermods_dirs/b1850/shell_commands b/cime_config/cesm/allactive/usermods_dirs/b1850/shell_commands deleted file mode 100644 index 8253c716b11b..000000000000 --- a/cime_config/cesm/allactive/usermods_dirs/b1850/shell_commands +++ /dev/null @@ -1,2 +0,0 @@ -./xmlchange OCN_CHL_TYPE=diagnostic - diff --git a/cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_clm b/cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_clm deleted file mode 100644 index 4c91174e7dca..000000000000 --- a/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_config/cesm/allactive/usermods_dirs/b1850/user_nl_cpl b/cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_cpl deleted file mode 100644 index 85e9b9c76f4c..000000000000 --- a/cime_config/cesm/allactive/usermods_dirs/b1850/user_nl_cpl +++ /dev/null @@ -1,2 +0,0 @@ -flux_diurnal=.true. - diff --git a/cime_config/cesm/allactive/usermods_dirs/b1850_cism/include_user_mods b/cime_config/cesm/allactive/usermods_dirs/b1850_cism/include_user_mods deleted file mode 100644 index b46f5b94020e..000000000000 --- a/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_config/cesm/allactive/usermods_dirs/b1850_cism/user_nl_cism b/cime_config/cesm/allactive/usermods_dirs/b1850_cism/user_nl_cism deleted file mode 100644 index 502c51c6468e..000000000000 --- a/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_config/cesm/config_archive.xml b/cime_config/cesm/config_archive.xml index a0ad0355290e..3566c870ef94 100644 --- a/cime_config/cesm/config_archive.xml +++ b/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_config/cesm/config_files.xml b/cime_config/cesm/config_files.xml index 1e9c4afb1b6a..ba9313504fcb 100644 --- a/cime_config/cesm/config_files.xml +++ b/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_config/cesm/config_grids.xml b/cime_config/cesm/config_grids.xml index 5081b2a389be..183fc54d57f7 100644 --- a/cime_config/cesm/config_grids.xml +++ b/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_config/cesm/machines/Makefile b/cime_config/cesm/machines/Makefile index 74d835133435..e9a25c401b49 100644 --- a/cime_config/cesm/machines/Makefile +++ b/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_config/cesm/machines/buildlib.mct b/cime_config/cesm/machines/buildlib.mct deleted file mode 100755 index 65cf5f5e5ef7..000000000000 --- a/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_config/cesm/machines/buildlib.pio b/cime_config/cesm/machines/buildlib.pio deleted file mode 100755 index 569a26872511..000000000000 --- a/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_config/cesm/machines/config_batch.xml b/cime_config/cesm/machines/config_batch.xml index 14379caad65b..419cd046ecbc 100644 --- a/cime_config/cesm/machines/config_batch.xml +++ b/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_config/cesm/machines/config_batch.xsd b/cime_config/cesm/machines/config_batch.xsd deleted file mode 100644 index 4536bf976125..000000000000 --- a/cime_config/cesm/machines/config_batch.xsd +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cime_config/cesm/machines/config_build.xml b/cime_config/cesm/machines/config_build.xml deleted file mode 100644 index dd0f2f12ef15..000000000000 --- a/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_config/cesm/machines/config_compilers.xml b/cime_config/cesm/machines/config_compilers.xml index e106a13acb36..3fb0c6972a23 100644 --- a/cime_config/cesm/machines/config_compilers.xml +++ b/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_config/cesm/machines/config_lt_archive.xml b/cime_config/cesm/machines/config_lt_archive.xml index 48c4504a5032..6e0bda3f55cc 100644 --- a/cime_config/cesm/machines/config_lt_archive.xml +++ b/cime_config/cesm/machines/config_lt_archive.xml @@ -1,6 +1,6 @@ - + diff --git a/cime_config/cesm/machines/config_machines.xml b/cime_config/cesm/machines/config_machines.xml index 93cd757f145e..b23fd185072b 100644 --- a/cime_config/cesm/machines/config_machines.xml +++ b/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_config/cesm/machines/nag_mpi_argument.txt b/cime_config/cesm/machines/nag_mpi_argument.txt index 6452f80ef592..95e1380aaed5 100644 --- a/cime_config/cesm/machines/nag_mpi_argument.txt +++ b/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_config/cesm/machines/template.case.run b/cime_config/cesm/machines/template.case.run index 71e2f8367e81..24162fe45951 100755 --- a/cime_config/cesm/machines/template.case.run +++ b/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_config/cesm/machines/template.lt_archive b/cime_config/cesm/machines/template.lt_archive index 25ca7f8e9776..1dd9de1a6bc0 100755 --- a/cime_config/cesm/machines/template.lt_archive +++ b/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_config/cesm/machines/template.st_archive b/cime_config/cesm/machines/template.st_archive index ae5411eb3257..0a1d935d5b0b 100755 --- a/cime_config/cesm/machines/template.st_archive +++ b/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_config/cesm/machines/userdefined_laptop_template/config_machines.xml b/cime_config/cesm/machines/userdefined_laptop_template/config_machines.xml index 7ecce99c97a4..575f67da0d21 100644 --- a/cime_config/cesm/machines/userdefined_laptop_template/config_machines.xml +++ b/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_config/config_headers.xml b/cime_config/config_headers.xml index d944e1d98c07..b99b9f05f41e 100644 --- a/cime_config/config_headers.xml +++ b/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_config/config_tests.xml b/cime_config/config_tests.xml index ce707321032c..45380244b44d 100644 --- a/cime_config/config_tests.xml +++ b/cime_config/config_tests.xml @@ -3,16 +3,17 @@ + @@ -40,8 +41,9 @@ + - + diff --git a/cime_config/xml_schemas/config_batch.xsd b/cime_config/xml_schemas/config_batch.xsd new file mode 100644 index 000000000000..da8e028a5b38 --- /dev/null +++ b/cime_config/xml_schemas/config_batch.xsd @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime_config/xml_schemas/config_build.xsd b/cime_config/xml_schemas/config_compilers_v2.xsd similarity index 79% rename from cime_config/xml_schemas/config_build.xsd rename to cime_config/xml_schemas/config_compilers_v2.xsd index 3e26ffb06658..8160b4df8e88 100644 --- a/cime_config/xml_schemas/config_build.xsd +++ b/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_config/xml_schemas/config_compsets.xsd b/cime_config/xml_schemas/config_compsets.xsd new file mode 100644 index 000000000000..e9072738a6d7 --- /dev/null +++ b/cime_config/xml_schemas/config_compsets.xsd @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime_config/xml_schemas/config_grids_v2.xsd b/cime_config/xml_schemas/config_grids_v2.xsd new file mode 100644 index 000000000000..69e09e540bcf --- /dev/null +++ b/cime_config/xml_schemas/config_grids_v2.xsd @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime_config/xml_schemas/config_machines.xsd b/cime_config/xml_schemas/config_machines.xsd new file mode 100644 index 000000000000..0385401f881f --- /dev/null +++ b/cime_config/xml_schemas/config_machines.xsd @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime_config/xml_schemas/config_machines_template.xml b/cime_config/xml_schemas/config_machines_template.xml new file mode 100644 index 000000000000..8b8e48b862ce --- /dev/null +++ b/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_config/xml_schemas/config_pes.xsd b/cime_config/xml_schemas/config_pes.xsd new file mode 100644 index 000000000000..105fc46d222d --- /dev/null +++ b/cime_config/xml_schemas/config_pes.xsd @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime_config/xml_schemas/entry_id.xsd b/cime_config/xml_schemas/entry_id.xsd new file mode 100644 index 000000000000..51e3229d0601 --- /dev/null +++ b/cime_config/xml_schemas/entry_id.xsd @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime_config/xml_schemas/entry_id_base.xsd b/cime_config/xml_schemas/entry_id_base.xsd new file mode 100644 index 000000000000..f7ff393e5228 --- /dev/null +++ b/cime_config/xml_schemas/entry_id_base.xsd @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime_config/xml_schemas/entry_id_namelist.xsd b/cime_config/xml_schemas/entry_id_namelist.xsd new file mode 100644 index 000000000000..5ce333869864 --- /dev/null +++ b/cime_config/xml_schemas/entry_id_namelist.xsd @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime_config/xml_schemas/testlist.xsd b/cime_config/xml_schemas/testlist.xsd index 3abfa3be2249..6890255a0f0b 100644 --- a/cime_config/xml_schemas/testlist.xsd +++ b/cime_config/xml_schemas/testlist.xsd @@ -1,58 +1,61 @@ - - + + - - - - - - - - + - - - - - - - + + + + - + + - + + + + - + - + + - - + - + - + + + - + - + - \ No newline at end of file + + + + + + + + diff --git a/components/data_comps/datm/atm_comp_esmf.F90 b/components/data_comps/datm/atm_comp_esmf.F90 deleted file mode 100644 index 54a7cd711cbd..000000000000 --- a/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/components/data_comps/datm/bld/build-namelist b/components/data_comps/datm/bld/build-namelist deleted file mode 100755 index 7db8506a2572..000000000000 --- a/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/components/data_comps/datm/bld/namelist_files/namelist_defaults.xsl b/components/data_comps/datm/bld/namelist_files/namelist_defaults.xsl deleted file mode 100644 index f4fbce3fb284..000000000000 --- a/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/components/data_comps/datm/bld/namelist_files/namelist_defaults_datm.xml b/components/data_comps/datm/bld/namelist_files/namelist_defaults_datm.xml deleted file mode 100644 index cb2ade1546c8..000000000000 --- a/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/components/data_comps/datm/bld/namelist_files/namelist_definition.xsl b/components/data_comps/datm/bld/namelist_files/namelist_definition.xsl deleted file mode 100644 index 3b83f6a71163..000000000000 --- a/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/components/data_comps/datm/bld/namelist_files/namelist_definition_datm.xml b/components/data_comps/datm/bld/namelist_files/namelist_definition_datm.xml deleted file mode 100644 index 8243e2d55c7d..000000000000 --- a/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/components/data_comps/datm/bld/unit_testers/build-namelist_test.pl b/components/data_comps/datm/bld/unit_testers/build-namelist_test.pl deleted file mode 100755 index 37073c9202ae..000000000000 --- a/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/components/data_comps/datm/bld/unit_testers/env_run.xml b/components/data_comps/datm/bld/unit_testers/env_run.xml deleted file mode 100644 index 3a62fe8e498e..000000000000 --- a/components/data_comps/datm/bld/unit_testers/env_run.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_defaults_datm.xml b/components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_defaults_datm.xml deleted file mode 100644 index 5731eb4affac..000000000000 --- a/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/components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_definition_datm.xml b/components/data_comps/datm/bld/unit_testers/user_xml_dir/namelist_definition_datm.xml deleted file mode 100644 index 947936c0a9c4..000000000000 --- a/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/components/data_comps/datm/cime_config/buildlib b/components/data_comps/datm/cime_config/buildlib index 0ffe4a311bf4..5f901d7dedef 100755 --- a/components/data_comps/datm/cime_config/buildlib +++ b/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/components/data_comps/datm/cime_config/buildnml b/components/data_comps/datm/cime_config/buildnml index 01752a6bd212..a4c49f3baa8a 100755 --- a/components/data_comps/datm/cime_config/buildnml +++ b/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/components/data_comps/datm/cime_config/config_archive.xml b/components/data_comps/datm/cime_config/config_archive.xml new file mode 100644 index 000000000000..4b34208dddeb --- /dev/null +++ b/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/components/data_comps/datm/cime_config/config_component.xml b/components/data_comps/datm/cime_config/config_component.xml index e06a6ad05b9f..f5a32e93253f 100644 --- a/components/data_comps/datm/cime_config/config_component.xml +++ b/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,31 +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 + 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 @@ -79,17 +84,27 @@ none,20tr,rcp2.6,rcp4.5,rcp6.0,rcp8.5 none - rcp8.5 - rcp6.0 - rcp4.5 - rcp2.6 - 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 @@ -151,6 +166,9 @@ 1895 1901 1901 + 1895 + 1901 + 1901 1 2004 2005 @@ -177,10 +195,14 @@ 1948 1901 1901 + 2000 1972 1948 1901 1901 + 1948 + 1901 + 1901 1948 1972 1991 @@ -207,10 +229,14 @@ 1972 1920 1920 + 2004 2004 1972 1920 1920 + 1972 + 1920 + 1920 2004 2004 2010 @@ -230,20 +256,24 @@ 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: + QIAN atm input data for 1948-1972: QIAN atm input data for 1948-2004: QIAN atm input data for 1972-2004: CRUNCEP atm input data for 1901-1920: CRUNCEP atm input data for 1991-2010: CRUNCEP atm input data for 2002-2003: CRUNCEP atm input data for 1901-1920: + CRUNCEP atm input data for 1901-1920: CRUNCEP atm input data for 1991-2010: GSWP3 atm input data for 1901-1920: GSWP3 atm input data for 1991-2010: GSWP3 atm input data for 2002-2003: GSWP3 atm input data for 1901-1920: + GSWP3 atm input data for 1901-1920: GSWP3 atm input data for 1991-2010: CPL history input data: single point tower site atm input data: @@ -259,5 +289,5 @@ ========================================= - + diff --git a/components/data_comps/datm/cime_config/namelist_definition_datm.xml b/components/data_comps/datm/cime_config/namelist_definition_datm.xml new file mode 100644 index 000000000000..bd30c536205c --- /dev/null +++ b/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/components/data_comps/datm/datm_comp_mod.F90 b/components/data_comps/datm/datm_comp_mod.F90 index 4e060319f405..48a7d63e4171 100644 --- a/components/data_comps/datm/datm_comp_mod.F90 +++ b/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/components/data_comps/desp/cime_config/buildlib b/components/data_comps/desp/cime_config/buildlib new file mode 100755 index 000000000000..5f9588e36523 --- /dev/null +++ b/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/components/data_comps/desp/cime_config/buildnml b/components/data_comps/desp/cime_config/buildnml new file mode 100755 index 000000000000..45ac53215691 --- /dev/null +++ b/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/components/data_comps/desp/cime_config/config_component.xml b/components/data_comps/desp/cime_config/config_component.xml new file mode 100644 index 000000000000..01f1b49884c2 --- /dev/null +++ b/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/components/data_comps/desp/cime_config/namelist_definition_desp.xml b/components/data_comps/desp/cime_config/namelist_definition_desp.xml new file mode 100644 index 000000000000..01c17a3417d8 --- /dev/null +++ b/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/components/data_comps/desp/cime_config/user_nl_desp b/components/data_comps/desp/cime_config/user_nl_desp new file mode 100644 index 000000000000..0b6d4bbb1623 --- /dev/null +++ b/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/components/data_comps/desp/desp_comp_mod.F90 b/components/data_comps/desp/desp_comp_mod.F90 new file mode 100644 index 000000000000..ab86eb3c2419 --- /dev/null +++ b/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/components/data_comps/desp/esp_comp_mct.F90 b/components/data_comps/desp/esp_comp_mct.F90 new file mode 100644 index 000000000000..549a1ce1027c --- /dev/null +++ b/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/components/data_comps/desp/esp_utils.F90 b/components/data_comps/desp/esp_utils.F90 new file mode 100644 index 000000000000..a9fc6f1e54f9 --- /dev/null +++ b/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/components/data_comps/dice/bld/build-namelist b/components/data_comps/dice/bld/build-namelist deleted file mode 100755 index faa1dab5fda6..000000000000 --- a/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/components/data_comps/dice/bld/namelist_files/namelist_defaults_dice.xml b/components/data_comps/dice/bld/namelist_files/namelist_defaults_dice.xml deleted file mode 100644 index 9b62d7bf6931..000000000000 --- a/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/components/data_comps/dice/bld/namelist_files/namelist_definition_dice.xml b/components/data_comps/dice/bld/namelist_files/namelist_definition_dice.xml deleted file mode 100644 index 3a53ec15dd44..000000000000 --- a/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/components/data_comps/dice/cime_config/buildlib b/components/data_comps/dice/cime_config/buildlib index b4ef905d8117..4730f0ea1026 100755 --- a/components/data_comps/dice/cime_config/buildlib +++ b/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/components/data_comps/dice/cime_config/buildnml b/components/data_comps/dice/cime_config/buildnml index 4ff821072ddc..e4d2be36b206 100755 --- a/components/data_comps/dice/cime_config/buildnml +++ b/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/components/data_comps/dice/cime_config/config_archive.xml b/components/data_comps/dice/cime_config/config_archive.xml new file mode 100644 index 000000000000..330deab5c7ff --- /dev/null +++ b/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/components/data_comps/dice/cime_config/config_component.xml b/components/data_comps/dice/cime_config/config_component.xml index 2fd6f5ae47c1..26591c92f2bb 100644 --- a/components/data_comps/dice/cime_config/config_component.xml +++ b/components/data_comps/dice/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -58,4 +58,4 @@ ========================================= - + diff --git a/components/data_comps/dice/cime_config/namelist_definition_dice.xml b/components/data_comps/dice/cime_config/namelist_definition_dice.xml new file mode 100644 index 000000000000..57b32f6bce56 --- /dev/null +++ b/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/components/data_comps/dice/dice_comp_mod.F90 b/components/data_comps/dice/dice_comp_mod.F90 index 3dd49fa35960..ec31b04cdb7f 100644 --- a/components/data_comps/dice/dice_comp_mod.F90 +++ b/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/components/data_comps/dice/ice_comp_esmf.F90 b/components/data_comps/dice/ice_comp_esmf.F90 deleted file mode 100644 index 31d449898957..000000000000 --- a/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/components/data_comps/dlnd/bld/build-namelist b/components/data_comps/dlnd/bld/build-namelist deleted file mode 100755 index d807cfac06cd..000000000000 --- a/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/components/data_comps/dlnd/bld/namelist_files/namelist_defaults_dlnd.xml b/components/data_comps/dlnd/bld/namelist_files/namelist_defaults_dlnd.xml deleted file mode 100644 index a9ca57434cd2..000000000000 --- a/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/components/data_comps/dlnd/bld/namelist_files/namelist_definition_dlnd.xml b/components/data_comps/dlnd/bld/namelist_files/namelist_definition_dlnd.xml deleted file mode 100644 index a7175032ffd8..000000000000 --- a/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/components/data_comps/dlnd/cime_config/buildlib b/components/data_comps/dlnd/cime_config/buildlib index d8112b6f24da..81bad4d7411c 100755 --- a/components/data_comps/dlnd/cime_config/buildlib +++ b/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/components/data_comps/dlnd/cime_config/buildnml b/components/data_comps/dlnd/cime_config/buildnml index b9c3c7bfe37a..04c6de1f9d60 100755 --- a/components/data_comps/dlnd/cime_config/buildnml +++ b/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/components/data_comps/dlnd/cime_config/config_archive.xml b/components/data_comps/dlnd/cime_config/config_archive.xml new file mode 100644 index 000000000000..1ccea9bdf31f --- /dev/null +++ b/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/components/data_comps/dlnd/cime_config/config_component.xml b/components/data_comps/dlnd/cime_config/config_component.xml index a756c634e627..f74f63c47d79 100644 --- a/components/data_comps/dlnd/cime_config/config_component.xml +++ b/components/data_comps/dlnd/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -34,10 +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.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 @@ -48,10 +49,11 @@ char UNSET - b.e10.BG20TRCN.f09_g16.002 - b.e10.BG1850CN.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 @@ -62,10 +64,11 @@ integer 1 - 1 - 1 - 1850 - 2006 + 1 + 1 + 1850 + 1850 + 2006 run_component_dlnd env_run.xml @@ -76,10 +79,11 @@ integer 1 - 1976 - 26 - 1850 - 2006 + 1976 + 26 + 1850 + 1850 + 2006 run_component_dlnd env_run.xml @@ -90,10 +94,11 @@ integer 1 - 2005 - 100 - 2005 - 2100 + 2005 + 100 + 2005 + 2005 + 2100 run_component_dlnd env_run.xml @@ -112,5 +117,5 @@ ========================================= - + diff --git a/components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml b/components/data_comps/dlnd/cime_config/namelist_definition_dlnd.xml new file mode 100644 index 000000000000..406c2636c4a1 --- /dev/null +++ b/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/components/data_comps/dlnd/dlnd_comp_mod.F90 b/components/data_comps/dlnd/dlnd_comp_mod.F90 index 158f0d2bb564..087c1213ff7f 100644 --- a/components/data_comps/dlnd/dlnd_comp_mod.F90 +++ b/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/components/data_comps/dlnd/lnd_comp_esmf.F90 b/components/data_comps/dlnd/lnd_comp_esmf.F90 deleted file mode 100644 index b7db917480e5..000000000000 --- a/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/components/data_comps/docn/bld/build-namelist b/components/data_comps/docn/bld/build-namelist deleted file mode 100755 index d9e8369ff0e9..000000000000 --- a/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/components/data_comps/docn/bld/namelist_files/namelist_defaults_docn.xml b/components/data_comps/docn/bld/namelist_files/namelist_defaults_docn.xml deleted file mode 100644 index f10a358e3aff..000000000000 --- a/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/components/data_comps/docn/bld/namelist_files/namelist_definition_docn.xml b/components/data_comps/docn/bld/namelist_files/namelist_definition_docn.xml deleted file mode 100644 index 5a10f2393aca..000000000000 --- a/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/components/data_comps/docn/cime_config/buildlib b/components/data_comps/docn/cime_config/buildlib index 0524a4739239..75ed5840ce4f 100755 --- a/components/data_comps/docn/cime_config/buildlib +++ b/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/components/data_comps/docn/cime_config/buildnml b/components/data_comps/docn/cime_config/buildnml index d1eb56fec0e1..42ec4c424178 100755 --- a/components/data_comps/docn/cime_config/buildnml +++ b/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/components/data_comps/docn/cime_config/config_archive.xml b/components/data_comps/docn/cime_config/config_archive.xml new file mode 100644 index 000000000000..69b7e07d38b7 --- /dev/null +++ b/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/components/data_comps/docn/cime_config/config_component.xml b/components/data_comps/docn/cime_config/config_component.xml index 3b63537ade6e..335a75481aa2 100644 --- a/components/data_comps/docn/cime_config/config_component.xml +++ b/components/data_comps/docn/cime_config/config_component.xml @@ -2,7 +2,7 @@ - + char @@ -99,12 +99,12 @@ $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.47x0.63_clim_c061106.nc $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.23x0.31_clim_c110526.nc - $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_1x1_1850_2012_c130411.nc - $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_48x96_1850_2012_c130411.nc - $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_1.9x2.5_1850_2012_c130411.nc - $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.9x1.25_1850_2012_c130411.nc - $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.47x0.63_1850_2012_c130411.nc - $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.23x0.31_1850_2012_c130411.nc + $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_1x1_1850_2012_c130411.nc + $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_48x96_1850_2012_c130411.nc + $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_1.9x2.5_1850_2012_c130411.nc + $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.9x1.25_1850_2012_c130411.nc + $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.47x0.63_1850_2012_c130411.nc + $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_0.23x0.31_1850_2012_c130411.nc $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_1x1_clim_pi_c101029.nc $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_48x96_clim_pi_c101028.nc $DIN_LOC_ROOT/atm/cam/sst/sst_HadOIBl_bc_1.9x2.5_clim_pi_c101028.nc @@ -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 @@ -130,12 +131,12 @@ $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.0.9x1.25_gx1v6_090403.nc $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/ocn/docn7/domain.ocn.1x1.111007.nc - $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.48x96_gx3v7_100114.nc - $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.1.9x2.5_gx1v6_090403.nc - $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.0.9x1.25_gx1v6_090403.nc - $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/ocn/docn7/domain.ocn.1x1.111007.nc + $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.48x96_gx3v7_100114.nc + $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.1.9x2.5_gx1v6_090403.nc + $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.0.9x1.25_gx1v6_090403.nc + $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/ocn/docn7/domain.ocn.1x1.111007.nc $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.48x96_gx3v7_100114.nc $DIN_LOC_ROOT/atm/cam/ocnfrac/domain.camocn.1.9x2.5_gx1v6_090403.nc @@ -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 @@ -156,7 +158,7 @@ 1 - 1850 + 1850 run_component_cam_sstice env_run.xml @@ -177,7 +179,7 @@ 0 - 1850 + 1850 run_component_cam_sstice env_run.xml @@ -188,12 +190,11 @@ - value integer 0 - 2012 + 2012 2000 run_component_cam_sstice @@ -219,5 +220,5 @@ ========================================= - + diff --git a/components/data_comps/docn/cime_config/namelist_definition_docn.xml b/components/data_comps/docn/cime_config/namelist_definition_docn.xml new file mode 100644 index 000000000000..32d2d7f5ba5a --- /dev/null +++ b/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/components/data_comps/docn/docn_comp_mod.F90 b/components/data_comps/docn/docn_comp_mod.F90 index 72f886d18f14..88cd3bc70a48 100644 --- a/components/data_comps/docn/docn_comp_mod.F90 +++ b/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/components/data_comps/docn/ocn_comp_esmf.F90 b/components/data_comps/docn/ocn_comp_esmf.F90 deleted file mode 100644 index 2896980063a1..000000000000 --- a/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/components/data_comps/drof/bld/build-namelist b/components/data_comps/drof/bld/build-namelist deleted file mode 100755 index b140d9492ffc..000000000000 --- a/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/components/data_comps/drof/bld/namelist_files/namelist_defaults_drof.xml b/components/data_comps/drof/bld/namelist_files/namelist_defaults_drof.xml deleted file mode 100644 index ce50d372ae26..000000000000 --- a/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/components/data_comps/drof/bld/namelist_files/namelist_definition_drof.xml b/components/data_comps/drof/bld/namelist_files/namelist_definition_drof.xml deleted file mode 100644 index f8ec980d26c3..000000000000 --- a/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/components/data_comps/drof/cime_config/buildlib b/components/data_comps/drof/cime_config/buildlib index 8b7682a2b199..b53123f5dacc 100755 --- a/components/data_comps/drof/cime_config/buildlib +++ b/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/components/data_comps/drof/cime_config/buildnml b/components/data_comps/drof/cime_config/buildnml index e3565e47dd58..e76eea5a8c38 100755 --- a/components/data_comps/drof/cime_config/buildnml +++ b/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/components/data_comps/drof/cime_config/config_archive.xml b/components/data_comps/drof/cime_config/config_archive.xml new file mode 100644 index 000000000000..804933fe8e15 --- /dev/null +++ b/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/components/data_comps/drof/cime_config/config_component.xml b/components/data_comps/drof/cime_config/config_component.xml index 373af732a213..3619af3dac92 100644 --- a/components/data_comps/drof/cime_config/config_component.xml +++ b/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/components/data_comps/drof/cime_config/namelist_definition_drof.xml b/components/data_comps/drof/cime_config/namelist_definition_drof.xml new file mode 100644 index 000000000000..a5a953ba8ed6 --- /dev/null +++ b/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/components/data_comps/drof/drof_comp_mod.F90 b/components/data_comps/drof/drof_comp_mod.F90 index d6cd9b4b60d9..060b5fad678c 100644 --- a/components/data_comps/drof/drof_comp_mod.F90 +++ b/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/components/data_comps/drof/rof_comp_esmf.F90 b/components/data_comps/drof/rof_comp_esmf.F90 deleted file mode 100644 index 7bae23027eff..000000000000 --- a/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/components/data_comps/dwav/bld/build-namelist b/components/data_comps/dwav/bld/build-namelist deleted file mode 100755 index 89f88efe088e..000000000000 --- a/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/components/data_comps/dwav/bld/namelist_files/namelist_defaults_dwav.xml b/components/data_comps/dwav/bld/namelist_files/namelist_defaults_dwav.xml deleted file mode 100644 index f28ddea4b508..000000000000 --- a/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/components/data_comps/dwav/bld/namelist_files/namelist_definition_dwav.xml b/components/data_comps/dwav/bld/namelist_files/namelist_definition_dwav.xml deleted file mode 100644 index 6842bff96315..000000000000 --- a/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/components/data_comps/dwav/cime_config/buildlib b/components/data_comps/dwav/cime_config/buildlib index 81c87c3a2b34..1c9cb28ac5fb 100755 --- a/components/data_comps/dwav/cime_config/buildlib +++ b/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/components/data_comps/dwav/cime_config/buildnml b/components/data_comps/dwav/cime_config/buildnml index 8bc4debaa96a..3a412278f2d5 100755 --- a/components/data_comps/dwav/cime_config/buildnml +++ b/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/components/data_comps/dwav/cime_config/config_archive.xml b/components/data_comps/dwav/cime_config/config_archive.xml new file mode 100644 index 000000000000..1c0dfdbe84ba --- /dev/null +++ b/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/components/data_comps/dwav/cime_config/config_component.xml b/components/data_comps/dwav/cime_config/config_component.xml index 4068df99b1fa..a7fb6c1c0558 100644 --- a/components/data_comps/dwav/cime_config/config_component.xml +++ b/components/data_comps/dwav/cime_config/config_component.xml @@ -1,6 +1,6 @@ - + char @@ -37,4 +37,4 @@ ========================================= - + diff --git a/components/data_comps/dwav/cime_config/namelist_definition_dwav.xml b/components/data_comps/dwav/cime_config/namelist_definition_dwav.xml new file mode 100644 index 000000000000..c2f12ca9b4e6 --- /dev/null +++ b/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/components/data_comps/dwav/dwav_comp_mod.F90 b/components/data_comps/dwav/dwav_comp_mod.F90 index f78963902763..4c45d364d4a2 100644 --- a/components/data_comps/dwav/dwav_comp_mod.F90 +++ b/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/components/stub_comps/satm/cime_config/buildlib b/components/stub_comps/satm/cime_config/buildlib index 0bdf9f9025ed..83e8d9a5b586 100755 --- a/components/stub_comps/satm/cime_config/buildlib +++ b/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/components/stub_comps/satm/cime_config/config_component.xml b/components/stub_comps/satm/cime_config/config_component.xml index 2dbb2c188be4..eabe56dbc1cc 100644 --- a/components/stub_comps/satm/cime_config/config_component.xml +++ b/components/stub_comps/satm/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub atm component - + diff --git a/components/stub_comps/sesp/cime_config/buildlib b/components/stub_comps/sesp/cime_config/buildlib index 72d905011dad..c54e5d4cfc80 100755 --- a/components/stub_comps/sesp/cime_config/buildlib +++ b/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/components/stub_comps/sesp/cime_config/config_component.xml b/components/stub_comps/sesp/cime_config/config_component.xml index a29428230b73..0290f9100dec 100644 --- a/components/stub_comps/sesp/cime_config/config_component.xml +++ b/components/stub_comps/sesp/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -18,4 +18,4 @@ Stub esp component - + diff --git a/components/stub_comps/sglc/cime_config/buildlib b/components/stub_comps/sglc/cime_config/buildlib index 678e389a8b55..dfaa11d6d124 100755 --- a/components/stub_comps/sglc/cime_config/buildlib +++ b/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/components/stub_comps/sglc/cime_config/config_component.xml b/components/stub_comps/sglc/cime_config/config_component.xml index 76f4da12aa48..85e78d97b54b 100644 --- a/components/stub_comps/sglc/cime_config/config_component.xml +++ b/components/stub_comps/sglc/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub glc component - + diff --git a/components/stub_comps/sice/cime_config/buildlib b/components/stub_comps/sice/cime_config/buildlib index 397e5fdb17fd..a179856cc9a7 100755 --- a/components/stub_comps/sice/cime_config/buildlib +++ b/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/components/stub_comps/sice/cime_config/config_component.xml b/components/stub_comps/sice/cime_config/config_component.xml index 931190fa0d7e..987b15fdf2aa 100644 --- a/components/stub_comps/sice/cime_config/config_component.xml +++ b/components/stub_comps/sice/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub ice component - + diff --git a/components/stub_comps/slnd/cime_config/buildlib b/components/stub_comps/slnd/cime_config/buildlib index 4160a1b81ddf..d464e7a10879 100755 --- a/components/stub_comps/slnd/cime_config/buildlib +++ b/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/components/stub_comps/slnd/cime_config/config_component.xml b/components/stub_comps/slnd/cime_config/config_component.xml index 1a4a2aa2c077..d0b4639e0ce6 100644 --- a/components/stub_comps/slnd/cime_config/config_component.xml +++ b/components/stub_comps/slnd/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub lnd component - + diff --git a/components/stub_comps/socn/cime_config/buildlib b/components/stub_comps/socn/cime_config/buildlib index 08fc40d6b603..559ea1c36ea1 100755 --- a/components/stub_comps/socn/cime_config/buildlib +++ b/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/components/stub_comps/socn/cime_config/config_component.xml b/components/stub_comps/socn/cime_config/config_component.xml index c9c8719d85e5..daf1d2c9ffb2 100644 --- a/components/stub_comps/socn/cime_config/config_component.xml +++ b/components/stub_comps/socn/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub ocn component - + diff --git a/components/stub_comps/srof/cime_config/buildlib b/components/stub_comps/srof/cime_config/buildlib index 9c169c6fbfa8..d448e16bcf8f 100755 --- a/components/stub_comps/srof/cime_config/buildlib +++ b/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/components/stub_comps/srof/cime_config/config_component.xml b/components/stub_comps/srof/cime_config/config_component.xml index c2e5258e115f..92bdcca611b1 100644 --- a/components/stub_comps/srof/cime_config/config_component.xml +++ b/components/stub_comps/srof/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub river component - + diff --git a/components/stub_comps/swav/cime_config/buildlib b/components/stub_comps/swav/cime_config/buildlib index b7d948c34739..0cb5ff5666ae 100755 --- a/components/stub_comps/swav/cime_config/buildlib +++ b/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/components/stub_comps/swav/cime_config/config_component.xml b/components/stub_comps/swav/cime_config/config_component.xml index a98795ce4348..8b5be883ed94 100644 --- a/components/stub_comps/swav/cime_config/config_component.xml +++ b/components/stub_comps/swav/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Stub wave component - + diff --git a/components/xcpl_comps/xatm/cime_config/buildlib b/components/xcpl_comps/xatm/cime_config/buildlib index 63d763ac9ee0..37fde2cc30d8 100755 --- a/components/xcpl_comps/xatm/cime_config/buildlib +++ b/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/components/xcpl_comps/xatm/cime_config/buildnml b/components/xcpl_comps/xatm/cime_config/buildnml index 2c26a62f0094..b8104013501c 100755 --- a/components/xcpl_comps/xatm/cime_config/buildnml +++ b/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/components/xcpl_comps/xatm/cime_config/config_component.xml b/components/xcpl_comps/xatm/cime_config/config_component.xml index 0fb2b9546316..a1ad59fe62d7 100644 --- a/components/xcpl_comps/xatm/cime_config/config_component.xml +++ b/components/xcpl_comps/xatm/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,5 +17,5 @@ Dead atm component - + diff --git a/components/xcpl_comps/xglc/cime_config/buildlib b/components/xcpl_comps/xglc/cime_config/buildlib index ae93c2197e1c..33fcc2187dea 100755 --- a/components/xcpl_comps/xglc/cime_config/buildlib +++ b/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/components/xcpl_comps/xglc/cime_config/buildnml b/components/xcpl_comps/xglc/cime_config/buildnml index 4d20918fbdfe..a02ca3f951f7 100755 --- a/components/xcpl_comps/xglc/cime_config/buildnml +++ b/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/components/xcpl_comps/xglc/cime_config/config_component.xml b/components/xcpl_comps/xglc/cime_config/config_component.xml index 1211e5842b46..9535d9a58f20 100644 --- a/components/xcpl_comps/xglc/cime_config/config_component.xml +++ b/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/components/xcpl_comps/xice/cime_config/buildlib b/components/xcpl_comps/xice/cime_config/buildlib index 21f6a390ebd4..57137c68a9da 100755 --- a/components/xcpl_comps/xice/cime_config/buildlib +++ b/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/components/xcpl_comps/xice/cime_config/buildnml b/components/xcpl_comps/xice/cime_config/buildnml index f5e4aa24e69c..f6fcbcc8a3b2 100755 --- a/components/xcpl_comps/xice/cime_config/buildnml +++ b/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/components/xcpl_comps/xice/cime_config/config_component.xml b/components/xcpl_comps/xice/cime_config/config_component.xml index 155de00bda57..34062742afd9 100644 --- a/components/xcpl_comps/xice/cime_config/config_component.xml +++ b/components/xcpl_comps/xice/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Dead ice component - + diff --git a/components/xcpl_comps/xlnd/cime_config/buildlib b/components/xcpl_comps/xlnd/cime_config/buildlib index 86b3616a7888..52d6dde11546 100755 --- a/components/xcpl_comps/xlnd/cime_config/buildlib +++ b/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/components/xcpl_comps/xlnd/cime_config/buildnml b/components/xcpl_comps/xlnd/cime_config/buildnml index 9b5bbeb47f12..f2354a124ae8 100755 --- a/components/xcpl_comps/xlnd/cime_config/buildnml +++ b/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/components/xcpl_comps/xlnd/cime_config/config_component.xml b/components/xcpl_comps/xlnd/cime_config/config_component.xml index 39c458a9c6a2..792c3b28bcf7 100644 --- a/components/xcpl_comps/xlnd/cime_config/config_component.xml +++ b/components/xcpl_comps/xlnd/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Dead land component - + diff --git a/components/xcpl_comps/xocn/cime_config/buildlib b/components/xcpl_comps/xocn/cime_config/buildlib index 0a765771e4c2..f376d7ae2eec 100755 --- a/components/xcpl_comps/xocn/cime_config/buildlib +++ b/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/components/xcpl_comps/xocn/cime_config/buildnml b/components/xcpl_comps/xocn/cime_config/buildnml index 8d6d9b1512ff..246cea266021 100755 --- a/components/xcpl_comps/xocn/cime_config/buildnml +++ b/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/components/xcpl_comps/xocn/cime_config/config_component.xml b/components/xcpl_comps/xocn/cime_config/config_component.xml index c0473bbb9550..755f010d6001 100644 --- a/components/xcpl_comps/xocn/cime_config/config_component.xml +++ b/components/xcpl_comps/xocn/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Dead ocean component - + diff --git a/components/xcpl_comps/xrof/cime_config/buildlib b/components/xcpl_comps/xrof/cime_config/buildlib index 3c2a7f5b0369..3976c96932d4 100755 --- a/components/xcpl_comps/xrof/cime_config/buildlib +++ b/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/components/xcpl_comps/xrof/cime_config/buildnml b/components/xcpl_comps/xrof/cime_config/buildnml index 6341d6142551..06e9f1b86bdf 100755 --- a/components/xcpl_comps/xrof/cime_config/buildnml +++ b/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/components/xcpl_comps/xrof/cime_config/config_component.xml b/components/xcpl_comps/xrof/cime_config/config_component.xml index e6c7570cc0db..0daa65009f9d 100644 --- a/components/xcpl_comps/xrof/cime_config/config_component.xml +++ b/components/xcpl_comps/xrof/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -30,4 +30,4 @@ Dead river component - + diff --git a/components/xcpl_comps/xwav/cime_config/buildlib b/components/xcpl_comps/xwav/cime_config/buildlib index 6520b9f2fcb3..df2c40dd11b5 100755 --- a/components/xcpl_comps/xwav/cime_config/buildlib +++ b/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/components/xcpl_comps/xwav/cime_config/buildnml b/components/xcpl_comps/xwav/cime_config/buildnml index 68c01dff2910..ba0ae95a8a46 100755 --- a/components/xcpl_comps/xwav/cime_config/buildnml +++ b/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/components/xcpl_comps/xwav/cime_config/config_component.xml b/components/xcpl_comps/xwav/cime_config/config_component.xml index 2abcc70bfd18..02c6b7eae5bd 100644 --- a/components/xcpl_comps/xwav/cime_config/config_component.xml +++ b/components/xcpl_comps/xwav/cime_config/config_component.xml @@ -1,8 +1,8 @@ - + - + char @@ -17,4 +17,4 @@ Dead wave component - + diff --git a/doc/README b/doc/README deleted file mode 100644 index b22360d57f34..000000000000 --- a/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/doc/apidocs/Doxyfile b/doc/apidocs/Doxyfile deleted file mode 100644 index 2621f14f061b..000000000000 --- a/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 -# , /