• Stars
    star
    313
  • Rank 130,663 (Top 3 %)
  • Language
    Python
  • License
    Other
  • Created over 6 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Community Earth System Model

The Community Earth System Model

See the CESM web site for documentation and information:

http://www.cesm.ucar.edu

The CESM Quickstart Guide is available at:

http://escomp.github.io/cesm

This repository provides tools for managing the external components that make up a CESM tag - alpha, beta and release. CESM tag creation should be coordinated through CSEG at NCAR.

This repository is also connected to slack at http://cesm2.slack.com

1   Software requirements

1.1   Software requirements for installing, building and running CESM

Installing, building and running CESM requires:

  • a Unix-like operating system (Linux, AIX, OS X, etc.)
  • git client version 1.8 or newer
  • subversion client (we have tested with versions 1.6.11 and newer)
  • python3 version 3.6 or newer
  • perl version 5
  • build tools gmake and cmake
  • Fortran and C compilers
  • LAPACK and BLAS libraries
  • a NetCDF library version 4.3 or newer built with the same compiler you will use for CESM
    • a PnetCDF library is optional
  • a functioning MPI environment (unless you plan to run on a single core with the CIME mpi-serial library)

1.2   Details on Fortran compiler versions

The Fortran compiler must support Fortran 2003 features. However, even among mainstream Fortran compilers that claim to support Fortran 2003, we have found numerous bugs. Thus, many compiler versions do not build or run CESM properly (see https://wiki.ucar.edu/display/ccsm/Fortran+Compiler+Bug+List for more details on older Fortran compiler versions).

CESM2 is tested on several different systems with newer Fortran compilers: Please see CESM Compiler/Machine Tests for a spreadsheet of the current results.

1.3   More details on porting CESM

For more details on porting CESM to a new machine, see http://esmci.github.io/cime/users_guide/porting-cime.html

2   Obtaining the full model code and associated scripting infrastructure

CESM is now released via github. You will need some familiarity with git in order to modify the code and commit these changes. However, to simply checkout and run the code, no git knowledge is required other than what is documented in the following steps.

To obtain the CESM code you need to do the following:

  1. Clone the repository.

    git clone https://github.com/escomp/cesm.git my_cesm_sandbox
    

    This will create a directory my_cesm_sandbox/ in your current working directory.

  2. Go into the newly created CESM repository and determine what version of CESM you want. To see what cesm tags are available, simply issue the git tag command.

    cd my_cesm_sandbox
    git tag
    
  3. Do a git checkout of the tag you want. If you want to checkout release-cesm2.1.2, you would issue the following.

    git checkout release-cesm2.1.2
    

    (It is normal and expected to get a message about being in 'detached HEAD' state. For now you can ignore this, but it becomes important if you want to make changes to your Externals.cfg file and commit those changes to a branch.)

  4. Run the script manage_externals/checkout_externals.

    ./manage_externals/checkout_externals
    

    The checkout_externals script is a package manager that will populate the cesm directory with the relevant versions of each of the components along with the CIME infrastructure code.

At this point you have a working version of CESM.

To see full details of how to set up a case, compile and run, see the CIME documentation at http://esmci.github.io/cime/ .

2.1   More details on checkout_externals

The file Externals.cfg in your top-level CESM directory tells checkout_externals which tag/branch of each component should be brought in to generate your sandbox. (This file serves the same purpose as SVN_EXTERNAL_DIRECTORIES when CESM was in a subversion repository.)

NOTE: Just like svn externals, checkout_externals will always attempt to make the working copy exactly match the externals description. For example, if you manually modify an external without updating Externals.cfg, (e.g. switch to a different tag), then rerunning checkout_externals will automatically restore the externals described in Externals.cfg. See below documentation Customizing your CESM sandbox for more details.

You need to rerun checkout_externals whenever Externals.cfg has changed (unless you have already manually updated the relevant external(s) to have the correct branch/tag checked out). Common times when this is needed are:

  • After checking out a new CESM branch/tag
  • After merging some other CESM branch/tag into your currently checked-out branch

checkout_externals must be run from the root of the source tree. For example, if you cloned CESM with:

git clone https://github.com/escomp/cesm.git my_cesm_sandbox

then you must run checkout_externals from /path/to/my_cesm_sandbox.

To see more details of checkout_externals, issue

./manage_externals/checkout_externals --help

3   Customizing your CESM sandbox

There are several use cases to consider when you want to customize or modify your CESM sandbox.

3.1   Switching to a different CESM tag

If you have already checked out a tag and HAVE NOT MADE ANY MODIFICATIONS it is simple to change your sandbox. Say that you checked out release-cesm2.1.2 but really wanted to have release-cesm2.1.3; you would simply do the following:

git checkout release-cesm2.1.3
./manage_externals/checkout_externals

You should not use this method if you have made any source code changes, or if you have any ongoing CESM cases that were created from this sandbox. In these cases, it is often easiest to do a second git clone.

3.2   Pointing to a different version of a component

Each entry in Externals.cfg has the following form (we use CAM as an example below):

[cam]
tag = trunk_tags/cam5_4_143/components/cam
protocol = svn
repo_url = https://svn-ccsm-models.cgd.ucar.edu/cam1
local_path = components/cam
required = True

Each entry specifies either a tag or a branch. To point to a new tag:

  1. Modify the relevant entry/entries in Externals.cfg (e.g., changing cam5_4_143 to cam5_4_144 above)

  2. Checkout the new component(s):

    ./manage_externals/checkout_externals
    

Keep in mind that changing individual components from a tag may result in an invalid model (won't compile, won't run, not scientifically meaningful) and is unsupported.

3.2.1   Committing your change to Externals.cfg

After making this change, it's a good idea to commit the change in your local CESM git repository. First create a CESM branch in your local repository, then commit it. (Unlike with subversion, branches are stored locally unless you explicitly push them up to github. Feel free to create whatever local branches you'd like.) For example:

