-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CADET has been (almost fully) rewritten with a complete new OOP / code architecture. The rewrite enables and eases the implementation of new features in the near future and has improved stability as well as performance of the simulation. Major highlights: - Completely new code architecture - Increased single- and multi-core performance - Improved documentation (quality and quantity) - Improved MATLAB examples - Preparations for upcoming features (networks of unit operations and support of reaction terms) - Consistent initialization of the DAE solver - Modernized CMake build system - Native support of joined parameters via AD Unfortunately, the changes are breaking, that is, users have to migrate their code to the new version.
- Loading branch information
0 parents
commit 88b8d46
Showing
348 changed files
with
102,408 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
.DS_Store | ||
*.m~ | ||
*.asv | ||
*._* | ||
*.*~ | ||
*.mexmaci64 | ||
*.mexa64 | ||
*.mexw64 | ||
*.mexw32 | ||
*.dll | ||
*.dylib | ||
*.so | ||
doc/doxy/html | ||
doc/tex/*.aux | ||
doc/tex/*.fdb_latexmk | ||
doc/tex/*.bbl | ||
doc/tex/*.bcf | ||
doc/tex/*.run.xml | ||
doc/tex/*.out | ||
doc/tex/*.blg | ||
doc/tex/*.lot | ||
doc/tex/*.lof | ||
doc/tex/*.toc | ||
doc/tex/*.log | ||
doc/tex/*.idx | ||
doc/tex/*.ind | ||
doc/tex/*.gitinfo | ||
doc/tex/*.synctex.gz | ||
doc/tex/*.pdf | ||
doc/tex/docs/*.aux |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
Eric von Lieres (Forschungszentrum Juelich GmbH, IBG-1: Biotechnology, Juelich, Germany): Supervision, concepts, first Matlab implementation, user interface design | ||
Joel Andersson (Forschungszentrum Juelich GmbH, IBG-1: Biotechnology, Juelich, Germany): Domain decomposition (GRM), linear solver (GRM), first C implementation | ||
Sebastian Schnittert (Forschungszentrum Juelich GmbH, IBG-1: Biotechnology, Juelich, Germany): First C++ implementation, first Matlab interface, first file format | ||
Andreas Püttmann (Forschungszentrum Juelich GmbH, IBG-1: Biotechnology, Juelich, Germany): Parameter sensitivities, Jacobians via AD, AD techniques (block- & band-compression) | ||
Samuel Leweke (Forschungszentrum Juelich GmbH, IBG-1: Biotechnology, Juelich, Germany): Complete rewrite of v3.0 from scratch, build system, code & framework design and architecture, Matlab interface, file format, frontends (MEX, CLI), domain decomposition (multi-unit systems), reactions |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
# Prerequisites | ||
|
||
* CMake (>= 3.1.0) | ||
* GCC >= 4.7 or Clang >= 3.3 | ||
* Optional: MATLAB R2009a or greater | ||
* Optional: Git | ||
|
||
Assumed directory structure: | ||
|
||
<pre> | ||
<ROOT> | ||
|-libs | ||
| |- sundials | ||
| |- hdf5 | ||
|-code | ||
|-cadet | ||
|-build | ||
</pre> | ||
|
||
Note that the version numbers of the files and packages below are subject to change and will not always reflect the most recent version. | ||
|
||
# Build dependencies | ||
|
||
## HDF5 | ||
|
||
You can either build HDF5 yourself or rely on the packages provided by your Linux distribution. | ||
|
||
Obtain HDF5 from your distribution: | ||
* Install the development package of your distribution (e.g., `libhdf5-dev` for Ubuntu and Debian, `hdf5-devel` OpenSUSE) | ||
* Additional postfixes or prefixes in the library names (e.g., Debian uses `libhdf5_serial.*` instead of `libhdf5.*`) can cause troubles when CMake is trying to find HDF5. If this is the case, you can circumvent this by using symlinks `ln -s libhdf5_serial.* libhdf5.*`. However, this can later cause troubles because other packages might contain this file. | ||
|
||
Build HDF5 yourself: | ||
* Download CMake-enabled source from https://support.hdfgroup.org/HDF5/release/cmakebuild.html or https://support.hdfgroup.org/HDF5/release/cmakebuild5110.html | ||
* Unzip and make sure that the directory path does not contain blank spaces | ||
* Open a terminal and change to the unzipped directory | ||
* Execute `ctest -S HDF5config.cmake,BUILD_GENERATOR=Unix,INSTALLDIR="<ROOT>/Libs/hdf5" -C Release -V` | ||
* Extract the created `HDF5-1.10.0-patch1-Linux.tar.gz` file to `<ROOT>/Libs/hdf5` such that you have `<ROOT>/Libs/hdf5/lib` | ||
|
||
## SUNDIALS | ||
|
||
* Download SUNDIALS source from http://computation.llnl.gov/projects/sundials/sundials-software | ||
* Unzip | ||
* Open a terminal and change to the parent directory of the unzipped directory | ||
* Create a new folder `sundialsbuild` and change to it | ||
* Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/Libs/sundials" -DEXAMPLES_ENABLE=OFF -DOPENMP_ENABLE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=-fPIC ../sundials-2.7.0/` | ||
* Execute `make install` | ||
* Delete the folder `sundialsbuild` (e.g., execute `rm -rf sundialsbuild` in the parent directory of `sundialsbuild`) | ||
|
||
## LAPACK | ||
|
||
You can either use a LAPACK implementation provided by your distribution or install the freely available [Intel MKL](https://software.intel.com/sites/campaigns/nest/) which is very fast and probably faster than your distribution's implementation. | ||
|
||
Obtain LAPACK from your distribution: | ||
* Install the packages (LAPACK and BLAS) of your distribution (e.g., `liblapack3`, `liblapack-dev`, `libblas3`, `libblas-dev` for Ubuntu and Debian). Note that some packages only provide reference (i.e., slow) implementations and others (e.g., ATLAS, GOTO) perform much faster. | ||
|
||
# Build CADET | ||
|
||
* Download release of CADET or checkout from git | ||
* Place the source in `<ROOT>/code` and create the directory `<ROOT>/build` | ||
* Open a terminal and change to `<ROOT>/build` | ||
* If you have built HDF5 yourself, execute `export HDF5_ROOT=<ROOT>/Libs/hdf5` | ||
* Execute `export SUNDIALS_ROOT=<ROOT>/Libs/sundials` | ||
* Using standard LAPACK: Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" ../code/` | ||
|
||
Using MKL (sequential): Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" -DCMAKE_LIBRARY_PATH="<MKL_ROOT>/lib/intel64" -DBLA_VENDOR=Intel10_64lp_seq ../code/` | ||
|
||
Using MKL (parallel): Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" -DCMAKE_LIBRARY_PATH="<MKL_ROOT>/lib/intel64" -DBLA_VENDOR=Intel10_64lp ../code/` | ||
* If CMake was not able to locate Matlab, execute `export MATLAB_ROOT=/path/to/my/MATLAB/R2016a` and try to run CMake again | ||
* Execute `make` | ||
* Execute `make install` | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
# Prerequisites | ||
|
||
* CMake (>= 3.1.0) | ||
* GCC >= 4.7 or Clang >= 3.3 | ||
* Optional: MATLAB R2009a or greater | ||
* Optional: Git | ||
|
||
Assumed directory structure: | ||
|
||
<pre> | ||
<ROOT> | ||
|-libs | ||
| |- sundials | ||
| |- hdf5 | ||
|-code | ||
|-cadet | ||
|-build | ||
</pre> | ||
|
||
Note that the version numbers of the files and packages below are subject to change and will not always reflect the most recent version. | ||
|
||
Also note that you have to use the same compiler for all packages. This is especially important if some of the packages are installed via a package manager such as [Homebrew](http://brew.sh/) which uses the system compiler (Clang). | ||
|
||
# Build dependencies | ||
|
||
## HDF5 | ||
|
||
You can either build HDF5 yourself or rely on the `hdf5` package of [Homebrew](http://brew.sh/). | ||
|
||
Obtain HDF5 from Homebrew: | ||
* Open a terminal and execute `brew install hdf5` | ||
* Homebrew has installed HDF5 to `/usr/local` | ||
|
||
Build HDF5 yourself: | ||
* Download CMake-enabled source from https://support.hdfgroup.org/HDF5/release/cmakebuild.html or https://support.hdfgroup.org/HDF5/release/cmakebuild5110.html | ||
* Unzip and make sure that the directory path does not contain blank spaces | ||
* Open a terminal and change to the unzipped directory | ||
* Execute `ctest -S HDF5config.cmake,BUILD_GENERATOR=Unix,INSTALLDIR="<ROOT>/Libs/hdf5" -C Release -V` | ||
* Extract the created `HDF5-1.10.0-patch1-Darwin.tar.gz` file to `<ROOT>/Libs/hdf5` such that you have `<ROOT>/Libs/hdf5/lib` | ||
|
||
## SUNDIALS | ||
|
||
You can either build SUNDIALS yourself or rely on the `hdf5` package of [Homebrew](http://brew.sh/). | ||
|
||
Obtain SUNDIALS from Homebrew: | ||
* Open a terminal and execute `brew install sundials` | ||
* Homebrew has installed SUNDIALS to `/usr/local` | ||
|
||
Build SUNDIALS yourself: | ||
* Download SUNDIALS source from http://computation.llnl.gov/projects/sundials/sundials-software | ||
* Unzip | ||
* Open a terminal and change to the parent directory of the unzipped directory | ||
* Create a new folder `sundialsbuild` and change to it | ||
* Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/Libs/sundials" -DEXAMPLES_ENABLE=OFF -DOPENMP_ENABLE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=-fPIC ../sundials-2.7.0/` | ||
* Execute `make install` | ||
* Delete the folder `sundialsbuild` (e.g., execute `rm -rf sundialsbuild` in the parent directory of `sundialsbuild`) | ||
|
||
## LAPACK | ||
|
||
You can either use the native LAPACK implementation provided by Mac OS X (vecLib, Accelerate) or install the freely available [Intel MKL](https://software.intel.com/sites/campaigns/nest/) which is very fast and probably faster than Accelerate. | ||
|
||
# Build CADET | ||
|
||
* Download release of CADET or checkout from git | ||
* Place the source in `<ROOT>/code` and create the directory `<ROOT>/build` | ||
* Open a terminal and change to `<ROOT>/build` | ||
* If you have built HDF5 yourself, execute `export HDF5_ROOT=<ROOT>/Libs/hdf5` | ||
* If you have built SUNDIALS yourself, execute `export SUNDIALS_ROOT=<ROOT>/Libs/sundials` | ||
* Using standard LAPACK: Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" ../code/` | ||
|
||
Using MKL (sequential): Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" -DCMAKE_LIBRARY_PATH="<MKL_ROOT>/lib/intel64_win" -DBLA_VENDOR=Intel10_64lp_seq ../code/` | ||
|
||
Using MKL (parallel): Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" -DCMAKE_LIBRARY_PATH="<MKL_ROOT>/lib/intel64_win" -DBLA_VENDOR=Intel10_64lp ../code/` | ||
* Execute `make` | ||
* Execute `make install` | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# Prerequisites | ||
|
||
* CMake (>= 3.1.0) | ||
* Microsoft Visual Studio 2015 (Community Edition, or better) | ||
* Optional: MATLAB R2009a or greater | ||
* Optional: Git | ||
|
||
Assumed directory structure: | ||
|
||
<pre> | ||
<ROOT> | ||
|-Libs | ||
| |- sundials | ||
| |- hdf5 | ||
| |- lapack | ||
|-code | ||
|-cadet | ||
|-build | ||
</pre> | ||
|
||
Note that the version numbers of the files and packages below are subject to change and will not always reflect the most recent version. | ||
|
||
# Build dependencies | ||
|
||
## HDF5 | ||
|
||
* Make sure that no HDF5 libraries are installed (remove already existing HDF5 installations) | ||
* Download CMake-enabled source from https://support.hdfgroup.org/HDF5/release/cmakebuild.html or https://support.hdfgroup.org/HDF5/release/cmakebuild5110.html | ||
* Unzip and make sure that the directory path does not contain blank spaces | ||
* Open VS2015x64 Command Prompt and change to the unzipped directory | ||
* Execute `ctest -S HDF5config.cmake,BUILD_GENERATOR=VS201564,INSTALLDIR="<ROOT>\Libs\hdf5" -C Release -V` | ||
* Extract the created `HDF5-1.8.17-win64.zip` file to `<ROOT>/Libs/hdf5` such that you have `<ROOT>/Libs/hdf5/lib` | ||
* We need to remove the `lib` prefix of the `.lib` files in `<ROOT>/Libs/hdf5/lib` (i.e., rename `libhdf5.lib` to `hdf5.lib`). Change to `<ROOT>/Libs/hdf5/lib` and execute `rename "lib*" "///*"` | ||
|
||
## SUNDIALS | ||
|
||
* Download SUNDIALS source from http://computation.llnl.gov/projects/sundials/sundials-software | ||
* Unzip | ||
* Open VS2015x64 Command Prompt and change to the parent directory of the unzipped directory | ||
* Create a new folder `sundialsbuild` and change to it | ||
* Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>\Libs\sundials" -DEXAMPLES_ENABLE=OFF -DOPENMP_ENABLE=ON -DBUILD_SHARED_LIBS=OFF -G "Visual Studio 14 Win64" -DCMAKE_C_FLAGS="/GL" -DCMAKE_STATIC_LINKER_FLAGS="/LTCG" ..\sundials-2.7.0\` | ||
* Execute `msbuild.exe INSTALL.vcxproj /p:Configuration=Release;Platform=x64` | ||
|
||
## LAPACK | ||
|
||
In the following, CLAPACK is built and used. You can also install the freely available [Intel MKL](https://software.intel.com/sites/campaigns/nest/) which is very fast and certainly much faster than CLAPACK. | ||
|
||
* Download `clapack-3.2.1-CMAKE.tgz` from https://icl.cs.utk.edu/lapack-for-windows/clapack/index.html#build and unzip | ||
* Open VS2015x64 Command Prompt and change to the parent directory of the unzipped directory | ||
* Create a new folder `clapackbuild` and change to it | ||
* Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>\Libs\clapack" -G "Visual Studio 14 Win64" -DCMAKE_C_FLAGS="/GL" -DCMAKE_CXX_FLAGS="/GL" -DCMAKE_STATIC_LINKER_FLAGS="/LTCG" ..\clapack-3.2.1-` | ||
* Execute `msbuild.exe CLAPACK.sln /p:Configuration=Release;Platform=x64` | ||
* Execute `msbuild.exe INSTALL.vcxproj /p:Configuration=Release;Platform=x64` | ||
* Rename `<ROOT>\Libs\clapack\lib\libf2c.lib` to `<ROOT>\Libs\clapack\lib\f2c.lib` | ||
|
||
# Build CADET | ||
|
||
* Download release of CADET or checkout from git | ||
* Place the source in `<ROOT>\code` and create the directory `<ROOT>\build` | ||
* Open VS2015x64 Command Prompt and change to `<ROOT>\build` | ||
* Execute `set SUNDIALS_ROOT=<ROOT>\Libs\sundials` | ||
* Execute `set HDF5_ROOT=<ROOT>\Libs\hdf5` | ||
* Using CLAPACK: Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>\cadet" -DBUILD_TESTS=OFF -DCMAKE_LIBRARY_PATH="<ROOT>\Libs\clapack\lib" -G "Visual Studio 14 Win64" -DBLA_VENDOR=CLAPACK ..\code\` | ||
|
||
Using MKL (sequential): Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>\cadet" -DBUILD_TESTS=OFF -DCMAKE_LIBRARY_PATH="<MKL_ROOT>\compilers_and_libraries_2016\windows\mkl\lib\intel64_win" -G "Visual Studio 14 Win64" -DBLA_VENDOR=Intel10_64lp_seq ..\code\` | ||
|
||
Using MKL (parallel): Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>\cadet" -DBUILD_TESTS=OFF -DCMAKE_LIBRARY_PATH="<MKL_ROOT>\compilers_and_libraries_2016\windows\mkl\lib\intel64_win" -G "Visual Studio 14 Win64" -DBLA_VENDOR=Intel10_64lp ..\code\` | ||
* Execute `msbuild.exe CadetFramework.sln /p:Configuration=Release;Platform=x64` | ||
* Execute `msbuild.exe INSTALL.vcxproj /p:Configuration=Release;Platform=x64` | ||
|
Oops, something went wrong.