diff --git a/src/linear-elasticity.cc b/src/linear-elasticity.cc index d3c4a2fc80c27315baf17e6fa8ebbef8799b52f7..2207aa88fa982b28e12d7d71834dfdb1db27b672 100644 --- a/src/linear-elasticity.cc +++ b/src/linear-elasticity.cc @@ -10,10 +10,10 @@ #include <dune/istl/io.hh> +#include <dune/functions/functionspacebases/lagrangebasis.hh> + #include <dune/fufem/functiontools/gridfunctionadaptor.hh> #include <dune/fufem/functions/coarsegridfunctionwrapper.hh> -#include <dune/fufem/functionspacebases/p1nodalbasis.hh> -#include <dune/fufem/functionspacebases/p2nodalbasis.hh> #include <dune/fufem/assemblers/operatorassembler.hh> #include <dune/fufem/assemblers/localassemblers/stvenantkirchhoffassembler.hh> #include <dune/fufem/sampleonbitfield.hh> @@ -23,6 +23,7 @@ #include <dune/fufem/readbitfield.hh> #include <dune/fufem/estimators/fractionalmarking.hh> #include <dune/fufem/estimators/hierarchicalestimator.hh> +#include <dune/fufem/functionspacebases/dunefunctionsbasis.hh> #ifdef HAVE_IPOPT #include <dune/solvers/solvers/quadraticipopt.hh> @@ -138,8 +139,9 @@ int main (int argc, char *argv[]) try while (true) { - typedef P1NodalBasis<GridType::LeafGridView,double> P1Basis; - P1Basis p1NodalBasis(grid->leafGridView()); + using P1Basis = Dune::Functions::LagrangeBasis<GridType::LeafGridView,1>; + using FufemP1Basis = DuneFunctionsBasis<P1Basis>; + FufemP1Basis p1NodalBasis(grid->leafGridView()); // Determine fine Dirichlet and Neumann dofs LeafBoundaryPatch leafDirichletBoundary(grid->leafGridView()); @@ -172,16 +174,16 @@ int main (int argc, char *argv[]) try } // Assemble elasticity problem# - OperatorAssembler<P1Basis,P1Basis> p1Assembler(p1NodalBasis, p1NodalBasis); + OperatorAssembler<FufemP1Basis,FufemP1Basis> p1Assembler(p1NodalBasis, p1NodalBasis); - StVenantKirchhoffAssembler<GridType, P1Basis::LocalFiniteElement, P1Basis::LocalFiniteElement> p1LocalAssembler(E, nu); + StVenantKirchhoffAssembler<GridType, FufemP1Basis::LocalFiniteElement, FufemP1Basis::LocalFiniteElement> p1LocalAssembler(E, nu); OperatorType stiffnessMatrix; p1Assembler.assemble(p1LocalAssembler, stiffnessMatrix); // Assemble Neumann forces - BoundaryFunctionalAssembler<P1Basis> boundaryFunctionalAssembler(p1NodalBasis,leafNeumannBoundary); - BasisGridFunction<P1Basis,VectorType> neumannFunction(p1NodalBasis, neumannValues); + BoundaryFunctionalAssembler<FufemP1Basis> boundaryFunctionalAssembler(p1NodalBasis,leafNeumannBoundary); + BasisGridFunction<FufemP1Basis,VectorType> neumannFunction(p1NodalBasis, neumannValues); NeumannBoundaryAssembler<GridType, Dune::FieldVector<double,3> > localNeumannAssembler(neumannFunction); boundaryFunctionalAssembler.assemble(localNeumannAssembler, rhs); @@ -260,11 +262,13 @@ int main (int argc, char *argv[]) try // Estimate error and refine grid // ///////////////////////////////////////////////////////////// - HierarchicalEstimator<P2NodalBasis<GridType::LeafGridView>,dim> estimator(*grid); + using P2Basis = Dune::Functions::LagrangeBasis<GridType::LeafGridView,2>; + using FufemP2NodalBasis = DuneFunctionsBasis<P2Basis>; + HierarchicalEstimator<FufemP2NodalBasis,dim> estimator(*grid); RefinementIndicator<GridType> indicator(*grid); - typedef P2NodalBasis<GridType::LeafGridView>::LocalFiniteElement P2FiniteElement; + typedef FufemP2NodalBasis::LocalFiniteElement P2FiniteElement; StVenantKirchhoffAssembler<GridType,P2FiniteElement,P2FiniteElement>* localStiffness = new StVenantKirchhoffAssembler<GridType,P2FiniteElement,P2FiniteElement>(E,nu); @@ -278,7 +282,7 @@ int main (int argc, char *argv[]) try // Refine grid // //////////////////////////////////////////////////// - GridFunctionAdaptor<P1Basis> adaptorP1(p1NodalBasis,true,true); + GridFunctionAdaptor<FufemP1Basis> adaptorP1(p1NodalBasis,true,true); grid->preAdapt(); grid->adapt();