The TS-GitLab will have to shut down towards the end of the year — please think about migrating your projects to GitLab.com or GitHub.
(This is still a very early message, meant to keep you informed. There will be more urgent ones in the future.)

Commit a740e783 authored by Lukas Riedel's avatar Lukas Riedel
Browse files

Merge branch 'sospinar/dorie-feature/simulation-traits' into 'master'

Simulation Traits

See #73

See merge request !65
parents c013eeb5 1e1b98b0
......@@ -10,6 +10,11 @@
* Rebuilds of the DUNE environment Docker image are now triggered by setting the
CI variable `REBUILD_BASE_IMAGE` to a non-empty value. Previously, the
builds in stage `setup` where triggered by any manual pipeline run.
* `Simulation` is renamed `RichardsSimulation` and moved to
[richards_simulation.hh](dune/dorie/interface/richards_simulation.hh).
* `RichardsSimulation` now has its own `RichardsSimulationTraits` derived from
`BaseTraits`, which defines all its member types. `BaseTraits` now have
reduced content and are intended to be shared between models/simulations.
### Fixed
* Removed VTK output from `dorie_mass_conservation` executable, which would
......@@ -26,25 +31,25 @@
### Added
* DORiE now employs a `SubsamplingVTKWriter` for higher output precision.
Subsampling levels are controlled via the new key `output.subsamplingLevel`.
* Automatic deployment of `devel` and stable DORiE Docker Images to Docker Hub
* Automatic update of the DUNE environment Docker Image for `master` builds
* CI pipeline now also compiles a Debug build with the LLVM Clang compiler
* Automatic deployment of `devel` and stable DORiE Docker Images to Docker Hub.
* Automatic update of the DUNE environment Docker Image for `master` builds.
* CI pipeline now also compiles a Debug build with the LLVM Clang compiler.
* Add `.gitattributes` for `CHANGELOG.md` to reduce merge conflicts with
`merge=union`
`merge=union`.
* Public API definition in documentation.
### Changed
* Update code base to DUNE v2.6
* Update code base to *DUNE v2.6*.
* Raise software requirements to versions available on Ubuntu 18.04 LTS
(Bionic Beaver)
* Switch VTK output from conforming to non-conforming
(Bionic Beaver).
* Switch VTK output from conforming to non-conforming.
* Use `multicore` build tag only for `test:parallel` build because the current
GitLab Runner cannot handle the load
GitLab Runner cannot handle the load.
* Use the `OVLP_AMG_4_DG` linear solver for all computations, including
sequential ones. This significantly improves performance for large problems.
* Change compilation order which reduces RAM usage when compiling in parallel.
* Decentralization of the header system so that in most of the header files are
independent of each other
independent of each other.
### Deprecated
* `output.subsamplingLevel` is optional and defaults to 0 if not given
......@@ -64,4 +69,4 @@
## 1.0.0 (2018-03-28)
First stable version
\ No newline at end of file
First stable version.
\ No newline at end of file
......@@ -16,11 +16,12 @@
#include <dune/grid/yaspgrid.hh>
#include <dune/grid/uggrid.hh>
#include "interface/simulation.hh"
#include "interface/richards_simulation.hh"
#include "solver/util_grid_creator.hh"
// #include <dune/dorie/dorie.hh> // System and DUNE Headers
//===============================================================
// Main program with grid setup
//===============================================================
......@@ -37,32 +38,24 @@
* \see Dune::Dorie::FlowSource Class handling Source Term query functions
*/
namespace Dune{
namespace Dorie{
/// Resolve the second (default) template parameter of YaspGrid
template<int dim>
using YaspGrid = Dune::YaspGrid<dim>;
}
}
template<typename Traits>
using Sim = Dune::Dorie::Simulation<Traits>;
using Sim = Dune::Dorie::RichardsSimulation<Traits>;
template<int dim, int order>
using Simplex = Dune::Dorie::BaseTraits<Dune::UGGrid,
Dune::GeometryType::BasicType::simplex,dim,order,true,false>;
using Simplex = Dune::Dorie::RichardsSimulationTraits<Dune::Dorie::BaseTraits<Dune::UGGrid<dim>,
Dune::GeometryType::BasicType::simplex,true,false>,order>;
template<int dim, int order>
using SimplexAdaptive = Dune::Dorie::BaseTraits<Dune::UGGrid,
Dune::GeometryType::BasicType::simplex,dim,order,true,true>;
using SimplexAdaptive = Dune::Dorie::RichardsSimulationTraits<Dune::Dorie::BaseTraits<Dune::UGGrid<dim>,
Dune::GeometryType::BasicType::simplex,true,true>,order>;
template<int dim, int order>
using Cube = Dune::Dorie::BaseTraits<Dune::Dorie::YaspGrid,
Dune::GeometryType::BasicType::cube,dim,order,true,false>;
using Cube = Dune::Dorie::RichardsSimulationTraits<Dune::Dorie::BaseTraits<Dune::YaspGrid<dim>,
Dune::GeometryType::BasicType::cube,true,false>,order>;
template<int dim, int order>
using CubeAdaptive = Dune::Dorie::BaseTraits<Dune::UGGrid,
Dune::GeometryType::BasicType::cube,dim,order,true,true>;
using CubeAdaptive = Dune::Dorie::RichardsSimulationTraits<Dune::Dorie::BaseTraits<Dune::UGGrid<dim>,
Dune::GeometryType::BasicType::cube,true,true>,order>;
/// Main Program Function: Initialize parameter file reader, build grid and call Richards Solver.
/** As simplex and rectangular grids demand different FiniteElementMaps, the program calls different functions for these tasks.
......
......@@ -7,12 +7,9 @@
namespace Dune{
namespace Dorie{
template<int dim>
using YaspGrid = Dune::YaspGrid<dim>;
using Geo = Dune::GeometryType::BasicType;
}
}
#endif // DUNE_DORIE_IMPL_HH
#endif // DUNE_DORIE_IMPL_HH
\ No newline at end of file
......@@ -3,14 +3,14 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<UGGrid,Geo::cube,2,1,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,2,1,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,2,1,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<2>,Geo::cube,true,true>,1>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<2>,Geo::simplex,true,true>,1>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<2>,Geo::simplex,true,false>,1>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -3,14 +3,14 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<UGGrid,Geo::cube,2,2,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,2,2,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,2,2,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<2>,Geo::cube,true,true>,2>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<2>,Geo::simplex,true,true>,2>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<2>,Geo::simplex,true,false>,2>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -3,14 +3,14 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<UGGrid,Geo::cube,2,3,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,2,3,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,2,3,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<2>,Geo::cube,true,true>,3>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<2>,Geo::simplex,true,true>,3>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<2>,Geo::simplex,true,false>,3>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -3,14 +3,14 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<UGGrid,Geo::cube,3,1,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,3,1,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,3,1,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<3>,Geo::cube,true,true>,1>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<3>,Geo::simplex,true,true>,1>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<3>,Geo::simplex,true,false>,1>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -3,14 +3,14 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<UGGrid,Geo::cube,3,2,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,3,2,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,3,2,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<3>,Geo::cube,true,true>,2>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<3>,Geo::simplex,true,true>,2>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<3>,Geo::simplex,true,false>,2>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
} // namespace Dune
......@@ -3,14 +3,14 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<UGGrid,Geo::cube,3,3,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,3,3,true,true>>;
template class Simulation<BaseTraits<UGGrid,Geo::simplex,3,3,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<3>,Geo::cube,true,true>,3>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<3>,Geo::simplex,true,true>,3>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<UGGrid<3>,Geo::simplex,true,false>,3>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -3,12 +3,12 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<YaspGrid,Geo::cube,2,1,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<YaspGrid<2>,Geo::cube,true,false>,1>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -3,12 +3,12 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<YaspGrid,Geo::cube,2,2,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<YaspGrid<2>,Geo::cube,true,false>,2>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -3,12 +3,12 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<YaspGrid,Geo::cube,2,3,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<YaspGrid<2>,Geo::cube,true,false>,3>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -3,12 +3,12 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<YaspGrid,Geo::cube,3,1,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<YaspGrid<3>,Geo::cube,true,false>,1>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -3,12 +3,12 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<YaspGrid,Geo::cube,3,2,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<YaspGrid<3>,Geo::cube,true,false>,2>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -3,12 +3,12 @@
#endif
#include <dune/dorie/impl/impl.hh>
#include <dune/dorie/interface/simulation.cc>
#include <dune/dorie/interface/richards_simulation.cc>
namespace Dune{
namespace Dorie{
template class Simulation<BaseTraits<YaspGrid,Geo::cube,3,3,true,false>>;
template class RichardsSimulation<RichardsSimulationTraits<BaseTraits<YaspGrid<3>,Geo::cube,true,false>,3>>;
} // namespace Dorie
} // namespace Dune
\ No newline at end of file
......@@ -22,7 +22,7 @@ namespace Dune{
namespace Dorie{
/// Adaptivity base class. Does nothing.
template<typename Traits, typename GFS, typename Param, typename Boundary, typename U>
template<typename Traits, typename GFS, typename Param, typename Boundary, typename U, int order>
class AdaptivityHandlerBase
{
private:
......@@ -45,11 +45,11 @@ template<typename Traits,
typename GFS,
typename Param,
typename Boundary,
typename U>
class AdaptivityHandler : public AdaptivityHandlerBase<Traits,GFS,Param,Boundary,U>
typename U,
int order>
class AdaptivityHandler : public AdaptivityHandlerBase<Traits,GFS,Param,Boundary,U,order>
{
private:
static constexpr int order = Traits::fem_order;
using RF = typename Traits::RF;
using Grid = typename Traits::Grid;
using GV = typename Traits::GV;
......@@ -88,7 +88,7 @@ public:
* \param grid Grid to adapt (reference is not saved)
*/
AdaptivityHandler (Dune::ParameterTree& _inifile, Grid& grid)
: AdaptivityHandlerBase<Traits,GFS,Param,Boundary,U>(),
: AdaptivityHandlerBase<Traits,GFS,Param,Boundary,U,order>(),
inifile(_inifile),
maxLevel(inifile.get<int>("adaptivity.maxLevel")),
minLevel(inifile.get<int>("adaptivity.minLevel")),
......@@ -246,14 +246,14 @@ public:
* The constexpr boolean adapt_grid in Dune::Dorie::BaseTraits will
* define which create() function is enabled at compile time.
*/
template<typename Traits, typename GFS, typename Param, typename Boundary, typename U>
template<typename Traits, typename GFS, typename Param, typename Boundary, typename U, int order>
struct AdaptivityHandlerFactory
{
private:
static constexpr bool enabled = Traits::adapt_grid;
using Grid = typename Traits::Grid;
using AHB = AdaptivityHandlerBase<Traits,GFS,Param,Boundary,U>;
using AHB = AdaptivityHandlerBase<Traits,GFS,Param,Boundary,U,order>;
Dune::ParameterTree& inifile;
Grid& grid;
......@@ -287,7 +287,7 @@ public:
std::is_same<Grid,Dune::UGGrid<3>>::value,
"Adaptivity is only implemented for UGGrid!");
std::unique_ptr<AHB> p;
p = std::make_unique<AdaptivityHandler<Traits,GFS,Param,Boundary,U>>(inifile,grid);
p = std::make_unique<AdaptivityHandler<Traits,GFS,Param,Boundary,U,order>>(inifile,grid);
return p;
}
};
......
......@@ -64,13 +64,13 @@ public:
};
template<typename Traits>
class KnoFuInterface : public Simulation<Traits>
class KnoFuInterface : public RichardsSimulation<Traits>
{
protected:
using RF = typename Traits::RF;
using Grid = typename Traits::Grid;
using Base = Simulation<Traits>;
using Base = RichardsSimulation<Traits>;
using Parameters = typename Base::Parameters;
/// Interface uses GV on constant level
......@@ -99,7 +99,7 @@ public:
using SolutionContainer = typename KFU::Container;
KnoFuInterface (Dune::MPIHelper& _helper, std::shared_ptr<Grid> _grid, Dune::ParameterTree& _inifile)
: Simulation<Traits>(_helper,_grid,_inifile),
: RichardsSimulation<Traits>(_helper,_grid,_inifile),
kfgv(_grid->levelGridView(_inifile.get<int>("grid.initialLevel"))),
kfgfs(KFGFSHelper::create(kfgv)),
kfu(kfgfs,0.0)
......
#include "simulation.hh"
#include "richards_simulation.hh"
namespace Dune{
namespace Dorie{
template<typename Traits>
Simulation<Traits>::Simulation (Dune::MPIHelper& _helper, std::shared_ptr<Grid> _grid, Dune::ParameterTree& _inifile) :
RichardsSimulation<Traits>::RichardsSimulation (Dune::MPIHelper& _helper, std::shared_ptr<Grid> _grid, Dune::ParameterTree& _inifile) :
helper(_helper), grid(_grid), inifile(_inifile), gv(grid->leafGridView()),
mbe_slop(estimate_mbe_entries<typename MBE::size_type>(Traits::dim,Traits::GridGeometryType)),
mbe_tlop(1),
......@@ -69,7 +69,7 @@ Simulation<Traits>::Simulation (Dune::MPIHelper& _helper, std::shared_ptr<Grid>
}
template<typename Traits>
void Simulation<Traits>::operator_setup ()
void RichardsSimulation<Traits>::operator_setup ()
{
Dune::PDELab::constraints(*this->gfs,*this->cc,false);
// --- Grid Operators ---
......@@ -115,7 +115,7 @@ void Simulation<Traits>::operator_setup ()
}
template<typename Traits>
bool Simulation<Traits>::compute_time_step ()
bool RichardsSimulation<Traits>::compute_time_step ()
{
const RF t = controller->getTime();
const RF dt = controller->getDT();
......@@ -153,7 +153,7 @@ bool Simulation<Traits>::compute_time_step ()
}
template<typename Traits>
void Simulation<Traits>::run ()
void RichardsSimulation<Traits>::run ()
{
const auto t_start = controller->getTime();
output->write_vtk_output(t_start);
......
#ifndef DUNE_DORIE_SIMULATION_HH
#define DUNE_DORIE_SIMULATION_HH
#ifndef DUNE_DORIE_RICHARDS_SIMULATION_HH
#define DUNE_DORIE_RICHARDS_SIMULATION_HH
#include <memory>
#include <string>
......@@ -17,30 +17,39 @@
#include "output.hh"
#include "adaptivity.hh"
#include "../solver/util_interpolator.hh"
#include "../solver/param_base.hh"
#include "../solver/param_factory.hh"
#include "../solver/richards_initial.hh"
#include "../solver/richards_boundary.hh"
#include "../solver/richards_source.hh"
#include "../solver/richards_initial.hh"
#include "../solver/operator_DG.hh"
#include "../solver/util_controller.hh"
namespace Dune{
namespace Dorie{
/// Basic Simulation class providing objects and functions for computing the solution
template<typename Traits>
class Simulation
/*-------------------------------------------------------------------------*//**
* @brief Traits for the class RichardsSimulation. In particular, this
* class extends BaseTraits to be used for the DG implementation of
* the Richards simulation
*
* @tparam BaseTraits Traits defining domain and range field properties of
* the simulation.
* @tparam order Order of the polynomial degree used for the basis
* functions in the DG method
*/
template<class BaseTraits, int order>
struct RichardsSimulationTraits : public BaseTraits
{
protected:
static constexpr int dim = Traits::dim;
static constexpr int order = Traits::fem_order;
using RF = typename Traits::RF;
using Grid = typename Traits::Grid;
using GV = typename Traits::GV;
static constexpr int dim = BaseTraits::dim;
static constexpr int fem_order = order;
using RF = typename BaseTraits::RF;
using Grid = typename BaseTraits::Grid;
using GV = typename BaseTraits::GV;
/// GFS Helper
using GFSHelper = Dune::Dorie::GridFunctionSpaceHelper<GV,RF,Traits::fem_order,Traits::GridGeometryType>;
using GFSHelper = Dune::Dorie::GridFunctionSpaceHelper<GV,RF,fem_order,BaseTraits::GridGeometryType>;
/// Problem GFS
using GFS = typename GFSHelper::Type;
/// GFS Constraints Container
......@@ -48,7 +57,7 @@ protected:
/// LSGFS Helper
using LSGFSHelper = Dune::Dorie::LinearSolverGridFunctionSpaceHelper<GV,RF,Traits::GridGeometryType>;
using LSGFSHelper = Dune::Dorie::LinearSolverGridFunctionSpaceHelper<GV,RF,BaseTraits::GridGeometryType>;
/// Linear solver GFS
using LSGFS = typename LSGFSHelper::Type;
/// LSGFS Constraints Container
......@@ -56,23 +65,23 @@ protected:
// -- DORiE Class Definitions -- //
/// Parameter Interpolator
using Interpolator = Dune::Dorie::InterpolatorBase<Traits,Traits::dim>;
using Interpolator = Dune::Dorie::InterpolatorBase<BaseTraits,BaseTraits::dim>;
/// Factory class for Interpolator
using InterpolatorFactory = Dune::Dorie::InterpolatorFactory<Traits,Traits::dim>;
using InterpolatorFactory = Dune::Dorie::InterpolatorFactory<BaseTraits,BaseTraits::dim>;
/// Class handling soil parameters
using Parameters = Dune::Dorie::ParameterizationBase<Traits,Interpolator>;
using Parameters = Dune::Dorie::ParameterizationBase<BaseTraits,Interpolator>;
/// Factory class for Parmeter class
using ParameterizationFactory = Dune::Dorie::ParameterizationFactory<Traits,Interpolator>;
using ParameterizationFactory = Dune::Dorie::ParameterizationFactory<BaseTraits,Interpolator>;
/// Class defining boundary conditions
using FlowBoundary = Dune::Dorie::FlowBoundary<Traits>;
using FlowBoundary = Dune::Dorie::FlowBoundary<BaseTraits>;
/// Class defining source terms
using FlowSource = Dune::Dorie::FlowSource<Traits,Parameters>;
using FlowSource = Dune::Dorie::FlowSource<BaseTraits,Parameters>;
/// Class defining the initial condition
using FlowInitial = Dune::Dorie::FlowInitial<Traits,Parameters>;
using FlowInitial = Dune::Dorie::FlowInitial<BaseTraits,Parameters>;
/// Local spatial operator
using SLOP = Dune::Dorie::Operator::RichardsDGSpatialOperator<Traits,Parameters,FlowBoundary,FlowSource,typename GFSHelper::FEM,false>;
using SLOP = Dune::Dorie::Operator::RichardsDGSpatialOperator<BaseTraits,Parameters,FlowBoundary,FlowSource,typename GFSHelper::FEM,false>;
/// Local temporal operator
using TLOP = Dune::Dorie::Operator::RichardsDGTemporalOperator<Traits,Parameters,typename GFSHelper::FEM,false>;
using TLOP = Dune::Dorie::Operator::RichardsDGTemporalOperator<BaseTraits,Parameters,typename GFSHelper::FEM,false>;
/// Time controller
using CalculationController = Dune::Dorie::CalculationController<RF,FlowBoundary>;
......@@ -99,13 +108,106 @@ protected:
// -- Utility Class Definitions -- //
/// VTK Output writer base class
using OutputWriter = Dune::Dorie::OutputWriterBase<Traits>;
using OutputWriter = Dune::Dorie::OutputWriterBase<BaseTraits>;
/// Factory for creating the output writer
using OutputWriterFactory = Dune::Dorie::OutputWriterFactory<Traits,GFS,Parameters,U>;
using OutputWriterFactory = Dune::Dorie::OutputWriterFactory<BaseTraits,GFS,Parameters,U>;
/// Grid Adaptivity Handler base class
using AdaptivityHandler = Dune::Dorie::AdaptivityHandlerBase<Traits,GFS,Parameters,FlowBoundary,U>;
using AdaptivityHandler = Dune::Dorie::AdaptivityHandlerBase<BaseTraits,GFS,Parameters,FlowBoundary,U,order>;
/// Factory for creating the AdaptivityHandler
using AdaptivityHandlerFactory = Dune::Dorie::AdaptivityHandlerFactory<Traits,GFS,Parameters,FlowBoundary,U>;
using AdaptivityHandlerFactory = Dune::Dorie::AdaptivityHandlerFactory<BaseTraits,GFS,Parameters,FlowBoundary,U,order>;
};
/*-------------------------------------------------------------------------*//**
* @brief Class for Richards simulation. This class manages the simulation
* for the richards equation. It can perform time-steps and print
* the solution
*
* @tparam RichardsSimulationTraits Traits containing the type definitions
* for Richards Simulation
*/
template<typename RichardsSimulationTraits>
class RichardsSimulation
{
public: