diff --git a/dune/fufem/assemblers/assembler.hh b/dune/fufem/assemblers/assembler.hh index 3de0ad76b374ca452a08e0981e54fc0a0c8b534d..e410628972af7772d98809d00a69666519656383 100644 --- a/dune/fufem/assemblers/assembler.hh +++ b/dune/fufem/assemblers/assembler.hh @@ -19,7 +19,7 @@ class Assembler {} template <class LocalAssemblerType, class GlobalMatrixType> - void assembleOperator(LocalAssemblerType& localAssembler, GlobalMatrixType& A, const bool lumping=false) const + void assembleOperator(LocalAssemblerType&& localAssembler, GlobalMatrixType& A, const bool lumping=false) const { const OperatorAssembler<TrialBasis, AnsatzBasis> operatorAssembler(tBasis_, aBasis_); operatorAssembler.assemble(localAssembler, A, lumping); @@ -47,5 +47,10 @@ class Assembler const AnsatzBasis& aBasis_; }; +template <class TrialBasis, class AnsatzBasis> +auto assembler(const TrialBasis& tBasis, const AnsatzBasis& aBasis) { + return Assembler<TrialBasis, AnsatzBasis>(tBasis, aBasis); +} + #endif diff --git a/dune/fufem/assemblers/localassemblers/scaledsumoperatorassembler.hh b/dune/fufem/assemblers/localassemblers/scaledsumoperatorassembler.hh index c40aaf0d4800c0d38de5c7c5b133283f85fb810a..836f2583451ed0a43ce06c9717273e1e7234c651 100644 --- a/dune/fufem/assemblers/localassemblers/scaledsumoperatorassembler.hh +++ b/dune/fufem/assemblers/localassemblers/scaledsumoperatorassembler.hh @@ -1,16 +1,17 @@ -// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- +// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- // vi: set et ts=4 sw=2 sts=2: #ifndef DUNE_FUFEM_ASSEMBLERS_LOCALASSEMBLERS_SCALEDSUMOPERATORASSEMBLER_HH #define DUNE_FUFEM_ASSEMBLERS_LOCALASSEMBLERS_SCALEDSUMOPERATORASSEMBLER_HH -#include <dune/common/diagonalmatrix.hh> +#include <dune/common/fmatrix.hh> #include <dune/fufem/assemblers/localoperatorassembler.hh> /** \brief Local operator that is the sum of scaled local operator assemblers. * All template parameters according to \class LocalOperatorAssembler */ -template <class Grid, class TrialLocalFE, class AnsatzLocalFE, typename T> +template <class Grid, class TrialLocalFE, class AnsatzLocalFE, + typename T = Dune::FieldMatrix<double, 1, 1>> class ScaledSumOperatorAssembler : public LocalOperatorAssembler<Grid, TrialLocalFE, AnsatzLocalFE, T> { public: diff --git a/dune/fufem/assemblers/localassemblers/subgridl2functionalassembler.hh b/dune/fufem/assemblers/localassemblers/subgridl2functionalassembler.hh index 93f066ebae6fd0b04a68fbb8a873ac3d29feb586..b7e3482427016c2a041a67908f8eb9c3e49146f7 100644 --- a/dune/fufem/assemblers/localassemblers/subgridl2functionalassembler.hh +++ b/dune/fufem/assemblers/localassemblers/subgridl2functionalassembler.hh @@ -17,6 +17,7 @@ #include <dune/fufem/assemblers/localfunctionalassembler.hh> #include <dune/fufem/assemblers/localassemblers/l2functionalassembler.hh> +#include <dune/grid/common/rangegenerators.hh> /** \brief Local assembler for finite element L^2-functionals on the Subgrid, given by Hostgrid-functions * * This is needed, e.g. when assembling the right hand side of the spatial problem of a time-discretized time dependent problem with spatial adaptivity. diff --git a/dune/fufem/assemblers/localoperatorassembler.hh b/dune/fufem/assemblers/localoperatorassembler.hh index 0066dc1d140710a12652391c6369ed68971f06e9..22ef6121d4a12d7aaae9236f65eff023ba0c13ac 100644 --- a/dune/fufem/assemblers/localoperatorassembler.hh +++ b/dune/fufem/assemblers/localoperatorassembler.hh @@ -30,6 +30,8 @@ class LocalOperatorAssembler enum {ndofs = T::cols}; + virtual ~LocalOperatorAssembler() {} + /** \brief After return BoolMatrix isNonZero contains the bit pattern of coupling basis functions * * \param element the grid element on which to operate diff --git a/dune/fufem/estimators/refinementindicator.hh b/dune/fufem/estimators/refinementindicator.hh index c2d52191eca741747572635a01751de185180487..ef3ed917980ca9292acac8be07bb5e268efa4440 100644 --- a/dune/fufem/estimators/refinementindicator.hh +++ b/dune/fufem/estimators/refinementindicator.hh @@ -118,4 +118,9 @@ value (const Element& element, unsigned int codim, unsigned int subEntity) const return (indicatorEntry != indicators_[codim].end()) ? indicatorEntry->second : 0; } +template <class Grid> +auto makeRefinementIndicator(const Grid& grid) { + return RefinementIndicator<Grid>(grid); +} + #endif diff --git a/dune/fufem/makering.hh b/dune/fufem/makering.hh index d83f5c396f1416dc1be6bb6daef46913642343d4..c52ad4788b919e9e71614a108083888cf035f29b 100644 --- a/dune/fufem/makering.hh +++ b/dune/fufem/makering.hh @@ -705,7 +705,7 @@ std::unique_ptr<GridType> makeTorus( // if ring is closed last nodes are the first nodes std::vector<unsigned int> cornerIDs(4); - Dune::GeometryType gt;gt.makeTetrahedron(); + auto gt = Dune::GeometryTypes::tetrahedron; for (unsigned int i=0; i<nElementHorizontal-1; i++) {