diff --git a/.circleci/config.yml b/.circleci/config.yml index 1a5b8d8dfff7..49a2d2c37434 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,5 +1,8 @@ version: 2.1 +# Anchor to prevent forgetting to update a version +baselibs_version: &baselibs_version v6.3.1 + orbs: ci: geos-esm/circleci-tools@1 @@ -7,18 +10,43 @@ workflows: build-and-test: jobs: - # Builds MAPL in a "default" way + # Builds MAPL in a "default" way - Intel - ci/build: name: build-and-test-MAPL-on-<< matrix.compiler >> context: - docker-hub-creds matrix: parameters: - compiler: [gfortran, ifort] + compiler: [ifort] + baselibs_version: *baselibs_version + repo: MAPL + mepodevelop: false + run_unit_tests: true + ctest_options: "-LE 'PERFORMANCE|EXTDATA1G_BIG_TESTS|EXTDATA2G_BIG_TESTS' --output-on-failure" + + # Builds MAPL in a "default" way - GNU + # + # NOTE: Currently Open MPI fails on the bundleio with: + # + # The OSC pt2pt component does not support MPI_THREAD_MULTIPLE in this release. + # Workarounds are to run on a single node, or to use a system with an RDMA + # capable network such as Infiniband. + # + # For now, we run GNU/Open MPI without the bundleio tests. Some indications that + # Open MPI 5 will not have this limitation + + - ci/build: + name: build-and-test-MAPL-on-<< matrix.compiler >> + context: + - docker-hub-creds + matrix: + parameters: + compiler: [gfortran] + baselibs_version: *baselibs_version repo: MAPL mepodevelop: false run_unit_tests: true - ctest_options: "-R MAPL -LE PERFORMANCE --output-on-failure" + ctest_options: "-E bundleio -LE 'PERFORMANCE|EXTDATA1G_BIG_TESTS|EXTDATA2G_BIG_TESTS' --output-on-failure" # Builds MAPL like UFS does (no FLAP and pFlogger, static) - ci/build: @@ -28,11 +56,12 @@ workflows: matrix: parameters: compiler: [ifort] + baselibs_version: *baselibs_version repo: MAPL mepodevelop: false extra_cmake_options: "-DBUILD_WITH_FLAP=OFF -DBUILD_WITH_PFLOGGER=OFF -DBUILD_SHARED_MAPL=OFF" run_unit_tests: true - ctest_options: "-R MAPL -LE PERFORMANCE --output-on-failure" + ctest_options: "-LE 'PERFORMANCE|EXTDATA1G_BIG_TESTS|EXTDATA2G_BIG_TESTS' --output-on-failure" # Build GEOSgcm - ci/build: @@ -42,11 +71,12 @@ workflows: matrix: parameters: compiler: [gfortran, ifort] + baselibs_version: *baselibs_version repo: GEOSgcm checkout_fixture: true mepodevelop: true checkout_mapl_branch: true - persist_workspace: false # Needs to be true to run fv3/gcm experiment, costs extra + persist_workspace: true # Needs to be true to run fv3/gcm experiment, costs extra, retained for one day # Build GEOSldas - ci/build: @@ -56,6 +86,7 @@ workflows: matrix: parameters: compiler: [gfortran, ifort] + baselibs_version: *baselibs_version repo: GEOSldas mepodevelop: false checkout_fixture: true @@ -71,6 +102,7 @@ workflows: parameters: compiler: [ifort] resource_class: xlarge + baselibs_version: *baselibs_version repo: GEOSadas checkout_fixture: true # This branch on GEOSadas will be used to track subrepos needed @@ -80,15 +112,15 @@ workflows: mepodevelop: false rebuild_procs: 8 - ################################################## - # - ci/run_fv3: # - # name: run-FV3-on-<< matrix.compiler >> # - # context: # - # - docker-hub-creds # - # matrix: # - # parameters: # - # compiler: [gfortran, ifort] # - # requires: # - # - build-GEOSgcm-on-<< matrix.compiler >> # - # repo: GEOSgcm # - ################################################## + # Run GCM (1 hour, no ExtData) + - ci/run_gcm: + name: run-GCM-on-<< matrix.compiler >> + context: + - docker-hub-creds + matrix: + parameters: + compiler: [gfortran, ifort] + requires: + - build-GEOSgcm-on-<< matrix.compiler >> + repo: GEOSgcm + baselibs_version: *baselibs_version diff --git a/.github/workflows/changelog-enforcer.yml b/.github/workflows/changelog-enforcer.yml index 1e9cb2979097..cd31258b2684 100644 --- a/.github/workflows/changelog-enforcer.yml +++ b/.github/workflows/changelog-enforcer.yml @@ -4,7 +4,7 @@ on: types: [opened, synchronize, reopened, ready_for_review, labeled, unlabeled] jobs: - # Enforces the update of a changelog file on every pull request + # Enforces the update of a changelog file on every pull request changelog: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/validate_yaml_files.yml b/.github/workflows/validate_yaml_files.yml new file mode 100644 index 000000000000..ff19b0d6e695 --- /dev/null +++ b/.github/workflows/validate_yaml_files.yml @@ -0,0 +1,31 @@ +--- + +# Based on code from https://github.com/marketplace/actions/yaml-lint + +name: Yaml Lint + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review, labeled, unlabeled] + +# This validation is equivalent to running on the command line: +# yamllint -d relaxed --no-warnings +# and is controlled by the .yamllint.yml file +jobs: + validate-YAML: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - id: yaml-lint + name: yaml-lint + uses: ibiqlik/action-yamllint@v3 + with: + no_warnings: true + format: colored + config_file: .yamllint.yml + + - uses: actions/upload-artifact@v2 + if: always() + with: + name: yamllint-logfile + path: ${{ steps.yaml-lint.outputs.logfile }} diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index b86cbbc3aa35..1ce85fe7eaa1 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -17,7 +17,7 @@ jobs: name: Build and Test MAPL runs-on: ubuntu-latest container: - image: gmao/ubuntu20-geos-env-mkl:v6.2.8-openmpi_4.0.6-gcc_11.2.0 + image: gmao/ubuntu20-geos-env-mkl:v6.3.1-openmpi_4.1.2-gcc_11.2.0 # Per https://github.com/actions/virtual-environments/issues/1445#issuecomment-713861495 # It seems like we might not need secrets on GitHub Actions which is good for forked # pull requests @@ -30,7 +30,7 @@ jobs: OMPI_MCA_btl_vader_single_copy_mechanism: none steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.9.0 + uses: styfle/cancel-workflow-action@0.9.1 with: access_token: ${{ github.token }} - name: Checkout @@ -61,85 +61,20 @@ jobs: cd build make -j4 build-tests # skip performance tests - ctest -R MAPL -LE PERFORMANCE --output-on-failure - ############################################################################################################################################################ - # build_gcm: # - # name: Build GEOSgcm # - # if: "!contains(github.event.pull_request.labels.*.name, '0 diff trivial')" # - # runs-on: ubuntu-latest # - # container: # - # image: gmao/ubuntu20-geos-env-mkl:v6.2.8-openmpi_4.0.6-gcc_11.2.0 # - # env: # - # OMPI_ALLOW_RUN_AS_ROOT: 1 # - # OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1 # - # OMPI_MCA_btl_vader_single_copy_mechanism: none # - # steps: # - # - name: Cancel Previous Runs # - # uses: styfle/cancel-workflow-action@0.9.0 # - # with: # - # access_token: ${{ github.token }} # - # - name: Checkout GCM # - # uses: actions/checkout@v2 # - # with: # - # repository: GEOS-ESM/GEOSgcm # - # fetch-depth: 1 # - # - name: Versions etc. # - # run: | # - # gfortran --version # - # mpirun --version # - # echo $BASEDIR # - # echo ${GITHUB_HEAD_REF} # - # echo ${{github.ref}} # - # echo ${{github.head_ref}} # - # - name: Mepo clone external repos # - # run: | # - # mepo init # - # mepo clone # - # mepo status # - # mepo develop GEOSgcm_GridComp GEOSgcm_App # - # mepo status # - # # The next two actions use: # - # # https://github.community/t/is-there-a-way-to-tell-if-a-pr-is-from-a-forked-repository/134186/7?u=mathomp4 # - # # to test if you are in a fork or not # - # - name: Git checkout MAPL branch (forks) # - # if: github.event.pull_request.head.repo.full_name != github.repository # - # working-directory: ./src/Shared/@MAPL # - # run: | # - # # GITHUB_REF will look like 'refs/pull/669/merge' and we want 'pull/669' # - # GITHUB_REF_STRIP_REFS=${GITHUB_REF##refs/} # - # GITHUB_REF_STRIP_MERGE=${GITHUB_REF_STRIP_REFS%%/merge} # - # # This was figured out with looking at CircleCI output # - # git fetch --force origin "${GITHUB_REF_STRIP_MERGE}/head:remotes/origin/${GITHUB_REF_STRIP_MERGE}" # - # mepo checkout ${GITHUB_REF_STRIP_MERGE} MAPL # - # mepo status # - # # If we are in the same org, this will work # - # - name: Mepo checkout MAPL branch (same org), MAPL on main/develop # - # if: github.event.pull_request.head.repo.full_name == github.repository && (github.head_ref == 'main' || github.head_ref == 'develop') # - # run: | # - # mepo checkout ${GITHUB_HEAD_REF} MAPL # - # mepo status # - # # If we are in the same org, this will work # - # - name: Mepo checkout MAPL branch (same org), MAPL not on main/develop # - # if: github.event.pull_request.head.repo.full_name == github.repository && (github.head_ref != 'main' && github.head_ref != 'develop') # - # run: | # - # mepo checkout ${GITHUB_HEAD_REF} MAPL # - # mepo checkout-if-exists ${GITHUB_HEAD_REF} # - # mepo status # - # - name: CMake # - # run: | # - # mkdir build # - # cd build # - # cmake .. -DBASEDIR=$BASEDIR/Linux -DCMAKE_Fortran_COMPILER=gfortran -DCMAKE_BUILD_TYPE=Debug -DMPIEXEC_PREFLAGS='--oversubscribe' -DUSE_F2PY=OFF # - # - name: Build # - # run: | # - # cd build # - # make -j4 install # - ############################################################################################################################################################ + # NOTE: Currently Open MPI fails on the bundleio with: + # + # The OSC pt2pt component does not support MPI_THREAD_MULTIPLE in this release. + # Workarounds are to run on a single node, or to use a system with an RDMA + # capable network such as Infiniband. + # + # For now, we run GNU/Open MPI without the bundleio tests. Some indications that + # Open MPI 5 will not have this limitation + ctest -E bundleio -LE 'PERFORMANCE|EXTDATA1G_BIG_TESTS|EXTDATA2G_BIG_TESTS' --output-on-failure build_test_mapl_intel: name: Build and Test MAPL Intel runs-on: ubuntu-latest container: - image: gmao/ubuntu20-geos-env:v6.2.8-intelmpi_2021.3.0-intel_2021.3.0 + image: gmao/ubuntu20-geos-env:v6.3.1-intelmpi_2021.3.0-intel_2021.3.0 # Per https://github.com/actions/virtual-environments/issues/1445#issuecomment-713861495 # It seems like we might not need secrets on GitHub Actions which is good for forked # pull requests @@ -148,7 +83,7 @@ jobs: #password: ${{ secrets.DOCKERHUB_TOKEN }} steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.9.0 + uses: styfle/cancel-workflow-action@0.9.1 with: access_token: ${{ github.token }} - name: Checkout @@ -179,4 +114,4 @@ jobs: cd build make -j4 build-tests # skip performance tests - ctest -R MAPL -LE PERFORMANCE --output-on-failure + ctest -LE 'PERFORMANCE|EXTDATA1G_BIG_TESTS|EXTDATA2G_BIG_TESTS' --output-on-failure diff --git a/.yamllint.yml b/.yamllint.yml new file mode 100644 index 000000000000..83f5340c7fdf --- /dev/null +++ b/.yamllint.yml @@ -0,0 +1,29 @@ +--- + +extends: default + +rules: + braces: + level: warning + max-spaces-inside: 1 + brackets: + level: warning + max-spaces-inside: 1 + colons: + level: warning + commas: + level: warning + comments: disable + comments-indentation: disable + document-start: disable + empty-lines: + level: warning + hyphens: + level: warning + indentation: + level: warning + indent-sequences: consistent + line-length: + level: warning + allow-non-breakable-inline-mappings: true + truthy: disable diff --git a/CHANGELOG.md b/CHANGELOG.md index e7afbfd94e9f..07e285887c75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Deprecated +## [2.22.0] - 2022-06-24 + +### Fixed + +- By pass the check of the missing value of Nan +- Update CI to work with latest GEOSadas `develop` (Uses a special branch of GEOSadas) +- Fix bundleio tests +- HistoryGridComp now checks if a file exists already before writing and errors out if so +- Minor updates for FORD documentation testing + - Add `program` statements to some test programs + - Remove `pfio/pfio_io_demo.F90` as dead code + - Fix redefinition of `_RETURN` in `pflogger_stub.F90` + - Removed unused `Test_SimpleClient.pf` +- Update CMake to require NetCDF C components and add `NetCDF::NetCDF_C` to pfio CMake + +### Added + +- Updated MAPL_CapGridComp to mark fields going to ExtData to not be checkpointed by components +- Add debug loggers for start/stop during stages in MAPL_Generic +- Handling for double precision input when retrieving single precision attributes +- Enable GCM run test in CircleCI (1-hour, no ExtData) +- Added monotonic regridding option +- Make availalbe to History and ExtData2G all supported regridding methods +- Add test cases for ExtData +- Add YAML validator GitHub Action + - This action makes sure all YAML files are valid (to a relaxed standard) + +### Changed + +- Modified error messages in FileMetadataUtilities to be unique and print filename +- Updated the ESMA_env version to v3.14.0 +- Updated the ESMA_cmake version to v3.17.0 +- Updated GitHub Actions MAPL build tests +- Added assert for missing file with ExtData2G +- Re-enable bundleio tests in CI +- Updated CircleCI to use latest Baselibs +- Updates for Spack support + - Add `find_package(MPI)` for non-Baselibs builds + - Add explicit interface dependence of `MPI` for `ESMF` target + - Add `esmf` alias library for `ESMF` for compatibility + ## [2.21.3] - 2022-06-07 ### Fixed diff --git a/CMakeLists.txt b/CMakeLists.txt index 91364980ae7c..e6e2bfab0487 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_policy (SET CMP0054 NEW) project ( MAPL - VERSION 2.21.3 + VERSION 2.22.0 LANGUAGES Fortran CXX C) # Note - CXX is required for ESMF # Set the default build type to release @@ -111,7 +111,10 @@ endif () ecbuild_declare_project() if (NOT Baselibs_FOUND) - find_package(NetCDF REQUIRED Fortran) + set(MPI_DETERMINE_LIBRARY_VERSION TRUE) + find_package(MPI) + + find_package(NetCDF REQUIRED C Fortran) add_definitions(-DHAS_NETCDF4) add_definitions(-DHAS_NETCDF3) add_definitions(-DNETCDF_NEED_NF_MPIIO) @@ -124,6 +127,19 @@ if (NOT Baselibs_FOUND) if (NOT TARGET esmf) find_package(ESMF MODULE REQUIRED) + + # ESMF as used in MAPL requires MPI + # NOTE: This looks odd because some versions of FindESMF.cmake out in the + # world provide an "esmf" target while others provide "ESMF". So we + # need this ugliness to support both. + if (TARGET esmf) + target_link_libraries(esmf INTERFACE MPI::MPI_Fortran) + else() + target_link_libraries(ESMF INTERFACE MPI::MPI_Fortran) + # MAPL and GEOS use lowercase target due to historical reasons but + # the latest FindESMF.cmake file from ESMF produces an ESMF target. + add_library(esmf ALIAS ESMF) + endif() endif () endif () diff --git a/MAPL/CMakeLists.txt b/MAPL/CMakeLists.txt index a7d0f97de35d..f49b1d486a46 100644 --- a/MAPL/CMakeLists.txt +++ b/MAPL/CMakeLists.txt @@ -6,7 +6,7 @@ esma_add_library (${this} DEPENDENCIES MAPL.base MAPL.generic MAPL.pfio MAPL_cfio_r4 MAPL.gridcomps MAPL.orbit MAPL.griddedio ${EXTDATA_TARGET} esmf NetCDF::NetCDF_Fortran MPI::MPI_Fortran $<$:FLAP::FLAP> - TYPE ${MAPL_LIBRARY_TYPE} + TYPE ${MAPL_LIBRARY_TYPE} ) target_compile_definitions (${this} PRIVATE $<$:BUILD_WITH_EXTDATA2G>) diff --git a/MAPL_cfio/CMakeLists.txt b/MAPL_cfio/CMakeLists.txt index 342cdc9e0c75..e6cfd498a7f0 100644 --- a/MAPL_cfio/CMakeLists.txt +++ b/MAPL_cfio/CMakeLists.txt @@ -4,12 +4,12 @@ string (REPLACE MAPL_cfio_ "" precision ${this}) set (srcs ESMF_CFIOBaseMod.f - ESMF_CFIOFileMod.F90 - ESMF_CFIOGridMod.F90 - ESMF_CFIOMod.F90 - ESMF_CFIOSdfMod.F90 - ESMF_CFIOUtilMod.F90 - ESMF_CFIOVarInfoMod.F90 + ESMF_CFIOFileMod.F90 + ESMF_CFIOGridMod.F90 + ESMF_CFIOMod.F90 + ESMF_CFIOSdfMod.F90 + ESMF_CFIOUtilMod.F90 + ESMF_CFIOVarInfoMod.F90 ShaveMantissa.c ) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index bba1dbb97aa7..216bcf16855f 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -26,9 +26,6 @@ if (BUILD_WITH_FLAP) target_link_libraries(pfio_MAPL_demo.x PRIVATE OpenMP::OpenMP_Fortran) endif () set_target_properties(pfio_MAPL_demo.x PROPERTIES Fortran_MODULE_DIRECTORY ${MODULE_DIRECTORY}) + add_subdirectory(ExtData_Testing_Framework EXCLUDE_FROM_ALL) endif () - -#install(PROGRAMS ExtDataDriver.x DESTINATION bin) -#install(TARGETS ExtDataDriver.x DESTINATION bin) - diff --git a/Tests/ExtData_Testing_Framework/CMakeLists.txt b/Tests/ExtData_Testing_Framework/CMakeLists.txt new file mode 100644 index 000000000000..a91051be6019 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/CMakeLists.txt @@ -0,0 +1,51 @@ +# Detect if we are using Open MPI and add oversubscribe +string(REPLACE " " ";" MPI_Fortran_LIBRARY_VERSION_LIST ${MPI_Fortran_LIBRARY_VERSION_STRING}) +list(GET MPI_Fortran_LIBRARY_VERSION_LIST 0 MPI_Fortran_LIBRARY_VERSION_FIRSTWORD) +if(MPI_Fortran_LIBRARY_VERSION_FIRSTWORD MATCHES "Open") + list(APPEND MPIEXEC_PREFLAGS "-oversubscribe") +endif() + +file(STRINGS "test_cases/cases.txt" TEST_CASES) + +set(cutoff "7") + +foreach(TEST_CASE ${TEST_CASES}) + if (EXISTS ${CMAKE_CURRENT_LIST_DIR}/test_cases/${TEST_CASE}/nproc.rc) + file(READ ${CMAKE_CURRENT_LIST_DIR}/test_cases/${TEST_CASE}/nproc.rc num_procs) + else() + set(num_procs "1") + endif() + add_test( + NAME "ExtData1G_${TEST_CASE}" + COMMAND ${CMAKE_COMMAND} + -DTEST_CASE=${TEST_CASE} + -DMPIEXEC_EXECUTABLE=${MPIEXEC_EXECUTABLE} + -DMPIEXEC_NUMPROC_FLAG=${MPIEXEC_NUMPROC_FLAG} + -DMY_BINARY_DIR=${CMAKE_BINARY_DIR}/bin + -DMPIEXEC_PREFLAGS=${MPIEXEC_PREFLAGS} + -DIS_EXTDATA2G=NO + -P ${CMAKE_CURRENT_SOURCE_DIR}/run_extdata.cmake + ) + if (${num_procs} LESS ${cutoff}) + set_tests_properties ("ExtData1G_${TEST_CASE}" PROPERTIES LABELS "EXTDATA1G_SMALL_TESTS") + else() + set_tests_properties ("ExtData1G_${TEST_CASE}" PROPERTIES LABELS "EXTDATA1G_BIG_TESTS") + endif() + + add_test( + NAME "ExtData2G_${TEST_CASE}" + COMMAND ${CMAKE_COMMAND} + -DTEST_CASE=${TEST_CASE} + -DMPIEXEC_EXECUTABLE=${MPIEXEC_EXECUTABLE} + -DMPIEXEC_NUMPROC_FLAG=${MPIEXEC_NUMPROC_FLAG} + -DMY_BINARY_DIR=${CMAKE_BINARY_DIR}/bin + -DMPIEXEC_PREFLAGS=${MPIEXEC_PREFLAGS} + -DIS_EXTDATA2G=YES + -P ${CMAKE_CURRENT_SOURCE_DIR}/run_extdata.cmake + ) + if (${num_procs} LESS ${cutoff}) + set_tests_properties ("ExtData2G_${TEST_CASE}" PROPERTIES LABELS "EXTDATA2G_SMALL_TESTS") + else() + set_tests_properties ("ExtData2G_${TEST_CASE}" PROPERTIES LABELS "EXTDATA2G_BIG_TESTS") + endif() +endforeach() diff --git a/Tests/ExtData_Testing_Framework/run_extdata.cmake b/Tests/ExtData_Testing_Framework/run_extdata.cmake new file mode 100644 index 000000000000..48986e47d042 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/run_extdata.cmake @@ -0,0 +1,30 @@ +macro(run_case CASE) + string(RANDOM LENGTH 24 tempdir) + execute_process( + COMMAND ${CMAKE_COMMAND} -E make_directory ${tempdir} + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_LIST_DIR}/test_cases/${CASE} ${tempdir} + ) + if (EXISTS "${tempdir}/nproc.rc") + file(READ "${tempdir}/nproc.rc" num_procs_temp) + string(STRIP ${num_procs_temp} num_procs) + else() + set(num_procs "1") + endif() + if (${IS_EXTDATA2G} STREQUAL "YES") + file(APPEND "${tempdir}/CAP1.rc" "USE_EXTDATA2G: .true.") + file(APPEND "${tempdir}/CAP2.rc" "USE_EXTDATA2G: .true.") + endif() + execute_process( + COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${num_procs} ${MPIEXEC_PREFLAGS} ${MY_BINARY_DIR}/ExtDataDriver.x + RESULT_VARIABLE CMD_RESULT + WORKING_DIRECTORY ${tempdir} + #COMMAND_ECHO STDOUT + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E rm -rf ${tempdir} + ) + if(CMD_RESULT) + message(FATAL_ERROR "Error running ${CASE}") + endif() +endmacro() +run_case(${TEST_CASE}) diff --git a/Tests/ExtData_Testing_Framework/test_cases/case1/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case1/AGCM1.rc new file mode 100644 index 000000000000..83ad27a2c551 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case1/AGCM1.rc @@ -0,0 +1,24 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +FILL_DEF:: +VAR2D time +VAR3D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case1/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case1/AGCM2.rc new file mode 100644 index 000000000000..2e79954523bd --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case1/AGCM2.rc @@ -0,0 +1,29 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +FILL_DEF:: +VAR2D time +VAR3D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case1/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case1/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case1/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case1/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case1/CAP1.rc new file mode 100644 index 000000000000..ce2690d6937b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case1/CAP1.rc @@ -0,0 +1,25 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20040115 210000 +20040215 210000 +20040315 210000 +20040415 210000 +20040515 210000 +20040615 210000 +20040715 210000 +20040815 210000 +20040915 210000 +20041015 210000 +20041115 210000 +20041215 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case1/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case1/CAP2.rc new file mode 100644 index 000000000000..4e9e1bb95026 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case1/CAP2.rc @@ -0,0 +1,15 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20041125 210000 +20041126 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case1/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case1/ExtData.rc new file mode 100644 index 000000000000..a45d1dd13f7f --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case1/ExtData.rc @@ -0,0 +1,13 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N 0 none none VAR2D case1.%y4.nc4 +VAR3D NA N N 0 none none VAR3D case1.%y4.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case1/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case1/HISTORY1.rc new file mode 100644 index 000000000000..51d004d9660c --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case1/HISTORY1.rc @@ -0,0 +1,13 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.duration: 000000 + case1.fields: 'VAR2D', 'Root', + 'VAR3D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case1/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case1/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case1/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case1/README b/Tests/ExtData_Testing_Framework/test_cases/case1/README new file mode 100644 index 000000000000..9a6d7597262d --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case1/README @@ -0,0 +1 @@ +Case, 12-month/12 time 2004 file with 2 updates, non-climatology diff --git a/Tests/ExtData_Testing_Framework/test_cases/case1/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case1/extdata.yaml new file mode 100644 index 000000000000..e2ddb90675ab --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case1/extdata.yaml @@ -0,0 +1,5 @@ +Collections: + fstream1: {template: case1.%y4.nc4, valid_range: "2004-01-01/2005-01-01" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1} + VAR3D: {variable: VAR3D, collection: fstream1} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case10/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case10/AGCM1.rc new file mode 100644 index 000000000000..302766bebfab --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case10/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case10/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case10/AGCM2.rc new file mode 100644 index 000000000000..58616c46abc8 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case10/AGCM2.rc @@ -0,0 +1,27 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +CLIM_YEAR: 2005 +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case10/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case10/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case10/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case10/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case10/CAP1.rc new file mode 100644 index 000000000000..7ad5b6f1a378 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case10/CAP1.rc @@ -0,0 +1,36 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00002400 000000 +HEARTBEAT_DT: 3600 + +RUN_TIMES:: +20040115 210000 +20040215 210000 +20040315 210000 +20040415 210000 +20040515 210000 +20040615 210000 +20040715 210000 +20040815 210000 +20040915 210000 +20041015 210000 +20041115 210000 +20041215 210000 +20050115 210000 +20050215 210000 +20050315 210000 +20050415 210000 +20050515 210000 +20050615 210000 +20050715 210000 +20050815 210000 +20050915 210000 +20051015 210000 +20051115 210000 +20051215 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case10/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case10/CAP2.rc new file mode 100644 index 000000000000..af18ab35fe0d --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case10/CAP2.rc @@ -0,0 +1,14 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20060101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20060225 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case10/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case10/ExtData.rc new file mode 100644 index 000000000000..92697fa916f0 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case10/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .true. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N 0 none none VAR2D case1.%y4%m2.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case10/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case10/HISTORY1.rc new file mode 100644 index 000000000000..0b54db8e8f25 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case10/HISTORY1.rc @@ -0,0 +1,11 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case10/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case10/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case10/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case10/README b/Tests/ExtData_Testing_Framework/test_cases/case10/README new file mode 100644 index 000000000000..d2069c0d94d4 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case10/README @@ -0,0 +1,2 @@ +Interpolation outside of data set (Harvard mode), make a multi year dataset. +Define as not a climatology and ask for data after dataset time range diff --git a/Tests/ExtData_Testing_Framework/test_cases/case10/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case10/extdata.yaml new file mode 100644 index 000000000000..4e9e3ccb39fb --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case10/extdata.yaml @@ -0,0 +1,6 @@ +Samplings: + extrap_clim: {extrapolation: clim} +Collections: + fstream1: {template: "case1.%y4%m2.nc4", valid_range: "2004-01-01/2005-12-31" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: extrap_clim} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case11/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case11/AGCM1.rc new file mode 100644 index 000000000000..302766bebfab --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case11/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case11/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case11/AGCM2.rc new file mode 100644 index 000000000000..48eb8ed1b8d3 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case11/AGCM2.rc @@ -0,0 +1,27 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +CLIM_YEAR: 2006 +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case11/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case11/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case11/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case11/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case11/CAP1.rc new file mode 100644 index 000000000000..e800400d918a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case11/CAP1.rc @@ -0,0 +1,36 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20060101 210000 + +JOB_SGMT: 00002400 000000 +HEARTBEAT_DT: 3600 + +RUN_TIMES:: +20060115 210000 +20060215 210000 +20060315 210000 +20060415 210000 +20060515 210000 +20060615 210000 +20060715 210000 +20060815 210000 +20060915 210000 +20061015 210000 +20061115 210000 +20061215 210000 +20070115 210000 +20070215 210000 +20070315 210000 +20070415 210000 +20070515 210000 +20070615 210000 +20070715 210000 +20070815 210000 +20070915 210000 +20071015 210000 +20071115 210000 +20071215 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case11/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case11/CAP2.rc new file mode 100644 index 000000000000..68f902819dd8 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case11/CAP2.rc @@ -0,0 +1,14 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20050101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20050225 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case11/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case11/ExtData.rc new file mode 100644 index 000000000000..92697fa916f0 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case11/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .true. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N 0 none none VAR2D case1.%y4%m2.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case11/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case11/HISTORY1.rc new file mode 100644 index 000000000000..0b54db8e8f25 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case11/HISTORY1.rc @@ -0,0 +1,11 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case11/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case11/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case11/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case11/README b/Tests/ExtData_Testing_Framework/test_cases/case11/README new file mode 100644 index 000000000000..52a3f7e59bfa --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case11/README @@ -0,0 +1 @@ +Interpolation outside of data set (Harvard mode), make a multi year dataset. Define as not a climatology and ask for data before datset time range diff --git a/Tests/ExtData_Testing_Framework/test_cases/case11/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case11/extdata.yaml new file mode 100644 index 000000000000..6738280d70a4 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case11/extdata.yaml @@ -0,0 +1,4 @@ +Collections: + fstream1: {template: "case1.%y4%m2.nc4", valid_range: "2006-01-01/2007-12-31" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: {extrapolation: clim}} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case12/AGCM1.rc new file mode 100644 index 000000000000..5d1b0f452725 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 6 +NY: 36 + +Root.GRID_TYPE: Cubed-Sphere +Root.GRIDNAME: PE24x144-CF +Root.LM: 3 +Root.NF 6 +Root.IM_WORLD: 24 + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +FILL_DEF:: +VAR2D time +VAR3D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case12/AGCM2.rc new file mode 100644 index 000000000000..fe9b76e9ab6b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/AGCM2.rc @@ -0,0 +1,27 @@ +NX: 6 +NY: 36 + +Root.GRID_TYPE: Cubed-Sphere +Root.GRIDNAME: PE24x144-CF +Root.LM: 3 +Root.NF 6 +Root.IM_WORLD: 24 + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +FILL_DEF:: +VAR2D time +VAR3D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case12/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case12/CAP1.rc new file mode 100644 index 000000000000..bed0725f4039 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/CAP1.rc @@ -0,0 +1,16 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +RUN_TIMES:: +20040702 000000 +20040703 000000 +20040704 000000 +20040705 000000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case12/CAP2.rc new file mode 100644 index 000000000000..f4182daac2ca --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/CAP2.rc @@ -0,0 +1,13 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +RUN_TIMES:: +20040703 120000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case12/ExtData.rc new file mode 100644 index 000000000000..19bc2d0132f6 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/ExtData.rc @@ -0,0 +1,13 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N - none none VAR2D vars2d.nc4 +VAR3D NA N N - none none VAR3D vars3d.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case12/HISTORY1.rc new file mode 100644 index 000000000000..bdc7875e13f3 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/HISTORY1.rc @@ -0,0 +1,30 @@ +VERSION: 1 +GRID_LABELS: PC20x11-DC +:: + +PC20x11-DC.GRID_TYPE: LatLon +PC20x11-DC.IM_WORLD: 20 +PC20x11-DC.JM_WORLD: 11 +PC20x11-DC.POLE: PC +PC20x11-DC.DATELINE: DC +PC20x11-DC.LM: 3 + +COLLECTIONS: vars2d + vars3d +:: + + + vars2d.template: 'nc4', + vars2d.format: 'CFIO', + vars2d.frequency: 010000, + vars2d.duration: 000000 + vars2d.grid_label: PC20x11-DC + vars2d.fields: 'VAR2D', 'Root', + :: + vars3d.template: 'nc4', + vars3d.format: 'CFIO', + vars3d.frequency: 010000, + vars3d.duration: 000000 + vars3d.grid_label: PC20x11-DC + vars3d.fields: 'VAR3D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case12/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/README b/Tests/ExtData_Testing_Framework/test_cases/case12/README new file mode 100644 index 000000000000..faaab2c64256 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/README @@ -0,0 +1 @@ +Test of case where you want to make a really coarse file in History that can not be decomposed on the default layout in the rc file. Be able to output such a file, then read back in on same grid in ExtData diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case12/extdata.yaml new file mode 100644 index 000000000000..e7eeef4a6e16 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/extdata.yaml @@ -0,0 +1,6 @@ +Collections: + fstream1: {template: "vars2d.nc4"} + fstream2: {template: "vars3d.nc4"} +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: {update_frequency: "-"}} + VAR3D: {variable: VAR3D, collection: fstream2, sample: {update_frequency: "-"}} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case12/nproc.rc b/Tests/ExtData_Testing_Framework/test_cases/case12/nproc.rc new file mode 100644 index 000000000000..a817176f4a68 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case12/nproc.rc @@ -0,0 +1 @@ +216 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case13/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case13/AGCM1.rc new file mode 100644 index 000000000000..1199f8335bc6 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case13/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20070101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case13/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case13/AGCM2.rc new file mode 100644 index 000000000000..814c1dfd5e43 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case13/AGCM2.rc @@ -0,0 +1,25 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D 45.0+(73.0-45.0)*0.5 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case13/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case13/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case13/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case13/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case13/CAP1.rc new file mode 100644 index 000000000000..b40edc56fda7 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case13/CAP1.rc @@ -0,0 +1,25 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20070101 000000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20070115 000000 +20070215 000000 +20070315 000000 +20070415 000000 +20070515 000000 +20070615 000000 +20070715 000000 +20070815 000000 +20070915 000000 +20071015 000000 +20071115 000000 +20071215 000000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case13/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case13/CAP2.rc new file mode 100644 index 000000000000..ad9fdbaa59ef --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case13/CAP2.rc @@ -0,0 +1,13 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20080101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +RUN_TIMES:: +20080229 120000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case13/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case13/ExtData.rc new file mode 100644 index 000000000000..e535516c3bdf --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case13/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA Y N 0 none none VAR2D case1.2007%m2.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case13/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case13/HISTORY1.rc new file mode 100644 index 000000000000..1e9dd9d44599 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case13/HISTORY1.rc @@ -0,0 +1,12 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + #case1.duration: 000000 + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case13/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case13/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case13/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case13/README b/Tests/ExtData_Testing_Framework/test_cases/case13/README new file mode 100644 index 000000000000..8a66da41fbc9 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case13/README @@ -0,0 +1 @@ +Testing that we can take a climatology for a non-leap year and interpolate to a leap year. 12 files each with the midmonth value for 2007 (non-leap year). Interpolate to 02/29/2008 (leap year) diff --git a/Tests/ExtData_Testing_Framework/test_cases/case13/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case13/extdata.yaml new file mode 100644 index 000000000000..1dc456d831f9 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case13/extdata.yaml @@ -0,0 +1,4 @@ +Collections: + fstream1: {template: "case1.2007%m2.nc4", valid_range: "2007-01-01/2007-12-31" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: {extrapolation: clim, source_time: "2007-01-01/2007-12-31"}} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case14/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case14/AGCM1.rc new file mode 100644 index 000000000000..58c95c0fd941 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case14/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20070101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case14/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case14/AGCM2.rc new file mode 100644 index 000000000000..0858aa614d31 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case14/AGCM2.rc @@ -0,0 +1,24 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D 58.0+(59.0-58.0)*0.75 +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case14/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case14/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case14/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case14/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case14/CAP1.rc new file mode 100644 index 000000000000..e725586cac99 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case14/CAP1.rc @@ -0,0 +1,10 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20061231 000000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case14/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case14/CAP2.rc new file mode 100644 index 000000000000..36aafef783fe --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case14/CAP2.rc @@ -0,0 +1,14 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20080229 120000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case14/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case14/ExtData.rc new file mode 100644 index 000000000000..00b82c0f4f77 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case14/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA 2007 N 0 none none VAR2D case1.%y4%m2%d2.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case14/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case14/HISTORY1.rc new file mode 100644 index 000000000000..7f1045a27232 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case14/HISTORY1.rc @@ -0,0 +1,12 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2%d2.nc4', + case1.format: 'CFIO', + case1.frequency: 240000, + case1.ref_time: 000000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case14/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case14/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case14/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case14/README b/Tests/ExtData_Testing_Framework/test_cases/case14/README new file mode 100644 index 000000000000..712f8869bac4 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case14/README @@ -0,0 +1 @@ +Testing that we can take a climatology for a non-leap year and interpolate to a leap year. Daily files each with 1 value for 2007 (non-leap year). Interpolate to 02/29/2008 (leap year) diff --git a/Tests/ExtData_Testing_Framework/test_cases/case14/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case14/extdata.yaml new file mode 100644 index 000000000000..11c4ed30a938 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case14/extdata.yaml @@ -0,0 +1,6 @@ +Samplings: + sample_clim: {extrapolation: clim} +Collections: + fstream1: {template: "case1.%y4%m2%d2.nc4", valid_range: "2007-01-01/2007-12-31" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, source_time: "2007-01-01/2007-12-31", sample: sample_clim} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case15/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case15/AGCM1.rc new file mode 100644 index 000000000000..58c95c0fd941 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case15/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20070101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case15/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case15/AGCM2.rc new file mode 100644 index 000000000000..58fc61c57d55 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case15/AGCM2.rc @@ -0,0 +1,27 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +CLIM_YEAR: 2007 +REF_TIME: 20070101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case15/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case15/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case15/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case15/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case15/CAP1.rc new file mode 100644 index 000000000000..957ef31d3145 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case15/CAP1.rc @@ -0,0 +1,10 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20061231 230000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case15/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case15/CAP2.rc new file mode 100644 index 000000000000..7e31eadc76a6 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case15/CAP2.rc @@ -0,0 +1,14 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20060329 120000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case15/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case15/ExtData.rc new file mode 100644 index 000000000000..7032d5b44348 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case15/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA 2007 N 0 none none VAR2D case1.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case15/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case15/HISTORY1.rc new file mode 100644 index 000000000000..0f000be68631 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case15/HISTORY1.rc @@ -0,0 +1,13 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: 'nc4', + case1.format: 'CFIO', + case1.frequency: 60000, + case1.duration: 000000, + case1.ref_time: 000000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case15/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case15/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case15/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case15/README b/Tests/ExtData_Testing_Framework/test_cases/case15/README new file mode 100644 index 000000000000..c8303c9f308c --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case15/README @@ -0,0 +1 @@ +Testing that we can take a climatology for a non-leap year and interpolate to a non-leap year. Daily files each with 1 value for 2007 (non-leap year). Interpolate to 03/29/2006 (leap year) diff --git a/Tests/ExtData_Testing_Framework/test_cases/case15/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case15/extdata.yaml new file mode 100644 index 000000000000..a64fe328c5bd --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case15/extdata.yaml @@ -0,0 +1,6 @@ +Samplings: + sample_clim: {extrapolation: clim, source_time: "2007-01-01/2007-12-31"} +Collections: + fstream1: {template: "case1.nc4", valid_range: "2007-01-01/2007-12-31" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: sample_clim} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case16/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case16/AGCM1.rc new file mode 100644 index 000000000000..81bb07dcdcbd --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case16/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20080101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case16/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case16/AGCM2.rc new file mode 100644 index 000000000000..040b724d894e --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case16/AGCM2.rc @@ -0,0 +1,27 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +CLIM_YEAR: 2008 +REF_TIME: 20080101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case16/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case16/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case16/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case16/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case16/CAP1.rc new file mode 100644 index 000000000000..2840fe1b50ce --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case16/CAP1.rc @@ -0,0 +1,10 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20071231 230000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case16/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case16/CAP2.rc new file mode 100644 index 000000000000..8ed72d5aabe6 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case16/CAP2.rc @@ -0,0 +1,14 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20060329 150000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case16/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case16/ExtData.rc new file mode 100644 index 000000000000..1b98d7c432b9 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case16/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA 2008 N 0 none none VAR2D case1.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case16/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case16/HISTORY1.rc new file mode 100644 index 000000000000..0f000be68631 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case16/HISTORY1.rc @@ -0,0 +1,13 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: 'nc4', + case1.format: 'CFIO', + case1.frequency: 60000, + case1.duration: 000000, + case1.ref_time: 000000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case16/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case16/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case16/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case16/README b/Tests/ExtData_Testing_Framework/test_cases/case16/README new file mode 100644 index 000000000000..2b112ffe7b9c --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case16/README @@ -0,0 +1 @@ +Testing that we can take a climatology for a leap year and interpolate to a non-leap year. Daily files each with 1 value for 2008 (leap year). Interpolate to 03/29/2006 15z (leap year) diff --git a/Tests/ExtData_Testing_Framework/test_cases/case16/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case16/extdata.yaml new file mode 100644 index 000000000000..89a527a980e2 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case16/extdata.yaml @@ -0,0 +1,6 @@ +Collections: + fstream1: {template: "case1.nc4", valid_range: "2008-01-01/2008-12-31" } +Samplings: + s1: {source_time: "2008-01-01/2008-12-31", extrapolation: clim} +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: s1} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case18/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case18/AGCM1.rc new file mode 100644 index 000000000000..7787931e9777 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case18/AGCM1.rc @@ -0,0 +1,24 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +U2D , time , days , xy , c +V2D , time , days , xy , c +:: + +FILL_DEF:: +U2D 0.0 +V2D 5.0 +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case18/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case18/AGCM2.rc new file mode 100644 index 000000000000..13bea40d79d3 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case18/AGCM2.rc @@ -0,0 +1,33 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: FillExportsFromImports + +IMPORT_STATE:: +U2D , time , days , xy , c +#U3D , time , days , xyz , c +V2D , time , days , xy , c +#V3D , time , days , xyz , c +:: + +EXPORT_STATE:: +U2D , time , days , xy , c +#U3D , time , days , xyz , c +V2D , time , days , xy , c +#V3D , time , days , xyz , c +:: + +#FILL_DEF:: +#VAR2D time +#VAR3D time +#:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case18/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case18/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case18/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case18/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case18/CAP1.rc new file mode 100644 index 000000000000..11e0e36bd675 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case18/CAP1.rc @@ -0,0 +1,26 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20040115 210000 +20040215 210000 +20040315 210000 +20040415 210000 +20040515 210000 +20040615 210000 +20040715 210000 +20040815 210000 +20040915 210000 +20041015 210000 +20041115 210000 +20041215 210000 +:: + +USE_EXTDATA2G: .true. diff --git a/Tests/ExtData_Testing_Framework/test_cases/case18/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case18/CAP2.rc new file mode 100644 index 000000000000..4a0f45af02e4 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case18/CAP2.rc @@ -0,0 +1,15 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20041126 210000 +:: + +USE_EXTDATA2G: .true. diff --git a/Tests/ExtData_Testing_Framework/test_cases/case18/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case18/ExtData.rc new file mode 100644 index 000000000000..79cf7c1399ab --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case18/ExtData.rc @@ -0,0 +1,15 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +DEBUG_LEVEL: 20 + +PrimaryExports%% +U2D;V2D NA N N 0 none none U2D;V2D case1.%y4.nc4 +#U3D;V3D NA N N 0 none none U3D;V3D case1.%y4.nc4 +#U2D NA N N 0 none none U2D case1.%y4.nc4 +#V2D NA N N 0 none none V2D case1.%y4.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case18/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case18/HISTORY1.rc new file mode 100644 index 000000000000..e19d49760185 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case18/HISTORY1.rc @@ -0,0 +1,15 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.duration: 000000 + case1.fields: 'U2D', 'Root', + #'U3D', 'Root', + 'V2D', 'Root', + #'V3D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case18/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case18/HISTORY2.rc new file mode 100644 index 000000000000..6091a4c984bd --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case18/HISTORY2.rc @@ -0,0 +1,13 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: + + case18_2.template: '%y4.nc4', + case18_2.format: 'CFIO', + case18_2.frequency: 010000, + case18_2.duration: 000000 + case18_2.fields: 'U2D', 'Root', + 'V2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case18/README b/Tests/ExtData_Testing_Framework/test_cases/case18/README new file mode 100644 index 000000000000..60994edbc151 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case18/README @@ -0,0 +1 @@ +Test vector regridding diff --git a/Tests/ExtData_Testing_Framework/test_cases/case18/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case18/extdata.yaml new file mode 100644 index 000000000000..c69f0f79bf8a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case18/extdata.yaml @@ -0,0 +1,4 @@ +Collections: + fstream1: {template: "case1.%y4.nc4"} +Exports: + U2D;V2D: {variable: U2D;V2D, collection: fstream1} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case19/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case19/AGCM1.rc new file mode 100644 index 000000000000..4ebd5b1a73fa --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case19/AGCM1.rc @@ -0,0 +1,24 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D 17.0 +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case19/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case19/CAP.rc new file mode 100644 index 000000000000..4f5328064bab --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case19/CAP.rc @@ -0,0 +1,3 @@ +CASES:: +CAP1.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case19/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case19/CAP1.rc new file mode 100644 index 000000000000..ce2690d6937b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case19/CAP1.rc @@ -0,0 +1,25 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20040115 210000 +20040215 210000 +20040315 210000 +20040415 210000 +20040515 210000 +20040615 210000 +20040715 210000 +20040815 210000 +20040915 210000 +20041015 210000 +20041115 210000 +20041215 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case19/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case19/ExtData.rc new file mode 100644 index 000000000000..45b2e1653d38 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case19/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N 0 none none VAR2D /dev/null:17.0 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case19/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case19/HISTORY1.rc new file mode 100644 index 000000000000..d3a6677416e1 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case19/HISTORY1.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case19/README b/Tests/ExtData_Testing_Framework/test_cases/case19/README new file mode 100644 index 000000000000..23052d595d01 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case19/README @@ -0,0 +1 @@ +test /dev/null diff --git a/Tests/ExtData_Testing_Framework/test_cases/case19/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case19/extdata.yaml new file mode 100644 index 000000000000..47bc213019b6 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case19/extdata.yaml @@ -0,0 +1,2 @@ +Exports: + VAR2D: {variable: VAR2D, collection: "/dev/null", linear_transformation: [17.0,0.0]} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case2/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case2/AGCM1.rc new file mode 100644 index 000000000000..ada4fab64746 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case2/AGCM1.rc @@ -0,0 +1,24 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +FILL_DEF:: +VAR2D time +VAR3D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case2/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case2/AGCM2.rc new file mode 100644 index 000000000000..6fb58c19aba5 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case2/AGCM2.rc @@ -0,0 +1,30 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +FILL_DEF:: +VAR2D time +VAR3D time +:: + +CLIM_YEAR: 2004 +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case2/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case2/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case2/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case2/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case2/CAP1.rc new file mode 100644 index 000000000000..ce2690d6937b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case2/CAP1.rc @@ -0,0 +1,25 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20040115 210000 +20040215 210000 +20040315 210000 +20040415 210000 +20040515 210000 +20040615 210000 +20040715 210000 +20040815 210000 +20040915 210000 +20041015 210000 +20041115 210000 +20041215 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case2/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case2/CAP2.rc new file mode 100644 index 000000000000..4dc521f63044 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case2/CAP2.rc @@ -0,0 +1,15 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20071125 210000 +20071126 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case2/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case2/ExtData.rc new file mode 100644 index 000000000000..9a1d56d1f370 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case2/ExtData.rc @@ -0,0 +1,13 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA Y N 0 none none VAR2D case1.2004.nc4 +VAR3D NA Y N 0 none none VAR3D case1.2004.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case2/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case2/HISTORY1.rc new file mode 100644 index 000000000000..51d004d9660c --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case2/HISTORY1.rc @@ -0,0 +1,13 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.duration: 000000 + case1.fields: 'VAR2D', 'Root', + 'VAR3D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case2/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case2/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case2/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case2/README b/Tests/ExtData_Testing_Framework/test_cases/case2/README new file mode 100644 index 000000000000..a022d98f1113 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case2/README @@ -0,0 +1 @@ +Case, 12-month/12 time 2004 file with 2 updates, climatology diff --git a/Tests/ExtData_Testing_Framework/test_cases/case2/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case2/extdata.yaml new file mode 100644 index 000000000000..739a9e22c98c --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case2/extdata.yaml @@ -0,0 +1,7 @@ +Samplings: + sample_clim: {extrapolation: clim} +Collections: + fstream1: {template: "case1.2004.nc4"} +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: sample_clim} + VAR3D: {variable: VAR3D, collection: fstream1, sample: sample_clim} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case20/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case20/AGCM1.rc new file mode 100644 index 000000000000..3583e9d12516 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case20/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20160101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case20/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case20/AGCM2.rc new file mode 100644 index 000000000000..fb783b442edd --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case20/AGCM2.rc @@ -0,0 +1,24 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D 59.0+(58.0-57.0)*0.5 +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case20/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case20/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case20/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case20/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case20/CAP1.rc new file mode 100644 index 000000000000..397c91b0abe3 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case20/CAP1.rc @@ -0,0 +1,10 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20151231 000000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case20/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case20/CAP2.rc new file mode 100644 index 000000000000..0f06f66198de --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case20/CAP2.rc @@ -0,0 +1,14 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20200101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20200229 120000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case20/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case20/ExtData.rc new file mode 100644 index 000000000000..67ef7b54a4a8 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case20/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .true. +Prefetch: .true. +DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N 0 none none VAR2D case1.%y4%m2%d2.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case20/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case20/HISTORY1.rc new file mode 100644 index 000000000000..7f1045a27232 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case20/HISTORY1.rc @@ -0,0 +1,12 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2%d2.nc4', + case1.format: 'CFIO', + case1.frequency: 240000, + case1.ref_time: 000000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case20/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case20/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case20/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case20/README b/Tests/ExtData_Testing_Framework/test_cases/case20/README new file mode 100644 index 000000000000..5e7fa8803054 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case20/README @@ -0,0 +1 @@ +Make daily files for 2016. Then start on February 29th in 2020 and allow extrapolation outside of dataset a climatology diff --git a/Tests/ExtData_Testing_Framework/test_cases/case20/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case20/extdata.yaml new file mode 100644 index 000000000000..01db6d85f976 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case20/extdata.yaml @@ -0,0 +1,8 @@ +Collections: + fstream1: {template: "case1.%y4%m2%d2.nc4", valid_range: "2016-01-01/2016-12-31" } +Samplings: + S1: + extrapolation: clim + source_time: "2016-01-01/2016-12-31" +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: S1} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case21/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case21/AGCM1.rc new file mode 100644 index 000000000000..1f672143e749 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case21/AGCM1.rc @@ -0,0 +1,24 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR1 , time , days , xy , c +VAR2 , time , days , xy , c +:: + +FILL_DEF:: +VAR1 time +VAR2 time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case21/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case21/AGCM2.rc new file mode 100644 index 000000000000..14b0d586bdfb --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case21/AGCM2.rc @@ -0,0 +1,33 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +VAR1 , time , days , xy , c +VAR2 , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +VAR1 , time , days , xy , c +VAR2 , time , days , xy , c +:: + + +FILL_DEF:: +VAR2D time+time +VAR1 time +VAR2 time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case21/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case21/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case21/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case21/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case21/CAP1.rc new file mode 100644 index 000000000000..ce2690d6937b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case21/CAP1.rc @@ -0,0 +1,25 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20040115 210000 +20040215 210000 +20040315 210000 +20040415 210000 +20040515 210000 +20040615 210000 +20040715 210000 +20040815 210000 +20040915 210000 +20041015 210000 +20041115 210000 +20041215 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case21/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case21/CAP2.rc new file mode 100644 index 000000000000..4e9e1bb95026 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case21/CAP2.rc @@ -0,0 +1,15 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20041125 210000 +20041126 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case21/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case21/ExtData.rc new file mode 100644 index 000000000000..57736ed30bef --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case21/ExtData.rc @@ -0,0 +1,14 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR1 NA N N 0 none none VAR1 case1.%y4.nc4 +VAR2 NA N N 0 none none VAR2 case1.%y4.nc4 +%% + + +DerivedExports%% +VAR2D VAR1+VAR2 0 +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case21/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case21/HISTORY1.rc new file mode 100644 index 000000000000..bb5ee8a77ef6 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case21/HISTORY1.rc @@ -0,0 +1,13 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.duration: 000000 + case1.fields: 'VAR1', 'Root', + 'VAR2', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case21/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case21/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case21/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case21/README b/Tests/ExtData_Testing_Framework/test_cases/case21/README new file mode 100644 index 000000000000..df7cb0f82872 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case21/README @@ -0,0 +1 @@ +test derived export to create sum of 2 variables diff --git a/Tests/ExtData_Testing_Framework/test_cases/case21/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case21/extdata.yaml new file mode 100644 index 000000000000..c1f9b4354434 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case21/extdata.yaml @@ -0,0 +1,8 @@ +Collections: + fstream1: {template: case1.%y4.nc4, valid_range: "2004-01-01/2005-01-01" } +Exports: + VAR1: {variable: VAR1, collection: fstream1} + VAR2: {variable: VAR2, collection: fstream1} + +Derived: + VAR2D: {function: VAR1+VAR2} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/AGCM1.rc new file mode 100644 index 000000000000..81bb07dcdcbd --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20080101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/AGCM2.rc new file mode 100644 index 000000000000..0a1f70b7456c --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/AGCM2.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 90 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20080101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/AGCM3.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/AGCM3.rc new file mode 100644 index 000000000000..dc81ef15d2da --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/AGCM3.rc @@ -0,0 +1,26 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20080101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/CAP.rc new file mode 100644 index 000000000000..7cbd02ce9493 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/CAP.rc @@ -0,0 +1,5 @@ +CASES:: +CAP1.rc +CAP2.rc +CAP3.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/CAP1.rc new file mode 100644 index 000000000000..2dd970d08f1b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/CAP1.rc @@ -0,0 +1,12 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20071231 230000 + +JOB_SGMT: 00001201 000000 +HEARTBEAT_DT: 3600 + + +USE_EXTDATA2G: .true. +USE_EXTDATA2G: .true. diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/CAP2.rc new file mode 100644 index 000000000000..18c901f66ed9 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/CAP2.rc @@ -0,0 +1,12 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20081231 230000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + + +USE_EXTDATA2G: .true. +USE_EXTDATA2G: .true. diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/CAP3.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/CAP3.rc new file mode 100644 index 000000000000..cbb7b325f460 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/CAP3.rc @@ -0,0 +1,11 @@ +ROOT_NAME: Root +ROOT_CF: AGCM3.rc +HIST_CF: HISTORY3.rc + +BEG_DATE: 20081229 000000 + +JOB_SGMT: 00000010 000000 +HEARTBEAT_DT: 3600 + + +USE_EXTDATA2G: .true. diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/ExtData.rc new file mode 100644 index 000000000000..1b98d7c432b9 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA 2008 N 0 none none VAR2D case1.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/HISTORY1.rc new file mode 100644 index 000000000000..fe45450680fd --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/HISTORY1.rc @@ -0,0 +1,13 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: 'nc4', + case1.format: 'CFIO', + case1.frequency: 240000, + case1.duration: 000000, + case1.ref_time: 000000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/HISTORY2.rc new file mode 100644 index 000000000000..e75f98424508 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/HISTORY2.rc @@ -0,0 +1,13 @@ +GRID_LABELS: +:: + +COLLECTIONS: case2 +:: + + case2.template: 'nc4', + case2.format: 'CFIO', + case2.frequency: 240000, + case2.duration: 000000, + case2.ref_time: 000000, + case2.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/HISTORY3.rc b/Tests/ExtData_Testing_Framework/test_cases/case22/HISTORY3.rc new file mode 100644 index 000000000000..720dd45ecd3d --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/HISTORY3.rc @@ -0,0 +1,13 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: + + case2.template: 'nc4', + case2.format: 'CFIO', + case2.frequency: 240000, + case2.duration: 000000, + case2.ref_time: 000000, + case2.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/README b/Tests/ExtData_Testing_Framework/test_cases/case22/README new file mode 100644 index 000000000000..6ea1c769dbad --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/README @@ -0,0 +1 @@ +test multiple datasets where an export uses both with with no extrapolation outside and crosses transition date diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/case1.rcx b/Tests/ExtData_Testing_Framework/test_cases/case22/case1.rcx new file mode 100644 index 000000000000..1a19553ea86f --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/case1.rcx @@ -0,0 +1,7 @@ + case1.template: 'nc4', + case1.format: 'CFIO', + case1.frequency: 240000, + case1.duration: 000000, + case1.ref_time: 000000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/case2.rcx b/Tests/ExtData_Testing_Framework/test_cases/case22/case2.rcx new file mode 100644 index 000000000000..4ba51fb14b9b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/case2.rcx @@ -0,0 +1,7 @@ + case2.template: 'nc4', + case2.format: 'CFIO', + case2.frequency: 240000, + case2.duration: 000000, + case2.ref_time: 000000, + case2.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/egress b/Tests/ExtData_Testing_Framework/test_cases/case22/egress new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case22/extdata.yaml new file mode 100644 index 000000000000..34ce04867e7b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/extdata.yaml @@ -0,0 +1,7 @@ +Collections: + fstream1: {template: "case1.nc4", valid_range: "2008-01-01/2008-12-31"} + fstream2: {template: "case2.nc4", valid_range: "2009-01-01/2009-12-31"} +Exports: + VAR2D: + - {starting: "2008-01-01", variable: VAR2D, collection: fstream1} + - {starting: "2009-01-01", variable: VAR2D, collection: fstream2} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case22/warnings_and_errors.log b/Tests/ExtData_Testing_Framework/test_cases/case22/warnings_and_errors.log new file mode 100644 index 000000000000..9144b2f54291 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case22/warnings_and_errors.log @@ -0,0 +1,60 @@ +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: EXTDATA: In ExtData resource file, could not find: VAR2D +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: EXTDATA: In ExtData resource file, could not find: VAR2D +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: EXTDATA: In ExtData resource file, could not find: VAR2D +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage +pe=00000: MAPL: No configure file specified for logging layer. Using defaults. +pe=00000: EXTDATA: Using ExtData2G, note this is still in BETA stage diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/AGCM1.rc new file mode 100644 index 000000000000..3583e9d12516 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20160101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/AGCM2.rc new file mode 100644 index 000000000000..3583e9d12516 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/AGCM2.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20160101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/AGCM3.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/AGCM3.rc new file mode 100644 index 000000000000..fa066d52daf6 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/AGCM3.rc @@ -0,0 +1,26 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: FillImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20160101 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/CAP.rc new file mode 100644 index 000000000000..7cbd02ce9493 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/CAP.rc @@ -0,0 +1,5 @@ +CASES:: +CAP1.rc +CAP2.rc +CAP3.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/CAP1.rc new file mode 100644 index 000000000000..cd699d9b294a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/CAP1.rc @@ -0,0 +1,11 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20151231 000000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + + +USE_EXTDATA2G: .true. diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/CAP2.rc new file mode 100644 index 000000000000..70bafc168604 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/CAP2.rc @@ -0,0 +1,11 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20191225 000000 + +JOB_SGMT: 00000020 000000 +HEARTBEAT_DT: 3600 + + +USE_EXTDATA2G: .true. diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/CAP3.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/CAP3.rc new file mode 100644 index 000000000000..177c24b23153 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/CAP3.rc @@ -0,0 +1,11 @@ +ROOT_NAME: Root +ROOT_CF: AGCM3.rc +HIST_CF: HISTORY3.rc + +BEG_DATE: 20191227 000000 + +JOB_SGMT: 00000011 000000 +HEARTBEAT_DT: 3600 + + +USE_EXTDATA2G: .true. diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/ExtData.rc new file mode 100644 index 000000000000..67ef7b54a4a8 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .true. +Prefetch: .true. +DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N 0 none none VAR2D case1.%y4%m2%d2.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/HISTORY1.rc new file mode 100644 index 000000000000..7f1045a27232 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/HISTORY1.rc @@ -0,0 +1,12 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2%d2.nc4', + case1.format: 'CFIO', + case1.frequency: 240000, + case1.ref_time: 000000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/HISTORY2.rc new file mode 100644 index 000000000000..cddbea20dd5e --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/HISTORY2.rc @@ -0,0 +1,12 @@ +GRID_LABELS: +:: + +COLLECTIONS: case2 +:: + + case2.template: '%y4%m2%d2.nc4', + case2.format: 'CFIO', + case2.frequency: 240000, + case2.ref_time: 000000, + case2.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/HISTORY3.rc b/Tests/ExtData_Testing_Framework/test_cases/case23/HISTORY3.rc new file mode 100644 index 000000000000..31702240896d --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/HISTORY3.rc @@ -0,0 +1,12 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: + + case1.template: '%y4%m2%d2.nc4', + case1.format: 'CFIO', + case1.frequency: 240000, + case1.ref_time: 000000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/README b/Tests/ExtData_Testing_Framework/test_cases/case23/README new file mode 100644 index 000000000000..8f1c29fb1967 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/README @@ -0,0 +1 @@ +Test multiple datasets and treat Climatology in the first and a real-time in the 2nd diff --git a/Tests/ExtData_Testing_Framework/test_cases/case23/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case23/extdata.yaml new file mode 100644 index 000000000000..49fa281346d1 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case23/extdata.yaml @@ -0,0 +1,11 @@ +Collections: + fstream1: {template: "case1.%y4%m2%d2.nc4", valid_range: "2016-01-01/2016-12-31" } + fstream2: {template: "case2.%y4%m2%d2.nc4", valid_range: "2019-12-31/2020-01-10" } +Samplings: + S1: + extrapolation: clim + source_time: "2016-01-01/2016-12-31" +Exports: + VAR2D: + - {starting: 1970-01-01, variable: VAR2D, collection: fstream1, sample: S1} + - {starting: 2020-01-01, variable: VAR2D, collection: fstream2} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case24/AGCM1.rc new file mode 100644 index 000000000000..2ef970737fb7 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 6 + +Root.GRID_TYPE: Cubed-Sphere +Root.GRIDNAME: PE24x144-CF +Root.LM: 3 +Root.IM_WORLD: 24 +Root.NF: 6 + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +FILL_DEF:: +VAR2D time +VAR3D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case24/AGCM2.rc new file mode 100644 index 000000000000..c49217bcec3c --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/AGCM2.rc @@ -0,0 +1,27 @@ +NX: 1 +NY: 6 + +Root.GRID_TYPE: Cubed-Sphere +Root.GRIDNAME: PE24x144-CF +Root.LM: 3 +Root.IM_WORLD: 24 +Root.NF: 6 + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +VAR3D , time , days , xyz , c +:: + +FILL_DEF:: +VAR2D time +VAR3D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case24/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case24/CAP1.rc new file mode 100644 index 000000000000..ce2690d6937b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/CAP1.rc @@ -0,0 +1,25 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20040115 210000 +20040215 210000 +20040315 210000 +20040415 210000 +20040515 210000 +20040615 210000 +20040715 210000 +20040815 210000 +20040915 210000 +20041015 210000 +20041115 210000 +20041215 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case24/CAP2.rc new file mode 100644 index 000000000000..4e9e1bb95026 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/CAP2.rc @@ -0,0 +1,15 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20041125 210000 +20041126 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case24/ExtData.rc new file mode 100644 index 000000000000..0e50d21b5b84 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/ExtData.rc @@ -0,0 +1,13 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N 0 none none VAR2D case1.%y4.nc4 +VAR3D NA N N 0 none none VAR3D case2.%y4.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case24/HISTORY1.rc new file mode 100644 index 000000000000..15d036f1bc9f --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/HISTORY1.rc @@ -0,0 +1,19 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 + case2 +:: + + case1.template: '%y4.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.duration: 000000 + case1.fields: 'VAR2D', 'Root', + :: + case2.template: '%y4.nc4', + case2.format: 'CFIO', + case2.frequency: 010000, + case2.duration: 000000 + case2.fields: 'VAR3D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case24/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/README b/Tests/ExtData_Testing_Framework/test_cases/case24/README new file mode 100644 index 000000000000..39f44190eea4 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/README @@ -0,0 +1 @@ +Case, 12-month/12 time 2004 file with 2 updates, non-climatology, cubed-sphere diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case24/extdata.yaml new file mode 100644 index 000000000000..ade3dd293935 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/extdata.yaml @@ -0,0 +1,6 @@ +Collections: + fstream1: {template: case1.%y4.nc4, valid_range: "2004-01-01/2005-01-01" } + fstream2: {template: case2.%y4.nc4, valid_range: "2004-01-01/2005-01-01" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1} + VAR3D: {variable: VAR3D, collection: fstream2} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case24/nproc.rc b/Tests/ExtData_Testing_Framework/test_cases/case24/nproc.rc new file mode 100644 index 000000000000..1e8b31496214 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case24/nproc.rc @@ -0,0 +1 @@ +6 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case25/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case25/AGCM1.rc new file mode 100644 index 000000000000..9772fa73fa05 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case25/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR3D , time , days , xyz , e +:: + +FILL_DEF:: +VAR3D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case25/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case25/AGCM2.rc new file mode 100644 index 000000000000..25468d893da6 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case25/AGCM2.rc @@ -0,0 +1,26 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR3D , time , days , xyz , e +:: + +EXPORT_STATE:: +VAR3D , time , days , xyz , e +:: + +FILL_DEF:: +VAR3D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case25/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case25/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case25/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case25/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case25/CAP1.rc new file mode 100644 index 000000000000..ce2690d6937b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case25/CAP1.rc @@ -0,0 +1,25 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20040115 210000 +20040215 210000 +20040315 210000 +20040415 210000 +20040515 210000 +20040615 210000 +20040715 210000 +20040815 210000 +20040915 210000 +20041015 210000 +20041115 210000 +20041215 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case25/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case25/CAP2.rc new file mode 100644 index 000000000000..4e9e1bb95026 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case25/CAP2.rc @@ -0,0 +1,15 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20041125 210000 +20041126 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case25/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case25/ExtData.rc new file mode 100644 index 000000000000..a45d1dd13f7f --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case25/ExtData.rc @@ -0,0 +1,13 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N 0 none none VAR2D case1.%y4.nc4 +VAR3D NA N N 0 none none VAR3D case1.%y4.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case25/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case25/HISTORY1.rc new file mode 100644 index 000000000000..1b6e816089a7 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case25/HISTORY1.rc @@ -0,0 +1,23 @@ +GRID_LABELS: PC45x21-DC +:: + +PC45x21-DC.GRID_TYPE: LatLon +PC45x21-DC.IM_WORLD: 45 +PC45x21-DC.JM_WORLD: 21 +PC45x21-DC.POLE: PC +PC45x21-DC.DATELINE: DC +PC45x21-DC.LM: 3 + +#GRID_LABELS: +#:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.duration: 000000 + case1.grid_label: PC45x21-DC + case1.fields: 'VAR3D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case25/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case25/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case25/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case25/README b/Tests/ExtData_Testing_Framework/test_cases/case25/README new file mode 100644 index 000000000000..318986102ca4 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case25/README @@ -0,0 +1 @@ +test reading edge variables diff --git a/Tests/ExtData_Testing_Framework/test_cases/case25/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case25/extdata.yaml new file mode 100644 index 000000000000..e2ddb90675ab --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case25/extdata.yaml @@ -0,0 +1,5 @@ +Collections: + fstream1: {template: case1.%y4.nc4, valid_range: "2004-01-01/2005-01-01" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1} + VAR3D: {variable: VAR3D, collection: fstream1} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case26/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case26/AGCM1.rc new file mode 100644 index 000000000000..214bbb31e7bf --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case26/AGCM1.rc @@ -0,0 +1,24 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR3Dc , time , days , xyz , c +VAR3De , time , days , xyz , e +:: + +FILL_DEF:: +VAR3Dc time +VAR3De time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case26/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case26/AGCM2.rc new file mode 100644 index 000000000000..defaa0643ab7 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case26/AGCM2.rc @@ -0,0 +1,29 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR3Dc , time , days , xyz , c +VAR3De , time , days , xyz , e +:: + +EXPORT_STATE:: +VAR3Dc , time , days , xyz , c +VAR3De , time , days , xyz , e +:: + +FILL_DEF:: +VAR3Dc time +VAR3De time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case26/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case26/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case26/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case26/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case26/CAP1.rc new file mode 100644 index 000000000000..ce2690d6937b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case26/CAP1.rc @@ -0,0 +1,25 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20040115 210000 +20040215 210000 +20040315 210000 +20040415 210000 +20040515 210000 +20040615 210000 +20040715 210000 +20040815 210000 +20040915 210000 +20041015 210000 +20041115 210000 +20041215 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case26/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case26/CAP2.rc new file mode 100644 index 000000000000..4e9e1bb95026 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case26/CAP2.rc @@ -0,0 +1,15 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20041125 210000 +20041126 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case26/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case26/ExtData.rc new file mode 100644 index 000000000000..10b7735216ec --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case26/ExtData.rc @@ -0,0 +1,13 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR3Dc NA N N 0 none none VAR3Dc casec.%y4.nc4 +VAR3De NA N N 0 none none VAR3De casee.%y4.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case26/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case26/HISTORY1.rc new file mode 100644 index 000000000000..d0936b060353 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case26/HISTORY1.rc @@ -0,0 +1,31 @@ +GRID_LABELS: PC45x21-DC +:: + +PC45x21-DC.GRID_TYPE: LatLon +PC45x21-DC.IM_WORLD: 45 +PC45x21-DC.JM_WORLD: 21 +PC45x21-DC.POLE: PC +PC45x21-DC.DATELINE: DC +PC45x21-DC.LM: 3 + +#GRID_LABELS: +#:: + +COLLECTIONS: casec + casee +:: + + casec.template: '%y4.nc4', + casec.format: 'CFIO', + casec.frequency: 010000, + casec.duration: 000000 + casec.grid_label: PC45x21-DC + casec.fields: 'VAR3Dc', 'Root', + :: + casee.template: '%y4.nc4', + casee.format: 'CFIO', + casee.frequency: 010000, + casee.duration: 000000 + casee.grid_label: PC45x21-DC + casee.fields: 'VAR3De', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case26/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case26/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case26/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case26/README b/Tests/ExtData_Testing_Framework/test_cases/case26/README new file mode 100644 index 000000000000..cec787fe0882 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case26/README @@ -0,0 +1 @@ +Read edge + center diff --git a/Tests/ExtData_Testing_Framework/test_cases/case26/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case26/extdata.yaml new file mode 100644 index 000000000000..75ab030466dd --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case26/extdata.yaml @@ -0,0 +1,6 @@ +Collections: + fstreamc: {template: casec.%y4.nc4, valid_range: "2004-01-01/2005-01-01" } + fstreame: {template: casee.%y4.nc4, valid_range: "2004-01-01/2005-01-01" } +Exports: + VAR3Dc: {variable: VAR3Dc, collection: fstreamc} + VAR3De: {variable: VAR3De, collection: fstreame} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case3/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case3/AGCM1.rc new file mode 100644 index 000000000000..302766bebfab --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case3/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case3/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case3/AGCM2.rc new file mode 100644 index 000000000000..63df38ae71a5 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case3/AGCM2.rc @@ -0,0 +1,27 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +CLIM_YEAR: 2004 +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case3/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case3/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case3/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case3/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case3/CAP1.rc new file mode 100644 index 000000000000..a75a8c48bd1e --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case3/CAP1.rc @@ -0,0 +1,24 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +RUN_TIMES:: +20040115 210000 +20040215 210000 +20040315 210000 +20040415 210000 +20040515 210000 +20040615 210000 +20040715 210000 +20040815 210000 +20040915 210000 +20041015 210000 +20041115 210000 +20041215 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case3/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case3/CAP2.rc new file mode 100644 index 000000000000..4dc521f63044 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case3/CAP2.rc @@ -0,0 +1,15 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20071125 210000 +20071126 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case3/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case3/ExtData.rc new file mode 100644 index 000000000000..523802edf5f1 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case3/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA 2004 N 0 none none VAR2D case1.%y4%m2.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case3/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case3/HISTORY1.rc new file mode 100644 index 000000000000..0b54db8e8f25 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case3/HISTORY1.rc @@ -0,0 +1,11 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case3/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case3/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case3/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case3/README b/Tests/ExtData_Testing_Framework/test_cases/case3/README new file mode 100644 index 000000000000..f47e12688ffc --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case3/README @@ -0,0 +1 @@ +Case 3, monthly files for 2004 file with 1 updates, climatology for 2007 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case3/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case3/extdata.yaml new file mode 100644 index 000000000000..1f70929226a8 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case3/extdata.yaml @@ -0,0 +1,6 @@ +Samplings: + sample_clim: {extrapolation: clim} +Collections: + fstream1: {template: "case1.%y4%m2.nc4", valid_range: "2004-01-01/2004-12-31" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, source_time: "2004-01-01/2004-12-31", sample: sample_clim} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case4/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case4/AGCM1.rc new file mode 100644 index 000000000000..93585c3bfdd2 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case4/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040415 210000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case4/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case4/AGCM2.rc new file mode 100644 index 000000000000..2271a4a04fe9 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case4/AGCM2.rc @@ -0,0 +1,26 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040416 090000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case4/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case4/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case4/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case4/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case4/CAP1.rc new file mode 100644 index 000000000000..8bc0e5df5306 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case4/CAP1.rc @@ -0,0 +1,16 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +RUN_TIMES:: +20040415 210000 +20040416 210000 +20040417 210000 +20040418 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case4/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case4/CAP2.rc new file mode 100644 index 000000000000..0209bfea0d8b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case4/CAP2.rc @@ -0,0 +1,13 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040415 210000 + +JOB_SGMT: 00000001 000000 +HEARTBEAT_DT: 3600 + +RUN_TIMES:: +20040416 090000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case4/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case4/ExtData.rc new file mode 100644 index 000000000000..782b2e1947b9 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case4/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N F0 none none VAR2D case1.%y4%m2%d2.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case4/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case4/HISTORY1.rc new file mode 100644 index 000000000000..295240a18188 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case4/HISTORY1.rc @@ -0,0 +1,11 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2%d2.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case4/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case4/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case4/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case4/README b/Tests/ExtData_Testing_Framework/test_cases/case4/README new file mode 100644 index 000000000000..04a0216fbe17 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case4/README @@ -0,0 +1 @@ +Case 4, simple everytime update with daily files and last value fixed diff --git a/Tests/ExtData_Testing_Framework/test_cases/case4/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case4/extdata.yaml new file mode 100644 index 000000000000..191e5e0e8ca5 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case4/extdata.yaml @@ -0,0 +1,6 @@ +Samplings: + sample_fixed: {time_interpolation: false} +Collections: + fstream1: {template: case1.%y4%m2%d2.nc4} +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: sample_fixed} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case5/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case5/AGCM1.rc new file mode 100644 index 000000000000..93585c3bfdd2 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case5/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040415 210000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case5/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case5/AGCM2.rc new file mode 100644 index 000000000000..6241b66ae49c --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case5/AGCM2.rc @@ -0,0 +1,26 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040415 210000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case5/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case5/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case5/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case5/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case5/CAP1.rc new file mode 100644 index 000000000000..8bc0e5df5306 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case5/CAP1.rc @@ -0,0 +1,16 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +RUN_TIMES:: +20040415 210000 +20040416 210000 +20040417 210000 +20040418 210000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case5/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case5/CAP2.rc new file mode 100644 index 000000000000..0209bfea0d8b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case5/CAP2.rc @@ -0,0 +1,13 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040415 210000 + +JOB_SGMT: 00000001 000000 +HEARTBEAT_DT: 3600 + +RUN_TIMES:: +20040416 090000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case5/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case5/ExtData.rc new file mode 100644 index 000000000000..1c81c28b2b97 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case5/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N 0 none none VAR2D case1.%y4%m2%d2.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case5/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case5/HISTORY1.rc new file mode 100644 index 000000000000..295240a18188 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case5/HISTORY1.rc @@ -0,0 +1,11 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2%d2.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case5/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case5/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case5/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case5/README b/Tests/ExtData_Testing_Framework/test_cases/case5/README new file mode 100644 index 000000000000..728af50ea7e9 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case5/README @@ -0,0 +1 @@ +Case 5, simple everytime update with daily files and time interpolation diff --git a/Tests/ExtData_Testing_Framework/test_cases/case5/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case5/extdata.yaml new file mode 100644 index 000000000000..a126e4e0ebf9 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case5/extdata.yaml @@ -0,0 +1,4 @@ +Collections: + fstream1: {template: case1.%y4%m2%d2.nc4} +Exports: + VAR2D: {variable: VAR2D, collection: fstream1} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case6/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case6/AGCM1.rc new file mode 100644 index 000000000000..302766bebfab --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case6/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case6/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case6/AGCM2.rc new file mode 100644 index 000000000000..7c517e6969e4 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case6/AGCM2.rc @@ -0,0 +1,24 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D 183+0.5*(-182.0-183.0) +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case6/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case6/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case6/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case6/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case6/CAP1.rc new file mode 100644 index 000000000000..b9c2d90f9891 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case6/CAP1.rc @@ -0,0 +1,10 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20031231 000000 + +JOB_SGMT: 00001202 000000 +HEARTBEAT_DT: 3600 + + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case6/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case6/CAP2.rc new file mode 100644 index 000000000000..845a49be478b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case6/CAP2.rc @@ -0,0 +1,14 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20061231 120000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case6/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case6/ExtData.rc new file mode 100644 index 000000000000..13d1376b6cf3 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case6/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA 2004 N 0 none none VAR2D case1.%y4%m2%d2.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case6/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case6/HISTORY1.rc new file mode 100644 index 000000000000..7f1045a27232 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case6/HISTORY1.rc @@ -0,0 +1,12 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2%d2.nc4', + case1.format: 'CFIO', + case1.frequency: 240000, + case1.ref_time: 000000, + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case6/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case6/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case6/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case6/README b/Tests/ExtData_Testing_Framework/test_cases/case6/README new file mode 100644 index 000000000000..585f98aab2ca --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case6/README @@ -0,0 +1 @@ +Case 6, daily files for 0z for a year, fill a time at 12z on the 31st of december 2006 as a climatology diff --git a/Tests/ExtData_Testing_Framework/test_cases/case6/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case6/extdata.yaml new file mode 100644 index 000000000000..67a7a29a9b0d --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case6/extdata.yaml @@ -0,0 +1,6 @@ +Samplings: + sample_clim: {extrapolation: clim, source_time: "2004-01-01/2004-12-31"} +Collections: + fstream1: {template: "case1.%y4%m2%d2.nc4", valid_range: "2004-01-01/2004-12-31" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: sample_clim} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case7/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case7/AGCM1.rc new file mode 100644 index 000000000000..1a52adfe187d --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case7/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC900x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case7/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case7/AGCM2.rc new file mode 100644 index 000000000000..7bc84048f88f --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case7/AGCM2.rc @@ -0,0 +1,25 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D 167.0+(2.0/31.0)*(-168.0-167.0) +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case7/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case7/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case7/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case7/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case7/CAP1.rc new file mode 100644 index 000000000000..77bd783ddb2e --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case7/CAP1.rc @@ -0,0 +1,25 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20040115 000000 +20040215 000000 +20040315 000000 +20040415 000000 +20040515 000000 +20040615 000000 +20040715 000000 +20040815 000000 +20040915 000000 +20041015 000000 +20041115 000000 +20041215 000000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case7/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case7/CAP2.rc new file mode 100644 index 000000000000..af401118d4fa --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case7/CAP2.rc @@ -0,0 +1,14 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20061217 000000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case7/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case7/ExtData.rc new file mode 100644 index 000000000000..ca41e8d3a0ec --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case7/ExtData.rc @@ -0,0 +1,11 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. + +PrimaryExports%% +VAR2D NA Y N 0 none none VAR2D case1.2004.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case7/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case7/HISTORY1.rc new file mode 100644 index 000000000000..a2ad110c3fde --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case7/HISTORY1.rc @@ -0,0 +1,12 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4.nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.duration: 000000 + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case7/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case7/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case7/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case7/README b/Tests/ExtData_Testing_Framework/test_cases/case7/README new file mode 100644 index 000000000000..fdfb854902d9 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case7/README @@ -0,0 +1 @@ +Case, 12-month/12 time 2004 file with an update that will wrap around the year diff --git a/Tests/ExtData_Testing_Framework/test_cases/case7/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case7/extdata.yaml new file mode 100644 index 000000000000..23fba59ae3ba --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case7/extdata.yaml @@ -0,0 +1,6 @@ +Samplings: + sample_clim: {source_time: "2004-01-01/2004-12-31", extrapolation: clim} +Collections: + fstream1: {template: "case1.2004.nc4", valid_range: "2004-01-01/2004-12-31" } +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: sample_clim} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case8/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case8/AGCM1.rc new file mode 100644 index 000000000000..93585c3bfdd2 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case8/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040415 210000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case8/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case8/AGCM2.rc new file mode 100644 index 000000000000..6241b66ae49c --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case8/AGCM2.rc @@ -0,0 +1,26 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D time +:: + +REF_TIME: 20040415 210000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case8/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case8/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case8/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case8/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case8/CAP1.rc new file mode 100644 index 000000000000..72cccef1f8b8 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case8/CAP1.rc @@ -0,0 +1,9 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040201 210000 + +JOB_SGMT: 00000002 000000 +HEARTBEAT_DT: 1800 + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case8/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case8/CAP2.rc new file mode 100644 index 000000000000..e820872c1e5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case8/CAP2.rc @@ -0,0 +1,14 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20040201 213000 + +JOB_SGMT: 00000002 000000 +HEARTBEAT_DT: 1800 + +RUN_TIMES:: +20040202 150000 +20040202 230000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case8/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case8/ExtData.rc new file mode 100644 index 000000000000..706353827d51 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case8/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N 0 none none VAR2D case1.%y4%m2%d2_%h2%n2.nc4 2004-02-01T21:30:00P0000-00-00T03:00:00 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case8/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case8/HISTORY1.rc new file mode 100644 index 000000000000..ce09c7e5290b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case8/HISTORY1.rc @@ -0,0 +1,12 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: '%y4%m2%d2_%h2%n2.nc4', + case1.format: 'CFIO', + case1.frequency: 030000, + case1.ref_time: 213000 + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case8/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case8/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case8/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case8/README b/Tests/ExtData_Testing_Framework/test_cases/case8/README new file mode 100644 index 000000000000..ef8f3c8089fb --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case8/README @@ -0,0 +1 @@ +Case 8, simple everytime update with a new file every 3 hours relative to 003000z diff --git a/Tests/ExtData_Testing_Framework/test_cases/case8/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case8/extdata.yaml new file mode 100644 index 000000000000..f7fbd8500570 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case8/extdata.yaml @@ -0,0 +1,4 @@ +Collections: + fstream1: {template: case1.%y4%m2%d2_%h2%n2.nc4, ref_time: "2004-02-01T21:30:00", freq: PT3H} +Exports: + VAR2D: {variable: VAR2D, collection: fstream1} diff --git a/Tests/ExtData_Testing_Framework/test_cases/case9/AGCM1.rc b/Tests/ExtData_Testing_Framework/test_cases/case9/AGCM1.rc new file mode 100644 index 000000000000..e7caf16aa2d0 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case9/AGCM1.rc @@ -0,0 +1,22 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: GenerateExports + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D 17.0 +:: + +REF_TIME: 20040701 000000 diff --git a/Tests/ExtData_Testing_Framework/test_cases/case9/AGCM2.rc b/Tests/ExtData_Testing_Framework/test_cases/case9/AGCM2.rc new file mode 100644 index 000000000000..8560c27aecc7 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case9/AGCM2.rc @@ -0,0 +1,25 @@ +NX: 1 +NY: 1 + +Root.GRID_TYPE: LatLon +Root.GRIDNAME: DC90x45-PC +Root.LM: 3 +Root.IM_WORLD: 90 +Root.JM_WORLD: 45 +Root.POLE: 'PC' +Root.DATELINE: 'DC' + +RUN_MODE: CompareImports + +IMPORT_STATE:: +VAR2D , time , days , xy , c +:: + +EXPORT_STATE:: +VAR2D , time , days , xy , c +:: + +FILL_DEF:: +VAR2D 17.0 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case9/CAP.rc b/Tests/ExtData_Testing_Framework/test_cases/case9/CAP.rc new file mode 100644 index 000000000000..680d0ffa9c5b --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case9/CAP.rc @@ -0,0 +1,4 @@ +CASES:: +CAP1.rc +CAP2.rc +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case9/CAP1.rc b/Tests/ExtData_Testing_Framework/test_cases/case9/CAP1.rc new file mode 100644 index 000000000000..db6a1b1fa205 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case9/CAP1.rc @@ -0,0 +1,14 @@ +ROOT_NAME: Root +ROOT_CF: AGCM1.rc +HIST_CF: HISTORY1.rc + +BEG_DATE: 20040101 210000 + +JOB_SGMT: 00001200 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20040701 000000 +:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case9/CAP2.rc b/Tests/ExtData_Testing_Framework/test_cases/case9/CAP2.rc new file mode 100644 index 000000000000..31ad1a874601 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case9/CAP2.rc @@ -0,0 +1,17 @@ +ROOT_NAME: Root +ROOT_CF: AGCM2.rc +HIST_CF: HISTORY2.rc + +BEG_DATE: 20000101 210000 + +JOB_SGMT: 00009600 000000 +HEARTBEAT_DT: 3600 + +#RUN_EXTDATA: .false. +RUN_TIMES:: +20020703 000000 +:: +#RUN_TIMES:: +#20041125 210000 +#:: + diff --git a/Tests/ExtData_Testing_Framework/test_cases/case9/ExtData.rc b/Tests/ExtData_Testing_Framework/test_cases/case9/ExtData.rc new file mode 100644 index 000000000000..b5f2a303a22e --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case9/ExtData.rc @@ -0,0 +1,12 @@ +#CASE_SENSITIVE_VARIABLE_NAMES: .false. +Ext_AllowExtrap: .false. +Prefetch: .true. +#DEBUG_LEVEL: 20 + +PrimaryExports%% +VAR2D NA N N - none none VAR2D case1.nc4 +%% + + +DerivedExports%% +%% diff --git a/Tests/ExtData_Testing_Framework/test_cases/case9/HISTORY1.rc b/Tests/ExtData_Testing_Framework/test_cases/case9/HISTORY1.rc new file mode 100644 index 000000000000..490301aee5ea --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case9/HISTORY1.rc @@ -0,0 +1,12 @@ +GRID_LABELS: +:: + +COLLECTIONS: case1 +:: + + case1.template: 'nc4', + case1.format: 'CFIO', + case1.frequency: 010000, + case1.duration: 000000 + case1.fields: 'VAR2D', 'Root', + :: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case9/HISTORY2.rc b/Tests/ExtData_Testing_Framework/test_cases/case9/HISTORY2.rc new file mode 100644 index 000000000000..2895432e995a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case9/HISTORY2.rc @@ -0,0 +1,5 @@ +GRID_LABELS: +:: + +COLLECTIONS: +:: diff --git a/Tests/ExtData_Testing_Framework/test_cases/case9/README b/Tests/ExtData_Testing_Framework/test_cases/case9/README new file mode 100644 index 000000000000..ffb8734bc0e7 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case9/README @@ -0,0 +1 @@ +Case 9 Single time file, persisted at all times diff --git a/Tests/ExtData_Testing_Framework/test_cases/case9/extdata.yaml b/Tests/ExtData_Testing_Framework/test_cases/case9/extdata.yaml new file mode 100644 index 000000000000..79f977377386 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/case9/extdata.yaml @@ -0,0 +1,6 @@ +Samplings: + sample_closest: {extrapolation: persist_closest} +Collections: + fstream1: {template: case1.nc4} +Exports: + VAR2D: {variable: VAR2D, collection: fstream1, sample: sample_closest} diff --git a/Tests/ExtData_Testing_Framework/test_cases/cases.txt b/Tests/ExtData_Testing_Framework/test_cases/cases.txt new file mode 100644 index 000000000000..9753d563eb9a --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/cases.txt @@ -0,0 +1,25 @@ +case1 +case2 +case3 +case4 +case5 +case6 +case7 +case8 +case9 +case10 +case11 +case12 +case13 +case14 +case15 +case16 +case18 +case19 +case20 +case21 +case22 +case23 +case24 +case25 +case26 diff --git a/Tests/ExtData_Testing_Framework/test_cases/test_case_descriptions.md b/Tests/ExtData_Testing_Framework/test_cases/test_case_descriptions.md new file mode 100644 index 000000000000..2b8b02b42681 --- /dev/null +++ b/Tests/ExtData_Testing_Framework/test_cases/test_case_descriptions.md @@ -0,0 +1,33 @@ +# Test Case Descriptions + +Note all test cases are in a numbered directory caseX, where a X is an integer and each case is described in the following list where the list number X is for folder caseX + +To run the test cases you can use the provided script and run the command: +path_to_script/run_extdatadriver_cases.py --builddir path_to_geos_install/bin --casedir path_to_cases --cases cases.txt --savelog TRUE + +1. 12-month/12 time 2004 file with 2 updates, non-climatology +2. 12-month/12 time 2004 file with 2 updates, climatology +3. monthly files for 2004 file with 1 updates, climatology for 2007 +4. simple everytime update with daily files and no time interpolation +5. simple everytime update with daily files and time interpolation +6. daily files for 0z for a year, fill a time at 12z on the 31st of december 2006 as a climatology +7. 12-month/12 time 2004 file with an update that will wrap around the year +8. simple everytime update with a new file every 3 hours relative to 003000z +9. Single time file, persisted at all times +10. Interpolation outside of data set (Harvard mode), make a multi year dataset. Define as not a climatology and ask for data after dataset time range +11. Interpolation outside of data set (Harvard mode), make a multi year dataset. Define as not a climatology and ask for data before datset time range +12. Test of case where you want to make a really coarse file in History that can not be decomposed on the default layout in the rc file. Be able to output such a file, then read back in on same grid in ExtData +13. Testing that we can take a climatology for a non-leap year and interpolate to a leap year. 12 files each with the midmonth value for 2007 (non-leap year). Interpolate to 02/29/2008 (leap year) +14. Testing that we can take a climatology for a non-leap year and interpolate to a leap year. Daily files each with 1 value for 2007 (non-leap year). Interpolate to 02/29/2008 (leap year) +15. Testing that we can take a climatology for a non-leap year and interpolate to a non-leap year. Daily files each with 1 value for 2007 (non-leap year). Interpolate to 03/29/2006 (leap year) +16. Testing that we can take a climatology for a leap year and interpolate to a non-leap year. Daily files each with 1 value for 2008 (leap year). Interpolate to 03/29/2006 15z (leap year) +17. Not used +18. Test vector regridding +19. Test set file to /dev/null +20. Make daily files for 2016. Then start on February 29th in 2020 and allow extrapolation outside of dataset a climatology +21. Test derived export to create sum of 2 variables +22. Test multiple datasets where an export uses both with with no extrapolation outside and crosses transition date +23. Test multiple datasets and treat Climatology in the first and a real-time in the 2nd +24. Test reading cubed-sphere input +25. Test reading edge variable +26. Test reading edge + cetner variables diff --git a/base/CMakeLists.txt b/base/CMakeLists.txt index 113d798cb93f..26ca0b229332 100644 --- a/base/CMakeLists.txt +++ b/base/CMakeLists.txt @@ -19,10 +19,10 @@ set (srcs ESMF_CFIOPtrVectorMod.F90 MAPL_RegridderVector.F90 ESMFL_Mod.F90 MAPL_SatVapor.F90 FileMetadataUtilities.F90 MAPL_GetLatLonCoord.F90 MAPL_SimpleAlarm.F90 - FileMetadataUtilitiesVector.F90 MAPL_GridManager.F90 MAPL_SimpleBundleMod.F90 + FileMetadataUtilitiesVector.F90 MAPL_GridManager.F90 MAPL_SimpleBundleMod.F90 MAPL_AbstractGridFactory.F90 MAPL_GridSpec.F90 MAPL_StringGridFactoryMap.F90 MAPL_GridType.F90 MAPL_StringGridMap.F90 MaplGrid.F90 - MAPL_AbstractRegridder.F90 + MAPL_AbstractRegridder.F90 MAPL_StringRouteHandleMap.F90 MAPL_IdentityRegridder.F90 MAPL_stubs.F90 MAPL_Integer64GridFactoryMap.F90 MAPL_sun_uc.F90 @@ -37,16 +37,16 @@ set (srcs MAPL_ConservativeRegridder.F90 MAPL_MaxMinMod.F90 MAPL_VerticalInterpMod.F90 MAPL_CubedSphereGridFactory.F90 MAPL_MemUtils.F90 MAPL_VerticalMethods.F90 MAPL_DefGridName.F90 Base.F90 MAPL_VotingRegridder.F90 - MAPL_EsmfRegridder.F90 MAPL_NewArthParser.F90 + MAPL_EsmfRegridder.F90 MAPL_NewArthParser.F90 MAPL_ESMFTimeVectorMod.F90 Regrid_Functions_Mod.F90 - MAPL_EtaHybridVerticalCoordinate.F90 - MAPL_NominalOrbitsMod.F90 + MAPL_EtaHybridVerticalCoordinate.F90 + MAPL_NominalOrbitsMod.F90 MAPL_LocStreamFactoryMod.F90 MAPL_LocstreamRegridder.F90 MAPL_ExternalGridFactory.F90 ServerManager.F90 ApplicationSupport.F90 - ESMF_CFIOPtrVectorMod.F90 + ESMF_CFIOPtrVectorMod.F90 CFIOCollection.F90 MAPL_CFIO.F90 - regex_module.F90 StringTemplate.F90 MAPL_SphericalGeometry.F90 + regex_module.F90 StringTemplate.F90 MAPL_SphericalGeometry.F90 regex_F.c c_mapl_locstream_F.c getrss.c memuse.c Base/Base_Base.F90 Base/Base_Base_implementation.F90 @@ -92,7 +92,7 @@ if (EXTENDED_SOURCE) esma_fortran_generator_list (${this} ${EXTENDED_SOURCE}) endif() -# Users guide +# Users guide if (LATEX_FOUND) add_subdirectory (TeX) endif () diff --git a/base/FileMetadataUtilities.F90 b/base/FileMetadataUtilities.F90 index f6726730615a..695bffe89e5b 100644 --- a/base/FileMetadataUtilities.F90 +++ b/base/FileMetadataUtilities.F90 @@ -61,10 +61,12 @@ function var_get_missing_value(this,var_name,rc) result(missing_value) integer, optional, intent(out) :: rc integer :: status + character(:), allocatable :: fname type(Variable), pointer :: var + fname = this%get_file_name(_RC) var => this%get_variable(var_name,_RC) - _ASSERT(associated(var),"no variable named "//var_name//" in file") + _ASSERT(associated(var),"no variable named "//var_name//" in "//fname) ! check _FillValue, we could do more, not sure what to do here like also check for missing_value ... if (this%var_has_attr(var_name,"_FillValue")) then missing_value = this%get_var_attr_real32(var_name,"_FillValue",_RC) @@ -79,10 +81,12 @@ logical function var_has_missing_value(this,var_name,rc) integer, optional, intent(out) :: rc integer :: status + character(:), allocatable :: fname type(Variable), pointer :: var + fname = this%get_file_name(_RC) var => this%get_variable(var_name,_RC) - _ASSERT(associated(var),"no variable named "//var_name//" in file") + _ASSERT(associated(var),"no variable named "//var_name//" in "//fname) var_has_missing_value = var%is_attribute_present("_FillValue") _RETURN(_SUCCESS) @@ -95,10 +99,12 @@ logical function var_has_attr(this,var_name,attr_name,rc) integer, optional, intent(out) :: rc integer :: status + character(:), allocatable :: fname type(Variable), pointer :: var + fname = this%get_file_name(_RC) var => this%get_variable(var_name,_RC) - _ASSERT(associated(var),"no variable named "//var_name//" in file") + _ASSERT(associated(var),"no variable named "//var_name//" in "//fname) var_has_attr = var%is_attribute_present(attr_name) _RETURN(_SUCCESS) end function var_has_attr @@ -111,22 +117,28 @@ function get_var_attr_real32(this,var_name,attr_name,rc) result(attr_real32) integer, optional, intent(out) :: rc real(REAL32) :: tmp(1) + real(REAL64) :: tmpd(1) integer :: status + character(:), allocatable :: fname type(Attribute), pointer :: attr type(Variable), pointer :: var class(*), pointer :: attr_val(:) + fname = this%get_file_name(_RC) var => this%get_variable(var_name,_RC) - _ASSERT(associated(var),"no variable named "//var_name//" in file") + _ASSERT(associated(var),"no variable named "//var_name//" in "//fname) attr => var%get_attribute(attr_name,_RC) - _ASSERT(associated(attr),"no attribute named "//attr_name//" in "//var_name//" in file") + _ASSERT(associated(attr),"no attribute named "//attr_name//" in "//var_name//" in "//fname) attr_val => attr%get_values() select type(attr_val) type is(real(kind=REAL32)) tmp = attr_val attr_real32 = tmp(1) + type is(real(kind=REAL64)) + tmpd = attr_val + attr_real32 = REAL(tmpd(1)) class default - _FAIL('unsupport subclass for units') + _FAIL('unsupported subclass (not real32) for units of attribute named '//attr_name//' in '//var_name//' in '//fname) end select _RETURN(_SUCCESS) @@ -141,21 +153,23 @@ function get_var_attr_real64(this,var_name,attr_name,rc) result(attr_real64) real(REAL64) :: tmp(1) integer :: status + character(:), allocatable :: fname type(Attribute), pointer :: attr type(Variable), pointer :: var class(*), pointer :: attr_val(:) + fname = this%get_file_name(_RC) var => this%get_variable(var_name,_RC) - _ASSERT(associated(var),"no variable named "//var_name//" in file") + _ASSERT(associated(var),"no variable named "//var_name//" in "//fname) attr => var%get_attribute(attr_name,_RC) - _ASSERT(associated(attr),"no attribute named "//attr_name//" in "//var_name//" in file") + _ASSERT(associated(attr),"no attribute named "//attr_name//" in "//var_name//" in "//fname) attr_val => attr%get_values() select type(attr_val) type is(real(kind=REAL64)) tmp = attr_val attr_real64 = tmp(1) class default - _FAIL('unsupport subclass for units') + _FAIL('unsupported subclass (not real64) for units of attribute named '//attr_name//' in '//var_name//' in '//fname) end select _RETURN(_SUCCESS) @@ -170,21 +184,23 @@ function get_var_attr_int32(this,var_name,attr_name,rc) result(attr_int32) integer(INT32) :: tmp(1) integer :: status + character(:), allocatable :: fname type(Attribute), pointer :: attr type(Variable), pointer :: var class(*), pointer :: attr_val(:) + fname = this%get_file_name(_RC) var => this%get_variable(var_name,_RC) - _ASSERT(associated(var),"no variable named "//var_name//" in file") + _ASSERT(associated(var),"no variable named "//var_name//" in "//fname) attr => var%get_attribute(attr_name,_RC) - _ASSERT(associated(attr),"no attribute named "//attr_name//" in "//var_name//" in file") + _ASSERT(associated(attr),"no attribute named "//attr_name//" in "//var_name//" in "//fname) attr_val => attr%get_values() select type(attr_val) type is(integer(kind=INT32)) tmp = attr_val attr_int32 = tmp(1) class default - _FAIL('unsupport subclass for units') + _FAIL('unsupported subclass (not int32) for units of attribute named '//attr_name//' in '//var_name//' in '//fname) end select _RETURN(_SUCCESS) @@ -199,21 +215,23 @@ function get_var_attr_int64(this,var_name,attr_name,rc) result(attr_int64) integer(INT64) :: tmp(1) integer :: status + character(:), allocatable :: fname type(Attribute), pointer :: attr type(Variable), pointer :: var class(*), pointer :: attr_val(:) + fname = this%get_file_name(_RC) var => this%get_variable(var_name,_RC) - _ASSERT(associated(var),"no variable named "//var_name//" in file") + _ASSERT(associated(var),"no variable named "//var_name//" in "//fname) attr => var%get_attribute(attr_name,_RC) - _ASSERT(associated(attr),"no attribute named "//attr_name//" in "//var_name//" in file") + _ASSERT(associated(attr),"no attribute named "//attr_name//" in "//var_name//" in "//fname) attr_val => attr%get_values() select type(attr_val) type is(integer(kind=INT64)) tmp = attr_val attr_int64 = tmp(1) class default - _FAIL('unsupport subclass for units') + _FAIL('unsupported subclass (not int64) for units of attribute named '//attr_name//' in '//var_name//' in '//fname) end select _RETURN(_SUCCESS) @@ -227,20 +245,22 @@ function get_var_attr_string(this,var_name,attr_name,rc) result(attr_string) integer, optional, intent(out) :: rc integer :: status + character(:), allocatable :: fname type(Attribute), pointer :: attr type(Variable), pointer :: var class(*), pointer :: attr_val + fname = this%get_file_name(_RC) var => this%get_variable(var_name,_RC) - _ASSERT(associated(var),"no variable named "//var_name//" in file") + _ASSERT(associated(var),"no variable named "//var_name//" in "//fname) attr => var%get_attribute(attr_name,_RC) - _ASSERT(associated(attr),"no attribute named "//attr_name//" in "//var_name//" in file") + _ASSERT(associated(attr),"no attribute named "//attr_name//" in "//var_name//" in "//fname) attr_val => attr%get_value() select type(attr_val) type is(character(*)) attr_string = attr_val class default - _FAIL('unsupport subclass for units') + _FAIL('unsupported subclass (not string) for units of attribute named '//attr_name//' in '//var_name//' in '//fname) end select _RETURN(_SUCCESS) @@ -261,6 +281,7 @@ subroutine get_time_info(this,startTime,startyear,startmonth,startday,starthour, integer, optional, intent(out) :: rc integer :: status + character(:), allocatable :: fname class(CoordinateVariable), pointer :: var type(Attribute), pointer :: attr class(*), pointer :: pTimeUnits @@ -278,6 +299,7 @@ subroutine get_time_info(this,startTime,startyear,startmonth,startday,starthour, real(REAL64), allocatable :: tr_r64(:) type(ESMF_TimeInterval) :: tint + fname = this%get_file_name(_RC) var => this%get_coordinate_variable('time',rc=status) _VERIFY(status) attr => var%get_attribute('units') @@ -356,7 +378,7 @@ subroutine get_time_info(this,startTime,startyear,startmonth,startday,starthour, endif endif class default - _FAIL("Time unit must be character") + _FAIL("Time unit must be character in "//fname) end select call ESMF_TimeSet(unmodStartTime,yy=year,mm=month,dd=day,h=hour,m=min,s=sec,rc=status) _VERIFY(status) @@ -366,7 +388,7 @@ subroutine get_time_info(this,startTime,startyear,startmonth,startday,starthour, allocate(tr_r64(tsize)) allocate(tvec(tsize)) ptr => var%get_coordinate_data() - _ASSERT(associated(ptr),"time variable coordinate data not found") + _ASSERT(associated(ptr),"time variable coordinate data not found in "//fname) select type (ptr) type is (real(kind=REAL64)) tr_r64=ptr @@ -377,7 +399,7 @@ subroutine get_time_info(this,startTime,startyear,startmonth,startday,starthour, type is (integer(kind=INT32)) tr_r64=ptr class default - _FAIL("unsupported time variable type") + _FAIL("unsupported time variable type in "//fname) end select do i=1,tsize select case (trim(tUnits)) @@ -398,7 +420,7 @@ subroutine get_time_info(this,startTime,startyear,startmonth,startday,starthour, _VERIFY(status) tvec(i)=unmodStartTime+tint case default - _FAIL("unsupported time unit") + _FAIL("unsupported time unit in "//fname) end select enddo @@ -440,7 +462,7 @@ function get_variable_attribute(this,var_name,attr_name,rc) result(units) character(len=*), intent(in) :: var_name character(len=*), intent(in) :: attr_name integer, optional, intent(out) :: rc - + character(:), allocatable :: fname character(len=:), pointer :: units type(Attribute), pointer :: attr => null() class(Variable), pointer :: var => null() @@ -448,6 +470,7 @@ function get_variable_attribute(this,var_name,attr_name,rc) result(units) logical :: isPresent integer :: status + fname = this%get_file_name(_RC) var => this%get_variable(var_name,rc=status) _VERIFY(status) isPresent = var%is_attribute_present(trim(attr_name)) @@ -458,7 +481,7 @@ function get_variable_attribute(this,var_name,attr_name,rc) result(units) type is (character(*)) units => vunits class default - _FAIL('units must be string') + _FAIL('units must be string for '//var_name//' in '//fname) end select else units => null() @@ -476,12 +499,14 @@ subroutine get_coordinate_info(this,coordinate_name,coordSize,coordUnits,coords, integer, optional, intent(out) :: rc integer :: status + character(:), allocatable :: fname class(CoordinateVariable), pointer :: var type(Attribute), pointer :: attr character(len=:), pointer :: vdim class(*), pointer :: coordUnitPtr class(*), pointer :: ptr(:) + fname = this%get_file_name(_RC) var => this%get_coordinate_variable(trim(coordinate_name),rc=status) _VERIFY(status) @@ -497,13 +522,13 @@ subroutine get_coordinate_info(this,coordinate_name,coordSize,coordUnits,coords, type is (character(*)) coordUnits = trim(coordUnitPtr) class default - _FAIL('units must be string') + _FAIL('coordinate units must be string in '//fname) end select end if if (present(coords)) then ptr => var%get_coordinate_data() - _ASSERT(associated(ptr),"coord variable coordinate data not found") + _ASSERT(associated(ptr),"coord variable coordinate data not found in "//fname) select type (ptr) type is (real(kind=REAL64)) coords=ptr @@ -514,7 +539,7 @@ subroutine get_coordinate_info(this,coordinate_name,coordSize,coordUnits,coords, type is (integer(kind=INT32)) coords=ptr class default - _FAIL("unsupported coordel variable type") + _FAIL("unsupported coordinate variable type in "//fname) end select end if _RETURN(_SUCCESS) diff --git a/base/MAPL_EsmfRegridder.F90 b/base/MAPL_EsmfRegridder.F90 index 9749a184acdc..519f216ef6f9 100644 --- a/base/MAPL_EsmfRegridder.F90 +++ b/base/MAPL_EsmfRegridder.F90 @@ -83,8 +83,10 @@ logical function supports(spec, unusable, rc) supports = any(spec%regrid_method == & [ & REGRID_METHOD_BILINEAR, & + REGRID_METHOD_BILINEAR_MONOTONIC, & REGRID_METHOD_BILINEAR_ROTATE, & REGRID_METHOD_CONSERVE, & + REGRID_METHOD_CONSERVE_MONOTONIC, & REGRID_METHOD_VOTE, & REGRID_METHOD_FRACTION, & REGRID_METHOD_CONSERVE_2ND, & @@ -1172,7 +1174,56 @@ subroutine simpleDynMaskProcV(dynamicMaskList, dynamicSrcMaskValue, & rc = ESMF_SUCCESS end subroutine simpleDynMaskProcV + subroutine monotonicDynMaskProcV(dynamicMaskList, dynamicSrcMaskValue, & + dynamicDstMaskValue, rc) + type(ESMF_DynamicMaskElementR4R8R4V), pointer :: dynamicMaskList(:) + real(ESMF_KIND_R4), intent(in), optional :: dynamicSrcMaskValue + real(ESMF_KIND_R4), intent(in), optional :: dynamicDstMaskValue + integer, intent(out) :: rc + integer :: i, j, k, n + real(ESMF_KIND_R4), allocatable :: renorm(:),max_input(:),min_input(:) + _UNUSED_DUMMY(dynamicDstMaskValue) + + if (associated(dynamicMaskList)) then + n = size(dynamicMaskList(1)%srcElement(1)%ptr) + allocate(renorm(n),max_input(n),min_input(n)) + + do i=1, size(dynamicMaskList) + dynamicMaskList(i)%dstElement = 0.0 ! set to zero + + renorm = 0.d0 ! reset + max_input = -huge(0.0) + min_input = huge(0.0) + do j=1, size(dynamicMaskList(i)%factor) + do k = 1, size(dynamicMaskList(i)%srcElement(j)%ptr) + if (.not. & + match(dynamicSrcMaskValue,dynamicMaskList(i)%srcElement(j)%ptr(k))) then + dynamicMaskList(i)%dstElement(k) = dynamicMaskList(i)%dstElement(k) & + + dynamicMaskList(i)%factor(j) & + * dynamicMaskList(i)%srcElement(j)%ptr(k) + renorm(k) = renorm(k) + dynamicMaskList(i)%factor(j) + if (dynamicMaskList(i)%srcElement(j)%ptr(k) > max_input(k)) max_input(k) = dynamicMaskList(i)%srcElement(j)%ptr(k) + if (dynamicMaskList(i)%srcElement(j)%ptr(k) < min_input(k)) min_input(k) = dynamicMaskList(i)%srcElement(j)%ptr(k) + endif + end do + end do + where (renorm > 0.d0) + dynamicMaskList(i)%dstElement = dynamicMaskList(i)%dstElement / renorm + elsewhere + dynamicMaskList(i)%dstElement = dynamicSrcMaskValue + end where + where (renorm > 0.d0 .and. dynamicMaskList(i)%dstElement > max_input) + dynamicMaskList(i)%dstElement = max_input + end where + where (renorm > 0.d0 .and. dynamicMaskList(i)%dstElement < min_input) + dynamicMaskList(i)%dstElement = min_input + end where + enddo + endif + ! return successfully + rc = ESMF_SUCCESS + end subroutine monotonicDynMaskProcV logical function match(missing,b) @@ -1337,6 +1388,13 @@ subroutine initialize_subclass(this, unusable, rc) & dynamicMaskRoutine=simpleDynMaskProcV, & & rc=rc) _VERIFY(rc) + case (REGRID_METHOD_BILINEAR_MONOTONIC, REGRID_METHOD_CONSERVE_MONOTONIC) + call ESMF_DynamicMaskSetR4R8R4V(this%dynamic_mask, & + & dynamicSrcMaskValue=MAPL_undef, & + & dynamicMaskRoutine=monotonicDynMaskProcV, & + & handleAllElements=.true., & + & rc=rc) + _VERIFY(rc) case (REGRID_METHOD_VOTE) call ESMF_DynamicMaskSetR4R8R4V(this%dynamic_mask, & & dynamicSrcMaskValue=MAPL_undef, & @@ -1435,7 +1493,7 @@ subroutine create_route_handle(this, kind, rc) if (.not.global) unmappedaction=ESMF_UNMAPPEDACTION_IGNORE end if select case (spec%regrid_method) - case (REGRID_METHOD_BILINEAR) + case (REGRID_METHOD_BILINEAR, REGRID_METHOD_BILINEAR_MONOTONIC) call ESMF_FieldRegridStore(src_field, dst_field, & & regridmethod=ESMF_REGRIDMETHOD_BILINEAR, & @@ -1462,7 +1520,7 @@ subroutine create_route_handle(this, kind, rc) & factorList=factorList, factorIndexList=factorIndexList, & & routehandle=route_handle, unmappedaction=unmappedaction, rc=status) _VERIFY(status) - case (REGRID_METHOD_CONSERVE, REGRID_METHOD_VOTE, REGRID_METHOD_FRACTION) + case (REGRID_METHOD_CONSERVE, REGRID_METHOD_CONSERVE_MONOTONIC, REGRID_METHOD_VOTE, REGRID_METHOD_FRACTION) call ESMF_FieldRegridStore(src_field, dst_field, & & regridmethod=ESMF_REGRIDMETHOD_CONSERVE, & & srcTermProcessing = srcTermProcessing, & diff --git a/base/RegridMethods.F90 b/base/RegridMethods.F90 index dfdc698a2c48..b8b809adc77a 100644 --- a/base/RegridMethods.F90 +++ b/base/RegridMethods.F90 @@ -1,12 +1,15 @@ module mapl_RegridMethods + use ESMF implicit none private public :: REGRID_HINT_LOCAL public :: REGRID_METHOD_IDENTITY public :: REGRID_METHOD_BILINEAR + public :: REGRID_METHOD_BILINEAR_MONOTONIC public :: REGRID_METHOD_BILINEAR_ROTATE public :: REGRID_METHOD_CONSERVE + public :: REGRID_METHOD_CONSERVE_MONOTONIC public :: REGRID_METHOD_VOTE public :: REGRID_METHOD_FRACTION public :: REGRID_METHOD_CONSERVE_2ND @@ -15,6 +18,7 @@ module mapl_RegridMethods public :: REGRID_METHOD_CONSERVE_HFLUX public :: UNSPECIFIED_REGRID_METHOD public :: TILING_METHODS + public :: get_regrid_method enum, bind(c) enumerator :: REGRID_METHOD_IDENTITY @@ -27,10 +31,48 @@ module mapl_RegridMethods enumerator :: REGRID_METHOD_PATCH enumerator :: REGRID_METHOD_NEAREST_STOD enumerator :: REGRID_METHOD_CONSERVE_HFLUX + enumerator :: REGRID_METHOD_BILINEAR_MONOTONIC + enumerator :: REGRID_METHOD_CONSERVE_MONOTONIC enumerator :: UNSPECIFIED_REGRID_METHOD = -1 end enum integer, parameter :: TILING_METHODS(3) = [REGRID_METHOD_CONSERVE,REGRID_METHOD_VOTE,REGRID_METHOD_FRACTION] integer, parameter :: REGRID_HINT_LOCAL = 1 + contains + + function get_regrid_method(string_regrid_method) result(int_regrid_method) + integer :: int_regrid_method + character(len=*), intent(in) :: string_regrid_method + + character(len=:), allocatable :: temp_str + temp_str = ESMF_UtilStringUpperCase(trim(string_regrid_method)) + + select case (temp_str) + case ("IDENTITY") + int_regrid_method = REGRID_METHOD_IDENTITY + case ("BILINEAR") + int_regrid_method = REGRID_METHOD_BILINEAR + case ("BILINEAR_ROTATE") + int_regrid_method = REGRID_METHOD_BILINEAR_ROTATE + case ("CONSERVE") + int_regrid_method = REGRID_METHOD_CONSERVE + case ("VOTE") + int_regrid_method = REGRID_METHOD_VOTE + case ("FRACTION") + int_regrid_method = REGRID_METHOD_FRACTION + case ("CONSERVE_2ND") + int_regrid_method = REGRID_METHOD_CONSERVE_2ND + case ("PATCH") + int_regrid_method = REGRID_METHOD_PATCH + case ("CONSERVE_HFLUX") + int_regrid_method = REGRID_METHOD_CONSERVE_HFLUX + case ("CONSERVE_MONOTONIC") + int_regrid_method = REGRID_METHOD_CONSERVE_MONOTONIC + case ("BILINEAR_MONOTONIC") + int_regrid_method = REGRID_METHOD_BILINEAR_MONOTONIC + case default + int_regrid_method = UNSPECIFIED_REGRID_METHOD + end select + end function end module mapl_RegridMethods diff --git a/base/tests/CMakeLists.txt b/base/tests/CMakeLists.txt index 9e300e6d8357..83ac2cf7e2eb 100644 --- a/base/tests/CMakeLists.txt +++ b/base/tests/CMakeLists.txt @@ -53,10 +53,10 @@ ecbuild_add_executable ( set_target_properties(${TESTIO} PROPERTIES Fortran_MODULE_DIRECTORY ${MODULE_DIRECTORY}) add_test(NAME bundleio_tests_latlon - COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ${CMAKE_CURRENT_BINARY_DIR}/${TESTIO} -nx 2 -ny 1 -ogrid PC90x47-DE) + COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ${CMAKE_CURRENT_BINARY_DIR}/${TESTIO} -nx 2 -ny 1 -ogrid PC90x47-DE -o file1_ll.nc4) add_test(NAME bundleio_tests_cube - COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 6 ${MPIEXEC_PREFLAGS} ${CMAKE_CURRENT_BINARY_DIR}/${TESTIO} -nx 1 -ny 6 -ogrid PE12x72-CF) + COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 6 ${MPIEXEC_PREFLAGS} ${CMAKE_CURRENT_BINARY_DIR}/${TESTIO} -nx 1 -ny 6 -ogrid PE12x72-CF -o file_cs.nc4) add_dependencies(build-tests ${TESTIO}) diff --git a/base/tests/mapl_bundleio_test.F90 b/base/tests/mapl_bundleio_test.F90 index 771cc49f38d7..87e9e6c5c9de 100644 --- a/base/tests/mapl_bundleio_test.F90 +++ b/base/tests/mapl_bundleio_test.F90 @@ -97,6 +97,8 @@ subroutine main() case('-ny') call get_command_argument(i+1,astr) read(astr,*)ny + case('-o') + call get_command_argument(i+1,filename) end select enddo @@ -157,7 +159,6 @@ subroutine main() call MAPL_FieldBundleAdd(bundle,field,__RC__) - filename="temp_file.nc4" call newWriter%create_from_bundle(bundle,clock,filename,rc=status) _VERIFY(status) call newWriter%write_to_file(rc=status) diff --git a/base/tests/testbin.F90 b/base/tests/testbin.F90 index 8e7c03c9c0c5..cf9d69a843c5 100644 --- a/base/tests/testbin.F90 +++ b/base/tests/testbin.F90 @@ -1,4 +1,4 @@ - +program testbin use HorzBinMod type (HorzBinTransform) :: T diff --git a/base/tests/testhorz.F90 b/base/tests/testhorz.F90 index 67277d6c7ed2..0f0314a39334 100644 --- a/base/tests/testhorz.F90 +++ b/base/tests/testhorz.F90 @@ -1,3 +1,5 @@ +program testhorz + use MAPL_HorzTransformMod implicit none diff --git a/base/tstqsat.F90 b/base/tstqsat.F90 index b8cb4e5d1b01..871c0f895a53 100644 --- a/base/tstqsat.F90 +++ b/base/tstqsat.F90 @@ -1,4 +1,4 @@ - +program tstqsat use MAPLBase_Mod diff --git a/components.yaml b/components.yaml index 9e5748618313..35913f85302e 100644 --- a/components.yaml +++ b/components.yaml @@ -5,13 +5,13 @@ MAPL: ESMA_env: local: ./ESMA_env remote: ../ESMA_env.git - tag: v3.13.0 + tag: v3.14.0 develop: main ESMA_cmake: local: ./ESMA_cmake remote: ../ESMA_cmake.git - tag: v3.12.0 + tag: v3.17.0 develop: develop ecbuild: diff --git a/generic/MAPL_Generic.F90 b/generic/MAPL_Generic.F90 index 783556841f78..a712c2485bc9 100644 --- a/generic/MAPL_Generic.F90 +++ b/generic/MAPL_Generic.F90 @@ -222,6 +222,7 @@ module MAPL_GenericMod public MAPL_GenericStateSave public MAPL_GenericStateRestore public MAPL_RootGcRetrieve + public MAPL_AddAttributeToFields !BOP ! !PUBLIC TYPES: @@ -341,6 +342,10 @@ module MAPL_GenericMod module procedure MAPL_GetLogger_meta end interface MAPL_GetLogger + interface MAPL_AddAttributeToFields + module procedure MAPL_AddAttributeToFields_I4 + end interface + ! ======================================================================= @@ -1707,7 +1712,10 @@ recursive subroutine MAPL_GenericWrapper ( GC, IMPORT, EXPORT, CLOCK, RC) procedure(ESMF_GridCompRun), pointer :: func_ptr => NULL() character(len=12), target :: timers_run(1) = & [character(len=12):: 'GenRunMine'] - character(len=12) :: sbrtn + character(len=:), allocatable :: sbrtn + + character(:), allocatable :: stage_description + class(Logger), pointer :: lgr !============================================================================= @@ -1726,6 +1734,8 @@ recursive subroutine MAPL_GenericWrapper ( GC, IMPORT, EXPORT, CLOCK, RC) _VERIFY(status) Iam = trim(comp_name) // trim(Iam) + lgr => logging%get_logger('MAPL.GENERIC') + call ESMF_VmGetCurrent(VM) ! Retrieve the pointer to the internal state. It comes in a wrapper. ! ------------------------------------------------------------------ @@ -1735,7 +1745,7 @@ recursive subroutine MAPL_GenericWrapper ( GC, IMPORT, EXPORT, CLOCK, RC) ! TIMERS on t_p => get_global_time_profiler() - call t_p%start(trim(state%compname),__RC__) + call t_p%start(trim(state%compname),_RC) phase_ = MAPL_MAX_PHASES+phase ! this is the "actual" phase, i.e. the one user registered @@ -1770,10 +1780,12 @@ recursive subroutine MAPL_GenericWrapper ( GC, IMPORT, EXPORT, CLOCK, RC) sbrtn = 'WriteRestart' endif MethodBlock + stage_description = sbrtn//' stage of the gridded component <'//trim(COMP_NAME)//'>' + ! TIMERS on if (method /= ESMF_METHOD_READRESTART .and. method /= ESMF_METHOD_WRITERESTART) then - call state%t_profiler%start(__RC__) - call state%t_profiler%start(trim(sbrtn),__RC__) + call state%t_profiler%start(_RC) + call state%t_profiler%start(trim(sbrtn),_RC) end if if (associated(timers)) then @@ -1784,34 +1796,32 @@ recursive subroutine MAPL_GenericWrapper ( GC, IMPORT, EXPORT, CLOCK, RC) ! Method itself ! ---------- -#ifdef DEBUG - IF (mapl_am_i_root(vm)) then - print *,'DBG: running ', sbrtn, ' phase ',phase,' of ',trim(comp_name) - end IF -#endif - + call lgr%debug('Started %a', stage_description) call func_ptr (GC, & importState=IMPORT, & exportState=EXPORT, & clock=CLOCK, PHASE=PHASE_, & - userRC=userRC, __RC__ ) + userRC=userRC, _RC ) _VERIFY(userRC) + _ASSERT(userRC==ESMF_SUCCESS .and. STATUS==ESMF_SUCCESS,'Error during '//stage_description//' for <'//trim(COMP_NAME)//'>') + call lgr%debug('Finished %a', stage_description) + ! TIMERS off if (associated(timers)) then do i = size(timers),1,-1 - call MAPL_TimerOff (STATE,timers(i),__RC__) + call MAPL_TimerOff (STATE,timers(i),_RC) end do end if if (method /= ESMF_METHOD_FINALIZE) then if (method /= ESMF_METHOD_WRITERESTART .and. & method /= ESMF_METHOD_READRESTART) then - call state%t_profiler%stop(trim(sbrtn),__RC__) - call state%t_profiler%stop(__RC__) + call state%t_profiler%stop(trim(sbrtn),_RC) + call state%t_profiler%stop(_RC) end if - call t_p%stop(trim(state%compname),__RC__) + call t_p%stop(trim(state%compname),_RC) endif @@ -4553,6 +4563,9 @@ recursive integer function AddChildFromMeta(META, NAME, GRID, & class(BaseProfiler), pointer :: t_p integer :: userRC + character(:), allocatable :: stage_description + class(Logger), pointer :: lgr + if (.not.allocated(META%GCNameList)) then ! this is the first child to be added allocate(META%GCNameList(0), __STAT__) @@ -4561,19 +4574,25 @@ recursive integer function AddChildFromMeta(META, NAME, GRID, & I = META%get_num_children() + 1 AddChildFromMeta = I - call AddChild_preamble(meta, I, name, grid=grid, configfile=configfile, parentGC=parentgc, petList=petlist, child_meta=child_meta, __RC__) + call AddChild_preamble(meta, I, name, grid=grid, configfile=configfile, parentGC=parentgc, petList=petlist, child_meta=child_meta, _RC) + + stage_description = 'setServices() of the gridded component <'//trim(name)//'>' + lgr => logging%get_logger('MAPL.GENERIC') + t_p => get_global_time_profiler() - call t_p%start(trim(NAME),__RC__) - call child_meta%t_profiler%start(__RC__) - call child_meta%t_profiler%start('SetService',__RC__) + call t_p%start(trim(NAME),_RC) + call child_meta%t_profiler%start(_RC) + call child_meta%t_profiler%start('SetService',_RC) !!$ gridcomp => META%GET_CHILD_GRIDCOMP(I) - call ESMF_GridCompSetServices ( child_meta%gridcomp, SS, userRC=userRC, __RC__ ) + call lgr%debug("Started %a", stage_description) + call ESMF_GridCompSetServices ( child_meta%gridcomp, SS, userRC=userRC, _RC ) _VERIFY(userRC) + call lgr%debug("Finished %a", stage_description) - call child_meta%t_profiler%stop('SetService',__RC__) - call child_meta%t_profiler%stop(__RC__) - call t_p%stop(trim(NAME),__RC__) + call child_meta%t_profiler%stop('SetService',_RC) + call child_meta%t_profiler%stop(_RC) + call t_p%stop(trim(NAME),_RC) _VERIFY(status) @@ -11320,4 +11339,41 @@ subroutine warn_empty(string, MPL, rc) _RETURN(ESMF_SUCCESS) end subroutine warn_empty + recursive subroutine MAPL_AddAttributeToFields_I4(gc,field_name,att_name,att_val,rc) + type(ESMF_GridComp), pointer, intent(inout) :: gc + character(len=*), intent(in) :: field_name + character(len=*), intent(in) :: att_name + integer(int32), intent(in) :: att_val + integer, optional, intent(out) :: rc + + integer :: nc,i,status + type(MAPL_MetaComp), pointer :: state + type(ESMF_GridComp), pointer :: child_gc + type(ESMF_Field) :: field + type(ESMF_StateItem_Flag) :: item_type + type(ESMF_TypeKind_Flag) :: item_kind + integer :: item_count + logical :: is_present + + call MAPL_GetObjectFromGC(gc,state,_RC) + call ESMF_StateGet(state%import_state,field_name,item_type,_RC) + if (item_type == ESMF_STATEITEM_FIELD) then + call ESMF_StateGet(state%import_state,field_name,field,_RC) + call ESMF_AttributeGet(field,name=att_name,isPresent=is_Present,_RC) + if (is_present) then + call ESMF_AttributeGet(field,name=att_name,typekind=item_kind,itemCount=item_count,_RC) + _ASSERT(item_kind == ESMF_TYPEKIND_I4,"attribute "//att_name//" in "//field_name//" is not I4") + _ASSERT(item_count==1,"attribute "//att_name//" in "//field_name//" is not a scalar") + end if + call ESMF_AttributeSet(field,name=att_name,value=att_val,_RC) + end if + nc = state%get_num_children() + do i=1,nc + child_gc => state%get_child_gridcomp(i) + call MAPL_AddAttributeToFields_I4(child_gc,field_name,att_name,att_val,_RC) + enddo + + _RETURN(_SUCCESS) + end subroutine MAPL_AddAttributeToFields_I4 + end module MAPL_GenericMod diff --git a/gridcomps/Cap/MAPL_CapGridComp.F90 b/gridcomps/Cap/MAPL_CapGridComp.F90 index 7cd16ef83648..c317fc364764 100644 --- a/gridcomps/Cap/MAPL_CapGridComp.F90 +++ b/gridcomps/Cap/MAPL_CapGridComp.F90 @@ -632,7 +632,7 @@ subroutine initialize_gc(gc, import_state, export_state, clock, rc) call cap%initialize_history(rc=status) _VERIFY(status) - call cap%initialize_extdata(rc=status) + call cap%initialize_extdata(root_gc,rc=status) _VERIFY(status) ! Finally check is this is a regular replay @@ -691,8 +691,9 @@ subroutine initialize_history(cap, rc) end subroutine initialize_history - subroutine initialize_extdata(cap , rc) + subroutine initialize_extdata(cap , root_gc, rc) class(MAPL_CapGridComp), intent(inout) :: cap + type (ESMF_GridComp), intent(inout), pointer :: root_gc integer, optional, intent(out) :: rc integer :: item_count, status type (ESMF_StateItem_Flag), pointer :: item_types(:) @@ -759,6 +760,7 @@ subroutine initialize_extdata(cap , rc) if (item_types(i) == ESMF_StateItem_Field) then call ESMF_StateGet(root_imports, item_names(i), field, rc = status) _VERIFY(status) + call MAPL_AddAttributeToFields(root_gc,trim(item_names(i)),'RESTART',MAPL_RestartSkip,_RC) call MAPL_StateAdd(state, field, rc = status) _VERIFY(status) else if (item_types(i) == ESMF_StateItem_FieldBundle) then diff --git a/gridcomps/ExtData2G/ExtDataConfig.F90 b/gridcomps/ExtData2G/ExtDataConfig.F90 index 14b8489eb16f..143ba31a59a0 100644 --- a/gridcomps/ExtData2G/ExtDataConfig.F90 +++ b/gridcomps/ExtData2G/ExtDataConfig.F90 @@ -28,7 +28,7 @@ module MAPL_ExtDataConfig type(ExtDataDerivedMap) :: derived_map type(ExtDataFileStreamMap) :: file_stream_map type(ExtDataTimeSampleMap) :: sample_map - + contains procedure :: add_new_rule procedure :: get_item_type @@ -40,7 +40,7 @@ module MAPL_ExtDataConfig contains - recursive subroutine new_ExtDataConfig_from_yaml(ext_config,config_file,current_time,unusable,rc) + recursive subroutine new_ExtDataConfig_from_yaml(ext_config,config_file,current_time,unusable,rc) class(ExtDataConfig), intent(inout), target :: ext_config character(len=*), intent(in) :: config_file type(ESMF_Time), intent(in) :: current_time @@ -65,16 +65,20 @@ recursive subroutine new_ExtDataConfig_from_yaml(ext_config,config_file,current_ integer :: i,num_rules integer, allocatable :: sorted_rules(:) character(len=1) :: i_char + logical :: file_found _UNUSED_DUMMY(unusable) + inquire(file=trim(config_file),exist=file_found) + _ASSERT(file_found,"could not find: "//trim(config_file)) + stack_depth=stack_depth+1 p = Parser('core') fstream=FileStream(config_file) yaml_node_stack(stack_depth) = p%load(fstream) call fstream%close() - if (yaml_node_stack(stack_depth)%has("subconfigs")) then + if (yaml_node_stack(stack_depth)%has("subconfigs")) then subconfigs = yaml_node_stack(stack_depth)%at("subconfigs") _ASSERT(subconfigs%is_sequence(),'subconfigs is not a sequence') do i=1,subconfigs%size() @@ -83,7 +87,7 @@ recursive subroutine new_ExtDataConfig_from_yaml(ext_config,config_file,current_ _VERIFY(status) end do end if - + if (yaml_node_stack(stack_depth)%has("Samplings")) then sample_config = yaml_node_stack(stack_depth)%of("Samplings") iter = sample_config%begin() @@ -122,14 +126,14 @@ recursive subroutine new_ExtDataConfig_from_yaml(ext_config,config_file,current_ if (subcfg%is_mapping()) then call ext_config%add_new_rule(key,subcfg,_RC) else if (subcfg%is_sequence()) then - sorted_rules = sort_rules_by_start(subcfg,_RC) + sorted_rules = sort_rules_by_start(subcfg,_RC) num_rules = subcfg%size() do i=1,num_rules rule_map = subcfg%of(sorted_rules(i)) write(i_char,'(I1)')i new_key = key//rule_sep//i_char call ext_config%add_new_rule(new_key,rule_map,multi_rule=.true.,_RC) - enddo + enddo else _FAIL("Exports must be sequence or map") end if @@ -167,7 +171,7 @@ function count_rules_for_item(this,item_name,rc) result(number_of_rules) class(ExtDataConfig), intent(in) :: this character(len=*), intent(in) :: item_name integer, optional, intent(out) :: rc - + type(ExtDataRuleMapIterator) :: rule_iterator character(len=:), pointer :: key integer :: idx @@ -200,7 +204,7 @@ function get_time_range(this,item_name,rc) result(time_range) type(ExtDataRule), pointer :: rule integer :: i,status,idx type(ESMF_Time) :: very_future_time - + rule_iterator = this%rule_map%begin() do while(rule_iterator /= this%rule_map%end()) key => rule_iterator%key() @@ -281,7 +285,7 @@ function get_item_type(this,item_name,unusable,rc) result(item_type) _UNUSED_DUMMY(unusable) item_type=ExtData_not_found - + found_rule = .false. rule_iterator = this%rule_map%begin() do while(rule_iterator /= this%rule_map%end()) @@ -316,7 +320,7 @@ function get_item_type(this,item_name,unusable,rc) result(item_type) _RETURN(_SUCCESS) end function get_item_type - subroutine add_new_rule(this,key,export_rule,multi_rule,rc) + subroutine add_new_rule(this,key,export_rule,multi_rule,rc) class(ExtDataConfig), intent(inout) :: this character(len=*), intent(in) :: key type(configuration), intent(in) :: export_rule @@ -344,14 +348,14 @@ subroutine add_new_rule(this,key,export_rule,multi_rule,rc) uname = key(1:semi_pos-1) vname = key(semi_pos+1:len_trim(key)) temp_rule => this%rule_map%at(trim(uname)) - _ASSERT(.not.associated(temp_rule),"duplicated export entry key") + _ASSERT(.not.associated(temp_rule),"duplicated export entry key: "//trim(key)) call this%rule_map%insert(trim(uname),ucomp) temp_rule => this%rule_map%at(trim(vname)) - _ASSERT(.not.associated(temp_rule),"duplicated export entry key") + _ASSERT(.not.associated(temp_rule),"duplicated export entry key: "//trim(key)) call this%rule_map%insert(trim(vname),vcomp) else temp_rule => this%rule_map%at(trim(key)) - _ASSERT(.not.associated(temp_rule),"duplicated export entry key") + _ASSERT(.not.associated(temp_rule),"duplicated export entry key: "//trim(key)) call this%rule_map%insert(trim(key),rule) end if _RETURN(_SUCCESS) @@ -385,18 +389,18 @@ function get_extra_derived_items(this,primary_items,derived_items,rc) result(nee ! now we have a stringvector of the variables involved in the expression ! check which of this are already in primary_items list, if any are not ! then we need to createa new list of needed variables and the "derived field" - ! wence to coppy them + ! wence to coppy them do i=1,variables_in_expression%size() sval => variables_in_expression%at(i) if (.not.string_in_string_vector(sval,primary_items)) then rule => this%rule_map%at(sval) _ASSERT(associated(rule),"no rule for "//trim(sval)//" needed by "//trim(derived_name)) - call needed_vars%push_back(sval//","//derived_name) + call needed_vars%push_back(sval//","//derived_name) end if enddo call string_iter%next() enddo - + _RETURN(_SUCCESS) end function get_extra_derived_items diff --git a/gridcomps/ExtData2G/ExtDataOldTypesCreator.F90 b/gridcomps/ExtData2G/ExtDataOldTypesCreator.F90 index c8af31d007f8..305c93d6727c 100644 --- a/gridcomps/ExtData2G/ExtDataOldTypesCreator.F90 +++ b/gridcomps/ExtData2G/ExtDataOldTypesCreator.F90 @@ -108,19 +108,14 @@ subroutine fillin_primary(this,item_name,base_name,primary_item,time,clock,unusa end if ! regrid method - if (trim(rule%regrid_method) == "BILINEAR") then - primary_item%trans = REGRID_METHOD_BILINEAR - else if (trim(rule%regrid_method) == "CONSERVE") then - primary_item%trans = REGRID_METHOD_CONSERVE - else if (trim(rule%regrid_method) == "VOTE") then - primary_item%trans = REGRID_METHOD_VOTE - else if (index(rule%regrid_method,"FRACTION;")>0) then + if (index(rule%regrid_method,"FRACTION;")>0) then semi_pos = index(rule%regrid_method,";") read(rule%regrid_method(semi_pos+1:),*) primary_item%fracVal primary_item%trans = REGRID_METHOD_FRACTION - else - _FAIL("Invalid regridding method") + else + primary_item%trans = get_regrid_method(rule%regrid_method) end if + _ASSERT(primary_item%trans/=UNSPECIFIED_REGRID_METHOD,"improper regrid method chosen") if (trim(time_sample%extrap_outside) =="clim") then primary_item%cycling=.true. diff --git a/gridcomps/History/MAPL_HistoryCollection.F90 b/gridcomps/History/MAPL_HistoryCollection.F90 index 1655a760a7b4..ae367ae7e1b2 100644 --- a/gridcomps/History/MAPL_HistoryCollection.F90 +++ b/gridcomps/History/MAPL_HistoryCollection.F90 @@ -70,7 +70,7 @@ module MAPL_HistoryCollectionMod real :: vscale character(len=ESMF_MAXSTR) :: vunit character(len=ESMF_MAXSTR) :: vvars(2) - integer :: conservative + integer :: regrid_method integer :: voting integer :: nbits integer :: deflate diff --git a/gridcomps/History/MAPL_HistoryGridComp.F90 b/gridcomps/History/MAPL_HistoryGridComp.F90 index 08868fff6ad4..a9cf19c1f9b6 100644 --- a/gridcomps/History/MAPL_HistoryGridComp.F90 +++ b/gridcomps/History/MAPL_HistoryGridComp.F90 @@ -425,7 +425,8 @@ subroutine Initialize ( gc, import, dumexport, clock, rc ) type(ESMF_Field), allocatable :: fldList(:) character(len=ESMF_MAXSTR), allocatable :: regexList(:) type(StringStringMap) :: global_attributes - character(len=ESMF_MAXSTR) :: name + character(len=ESMF_MAXSTR) :: name,regrid_method + logical :: has_conservative_keyword, has_regrid_keyword ! Begin !------ @@ -880,13 +881,27 @@ subroutine Initialize ( gc, import, dumexport, clock, rc ) call ESMF_ConfigGetAttribute ( cfg, list(n)%tm, default=tm_default, & label=trim(string) // 'tm:', rc=status ) _VERIFY(STATUS) - call ESMF_ConfigGetAttribute ( cfg, list(n)%conservative, default=0, & - label=trim(string) // 'conservative:' ,rc=status ) - _VERIFY(STATUS) - if (list(n)%conservative==0) then - list(n)%conservative=REGRID_METHOD_BILINEAR - else if (list(n)%conservative==1) then - list(n)%conservative=REGRID_METHOD_CONSERVE + + call ESMF_ConfigFindLabel ( cfg, label=trim(string) // 'conservative:',isPresent=has_conservative_keyword,_RC) + call ESMF_ConfigFindLabel ( cfg, label=trim(string) // 'regrid_method:',isPresent=has_regrid_keyword,_RC) + _ASSERT(.not.(has_conservative_keyword .and. has_regrid_keyword),trim(string)//" specified both conservative and regrid_method") + + list(n)%regrid_method = REGRID_METHOD_BILINEAR + if (has_conservative_keyword) then + call ESMF_ConfigGetAttribute ( cfg, list(n)%regrid_method, default=0, & + label=trim(string) // 'conservative:' ,rc=status ) + _VERIFY(STATUS) + if (list(n)%regrid_method==0) then + list(n)%regrid_method=REGRID_METHOD_BILINEAR + else if (list(n)%regrid_method==1) then + list(n)%regrid_method=REGRID_METHOD_CONSERVE + end if + end if + if (has_regrid_keyword) then + call ESMF_ConfigGetAttribute ( cfg, regrid_method, default="REGRID_METHOD_BILINEAR", & + label=trim(string) // 'regrid_method:' ,rc=status ) + _VERIFY(STATUS) + list(n)%regrid_method = get_regrid_method(trim(regrid_method)) end if ! Get an optional file containing a 1-D track for the output @@ -2482,7 +2497,7 @@ subroutine Initialize ( gc, import, dumexport, clock, rc ) _VERIFY(status) call list(n)%mGriddedIO%set_param(nbits=list(n)%nbits,rc=status) _VERIFY(status) - call list(n)%mGriddedIO%set_param(regrid_method=list(n)%conservative,rc=status) + call list(n)%mGriddedIO%set_param(regrid_method=list(n)%regrid_method,rc=status) _VERIFY(status) call list(n)%mGriddedIO%set_param(itemOrder=intState%fileOrderAlphabetical,rc=status) _VERIFY(status) @@ -3350,7 +3365,7 @@ subroutine Run ( gc, import, export, clock, rc ) integer :: sec ! variables for "backwards" mode - logical :: fwd + logical :: fwd, file_exists logical, allocatable :: Ignore(:) ! ErrLog vars @@ -3590,6 +3605,10 @@ subroutine Run ( gc, import, export, clock, rc ) list(n)%currentFile = filename(n) else if( list(n)%unit.eq.0 ) then + inquire (file=trim(filename(n)),exist=file_exists) + if (file_exists) then + _FAIL(trim(filename(n))//" being created for History output already exists") + end if if (list(n)%format == 'CFIO') then call list(n)%mGriddedIO%modifyTime(oClients=o_Clients,rc=status) _VERIFY(status) diff --git a/griddedio/GriddedIO.F90 b/griddedio/GriddedIO.F90 index d28851bfbb43..f41bf03d2879 100644 --- a/griddedio/GriddedIO.F90 +++ b/griddedio/GriddedIO.F90 @@ -24,14 +24,14 @@ module MAPL_GriddedIOMod use MAPL_FileMetadataUtilsMod use, intrinsic :: ISO_C_BINDING use, intrinsic :: iso_fortran_env, only: REAL64 + use ieee_arithmetic, only: isnan => ieee_is_nan implicit none private - character(len=20), parameter :: fill_value_label = "GriddedIO_Fill_Value" - type, public :: MAPL_GriddedIO type(FileMetaData) :: metadata + type(fileMetadataUtils), pointer :: current_file_metadata integer :: write_collection_id integer :: read_collection_id integer :: metadata_collection_id @@ -938,12 +938,10 @@ subroutine request_data_from_file(this,filename,timeindex,rc) type(ESMF_Grid) :: output_grid logical :: hasDE class(AbstractGridFactory), pointer :: factory - type(fileMetadataUtils), pointer :: metadata real(REAL32) :: missing_value collection => Datacollections%at(this%metadata_collection_id) - metadata => collection%find(filename, __RC__) - + this%current_file_metadata => collection%find(filename, __RC__) filegrid = collection%src_grid factory => get_factory(filegrid) hasDE=MAPL_GridHasDE(filegrid,rc=status) @@ -956,7 +954,7 @@ subroutine request_data_from_file(this,filename,timeindex,rc) end if call MAPL_GridGet(filegrid,globalCellCountPerdim=dims,rc=status) _VERIFY(status) - call factory%generate_file_bounds(fileGrid,gridLocalStart,gridGlobalStart,gridGlobalCount,metadata=metadata%fileMetadata,rc=status) + call factory%generate_file_bounds(fileGrid,gridLocalStart,gridGlobalStart,gridGlobalCount,metadata=this%current_file_metadata%fileMetadata,rc=status) _VERIFY(status) ! create input bundle call ESMF_FieldBundleGet(this%output_bundle,fieldCount=numVars,rc=status) @@ -972,10 +970,6 @@ subroutine request_data_from_file(this,filename,timeindex,rc) _VERIFY(status) call ESMF_FieldGet(output_field,rank=rank,rc=status) _VERIFY(status) - missing_value = MAPL_UNDEF - if (metadata%var_has_missing_value(trim(names(i)))) then - missing_value = metadata%var_get_missing_value(trim(names(i)),_RC) - end if if (rank==2) then input_fields(i) = ESMF_FieldCreate(filegrid,typekind=ESMF_TYPEKIND_R4,gridToFieldMap=[1,2],name=trim(names(i)),rc=status) _VERIFY(status) @@ -1004,7 +998,7 @@ subroutine request_data_from_file(this,filename,timeindex,rc) allocate(ptr3d(0,0,0),stat=status) _VERIFY(status) end if - ref=factory%generate_file_reference3D(ptr3d,metadata=metadata%filemetadata) + ref=factory%generate_file_reference3D(ptr3d,metadata=this%current_file_metadata%filemetadata) allocate(localStart,source=[gridLocalStart,1,timeIndex]) allocate(globalStart,source=[gridGlobalStart,1,timeIndex]) allocate(globalCount,source=[gridGlobalCount,lm,1]) @@ -1013,9 +1007,6 @@ subroutine request_data_from_file(this,filename,timeindex,rc) this%read_collection_id, fileName, trim(names(i)), & & ref, start=localStart, global_start=globalStart, global_count=globalCount) deallocate(localStart,globalStart,globalCount) - if (missing_value /= MAPL_UNDEF) then - call ESMF_AttributeSet(input_fields(i),name=fill_value_label,value=missing_value,_RC) - end if enddo deallocate(gridLocalStart,gridGlobalStart,gridGlobalCount) this%input_bundle = ESMF_FieldBundleCreate(fieldList=input_fields,rc=status) @@ -1081,38 +1072,50 @@ subroutine swap_undef_value(this,fname,rc) real, pointer :: ptr3d(:,:,:) real, pointer :: ptr2d(:,:) type(ESMF_Grid) :: gridIn - logical :: hasDE_in,has_custom_fill_val + logical :: hasDE_in real(REAL32) :: fill_value - call ESMF_FieldBundleGet(this%input_bundle,fname,field=field,_RC) - call ESMF_AttributeGet(field,name=fill_value_label,isPresent=has_custom_fill_val,_RC) + if ( .not. this%current_file_metadata%var_has_missing_value(fname) ) then + _RETURN(_SUCCESS) + endif - if (has_custom_fill_val) then + fill_value = this%current_file_metadata%var_get_missing_value(fname,_RC) + + call ESMF_FieldBundleGet(this%input_bundle,fname,field=field,_RC) + call ESMF_FieldBundleGet(this%input_bundle,grid=gridIn,_RC) + call ESMF_FieldGet(field,rank=fieldRank,_RC) + hasDE_in = MAPL_GridHasDE(gridIn,_RC) - call ESMF_AttributeGet(field,name=fill_value_label,value=fill_value,_RC) - call ESMF_FieldGet(field,rank=fieldRank,_RC) - _VERIFY(status) - call ESMF_FieldBundleGet(this%input_bundle,grid=gridIn,_RC) - hasDE_in = MAPL_GridHasDE(gridIn,_RC) + if (fieldRank==2) then + if (hasDE_in) then + call MAPL_FieldGetPointer(field,ptr2d,_RC) + else + allocate(ptr2d(0,0)) + end if - if (fieldRank==2) then - if (hasDE_in) then - call MAPL_FieldGetPointer(field,ptr2d,_RC) - else - allocate(ptr2d(0,0)) - end if + if (isnan(fill_value)) then + where(isnan(ptr2d)) ptr2d=MAPL_UNDEF + else where(ptr2d==fill_value) ptr2d=MAPL_UNDEF - else if (fieldRank==3) then - if (hasDE_in) then - call ESMF_FieldGet(field,farrayPtr=ptr3d,_RC) - else - allocate(ptr3d(0,0,0)) - end if - where(ptr3d==fill_value) ptr3d=MAPL_UNDEF + endif + + else if (fieldRank==3) then + if (hasDE_in) then + call ESMF_FieldGet(field,farrayPtr=ptr3d,_RC) else - _FAIL('rank not supported') + allocate(ptr3d(0,0,0)) end if + + if (isnan(fill_value)) then + where(isnan(ptr3d)) ptr3d=MAPL_UNDEF + else + where(ptr3d==fill_value) ptr3d=MAPL_UNDEF + endif + + else + _FAIL('rank not supported') end if + _RETURN(_SUCCESS) end subroutine swap_undef_value diff --git a/griddedio/Regrid_Util.F90 b/griddedio/Regrid_Util.F90 index b23a7f008765..574aa15058ba 100644 --- a/griddedio/Regrid_Util.F90 +++ b/griddedio/Regrid_Util.F90 @@ -182,23 +182,8 @@ subroutine process_command_line(this,rc) end select enddo - if (trim(regridMth) .ne. 'bilinear' .and. trim(regridMth ) .ne. 'conservative' .and. trim(regridMth ) .ne. 'conservative2' .and. & - trim(regridMth).ne.'patch') then - if (MAPL_AM_I_Root()) write(*,*)'invalid regrid method choose bilinear or conservative' - _FAIL('needs informative message') - end if - if (trim(regridMth) == 'bilinear') then - this%regridMethod = REGRID_METHOD_BILINEAR - end if - if (trim(regridMth) == 'patch') then - this%regridMethod = REGRID_METHOD_PATCH - end if - if (trim(regridMth) == 'conservative') then - this%regridMethod = REGRID_METHOD_CONSERVE - end if - if (trim(regridMth) == 'conservative2') then - this%regridMethod = REGRID_METHOD_CONSERVE_2ND - end if + this%regridMethod = get_regrid_method(regridMth) + _ASSERT(this%regridMethod/=UNSPECIFIED_REGRID_METHOD,"improper regrid method chosen") this%filenames = split_string(cfilenames,',') this%outputfiles = split_string(coutputfiles,',') diff --git a/pfio/CMakeLists.txt b/pfio/CMakeLists.txt index f3574f53c43f..f0e85631d0fe 100644 --- a/pfio/CMakeLists.txt +++ b/pfio/CMakeLists.txt @@ -91,7 +91,7 @@ set (srcs StringVectorUtil.F90 ) -esma_add_library (${this} SRCS ${srcs} DEPENDENCIES MAPL.shared MAPL.profiler NetCDF::NetCDF_Fortran TYPE ${MAPL_LIBRARY_TYPE}) +esma_add_library (${this} SRCS ${srcs} DEPENDENCIES MAPL.shared MAPL.profiler NetCDF::NetCDF_Fortran NetCDF::NetCDF_C TYPE ${MAPL_LIBRARY_TYPE}) target_link_libraries (${this} PUBLIC GFTL_SHARED::gftl-shared PRIVATE MPI::MPI_Fortran) # CMake has an OpenMP issue with NAG Fortran: https://gitlab.kitware.com/cmake/cmake/-/issues/21280 if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "NAG") @@ -135,7 +135,7 @@ endif () ecbuild_add_executable ( TARGET pfio_writer.x SOURCES pfio_writer.F90 - LIBS ${this} NetCDF::NetCDF_Fortran MPI::MPI_Fortran) + LIBS ${this} NetCDF::NetCDF_Fortran NetCDF::NetCDF_C MPI::MPI_Fortran) set_target_properties (pfio_writer.x PROPERTIES Fortran_MODULE_DIRECTORY ${include_${this}}) #-------------------- diff --git a/pfio/pfio_io_demo.F90 b/pfio/pfio_io_demo.F90 deleted file mode 100644 index bddd1ffe4943..000000000000 --- a/pfio/pfio_io_demo.F90 +++ /dev/null @@ -1,514 +0,0 @@ -!usage -!mpirun -np 8 ./pfio_collective_demo.x -nc 4 -nsi 2 -nso 2 -f1 xxx1.nc4 -f2 xxx2.nc4 -v T -s mpi -!The variable should be 4d with lavel>=20 -#include "MAPL_ErrLog.h" -#include "unused_dummy.H" - -module io_demo_CLI - use MAPL_ExceptionHandling - use pFIO_StringVectorMod - implicit none - private - - public :: CommandLineOptions - public :: process_command_line - - type CommandLineOptions - character(len=:), allocatable :: file_1, file_2 - type (StringVector) :: requested_variables - - integer :: npes_client - integer :: npes_iserver - integer :: npes_oserver - logical :: debug - character(len=:),allocatable :: server_type ! 'mpi' or 'openmp' - end type CommandLineOptions - - -contains - - ! The following procedure parses the command line to find various - ! arguments for file names, target grid resolution, etc. - subroutine process_command_line(options, rc) - type (CommandLineOptions), intent(inout) :: options - integer, optional, intent(out) :: rc - - integer :: n_args - integer :: i_arg - character(len=:), allocatable :: argument - character(len=:), allocatable :: buffer - - n_args = command_argument_count() - - i_arg = 0 - do - if (i_arg > n_args) exit - - argument = get_next_argument() - - select case (argument) - case ('-nc', '--npes_client') - buffer = get_next_argument() - _ASSERT(buffer /= '-') - read(buffer,*) options%npes_client - case ('-nsi', '--npes_iserver') - buffer = get_next_argument() - _ASSERT(buffer /= '-') - read(buffer,*) options%npes_iserver - case ('-nso', '--npes_oserver') - buffer = get_next_argument() - _ASSERT(buffer /= '-') - read(buffer,*) options%npes_oserver - case ('-f1', '--file_1') - options%file_1 = get_next_argument() - _ASSERT(options%file_1(1:1) /= '-') - case ('-f2', '--file_2') - options%file_2 = get_next_argument() - _ASSERT(options%file_2(1:1) /= '-') - case ('-v', '--var') - buffer = get_next_argument() - _ASSERT(buffer(1:1) /= '-') - options%requested_variables = parse_vars(buffer) - case ('-s', '--server_type') - options%server_type = get_next_argument() - _ASSERT(options%server_type /= '-') - case ('-d', '--debug') - options%debug = .true. - case default - ! ignore - end select - - end do - - contains - - function get_next_argument() result(argument) - character(len=:), allocatable :: argument - - integer :: length - - i_arg = i_arg + 1 - - call get_command_argument(i_arg, length=length) - allocate(character(len=length) :: argument) - call get_command_argument(i_arg, value=argument) - - end function get_next_argument - - function parse_vars(buffer) result(vars) - type (StringVector) :: vars - character(len=*), intent(in) :: buffer - - integer :: idx - character(len=1), parameter :: COMMA = ',' - character(len=:), allocatable :: string - - string = buffer // COMMA - do - if (len(string) == 0) exit - idx = index(string,COMMA) - call vars%push_back(string(1:idx-1)) - string = string(idx+1:) - end do - - end function parse_vars - - - end subroutine process_command_line - - -end module io_demo_CLI - -module FakeExtDataMod - use io_demo_CLI - use pFIO - use pFIO_StringVectorMod - use, intrinsic :: iso_fortran_env, only: REAL32 - implicit none - private - - public :: FakeExtData - - type FakeBundle - real(kind=REAL32), allocatable :: x(:,:,:,:) - integer :: request_id - end type FakeBundle - - type FakeExtData - type (ClientThread) :: i_c - type (ClientThread) :: o_c - integer, allocatable :: hist_collection_ids(:) - - character(len=:), allocatable :: file_1 - character(len=:), allocatable :: file_2 - - type (StringVector) :: vars - type (FakeBundle), allocatable :: bundle(:) - - integer :: comm - integer :: rank - integer :: npes - - integer :: nlat - integer :: nlon - - contains - procedure :: init - procedure :: run - procedure :: finalize - - end type FakeExtData - -contains - - - subroutine init(this, options, comm, d_s) - use pFIO_StringIntegerMapMod - class (FakeExtData),target, intent(inout) :: this - type (CommandLineOptions), intent(in) :: options - integer, intent(in) :: comm - class (AbstractDirectoryService), target,intent(inout) :: d_s - - integer :: ierror - type (FileMetadata) :: file_metadata - type (NetCDF4_FileFormatter) :: formatter - type (StringIntegerMap) :: dims - - this%i_c = ClientThread() - call d_s%connect_to_server('i_server', this%i_c, comm) - - this%o_c = ClientThread() - call d_s%connect_to_server('o_server', this%o_c, comm) - - - this%file_1 = options%file_1 - this%file_2 = options%file_2 - this%vars = options%requested_variables - !call this%vars%push_back('T') - !call this%vars%push_back('U') - !call this%vars%push_back('V') - - - this%comm = comm - call MPI_Comm_rank(comm,this%rank,ierror) - call MPI_Comm_size(comm,this%npes,ierror) - - allocate(this%bundle(this%vars%size())) - - call formatter%open(this%file_1, pFIO_READ) - file_metadata = formatter%read() - call formatter%close() - - dims = file_metadata%get_dimensions() - this%nlat = dims%at('lat') - this%nlon = dims%at('lon') - - allocate(this%hist_collection_ids(10)) - - end subroutine init - - subroutine run(this, step) - class (FakeExtData), target, intent(inout) :: this - integer, intent(in) :: step - - type(ArrayReference) :: ref - type(FileMetadata) :: fmd,fmd2 - Type(Variable) :: T1,T2 - - integer :: i_var,i - integer :: lat0, lat1, nlats - integer :: collection_id, file_md_id - character(len=3) :: tmp - integer :: c1,c2,num_request - integer,allocatable :: pull_ids(:,:) - integer,allocatable :: push_ids(:,:) - - lat0 = 1 + (this%rank*this%nlat)/this%npes - lat1 = (this%rank+1)*this%nlat/this%npes - nlats = (lat1 - lat0 + 1) - - ! Establish the collection - ! In a real use case the collection name would be the ExtData template. - ! But the actual name does not matter - it is just used to identify - ! a group of files that have identical metadata (except for time) - !num_request = 1000 - num_request = 3 - call system_clock(c1) - - do i = 1,num_request - tmp= '' - write(tmp,'(I3.3)') i - collection_id = this%i_c%add_ext_collection('collection-i'//tmp) - collection_id = this%o_c%add_ext_collection('collection-o'//tmp) - enddo - call system_clock(c2) - - allocate(pull_ids(this%vars%size(),num_request)) - allocate(push_ids(this%vars%size(),num_request)) - - select case (step) - case (1) ! read 1st file; prefetch 2nd - - ! call system_clock(c1) - do i_var = 1, this%vars%size() - allocate(this%bundle(i_var)%x(this%nlon,lat0:lat1,1,1)) - this%bundle(i_var)%x = -1 - ref = ArrayReference(this%bundle(i_var)%x) - - do i =1, num_request - pull_ids(i_var,i) = & - & this%i_c%collective_prefetch_data(collection_id, this%file_1, this%vars%at(i_var), ref,& - & start=[1,lat0,20,1], & - & global_start=[1,1,20,1],global_count=[this%nlon,this%nlat,1,1]) - enddo - - end do - !call system_clock(c2) - call this%i_c%done_collective_prefetch() - - do i_var = 1, this%vars%size() - do i = 1, num_request - call this%i_c%wait(pull_ids(i_var,i)) - enddo - end do - - do i_var = 1, this%vars%size() - this%bundle(i_var)%x = -1 - ref = ArrayReference(this%bundle(i_var)%x) - this%bundle(i_var)%request_id = & - & this%i_c%collective_prefetch_data(collection_id, this%file_1, this%vars%at(i_var), ref,& - & start=[1,lat0,20,1], & - & global_start=[1,1,20,1],global_count=[this%nlon,this%nlat,1,1]) - end do - call this%i_c%done_collective_prefetch() - - - case (2) ! wait for 2nd file to complete - - do i_var = 1, this%vars%size() - call this%i_c%wait(this%bundle(i_var)%request_id) - end do - -!!!!!!!!!!!!!!!!! -! individual write - call fmd%add_dimension('lon',this%nlon) - call fmd%add_dimension('lat',nlats) - call fmd%add_dimension('level',1) - call fmd%add_dimension('time',1) - T1 = Variable(type=pFIO_REAL32, dimensions='lon,lat,level,time') - call fmd%add_variable('T',T1) - this%hist_collection_ids(1) = this%o_c%add_hist_collection(fmd) - - call fmd2%add_dimension('lon',this%nlon) - call fmd2%add_dimension('lat',this%nlat) - call fmd2%add_dimension('level',1) - call fmd2%add_dimension('time',1) - T2 = Variable(type=pFIO_REAL32, dimensions='lon,lat,level,time') - call fmd2%add_variable('T',T2) - this%hist_collection_ids(2) = this%o_c%add_hist_collection(fmd2) - - file_md_id = this%hist_collection_ids(1) - write(tmp,'(I3.3)') this%rank - - do i_var = 1, this%vars%size() - - ref = ArrayReference(this%bundle(i_var)%x) - - do i =1, 1 - push_ids(i_var,i) = & - & this%o_c%stage_data(file_md_id,trim(this%file_1)//'.rank_'//tmp//'.nc4', this%vars%at(i_var), ref,& - & start=[1,lat0,20,1]) - - enddo - - end do - !call system_clock(c2) - call this%o_c%done_stage() - do i_var = 1, this%vars%size() - do i = 1, 1 - call this%o_c%wait(push_ids(i_var,i)) - enddo - end do - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! writing - file_md_id = this%hist_collection_ids(2) - - do i_var = 1, this%vars%size() - - ref = ArrayReference(this%bundle(i_var)%x) - do i =1, 1 - push_ids(i_var,i) = & - & this%o_c%collective_stage_data(file_md_id, trim(this%file_1)//'.new.nc4', this%vars%at(i_var), ref,& - & start=[1,lat0,1,1], & - & global_start=[1,1,1,1],global_count=[this%nlon,this%nlat,1,1]) - - enddo - - end do - !call system_clock(c2) - call this%o_c%done_collective_stage() - do i_var = 1, this%vars%size() - do i = 1, 1 - call this%o_c%wait(push_ids(i_var,i)) - enddo - end do - -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 - end select - - end subroutine run - - - subroutine finalize(this) - class (FakeExtData), intent(inout) :: this - integer :: ierror - deallocate(this%bundle) - call Mpi_Barrier(this%comm,ierror) - print*,"iclient sent terminate signal" - call this%i_c%terminate() - call Mpi_Barrier(this%comm,ierror) - print*,"oclient sent terminate signal" - call this%o_c%terminate() - end subroutine finalize - -end module FakeExtDataMod - -program main - use, intrinsic :: iso_fortran_env, only: REAL32 - use mpi - use pFIO - use io_demo_CLI - use FakeExtDataMod - use MAPL_ExceptionHandling - implicit none - - integer :: rank, npes, ierror, provided,required - integer :: status, color, key - - class(AbstractServer),pointer :: iserver,oserver - class(AbstractDirectoryService), pointer :: d_s => null() - - type (CommandLineOptions) :: options - integer, parameter :: NO_COLOR = 0 - integer, parameter :: iSERVER_COLOR = 1 - integer, parameter :: oSERVER_COLOR = 4 - integer, parameter :: CLIENT_COLOR = 2 - integer, parameter :: BOTH_COLOR = 3 - - integer :: comm,num_threads - type (FakeExtData), target :: extData - - - required = MPI_THREAD_MULTIPLE - call MPI_init_thread(required, provided, ierror) - call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierror) - call MPI_Comm_size(MPI_COMM_WORLD, npes, ierror) - - call process_command_line(options, rc=status) - -!! sanity check - - if(options%server_type == 'openmp') then - if (required > provided) stop "provided thread is not enough for openmp" - num_threads = 10 - call omp_set_num_threads(num_threads) - endif - - d_s => get_directory_service(options%server_type) - - color = split_color(options%server_type,options%npes_iserver,options%npes_oserver) - key = 0 - - call MPI_Comm_split(MPI_COMM_WORLD, color, key, comm, ierror) - - if (color == iSERVER_COLOR .or. color == BOTH_COLOR ) then ! i_server - - iserver=>get_server(options%server_type,comm, d_s,'i_server') - print*,"start i_server" - if (color == iSERVER_COLOR ) call iserver%start() - - endif - - if (color == oSERVER_COLOR .or. color == BOTH_COLOR ) then ! o_server - - oserver=>get_server(options%server_type,comm,d_s,'o_server') - - print*,"start o_server" - if (color == oSERVER_COLOR ) call oserver%start() - - endif - - if (color == CLIENT_COLOR .or. color == BOTH_COLOR) then ! client - - call extData%init(options, comm, d_s) - call extData%run(step=1) - call extData%run(step=2) - call extData%finalize() - - end if - - call Mpi_Barrier(MPI_COMM_WORLD,ierror) - - call MPI_finalize(ierror) - -contains - - function get_directory_service(stype) result(d_s) - character(*),intent(in) :: stype - class(AbstractDirectoryService),pointer :: d_s - - allocate(d_s, source = DirectoryService(MPI_COMM_WORLD)) - - end function - - function split_color(stype,split_irank,split_orank) result(color) - character(*),intent(in) :: stype - integer,intent(in) :: split_irank - integer,intent(in) :: split_orank - integer :: color - - select case (stype) - case ('openmp','mpi') - if (rank < split_irank) then - color = iSERVER_COLOR - elseif (rank < split_orank+split_irank ) then - color = oSERVER_COLOR - else - color = CLIENT_COLOR - end if - case ('simple') - color = BOTH_COLOR - case default - stop "not known server type" - end select - - end function - - function get_server(stype,comm,d_s,port_name) result(server) - character(*),intent(in) :: stype - integer,intent(in) :: comm - class (AbstractDirectoryService), target,intent(inout) :: d_s - character(*), intent(in) :: port_name - - class(BaseServer),pointer :: server - - select case (stype) - case('mpi') - allocate(server,source=MpiServer(comm, port_name)) - call d_s%publish(PortInfo(port_name, server),server) - call d_s%connect_to_client(port_name, server) - print*,"using MpiServer" - case('openmp') -!!$ allocate(server,source=OpenmpServer(comm,d_s)) -!!$ print*,"using OpenMpServer" - case('simple') - allocate(server,source=MpiServer(comm, port_name)) - call d_s%publish(PortInfo(port_name, server), server) -! call d_s%connect_to_client(port_name, server) - print*,"using simple server" - end select - - end function - -end program main diff --git a/pfio/tests/Test_SimpleClient.pf b/pfio/tests/Test_SimpleClient.pf deleted file mode 100644 index fe526bea29cb..000000000000 --- a/pfio/tests/Test_SimpleClient.pf +++ /dev/null @@ -1,15 +0,0 @@ -module Test_SimpleClient - use pFIO_SimpleClient - use pfunit - implicit none - -contains - - @test - subroutine test_ - - - call client%send(array) - - -end module Test_SimpleClient diff --git a/pflogger_stub/pflogger_stub.F90 b/pflogger_stub/pflogger_stub.F90 index dcf56379bdf9..f35cc62bf69d 100644 --- a/pflogger_stub/pflogger_stub.F90 +++ b/pflogger_stub/pflogger_stub.F90 @@ -1,5 +1,8 @@ #include "MAPL_ErrLog.h" #define _SUCCESS 0 +#ifdef _RETURN +#undef _RETURN +#endif #define _RETURN(status) if(present(rc))rc=status; return module PFL_SeverityLevels @@ -22,7 +25,7 @@ module PFL_SeverityLevels end enum end module PFL_SeverityLevels - + module PFL_Logger use PFL_SeverityLevels, only: NOTSET use PFL_SeverityLevels, only: DEBUG_LEVEL => DEBUG @@ -60,7 +63,7 @@ end subroutine free subroutine debug(this, message, ARG_LIST, unusable, extra, line, file, rc) class (Logger), target, intent(inout) :: this character(len=*), intent(in) :: message - include 'recordOptArgs.inc' + include 'recordOptArgs.inc' class (KeywordEnforcer), optional, intent(in) :: unusable type (StringUnlimitedMap), optional, target, intent(in) :: extra integer, optional, intent(in) :: line @@ -89,7 +92,7 @@ end subroutine debug subroutine info(this, message, ARG_LIST, unusable, extra, line, file, rc) class (Logger), target, intent(inout) :: this character(len=*), intent(in) :: message - include 'recordOptArgs.inc' + include 'recordOptArgs.inc' class (KeywordEnforcer), optional, intent(in) :: unusable type (StringUnlimitedMap), optional, target, intent(in) :: extra integer, optional, intent(in) :: line @@ -118,13 +121,13 @@ end subroutine info subroutine warning(this, message, ARG_LIST, unusable, extra, line, file, rc) class (Logger), target, intent(inout) :: this character(len=*), intent(in) :: message - include 'recordOptArgs.inc' + include 'recordOptArgs.inc' class (KeywordEnforcer), optional, intent(in) :: unusable type (StringUnlimitedMap), optional, target, intent(in) :: extra integer, optional, intent(in) :: line character(*), optional, intent(in) :: file integer, optional, intent(out) :: rc - + _UNUSED_DUMMY(this) _UNUSED_DUMMY(message) _UNUSED_DUMMY(arg1) @@ -148,7 +151,7 @@ subroutine error(this, message, ARG_LIST, unusable, extra, line, file, rc) ! Log message with the integer severity 'DEBUG'. class (Logger), target, intent(inout) :: this character(len=*), intent(in) :: message - include 'recordOptArgs.inc' + include 'recordOptArgs.inc' class (KeywordEnforcer), optional, intent(in) :: unusable type (StringUnlimitedMap), optional, target, intent(in) :: extra integer, optional, intent(in) :: line @@ -177,7 +180,7 @@ end subroutine error subroutine critical(this, message, ARG_LIST, unusable, extra, line, file, rc) class (Logger), target, intent(inout) :: this character(len=*), intent(in) :: message - include 'recordOptArgs.inc' + include 'recordOptArgs.inc' class (KeywordEnforcer), optional, intent(in) :: unusable type (StringUnlimitedMap), optional, target, intent(in) :: extra integer, optional, intent(in) :: line @@ -208,7 +211,7 @@ logical function isEnabledFor(this, level) integer, intent(in) :: level isEnabledFor = .false. end function isEnabledFor - + end module PFL_Logger module PFL_LoggerManager @@ -228,7 +231,7 @@ module PFL_LoggerManager generic :: get_logger => get_logger_root procedure :: free end type LoggerManager - + type (LoggerManager), target, save :: logging contains diff --git a/pfunit/CMakeLists.txt b/pfunit/CMakeLists.txt index e23222eba6be..2cb3a2a44654 100644 --- a/pfunit/CMakeLists.txt +++ b/pfunit/CMakeLists.txt @@ -6,7 +6,7 @@ set (srcs ESMF_TestParameter.F90 MAPL_pFUnit_Throw.F90 MAPL_Initialize.F90 -) +) esma_add_library (${this} EXCLUDE_FROM_ALL SRCS ${srcs} NOINSTALL TYPE ${MAPL_LIBRARY_TYPE})