Skip to content
@ClimFlows

ClimFlows

ClimFlows

ClimFlows is a work in progress. Its aim is to develop an ecosystem of composable packages that can serve as the basis for a variety of climate-relevant numerical models, especially for oceanic and atmospheric circulation.

Building an ecosystem means that thought and effort is put not only in the contents of each package, but also in the way they interact via their respective interfaces (APIs). We expect that arriving at the 'right' APIs will be a trial-and-error process.

See all pull requests, issues and code coverage.

Build Status Build Status Build Status Build Status Build Status

Build Status Build Status Build Status Build Status Build Status

CI Build Status CI

Build Status Build Status Build Status

Milestones

Since each independent package deliberately focuses on a limited task, the progress of the ecosystem towards usefulness is demonstrated by achieving milestones where existing packages are composed into a 'useful product'. Our first milestones are:

  • a differentiable dry, hydrostatic, global atmospheric solver. Possibly based on spherical harmonics.
  • a dry atmospheric general circulation model with generic thermodynamics and simplistic but physically-consistent parameterizations for radiation, turbulence and convection.
  • an implicit-LES Boussinesq/anelastic solver in logically-Cartesian domains

Language

Choosing a single computing language makes development easier, but it fractions the already small community of climate-relevant model developers. Ultimately, we would like to find ways to make ClimFlows a polyglot project, with a focus firstly on robust language-agnostic APIs based on sound concepts and abstractions, and secondly on implementations in different languages with different limitations.

For the time being ClimFlows is mostly Julia-based. We consider implementing the most promising APIs in (modern) Fortran when sensible, and to experiment with PyTorch/JAX. Contributors preferring other languages, especially C++, are welcome.

Package overview

ClimFlows Julia packages that are not sufficiently general-purpose and mature to be registered in the General Julia registry are registered in JuliaRegistry.

Gallery

The following plots and movies can be reproduced by running examples from ClimFlowsExamples.

Rotating shallow-water equations, spherical harmonics

PV.mp4

Rotating shallow-water equations, mimetic finite differences

PV.mp4

Pinned Loading

  1. LoopManagers.jl LoopManagers.jl Public

    LoopManagers is the companion package of ManagedLoops. It provides managers to execute loops with SIMD, on multiple threads or on GPUs.

    Julia

  2. SIMDMathFunctions.jl SIMDMathFunctions.jl Public

    Fast vectorized mathematical functions for SIMD.jl , using SLEEFPirates.jl .

    Julia 8

  3. ClimFluids.jl ClimFluids.jl Public

    Thermodynamic functions for climate-relevant fluids such as air and seawater.

    Julia

  4. ClimFlowsExamples ClimFlowsExamples Public

    Julia

Repositories

Showing 10 of 21 repositories
  • CFTransport.jl Public

    Advection schemes

    ClimFlows/CFTransport.jl’s past year of commit activity
    Julia 0 MIT 0 0 0 Updated Nov 7, 2024
  • JuliaRegistry Public

    A Julia registry for ClimFlows packages not ready/not suitable for the General registry.

    ClimFlows/JuliaRegistry’s past year of commit activity
    0 0 0 0 Updated Nov 7, 2024
  • LoopManagers.jl Public

    LoopManagers is the companion package of ManagedLoops. It provides managers to execute loops with SIMD, on multiple threads or on GPUs.

    ClimFlows/LoopManagers.jl’s past year of commit activity
    Julia 0 MIT 0 0 0 Updated Nov 6, 2024
  • ManagedLoops.jl Public

    An API to separate the task of writing loops from the task of defining how to execute the loops

    ClimFlows/ManagedLoops.jl’s past year of commit activity
    Julia 0 MIT 0 0 0 Updated Nov 6, 2024
  • CFDomains.jl Public

    Elementary mathematical domains and discrete representation of fields and forms.

    ClimFlows/CFDomains.jl’s past year of commit activity
    Julia 0 MIT 0 0 0 Updated Nov 4, 2024
  • ClimFlowsData Public

    A store for data files that may useful for ClimFlows applications.

    ClimFlows/ClimFlowsData’s past year of commit activity
    Julia 0 0 0 0 Updated Oct 28, 2024
  • ClimFlows/ClimFlowsExamples’s past year of commit activity
    Julia 0 0 0 0 Updated Oct 18, 2024
  • CFMultigrid.jl Public

    A geometric multigrid toolbox to solve elliptic problems

    ClimFlows/CFMultigrid.jl’s past year of commit activity
    Julia 0 MIT 0 1 0 Updated Oct 12, 2024
  • CFHydrostatics.jl Public

    Hydrostatic solvers

    ClimFlows/CFHydrostatics.jl’s past year of commit activity
    Julia 0 MIT 0 0 0 Updated Sep 27, 2024
  • MutatingOrNot.jl Public

    Helps supporting mutating and non-mutating styles with less code duplication.

    ClimFlows/MutatingOrNot.jl’s past year of commit activity
    Julia 0 MIT 0 0 0 Updated Sep 21, 2024

Top languages

Loading…

Most used topics

Loading…