The Community Earth System Model
Composed of separate models simultaneously simulating the Earth's atmosphere, ocean, land, river run-off, land-ice, and sea-ice, plus one central coupler/moderator component, it allows researchers to conduct fundamental research into the Earth's past, present, and future climate states.
https://github.com/escomp/cesm
Category: Climate Change
Sub Category: Earth and Climate Modeling
Keywords
climate climate-model ncar
Keywords from Contributors
climate-science e3sm snl-applications cesm earth-system-model datamodeling land-surface-model land hydrology ecosystem
Last synced: about 16 hours ago
JSON representation
Repository metadata
The Community Earth System Model
- Host: GitHub
- URL: https://github.com/escomp/cesm
- Owner: ESCOMP
- License: other
- Created: 2017-11-15T18:10:55.000Z (about 8 years ago)
- Default Branch: cesm3.0-alphabranch
- Last Pushed: 2025-10-21T14:42:58.000Z (2 months ago)
- Last Synced: 2025-10-23T16:45:04.167Z (2 months ago)
- Topics: climate, climate-model, ncar
- Language: Python
- Homepage: http://www.cesm.ucar.edu/
- Size: 21.6 MB
- Stars: 423
- Watchers: 35
- Forks: 221
- Open Issues: 35
- Releases: 14
-
Metadata Files:
- Readme: README.rst
- Changelog: ChangeLog
- License: LICENSE.txt
README.rst
==================================
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
.. sectnum::
.. contents::
Software requirements
=====================
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
* python3 version 3.8 or newer
* perl version 5
* build tools gmake and cmake
* Fortran and C compilers
* See `Details on Fortran compiler versions`_ below for more information
* 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, but recommended
* a functioning MPI environment (unless you plan to run on a single core
with the CIME mpi-serial library)
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.
More details on porting CESM
----------------------------
For more details on porting CESM to a new machine, see
http://esmci.github.io/cime/versions/master/html/users_guide/porting-cime.html
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:
#. 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.
#. 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
#. Do a git checkout of the tag you want. If you want to checkout cesm3_0_beta02, you would issue the following. ::
git checkout cesm3_0_beta02
(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.)
#. Run the script **bin/git-fleximod update**. ::
./bin/git-fleximod update
The **git fleximod** script is a git extension 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/ .
More details on git fleximod
----------------------------------
The file **.gitmodules** in your top-level CESM directory tells
**git fleximod** which tag/branch of each component should be
brought in to generate your sandbox.
NOTE: git fleximod will always attempt
to make the working copy exactly match the externals description. For
example, if you manually modify an external without updating .gitmodules,
(e.g. switch to a different tag), then rerunning git fleximod
will warn you and can restore the original version by using the --force option
below documentation `Customizing your CESM sandbox`_ for more details.
**You need to rerun git-fleximod update whenever .gitmodules 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
To see more details of **git-fleximod**, issue ::
./bin/git-fleximod --help
Customizing your CESM sandbox
=============================
There are several use cases to consider when you want to customize or modify your CESM sandbox.
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 cesm3_0_beta01 but really wanted to have cesm3_0_beta02
you would simply do the following::
git checkout cesm3_0_beta02
./bin/git-fleximod update
You should **not** use this method 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**.
Pointing to a different version of a component
----------------------------------------------
Each entry in **.gitmodules** has the following form (we use CAM as an
example below)::
[submodule "cam"]
path = components/cam
url = https://www.github.com/ESCOMP/CAM
fxDONOTUSEurl = https://www.github.com/ESCOMP/CAM
fxtag = cam6_4_016
fxrequired = ToplevelRequired
Each entry specifies either a tag or a hash. To point to a new tag:
#. Modify the relevant fxtag entry/entries in **.gitmodules** (e.g., changing
``cam6_4_016`` to ``cam6_4_017`` above)
#. Checkout the new component(s)::
./bin/git-fleximod update cam
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.
Committing your change to .gitmodules
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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. For example::
git checkout -b my_cesm_branch
git add .gitmodules components/cam
git commit -m "Update CAM to cam5_4_144"
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):
#. Create a CAM branch. Let's assume you have created this branch and called it
**my_branch**.
#. Update **.gitmodules** to point to a hash on your branch. You can replace the
**tag** entry with a **hash** entry, as follows, note that we have also changed the url to
point to a personal fork::
[submodule "cam"]
path = components/cam
url = https://www.github.com/mycamfork/CAM
fxDONOTUSEurl = https://www.github.com/ESCOMP/CAM
fxtag = 94eaf83
fxrequired = ToplevelRequired
#. Checkout your branch::
./bin/git-fleximod update cam
It's a good idea to commit your **.gitmodules** file changes. See the above
documentation, `Committing your change to .gitmodules`_.
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 ``git@github.com:ESCOMP/cesm.git`` form of the github URLs.
Owner metadata
- Name: Earth System Community Modeling Portal
- Login: ESCOMP
- Email:
- Kind: organization
- Description:
- Website: https://escomp.github.io/
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/33552285?v=4
- Repositories: 65
- Last ynced at: 2024-06-05T19:10:08.483Z
- Profile URL: https://github.com/ESCOMP
GitHub Events
Total
- Create event: 20
- Issues event: 5
- Release event: 3
- Watch event: 65
- Delete event: 3
- Issue comment event: 40
- Push event: 142
- Gollum event: 1
- Pull request review comment event: 9
- Pull request review event: 45
- Pull request event: 98
- Fork event: 20
Last Year
- Create event: 19
- Issues event: 5
- Release event: 3
- Watch event: 63
- Delete event: 3
- Issue comment event: 40
- Push event: 139
- Gollum event: 1
- Pull request review comment event: 9
- Pull request review event: 43
- Pull request event: 95
- Fork event: 20
Committers metadata
Last synced: about 2 months ago
Total Commits: 1,206
Total Committers: 24
Avg Commits per committer: 50.25
Development Distribution Score (DDS): 0.605
Commits in past year: 142
Committers in past year: 8
Avg Commits per committer in past year: 17.75
Development Distribution Score (DDS) in past year: 0.535
| Name | Commits | |
|---|---|---|
| Chris Fischer | f****r@u****u | 476 |
| Jim Edwards | j****s@u****u | 345 |
| Bill Sacks | s****s@u****u | 125 |
| Ben Andre | b****e@g****m | 95 |
| Ben Andre | a****e@u****u | 57 |
| Alice Bertini | a****b@u****u | 19 |
| Michael Levy | m****k@g****m | 16 |
| Steve Goldhaber | g****y@u****u | 12 |
| Negin Sobhani | n****3@g****m | 8 |
| mvertens | m****s@u****u | 8 |
| Erik Kluzek | e****k@u****u | 7 |
| Francis Vitt | f****t@u****u | 6 |
| Chris A. Fischer | f****r@i****u | 6 |
| alperaltuntas | a****s@g****m | 5 |
| Chris A. Fischer | f****r@i****u | 5 |
| Katetc | k****c@u****u | 3 |
| Sam Rabin | s****n@u****u | 3 |
| allibco | a****r@u****u | 3 |
| Chris A. Fischer | f****r@h****u | 2 |
| Brian Dobbins | b****s@g****m | 1 |
| Jian Sun | s****n@u****u | 1 |
| Chris Fischer | c****r@e****v | 1 |
| Alper Altuntas | a****s@c****u | 1 |
| Paul Hansel | g****b@p****m | 1 |
Committer domains:
- ucar.edu: 13
- paulhansel.com: 1
- cheyenne5.ib0.cheyenne.ucar.edu: 1
- edison10.nersc.gov: 1
- hobart.cgd.ucar.edu: 1
- izumi.unified.ucar.edu: 1
- izumi.cgd.ucar.edu: 1
Issue and Pull Request metadata
Last synced: about 2 months ago
Total issues: 101
Total pull requests: 325
Average time to close issues: 8 months
Average time to close pull requests: 9 days
Total issue authors: 25
Total pull request authors: 22
Average comments per issue: 2.88
Average comments per pull request: 1.07
Merged pull request: 265
Bot issues: 0
Bot pull requests: 12
Past year issues: 3
Past year pull requests: 104
Past year average time to close issues: about 1 hour
Past year average time to close pull requests: 4 days
Past year issue authors: 3
Past year pull request authors: 9
Past year average comments per issue: 2.0
Past year average comments per pull request: 0.48
Past year merged pull request: 74
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- billsacks (33)
- ekluzek (19)
- jedwards4b (15)
- kdraeder (5)
- mnlevy1981 (3)
- bertinia (3)
- cacraigucar (3)
- fischer-ncar (2)
- bandre-ucar (2)
- mboisson (1)
- drmikemills (1)
- gold2718 (1)
- Katetc (1)
- GilbertCloud (1)
- s449f (1)
Top Pull Request Authors
- fischer-ncar (117)
- jedwards4b (79)
- billsacks (47)
- dependabot[bot] (12)
- ekluzek (11)
- mnlevy1981 (11)
- bertinia (10)
- fvitt (9)
- bandre-ucar (4)
- klindsay28 (3)
- briandobbins (3)
- nanr (3)
- alperaltuntas (3)
- RafaPedroFernandez (2)
- phansel (2)
Top Issue Labels
- enhancement (25)
- documentation (14)
- bug (10)
- wontfix (9)
- moved (2)
- question (2)
- Responsibility: CTSM (2)
Top Pull Request Labels
- documentation (15)
- dependencies (12)
- run-pr-tests (8)
- enhancement (7)
- bug (1)
Dependencies
- autopep8 >=1.3.0
- coverage >=4.4.0
- coveralls >=1.2.0
- pylint >=1.7.0
- sphinx >=1.6.0
Score: 9.304923014462132