diff --git a/dumux/assembly/staggeredfvassembler.hh b/dumux/assembly/staggeredfvassembler.hh index d3dc3203c8e16ea360b8d7a99a2a19090d1853cf..1fa58bafeb7ac53de52f74d82436e91ba32e78dd 100644 --- a/dumux/assembly/staggeredfvassembler.hh +++ b/dumux/assembly/staggeredfvassembler.hh @@ -29,7 +29,6 @@ #include <dune/istl/matrixindexset.hh> #include <dumux/common/timeloop.hh> -#include <dumux/implicit/staggered/properties.hh> #include <dumux/implicit/staggered/localresidual.hh> #include <dumux/discretization/methods.hh> diff --git a/dumux/assembly/staggeredlocalassembler.hh b/dumux/assembly/staggeredlocalassembler.hh index f4d949ad7f1b2c85f060de0df190142ec12024ca..f7ab28422e68322dcb0215f3e9d7054f3db22d04 100644 --- a/dumux/assembly/staggeredlocalassembler.hh +++ b/dumux/assembly/staggeredlocalassembler.hh @@ -27,7 +27,7 @@ #include <dune/istl/matrixindexset.hh> #include <dune/istl/bvector.hh> -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> #include <dumux/assembly/diffmethod.hh> #include <dumux/implicit/staggered/primaryvariables.hh> diff --git a/dumux/common/staggeredfvproblem.hh b/dumux/common/staggeredfvproblem.hh index 248c965b5061b6ffd89c8de7944364f344cd18e0..384bbcd3cc62d210a4c12ef3400a86185bc7d51d 100644 --- a/dumux/common/staggeredfvproblem.hh +++ b/dumux/common/staggeredfvproblem.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_STAGGERD_FV_PROBLEM_HH #define DUMUX_STAGGERD_FV_PROBLEM_HH -#include <dumux/implicit/staggered/properties.hh> +#include <dumux/discretization/staggered/properties.hh> #include <dumux/common/fvproblem.hh> namespace Dumux diff --git a/dumux/discretization/staggered/connectivitymap.hh b/dumux/discretization/staggered/connectivitymap.hh index 9863d8eb490effacdbea05df390e4e1ed7a4d214..c71587679a5aa483b30114db32352ed029a7cb98 100644 --- a/dumux/discretization/staggered/connectivitymap.hh +++ b/dumux/discretization/staggered/connectivitymap.hh @@ -26,7 +26,7 @@ #define DUMUX_STAGGERED_CONNECTIVITY_MAP_HH #include <vector> -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> namespace Dumux { diff --git a/dumux/discretization/staggered/elementfluxvariablescache.hh b/dumux/discretization/staggered/elementfluxvariablescache.hh index 5feb420cea47a244087e541603edce95dcf22c73..adf2e895cefcf40fee06d28c5d556ee3f1ca30c3 100644 --- a/dumux/discretization/staggered/elementfluxvariablescache.hh +++ b/dumux/discretization/staggered/elementfluxvariablescache.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_DISCRETIZATION_STAGGERED_ELEMENT_FLUXVARSCACHE_HH #define DUMUX_DISCRETIZATION_STAGGERED_ELEMENT_FLUXVARSCACHE_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> namespace Dumux { diff --git a/dumux/discretization/staggered/elementvolumevariables.hh b/dumux/discretization/staggered/elementvolumevariables.hh index 0ada499689039043105ab4dbc8ba6542af3f6e9b..cdf0ff46bbfcf42aca36c8e9c80a77375b567fbb 100644 --- a/dumux/discretization/staggered/elementvolumevariables.hh +++ b/dumux/discretization/staggered/elementvolumevariables.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_DISCRETIZATION_STAGGERED_ELEMENT_VOLUMEVARIABLES_HH #define DUMUX_DISCRETIZATION_STAGGERED_ELEMENT_VOLUMEVARIABLES_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> namespace Dumux { diff --git a/dumux/discretization/staggered/freeflow/facevariables.hh b/dumux/discretization/staggered/freeflow/facevariables.hh index f9591f5101453f9afe0099efc4b7e13a72187293..7f8a7b00227e81f9e6107c7ea738d8888fed121b 100644 --- a/dumux/discretization/staggered/freeflow/facevariables.hh +++ b/dumux/discretization/staggered/freeflow/facevariables.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_DISCRETIZATION_STAGGERED_FREEFLOW_FACEVARIABLES_HH #define DUMUX_DISCRETIZATION_STAGGERED_FREEFLOW_FACEVARIABLES_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> namespace Dumux { diff --git a/dumux/discretization/staggered/fvelementgeometry.hh b/dumux/discretization/staggered/fvelementgeometry.hh index 8dca20b69ed6f23745c71095d75706d60956ab26..ef34bf41c2da24b92ad7bb0891fc67ad7db5afb5 100644 --- a/dumux/discretization/staggered/fvelementgeometry.hh +++ b/dumux/discretization/staggered/fvelementgeometry.hh @@ -28,7 +28,6 @@ #include <dune/common/iteratorrange.hh> #include <dumux/discretization/scvandscvfiterators.hh> -#include <dumux/implicit/staggered/properties.hh> namespace Dumux { diff --git a/dumux/discretization/staggered/fvgridgeometry.hh b/dumux/discretization/staggered/fvgridgeometry.hh index 31883f8f02b9f24d7ca625e1ab73b54307a9dc2d..8978074e8aba09b98528c09898c6e42e4ac61364 100644 --- a/dumux/discretization/staggered/fvgridgeometry.hh +++ b/dumux/discretization/staggered/fvgridgeometry.hh @@ -26,7 +26,6 @@ #define DUMUX_DISCRETIZATION_STAGGERED_GLOBAL_FVGEOMETRY_HH #include <dumux/common/elementmap.hh> -#include <dumux/implicit/staggered/properties.hh> #include <dumux/discretization/basefvgridgeometry.hh> #include <dumux/common/boundingboxtree.hh> #include <dumux/discretization/staggered/connectivitymap.hh> diff --git a/dumux/discretization/staggered/globalfacevariables.hh b/dumux/discretization/staggered/globalfacevariables.hh index 74c013decc19d8763669a7bedf29709a893fa704..7582a3bc260e61374e5b1fa6a71ab406785e203d 100644 --- a/dumux/discretization/staggered/globalfacevariables.hh +++ b/dumux/discretization/staggered/globalfacevariables.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_DISCRETIZATION_STAGGERED_GLOBAL_FACEVARIABLES_HH #define DUMUX_DISCRETIZATION_STAGGERED_GLOBAL_FACEVARIABLES_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> namespace Dumux { diff --git a/dumux/discretization/staggered/globalfluxvariablescache.hh b/dumux/discretization/staggered/globalfluxvariablescache.hh index 9e9a194ba7742e1a8bf5c140a825764e3ca70d1e..432b148255209f516fe418e4dc5eca446a5dbffb 100644 --- a/dumux/discretization/staggered/globalfluxvariablescache.hh +++ b/dumux/discretization/staggered/globalfluxvariablescache.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_DISCRETIZATION_STAGGERED_GLOBAL_FLUXVARSCACHE_HH #define DUMUX_DISCRETIZATION_STAGGERED_GLOBAL_FLUXVARSCACHE_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> #include <dumux/discretization/staggered/elementfluxvariablescache.hh> namespace Dumux diff --git a/dumux/discretization/staggered/globalvolumevariables.hh b/dumux/discretization/staggered/globalvolumevariables.hh index 003d8441096ccbf8972a8966d06a8704d420edd6..b9b0b3d89c226e014f653b06cf58a14643998c93 100644 --- a/dumux/discretization/staggered/globalvolumevariables.hh +++ b/dumux/discretization/staggered/globalvolumevariables.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_DISCRETIZATION_STAGGERED_GLOBAL_VOLUMEVARIABLES_HH #define DUMUX_DISCRETIZATION_STAGGERED_GLOBAL_VOLUMEVARIABLES_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> #include <dumux/discretization/staggered/elementvolumevariables.hh> namespace Dumux @@ -44,10 +44,6 @@ class StaggeredGlobalVolumeVariables<TypeTag, /*enableGlobalVolVarsCache*/true> // The local class needs to access and change volVars friend StaggeredElementVolumeVariables<TypeTag, true>; - // as does the primary variable switch - friend class PrimaryVariableSwitch<TypeTag>; - friend typename GET_PROP_TYPE(TypeTag, PrimaryVariableSwitch); - using Problem = typename GET_PROP_TYPE(TypeTag, Problem); using GridView = typename GET_PROP_TYPE(TypeTag, GridView); using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector); diff --git a/dumux/implicit/staggered/propertydefaults.hh b/dumux/discretization/staggered/properties.hh similarity index 71% rename from dumux/implicit/staggered/propertydefaults.hh rename to dumux/discretization/staggered/properties.hh index aa2fe95eab52cff8ef34ae129234803c06706a2c..c9a2d811b4e703caab7bae4ab0d2310849f7a55c 100644 --- a/dumux/implicit/staggered/propertydefaults.hh +++ b/dumux/discretization/staggered/properties.hh @@ -18,69 +18,63 @@ *****************************************************************************/ /*! * \ingroup Properties - * \ingroup CCTpfaProperties - * \ingroup StaggeredModel * \file * - * \brief Default properties for cell centered models + * \brief Defines a type tag and some properties for models using the box scheme. */ -#ifndef DUMUX_STAGGERED_PROPERTY_DEFAULTS_HH -#define DUMUX_STAGGERED_PROPERTY_DEFAULTS_HH -#include <dumux/implicit/propertydefaults.hh> -#include <dumux/discretization/staggered/fvgridgeometry.hh> -#include <dumux/discretization/staggered/fvelementgeometry.hh> -// #include <dumux/discretization/cellcentered/tpfa/fvelementgeometry.hh> -#include <dumux/implicit/staggered/properties.hh> +#ifndef DUMUX_STAGGERDs_PROPERTIES_HH +#define DUMUX_STAGGERDs_PROPERTIES_HH + +#include <dumux/common/properties.hh> + #include <dumux/discretization/methods.hh> +#include <dumux/discretization/fvproperties.hh> +#include <dumux/implicit/cellcentered/elementboundarytypes.hh> +#include <dumux/implicit/staggered/localresidual.hh> +#include <dumux/implicit/staggered/primaryvariables.hh> +#include <dumux/implicit/staggered/gridvariables.hh> + +#include <dumux/discretization/cellcentered/subcontrolvolume.hh> #include <dumux/discretization/staggered/globalfluxvariablescache.hh> #include <dumux/discretization/staggered/elementfluxvariablescache.hh> - -#include <dumux/discretization/staggered/elementvolumevariables.hh> #include <dumux/discretization/staggered/globalvolumevariables.hh> +#include <dumux/discretization/staggered/elementvolumevariables.hh> +#include <dumux/discretization/staggered/fvgridgeometry.hh> +#include <dumux/discretization/staggered/fvelementgeometry.hh> #include <dumux/discretization/staggered/globalfacevariables.hh> -#include <dune/common/fvector.hh> -#include <dune/common/fmatrix.hh> -#include <dune/common/indices.hh> -#include <dune/istl/bcrsmatrix.hh> +#include <dumux/common/intersectionmapper.hh> #include <dune/istl/multitypeblockvector.hh> #include <dune/istl/multitypeblockmatrix.hh> -#include <dumux/linear/seqsolverbackend.hh> +namespace Dumux +{ -#include <dumux/io/staggeredvtkoutputmodule.hh> -#include <dumux/common/intersectionmapper.hh> +// forward declarations +template<class TypeTag> class CCElementBoundaryTypes; -#include "localresidual.hh" -#include "properties.hh" -#include "newtoncontroller.hh" -#include "newtonconvergencewriter.hh" -#include "primaryvariables.hh" -#include "gridvariables.hh" +namespace Properties +{ -namespace Dumux { +NEW_PROP_TAG(CellCenterSolutionVector); +NEW_PROP_TAG(FaceSolutionVector); -// forward declarations -template<class TypeTag> class CCElementBoundaryTypes; +//! Type tag for the box scheme. +NEW_TYPE_TAG(StaggeredModel, INHERITS_FROM(FiniteVolumeModel, NumericModel)); -namespace Properties { //! Set the corresponding discretization method property SET_PROP(StaggeredModel, DiscretizationMethod) { static const DiscretizationMethods value = DiscretizationMethods::Staggered; }; - -//! Set the default for the global finite volume geometry +//! Set the default for the FVElementGeometry vector SET_TYPE_PROP(StaggeredModel, FVGridGeometry, StaggeredFVGridGeometry<TypeTag, GET_PROP_VALUE(TypeTag, EnableFVGridGeometryCache)>); -//! Set the default for the local finite volume geometry +//! Set the default for the FVElementGeometry vector SET_TYPE_PROP(StaggeredModel, FVElementGeometry, StaggeredFVElementGeometry<TypeTag, GET_PROP_VALUE(TypeTag, EnableFVGridGeometryCache)>); -// SET_TYPE_PROP(StaggeredModel, FVElementGeometry, Dumux::CCTpfaFVElementGeometry<TypeTag, GET_PROP_VALUE(TypeTag, EnableFVGridGeometryCache)>); -//TODO: try to use CC -SET_TYPE_PROP(StaggeredModel, GridVariables, StaggeredGridVariables<TypeTag>); //! The sub control volume SET_PROP(StaggeredModel, SubControlVolume) @@ -93,47 +87,46 @@ public: typedef Dumux::CCSubControlVolume<ScvGeometry, IndexType> type; }; +// SET_PROP(StaggeredModel, SubControlVolumeFace) +// { +// private: +// using GridView = typename GET_PROP_TYPE(TypeTag, GridView); +// using Scalar = typename GridView::ctype; +// static const int dim = GridView::dimension; +// static const int dimWorld = GridView::dimensionworld; +// using ScvfGeometry = Dune::MultiLinearGeometry<Scalar, dim-1, dimWorld>; +// using IndexType = typename GridView::IndexSet::IndexType; +// public: +// using type = BoxSubControlVolumeFace<ScvfGeometry, IndexType>; +// }; + SET_TYPE_PROP(StaggeredModel, GlobalFaceVars, Dumux::StaggeredGlobalFaceVariables<TypeTag>); //! Set the default for the ElementBoundaryTypes SET_TYPE_PROP(StaggeredModel, ElementBoundaryTypes, Dumux::CCElementBoundaryTypes<TypeTag>); -//! Mapper for the degrees of freedoms. -SET_TYPE_PROP(StaggeredModel, DofMapper, typename GET_PROP_TYPE(TypeTag, ElementMapper)); +//! The global volume variables vector class +SET_TYPE_PROP(StaggeredModel, GlobalVolumeVariables, StaggeredGlobalVolumeVariables<TypeTag, GET_PROP_VALUE(TypeTag, EnableGlobalVolumeVariablesCache)>); -//! The global current volume variables vector class -SET_TYPE_PROP(StaggeredModel, GlobalVolumeVariables, Dumux::StaggeredGlobalVolumeVariables<TypeTag, GET_PROP_VALUE(TypeTag, EnableGlobalVolumeVariablesCache)>); +//! The element volume variables vector class +SET_TYPE_PROP(StaggeredModel, ElementVolumeVariables, StaggeredElementVolumeVariables<TypeTag, GET_PROP_VALUE(TypeTag, EnableGlobalVolumeVariablesCache)>); //! The global flux variables cache vector class -SET_TYPE_PROP(StaggeredModel, GlobalFluxVariablesCache, Dumux::StaggeredGlobalFluxVariablesCache<TypeTag, GET_PROP_VALUE(TypeTag, EnableGlobalFluxVariablesCache)>); +SET_TYPE_PROP(StaggeredModel, GlobalFluxVariablesCache, StaggeredGlobalFluxVariablesCache<TypeTag, GET_PROP_VALUE(TypeTag, EnableGlobalFluxVariablesCache)>); //! The local flux variables cache vector class -SET_TYPE_PROP(StaggeredModel, ElementFluxVariablesCache, Dumux::StaggeredElementFluxVariablesCache<TypeTag, GET_PROP_VALUE(TypeTag, EnableGlobalFluxVariablesCache)>); - -//! The global previous volume variables vector class -SET_TYPE_PROP(StaggeredModel, ElementVolumeVariables, Dumux::StaggeredElementVolumeVariables<TypeTag, GET_PROP_VALUE(TypeTag, EnableGlobalVolumeVariablesCache)>); +SET_TYPE_PROP(StaggeredModel, ElementFluxVariablesCache, StaggeredElementFluxVariablesCache<TypeTag, GET_PROP_VALUE(TypeTag, EnableGlobalFluxVariablesCache)>); //! Set the BaseLocalResidual to StaggeredLocalResidual -SET_TYPE_PROP(StaggeredModel, BaseLocalResidual, Dumux::StaggeredLocalResidual<TypeTag>); +SET_TYPE_PROP(StaggeredModel, BaseLocalResidual, StaggeredLocalResidual<TypeTag>); -//! Set the BaseLocalResidual to StaggeredLocalResidual SET_TYPE_PROP(StaggeredModel, IntersectionMapper, Dumux::ConformingGridIntersectionMapper<TypeTag>); -//! indicate that this is no box discretization -SET_BOOL_PROP(StaggeredModel, ImplicitIsBox, false); - -SET_TYPE_PROP(StaggeredModel, NewtonController, StaggeredNewtonController<TypeTag>); - -SET_INT_PROP(StaggeredModel, NumEqCellCenter, 1); -SET_INT_PROP(StaggeredModel, NumEqFace, 1); - -SET_PROP(StaggeredModel, NumEq) +//! Definition of the indices for cell center and face dofs in the global solution vector +SET_PROP(StaggeredModel, DofTypeIndices) { -private: - static constexpr auto numEqCellCenter = GET_PROP_VALUE(TypeTag, NumEqCellCenter); - static constexpr auto numEqFace = GET_PROP_VALUE(TypeTag, NumEqFace); -public: - static constexpr auto value = numEqCellCenter + numEqFace; + using CellCenterIdx = Dune::index_constant<0>; + using FaceIdx = Dune::index_constant<1>; }; //! A vector of primary variables @@ -201,19 +194,23 @@ public: using type = typename Dune::MultiTypeBlockMatrix<RowCellCenter, RowFace>; }; -//! Definition of the indices for cell center and face dofs in the global solution vector -SET_PROP(StaggeredModel, DofTypeIndices) +SET_PROP(StaggeredModel, NumEq) { - using CellCenterIdx = Dune::index_constant<0>; - using FaceIdx = Dune::index_constant<1>; +private: + static constexpr auto numEqCellCenter = GET_PROP_VALUE(TypeTag, NumEqCellCenter); + static constexpr auto numEqFace = GET_PROP_VALUE(TypeTag, NumEqFace); +public: + static constexpr auto value = numEqCellCenter + numEqFace; }; -//! set default solver -// SET_TYPE_PROP(StaggeredModel, LinearSolver, Dumux::GSBiCGSTABBackend<TypeTag>); -SET_TYPE_PROP(StaggeredModel, LinearSolver, Dumux::UMFPackBackend<TypeTag>); +SET_PROP(StaggeredModel, LinearSolverBlockSize) +{ + // LinearSolverAcceptsMultiTypeMatrix<T>::value + // TODO: make somehow dependend? or only relevant for direct solvers? +public: + static constexpr auto value = 1; +}; -//! set the block level to 2, suitable for e.g. the Dune::MultiTypeBlockMatrix -SET_INT_PROP(StaggeredModel, LinearSolverPreconditionerBlockLevel, 2); //! Boundary types at a single degree of freedom SET_PROP(StaggeredModel, BoundaryTypes) @@ -236,17 +233,7 @@ public: using type = StaggeredPrimaryVariables<TypeTag, CellCenterPrimaryVariables, FacePrimaryVariables>; }; -//! use the plain newton convergence writer by default -// SET_TYPE_PROP(StaggeredModel, NewtonConvergenceWriter, StaggeredNewtonConvergenceWriter<TypeTag>); - -//! Write separate vtp files for face variables by default -SET_BOOL_PROP(StaggeredModel, VtkWriteFaceData, true); - -//! For compatibility -SET_BOOL_PROP(StaggeredModel, EnableInteriorBoundaries, false); - -//! Set staggered vtk output module -SET_TYPE_PROP(StaggeredModel, VtkOutputModule, StaggeredVtkOutputModule<TypeTag>); +SET_TYPE_PROP(StaggeredModel, GridVariables, StaggeredGridVariables<TypeTag>); //! Set one or different base epsilons for the calculations of the localJacobian's derivatives SET_PROP(StaggeredModel, BaseEpsilon) @@ -266,8 +253,9 @@ public: } }; -} // namespace Properties + +} // namespace Properties } // namespace Dumux #endif diff --git a/dumux/freeflow/staggered/fluxvariables.hh b/dumux/freeflow/staggered/fluxvariables.hh index b0c09bd413b038d16b29516ed395bb39aeec3689..b4d5878016e31ce9be89986caa86497ff56ccec6 100644 --- a/dumux/freeflow/staggered/fluxvariables.hh +++ b/dumux/freeflow/staggered/fluxvariables.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_FREELOW_IMPLICIT_FLUXVARIABLES_HH #define DUMUX_FREELOW_IMPLICIT_FLUXVARIABLES_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> #include <dumux/discretization/fluxvariablesbase.hh> namespace Dumux diff --git a/dumux/freeflow/staggered/fluxvariablescache.hh b/dumux/freeflow/staggered/fluxvariablescache.hh index e84095a7f12495816c0d8cef5de0836362b87b4c..10a568425b87c1889ae6b5617eca65425824af3c 100644 --- a/dumux/freeflow/staggered/fluxvariablescache.hh +++ b/dumux/freeflow/staggered/fluxvariablescache.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_FREEFLOW_IMPLICIT_FLUXVARIABLESCACHE_HH #define DUMUX_FREEFLOW_IMPLICIT_FLUXVARIABLESCACHE_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> #include <dune/localfunctions/lagrange/pqkfactory.hh> #include <dumux/discretization/methods.hh> diff --git a/dumux/freeflow/staggered/problem.hh b/dumux/freeflow/staggered/problem.hh index f954237503fe6234fe1e8258acf111392be0b7d9..75bcc68644c37482b592d938ce9139bcfb0fa74c 100644 --- a/dumux/freeflow/staggered/problem.hh +++ b/dumux/freeflow/staggered/problem.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_NAVIERSTOKES_PROBLEM_HH #define DUMUX_NAVIERSTOKES_PROBLEM_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> #include "properties.hh" #include <dumux/common/staggeredfvproblem.hh> diff --git a/dumux/freeflow/staggered/properties.hh b/dumux/freeflow/staggered/properties.hh index 246bcc04d70650ea5e3aa111a6e78f5b7e49e1d8..a3cf7e352aec2102dc028de81f450f8492223bd8 100644 --- a/dumux/freeflow/staggered/properties.hh +++ b/dumux/freeflow/staggered/properties.hh @@ -27,9 +27,13 @@ #ifndef DUMUX_NAVIERSTOKES_PROPERTIES_HH #define DUMUX_NAVIERSTOKES_PROPERTIES_HH + +#include <dumux/common/basicproperties.hh> +#include <dumux/linear/linearsolverproperties.hh> #include <dumux/freeflow/staggeredni/properties.hh> + namespace Dumux { // \{ @@ -43,7 +47,7 @@ namespace Properties { ////////////////////////////////////////////////////////////////// //! The type tags for the implicit single-phase problems -NEW_TYPE_TAG(NavierStokes); +NEW_TYPE_TAG(NavierStokes, INHERITS_FROM(LinearSolverTypeTag)); //! The type tags for the corresponding non-isothermal problems NEW_TYPE_TAG(NavierStokesNI, INHERITS_FROM(NavierStokes, NavierStokesNonIsothermal)); diff --git a/dumux/freeflow/staggered/propertydefaults.hh b/dumux/freeflow/staggered/propertydefaults.hh index ce0b78f6452928fbac547aca3390dab8cee085ee..4653b05b4720cc41333faa3592ceb588f10e5919 100644 --- a/dumux/freeflow/staggered/propertydefaults.hh +++ b/dumux/freeflow/staggered/propertydefaults.hh @@ -52,6 +52,7 @@ #include <dumux/discretization/staggered/freeflow/staggeredgeometryhelper.hh> #include <dumux/discretization/staggered/freeflow/subcontrolvolumeface.hh> #include <dumux/discretization/staggered/freeflow/facevariables.hh> +#include <dumux/implicit/staggered/primaryvariables.hh> @@ -191,6 +192,8 @@ SET_TYPE_PROP(NavierStokes, EnergyLocalResidual, FreeFlowEnergyLocalResidual<Typ SET_TYPE_PROP(NavierStokes, EnergyFluxVariables, FreeFlowEnergyFluxVariables<TypeTag>); +SET_BOOL_PROP(NavierStokes, EnableEnergyBalance, false); + //! average is used as default model to compute the effective thermal heat conductivity // SET_PROP(NavierStokesNI, ThermalConductivityModel) // { private : diff --git a/dumux/freeflow/staggered/velocityoutput.hh b/dumux/freeflow/staggered/velocityoutput.hh index 36951d7ef3923c592b7e20014f2c27caef325f96..d23742c85780f5222b0ef09fa3e093e45f9cb2bf 100644 --- a/dumux/freeflow/staggered/velocityoutput.hh +++ b/dumux/freeflow/staggered/velocityoutput.hh @@ -28,7 +28,7 @@ #include <dune/istl/bvector.hh> #include <dune/geometry/referenceelements.hh> -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> #include <dumux/discretization/methods.hh> namespace Dumux diff --git a/dumux/freeflow/staggered/vtkoutputfields.hh b/dumux/freeflow/staggered/vtkoutputfields.hh index 5d142ea1acca34be679a944090837b12d25b0432..e990f49a23a1f8bad2aeb801b2506616b8466bdc 100644 --- a/dumux/freeflow/staggered/vtkoutputfields.hh +++ b/dumux/freeflow/staggered/vtkoutputfields.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_NAVIER_STOKES_VTK_OUTPUT_FIELDS_HH #define DUMUX_NAVIER_STOKES_VTK_OUTPUT_FIELDS_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> namespace Dumux { diff --git a/dumux/freeflow/staggeredni/fluxvariables.hh b/dumux/freeflow/staggeredni/fluxvariables.hh index 34d8b7f6b49de94ec130adbb7d76310073871297..8fa221d1a522ff7e8f8e1931832d4c52c3c5785f 100644 --- a/dumux/freeflow/staggeredni/fluxvariables.hh +++ b/dumux/freeflow/staggeredni/fluxvariables.hh @@ -23,7 +23,7 @@ #ifndef DUMUX_FREELOW_IMPLICIT_NI_FLUXVARIABLES_HH #define DUMUX_FREELOW_IMPLICIT_NI_FLUXVARIABLES_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> namespace Dumux { @@ -144,7 +144,7 @@ private: const auto& upstreamVolVars = insideIsUpstream ? insideVolVars : outsideVolVars; const auto& downstreamVolVars = insideIsUpstream ? outsideVolVars : insideVolVars; - const Scalar upWindWeight = GET_PROP_VALUE(TypeTag, ImplicitUpwindWeight); + static const Scalar upWindWeight = getParamFromGroup<Scalar>(GET_PROP_VALUE(TypeTag, ModelParameterGroup), "Implicit.UpwindWeight"); const Scalar upstreamDensity = upstreamVolVars.density(); const Scalar downstreamDensity = downstreamVolVars.density(); const Scalar upstreamEnthalpy = upstreamVolVars.enthalpy(); diff --git a/dumux/freeflow/staggeredni/properties.hh b/dumux/freeflow/staggeredni/properties.hh index b3bbc8f45fa067d509dcae2154ec2e22bcef22b3..ca3b7a15f135413c502772a60a8d277e87cf0e23 100644 --- a/dumux/freeflow/staggeredni/properties.hh +++ b/dumux/freeflow/staggeredni/properties.hh @@ -27,7 +27,7 @@ #ifndef DUMUX_NAVIERSTOKES_NI_PROPERTIES_HH #define DUMUX_NAVIERSTOKES_NI_PROPERTIES_HH -#include <dumux/implicit/properties.hh> +#include <dumux/common/basicproperties.hh> namespace Dumux { diff --git a/dumux/freeflow/staggeredni/propertydefaults.hh b/dumux/freeflow/staggeredni/propertydefaults.hh index cd81fd2bbccb27f62b06e1ed69967d020de5c410..e9cc5cbc1dbcf79fac9cff907d26e2c7da5f435e 100644 --- a/dumux/freeflow/staggeredni/propertydefaults.hh +++ b/dumux/freeflow/staggeredni/propertydefaults.hh @@ -47,13 +47,11 @@ public: static constexpr auto value = isothermalNumEqCellCenter + 1; }; -SET_TYPE_PROP(NavierStokesNonIsothermal, Model, NavierStokesNonIsothermalModel<TypeTag>); - SET_TYPE_PROP(NavierStokesNonIsothermal, Indices, NavierStokesNonIsothermalIndices<TypeTag>); SET_BOOL_PROP(NavierStokesNonIsothermal, EnableEnergyBalance, true); -SET_TYPE_PROP(NavierStokesNonIsothermal, HeatConductionType, FouriersLaw<TypeTag>); +// SET_TYPE_PROP(NavierStokesNonIsothermal, HeatConductionType, FouriersLaw<TypeTag>); TODO } // end namespace Properties diff --git a/dumux/implicit/staggered/localresidual.hh b/dumux/implicit/staggered/localresidual.hh index e2f3caf56bb3a04505e51c143fa75bf96ed513af..d6b5941e2b0f77d0c2d842b0bc99f1ae4ad7228e 100644 --- a/dumux/implicit/staggered/localresidual.hh +++ b/dumux/implicit/staggered/localresidual.hh @@ -28,8 +28,7 @@ #include <dumux/common/valgrind.hh> #include <dumux/common/capabilities.hh> #include <dumux/common/timeloop.hh> - -#include "properties.hh" +#include <dumux/discretization/staggered/properties.hh> namespace Dumux { @@ -44,7 +43,6 @@ namespace Dumux template<class TypeTag> class StaggeredLocalResidual { - friend class ImplicitLocalResidual<TypeTag>; using GridView = typename GET_PROP_TYPE(TypeTag, GridView); enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) }; diff --git a/dumux/implicit/staggered/newtoncontroller.hh b/dumux/implicit/staggered/newtoncontroller.hh index 1ba774e0e612ade30124ef7a2fa394ba1878409c..fc00686af30ea1ac068088ecba08760a030b97d3 100644 --- a/dumux/implicit/staggered/newtoncontroller.hh +++ b/dumux/implicit/staggered/newtoncontroller.hh @@ -27,7 +27,8 @@ #ifndef DUMUX_STAGGERED_NEWTON_CONTROLLER_HH #define DUMUX_STAGGERED_NEWTON_CONTROLLER_HH -#include "properties.hh" +#include <dumux/discretization/staggered/properties.hh> +#include <dumux/common/properties.hh> #include <dumux/nonlinear/newtoncontroller.hh> #include <dumux/linear/linearsolveracceptsmultitypematrix.hh> @@ -36,16 +37,16 @@ namespace Dumux { -namespace Properties -{ - SET_PROP(StaggeredModel, LinearSolverBlockSize) - { - // LinearSolverAcceptsMultiTypeMatrix<T>::value - // TODO: make somehow dependend? or only relevant for direct solvers? - public: - static constexpr auto value = 1; - }; -} +// namespace Properties +// { +// SET_PROP(StaggeredModel, LinearSolverBlockSize) +// { +// // LinearSolverAcceptsMultiTypeMatrix<T>::value +// // TODO: make somehow dependend? or only relevant for direct solvers? +// public: +// static constexpr auto value = 1; +// }; +// }TODO: why not possible here? /*! * \ingroup PNMModel * \brief A PNM specific controller for the newton solver. diff --git a/dumux/implicit/staggered/primaryvariables.hh b/dumux/implicit/staggered/primaryvariables.hh index e798becaa47c8627ac748a2c359277b45f01898c..06c1b66ecbf3aa9e6aa2f44a138098f9ede98934 100644 --- a/dumux/implicit/staggered/primaryvariables.hh +++ b/dumux/implicit/staggered/primaryvariables.hh @@ -23,7 +23,6 @@ #ifndef DUMUX_STAGGERED_PRIMARYVARIABLES_HH #define DUMUX_STAGGERED_PRIMARYVARIABLES_HH -#include "properties.hh" #include <dune/istl/multitypeblockvector.hh> #include <dumux/common/intrange.hh> diff --git a/dumux/implicit/staggered/properties.hh b/dumux/implicit/staggered/properties.hh deleted file mode 100644 index 03dbcd48effa518f8119753b8501dc05a0b9b460..0000000000000000000000000000000000000000 --- a/dumux/implicit/staggered/properties.hh +++ /dev/null @@ -1,75 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -#ifndef DUMUX_STAGGERED_PROPERTIES_HH -#define DUMUX_STAGGERED_PROPERTIES_HH - -#include <dumux/implicit/properties.hh> - -/*! - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup StaggeredModel - * \file - * \brief Specify the shape functions, operator assemblers, etc - * used for the StaggeredModel. - */ -namespace Dumux -{ - -namespace Properties -{ -// \{ - -////////////////////////////////////////////////////////////////// -// Type tags -////////////////////////////////////////////////////////////////// - -//! The type tag for models based on staggered scheme -NEW_TYPE_TAG(StaggeredModel, INHERITS_FROM(ImplicitBase)); - -NEW_PROP_TAG(StaggeredGeometryHelper); //!< Helper class to ease the creation of stencils, etc. - -NEW_PROP_TAG(CellCenterPrimaryVariables); //!< A vector of primary variables for cell center dofs -NEW_PROP_TAG(FacePrimaryVariables); //!< A vector of primary variables for face dofs -NEW_PROP_TAG(CellCenterSolutionVector); //!< Vector containing all cell centered primary variables -NEW_PROP_TAG(FaceSolutionVector); //!< Vector containing all face primary variables - -NEW_PROP_TAG(EnableInteriorBoundaries); //!< For compatibility - -NEW_PROP_TAG(BaseEpsilon); //!< Set one or different base epsilons for the calculations of the localJacobian's derivatives - -NEW_PROP_TAG(NumEqCellCenter); //!< Number of equations per cell center dof -NEW_PROP_TAG(NumEqFace); //!< Number of equations per face dof -NEW_PROP_TAG(DofTypeIndices); //!< Indices to choose between cell center and face dofs - -NEW_PROP_TAG(FaceVariables); //!< Variables associated to facets (equivalent to volVars) -NEW_PROP_TAG(GlobalFaceVars); //!< Global vector of facet variables - -NEW_PROP_TAG(IntersectionMapper); //!< The intersection mapper - -NEW_PROP_TAG(VtkWriteFaceData); //!< Decide whether to write separate vtp files for face variables - -} -} - -// \} - -#include <dumux/implicit/staggered/propertydefaults.hh> - -#endif diff --git a/dumux/io/staggeredvtkoutputmodule.hh b/dumux/io/staggeredvtkoutputmodule.hh deleted file mode 100644 index d0b40646c88a24c2b1062d25056e8776ad33dac9..0000000000000000000000000000000000000000 --- a/dumux/io/staggeredvtkoutputmodule.hh +++ /dev/null @@ -1,291 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief A VTK output module to simplify writing dumux simulation data to VTK format. Specialization for staggered grids with dofs on faces. - */ -#ifndef STAGGERED_VTK_OUTPUT_MODULE_HH -#define STAGGERED_VTK_OUTPUT_MODULE_HH - -#include <dune/common/fvector.hh> - -#include <dumux/io/vtkoutputmodule.hh> -#include <dumux/io/pointcloudvtkwriter.hh> -#include <dumux/io/vtksequencewriter.hh> - -namespace Properties -{ -NEW_PROP_TAG(VtkAddVelocity); -NEW_PROP_TAG(VtkAddProcessRank); -} - -namespace Dumux -{ - -/*! - * \ingroup InputOutput - * \brief A VTK output module to simplify writing dumux simulation data to VTK format - * Specialization for staggered grids with dofs on faces. - */ -template<typename TypeTag> -class StaggeredVtkOutputModule : public VtkOutputModule<TypeTag> -{ - friend class VtkOutputModule<TypeTag>; - using ParentType = VtkOutputModule<TypeTag>; - using Implementation = typename GET_PROP_TYPE(TypeTag, VtkOutputModule); - using Problem = typename GET_PROP_TYPE(TypeTag, Problem); - using GridView = typename GET_PROP_TYPE(TypeTag, GridView); - using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); - - enum { dim = GridView::dimension }; - enum { dimWorld = GridView::dimensionworld }; - - using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>; - - using DofTypeIndices = typename GET_PROP(TypeTag, DofTypeIndices); - typename DofTypeIndices::CellCenterIdx cellCenterIdx; - typename DofTypeIndices::FaceIdx faceIdx; - - struct PriVarScalarDataInfo { unsigned int pvIdx; std::string name; }; - struct PriVarVectorDataInfo { std::vector<unsigned int> pvIdx; std::string name; }; - - using Positions = std::vector<Scalar>; - using Data = std::vector<std::vector<Scalar>>; - - using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); - using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables); - using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector); - -public: - - StaggeredVtkOutputModule(const Problem& problem, - const FVGridGeometry& fvGridGeometry, - const GridVariables& gridVariables, - const SolutionVector& sol, - const std::string& name, - bool verbose = true, - Dune::VTK::DataMode dm = Dune::VTK::conforming) - : ParentType(problem, fvGridGeometry, gridVariables, sol, name, verbose, dm) - -{} -// { -// writeFaceVars_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, WriteFaceData); -// coordinatesInitialized_ = false; -// } -// -// ////////////////////////////////////////////////////////////////////////////////////////////// -// //! Methods to conveniently add primary and secondary variables upon problem initialization -// //! Do not call these methods after initialization -// ////////////////////////////////////////////////////////////////////////////////////////////// -// -// -// //! Output a scalar field -// //! \param name The name of the vtk field -// //! \returns A reference to the resized scalar field to be filled with the actual data -// std::vector<Scalar>& createFaceScalarField(const std::string& name) -// { -// faceScalarFields_.emplace_back(std::make_pair(std::vector<Scalar>(this->problem().model().numFaceDofs()), name)); -// return faceScalarFields_.back().first; -// } -// -// //! Output a vector field -// //! \param name The name of the vtk field -// //! \returns A reference to the resized vector field to be filled with the actual data -// std::vector<GlobalPosition>& createFaceVectorField(const std::string& name) -// { -// faceVectorFields_.emplace_back(std::make_pair(std::vector<GlobalPosition>(this->problem().model().numFaceDofs()), name)); -// return faceVectorFields_.back().first; -// } -// -// //! Output a scalar primary variable -// //! \param name The name of the vtk field -// //! \param pvIdx The index in the primary variables vector -// void addFacePrimaryVariable(const std::string& name, unsigned int pvIdx) -// { -// priVarScalarDataInfo_.push_back(PriVarScalarDataInfo{pvIdx, name}); -// } -// -// //! Output a vector primary variable -// //! \param name The name of the vtk field -// //! \param pvIndices A vector of indices in the primary variables vector to group for vector visualization -// void addFacePrimaryVariable(const std::string& name, std::vector<unsigned int> pvIndices) -// { -// assert(pvIndices.size() < 4 && "Vtk doesn't support vector dimensions greater than 3!"); -// priVarVectorDataInfo_.push_back(PriVarVectorDataInfo{pvIndices, name}); -// } -// -// void write(double time, Dune::VTK::OutputType type = Dune::VTK::ascii) -// { -// ParentType::write(time, type); -// if(writeFaceVars_) -// getFaceDataAndWrite_(); -// } -// -// protected: -// -// /*! -// * \brief Returns the number of cell center dofs -// */ -// unsigned int numDofs_() const -// { -// return fvGridGeometry -// } -// -// /*! -// * \brief Returns priVar data from dofs not on the face. -// * -// * \param dofIdxGlobal The global dof index -// * \param pvIdx The primary variable index -// */ -// auto getPriVarData_(const std::size_t dofIdxGlobal, const std::size_t pvIdx) -// { -// return this->problem().model().curSol()[cellCenterIdx][dofIdxGlobal][pvIdx]; -// } -// -// std::vector<PriVarScalarDataInfo> priVarScalarDataInfo_; -// std::vector<PriVarVectorDataInfo> priVarVectorDataInfo_; -// std::vector<PriVarScalarDataInfo> secondVarScalarDataInfo_; -// std::vector<PriVarVectorDataInfo> secondVarVectorDataInfo_; -// -// private: -// -// void updateCoordinates_() -// { -// std::cout << "updating coordinates" << std::endl; -// coordinates_.resize(this->problem().model().numFaceDofs()); -// for(auto&& facet : facets(this->problem().gridView())) -// { -// const int dofIdxGlobal = this->problem().gridView().indexSet().index(facet); -// coordinates_[dofIdxGlobal] = facet.geometry().center(); -// } -// coordinatesInitialized_ = true; -// } -// -// /*! -// * \brief Gathers all face-related data and invokes the face vtk-writer using these data. -// */ -// void getFaceDataAndWrite_() -// { -// const int numPoints = this->problem().model().numFaceDofs(); -// -// // make sure not to iterate over the same dofs twice -// std::vector<bool> dofVisited(numPoints, false); -// -// // get fields for all primary coordinates and variables -// if(!coordinatesInitialized_) -// updateCoordinates_(); -// -// Data priVarScalarData(priVarScalarDataInfo_.size(), std::vector<Scalar>(numPoints)); -// -// Data priVarVectorData(priVarVectorDataInfo_.size()); -// for (std::size_t i = 0; i < priVarVectorDataInfo_.size(); ++i) -// priVarVectorData[i].resize(numPoints*priVarVectorDataInfo_[i].pvIdx.size()); -// -// for(auto&& element : elements(this->problem().gridView())) -// { -// auto fvGeometry = localView(this->problem().model().fvGridGeometry()); -// fvGeometry.bindElement(element); -// for(auto && scvf : scvfs(fvGeometry)) -// { -// if(dofVisited[scvf.dofIndex()]) -// continue; -// -// asImp_().getPrivarScalarData_(priVarScalarData, scvf); -// asImp_().getPrivarVectorData_(priVarVectorData, scvf); -// -// dofVisited[scvf.dofIndex()] = true; -// } -// } -// -// // transfer priVar scalar data to writer -// for(int i = 0; i < priVarScalarDataInfo_.size(); ++i) -// faceWriter_->addPointData(priVarScalarData[i], priVarScalarDataInfo_[i].name); -// -// // transfer priVar vector data to writer -// for(int i = 0; i < priVarVectorDataInfo_.size(); ++i) -// faceWriter_->addPointData(priVarVectorData[i], priVarVectorDataInfo_[i].name, priVarVectorDataInfo_[i].pvIdx.size()); -// -// // transfer custom scalar data to writer -// for(auto&& scalarField : faceScalarFields_) -// faceWriter_->addPointData(scalarField.first, scalarField.second); -// -// // transfer custom vector data to writer -// for(auto&& vectorField : faceVectorFields_) -// faceWriter_->addPointData(vectorField.first, vectorField.second, 3); -// -// sequenceWriter_.write(this->problem().timeManager().time() + 1.0); -// faceScalarFields_.clear(); -// faceVectorFields_.clear(); -// } -// -// -// /*! -// * \brief Retrives scalar-valued data from the face. -// * -// * \param priVarScalarData Container to store the data -// * \param face The face -// */ -// template<class Face> -// void getPrivarScalarData_(Data& priVarScalarData, const Face& face) -// { -// const int dofIdxGlobal = face.dofIndex(); -// for(int pvIdx = 0; pvIdx < priVarScalarDataInfo_.size(); ++pvIdx) -// priVarScalarData[pvIdx][dofIdxGlobal] = this->problem().model().curSol()[faceIdx][dofIdxGlobal][pvIdx]; -// } -// -// /*! -// * \brief Retrives vector-valued data from the face. -// * -// * \param priVarVectorData Container to store the data -// * \param face The face -// */ -// template<class Face> -// void getPrivarVectorData_(Data& priVarVectorData, const Face& face) -// { -// const int dofIdxGlobal = face.dofIndex(); -// for (int i = 0; i < priVarVectorDataInfo_.size(); ++i) -// for (int j = 0; j < priVarVectorDataInfo_[i].pvIdx.size(); ++j) -// priVarVectorData[i][dofIdxGlobal*priVarVectorDataInfo_[i].pvIdx.size() + j] -// = this->problem().model().curSol()[faceIdx][dofIdxGlobal][priVarVectorDataInfo_[i].pvIdx[j]]; -// } -// -// std::shared_ptr<PointCloudVtkWriter<Scalar, dim>> faceWriter_; -// -// VTKSequenceWriter<PointCloudVtkWriter<Scalar, dim>> sequenceWriter_; -// -// bool writeFaceVars_; -// -// std::vector<GlobalPosition> coordinates_; -// bool coordinatesInitialized_; -// -// std::list<std::pair<std::vector<Scalar>, std::string>> faceScalarFields_; -// std::list<std::pair<std::vector<GlobalPosition>, std::string>> faceVectorFields_; -// -// //! Returns the implementation of the problem (i.e. static polymorphism) -// Implementation &asImp_() -// { return *static_cast<Implementation *>(this); } -// -// //! \copydoc asImp_() -// const Implementation &asImp_() const -// { return *static_cast<const Implementation *>(this); } -}; - -} // end namespace Dumux - -#endif diff --git a/dumux/linear/matrixconverter.hh b/dumux/linear/matrixconverter.hh index 0615754cd0968cd04a4b77018dec2f8e918e15bb..87adb0a09239b5f199bd50fb9a2e82451a7708bf 100644 --- a/dumux/linear/matrixconverter.hh +++ b/dumux/linear/matrixconverter.hh @@ -28,6 +28,7 @@ #include <dune/common/hybridutilities.hh> #include <dune/istl/bvector.hh> #include <dune/istl/bcrsmatrix.hh> +#include <dune/istl/matrixindexset.hh> #include <dune/istl/multitypeblockvector.hh> #include <dune/istl/multitypeblockmatrix.hh> diff --git a/test/freeflow/staggered/doneatestproblem.hh b/test/freeflow/staggered/doneatestproblem.hh index 019360ee5b13e16644c11345acc0122ea1980b2b..672dbba5f5fcf95c1b0a9d98425f7842171e6bbc 100644 --- a/test/freeflow/staggered/doneatestproblem.hh +++ b/test/freeflow/staggered/doneatestproblem.hh @@ -27,11 +27,12 @@ #define DUMUX_DONEA_TEST_PROBLEM_HH #include <dumux/freeflow/staggered/problem.hh> -#include <dumux/implicit/staggered/properties.hh> +#include <dumux/discretization/staggered/properties.hh> #include <dumux/material/components/simpleh2o.hh> #include <dumux/material/fluidsystems/liquidphase.hh> #include <dumux/material/components/constant.hh> +#include <dumux/discretization/staggered/properties.hh> #include <dumux/freeflow/staggered/propertydefaults.hh> @@ -111,7 +112,6 @@ class DoneaTestProblem : public NavierStokesProblem<TypeTag> }; using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes); - using TimeManager = typename GET_PROP_TYPE(TypeTag, TimeManager); using Element = typename GridView::template Codim<0>::Entity; using Intersection = typename GridView::Intersection; diff --git a/test/freeflow/staggered/test_donea.cc b/test/freeflow/staggered/test_donea.cc index 1a2cf64e242bb8aaac2bc0848248e4ab51d97215..a7d7a850a1ff68ce0102a3dbb11b0dce06100831 100644 --- a/test/freeflow/staggered/test_donea.cc +++ b/test/freeflow/staggered/test_donea.cc @@ -48,6 +48,7 @@ #include <dumux/assembly/staggeredfvassembler.hh> #include <dumux/assembly/diffmethod.hh> +#include <dumux/implicit/staggered/newtoncontroller.hh> #include <dumux/discretization/methods.hh> @@ -174,7 +175,7 @@ int main(int argc, char** argv) auto linearSolver = std::make_shared<LinearSolver>(); // the non-linear solver - using NewtonController = typename GET_PROP_TYPE(TypeTag, NewtonController); + using NewtonController = StaggeredNewtonController<TypeTag>; using NewtonMethod = Dumux::NewtonMethod<TypeTag, NewtonController, Assembler, LinearSolver>; auto newtonController = std::make_shared<NewtonController>(leafGridView.comm(), timeLoop); NewtonMethod nonLinearSolver(newtonController, assembler, linearSolver);