Giter Club home page Giter Club logo

libcloudphxx's Introduction

libcloudph++ - a cloud (micro)physics library

To get more information on libcloudph++, please check:

Compilation of libcloudph++ requires:

  • a C++11 compliant compiler (optionally with OpenMP support)
  • a CUDA compiler (optional)
  • Thrust C++ library
  • Boost C++ libraries

Compilation of the Python bindings for libcloudph++ (enabled by default) further requires:

  • Python interpretter and development files
  • NumPy Python package
  • Boost.Python C++ library
  • Blitz++ C++ library

Compilation of the ``icicle'' test program described in the 2015 GMD paper on libcloudph++ (and generation of all results presented in the paper) further requires:

  • libmpdata++ C++ library and its dependencies including:
    • HDF5 library with its optional C++ bindings
    • gnuplot-iostream C++ library and gnuplot

During development of libcloudph++, we are continuously testing the code on Linux using GCC and LLVM/Clang as well as on OSX using Apple/Clang - these are considered the supported platforms.

Compilation and execution of the examples shipped with libcloudph++ is easiest done using CMake, and the following instructions assume you're using CMake. Some hints on CMake usage are included at the end of this file.

The .travis.yml file shipped with the library contains a complete set of commands needed to build and execute all tests programs shipped with libcloudph++ on fresh Ubuntu and OSX installations - it may contain useful information on obtaining the dependencies.

  1. To check the dependencies and compile the library, please try:
    $ mkdir build
    $ cd build
    $ cmake ..
    $ make
    $ cd ..

The next two steps are optional test. Running the tests is highly recommended to verify if the library works correctly in your environment. Nevertheless, in principle you can skip to step four and install the library right away.

  1. To perform unit and some other quick tests, please try:
    $ cd build/tests
    $ make test
    $ cd ../..

These tests should complete in a few minutes.

  1. To reproduce all results from the GMD paper, please try:
    $ cd models/kinematic_2D
    $ mkdir build 
    $ cd build
    $ cmake ..
    $ make
    $ make test     
    $ cd ../../..

This can take over an hour if a GPU is available or longer if using CPU only.

  1. To install the library system-wide, please try:
    $ cd build
    $ sudo make install

This will copy the libcloudph++ headers into the system include path (e.g. /usr/include/libcloudph++), copy the libcloudph++-config.cmake file into the system share directory (e.g. /usr/share/libcloudph++) and install the shared library file (e.g. /usr/lib).

Some CMake hints:

  • to point CMake to a non-default C++ compiler (e.g. clang++): $ cmake .. -DCMAKE_CXX_COMPILER=clang++

  • to alter the installation prefix (e.g. /usr/ instead of /usr/local): $ cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr

  • to switch between debug and release (default) compilation modes (has to be done after compiler choice): $ cmake .. -DCMAKE_BUILD_TYPE=Debug $ cmake .. -DCMAKE_BUILD_TYPE=Release

  • two alternative ways of cleaning leftovers from a previous build (including CMake cache files): $ rm -rf build/CMakeCache.txt build/CMakeFiles $ rm -rf build; mkdir build

  • the output of commands executed by "make test" can be viewed with: $ less Testing/Temporary/LastTest.log

libcloudphxx's People

Contributors

pdziekan avatar slayoo avatar trontrytel avatar mwarusz avatar djarecka avatar codacy-badger avatar

Watchers

James Cloos 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.