diff --git a/CHANGELOG b/CHANGELOG index 9dc7545a4bcf24edeadc2c3f3ccd42cfbe38de1c..7edc594e0ddf0beaeb8be6ead21042a96b4acfe6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,7 +2,11 @@ Differences Between DuMuX 2.8 and DuMuX 2.9 =================================================== * IMPORTANT NOTES: - - + - The support for the external grid library ALBERTA was dropped. Instead + we now offically support dune-foamgrid + (https://gitlab.dune-project.org/extensions/dune-foamgrid). Dune-foamgrid + supports 1d and 2d simplex grids embedded in an arbitrary dimension world space. + It features element parametrizations, runtime growth, runtime-movable vertices. * IMPROVEMENTS and ENHANCEMENTS: - The multidomain models have been restructured. This aims at a reduction in diff --git a/doc/handbook/1_introduction.tex b/doc/handbook/1_introduction.tex index 349cb343f348a06b696a7fec5342d13f3c178713..5ef762f3fdfc0e5102dad6b710358b85bf64b492 100644 --- a/doc/handbook/1_introduction.tex +++ b/doc/handbook/1_introduction.tex @@ -18,8 +18,8 @@ for all possible cases, so \Dumux is build on top of \Dune, the \textbf{D}istributed and \textbf{U}nified \textbf{N}umerics \textbf{E}nvironment~\cite{DUNE-HP}. \Dune provides a generic interface to many existing grid management libraries such as UG~\cite{UG-HP}, -ALBERTA~\cite{ALBERTA-HP}, ALUGrid~\cite{ALUGRID-HP} and a few -more. DUNE also extensively uses template programming in order to +ALUGrid~\cite{ALUGRID-HP} and a few more. +DUNE also extensively uses template programming in order to achieve minimal overhead when accessing the underlying grid libraries\footnote{In fact, the performance penalty resulting from the use of \Dune's grid interface is usually negligible~\cite{BURRI2006}.}. diff --git a/doc/handbook/2_detailedinstall.tex b/doc/handbook/2_detailedinstall.tex index 2e7b33050ab5d91083a0b316278847cf7a6d209f..cf08e9b3d70e3a97c1a2f8b74c2bbfa41414b3d3 100644 --- a/doc/handbook/2_detailedinstall.tex +++ b/doc/handbook/2_detailedinstall.tex @@ -236,15 +236,17 @@ In the following list, you can find some external modules and external libraries and some more libraries and tools which are prerequisites for their use. \begin{itemize} -\item \textbf{ALBERTA}: External grid library. Adaptive multi-level grid manager using bisectioning - refinement and error control by residual techniques for scientific Applications. Requires a Fortran - compiler like \texttt{gfortran}. Download: \texttt{\url{http://www.alberta-fem.de}} or for version 3.0 - \texttt{\url{http://www.mathematik.uni-stuttgart.de/fak8/ians/lehrstuhl/nmh/downloads/alberta/}}. - \item \textbf{dune-ALUGrid}: Grid library, comes as a \Dune module. The parallel version needs also a graph partitioner, such as \texttt{ParMETIS}. Download: \texttt{\url{https://gitlab.dune-project.org/extensions/dune-alugrid}} +\item \textbf{dune-foamgrid}: External grid module. One- and two-dimensional grids + in a physical space of arbitrary dimension; non-manifold grids, growth, element + paramterizations, and movable vertices. This makes FoamGrid the grid data structure + of choice for simulating structures such as foams, discrete fracture networks, + or network flow problems. + Download: \texttt{\url{https://gitlab.dune-project.org/extensions/dune-foamgrid}} + \item \textbf{\Dune-multidomaingrid} and \textbf{\Dune-multidomain}: External modules which offer a meta grid that has different sub-domains. Each sub-domain can have a local operator that is coupled by a coupling condition. They are used for multi-physics approaches or domain decomposition methods. Download: @@ -279,7 +281,7 @@ depending on which modules of \Dune and which external libraries you use. when they are going to be built for parallel computing. \texttt{OpenMPI} and \texttt{MPICH} in a recent version have been reported to work. -\item \textbf{BLAS}: Alberta and SuperLU make use of BLAS. Thus install GotoBLAS2, ATLAS, non-optimized BLAS +\item \textbf{BLAS}: SuperLU makes use of BLAS. Thus install GotoBLAS2, ATLAS, non-optimized BLAS or BLAS provided by a chip manufacturer. Take care that the installation scripts select the intended version of BLAS. diff --git a/doc/handbook/dumux-handbook.bib b/doc/handbook/dumux-handbook.bib index 64ee4158f64ff41e822e9dae4e70b7d088127f5c..c6761ee4f5c35ec716046f1a1703acfa6056510e 100644 --- a/doc/handbook/dumux-handbook.bib +++ b/doc/handbook/dumux-handbook.bib @@ -1371,11 +1371,6 @@ url={https://dx.doi.org/10.1021/jp021943g} } -@MISC{ALBERTA-HP, - title = {{The {ALBERTA} Website: \url{http://www.alberta-fem.de/}}}, - key = {ALBERTA} -} - @MISC{ALUGRID-HP, title = {T{he {ALUG}rid Website: \url{http://www.mathematik.uni-freiburg.de/IAM/Research/alugrid/}}}, key = {ALU} diff --git a/dumux/io/adaptivegridrestart.hh b/dumux/io/adaptivegridrestart.hh index 429e83fdab986db823519dc36ffe656c22de904d..80b846d1065b10d49c5e9d22b92acd44abb8ccc3 100644 --- a/dumux/io/adaptivegridrestart.hh +++ b/dumux/io/adaptivegridrestart.hh @@ -28,9 +28,6 @@ #if HAVE_DUNE_ALUGRID #include <dune/alugrid/grid.hh> #endif -#if HAVE_ALBERTA -#include <dune/grid/albertagrid/agrid.hh> -#endif #include <dune/grid/common/backuprestore.hh> #if ! DUNE_VERSION_NEWER(DUNE_COMMON, 3, 0) @@ -60,14 +57,6 @@ struct GridRestartCheck<Dune::ALUGrid<dim, dimworld, elType, refinementType> > static const bool allowRestart = true; }; #endif - -#if HAVE_ALBERTA -template<int dim, int dimworld> -struct GridRestartCheck<Dune::AlbertaGrid<dim, dimworld> > -{ - static const bool allowRestart = true; -}; -#endif //! \endcond diff --git a/dumux/io/gridcreator.hh b/dumux/io/gridcreator.hh index 73ed7c510598b86ce5e1b93b1dcbe04d6e32e2d0..9f3ca69a92a61c5bead0899aa0f0dfe9d7e292a1 100644 --- a/dumux/io/gridcreator.hh +++ b/dumux/io/gridcreator.hh @@ -63,12 +63,6 @@ #include <dune/foamgrid/dgffoam.cc> #endif -// Alberta specific includes -#if HAVE_ALBERTA -#include <dune/grid/albertagrid.hh> -#include <dune/grid/albertagrid/dgfparser.hh> -#endif - #include <dumux/common/propertysystem.hh> #include <dumux/common/parameters.hh> @@ -1289,59 +1283,6 @@ public: #endif // HAVE_DUNE_FOAMGRID -#if HAVE_ALBERTA - -/*! - * \brief Provides a grid creator for FoamGrids - * from information in the input file - * - * All keys are expected to be in group GridParameterGroup. - - * The following keys are recognized: - * - File : A DGF or gmsh file to load from, type detection by file extension - * - Verbosity : whether the grid construction should output to standard out - * - */ -template<class TypeTag, int dim, int dimworld> -class GridCreatorImpl<TypeTag, Dune::AlbertaGrid<dim, dimworld> > - : public GridCreatorBase<TypeTag, Dune::AlbertaGrid<dim, dimworld> > -{ -public: - typedef typename Dune::AlbertaGrid<dim, dimworld> Grid; - typedef GridCreatorBase<TypeTag, Grid> ParentType; - - /*! - * \brief Make the grid. This is implemented by specializations of this method. - */ - static void makeGrid() - { - // First try to create it from a DGF or msh file in GridParameterGroup.File - try { - const std::string fileName = GET_RUNTIME_PARAM_FROM_GROUP_CSTRING(TypeTag, std::string, GET_PROP_VALUE(TypeTag, GridParameterGroup).c_str(), File); - ParentType::makeGridFromFile(fileName, "Alberta"); - ParentType::maybeRefineGrid(); - return; - } - catch (Dumux::ParameterException &e) {} - catch (...) { throw; } - - // Then look for the necessary keys to construct a structured grid from the input file - try { - ParentType::template makeStructuredGrid<dim, dimworld>(ParentType::CellType::Simplex); - ParentType::maybeRefineGrid(); - } - catch (Dumux::ParameterException &e) { - DUNE_THROW(Dumux::ParameterException, "Please supply the mandatory parameters " - << GET_PROP_VALUE(TypeTag, GridParameterGroup) << ".UpperRight and " - << GET_PROP_VALUE(TypeTag, GridParameterGroup) << ".LowerLeft or a grid file in " - << GET_PROP_VALUE(TypeTag, GridParameterGroup) << ".File."); - } - catch (...) { throw; } - } -}; - -#endif // HAVE_ALBERTA - // TODO Petrel grids with dune-cornerpoint } // namespace Dumux diff --git a/dune.module b/dune.module index f5b67e6c62c8de74efa3738341bfd91a107c1048..f3183238c85ea6fc7096b799ca42813902f82294 100644 --- a/dune.module +++ b/dune.module @@ -2,5 +2,5 @@ Module: dumux Version: 2.9-git Maintainer: dumux@listserv.uni-stuttgart.de Depends: dune-grid (>= 2.4) dune-localfunctions (>= 2.4) dune-istl (>= 2.4) -Suggests: dune-alugrid (>=2.4) dune-pdelab (>=2.0) dune-multidomain dune-cornerpoint +Suggests: dune-alugrid (>=2.4) dune-pdelab (>=2.0) dune-multidomain dune-cornerpoint dune-foamgrid (>=2.4) Whitespace-Hook: Yes diff --git a/test/porousmediumflow/1p/implicit/1ptestproblem.hh b/test/porousmediumflow/1p/implicit/1ptestproblem.hh index 18ceeeb4549f94e337d153cfb322d42c5dc99316..0c6d2e076012a70ad1cdcc17012f1d72f3412173 100644 --- a/test/porousmediumflow/1p/implicit/1ptestproblem.hh +++ b/test/porousmediumflow/1p/implicit/1ptestproblem.hh @@ -82,17 +82,17 @@ NEW_TYPE_TAG(OnePTestCCProblemWithAMG, INHERITS_FROM(OnePTestCCProblem)); SET_TYPE_PROP(OnePTestBoxProblemWithAMG, LinearSolver, Dumux::AMGBackend<TypeTag> ); SET_TYPE_PROP(OnePTestCCProblemWithAMG, LinearSolver, Dumux::AMGBackend<TypeTag> ); -// if AlbertaGrid is available, test for dim < dimWorld -#if HAVE_ALBERTA +// if FoamGrid is available, test for dim < dimWorld +#if HAVE_DUNE_FOAMGRID NEW_TYPE_TAG(OnePOneDThreeDTestProblem, INHERITS_FROM(OnePTestProblem)); NEW_TYPE_TAG(OnePOneDThreeDTestBoxProblem, INHERITS_FROM(BoxModel, OnePOneDThreeDTestProblem)); NEW_TYPE_TAG(OnePOneDThreeDTestCCProblem, INHERITS_FROM(CCModel, OnePOneDThreeDTestProblem)); -SET_TYPE_PROP(OnePOneDThreeDTestProblem, Grid, Dune::AlbertaGrid<1, 3>); +SET_TYPE_PROP(OnePOneDThreeDTestProblem, Grid, Dune::FoamGrid<1, 3>); NEW_TYPE_TAG(OnePTwoDThreeDTestProblem, INHERITS_FROM(OnePTestProblem)); NEW_TYPE_TAG(OnePTwoDThreeDTestBoxProblem, INHERITS_FROM(BoxModel, OnePTwoDThreeDTestProblem)); NEW_TYPE_TAG(OnePTwoDThreeDTestCCProblem, INHERITS_FROM(CCModel, OnePTwoDThreeDTestProblem)); -SET_TYPE_PROP(OnePTwoDThreeDTestProblem, Grid, Dune::AlbertaGrid<2, 3>); +SET_TYPE_PROP(OnePTwoDThreeDTestProblem, Grid, Dune::FoamGrid<2, 3>); #endif // Enable gravity diff --git a/test/porousmediumflow/1p/implicit/CMakeLists.txt b/test/porousmediumflow/1p/implicit/CMakeLists.txt index 2648932a4adaf909adef5a6d191c7caa2c349642..ae6d385d03d498361d0c2c9813a02ac9b5ad6ed1 100644 --- a/test/porousmediumflow/1p/implicit/CMakeLists.txt +++ b/test/porousmediumflow/1p/implicit/CMakeLists.txt @@ -63,14 +63,13 @@ add_dumux_test(test_cc1pniconvection test_cc1pniconvection test_cc1pniconvection ${CMAKE_CURRENT_BINARY_DIR}/cc1pniconvection-00011.vtu --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1pniconvection") -# dim < dimWorld tests +# dim < dimWorld tests with foamgrid add_dumux_test(test_box1p1d3d test_box1p1d3d test_box1p1d3d.cc python ${CMAKE_SOURCE_DIR}/bin/runtest.py --script fuzzy --files ${CMAKE_SOURCE_DIR}/test/references/1ptestbox1d3d-reference.vtp ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox1d3d-00002.vtp --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p1d3d") -add_dune_alberta_flags(test_box1p1d3d GRIDDIM 1 WORLDDIM 3) add_dumux_test(test_box1p2d3d test_box1p2d3d test_box1p2d3d.cc python ${CMAKE_SOURCE_DIR}/bin/runtest.py @@ -78,7 +77,6 @@ add_dumux_test(test_box1p2d3d test_box1p2d3d test_box1p2d3d.cc --files ${CMAKE_SOURCE_DIR}/test/references/1ptestbox2d3d-reference.vtu ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox2d3d-00002.vtu --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p2d3d") -add_dune_alberta_flags(test_box1p2d3d GRIDDIM 2 WORLDDIM 3) add_dumux_test(test_cc1p1d3d test_cc1p1d3d test_cc1p1d3d.cc python ${CMAKE_SOURCE_DIR}/bin/runtest.py @@ -86,7 +84,6 @@ add_dumux_test(test_cc1p1d3d test_cc1p1d3d test_cc1p1d3d.cc --files ${CMAKE_SOURCE_DIR}/test/references/1ptestcc1d3d-reference.vtp ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc1d3d-00002.vtp --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p1d3d") -add_dune_alberta_flags(test_cc1p1d3d GRIDDIM 1 WORLDDIM 3) add_dumux_test(test_cc1p2d3d test_cc1p2d3d test_cc1p2d3d.cc python ${CMAKE_SOURCE_DIR}/bin/runtest.py @@ -94,7 +91,6 @@ add_dumux_test(test_cc1p2d3d test_cc1p2d3d test_cc1p2d3d.cc --files ${CMAKE_SOURCE_DIR}/test/references/1ptestcc2d3d-reference.vtu ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc2d3d-00002.vtu --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2d3d") -add_dune_alberta_flags(test_cc1p2d3d GRIDDIM 2 WORLDDIM 3) #install sources diff --git a/test/porousmediumflow/1p/implicit/test_box1p1d3d.cc b/test/porousmediumflow/1p/implicit/test_box1p1d3d.cc index ead71ba7cf9fe4ab3e864cc2600800e03dfe7e7f..0da90bc7d5c5d097681d1c9645bf631134f676b9 100644 --- a/test/porousmediumflow/1p/implicit/test_box1p1d3d.cc +++ b/test/porousmediumflow/1p/implicit/test_box1p1d3d.cc @@ -59,12 +59,12 @@ void usage(const char *progName, const std::string &errorMsg) int main(int argc, char** argv) { -#if HAVE_ALBERTA +#if HAVE_DUNE_FOAMGRID typedef TTAG(OnePOneDThreeDTestBoxProblem) ProblemTypeTag; return Dumux::start<ProblemTypeTag>(argc, argv, usage); #else -#warning External grid Alberta needed to run this example. - std::cerr << "Test skipped, it needs Alberta!" << std::endl; +#warning External grid module dune-foamgrid needed to run this example. + std::cerr << "Test skipped, it needs dune-foamgrid!" << std::endl; return 77; #endif } diff --git a/test/porousmediumflow/1p/implicit/test_box1p2d3d.cc b/test/porousmediumflow/1p/implicit/test_box1p2d3d.cc index 2b3c60193a5c51d27bcc546e93f5c549169a6003..ad262e065cc2fba88d792efb8a0b669db9fd9e8d 100644 --- a/test/porousmediumflow/1p/implicit/test_box1p2d3d.cc +++ b/test/porousmediumflow/1p/implicit/test_box1p2d3d.cc @@ -59,12 +59,12 @@ void usage(const char *progName, const std::string &errorMsg) int main(int argc, char** argv) { -#if HAVE_ALBERTA +#if HAVE_DUNE_FOAMGRID typedef TTAG(OnePTwoDThreeDTestBoxProblem) ProblemTypeTag; return Dumux::start<ProblemTypeTag>(argc, argv, usage); #else -#warning External grid Alberta needed to run this example. - std::cerr << "Test skipped, it needs Alberta!" << std::endl; +#warning External grid module dune-foamgrid needed to run this example. + std::cerr << "Test skipped, it needs dune-foamgrid!" << std::endl; return 77; #endif } diff --git a/test/porousmediumflow/1p/implicit/test_cc1p1d3d.cc b/test/porousmediumflow/1p/implicit/test_cc1p1d3d.cc index 322d0ed5e34ff78de7aaf3f920cc7f0cd249c479..0ed1566786b42788796caa6eb71debe13dc1c0c2 100644 --- a/test/porousmediumflow/1p/implicit/test_cc1p1d3d.cc +++ b/test/porousmediumflow/1p/implicit/test_cc1p1d3d.cc @@ -59,12 +59,12 @@ void usage(const char *progName, const std::string &errorMsg) int main(int argc, char** argv) { -#if HAVE_ALBERTA +#if HAVE_DUNE_FOAMGRID typedef TTAG(OnePOneDThreeDTestCCProblem) ProblemTypeTag; return Dumux::start<ProblemTypeTag>(argc, argv, usage); #else -#warning External grid Alberta needed to run this example. - std::cerr << "Test skipped, it needs Alberta!" << std::endl; +#warning External grid module dune-foamgrid needed to run this example. + std::cerr << "Test skipped, it needs dune-foamgrid!" << std::endl; return 77; #endif } diff --git a/test/porousmediumflow/1p/implicit/test_cc1p2d3d.cc b/test/porousmediumflow/1p/implicit/test_cc1p2d3d.cc index a33ad5ffbea99ffdf931b08caff6ecbf40d2844f..2a7d1e6e5a021e57c3f03c0b83a5d16f7e127304 100644 --- a/test/porousmediumflow/1p/implicit/test_cc1p2d3d.cc +++ b/test/porousmediumflow/1p/implicit/test_cc1p2d3d.cc @@ -59,12 +59,12 @@ void usage(const char *progName, const std::string &errorMsg) int main(int argc, char** argv) { -#if HAVE_ALBERTA +#if HAVE_DUNE_FOAMGRID typedef TTAG(OnePTwoDThreeDTestCCProblem) ProblemTypeTag; return Dumux::start<ProblemTypeTag>(argc, argv, usage); #else -#warning External grid Alberta needed to run this example. - std::cerr << "Test skipped, it needs Alberta!" << std::endl; +#warning External grid module dune-foamgrid needed to run this example. + std::cerr << "Test skipped, it needs dune-foamgrid!" << std::endl; return 77; #endif }