https://github.com/clima/climacoupler.jl

ClimaCoupler: bringing atmosphere, land, and ocean together

https://github.com/clima/climacoupler.jl

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    6 of 13 committers (46.2%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.6%) to scientific vocabulary

Keywords from Contributors

climate land-surface-model land fluid-dynamics data-assimilation climate-change julialang earth-system-model oceanography meteorology
Last synced: 9 months ago · JSON representation

Repository

ClimaCoupler: bringing atmosphere, land, and ocean together

Basic Info
Statistics
  • Stars: 35
  • Watchers: 5
  • Forks: 7
  • Open Issues: 107
  • Releases: 3
Created over 5 years ago · Last pushed 10 months ago
Metadata Files
Readme Changelog License Notice

README.md

ClimaCoupler.jl

ClimaCoupler.jl provides coupled system time stepping control and support for mapping import and export boundary information between components. It can handle atmosphere, ocean, land, and sea ice component models, and the source code is agnostic to the internals of these component models.

ClimaCoupler.jl contains a directory experiments/ClimaEarth/ which contains additional infrastructure to run coupled AMIP experiments using component models from ClimaAtmos.jl and ClimaLand.jl. This includes machinery for visualizing output in the user_io/ folder, and component model-specific initialization, access, and other helper functions in the components/ folder, which will soon be moved to the respective component model packages.

Additional smaller coupling examples can be found in the experiments/ClimaCore/ directory. These are meant to serve as an introduction to coupling and the types of functionality required for it.

||| |---------------------:|:-----------------------------------------------| | Documentation | dev docs build| | Unit Tests | unit tests codecov| | Downloads | downloads| |||

Recommended Julia Version: Stable release v1.11.1. CI tests Julia v1.10 and 1.11.

Running AMIP

Here we will focus on the AMIP experiment, which uses the environment in the experiments/ClimaEarth/ subdirectory of ClimaCoupler.jl The first step to do this is to install all required packages for the environment using the following Julia command: julia julia --project=experiments/ClimaEarth -E "using Pkg; Pkg.instantiate(); Pkg.build()"

Now you're ready to run the experiment, which uses the run_amip.jl driver. To run interactively: julia --project=experiments/ClimaEarth julia> include("experiments/ClimaEarth/run_amip.jl")

Or to run from the terminal: julia julia --project=experiments/ClimaEarth experiments/ClimaEarth/run_amip.jl

When running from the terminal, you can also specify a configuration file to use for the simulation setup, and a job ID to keep track of this run's output. Existing configuration files are specified in the config/ directory within ClimaCoupler.jl. For example, to run the default AMIP configuration, you could use the following command: julia julia --project=experiments/ClimaEarth experiments/ClimaEarth/run_amip.jl --config_file config/ci_configs/amip_default.yml --job_id amip_default

Output from your run will be saved in the folder experiments/ClimaEarth/output/<job_id>/. If no configuration file is specified, the default amip_default.yml will be used, and output will be saved in experiments/ClimaEarth/output/amip_default/.

The output will take up approximately 1GB of space, and the simulation will take around 10 minutes to run on a single CPU, or less time on multiple CPUs or GPU.

Note: If you want to set the configuration file to something other than the default while running the driver interactively, you'll need to manually set the value for config_file.

For example, to use the configuration file found at config/ci_configs/amip_default.yml, you would set config_file as follows in the run_amip driver: config_file = "config/ci_configs/amip_default.yml"

A Note about ClimaComms and MPI

If you don't intend to run your simulation using MPI, but you see an error about MPI and your simulation crashes, ClimaComms may be incorrectly selecting the configuration for your run. In this case, you can force ClimaComms to ignore MPI with export CLIMACOMMS_CONTEXT="SINGLETON" from the terminal, or ENV["CLIMACOMMS_CONTEXT"]="SINGLETON" from within the Julia environment before running the experiment.

Sometimes this happens when you are running in an interactive SLURM session.

Running on GPU or with MPI

CUDA.jl and MPI.jl packages

CUDA.jl and MPI.jl are required to run ClimaCoupler's AMIP experiment on GPU and in parallel (with MPI), respectively. Not every machine is capable of running on GPU or with MPI, and the AMIP experiment can be run on CPU without these packages, so they aren't included in the ClimaCoupler AMIP experiment environment. This means that if you want to run our driver using these capabilities (locally or remotely), you should install CUDA and MPI in your machine's base Julia environment. This will make the packages available to the AMIP experiment environment, as it is a sub-environment of the base environment. If you wish to run the AMIP experiment with GPU or MPI locally as well as remotely, this process must be done on each machine you want to run on.

This can be done using the following command in the terminal from any directory: julia julia -E "using Pkg; Pkg.add(\"MPI\")"

Now, if you enter your base environment by running julia and then check the packages with ] st, you should see something like: (@v1.10) pkg> st Status `~/.julia/environments/v1.10/Project.toml` [<hash>] CUDA vX.Y.Z [<hash>] MPI vX.Y.Z

Environment variables

Additionally, there are some environment variables we must set in these cases.

