2 #ifndef DUNE_PDELAB_CONVECTIONDIFFUSIONPARAMETER_HH
3 #define DUNE_PDELAB_CONVECTIONDIFFUSIONPARAMETER_HH
7 #include<dune/common/exceptions.hh>
8 #include<dune/common/fvector.hh>
9 #include<dune/geometry/type.hh>
10 #include<dune/geometry/referenceelements.hh>
11 #include<dune/geometry/quadraturerules.hh>
28 template<
typename GV,
typename RF>
29 struct ConvectionDiffusionParameterTraits
44 typedef Dune::FieldVector<DomainFieldType,dimDomain>
DomainType;
53 typedef Dune::FieldVector<RF,GV::dimensionworld>
RangeType;
56 typedef Dune::FieldMatrix<RangeFieldType,dimDomain,dimDomain>
PermTensorType;
59 typedef typename GV::Traits::template Codim<0>::Entity
ElementType;
86 template<
typename GV,
typename RF>
101 I[i][
j] = (i==
j) ? 1 : 0;
140 return xglobal.two_norm();
184 ,
const Dune::FieldVector<typename I::ctype, I::dimension-1> & coord
187 return( t.bctype( ig.intersection(), coord )
193 const Dune::FieldVector<typename I::ctype, I::dimension-1> & coord
212 <typename T::Traits::GridViewType,
213 typename T::Traits::RangeFieldType,
214 T::Traits::GridViewType::dimension>,
215 ConvectionDiffusionVelocityExtensionAdapter<T> >
219 typename T::Traits::RangeFieldType,
220 T::Traits::GridViewType::dimension>
Traits;
226 : BaseT(gv_), gv(gv_), t(t_)
269 typename T::Traits::RangeFieldType,
270 1,Dune::FieldVector<typename T::Traits::RangeFieldType,1> >
271 ,ConvectionDiffusionDirichletExtensionAdapter<T> >
275 typename T::Traits::RangeFieldType,
276 1,Dune::FieldVector<typename T::Traits::RangeFieldType,1> >
Traits;
314 typename T::Traits::RangeFieldType,
315 T::Traits::GridViewType::dimension,Dune::FieldVector<typename T::Traits::RangeFieldType,T::Traits::GridViewType::dimension> >
316 ,ConvectionDiffusionExactGradientAdapter<T> >
320 typename T::Traits::RangeFieldType,
321 T::Traits::GridViewType::dimension,Dune::FieldVector<typename T::Traits::RangeFieldType,T::Traits::GridViewType::dimension> >
Traits;
347 template<
typename K,
typename A0,
typename F,
typename B,
typename G,
typename J>
350 typedef typename F::Traits::RangeFieldType RF;
351 typedef typename F::Traits::GridViewType GV;
360 k__(k_), a0__(a0_), f__(f_), b__(b_), g__(g_), j__(j_)
367 typename K::Traits::RangeType tensor(0.0);
368 k__.evaluate(e,x,tensor);
384 typename A0::Traits::RangeType y;
385 a0__.evaluate(e,x,y);
393 typename F::Traits::RangeType y;
402 typename B::Traits::RangeType
bctype;
412 typename G::Traits::RangeType y;
421 typename J::Traits::RangeType y;
422 j__.evaluate(*(is.inside()),is.geometryInInside().global(x),y);
Definition: convectiondiffusionparameter.hh:164
Traits::RangeFieldType c(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
sink term
Definition: convectiondiffusionparameter.hh:115
GV::Traits::template Codim< 0 >::Entity ElementType
grid types
Definition: convectiondiffusionparameter.hh:59
Dune::FieldVector< RF, GV::dimensionworld > RangeType
range type
Definition: convectiondiffusionparameter.hh:53
Traits::RangeFieldType j(const typename Traits::IntersectionType &is, const typename Traits::IntersectionDomainType &x) const
Neumann boundary condition.
Definition: convectiondiffusionparameter.hh:145
Definition: convectiondiffusionparameter.hh:210
GV GridViewType
the grid view
Definition: convectiondiffusionparameter.hh:32
Definition: constraintsparameters.hh:120
Traits::RangeFieldType j(const typename Traits::IntersectionType &is, const typename Traits::IntersectionDomainType &x) const
Neumann boundary condition.
Definition: convectiondiffusionparameter.hh:419
Traits::PermTensorType A(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
tensor diffusion coefficient
Definition: convectiondiffusionparameter.hh:365
GV::Intersection IntersectionType
Definition: convectiondiffusionparameter.hh:60
Definition: convectiondiffusionparameter.hh:267
ConvectionDiffusionParameterTraits< GV, RF > Traits
Definition: convectiondiffusionparameter.hh:92
ConvectionDiffusionDirichletExtensionAdapter(const typename Traits::GridViewType &g_, T &t_)
constructor
Definition: convectiondiffusionparameter.hh:279
void evaluateGlobal(const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Definition: convectiondiffusionparameter.hh:229
Traits::RangeFieldType o(const typename Traits::IntersectionType &is, const typename Traits::IntersectionDomainType &x) const
outflow boundary condition
Definition: convectiondiffusionparameter.hh:152
Traits::RangeType b(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
velocity field
Definition: convectiondiffusionparameter.hh:374
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:284
dimension of the domain
Definition: convectiondiffusion.hh:48
const Traits::GridViewType & getGridView() const
Definition: convectiondiffusionparameter.hh:243
void setTime(double time_)
Definition: convectiondiffusionparameter.hh:296
RF RangeFieldType
Export type for range field.
Definition: convectiondiffusionparameter.hh:50
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:321
Class to define the boundary condition types.
Definition: convectiondiffusionparameter.hh:65
Dune::PDELab::GridFunctionTraits< typename T::Traits::GridViewType, typename T::Traits::RangeFieldType, 1, Dune::FieldVector< typename T::Traits::RangeFieldType, 1 > > Traits
Definition: convectiondiffusionparameter.hh:276
const E & e
Definition: interpolate.hh:172
Adapter to get ConvectionDiffusion parameter object from the old style separate parameter grid functi...
Definition: convectiondiffusionparameter.hh:348
Traits::RangeFieldType o(const typename Traits::IntersectionType &is, const typename Traits::IntersectionDomainType &x) const
outflow boundary condition
Definition: convectiondiffusionparameter.hh:428
Dune::FieldMatrix< RangeFieldType, dimDomain, dimDomain > PermTensorType
permeability tensor type
Definition: convectiondiffusionparameter.hh:56
Definition: convectiondiffusionparameter.hh:67
Dune::FieldVector< DomainFieldType, dimDomain-1 > IntersectionDomainType
domain type
Definition: convectiondiffusionparameter.hh:47
GV GridViewType
The type of the grid view the function lives on.
Definition: function.hh:114
ConvectionDiffusionVelocityExtensionAdapter(const typename Traits::GridViewType &gv_, T &t_)
constructor
Definition: convectiondiffusionparameter.hh:225
BCType bctype(const typename Traits::IntersectionType &is, const typename Traits::IntersectionDomainType &x) const
boundary condition type function
Definition: convectiondiffusionparameter.hh:129
ConvectionDiffusionBoundaryConditionAdapter(const T &t_)
Definition: convectiondiffusionparameter.hh:178
const IG & ig
Definition: constraints.hh:147
Traits::RangeFieldType f(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
source term
Definition: convectiondiffusionparameter.hh:391
Definition: constraintsparameters.hh:24
Type
Definition: convectiondiffusionparameter.hh:67
GV::Grid::ctype DomainFieldType
Export type for domain field.
Definition: convectiondiffusionparameter.hh:41
leaf of a function tree
Definition: function.hh:576
Dune::PDELab::AnalyticGridFunctionBase< Traits, ConvectionDiffusionVelocityExtensionAdapter< T > > BaseT
Definition: convectiondiffusionparameter.hh:221
Definition: convectiondiffusionparameter.hh:67
function signature for analytic functions on a grid
Definition: function.hh:898
Definition: convectiondiffusionparameter.hh:67
const Traits::GridViewType & getGridView() const
Definition: convectiondiffusionparameter.hh:291
Dune::FieldVector< GV::Grid::ctype, GV::dimension > DomainType
domain type in dim-size coordinates
Definition: function.hh:48
Traits::RangeFieldType g(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
Dirichlet boundary condition value.
Definition: convectiondiffusionparameter.hh:137
Definition: convectiondiffusionparameter.hh:67
Traits::RangeFieldType g(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
Dirichlet boundary condition value.
Definition: convectiondiffusionparameter.hh:410
static bool isDirichlet(Type i)
Test for Dirichlet boundary condition.
Definition: diffusionparam.hh:25
traits class holding the function signature, same as in local function
Definition: function.hh:175
Parameter class for solving the linear convection-diffusion equation.
Definition: convectiondiffusionparameter.hh:87
Traits::PermTensorType A(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
tensor diffusion coefficient
Definition: convectiondiffusionparameter.hh:96
Definition: adaptivity.hh:27
Traits::RangeFieldType c(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
sink term
Definition: convectiondiffusionparameter.hh:382
Traits::RangeFieldType f(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
source term
Definition: convectiondiffusionparameter.hh:122
an analytic grid function
Definition: function.hh:916
Wrap intersection.
Definition: geometrywrapper.hh:56
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:236
void setTime(double time_)
Definition: convectiondiffusionparameter.hh:248
GV::Traits::template Codim< 0 >::Entity ElementType
codim 0 entity
Definition: function.hh:117
const Traits::GridViewType & getGridView() const
Definition: convectiondiffusionparameter.hh:334
ConvectionDiffusionParameterTraits< GV, RF > Traits
Definition: convectiondiffusionparameter.hh:356
Definition: convectiondiffusionparameter.hh:312
Dune::FieldVector< RF, m > RangeType
range type
Definition: function.hh:60
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:327
BCType bctype(const typename Traits::IntersectionType &is, const typename Traits::IntersectionDomainType &x) const
boundary condition type function
Definition: convectiondiffusionparameter.hh:400
ConvectionDiffusion_Diffusion_Adapter(const K &k_, const A0 &a0_, const F &f_, const B &b_, const G &g_, const J &j_)
constructor
Definition: convectiondiffusionparameter.hh:359
Traits::RangeType b(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
velocity field
Definition: convectiondiffusionparameter.hh:107
ConvectionDiffusionBoundaryConditionAdapter(const typename T::Traits::GridViewType &gv_, const T &t_)
Definition: convectiondiffusionparameter.hh:173
bool isDirichlet(const I &ig, const Dune::FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: convectiondiffusionparameter.hh:183
Dune::FieldVector< DomainFieldType, dimDomain > DomainType
domain type
Definition: convectiondiffusionparameter.hh:44
Dune::PDELab::AnalyticGridFunctionTraits< typename T::Traits::GridViewType, typename T::Traits::RangeFieldType, T::Traits::GridViewType::dimension > Traits
Definition: convectiondiffusionparameter.hh:220
bool isNeumann(const I &ig, const Dune::FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: convectiondiffusionparameter.hh:192
ConvectionDiffusionExactGradientAdapter(const typename Traits::GridViewType &g_, const T &t_)
constructor
Definition: convectiondiffusionparameter.hh:324
traits class for two phase parameter class
Definition: convectiondiffusion.hh:40