Code Monkey home page Code Monkey logo

eclm's Introduction

eCLM

CI status: alpha

eCLM is based from Community Land Model 5.0 (CLM5.0). It has the same modelling capabilities as CLM5 but with a more simplified infrastructure for build and namelist generation. The build system is handled entirely by CMake and namelists are generated through a small set of Python scripts. Only Fortran source codes necessary for a functional land model simulation were imported from CLM5.

Unlike CLM5, there are no built-in batch scripts in eCLM. It is up to system maintainers or users to craft their own workflows by combining the basic tools in this repo plus the native tools in their respective platforms.

Installation

This section shows you how to install eCLM on your local machine. If you are a user in IBG-3 and wish to run eCLM on JSC supercomputers, please check out the eCLM-JSC repo.

Minimum system requirements

CentOS-8

  • MPI 3.1
  • netCDF-C 4.7.4
  • netCDF-Fortran 4.5.2
  • PnetCDF 1.12.1
  • LAPACK
  • CMake 3.16
  • Supported compilers
    • GCC 9.3.0
    • Intel 19.1.2

Ubuntu-22.04

  • OpenMPI: 4.1.2
  • netCDF-C: 4.8.1
  • netCDF-Fortran: 4.6.0
  • PnetCDF: 1.12.1
  • CMake: 3.22.1
  • gcc: 11.4.0
  • mpicc: 11.4.0

Building eCLM

  1. Configure CMake build options.
# User-specific variables
BUILD_DIR="bld"
INSTALL_DIR="eclm"

# Run cmake
cmake -S src -B "$BUILD_DIR" \
      -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
      -DCMAKE_C_COMPILER=mpicc \
      -DCMAKE_Fortran_COMPILER=mpifort

Additionally, you may specify these optional build variables.

  • CMAKE_BUILD_TYPE=DEBUG|RELEASE. Defaults to RELEASE.
  • CMAKE_PREFIX_PATH. Semicolon-separated list of paths (i.e. install prefixes) where external libraries might be found. You may need to specify this if CMake cannot find some of the required libraries (e.g. NetCDF, PnetCDF, LAPACK).
  1. Build and install eCLM.
cmake --build "$BUILD_DIR"
cmake --install "$BUILD_DIR"

Install namelist generator Python package

The namelist generator scripts require Python 3.X.

# Upgrade to latest version of pip
python3 -m pip install --upgrade pip

# Install package
pip3 install --user ./namelist_generator

Run sample test case

# Download and extract data files
wget https://datapub.fz-juelich.de/slts/eclm/1x1_wuestebach.tar.gz
mkdir 1x1_wuestebach
tar xf 1x1_wuestebach.tar.gz -C 1x1_wuestebach

# Generate namelists
cd 1x1_wuestebach
export DATA_DIR="$(pwd)"
clm5nl-gen wtb_1x1.toml

# Validate namelists
clm5nl-check .

# Run eCLM
/path/to/eclm.exe

Status

eCLM has only been lightly tested; so far it could run a single-point and a regional case in Germany. Still, more work has to be done to ensure the correctness of the build process and the generated namelists. A user-friendly and lightweight approach to model configuration also has to be developed. eCLM is still in alpha version and would not be ready for production runs anytime soon.

eclm's People

Contributors

kvrigor avatar kongdd avatar jjokella avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.