2#ifndef DUNE_PDELAB_LOCALOPERATOR_CONVECTIONDIFFUSIONPARAMETER_HH
3#define DUNE_PDELAB_LOCALOPERATOR_CONVECTIONDIFFUSIONPARAMETER_HH
8#include<dune/common/deprecated.hh>
9#include<dune/common/exceptions.hh>
10#include<dune/common/fvector.hh>
11#include<dune/geometry/type.hh>
12#include<dune/geometry/referenceelements.hh>
13#include<dune/geometry/quadraturerules.hh>
28 template<
typename T,
typename =
void>
29 struct hasPermeabilityIsConstantPerCell
30 :
public std::false_type
34 struct hasPermeabilityIsConstantPerCell<
36 void_t<decltype(
std::declval<T>().permeabilityIsConstantPerCell())>
38 :
public std::true_type
42 DUNE_DEPRECATED_MSG(
"Starting from PDELab 2.6, parameter classes must have a method `bool permeabilityIsConstantPerCell()`. For now, we assume a default value of true.")
45 not hasPermeabilityIsConstantPerCell<T>::
value,
48 permeabilityIsConstantPerCell(const T& param)
56 hasPermeabilityIsConstantPerCell<T>::value,
59 permeabilityIsConstantPerCell(
const T& param)
61 return param.permeabilityIsConstantPerCell();
74 template<
typename GV,
typename RF>
90 typedef Dune::FieldVector<DomainFieldType,dimDomain>
DomainType;
99 typedef Dune::FieldVector<RF,GV::dimensionworld>
RangeType;
105 typedef typename GV::Traits::template Codim<0>::Entity
ElementType;
134 template<
typename GV,
typename RF>
149 typename Traits::PermTensorType
150 A (
const typename Traits::ElementType& e,
const typename Traits::DomainType& x)
const
152 typename Traits::PermTensorType I;
153 for (std::size_t i=0; i<Traits::dimDomain; i++)
154 for (std::size_t
j=0;
j<Traits::dimDomain;
j++)
155 I[i][
j] = (i==
j) ? 1 : 0;
160 typename Traits::RangeType
161 b (
const typename Traits::ElementType& e,
const typename Traits::DomainType& x)
const
163 typename Traits::RangeType v(0.0);
168 typename Traits::RangeFieldType
169 c (
const typename Traits::ElementType& e,
const typename Traits::DomainType& x)
const
175 typename Traits::RangeFieldType
176 f (
const typename Traits::ElementType& e,
const typename Traits::DomainType& x)
const
183 bctype (
const typename Traits::IntersectionType& is,
const typename Traits::IntersectionDomainType& x)
const
189 typename Traits::RangeFieldType
190 g (
const typename Traits::ElementType& e,
const typename Traits::DomainType& x)
const
192 typename Traits::DomainType xglobal = e.geometry().global(x);
193 return xglobal.two_norm();
197 typename Traits::RangeFieldType
198 j (
const typename Traits::IntersectionType& is,
const typename Traits::IntersectionDomainType& x)
const
204 typename Traits::RangeFieldType
205 o (
const typename Traits::IntersectionType& is,
const typename Traits::IntersectionDomainType& x)
const
237 ,
const Dune::FieldVector<typename I::ctype, I::mydimension> & coord
240 return( t.bctype(
ig.intersection(), coord )
246 const Dune::FieldVector<typename I::ctype, I::mydimension> & coord
265 <typename T::Traits::GridViewType,
266 typename T::Traits::RangeFieldType,
267 T::Traits::GridViewType::dimension>,
268 ConvectionDiffusionVelocityExtensionAdapter<T> >
272 typename T::Traits::RangeFieldType,
273 T::Traits::GridViewType::dimension>
Traits;
279 :
BaseT(gv_), gv(gv_), t(t_)
322 typename T::Traits::RangeFieldType,
323 1,Dune::FieldVector<typename T::Traits::RangeFieldType,1> >
324 ,ConvectionDiffusionDirichletExtensionAdapter<T> >
328 typename T::Traits::RangeFieldType,
329 1,Dune::FieldVector<typename T::Traits::RangeFieldType,1> >
Traits;
367 typename T::Traits::RangeFieldType,
368 T::Traits::GridViewType::dimension,Dune::FieldVector<typename T::Traits::RangeFieldType,T::Traits::GridViewType::dimension> >
369 ,ConvectionDiffusionExactGradientAdapter<T> >
373 typename T::Traits::RangeFieldType,
374 T::Traits::GridViewType::dimension,Dune::FieldVector<typename T::Traits::RangeFieldType,T::Traits::GridViewType::dimension> >
Traits;
const IG & ig
Definition constraints.hh:149
For backward compatibility – Do not use this!
Definition adaptivity.hh:28
D DomainType
domain type in dim-size coordinates
Definition function.hh:50
R RangeType
range type
Definition function.hh:62
GV::Traits::template Codim< 0 >::Entity ElementType
codim 0 entity
Definition function.hh:119
GV GridViewType
The type of the grid view the function lives on.
Definition function.hh:116
traits class holding the function signature, same as in local function
Definition function.hh:183
leaf of a function tree
Definition function.hh:302
function signature for analytic functions on a grid
Definition function.hh:642
an analytic grid function
Definition function.hh:660
Definition constraintsparameters.hh:26
Definition constraintsparameters.hh:122
Traits class for convection diffusion parameters.
Definition convectiondiffusionparameter.hh:76
Dune::FieldVector< DomainFieldType, dimDomain-1 > IntersectionDomainType
domain type
Definition convectiondiffusionparameter.hh:93
GV::Grid::ctype DomainFieldType
Export type for domain field.
Definition convectiondiffusionparameter.hh:87
@ dimDomain
dimension of the domain
Definition convectiondiffusionparameter.hh:83
GV::Intersection IntersectionType
Definition convectiondiffusionparameter.hh:106
Dune::FieldMatrix< RangeFieldType, dimDomain, dimDomain > PermTensorType
permeability tensor type
Definition convectiondiffusionparameter.hh:102
Dune::FieldVector< RF, GV::dimensionworld > RangeType
range type
Definition convectiondiffusionparameter.hh:99
GV::Traits::template Codim< 0 >::Entity ElementType
grid types
Definition convectiondiffusionparameter.hh:105
RF RangeFieldType
Export type for range field.
Definition convectiondiffusionparameter.hh:96
GV GridViewType
the grid view
Definition convectiondiffusionparameter.hh:78
Dune::FieldVector< DomainFieldType, dimDomain > DomainType
domain type
Definition convectiondiffusionparameter.hh:90
Class to define the boundary condition types.
Definition convectiondiffusionparameter.hh:112
Type
Definition convectiondiffusionparameter.hh:113
@ Neumann
Definition convectiondiffusionparameter.hh:113
@ None
Definition convectiondiffusionparameter.hh:113
@ Outflow
Definition convectiondiffusionparameter.hh:113
@ Dirichlet
Definition convectiondiffusionparameter.hh:113
Parameter class for solving the linear convection-diffusion equation.
Definition convectiondiffusionparameter.hh:136
Traits::PermTensorType A(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
tensor diffusion coefficient
Definition convectiondiffusionparameter.hh:150
Traits::RangeFieldType o(const typename Traits::IntersectionType &is, const typename Traits::IntersectionDomainType &x) const
outflow boundary condition
Definition convectiondiffusionparameter.hh:205
Traits::RangeFieldType f(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
source term
Definition convectiondiffusionparameter.hh:176
BCType bctype(const typename Traits::IntersectionType &is, const typename Traits::IntersectionDomainType &x) const
boundary condition type function
Definition convectiondiffusionparameter.hh:183
Traits::RangeType b(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
velocity field
Definition convectiondiffusionparameter.hh:161
static constexpr bool permeabilityIsConstantPerCell()
tensor diffusion constant per cell? return false if you want more than one evaluation of A per cell.
Definition convectiondiffusionparameter.hh:143
Traits::RangeFieldType j(const typename Traits::IntersectionType &is, const typename Traits::IntersectionDomainType &x) const
Neumann boundary condition.
Definition convectiondiffusionparameter.hh:198
Traits::RangeFieldType g(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
Dirichlet boundary condition value.
Definition convectiondiffusionparameter.hh:190
ConvectionDiffusionParameterTraits< GV, RF > Traits
Definition convectiondiffusionparameter.hh:140
Traits::RangeFieldType c(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
sink term
Definition convectiondiffusionparameter.hh:169
Definition convectiondiffusionparameter.hh:221
bool isDirichlet(const I &ig, const Dune::FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition convectiondiffusionparameter.hh:236
bool isNeumann(const I &ig, const Dune::FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition convectiondiffusionparameter.hh:245
ConvectionDiffusionBoundaryConditionAdapter(const typename T::Traits::GridViewType &gv_, const T &t_)
Definition convectiondiffusionparameter.hh:226
ConvectionDiffusionBoundaryConditionAdapter(const T &t_)
Definition convectiondiffusionparameter.hh:231
Definition convectiondiffusionparameter.hh:269
ConvectionDiffusionVelocityExtensionAdapter(const typename Traits::GridViewType &gv_, T &t_)
constructor
Definition convectiondiffusionparameter.hh:278
Dune::PDELab::AnalyticGridFunctionBase< Traits, ConvectionDiffusionVelocityExtensionAdapter< T > > BaseT
Definition convectiondiffusionparameter.hh:274
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Evaluate the GridFunction at given position.
Definition convectiondiffusionparameter.hh:289
void evaluateGlobal(const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Definition convectiondiffusionparameter.hh:282
Dune::PDELab::AnalyticGridFunctionTraits< typename T::Traits::GridViewType, typename T::Traits::RangeFieldType, T::Traits::GridViewType::dimension > Traits
Definition convectiondiffusionparameter.hh:273
void setTime(double time_)
Definition convectiondiffusionparameter.hh:301
const Traits::GridViewType & getGridView() const
Definition convectiondiffusionparameter.hh:296
Definition convectiondiffusionparameter.hh:325
void setTime(double time_)
Definition convectiondiffusionparameter.hh:349
ConvectionDiffusionDirichletExtensionAdapter(const typename Traits::GridViewType &g_, T &t_)
constructor
Definition convectiondiffusionparameter.hh:332
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Evaluate the GridFunction at given position.
Definition convectiondiffusionparameter.hh:337
Dune::PDELab::GridFunctionTraits< typename T::Traits::GridViewType, typename T::Traits::RangeFieldType, 1, Dune::FieldVector< typename T::Traits::RangeFieldType, 1 > > Traits
Definition convectiondiffusionparameter.hh:329
const Traits::GridViewType & getGridView() const
Definition convectiondiffusionparameter.hh:344
Definition convectiondiffusionparameter.hh:370
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Evaluate the GridFunction at given position.
Definition convectiondiffusionparameter.hh:380
ConvectionDiffusionExactGradientAdapter(const typename Traits::GridViewType &g_, const T &t_)
constructor
Definition convectiondiffusionparameter.hh:377
const Traits::GridViewType & getGridView() const
Definition convectiondiffusionparameter.hh:387
Dune::PDELab::GridFunctionTraits< typename T::Traits::GridViewType, typename T::Traits::RangeFieldType, T::Traits::GridViewType::dimension, Dune::FieldVector< typename T::Traits::RangeFieldType, T::Traits::GridViewType::dimension > > Traits
Definition convectiondiffusionparameter.hh:374
static const unsigned int value
Definition gridfunctionspace/tags.hh:139