git checkout -b my_cesm_branch
git add Externals.cfg
git commit -m "Update CAM to cam5_4_144"

3.3   Modifying a component

If you'd like to modify a component via a branch and point to that branch in your CESM sandbox, use the following procedure (again, using CAM as an example):

  1. Create a CAM branch. Since CAM originates from a subversion repository, you will first need to create a branch in that repository. Let's assume you have created this branch and called it my_branch.

  2. Update Externals.cfg to point to your branch. You can replace the tag entry with a branch entry, as follows:

    [cam]
    branch = branches/my_branch/components/cam
    protocol = svn
    repo_url = https://svn-ccsm-models.cgd.ucar.edu/cam1
    local_path = components/cam
    required = True
    
  3. Checkout your branch:

    ./manage_externals/checkout_externals
    

It's a good idea to commit your Externals.cfg file changes. See the above documentation, Committing your change to Externals.cfg.

4   Developer setup

Developers who have not already done so should follow the recommended one-time setup directions for git. Developers may also want to set up ssh keys and switch to using the [email protected]:ESCOMP/cesm.git form of the github URLs.

More Repositories

1

CTSM

Community Terrestrial Systems Model (includes the Community Land Model of CESM)
Fortran
281
star
2

CAM

Community Atmosphere Model
70
star
3

mizuRoute

Reach-based river routing model
Fortran
39
star
4

CMEPS

NUOPC Community Mediator for Earth Prediction Systems
Fortran
21
star
5

CDEPS

Community Data Models for Earth Prediction Systems
Fortran
16
star
6

SimpleLand

Simple Land Model for CESM --- *** IN DEVELOPMENT *** --- please contact for more info. See supplemental information of https://journals.ametsoc.org/doi/abs/10.1175/JCLI-D-18-0812.1 for a description of SLIM physics. Implementation of SLIM into the main CESM trunk is ongoing. SLIM currently works with the CESM2.1 release, but must be downloaded from this repository until we finish implementing it properly into the main CESM code.
Fortran
12
star
7

ESCOMP-Containers

Containerized versions of ESCOMP software (eg, CESM)
Fortran
10
star
8

PUMAS

Parameterization for Unified Microphysics Across Scales
Fortran
8
star
9

MOSART

Model for Scale Adaptive River Transport, Mosart, part of the Community Earth System Model
Fortran
8
star
10

CISM

Community Ice Sheet Model
Fortran
6
star
11

PhysicalConstantsDictionary

YAML dictionary of physical constants and tools to create consistent constant sets for Earth System Models
Makefile
5
star
12

POP2-CESM

Parallel Ocean Program (POP2) in CESM
Fortran
4
star
13

MOM_interface

CESM interface to MOM Ocean Model
Jupyter Notebook
4
star
14

UFSCOMP

Unified Forecast System Community Portal
Python
3
star
15

atmospheric_physics

CCPP-enabled Atmospheric Physics
Fortran
3
star
16

CCPPStandardNames

Repository for community-accepted CCPP Standard Names and search tools
Python
3
star
17

CISM-wrapper

Community Ice Sheet Model wrapper for CESM
Fortran
3
star
18

CARMA

Stand-alone tests for the CARMA aerosol model
Fortran
3
star
19

CESM-landice-diagnostics

Repository for development of the LIWG glacier model diagnostics package.
Jupyter Notebook
2
star
20

CAM-SIMA

Community Atmosphere Model - System for Integrated Modeling of the Atmosphere
2
star
21

ctsm-docs

Builds of the CTSM documentation
HTML
2
star
22

CARMA_base

Fortran
2
star
23

CESM_CICE

This is the CESM/CIME wrapper to the CICE Consortium model. This should work with CICE6 and newer.
Python
2
star
24

cism-docs

Builds of the CISM documentation
HTML
2
star
25

SILHS_CESM

CESM versions of SILHS
Fortran
1
star
26

PTCLM

PTCLM - tool to set up PoinT CLM simulations
Python
1
star
27

CDOC

Community Diagnostic Output Component
Fortran
1
star
28

CESM_CPL7andDataComps

cpl7 data models
Fortran
1
star
29

CESM_CICE5

CESM2 Version of CICE
Fortran
1
star
30

ImplictCouplingXGrid

Application demonstrating ESMF exchange grid with implicit atmosphere-land coupling
Fortran
1
star
31

SOCRATES_interface

Fortran
1
star
32

HEMCO_CESM

CESM/CAM interface to modular HEMCO chemistry emissions module
Fortran
1
star
33

CLUBB_CESM

CESM version of CLUBB
Fortran
1
star
34

RTM

River Transport Model, RTM, part of the Community Earth System Model
Fortran
1
star
35

CESM_share

CESM shared code
Fortran
1
star