Commit d74539ca authored by Christoph Grüninger's avatar Christoph Grüninger
Browse files

Merge branch 'feature/drop-alberta-for-foamgrid' into 'master'

Feature/drop alberta for foamgrid



See merge request !62
parents a7d47a48 5e16b369
......@@ -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
......
......@@ -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}.}.
......
......@@ -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.
......
......@@ -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}
......
......@@ -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
......
......@@ -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
......
......@@ -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
......@@ -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
......
......@@ -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
......
......@@ -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
}
......@@ -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
}
......@@ -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
}
......@@ -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
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment