From a6ad59e5e83d105bd72d6e61fae92fad7fc3f33b Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Thu, 28 Mar 2013 22:10:49 +0100 Subject: [PATCH] Template parameter can be inferred --- src/assemblers.cc | 14 ++++++-------- src/assemblers.hh | 6 ++---- src/assemblers_tmpl.cc | 4 ++-- src/one-body-sample.cc | 9 ++++----- 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/assemblers.cc b/src/assemblers.cc index 005ec2ed..ecaf47d8 100644 --- a/src/assemblers.cc +++ b/src/assemblers.cc @@ -11,8 +11,7 @@ #include "assemblers.hh" // Assembles Neumann boundary term in f -template <class GridType, class GridView, class LocalVectorType, - class AssemblerType> +template <class GridView, class LocalVectorType, class AssemblerType> void assemble_neumann(GridView const &gridView, AssemblerType const &assembler, Dune::BitSetVector<1> const &neumannNodes, Dune::BlockVector<LocalVectorType> &f, @@ -25,23 +24,22 @@ void assemble_neumann(GridView const &gridView, AssemblerType const &assembler, SampleVector[1] = 0; ConstantFunction<LocalVectorType, LocalVectorType> const fNeumann( SampleVector); - NeumannBoundaryAssembler<GridType, LocalVectorType> neumannBoundaryAssembler( - fNeumann); + NeumannBoundaryAssembler<typename GridView::Grid, LocalVectorType> + neumannBoundaryAssembler(fNeumann); assembler.assembleBoundaryFunctional(neumannBoundaryAssembler, f, neumannBoundary); } // Assembles constant 1-function on frictional boundary in nodalIntegrals -template <class GridType, class GridView, class LocalVectorType, - class AssemblerType> +template <class GridView, class LocalVectorType, class AssemblerType> Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>> assemble_frictional(GridView const &gridView, AssemblerType const &assembler, Dune::BitSetVector<1> const &frictionalNodes) { typedef Dune::FieldVector<double, 1> Singleton; BoundaryPatch<GridView> const frictionalBoundary(gridView, frictionalNodes); ConstantFunction<LocalVectorType, Singleton> const constantOneFunction(1); - NeumannBoundaryAssembler<GridType, Singleton> frictionalBoundaryAssembler( - constantOneFunction); + NeumannBoundaryAssembler<typename GridView::Grid, Singleton> + frictionalBoundaryAssembler(constantOneFunction); auto const nodalIntegrals = Dune::make_shared<Dune::BlockVector<Singleton>>(); assembler.assembleBoundaryFunctional(frictionalBoundaryAssembler, diff --git a/src/assemblers.hh b/src/assemblers.hh index d37caf16..ceceddee 100644 --- a/src/assemblers.hh +++ b/src/assemblers.hh @@ -12,16 +12,14 @@ #include <dune/tectonic/globalnonlinearity.hh> -template <class GridType, class GridView, class LocalVectorType, - class AssemblerType> +template <class GridView, class LocalVectorType, class AssemblerType> void assemble_neumann(GridView const &gridView, AssemblerType const &assembler, Dune::BitSetVector<1> const &neumannNodes, Dune::BlockVector<LocalVectorType> &f, Dune::VirtualFunction<double, double> const &neumann, double time); -template <class GridType, class GridView, class LocalVectorType, - class AssemblerType> +template <class GridView, class LocalVectorType, class AssemblerType> Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>> assemble_frictional(GridView const &gridView, AssemblerType const &assembler, Dune::BitSetVector<1> const &frictionalNodes); diff --git a/src/assemblers_tmpl.cc b/src/assemblers_tmpl.cc index e7f06cdd..1e42914d 100644 --- a/src/assemblers_tmpl.cc +++ b/src/assemblers_tmpl.cc @@ -20,14 +20,14 @@ typedef GridType::LeafGridView GridView; typedef P1NodalBasis<GridView, double> P1Basis; typedef Assembler<P1Basis, P1Basis> AssemblerType; -template void assemble_neumann<GridType, GridView, SmallVector, AssemblerType>( +template void assemble_neumann<GridView, SmallVector, AssemblerType>( GridView const &gridView, AssemblerType const &assembler, Dune::BitSetVector<1> const &neumannNodes, Dune::BlockVector<SmallVector> &f, Dune::VirtualFunction<double, double> const &neumann, double time); template Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>> -assemble_frictional<GridType, GridView, SmallVector, AssemblerType>( +assemble_frictional<GridView, SmallVector, AssemblerType>( GridView const &gridView, AssemblerType const &assembler, Dune::BitSetVector<1> const &frictionalNodes); diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index dad7d5eb..ce2d5911 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -320,9 +320,8 @@ int main(int argc, char *argv[]) { SumNorm<VectorType> const velocityEnergyNorm(1.0, stiffnessMatrixNorm, 1.0, massMatrixNorm); - auto const nodalIntegrals = - assemble_frictional<GridType, GridView, SmallVector>( - leafView, p1Assembler, frictionalNodes); + auto const nodalIntegrals = assemble_frictional<GridView, SmallVector>( + leafView, p1Assembler, frictionalNodes); // {{{ Initial conditions VectorType u_initial(finestSize); @@ -374,8 +373,8 @@ int main(int argc, char *argv[]) { auto const timesteps = parset.get<size_t>("timeSteps"); auto const tau = parset.get<double>("endOfTime") / timesteps; auto const createRHS = [&](double _time, VectorType &_ell) { - assemble_neumann<GridType>(leafView, p1Assembler, neumannNodes, _ell, - neumannFunction, _time); + assemble_neumann(leafView, p1Assembler, neumannNodes, _ell, + neumannFunction, _time); _ell += gravityFunctional; }; -- GitLab