Skip to content
Snippets Groups Projects
Commit 01e4fa85 authored by Robert K's avatar Robert K
Browse files

[bugfix][QuadrautreTraits] allow to set quadrature traits from outside.

parent 61bfe6bb
No related branches found
No related tags found
1 merge request!4Latest features added to dune-fem-dg.
Pipeline #14288 failed
......@@ -22,7 +22,8 @@ namespace Fem
class DiffusionFluxImp,
class LimiterIndicatorFunctionImp,
class AdaptationHandlerImp,
class ExtraParameterTupleImp = std::tuple<>
class ExtraParameterTupleImp = std::tuple<>,
template <class F, int d> class QuadratureTraits = Dune::Fem::DefaultQuadratureTraits
>
struct OperatorTraits
{
......@@ -43,8 +44,8 @@ namespace Fem
//static_assert( std::is_same<typename ModelType::RangeType, typename DiscreteFunctionType::RangeType>::value, "range type does not fit.");
typedef typename DestinationType::DiscreteFunctionSpaceType DiscreteFunctionSpaceType;
typedef Fem::CachingQuadrature< GridPartType, 0 > VolumeQuadratureType;
typedef Fem::CachingQuadrature< GridPartType, 1 > FaceQuadratureType;
typedef Fem::CachingQuadrature< GridPartType, 0, QuadratureTraits > VolumeQuadratureType;
typedef Fem::CachingQuadrature< GridPartType, 1, QuadratureTraits > FaceQuadratureType;
typedef LimiterIndicatorFunctionImp LimiterIndicatorType;
......@@ -60,6 +61,7 @@ namespace Fem
class DiffusionFluxImp,
class ExtraParameterTupleImp = std::tuple<>,
class AdaptationHandlerFunctionSpaceImp = typename DiscreteFunctionImp::DiscreteFunctionSpaceType::FunctionSpaceType,
template <class F, int d> class QuadratureTraits = Dune::Fem::DefaultQuadratureTraits,
bool enableThreaded =
// static cmake variables provided by dune-fem
#ifdef USE_SMP_PARALLEL
......@@ -91,8 +93,8 @@ namespace Fem
static_assert( std::is_same<typename ModelType::RangeType, typename DestinationType::RangeType>::value, "range type does not fit.");
typedef Fem::CachingQuadrature< GridPartType, 0 > VolumeQuadratureType;
typedef Fem::CachingQuadrature< GridPartType, 1 > FaceQuadratureType;
typedef Fem::CachingQuadrature< GridPartType, 0, QuadratureTraits > VolumeQuadratureType;
typedef Fem::CachingQuadrature< GridPartType, 1, QuadratureTraits > FaceQuadratureType;
private:
typedef Fem::FunctionSpace< typename GridType::ctype, double, ModelImp::dimDomain, 3> FVFunctionSpaceType;
......
......@@ -17,7 +17,7 @@ namespace Dune
namespace Fem
{
//PassTraits
//PassTraits (should not be used anymore)
//----------
template <class Traits, int polOrd, int dimR, class GridPartImp = typename Traits::ModelType::GridPartType >
class PassTraits
......@@ -50,11 +50,9 @@ namespace Fem
//static const int dimRange = ModelTraits::dimRange;
//static const int dimDomain = ModelTraits::dimDomain;
//typedef Fem::ElementQuadrature< GridPartType, 0 > VolumeQuadratureType;
//typedef ElementQuadrature< GridPartType, 1 > FaceQuadratureType;
typedef Fem::CachingQuadrature< GridPartType, 0 > VolumeQuadratureType;
typedef Fem::CachingQuadrature< GridPartType, 1 > FaceQuadratureType;
typedef typename Traits :: VolumeQuadratureType VolumeQuadratureType;
typedef typename Traits :: FaceQuadratureType FaceQuadratureType;
// Allow generalization to systems
#if 1
......
......@@ -1763,7 +1763,7 @@ namespace Fem
else
{ // non-conforming case
typedef typename FaceQuadratureType :: NonConformingQuadratureType NonConformingQuadratureType;
NonConformingQuadratureType faceQuadInner(gridPart_,intersection, quadOrd, FaceQuadratureType::INSIDE);
NonConformingQuadratureType faceQuadInner(gridPart_,intersection, quadOrd, NonConformingQuadratureType::INSIDE);
if( checkIntersection( intersection, faceQuadInner, inflowIntersection ) )
{
shockIndicator = -1;
......@@ -1794,7 +1794,7 @@ namespace Fem
{ // non-conforming case
typedef typename FaceQuadratureType :: NonConformingQuadratureType NonConformingQuadratureType;
NonConformingQuadratureType faceQuadOuter(gridPart_,intersection, quadOrd,
FaceQuadratureType::OUTSIDE);
NonConformingQuadratureType::OUTSIDE);
if( checkIntersection( intersection, faceQuadOuter, inflowIntersection , false ) )
{
shockIndicator = -1;
......
......@@ -25,6 +25,8 @@
#include <dune/fem-dg/models/additional.hh>
#endif
#include <dune/fempy/quadrature/fempyquadratures.hh>
namespace Dune
{
namespace Fem
......@@ -86,7 +88,9 @@ namespace Fem
typedef typename DiffusionFluxSelector< ModelType, DiscreteFunctionSpaceType, diffFluxId, formId >::type DiffusionFluxType;
typedef DefaultOperatorTraits< ModelType, DestinationType, AdvectionFluxType, DiffusionFluxType,
std::tuple<>, typename DiscreteFunctionSpaceType::FunctionSpaceType, threading > OpTraits;
std::tuple<>, typename DiscreteFunctionSpaceType::FunctionSpaceType,
Dune::FemPy::FempyQuadratureTraits, // use quadratures from dune-fempy
threading > OpTraits;
typedef AdvectionDiffusionOperatorSelector< OpTraits, formId, limiterId > OperatorSelectorType ;
......@@ -257,6 +261,8 @@ namespace Fem
tp_.next();
}
//std::cout << "t = " << tp_.time() << " dt = " << tp_.deltaT() << std::endl;
#ifndef EULER_WRAPPER_TEST
// return limited solution, to be discussed
// this is only enabled when AdvectionLimiter is not unlimited
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment