Bil is a modeling platform based on finite volume/element methods. Bil is distributed under the terms of the GNU General Public License (GnuGPL). Bil can be downloaded from the URL: https://github.com/Universite-Gustave-Eiffel/bil.
Building Bil from source requires:
- Make (http://www.gnu.org/software/make)
- C and C++ compilers (http://gcc.gnu.org)
- Fortran compiler (http://gcc.gnu.org/fortran)
- CMake (http://www.cmake.org)
Building the documentation from source requires:
- Texinfo (http://www.gnu.org/software/texinfo)
and optionally
- Doxygen (http://www.stack.nl/~dimitri/doxygen)
./base reference solution and data bases
./bin binaries
./cmake macros and functions for cmake
./doc documentations
./examples examples of input data files
./include header files
./lib libraries
./scripts some utility scripts
./src sources
Create a build directory, for example as a subdirectory of Bil's source directory:
mkdir build
Run cmake from within the build directory, pointing to Bil's source directory:
cd build
cmake ..
To build Bil then simply type:
make
the executable is copied in ../bin and the shared library in ../lib.
To install Bil type (this may require root permission):
make install
To change build options you can specify options directly on the command line, for example
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt ..
will change the installation directory (by default it is /usr/local on linux).
You can configure a debug build with
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
make install
Note that the CMAKE_BUILD_TYPE variable is saved in the cache (CMakeCache.txt). On subsequent calls to cmake CMAKE_BUILD_TYPE is set to its cache value or to "Release" the first time cmake is called.
You can keep multiple builds with different build options at the same time. Below the directory "build" you can place as many target directories for out-of-source build modes as you want. For example
build/debug
build/release
and you could configure a debug build in a "debug" subdirectory with
mkdir build/debug
cd build/debug
cmake -DCMAKE_BUILD_TYPE=Debug ../../
make
make install
To see a detailed compilation log use
make VERBOSE=1
To see the available targets use
make help
To build and install the documentation type
make doc
make install
Some functionalities (like solvers ma38, superlu, petscksp) require the use of the following libraries:
-
BLAS: this library is usually supplied by your computer processor vendor, and using a good one is critical to performance. If you are unable to locate a vendor BLAS then you should use either the GotoBLAS, OpenBLAS or ATLAS BLAS (the latter is often available as part of your linux distribution). If you cannot gain access to any of these, you can obtain the relevant BLAS routines by visiting the following URL: http://www.hsl.rl.ac.uk/blas/ Such routines obtained from the above url are at least ten times slower than the other BLAS libraries mentioned.
-
LAPACK: you can obtain the latest LAPACK from http://www.netlib.org/lapack
-
SuperLU, SuperLU_MT, SuperLU_DIST: you can obtain the relevant C functions by visiting the following URL: https://portal.nersc.gov/project/sparse/superlu/. Note that these three libraries cannot be mixed, only one can be loaded per build target. SuperMU_MT needs either "omp" or "pthread" library. SuperLU_DIST needs "mpi" library.
-
Petsc: this library is usually available from package managers. Visit the url http://www.petsc.org for more informations. Note that Petsc needs "mpi" library.
These librairies are not included in this package. You need to explicitly enable them by turning to "ON" the variables found in the file "OPTIONS" or, alternatively, by specifying their locations in the file "EXTRALIBS". The file "EXTRALIBS" is also where you can add other libraries for your own development. Just add the location of the library using a macro name for this library, e.g. NEWLIB, and use the macro HAVE_NEWLIB in your implementation to test if the library is really installed:
#if defined(HAVE_NEWLIB)
...
#endif
This package contains some fortran routines provided by HSL: "HSL, a collection of Fortran codes for large-scale scientific computation". See http://www.hsl.rl.ac.uk/.
The bil program prints out the available options when run without any option. To run a specific job, you can enter
bil [options] myfile
Please mail all bug reports and suggestions to me. I will try to give satisfaction.