Canoe
Comprehensive Atmosphere N' Ocean Engine
|
Canoe is an light-weighted extension of an astrophysical code Athena++ to enable atmospheric simulations. We utilize the static/adaptive mesh-refinement, parallelization, curvilinear geometry, and dynamic task scheduling innate to the Athena++ code and augment it with a multi-fluid hydrodynamic solver that is specially designed for atmospheric flows involving condensible gases, clouds, hazes and precipitation. The purpose of the model is to fascilitate fundamental atmospheric research while maintaining a certain degree of sophistication and reality to explain the real world observation and phenomena.
The current models for simulating atmospheric flows are either too comprehensive or too simplistic. Two examples being the Weather Research and Forecasting Model (WRF) and the Dedalus Project. The former has hundreds of thousands of lines of code that meet the needs of all kinds of research regarding Earth's atmosphere. The latter is essentialy a PDE solver with boundary conditions, which is perfect for fundamental studies but is too primitive for explaining real world phenomena.
Canoe sits in between. It can be either regarded as a fully-compressible hydrodynamic solver for idealized atmospheric simulations, or a realistic modeling tool for planetary atmospheres including radiative transfer, cloud microphysics and photochemistry. In this sense, a suit of hierarchical models can be achieved using the same framework, allowing progressive sophistication and specialization. It is light-weighted, meaning that the core part of code are less than 10k lines, thanks to a modern C++ design. An inexperienced user can get it running and understand the underpinning of the solver system within a few weeks of time.
We are having too many codes and too few documentations on how to actually modify them for our own purpose. Basically, we are sold of a vehicle but without manuals on understanding the internal mechanism that drives the vehicle. Or, the interal logic is too sophisticated to be understood in a reasonable amount of time. It is then our mission to provide well-documented and simple tools to enable BUILDING atmospheric models for YOUR OWN PURPOSE that can run from laptops to supercomputers. We hope to create an open, inclusive, participatory community working on a state-of-the-art and modern software gadgets that constitutes the go-to solution for innovative ideas.
The model is designed to be installed as easy as possible, from a personal laptop to a giant computation cluster. Asuming that you work with a Unix/linux system, obtain a public version of the code via the following command:
If you wish to have access to the development version of the code, please contact the author Cheng Li.
You will need the following packages for running in serial. If your package management system is apt
, with sudo
privilege you can obtain them via:
For parallel runs, you will need the MPI libraries:
Finally, install the required python packages. If you already have pip3
installed, go to the root directory of the code and execute:
Otherwise, obtain pip3
first by:
Congratulations! You have installed all necessary packages. Now move on to the next session on how to get started.
The best way to get started is to work with an example. We provide a detailed documentation of an example problem in which we calculate the propagation of a density current on the surface. The introduction, commented program and results are located at page Example #1 : The straka Problem. The documentation is written in such a way that focuses on explaining what's going on in individual code blocks. Understanding this program serves as a basis for understanding the internal mechanism of the code.
If you feel that our code helps your project, please consider citing our work in your publication:
There are a variety of ways to contribute. The simpliest way is to send us your problem generator file, the input file and a sample output file so that we can reproduce your results. We will make documentations out of it and deploy it to the project website so that your effort will be recognized and shared among the community.