├── datm
├── cime_config
│ ├── buildlib
│ ├── testdefs
│ │ └── testmods_dirs
│ │ │ └── datm
│ │ │ ├── scam
│ │ │ └── shell_commands
│ │ │ └── 1PT
│ │ │ └── shell_commands
│ ├── config_archive.xml
│ ├── user_nl_datm
│ └── user_nl_datm_streams
├── CMakeLists.txt
└── setservices.inc
├── dglc
├── cime_config
│ ├── buildlib
│ ├── config_archive.xml
│ ├── user_nl_dglc
│ ├── testdefs
│ │ └── testlist_dglc.xml
│ ├── user_nl_dglc_streams
│ ├── stream_definition_dglc.xml
│ ├── config_component.xml
│ └── namelist_definition_dglc.xml
└── CMakeLists.txt
├── dice
├── cime_config
│ ├── buildlib
│ ├── user_nl_dice
│ ├── testdefs
│ │ └── testlist_dice.xml
│ ├── config_archive.xml
│ ├── user_nl_dice_streams
│ ├── config_component.xml
│ ├── stream_definition_dice.xml
│ └── namelist_definition_dice.xml
└── CMakeLists.txt
├── dlnd
├── cime_config
│ ├── buildlib
│ ├── testdefs
│ │ └── testlist_dlnd.xml
│ ├── config_archive.xml
│ ├── user_nl_dlnd
│ ├── user_nl_dlnd_streams
│ ├── stream_definition_dlnd.xml
│ ├── namelist_definition_dlnd.xml
│ └── config_component.xml
└── CMakeLists.txt
├── docn
├── cime_config
│ ├── buildlib
│ ├── config_archive.xml
│ ├── user_nl_docn
│ ├── testdefs
│ │ └── testlist_docn.xml
│ └── user_nl_docn_streams
├── CMakeLists.txt
├── docn_datamode_copyall_mod.F90
├── docn_import_data_mod.F90
└── docn_datamode_cplhist_mod.F90
├── drof
├── cime_config
│ ├── buildlib
│ ├── testdefs
│ │ └── testlist_drof.xml
│ ├── config_archive.xml
│ ├── user_nl_drof
│ ├── user_nl_drof_streams
│ ├── namelist_definition_drof.xml
│ └── config_component.xml
└── CMakeLists.txt
├── dwav
├── cime_config
│ ├── buildlib
│ ├── testdefs
│ │ └── testlist_dwav.xml
│ ├── config_archive.xml
│ ├── user_nl_dwav
│ ├── stream_definition_dwav.xml
│ ├── user_nl_dwav_streams
│ ├── config_component.xml
│ └── namelist_definition_dwav.xml
└── CMakeLists.txt
├── doc
├── source
│ ├── _templates
│ │ ├── layout.html
│ │ └── footer.html
│ ├── index.rst
│ ├── _static
│ │ └── pop_ver.js
│ ├── dice.rst
│ ├── dwav.rst
│ ├── dlnd.rst
│ ├── dglc.rst
│ ├── drof.rst
│ └── conf.py
└── Makefile
├── Externals_CDEPS.cfg
├── .gitignore
├── .github
├── PULL_REQUEST_TEMPLATE.md
├── workflows
│ ├── bumpversion.yml
│ └── extbuild.yml
└── actions
│ ├── buildpnetcdf
│ └── action.yml
│ ├── buildnetcdff
│ └── action.yml
│ ├── buildcdeps
│ └── action.yaml
│ ├── buildesmf
│ └── action.yml
│ └── buildpio
│ └── action.yml
├── README.md
├── .gitmodules
├── dshr
└── CMakeLists.txt
├── share
├── shr_kind_mod.F90
├── shr_assert.h
├── shr_precip_mod.F90
├── CMakeLists.txt
├── shr_nl_mod.F90
├── shr_abort_mod.F90
├── shr_frz_mod.F90.in
├── shr_log_mod.F90
├── shr_strconvert_mod.F90
└── shr_const_mod.F90
├── streams
└── CMakeLists.txt
├── cime_config
├── buildlib_comps
└── streams.xsd
├── cmake
├── FindESMF.cmake
├── FindPIO.cmake
└── LibCheck.cmake
└── CMakeLists.txt
/datm/cime_config/buildlib:
--------------------------------------------------------------------------------
1 | ../../cime_config/buildlib_comps
--------------------------------------------------------------------------------
/dglc/cime_config/buildlib:
--------------------------------------------------------------------------------
1 | ../../cime_config/buildlib_comps
--------------------------------------------------------------------------------
/dice/cime_config/buildlib:
--------------------------------------------------------------------------------
1 | ../../cime_config/buildlib_comps
--------------------------------------------------------------------------------
/dlnd/cime_config/buildlib:
--------------------------------------------------------------------------------
1 | ../../cime_config/buildlib_comps
--------------------------------------------------------------------------------
/docn/cime_config/buildlib:
--------------------------------------------------------------------------------
1 | ../../cime_config/buildlib_comps
--------------------------------------------------------------------------------
/drof/cime_config/buildlib:
--------------------------------------------------------------------------------
1 | ../../cime_config/buildlib_comps
--------------------------------------------------------------------------------
/dwav/cime_config/buildlib:
--------------------------------------------------------------------------------
1 | ../../cime_config/buildlib_comps
--------------------------------------------------------------------------------
/doc/source/_templates/layout.html:
--------------------------------------------------------------------------------
1 | {% extends "!layout.html" %}
2 |
3 | {% set script_files = script_files + ["_static/pop_ver.js"] %}
--------------------------------------------------------------------------------
/doc/source/_templates/footer.html:
--------------------------------------------------------------------------------
1 | {% extends "!footer.html" %}
2 | {% block extrafooter %}
3 | {{ super() }}
4 |
5 | {% endblock %}
6 |
--------------------------------------------------------------------------------
/Externals_CDEPS.cfg:
--------------------------------------------------------------------------------
1 | [fox]
2 | tag = 4.1.2.1
3 | protocol = git
4 | repo_url = https://github.com/ESMCI/fox.git
5 | local_path = fox
6 | required = True
7 |
8 | [genf90]
9 | tag = 4816965
10 | protocol = git
11 | repo_url = https://github.com/PARALLELIO/genf90
12 | local_path = share/genf90
13 | required = True
14 |
15 | [externals_description]
16 | schema_version = 1.0.0
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Prerequisites
2 | *.d
3 |
4 | # Compiled Object files
5 | *.slo
6 | *.lo
7 | *.o
8 | *.obj
9 |
10 | # Precompiled Headers
11 | *.gch
12 | *.pch
13 |
14 | # Compiled Dynamic libraries
15 | *.so
16 | *.dylib
17 | *.dll
18 |
19 | # Fortran module files
20 | *.mod
21 | *.smod
22 |
23 | # Compiled Static libraries
24 | *.lai
25 | *.la
26 | *.a
27 | *.lib
28 |
29 | # Executables
30 | *.exe
31 | *.out
32 | *.app
33 |
34 | # ignore pycache
35 | __pycache__
36 |
--------------------------------------------------------------------------------
/dwav/cime_config/testdefs/testlist_dwav.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/drof/cime_config/testdefs/testlist_drof.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/dlnd/cime_config/testdefs/testlist_dlnd.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ### Description of changes
2 |
3 | ### Specific notes
4 |
5 | Contributors other than yourself, if any:
6 |
7 | CDEPS Issues Fixed (include github issue #):
8 |
9 | Are there dependencies on other component PRs (if so list):
10 |
11 | Are changes expected to change answers (bfb, different to roundoff, more substantial):
12 |
13 | Any User Interface Changes (namelist or namelist defaults changes):
14 |
15 | Testing performed (e.g. aux_cdeps, CESM prealpha, etc):
16 |
17 | Hashes used for testing:
18 |
19 |
--------------------------------------------------------------------------------
/datm/cime_config/testdefs/testmods_dirs/datm/scam/shell_commands:
--------------------------------------------------------------------------------
1 | # setup SCAM lon and lat for this iop
2 | # this should correspond to the forcing IOP coordinates
3 | ./xmlchange PTS_LON=206.0
4 | ./xmlchange PTS_LAT=70.5
5 |
6 | # Specify the starting/ending time for the IOP
7 | # The complete time slice of IOP file is specified below
8 | # but you may simulate any within the IOP start and end times.
9 | ./xmlchange RUN_STARTDATE=2004-10-05
10 | ./xmlchange START_TOD=7171
11 | ./xmlchange STOP_OPTION=nsteps
12 | ./xmlchange STOP_N=10
13 |
14 |
--------------------------------------------------------------------------------
/.github/workflows/bumpversion.yml:
--------------------------------------------------------------------------------
1 | name: Bump version
2 | on:
3 | push:
4 | branches:
5 | - main
6 | jobs:
7 | build:
8 | runs-on: ubuntu-latest
9 | steps:
10 | - uses: actions/checkout@v2
11 | - name: Bump version and push tag
12 | id: tag_version
13 | uses: mathieudutour/github-tag-action@v5.5
14 | with:
15 | github_token: ${{ secrets.GITHUB_TOKEN }}
16 | create_annotated_tag: true
17 | default_bump: patch
18 | dry_run: false
19 | tag_prefix: cdeps
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CDEPS
2 | Community Data Models for Earth Prediction Systems
3 |
4 | For documentation see
5 |
6 | https://escomp.github.io/CDEPS/versions/master/html/index.html
7 |
8 | ## A note on github tag action
9 |
10 | This repository is setup to automatically create tags on merge to
11 | main using .github/workflows/bumpversion.yml It uses
12 | https://github.com/mathieudutour/github-tag-action to look for
13 | keywords in commit messages and determine what the new version should
14 | be. The default if no keywords is found is to bump the patch version.
15 |
--------------------------------------------------------------------------------
/datm/cime_config/config_archive.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | r
4 | rs1
5 | unset
6 |
7 | rpointer.atm$NINST_STRING.$DATENAME
8 | $CASE.datm$NINST_STRING.r.$DATENAME.nc,$CASE.datm$NINST_STRING.rs1.$DATENAME.bin
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/dglc/cime_config/config_archive.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | r
4 | rs1
5 | unset
6 |
7 | rpointer.glc$NINST_STRING.$DATENAME
8 | $CASE.dglc$NINST_STRING.r.$DATENAME.nc,$CASE.dglc$NINST_STRING.rs1.$DATENAME.bin
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/dlnd/cime_config/config_archive.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | r
4 | rs1
5 | unset
6 |
7 | rpointer.lnd$NINST_STRING.$DATENAME
8 | $CASE.dlnd$NINST_STRING.r.$DATENAME.nc,$CASE.dlnd$NINST_STRING.rs1.$DATENAME.bin
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/drof/cime_config/config_archive.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | r
4 | rs1
5 | unset
6 |
7 | rpointer.rof$NINST_STRING.$DATENAME
8 | $CASE.drof$NINST_STRING.r.$DATENAME.nc,$CASE.drof$NINST_STRING.rs1.$DATENAME.bin
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/dwav/cime_config/config_archive.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | r
4 | rs1
5 | unset
6 |
7 | rpointer.wav$NINST_STRING.$DATENAME
8 | $CASE.dwav$NINST_STRING.r.$DATENAME.nc,$CASE.dwav$NINST_STRING.rs1.$DATENAME.bin
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/docn/cime_config/config_archive.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | rs*\d*
4 | rs1
5 | unset
6 |
7 | rpointer.ocn$NINST_STRING.$DATENAME
8 | $CASE.docn$NINST_STRING.r.$DATENAME.nc,$CASE.docn$NINST_STRING.rs1.$DATENAME.bin
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | # This is a git-fleximod adapted .gitmodules file. Any field with a name starting in fx is a git-fleximod
2 | # specific field. See https://github.com/ESMCI/git-fleximod for details.
3 |
4 | [submodule "fox"]
5 | path = fox
6 | url = https://github.com/ESMCI/fox.git
7 | fxtag = 4.1.2.4
8 | fxrequired = AlwaysRequired
9 | fxDONOTUSEurl = https://github.com/ESMCI/fox.git
10 |
11 | [submodule "genf90"]
12 | path = share/genf90
13 | url = https://github.com/PARALLELIO/genf90
14 | fxtag = 4816965
15 | fxrequired = AlwaysRequired
16 | fxDONOTUSEurl = https://github.com/PARALLELIO/genf90
17 |
--------------------------------------------------------------------------------
/datm/cime_config/testdefs/testmods_dirs/datm/1PT/shell_commands:
--------------------------------------------------------------------------------
1 | if [ "`./xmlquery ATM_GRID --value`" == "1x1_vancouverCAN" ]; then
2 | # Go one day in, so don't have to set the TOD as well
3 | ./xmlchange RUN_STARTDATE="1992-08-13"
4 | elif [ "`./xmlquery ATM_GRID --value`" == "1x1_mexicocityMEX" ]; then
5 | # Go one day in, so don't have to set the TOD as well
6 | ./xmlchange RUN_STARTDATE="1993-12-02"
7 | elif [ "`./xmlquery ATM_GRID --value`" == "1x1_urbanc_alpha" ]; then
8 | # Go one day in, so don't have to set the TOD as well
9 | ./xmlchange RUN_STARTDATE="0001-08-13"
10 | else
11 | ./xmlchange RUN_STARTDATE="2018-01-01"
12 | fi
13 |
--------------------------------------------------------------------------------
/doc/Makefile:
--------------------------------------------------------------------------------
1 | # Minimal makefile for Sphinx documentation
2 | #
3 |
4 | # You can set these variables from the command line.
5 | SPHINXOPTS =
6 | SPHINXBUILD = sphinx-build
7 | SPHINXPROJ = CDEPS
8 | SOURCEDIR = source
9 | BUILDDIR = build
10 |
11 | # Put it first so that "make" without argument is like "make help".
12 | help:
13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14 |
15 | .PHONY: help Makefile
16 |
17 | # Catch-all target: route all unknown targets to Sphinx using the new
18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19 | %: Makefile
20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
21 |
--------------------------------------------------------------------------------
/datm/cime_config/user_nl_datm:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! Users should ONLY USE user_nl_datm to change namelists variables
3 | ! Users should add all user specific namelist changes below in the form of
4 | ! namelist_var = new_namelist_value
5 | ! Note that any namelist variable from shr_strdata_nml and datm_nml can
6 | ! be modified below using the above syntax
7 | ! User preview_namelists to view (not modify) the output namelist in the
8 | ! directory $CASEROOT/CaseDocs
9 | ! To modify the contents of a stream txt file, first use preview_namelists
10 | ! to obtain the contents of the stream txt files in CaseDocs, and then
11 | ! place a copy of the modified stream txt file in $CASEROOT with the string
12 | ! user_ prepended.
13 | !------------------------------------------------------------------------
14 |
--------------------------------------------------------------------------------
/dglc/cime_config/user_nl_dglc:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! Users should ONLY USE user_nl_dglc to change namelists variables
3 | ! Users should add all user specific namelist changes below in the form of
4 | ! namelist_var = new_namelist_value
5 | ! Note that any namelist variable from shr_strdata_nml and dglc_nml can
6 | ! be modified below using the above syntax
7 | ! User preview_namelists to view (not modify) the output namelist in the
8 | ! directory $CASEROOT/CaseDocs
9 | ! To modify the contents of a stream txt file, first use preview_namelists
10 | ! to obtain the contents of the stream txt files in CaseDocs, and then
11 | ! place a copy of the modified stream txt file in $CASEROOT with the string
12 | ! user_ prepended.
13 | !------------------------------------------------------------------------
14 |
--------------------------------------------------------------------------------
/dice/cime_config/user_nl_dice:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! Users should ONLY USE user_nl_dice to change namelists variables
3 | ! Users should add all user specific namelist changes below in the form of
4 | ! namelist_var = new_namelist_value
5 | ! Note that any namelist variable from shr_strdata_nml and dice_nml can
6 | ! be modified below using the above syntax
7 | ! User preview_namelists to view (not modify) the output namelist in the
8 | ! directory $CASEROOT/CaseDocs
9 | ! To modify the contents of a stream txt file, first use preview_namelists
10 | ! to obtain the contents of the stream txt files in CaseDocs, and then
11 | ! place a copy of the modified stream txt file in $CASEROOT with the string
12 | ! user_ prepended.
13 | !------------------------------------------------------------------------
14 |
--------------------------------------------------------------------------------
/dlnd/cime_config/user_nl_dlnd:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! Users should ONLY USE user_nl_dlnd to change namelists variables
3 | ! Users should add all user specific namelist changes below in the form of
4 | ! namelist_var = new_namelist_value
5 | ! Note that any namelist variable from shr_strdata_nml and dlnd_nml can
6 | ! be modified below using the above syntax
7 | ! User preview_namelists to view (not modify) the output namelist in the
8 | ! directory $CASEROOT/CaseDocs
9 | ! To modify the contents of a stream txt file, first use preview_namelists
10 | ! to obtain the contents of the stream txt files in CaseDocs, and then
11 | ! place a copy of the modified stream txt file in $CASEROOT with the string
12 | ! user_ prepended.
13 | !------------------------------------------------------------------------
14 |
--------------------------------------------------------------------------------
/drof/cime_config/user_nl_drof:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! Users should ONLY USE user_nl_drof to change namelists variables
3 | ! Users should add all user specific namelist changes below in the form of
4 | ! namelist_var = new_namelist_value
5 | ! Note that any namelist variable from shr_strdata_nml and drof_nml can
6 | ! be modified below using the above syntax
7 | ! User preview_namelists to view (not modify) the output namelist in the
8 | ! directory $CASEROOT/CaseDocs
9 | ! To modify the contents of a stream txt file, first use preview_namelists
10 | ! to obtain the contents of the stream txt files in CaseDocs, and then
11 | ! place a copy of the modified stream txt file in $CASEROOT with the string
12 | ! user_ prepended.
13 | !------------------------------------------------------------------------
14 |
--------------------------------------------------------------------------------
/.github/actions/buildpnetcdf/action.yml:
--------------------------------------------------------------------------------
1 | description: 'Build the pnetcdf library'
2 | inputs:
3 | pnetcdf_version:
4 | description: 'Tag in the pnetcdf repository to use'
5 | default: checkpoint.1.12.3
6 | required: False
7 | type: string
8 | install_prefix:
9 | description: 'Install path of pnetcdf'
10 | default: $HOME/pnetcdf
11 | required: False
12 | type: string
13 |
14 | runs:
15 | using: composite
16 | steps:
17 | - uses: actions/checkout@v3
18 | with:
19 | repository: Parallel-NetCDF/PnetCDF
20 | path: pnetcdf-src
21 | ref: ${{ inputs.pnetcdf_version }}
22 | - id: Build-PnetCDF
23 | shell: bash
24 | run: |
25 | pushd pnetcdf-src
26 | autoreconf -i
27 | ./configure --prefix=${{ inputs.install_prefix }} --enable-shared --disable-cxx
28 | make
29 | make install
30 | popd
31 |
--------------------------------------------------------------------------------
/dice/cime_config/testdefs/testlist_dice.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/dshr/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | project(dshr Fortran)
2 |
3 | set(SRCFILES dshr_dfield_mod.F90
4 | dshr_fldlist_mod.F90
5 | dshr_mod.F90)
6 |
7 | foreach(FILE ${SRCFILES})
8 | if(EXISTS "${CASEROOT}/SourceMods/src.cdeps/${FILE}")
9 | list(REMOVE_ITEM SRCFILES ${FILE})
10 | list(APPEND SRCFILES "${CASEROOT}/SourceMods/src.cdeps/${FILE}")
11 | message("Using ${FILE} from ${CASEROOT}/SourceMods/src.cdeps")
12 | endif()
13 | endforeach()
14 | add_library(dshr ${SRCFILES})
15 |
16 | if(BLD_STANDALONE)
17 | add_dependencies(dshr cdeps_share)
18 | target_include_directories (dshr PRIVATE ${CMAKE_BINARY_DIR}/share)
19 | endif()
20 | add_dependencies(dshr streams)
21 |
22 | target_include_directories (dshr PRIVATE ${ESMF_F90COMPILEPATHS})
23 | target_include_directories (dshr PRIVATE "${PIO_Fortran_INCLUDE_DIR}")
24 |
25 | install(TARGETS dshr
26 | ARCHIVE DESTINATION lib
27 | LIBRARY DESTINATION lib)
28 |
--------------------------------------------------------------------------------
/docn/cime_config/user_nl_docn:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! Users should ONLY USE user_nl_docn to change namelists variables
3 | ! Users should add all user specific namelist changes below in the form of
4 | ! namelist_var = new_namelist_value
5 | ! Note that any namelist variable from shr_strdata_nml and docn_nml can
6 | ! be modified below using the above syntax
7 | ! User preview_namelists to view (not modify) the output namelist in the
8 | ! directory $CASEROOT/CaseDocs
9 | ! To modify the contents of a stream txt file, first use preview_namelists
10 | ! to obtain the contents of the stream txt files in CaseDocs, and then
11 | ! place a copy of the modified stream txt file in $CASEROOT with the string
12 | ! user_ prepended.
13 | ! As an example, to modify docn.streams.txt.prescribed, place the modified
14 | ! version in $CASEROOT with the name user_docn.streams.txt.prescribed
15 | !------------------------------------------------------------------------
16 |
--------------------------------------------------------------------------------
/dwav/cime_config/user_nl_dwav:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! Users should ONLY USE user_nl_dwav to change namelists variables
3 | ! Users should add all user specific namelist changes below in the form of
4 | ! namelist_var = new_namelist_value
5 | ! Note that any namelist variable from shr_strdata_nml and dwav_nml can
6 | ! be modified below using the above syntax
7 | ! User preview_namelists to view (not modify) the output namelist in the
8 | ! directory $CASEROOT/CaseDocs
9 | ! To modify the contents of a stream txt file, first use preview_namelists
10 | ! to obtain the contents of the stream txt files in CaseDocs, and then
11 | ! place a copy of the modified stream txt file in $CASEROOT with the string
12 | ! user_ prepended.
13 | ! As an example, to modify dwav.streams.txt.prescribed, place the modified
14 | ! version in $CASEROOT with the name user_dwav.streams.txt.prescribed
15 | !------------------------------------------------------------------------
16 |
--------------------------------------------------------------------------------
/dice/cime_config/config_archive.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | r
4 | rs1
5 | unset
6 |
7 | rpointer.ice$NINST_STRING.$DATENAME
8 | $CASE.dice$NINST_STRING.r.$DATENAME.nc,$CASE.dice$NINST_STRING.rs1.$DATENAME.bin
9 |
10 |
11 | casename.dice.r.1976-01-01-00000.nc
12 | rpointer.ice_0001.1976-01-01-00000
13 | rpointer.ice.1976-01-01-00000
14 | rpointer.ice_0001.1976-01-02-00000
15 | rpointer.ice.1976-01-01-00480
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/doc/source/index.rst:
--------------------------------------------------------------------------------
1 | .. on documentation main file, created by
2 | sphinx-quickstart on Mon May 18 11:50:23 2020.
3 | You can adapt this file completely to your liking, but it should at least
4 | contain the root `toctree` directive.
5 |
6 | CDEPS documentation
7 | ===================
8 |
9 | The Community Data Models for Earth Predictive Systems (CDEPS)
10 | contains a set of NUOPC-compliant data components along with
11 | ESMF-based share code that enables new capabilities in selectively
12 | removing feedbacks in coupled model systems. The CDEPS data
13 | models perform the basic function of reading external data files,
14 | modifying those data, and then sending the data back to the CMEPS
15 | mediator.
16 |
17 | Table of contents
18 | -----------------
19 | .. toctree::
20 | :maxdepth: 2
21 | :numbered:
22 |
23 | introduction.rst
24 | streams.rst
25 | design_details.rst
26 | datm.rst
27 | docn.rst
28 | dice.rst
29 | dlnd.rst
30 | drof.rst
31 | dwav.rst
32 | dglc.rst
33 | extending.rst
34 |
--------------------------------------------------------------------------------
/.github/actions/buildnetcdff/action.yml:
--------------------------------------------------------------------------------
1 | description: 'Build the netcdf fortran library'
2 | inputs:
3 | netcdf_fortran_version:
4 | description: 'Tag in the netcdf fortran repository to use'
5 | default: v5.6.0
6 | required: False
7 | type: string
8 | netcdf_c_path:
9 | description: 'Path to the installed netcdf c code root'
10 | default: /usr
11 | required: False
12 | type: string
13 | install_prefix:
14 | description: 'Install path of netcdf-fortran'
15 | default: $HOME/netcdf-fortran
16 | required: False
17 | type: string
18 |
19 | runs:
20 | using: composite
21 | steps:
22 | - uses: actions/checkout@v3
23 | with:
24 | repository: Unidata/netcdf-fortran
25 | path: netcdf-fortran-src
26 | ref: ${{ inputs.NETCDF_FORTRAN_VERSION }}
27 | - id: netcdf-fortran-build
28 | shell: bash
29 | run: |
30 | pushd netcdf-fortran-src
31 | export CPPFLAGS="-I${{ inputs.netcdf_c_path }}/include"
32 | export LDFLAGS="-L${{ inputs.netcdf_c_path }}/lib"
33 | ./configure --prefix=${{ inputs.install_prefix }}
34 | make
35 | make install
36 |
--------------------------------------------------------------------------------
/dlnd/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | project(dlnd Fortran)
2 | set(SRCFILES lnd_comp_nuopc.F90)
3 |
4 | foreach(FILE ${SRCFILES})
5 | if(EXISTS "${CASEROOT}/SourceMods/src.dlnd/${FILE}")
6 | list(REMOVE_ITEM SRCFILES ${FILE})
7 | list(APPEND SRCFILES "${CASEROOT}/SourceMods/src.dlnd/${FILE}")
8 | message("Using ${FILE} from ${CASEROOT}/SourceMods/src.dlnd")
9 | endif()
10 | endforeach()
11 |
12 | message("DLND srcfiles are ${SRCFILES}")
13 |
14 | add_library(dlnd ${SRCFILES})
15 |
16 | add_dependencies(dlnd dshr streams)
17 | target_include_directories (dlnd PRIVATE ${ESMF_F90COMPILEPATHS})
18 | target_include_directories (dlnd PRIVATE "${CMAKE_SOURCE_DIR}")
19 | target_include_directories (dlnd PRIVATE "${PIO_Fortran_INCLUDE_DIR}")
20 | if(NOT DISABLE_FoX)
21 | target_include_directories (dlnd PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../fox/include)
22 | endif()
23 |
24 | if(BLD_STANDALONE)
25 | # ESMX requires mod files
26 | foreach (SRC ${SRCFILES})
27 | string(REGEX REPLACE "[.]F90$" ".mod" MOD ${SRC})
28 | if (NOT DEFINED CIMEROOT AND MOD STREQUAL lnd_comp_nuopc.mod)
29 | set(MOD cdeps_dlnd_comp.mod)
30 | endif()
31 | install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${MOD}" DESTINATION include)
32 | endforeach ()
33 | endif()
34 |
--------------------------------------------------------------------------------
/drof/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | project(drof Fortran)
2 | set(SRCFILES rof_comp_nuopc.F90)
3 |
4 | foreach(FILE ${SRCFILES})
5 | if(EXISTS "${CASEROOT}/SourceMods/src.drof/${FILE}")
6 | list(REMOVE_ITEM SRCFILES ${FILE})
7 | list(APPEND SRCFILES "${CASEROOT}/SourceMods/src.drof/${FILE}")
8 | message("Using ${FILE} from ${CASEROOT}/SourceMods/src.drof")
9 | endif()
10 | endforeach()
11 |
12 | message("DROF srcfiles are ${SRCFILES}")
13 |
14 | add_library(drof ${SRCFILES})
15 |
16 | add_dependencies(drof dshr streams)
17 | target_include_directories (drof PRIVATE ${ESMF_F90COMPILEPATHS})
18 | target_include_directories (drof PRIVATE "${CMAKE_SOURCE_DIR}")
19 | target_include_directories (drof PRIVATE "${PIO_Fortran_INCLUDE_DIR}")
20 | if(NOT DISABLE_FoX)
21 | target_include_directories (drof PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../fox/include)
22 | endif()
23 |
24 | if(BLD_STANDALONE)
25 | # ESMX requires mod files
26 | foreach (SRC ${SRCFILES})
27 | string(REGEX REPLACE "[.]F90$" ".mod" MOD ${SRC})
28 | if (NOT DEFINED CIMEROOT AND MOD STREQUAL rof_comp_nuopc.mod)
29 | set(MOD cdeps_drof_comp.mod)
30 | endif()
31 | install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${MOD}" DESTINATION include)
32 | endforeach ()
33 | endif()
34 |
--------------------------------------------------------------------------------
/dwav/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | project(dwav Fortran)
2 | set(SRCFILES wav_comp_nuopc.F90)
3 |
4 | foreach(FILE ${SRCFILES})
5 | if(EXISTS "${CASEROOT}/SourceMods/src.dwav/${FILE}")
6 | list(REMOVE_ITEM SRCFILES ${FILE})
7 | list(APPEND SRCFILES "${CASEROOT}/SourceMods/src.dwav/${FILE}")
8 | message("Using ${FILE} from ${CASEROOT}/SourceMods/src.dwav")
9 | endif()
10 | endforeach()
11 |
12 | message("DWAV srcfiles are ${SRCFILES}")
13 |
14 | add_library(dwav ${SRCFILES})
15 |
16 | add_dependencies(dwav dshr streams)
17 | target_include_directories (dwav PRIVATE ${ESMF_F90COMPILEPATHS})
18 | target_include_directories (dwav PRIVATE "${CMAKE_SOURCE_DIR}")
19 | target_include_directories (dwav PRIVATE "${PIO_Fortran_INCLUDE_DIR}")
20 | if(NOT DISABLE_FoX)
21 | target_include_directories (dwav PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../fox/include)
22 | endif()
23 |
24 | if(BLD_STANDALONE)
25 | # ESMX requires mod files
26 | foreach (SRC ${SRCFILES})
27 | string(REGEX REPLACE "[.]F90$" ".mod" MOD ${SRC})
28 | if (NOT DEFINED CIMEROOT AND MOD STREQUAL wav_comp_nuopc.mod)
29 | set(MOD cdeps_dwav_comp.mod)
30 | endif()
31 | install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${MOD}" DESTINATION include)
32 | endforeach ()
33 | endif()
34 |
--------------------------------------------------------------------------------
/share/shr_kind_mod.F90:
--------------------------------------------------------------------------------
1 | MODULE shr_kind_mod
2 |
3 | !----------------------------------------------------------------------------
4 | ! precision/kind constants add data public
5 | !----------------------------------------------------------------------------
6 | public
7 | integer,parameter :: SHR_KIND_R8 = selected_real_kind(12) ! 8 byte real
8 | integer,parameter :: SHR_KIND_R4 = selected_real_kind( 6) ! 4 byte real
9 | integer,parameter :: SHR_KIND_RN = kind(1.0) ! native real
10 | integer,parameter :: SHR_KIND_I8 = selected_int_kind (13) ! 8 byte integer
11 | integer,parameter :: SHR_KIND_I4 = selected_int_kind ( 6) ! 4 byte integer
12 | integer,parameter :: SHR_KIND_I2 = selected_int_kind ( 4) ! 2 byte integer
13 | integer,parameter :: SHR_KIND_IN = kind(1) ! native integer
14 | integer,parameter :: SHR_KIND_CS = 80 ! short char
15 | integer,parameter :: SHR_KIND_CM = 160 ! mid-sized char
16 | integer,parameter :: SHR_KIND_CL = 256 ! long char
17 | integer,parameter :: SHR_KIND_CX = 512 ! extra-long char
18 | integer,parameter :: SHR_KIND_CXX= 4096 ! extra-extra-long char
19 |
20 | END MODULE shr_kind_mod
21 |
--------------------------------------------------------------------------------
/dglc/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | project(dglc Fortran)
2 | set(SRCFILES glc_comp_nuopc.F90
3 | dglc_datamode_noevolve_mod.F90)
4 |
5 | foreach(FILE ${SRCFILES})
6 | if(EXISTS "${CASEROOT}/SourceMods/src.dglc/${FILE}")
7 | list(REMOVE_ITEM SRCFILES ${FILE})
8 | list(APPEND SRCFILES "${CASEROOT}/SourceMods/src.dglc/${FILE}")
9 | message("Using ${FILE} from ${CASEROOT}/SourceMods/src.dglc")
10 | endif()
11 | endforeach()
12 |
13 | message("DGLC srcfiles are ${SRCFILES}")
14 |
15 | add_library(dglc ${SRCFILES})
16 |
17 | add_dependencies(dglc dshr streams)
18 | target_include_directories (dglc PRIVATE ${ESMF_F90COMPILEPATHS})
19 | target_include_directories (dglc PRIVATE ${CMAKE_SOURCE_DIR})
20 | target_include_directories (dglc PRIVATE ${PIO_Fortran_INCLUDE_DIR})
21 | if(NOT DISABLE_FoX)
22 | target_include_directories (dglc PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../fox/include)
23 | endif()
24 |
25 | if(BLD_STANDALONE)
26 | # ESMX requires mod files
27 | foreach (SRC ${SRCFILES})
28 | string(REGEX REPLACE "[.]F90$" ".mod" MOD ${SRC})
29 | if (NOT DEFINED CIMEROOT AND MOD STREQUAL glc_comp_nuopc.mod)
30 | set(MOD cdeps_dglc_comp.mod)
31 | endif()
32 | install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${MOD}" DESTINATION include)
33 | endforeach ()
34 | endif()
35 |
--------------------------------------------------------------------------------
/docn/cime_config/testdefs/testlist_docn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/dglc/cime_config/testdefs/testlist_dglc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/dice/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | project(dice Fortran)
2 | set(SRCFILES ice_comp_nuopc.F90
3 | dice_datamode_ssmi_mod.F90
4 | dice_datamode_cplhist_mod.F90
5 | dice_flux_atmice_mod.F90)
6 |
7 | foreach(FILE ${SRCFILES})
8 | if(EXISTS "${CASEROOT}/SourceMods/src.dice/${FILE}")
9 | list(REMOVE_ITEM SRCFILES ${FILE})
10 | list(APPEND SRCFILES "${CASEROOT}/SourceMods/src.dice/${FILE}")
11 | message("Using ${FILE} from ${CASEROOT}/SourceMods/src.dice")
12 | endif()
13 | endforeach()
14 |
15 | message("DICE srcfiles are ${SRCFILES}")
16 |
17 | add_library(dice ${SRCFILES})
18 |
19 | add_dependencies(dice dshr streams)
20 | target_include_directories (dice PRIVATE ${ESMF_F90COMPILEPATHS})
21 | target_include_directories (dice PRIVATE "${CMAKE_SOURCE_DIR}")
22 | target_include_directories (dice PRIVATE "${PIO_Fortran_INCLUDE_DIR}")
23 | if(NOT DISABLE_FoX)
24 | target_include_directories (dice PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../fox/include)
25 | endif()
26 |
27 | if(BLD_STANDALONE)
28 | # ESMX requires mod files
29 | foreach (SRC ${SRCFILES})
30 | string(REGEX REPLACE "[.]F90$" ".mod" MOD ${SRC})
31 | if (NOT DEFINED CIMEROOT AND MOD STREQUAL ice_comp_nuopc.mod)
32 | set(MOD cdeps_dice_comp.mod)
33 | endif()
34 | install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${MOD}" DESTINATION include)
35 | endforeach ()
36 | endif()
37 |
--------------------------------------------------------------------------------
/streams/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | set(SRCFILES dshr_methods_mod.F90
2 | dshr_strdata_mod.F90
3 | dshr_stream_mod.F90
4 | dshr_tinterp_mod.F90)
5 |
6 | set(MODFILES ${SRCFILES})
7 |
8 | foreach(FILE ${SRCFILES})
9 | list(TRANSFORM MODFILES REPLACE ".F90" ".mod")
10 | if(EXISTS "${CASEROOT}/SourceMods/src.cdeps/${FILE}")
11 | list(REMOVE_ITEM SRCFILES ${FILE})
12 | list(APPEND SRCFILES "${CASEROOT}/SourceMods/src.cdeps/${FILE}")
13 | message("Using ${FILE} from ${CASEROOT}/SourceMods/src.cdeps")
14 | endif()
15 | endforeach()
16 |
17 | message("Stream srcfiles are ${SRCFILES}")
18 |
19 | add_library(streams ${SRCFILES})
20 |
21 | if(NOT DISABLE_FoX)
22 | add_dependencies(streams FoX_dom)
23 | target_include_directories (streams PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../fox/include)
24 | endif()
25 |
26 | if(BLD_STANDALONE)
27 | add_dependencies(streams cdeps_share)
28 | target_include_directories (streams PRIVATE ${CMAKE_BINARY_DIR}/share)
29 | endif()
30 |
31 | target_include_directories (streams PRIVATE ${ESMF_F90COMPILEPATHS})
32 | target_include_directories (streams PRIVATE ${PIO_Fortran_INCLUDE_DIR})
33 |
34 | install(TARGETS streams
35 | ARCHIVE DESTINATION lib
36 | LIBRARY DESTINATION lib)
37 | foreach(MOD ${MODFILES})
38 | install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${MOD}" DESTINATION include)
39 | endforeach()
40 |
--------------------------------------------------------------------------------
/dwav/cime_config/stream_definition_dwav.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | $DIN_LOC_ROOT/share/meshes/ww3a_120222_ESMFmesh.nc
10 |
11 |
12 | $DIN_LOC_ROOT/wav/dwav/waveclim.mon.ww3a.150612.nc
13 |
14 |
15 | lamult Sw_lamult
16 | ustokes Sw_ustokes
17 | vstokes Sw_vstokes
18 |
19 | null
20 |
21 | bilinear
22 |
23 | null
24 | 1
25 | 1
26 | 1
27 | 0
28 |
29 | linear
30 |
31 |
32 | cycle
33 |
34 |
35 | 1.5
36 |
37 | single
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/.github/actions/buildcdeps/action.yaml:
--------------------------------------------------------------------------------
1 | name: CDEPS build and cache
2 | description: 'Build the CDEPS library'
3 | inputs:
4 | cdeps_version:
5 | description: 'Tag in the CDEPS repository to use'
6 | default: main
7 | required: False
8 | type: string
9 | pio_path:
10 | description: 'Path to the installed parallelio code root'
11 | default: $HOME/pio
12 | required: False
13 | type: string
14 | esmfmkfile:
15 | description: 'Path to the installed ESMF library mkfile'
16 | default: $HOME/ESMF/lib/libg/Linux.gfortran.64.openmpi.default/esmf.mk
17 | required: False
18 | type: string
19 | src_root:
20 | description: 'Path to cdeps source'
21 | default: $GITHUB_WORKSPACE
22 | required: False
23 | type: string
24 | cmake_flags:
25 | description: 'Extra flags for cmake command'
26 | default: -Wno-dev
27 | required: False
28 | type: string
29 | install_prefix:
30 | description: 'Install path of cdeps'
31 | default: $HOME/cdeps
32 | required: False
33 | type: string
34 | runs:
35 | using: composite
36 | steps:
37 | - id : Build-CDEPS
38 | shell: bash
39 | run: |
40 | mkdir build-cdeps
41 | pushd build-cdeps
42 | export ESMFMKFILE=${{ inputs.esmfmkfile }}
43 | export PIO=${{ inputs.pio_path }}
44 | cmake ${{ inputs.cmake_flags }} ${{ inputs.src_root }}
45 | make VERBOSE=1
46 | popd
47 |
--------------------------------------------------------------------------------
/share/shr_assert.h:
--------------------------------------------------------------------------------
1 | #ifdef NDEBUG
2 | #define SHR_ASSERT(assert, msg)
3 | #define SHR_ASSERT_FL(assert, file, line)
4 | #define SHR_ASSERT_MFL(assert, msg, file, line)
5 | #define SHR_ASSERT_ALL(assert, msg)
6 | #define SHR_ASSERT_ALL_FL(assert, file, line)
7 | #define SHR_ASSERT_ALL_MFL(assert, msg, file, line)
8 | #define SHR_ASSERT_ANY(assert, msg)
9 | #define SHR_ASSERT_ANY_FL(assert, file, line)
10 | #define SHR_ASSERT_ANY_MFL(assert, msg, file, line)
11 | #else
12 | #define SHR_ASSERT(assert, my_msg) call shr_assert(assert, msg=my_msg)
13 | #define SHR_ASSERT_FL(assert, my_file, my_line) call shr_assert(assert, file=my_file, line=my_line)
14 | #define SHR_ASSERT_MFL(assert, my_msg, my_file, my_line) call shr_assert(assert, msg=my_msg, file=my_file, line=my_line)
15 | #define SHR_ASSERT_ALL(assert, my_msg) call shr_assert_all(assert, msg=my_msg)
16 | #define SHR_ASSERT_ALL_FL(assert, my_file, my_line) call shr_assert_all(assert, file=my_file, line=my_line)
17 | #define SHR_ASSERT_ALL_MFL(assert, my_msg, my_file, my_line) call shr_assert_all(assert, msg=my_msg, file=my_file, line=my_line)
18 | #define SHR_ASSERT_ANY(assert, my_msg) call shr_assert_any(assert, msg=my_msg)
19 | #define SHR_ASSERT_ANY_FL(assert, my_file, my_line) call shr_assert_any(assert, file=my_file, line=my_line)
20 | #define SHR_ASSERT_ANY_MFL(assert, my_msg, my_file, my_line) call shr_assert_any(assert, msg=my_msg, file=my_file, line=my_line)
21 | #endif
22 | use shr_assert_mod
23 |
--------------------------------------------------------------------------------
/datm/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | project(datm Fortran)
2 | set(SRCFILES atm_comp_nuopc.F90
3 | datm_datamode_clmncep_mod.F90
4 | datm_datamode_cplhist_mod.F90
5 | datm_datamode_core2_mod.F90
6 | datm_datamode_jra_mod.F90
7 | datm_datamode_gefs_mod.F90
8 | datm_datamode_era5_mod.F90
9 | datm_datamode_simple_mod.F90)
10 |
11 |
12 | foreach(FILE ${SRCFILES})
13 | if(EXISTS "${CASEROOT}/SourceMods/src.datm/${FILE}")
14 | list(REMOVE_ITEM SRCFILES ${FILE})
15 | list(APPEND SRCFILES "${CASEROOT}/SourceMods/src.datm/${FILE}")
16 | message("Using ${FILE} from ${CASEROOT}/SourceMods/src.datm")
17 | endif()
18 | endforeach()
19 |
20 | message("DATM srcfiles are ${SRCFILES}")
21 |
22 | add_library(datm ${SRCFILES})
23 |
24 | add_dependencies(datm dshr streams)
25 | target_include_directories (datm PRIVATE ${ESMF_F90COMPILEPATHS})
26 | target_include_directories (datm PRIVATE ${CMAKE_SOURCE_DIR})
27 | target_include_directories (datm PRIVATE ${PIO_Fortran_INCLUDE_DIR})
28 | if(NOT DISABLE_FoX)
29 | target_include_directories (datm PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../fox/include)
30 | endif()
31 |
32 | if(BLD_STANDALONE)
33 | # ESMX requires mod files
34 | foreach (SRC ${SRCFILES})
35 | string(REGEX REPLACE "[.]F90$" ".mod" MOD ${SRC})
36 | if (NOT DEFINED CIMEROOT AND MOD STREQUAL atm_comp_nuopc.mod)
37 | set(MOD cdeps_datm_comp.mod)
38 | endif()
39 | install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${MOD}" DESTINATION include)
40 | endforeach ()
41 | endif()
42 |
--------------------------------------------------------------------------------
/docn/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | project(docn Fortran)
2 | set(SRCFILES ocn_comp_nuopc.F90
3 | docn_datamode_copyall_mod.F90
4 | docn_datamode_som_mod.F90
5 | docn_datamode_aquaplanet_mod.F90
6 | docn_datamode_iaf_mod.F90
7 | docn_datamode_cplhist_mod.F90
8 | docn_datamode_multilev_mod.F90
9 | docn_datamode_multilev_dom_mod.F90
10 | docn_import_data_mod.F90)
11 |
12 | foreach(FILE ${SRCFILES})
13 | if(EXISTS "${CASEROOT}/SourceMods/src.docn/${FILE}")
14 | list(REMOVE_ITEM SRCFILES ${FILE})
15 | list(APPEND SRCFILES "${CASEROOT}/SourceMods/src.docn/${FILE}")
16 | message("Using ${FILE} from ${CASEROOT}/SourceMods/src.docn")
17 | endif()
18 | endforeach()
19 |
20 | message("DOCN srcfiles are ${SRCFILES}")
21 |
22 | add_library(docn ${SRCFILES})
23 |
24 | add_dependencies(docn dshr streams)
25 | target_include_directories (docn PRIVATE ${ESMF_F90COMPILEPATHS})
26 | target_include_directories (docn PRIVATE ${CMAKE_SOURCE_DIR})
27 | target_include_directories (docn PRIVATE ${PIO_Fortran_INCLUDE_DIR})
28 | if(NOT DISABLE_FoX)
29 | target_include_directories (docn PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../fox/include)
30 | endif()
31 |
32 | if(BLD_STANDALONE)
33 | # ESMX requires mod files
34 | foreach (SRC ${SRCFILES})
35 | string(REGEX REPLACE "[.]F90$" ".mod" MOD ${SRC})
36 | if (NOT DEFINED CIMEROOT AND MOD STREQUAL ocn_comp_nuopc.mod)
37 | set(MOD cdeps_docn_comp.mod)
38 | endif()
39 | install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${MOD}" DESTINATION include)
40 | endforeach ()
41 | endif()
42 |
--------------------------------------------------------------------------------
/dglc/cime_config/user_nl_dglc_streams:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! This file is used to modify datm.streams.xml generated in $RUNDIR
3 | ! Entries should have the form
4 | ! :<= new stream_value>
5 | ! The following are accepted values for an assume streamname of foo
6 | ! foo:meshfile = character string
7 | ! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...)
8 | ! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...)
9 | ! foo:taxmode = one of [cycle, extend, limit]
10 | ! foo:tintalgo = one of [lower,upper,nearest,linear,coszen]
11 | ! foo:readmode = single (only suported mode right now)
12 | ! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none]
13 | ! foo:dtlimit = real (1.5 is default)
14 | ! foo:year_first = integer
15 | ! foo:year_last = integer
16 | ! foo:year_align = integer
17 | ! foo:vectors = one of [none,u:v]
18 | ! foo:lev_dimname: = one of [null,name of level dimenion name]
19 | ! foo:offset = integer
20 | ! As an example:
21 | ! foo:year_first = 1950
22 | ! would change the stream year_first stream_entry to 1950 for the foo stream block
23 | ! NOTE: multi-line inputs are enabled by adding a \ at the end of the line
24 | ! As an emaple:
25 | ! foo:datafiles=foo1,foo2, \
26 | ! foo3
27 | ! Will yield the following new entry for datafiles in stream foo
28 | !
29 | ! foo1
30 | ! foo2
31 | ! foo3
32 | !
33 | !------------------------------------------------------------------------
34 |
--------------------------------------------------------------------------------
/dice/cime_config/user_nl_dice_streams:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! This file is used to modify datm.streams.xml generated in $RUNDIR
3 | ! Entries should have the form
4 | ! :<= new stream_value>
5 | ! The following are accepted values for an assume streamname of foo
6 | ! foo:meshfile = character string
7 | ! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...)
8 | ! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...)
9 | ! foo:taxmode = one of [cycle, extend, limit]
10 | ! foo:tintalgo = one of [lower,upper,nearest,linear,coszen]
11 | ! foo:readmode = single (only suported mode right now)
12 | ! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none]
13 | ! foo:dtlimit = real (1.5 is default)
14 | ! foo:year_first = integer
15 | ! foo:year_last = integer
16 | ! foo:year_align = integer
17 | ! foo:vectors = one of [none,u:v]
18 | ! foo:lev_dimname: = one of [null,name of level dimenion name]
19 | ! foo:offset = integer
20 | ! As an example:
21 | ! foo:year_first = 1950
22 | ! would change the stream year_first stream_entry to 1950 for the foo stream block
23 | ! NOTE: multi-line inputs are enabled by adding a \ at the end of the line
24 | ! As an emaple:
25 | ! foo:datafiles=foo1,foo2, \
26 | ! foo3
27 | ! Will yield the following new entry for datafiles in stream foo
28 | !
29 | ! foo1
30 | ! foo2
31 | ! foo3
32 | !
33 | !------------------------------------------------------------------------
34 |
--------------------------------------------------------------------------------
/dlnd/cime_config/user_nl_dlnd_streams:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! This file is used to modify datm.streams.xml generated in $RUNDIR
3 | ! Entries should have the form
4 | ! :<= new stream_value>
5 | ! The following are accepted values for an assume streamname of foo
6 | ! foo:meshfile = character string
7 | ! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...)
8 | ! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...)
9 | ! foo:taxmode = one of [cycle, extend, limit]
10 | ! foo:tintalgo = one of [lower,upper,nearest,linear,coszen]
11 | ! foo:readmode = single (only suported mode right now)
12 | ! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none]
13 | ! foo:dtlimit = real (1.5 is default)
14 | ! foo:year_first = integer
15 | ! foo:year_last = integer
16 | ! foo:year_align = integer
17 | ! foo:vectors = one of [none,u:v]
18 | ! foo:lev_dimname: = one of [null,name of level dimenion name]
19 | ! foo:offset = integer
20 | ! As an example:
21 | ! foo:year_first = 1950
22 | ! would change the stream year_first stream_entry to 1950 for the foo stream block
23 | ! NOTE: multi-line inputs are enabled by adding a \ at the end of the line
24 | ! As an emaple:
25 | ! foo:datafiles=foo1,foo2, \
26 | ! foo3
27 | ! Will yield the following new entry for datafiles in stream foo
28 | !
29 | ! foo1
30 | ! foo2
31 | ! foo3
32 | !
33 | !------------------------------------------------------------------------
34 |
--------------------------------------------------------------------------------
/docn/cime_config/user_nl_docn_streams:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! This file is used to modify datm.streams.xml generated in $RUNDIR
3 | ! Entries should have the form
4 | ! :<= new stream_value>
5 | ! The following are accepted values for an assume streamname of foo
6 | ! foo:meshfile = character string
7 | ! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...)
8 | ! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...)
9 | ! foo:taxmode = one of [cycle, extend, limit]
10 | ! foo:tintalgo = one of [lower,upper,nearest,linear,coszen]
11 | ! foo:readmode = single (only suported mode right now)
12 | ! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none]
13 | ! foo:dtlimit = real (1.5 is default)
14 | ! foo:year_first = integer
15 | ! foo:year_last = integer
16 | ! foo:year_align = integer
17 | ! foo:vectors = one of [none,u:v]
18 | ! foo:lev_dimname: = one of [null,name of level dimenion name]
19 | ! foo:offset = integer
20 | ! As an example:
21 | ! foo:year_first = 1950
22 | ! would change the stream year_first stream_entry to 1950 for the foo stream block
23 | ! NOTE: multi-line inputs are enabled by adding a \ at the end of the line
24 | ! As an emaple:
25 | ! foo:datafiles=foo1,foo2, \
26 | ! foo3
27 | ! Will yield the following new entry for datafiles in stream foo
28 | !
29 | ! foo1
30 | ! foo2
31 | ! foo3
32 | !
33 | !------------------------------------------------------------------------
34 |
--------------------------------------------------------------------------------
/drof/cime_config/user_nl_drof_streams:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! This file is used to modify datm.streams.xml generated in $RUNDIR
3 | ! Entries should have the form
4 | ! :<= new stream_value>
5 | ! The following are accepted values for an assume streamname of foo
6 | ! foo:meshfile = character string
7 | ! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...)
8 | ! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...)
9 | ! foo:taxmode = one of [cycle, extend, limit]
10 | ! foo:tintalgo = one of [lower,upper,nearest,linear,coszen]
11 | ! foo:readmode = single (only suported mode right now)
12 | ! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none]
13 | ! foo:dtlimit = real (1.5 is default)
14 | ! foo:year_first = integer
15 | ! foo:year_last = integer
16 | ! foo:year_align = integer
17 | ! foo:vectors = one of [none,u:v]
18 | ! foo:lev_dimname: = one of [null,name of level dimenion name]
19 | ! foo:offset = integer
20 | ! As an example:
21 | ! foo:year_first = 1950
22 | ! would change the stream year_first stream_entry to 1950 for the foo stream block
23 | ! NOTE: multi-line inputs are enabled by adding a \ at the end of the line
24 | ! As an emaple:
25 | ! foo:datafiles=foo1,foo2, \
26 | ! foo3
27 | ! Will yield the following new entry for datafiles in stream foo
28 | !
29 | ! foo1
30 | ! foo2
31 | ! foo3
32 | !
33 | !------------------------------------------------------------------------
34 |
--------------------------------------------------------------------------------
/dwav/cime_config/user_nl_dwav_streams:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! This file is used to modify datm.streams.xml generated in $RUNDIR
3 | ! Entries should have the form
4 | ! :<= new stream_value>
5 | ! The following are accepted values for an assume streamname of foo
6 | ! foo:meshfile = character string
7 | ! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...)
8 | ! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...)
9 | ! foo:taxmode = one of [cycle, extend, limit]
10 | ! foo:tintalgo = one of [lower,upper,nearest,linear,coszen]
11 | ! foo:readmode = single (only suported mode right now)
12 | ! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none]
13 | ! foo:dtlimit = real (1.5 is default)
14 | ! foo:year_first = integer
15 | ! foo:year_last = integer
16 | ! foo:year_align = integer
17 | ! foo:vectors = one of [none,u:v]
18 | ! foo:lev_dimname: = one of [null,name of level dimenion name]
19 | ! foo:offset = integer
20 | ! As an example:
21 | ! foo:year_first = 1950
22 | ! would change the stream year_first stream_entry to 1950 for the foo stream block
23 | ! NOTE: multi-line inputs are enabled by adding a \ at the end of the line
24 | ! As an emaple:
25 | ! foo:datafiles=foo1,foo2, \
26 | ! foo3
27 | ! Will yield the following new entry for datafiles in stream foo
28 | !
29 | ! foo1
30 | ! foo2
31 | ! foo3
32 | !
33 | !------------------------------------------------------------------------
34 |
--------------------------------------------------------------------------------
/share/shr_precip_mod.F90:
--------------------------------------------------------------------------------
1 | module shr_precip_mod
2 |
3 | ! This module contains methods for manipulating precipitation quantities
4 |
5 | use shr_kind_mod, only : r8 => SHR_KIND_R8
6 |
7 | implicit none
8 | private
9 | save
10 |
11 | ! determine a rain-snow partitioning using a ramp method based on temperature
12 | public :: shr_precip_partition_rain_snow_ramp
13 |
14 | contains
15 |
16 | !-----------------------------------------------------------------------
17 | subroutine shr_precip_partition_rain_snow_ramp(temperature, frac_rain)
18 | !
19 | ! !DESCRIPTION:
20 | ! Determine a rain-snow partitioning using a ramp method based on temperature.
21 | !
22 | ! Returns fractional mass of precipitation falling as rain. The rest (1 - frac_rain)
23 | ! falls as snow.
24 | !
25 | ! This is meant to be used for precipitation at the surface, e.g., to force CLM.
26 | !
27 | ! !USES:
28 | use shr_const_mod, only : SHR_CONST_TKFRZ
29 | !
30 | ! !ARGUMENTS:
31 | real(r8), intent(in) :: temperature ! temperature (K)
32 | real(r8), intent(out) :: frac_rain ! fraction of precipitation falling as rain
33 | !
34 | ! !LOCAL VARIABLES:
35 |
36 | character(len=*), parameter :: subname = 'shr_precip_partition_rain_snow_ramp'
37 | !-----------------------------------------------------------------------
38 |
39 | ! ramp near freezing
40 | frac_rain = (temperature - SHR_CONST_TKFRZ) * 0.5_r8
41 |
42 | ! bound in [0,1]
43 | frac_rain = min(1.0_r8,max(0.0_r8,frac_rain))
44 |
45 | end subroutine shr_precip_partition_rain_snow_ramp
46 |
47 | end module shr_precip_mod
48 |
--------------------------------------------------------------------------------
/datm/cime_config/user_nl_datm_streams:
--------------------------------------------------------------------------------
1 | !------------------------------------------------------------------------
2 | ! This file is used to modify datm.streams.xml generated in $RUNDIR
3 | ! Entries should have the form
4 | ! := (NO Quotes!!!)
5 | ! The following are accepted values for a stream named foo
6 | ! foo:meshfile = character string
7 | ! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...)
8 | ! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...)
9 | ! foo:taxmode = one of [cycle, extend, limit]
10 | ! foo:tintalgo = one of [lower,upper,nearest,linear,coszen]
11 | ! foo:readmode = single (only suported mode right now)
12 | ! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none]
13 | ! foo:dtlimit = real (1.5 is default)
14 | ! foo:year_first = integer
15 | ! foo:year_last = integer
16 | ! foo:year_align = integer
17 | ! foo:vectors = null or the names of the vector fields in the model (i.e. Sa_u:Sa_v)
18 | ! foo:lev_dimname: = one of [null,name of level dimenion name]
19 | ! foo:offset = integer
20 | ! As an example:
21 | ! foo:year_first = 1950
22 | ! would change the stream year_first stream_entry to 1950 for the foo stream block
23 | ! NOTE: multi-line inputs are enabled by adding a \ at the end of the line
24 | ! As an emaple:
25 | ! foo:datafiles=foo1,foo2, \
26 | ! foo3
27 | ! Will yield the following new entry for datafiles in stream foo
28 | !
29 | ! foo1
30 | ! foo2
31 | ! foo3
32 | !
33 | !------------------------------------------------------------------------
34 |
--------------------------------------------------------------------------------
/dwav/cime_config/config_component.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
13 |
14 | Data wave model (DWAV)
15 | climatological mode
16 |
17 |
18 |
19 | char
20 | dwav
21 | dwav
22 | case_comp
23 | env_case.xml
24 | Name of wave component
25 |
26 |
27 |
28 | char
29 | CLIMO
30 | CLIMO
31 |
32 | CLIMO
33 |
34 | run_component_dwav
35 | env_run.xml
36 | DWAV mode
37 |
38 |
39 |
40 | logical
41 | TRUE,FALSE
42 | FALSE
43 | run_component_dwav
44 | env_run.xml
45 | If set to true, than dwav restarts will not be read on a continuation run.
46 |
47 |
48 |
49 |
50 | =========================================
51 | DWAV naming conventions
52 | =========================================
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/dglc/cime_config/stream_definition_dglc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | unset
21 |
22 |
23 | unset
24 |
25 |
26 | unset unset
27 |
28 | null
29 |
30 | bilinear
31 |
32 | null
33 | 0
34 | 0
35 | 0
36 | 0
37 |
38 | lower
39 |
40 |
41 | cycle
42 |
43 |
44 | 1.5
45 |
46 | single
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/cime_config/buildlib_comps:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | """
4 | build cime component model library. This buildlib script is used by all CDEPS components.
5 | """
6 |
7 | import sys, os
8 |
9 | _CIMEROOT = os.environ.get("CIMEROOT")
10 | if _CIMEROOT is None:
11 | raise SystemExit("ERROR: must set CIMEROOT environment variable")
12 | sys.path.append(os.path.join(_CIMEROOT, "CIME", "Tools"))
13 |
14 | _LIBDIR = os.path.join(_CIMEROOT, "CIME")
15 | sys.path.append(_LIBDIR)
16 |
17 | from standard_script_setup import *
18 | from CIME.buildlib import parse_input
19 | from CIME.case import Case
20 | from CIME.utils import run_cmd, symlink_force, expect
21 |
22 | # pragma pylint: disable=unused-argument,undefined-variable
23 |
24 | logger = logging.getLogger(__name__)
25 |
26 |
27 | def buildlib(bldroot, libroot, case, compname=None):
28 | if not compname:
29 | expect(
30 | bldroot.endswith("obj"),
31 | "It appears that buildlib_comps is being called for the main CDEPS build\n"
32 | "(the main CDEPS build should use buildlib, not buildlib_comps)",
33 | )
34 | compname = os.path.basename(os.path.abspath(os.path.join(bldroot, os.pardir)))
35 |
36 | _, o, e = run_cmd("make d{}".format(compname), from_dir=bldroot, verbose=True)
37 | libname = "lib{}.a".format(compname)
38 | dlibname = "libd{}.a".format(compname)
39 | dlibpath = os.path.join(bldroot, dlibname)
40 | if os.path.exists(dlibpath):
41 | symlink_force(os.path.join(bldroot, dlibname), os.path.join(libroot, libname))
42 | else:
43 | expect(False, "ERROR in {} build {} {}".format(compname, o, e))
44 | logger.info(f"build successful for comp={compname}")
45 |
46 |
47 | def _main_func(args):
48 | caseroot, libroot, bldroot = parse_input(args)
49 | with Case(caseroot) as case:
50 | buildlib(bldroot, libroot, case)
51 |
52 |
53 | if __name__ == "__main__":
54 | _main_func(sys.argv)
55 |
--------------------------------------------------------------------------------
/cmake/FindESMF.cmake:
--------------------------------------------------------------------------------
1 |
2 | if (DEFINED ENV{ESMFMKFILE})
3 | message("ESMFMKFILE: $ENV{ESMFMKFILE}")
4 | else()
5 | message(FATAL_ERROR "ESMFMKFILE env variable is not defined")
6 | endif()
7 |
8 | set(ESMFMKFILE $ENV{ESMFMKFILE})
9 |
10 | # convert esmf.mk makefile variables to cmake variables until ESMF
11 | # provides proper cmake package
12 | file(STRINGS ${ESMFMKFILE} esmf_mk_text)
13 | foreach(line ${esmf_mk_text})
14 | string(REGEX REPLACE "^[ ]+" "" line ${line}) # strip leading spaces
15 | if (line MATCHES "^ESMF_*") # process only line starting with ESMF_
16 | string(REGEX MATCH "^ESMF_[^=]+" esmf_name ${line})
17 | string(REPLACE "${esmf_name}=" "" emsf_value ${line})
18 | set(${esmf_name} "${emsf_value}")
19 | endif()
20 | endforeach()
21 | string(REPLACE "-I" "" ESMF_F90COMPILEPATHS ${ESMF_F90COMPILEPATHS})
22 | string(REPLACE " " ";" ESMF_F90COMPILEPATHS ${ESMF_F90COMPILEPATHS})
23 |
24 | # We use only these 4 variables in our build system. Make sure they are all set
25 | if(ESMF_VERSION_MAJOR AND
26 | ESMF_F90COMPILEPATHS AND
27 | ESMF_F90ESMFLINKRPATHS AND
28 | ESMF_F90ESMFLINKLIBS)
29 | message(" Found ESMF:")
30 | message("ESMF_VERSION_MAJOR: ${ESMF_VERSION_MAJOR}")
31 | message("ESMF_F90COMPILEPATHS: ${ESMF_F90COMPILEPATHS}")
32 | message("ESMF_F90ESMFLINKRPATHS: ${ESMF_F90ESMFLINKRPATHS}")
33 | message("ESMF_F90ESMFLINKLIBS: ${ESMF_F90ESMFLINKLIBS}")
34 | else()
35 | message("One of the ESMF_ variables is not defined")
36 | endif()
37 |
38 | include(FindPackageHandleStandardArgs)
39 | find_package_handle_standard_args(ESMF
40 | FOUND_VAR
41 | ESMF_FOUND
42 | REQUIRED_VARS
43 | ESMF_F90COMPILEPATHS
44 | ESMF_F90ESMFLINKRPATHS
45 | ESMF_F90ESMFLINKLIBS
46 | VERSION_VAR
47 | ESMF_VERSION_STRING)
48 |
--------------------------------------------------------------------------------
/datm/setservices.inc:
--------------------------------------------------------------------------------
1 | subroutine SetServices(gcomp, rc)
2 | type(ESMF_GridComp) :: gcomp
3 | integer, intent(out) :: rc
4 |
5 | ! local variables
6 | character(len=*),parameter :: subname=trim(modName)//':(SetServices) '
7 | !-------------------------------------------------------------------------------
8 |
9 | rc = ESMF_SUCCESS
10 | call ESMF_LogWrite(subname//' called', ESMF_LOGMSG_INFO)
11 |
12 | ! the NUOPC gcomp component will register the generic methods
13 | call NUOPC_CompDerive(gcomp, model_routine_SS, rc=rc)
14 | if (ChkErr(rc,__LINE__,u_FILE_u)) return
15 |
16 | ! switching to IPD versions
17 | call ESMF_GridCompSetEntryPoint(gcomp, ESMF_METHOD_INITIALIZE, &
18 | userRoutine=dshr_model_initphase, phase=0, rc=rc)
19 | if (ChkErr(rc,__LINE__,u_FILE_u)) return
20 |
21 | ! set entry point for methods that require specific implementation
22 | call NUOPC_CompSetEntryPoint(gcomp, ESMF_METHOD_INITIALIZE, &
23 | phaseLabelList=(/"IPDv01p1"/), userRoutine=InitializeAdvertise, rc=rc)
24 | if (ChkErr(rc,__LINE__,u_FILE_u)) return
25 |
26 | call NUOPC_CompSetEntryPoint(gcomp, ESMF_METHOD_INITIALIZE, &
27 | phaseLabelList=(/"IPDv01p3"/), userRoutine=InitializeRealize, rc=rc)
28 | if (ChkErr(rc,__LINE__,u_FILE_u)) return
29 |
30 | ! attach specializing method(s)
31 | call NUOPC_CompSpecialize(gcomp, specLabel=model_label_Advance, specRoutine=ModelAdvance, rc=rc)
32 | if (ChkErr(rc,__LINE__,u_FILE_u)) return
33 |
34 | call ESMF_MethodRemove(gcomp, label=model_label_SetRunClock, rc=rc)
35 | if (ChkErr(rc,__LINE__,u_FILE_u)) return
36 | call NUOPC_CompSpecialize(gcomp, specLabel=model_label_SetRunClock, specRoutine=dshr_set_runclock, rc=rc)
37 | if (ChkErr(rc,__LINE__,u_FILE_u)) return
38 |
39 | call NUOPC_CompSpecialize(gcomp, specLabel=model_label_Finalize, specRoutine=ModelFinalize, rc=rc)
40 | if (ChkErr(rc,__LINE__,u_FILE_u)) return
41 |
42 | call ESMF_LogWrite(subname//' done', ESMF_LOGMSG_INFO)
43 |
44 | end subroutine SetServices
45 |
--------------------------------------------------------------------------------
/doc/source/_static/pop_ver.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | /* For a URL that looks like
3 | https://blah.github.io/versions/VERSIONFOO/html/bar/index.html, set cur_version_dir to
4 | 'VERSIONFOO' (i.e., the portion of the path following 'versions').
5 | */
6 | var proj_end = document.baseURI.indexOf("versions") + 9;
7 | var end = document.baseURI.indexOf("/", proj_end);
8 | var cur_version_dir = document.baseURI.substring(proj_end, end);
9 | var mylist = $("#version-list");
10 | mylist.empty();
11 | $.getJSON(version_json_loc, function(data) {
12 | if (data.hasOwnProperty(cur_version_dir)) {
13 | /* First add the current version so that it appears first in the drop-down
14 | menu and starts as the selected element of the menu. If you click on the
15 | current version, you should stay at the current page.
16 |
17 | The conditional around this block should generally be true, but we check it
18 | just in case the current version is missing from the versions.json file for
19 | some reason.
20 | */
21 | cur_version_name = data[cur_version_dir];
22 | mylist.append($("