To run on GPU, we need to run export CLIMACOMMS_DEVICE="CUDA" in the terminal, or ENV["CLIMACOMMS_DEVICE]="CUDA" within the Julia environment before running the experiment.

To run with MPI, we need to run export CLIMACOMMS_CONTEXT="MPI" in the terminal, or ENV["CLIMACOMMS_CONTEXT]="MPI" within the Julia environment before running the experiment.

Caltech users: Running AMIP remotely

The main difference between running code locally vs running remotely is the module loading step. CliMA uses ClimaModules to coordinate the modules needed to run CliMA code on Caltech's clusters.

On Central, you can load the appropriate module package by running the following in the terminal: export MODULEPATH="/groups/esm/modules:$MODULEPATH" module load climacommon

Remember: This should be done after requesting a compute node, using the command srun --pty -t 01:00:00 -p expansion bash or similar

On clima, you can load the appropriate module package by running the following in the terminal: module load common

For additional information about these clusters, including how to gain access for the first time, see our slurm-buildkite wiki pages for Central and clima.

Running Slabplanet

The run_amip.jl driver contains two modes: the full AMIP mode and a Slabplanet mode, where all surfaces are thermal slabs. Since AMIP is not a closed system, the Slabplanet mode is useful for checking conservation properties of the coupling.

Running a Slabplanet simulation is the same as running an AMIP simulation, except for the specifics of the configuration file provided, so all information from the Running AMIP section will apply here too. Note that the default configuration used by run_amip.jl specifies an AMIP simulation, so a configuration file must be specified to run a Slabplanet simulation. This can be done as follows: julia julia --project=experiments/ClimaEarth experiments/ClimaEarth/run_amip.jl --config_file config/ci_configs/slabplanet_default.yml --job_id slabplanet_default

To ensure that conservation is tracked throughout the experiment, the energy_check field of the configuration file must be set to true.

Owner

  • Name: Climate Modeling Alliance
  • Login: CliMA
  • Kind: organization
  • Email: clima@caltech.edu

An alliance of scientists, engineers and applied mathematicians, dedicated to pioneering a new, data-informed approach to climate modeling

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 341
  • Total Committers: 13
  • Avg Commits per committer: 26.231
  • Development Distribution Score (DDS): 0.648
Past Year
  • Commits: 128
  • Committers: 8
  • Avg Commits per committer: 16.0
  • Development Distribution Score (DDS): 0.602
Top Committers
Name Email Commits
Ben Mackay j****y@c****u 120
LenkaNovak l****a@c****u 74
Julia Sloan j****n@c****u 61
Valeria Barra v****1@g****m 39
christophernhill c****h@m****u 12
Lenka Novakova l****a@L****l 10
CompatHelper Julia c****y@j****g 7
Gabriele Bozzola s****r@g****m 6
kmdeck k****k@c****u 4
Charles Kawczynski k****s@g****m 3
Lenka Novak l****k@L****l 2
Zhaoyi Shen 1****1 2
Lenka Novakova l****a@d****u 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 480
  • Total pull requests: 984
  • Average time to close issues: 2 months
  • Average time to close pull requests: 17 days
  • Total issue authors: 17
  • Total pull request authors: 22
  • Average comments per issue: 0.56
  • Average comments per pull request: 0.96
  • Merged pull requests: 667
  • Bot issues: 0
  • Bot pull requests: 81
Past Year
  • Issues: 185
  • Pull requests: 518
  • Average time to close issues: 19 days
  • Average time to close pull requests: 8 days
  • Issue authors: 10
  • Pull request authors: 16
  • Average comments per issue: 0.29
  • Average comments per pull request: 0.79
  • Merged pull requests: 400
  • Bot issues: 0
  • Bot pull requests: 9
Top Authors
Issue Authors
  • juliasloan25 (244)
  • LenkaNovak (132)
  • szy21 (30)
  • Sbozzolo (25)
  • valeriabarra (8)
  • akshaysridhar (6)
  • imreddyTeja (6)
  • waywardpidgeon (6)
  • nefrathenrici (4)
  • ph-kev (3)
  • sriharshakandala (3)
  • charleskawczynski (3)
  • kmdeck (3)
  • valentinaschueller (3)
  • trontrytel (2)
Pull Request Authors
  • juliasloan25 (378)
  • Sbozzolo (157)
  • szy21 (109)
  • LenkaNovak (81)
  • github-actions[bot] (73)
  • imreddyTeja (43)
  • akshaysridhar (29)
  • nefrathenrici (26)
  • ph-kev (21)
  • trontrytel (14)
  • dependabot[bot] (8)
  • charleskawczynski (7)
  • kmdeck (7)
  • anastasia-popova (7)
  • valeriabarra (7)
Top Labels
Issue Labels
:leaves: leaf (148) :moneybag: Grab Bag (77) enhancement (36) bug (33) :fire: Urgent (27) Dependencies :link: (24) GPU (22) :medal_sports: SDI (19) :pencil2: Plan (13) documentation (8) 🌊 CMIP (8) good first issue (6) Workflow ⚙️ 🌊 (2) 🌊 oceananigans (2) microphysics (1)
Pull Request Labels
Dependencies :link: (17) GPU (7) microphysics (6) bug (5) enhancement (4) :leaves: leaf (4) documentation (3) :moneybag: Grab Bag (2) dependencies (1) github_actions (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 11 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 4
juliahub.com: ClimaCoupler

ClimaCoupler: bringing atmosphere, land, and ocean together

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 11 Total
Rankings
Dependent repos count: 9.6%
Average: 24.1%
Dependent packages count: 38.7%
Last synced: 10 months ago

Dependencies

.github/workflows/CodeCoverage.yml actions
  • actions/checkout v2.2.0 composite
  • codecov/codecov-action v1.0.7 composite
  • julia-actions/setup-julia latest composite
.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia v1 composite
.github/workflows/DocCleanup.yml actions
  • actions/checkout v2 composite
.github/workflows/Documentation.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/JuliaFormatter.yml actions
  • actions/checkout v2.2.0 composite
  • dorny/paths-filter v2.9.1 composite
  • julia-actions/setup-julia latest composite
  • styfle/cancel-workflow-action 0.4.0 composite
.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite