diff --git a/dune/fem-dg/algorithm/sub/evolution.hh b/dune/fem-dg/algorithm/sub/evolution.hh index b1db33eab8db74d446f91510ee08f4090a5c461e..054949055a5456fc5a0c45021d33d421eca1d4aa 100644 --- a/dune/fem-dg/algorithm/sub/evolution.hh +++ b/dune/fem-dg/algorithm/sub/evolution.hh @@ -299,11 +299,14 @@ namespace Fem #ifdef BASEFUNCTIONSET_CODEGEN_GENERATE { - const int maxOrder = 2*solution().space().order() ; + const int polOrder = solution().space().order(); + const int maxOrder = 2 * polOrder + 1 ; + const int dim = GridType :: dimension; std::vector< int > quadOrder( maxOrder ); for( int i=2; i<maxOrder+2; ++i ) quadOrder.push_back( i ); - Dune::Fem::generateCode( solution().space(), quadOrder, quadOrder ); + std::string filename( "autogeneratedcode_"+std::to_string( dim ) + "d_k" + std::to_string( polOrder ) + ".hh" ); + Dune::Fem::generateCode( solution().space(), quadOrder, quadOrder, "./", filename ); } #endif diff --git a/dune/fem-dg/misc/algorithmcreatorselector.hh b/dune/fem-dg/misc/algorithmcreatorselector.hh index 945e647b204c49a35b0ff2172823805a87bd407e..3245627f545f6bfd5cf1eae1579fa3159473be41 100644 --- a/dune/fem-dg/misc/algorithmcreatorselector.hh +++ b/dune/fem-dg/misc/algorithmcreatorselector.hh @@ -503,6 +503,13 @@ namespace Fem /////////////////////////////////////////////////////////////////////////// // DiscreteFunctionSpaceSelector /////////////////////////////////////////////////////////////////////////// +#if USE_BASEFUNCTIONSET_CODEGEN + template <class T> + using Storage = Dune::Fem::CodegenStorage<T>; +#else + template <class T> + using Storage = Dune::Fem::CachingStorage<T>; +#endif template< class FunctionSpaceImp, class GridPartImp, int polOrder, DiscreteFunctionSpaces::Enum dfType, Galerkin::Enum opType > struct DiscreteFunctionSpaceSelector; @@ -510,45 +517,45 @@ namespace Fem template< class FunctionSpaceImp, class GridPartImp, int polOrder > struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::lagrange, Galerkin::Enum::cg > { - typedef LagrangeDiscreteFunctionSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type; + typedef LagrangeDiscreteFunctionSpace< FunctionSpaceImp, GridPartImp, polOrder, Storage > type; }; template< class FunctionSpaceImp, class GridPartImp, int polOrder > struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::legendre, Galerkin::Enum::dg > { - typedef LegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type; + typedef LegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, Storage > type; }; template< class FunctionSpaceImp, class GridPartImp, int polOrder > struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::orthonormal, Galerkin::Enum::dg > { - typedef DiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type; + typedef DiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, Storage > type; }; template< class FunctionSpaceImp, class GridPartImp, int polOrder > struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::lagrange, Galerkin::Enum::dg > { - typedef LagrangeDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type; + typedef LagrangeDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, Storage > type; }; template< class FunctionSpaceImp, class GridPartImp, int polOrder > struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::hierarchic_legendre, Galerkin::Enum::dg > { - typedef HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type; + typedef HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, Storage > type; }; #if HAVE_DUNE_LOCALFUNCTIONS template< class FunctionSpaceImp, class GridPartImp, int polOrder > struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::gausslobatto, Galerkin::Enum::dg > { - typedef FixedOrderDGLagrangeSpace< FunctionSpaceImp, GridPartImp, polOrder, Dune::GaussLobattoPointSet, CachingStorage > type; + typedef FixedOrderDGLagrangeSpace< FunctionSpaceImp, GridPartImp, polOrder, Dune::GaussLobattoPointSet, Storage > type; }; template< class FunctionSpaceImp, class GridPartImp, int polOrder > struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::gausslegendre, Galerkin::Enum::dg > { - typedef FixedOrderDGLagrangeSpace< FunctionSpaceImp, GridPartImp, polOrder, Dune::GaussLegendrePointSet, CachingStorage > type; + typedef FixedOrderDGLagrangeSpace< FunctionSpaceImp, GridPartImp, polOrder, Dune::GaussLegendrePointSet, Storage > type; }; #endif diff --git a/dune/fem-dg/misc/simulator.hh b/dune/fem-dg/misc/simulator.hh index 47330a7be3a89b88e3101b4788372fc2fdf6d6dc..d70fff96aba6c6fd8a992095420893663fee70fe 100644 --- a/dune/fem-dg/misc/simulator.hh +++ b/dune/fem-dg/misc/simulator.hh @@ -54,6 +54,7 @@ #ifdef USE_BASEFUNCTIONSET_CODEGEN #warning "Using autogenerated code" +#include <autogeneratedcode.hh> #endif #include <dune/fem-dg/pass/threadhandle.hh>