DUNE-library ============ DUNE, the Distributed and Unified Numerics Environment is a modular toolbox for solving partial differential equations with grid-based methods. The main intention is to create slim interfaces allowing an efficient use of legacy and/or new libraries. Using C++ techniques DUNE allows to use very different implementation of the same concept (i.e. grid, solver, ...) under a common interface with a very low overhead. DUNE was designed with flexibility in mind. It supports easy discretization using methods, like Finite Elements, Finite Volume and also Finite Differences. Through separation of data structures DUNE allows fast Linear Algebra like provided in the ISTL module, or usage of external libraries like blas. This package contains the basic DUNE common classes. Dependencies ------------ dune-common depends on the following software packages - pkg-config - GNU C, C++ >=4.4 these might also work: icc (C/C++) >= 13.0 Clang >= 3.2 The following software is recommend but optional: - MPI (either OpenMPI, lam, or mpich suffice) For a full explanation of the DUNE installation process please read the installation notes [0]. The following introduction is meant for the impatient. License ------- The DUNE-library and headers are licensed under version 2 of the GNU General Public License, with the so-called "runtime exception", as follows: As a special exception, you may use the DUNE source files as part of a software library or application without restriction. Specifically, if other files instantiate templates or use macros or inline functions from one or more of the DUNE source files, or you compile one or more of the DUNE source files and link them with other files to produce an executable, this does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU General Public License. This licence clones the one of the libstc++ library. For further implications of this library please see their licence page [3] See the file COPYING for full copying permissions. Installation ------------ Short installation instructions can be found in file INSTALL. For the full instructions please see [0]. Links ----- 0. http://www.dune-project.org/doc/installation-notes.html 1. http://www.dune-project.org/download.html 2. http://dune-project.org/doc/buildsystem/buildsystem.pdf 3. http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.license
Forked from
Core Modules / dune-common
4219 commits behind the upstream repository.
Steffen Müthing
authored
dune_enable_all_packages() doesn't really work if a module contains libraries (it triggers CMP022 and CMP038). This patch works around that problem and also adds a number of convenience features to the overall mechanism. In particular: - dune_enable_all_packages() now accepts optional lists of additional include directories and compile definitions that will be applied to all targets in the module. There is a new option APPEND that controls the placement of those compiler arguments, analogous to dune_register_package_flags(). - Libraries need special handling to work around the problem with the two CMake policies listed above. Those get triggered because libraries defined in the module ended up linking to themselves, and newer versions of CMake really don't like that. We can avoid this problem by exploiting the fact that the set of libraries contained in link_libraries is evaluated only once, at the point when a target is created. So we only have to make sure that libraries inside the module are created before they are added to link_libraries(). But we have to be careful to make sure that link_libraries() is called before the user creates any targets that depend on the module library. In order to minimize the risk of user error, I have integrated those two tasks (creating the library and adding it to link_libraries()) into the dune_enable_all_packages() macro. So this macro now accepts a list of library names (as the multi argument MODULE_LIBRARIES). These are automatically created using dune_add_library() (placing them in lib/) in the order that they are listed and added to link_libraries() afterwards. Users MUST use this mechanism if they want the library to be linked automatically to programs in the module. On the other hand, you can still manually create libraries, but then you have to link to them manually (e.g. the Alberta libs in dune-grid). - There is a new macro dune_library_add_sources() that can be used to add source files to libraries created with the help of dune_enable_all_packages(). That macro can be called repeatedly and in any subdirectory of the source tree. Using this facility, I think we can mostly get rid of OBJECT libraries. :-) - CMake doesn't like to create a target without any source files, so the patch generates a small stub source for each library that contains two functions that are named after the library and return the version of the associated dune module.
Name | Last commit | Last update |
---|---|---|
am | ||
bin | ||
cmake | ||
doc | ||
dune | ||
lib | ||
m4 | ||
share | ||
.gitignore | ||
.mailmap | ||
CMakeLists.txt | ||
COPYING | ||
INSTALL | ||
Makefile.am | ||
README | ||
README.SVN | ||
TODO | ||
config.h.cmake | ||
configure.ac | ||
dune-common.pc.in | ||
dune.module | ||
stamp-vc |