dune-pdelab  2.7-git
linearelasticityparameter.hh
Go to the documentation of this file.
1 // -*- tab-width: 8; indent-tabs-mode: nil -*-
2 #ifndef DUNE_PDELAB_LOCALOPERATOR_LINEARELASTICITYPARAMETER_HH
3 #define DUNE_PDELAB_LOCALOPERATOR_LINEARELASTICITYPARAMETER_HH
4 
5 #include<vector>
6 
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>
16 
17 namespace Dune {
18  namespace PDELab {
19 
26  template<typename GV, typename RF>
28  {
30  typedef GV GridViewType;
31 
33  enum {
35  dimDomain = GV::dimension,
36  dimRange = GV::dimension
37  };
38 
40  typedef typename GV::Grid::ctype DomainFieldType;
41 
43  typedef Dune::FieldVector<DomainFieldType,dimDomain> DomainType;
44 
46  typedef Dune::FieldVector<DomainFieldType,dimDomain-1> IntersectionDomainType;
47 
49  typedef RF RangeFieldType;
50 
52  typedef Dune::FieldVector<RF,dimRange> RangeType;
53 
55  typedef typename GV::Traits::template Codim<0>::Entity ElementType;
56  typedef typename GV::Intersection IntersectionType;
57  };
58 
60  template<class T, class Imp>
63  {
64  public:
65  typedef T Traits;
66 
68  void
69  f (const typename Traits::ElementType& e, const typename Traits::DomainType& x,
70  typename Traits::RangeType & y) const
71  {
72  asImp().f(e,x,y);
73  }
74 
75  template<typename I>
76  bool isDirichlet(const I & ig,
77  const typename Traits::IntersectionDomainType & coord
78  ) const
79  {
80  return asImp().isDirichlet( ig, coord );
81  }
82 
84  void
85  u (const typename Traits::ElementType& e, const typename Traits::DomainType& x,
86  typename Traits::RangeType & y) const
87  {
88  asImp().g(e,x,y);
89  }
90 
91  // //! Neumann boundary condition (surface force)
92  // void
93  // g (const typename Traits::ElementType& e, const typename Traits::DomainType& x,
94  // typename Traits::RangeType & y) const
95  // {
96  // asImp().g(e,x,y);
97  // }
98 
100  typename Traits::RangeFieldType
101  lambda(const typename Traits::ElementType& e, const typename Traits::DomainType& x) const
102  {
103  return asImp().lambda(e,x);
104  }
105 
107  typename Traits::RangeFieldType
108  mu(const typename Traits::ElementType& e, const typename Traits::DomainType& x) const
109  {
110  return asImp().mu(e,x);
111  }
112 
113  private:
114  Imp& asImp () {return static_cast<Imp &> (*this);}
115  const Imp& asImp () const {return static_cast<const Imp &>(*this);}
116  };
117 
122  template<typename T>
124  : public Dune::PDELab::GridFunctionBase<Dune::PDELab::GridFunctionTraits<typename T::Traits::GridViewType,
125  typename T::Traits::RangeFieldType,
126  T::Traits::dimRange, typename T::Traits::RangeType >
127  ,LinearElasticityDirichletExtensionAdapter<T> >
128  {
129  public:
130  typedef Dune::PDELab::GridFunctionTraits<typename T::Traits::GridViewType,
131  typename T::Traits::RangeFieldType,
132  T::Traits::dimRange, typename T::Traits::RangeType > Traits;
133 
136  : g(g_), t(t_)
137  {}
138 
140  inline void evaluate (const typename Traits::ElementType& e,
141  const typename Traits::DomainType& x,
142  typename Traits::RangeType& y) const
143  {
144  t.u(e,x,y);
145  }
146 
147  inline const typename Traits::GridViewType& getGridView () const
148  {
149  return g;
150  }
151 
152  private:
153  const typename Traits::GridViewType g;
154  T& t;
155  };
156 
157  }
158 }
159 
160 #endif // DUNE_PDELAB_LOCALOPERATOR_LINEARELASTICITYPARAMETER_HH
function.hh
Dune::PDELab::LinearElasticityParameterTraits::DomainFieldType
GV::Grid::ctype DomainFieldType
Export type for domain field.
Definition: linearelasticityparameter.hh:40
Dune::PDELab::LinearElasticityParameterInterface::mu
Traits::RangeFieldType mu(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
Second Lame parameter (shear modulus)
Definition: linearelasticityparameter.hh:108
constraintsparameters.hh
Dune::PDELab::LinearElasticityParameterInterface::isDirichlet
bool isDirichlet(const I &ig, const typename Traits::IntersectionDomainType &coord) const
Definition: linearelasticityparameter.hh:76
Dune::PDELab::LinearElasticityDirichletExtensionAdapter
Definition: linearelasticityparameter.hh:123
Dune::PDELab::LinearElasticityDirichletExtensionAdapter::LinearElasticityDirichletExtensionAdapter
LinearElasticityDirichletExtensionAdapter(const typename Traits::GridViewType &g_, T &t_)
constructor
Definition: linearelasticityparameter.hh:135
Dune::PDELab::GridFunctionBase
leaf of a function tree
Definition: function.hh:299
Dune::PDELab::LinearElasticityDirichletExtensionAdapter::evaluate
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Evaluate the GridFunction at given position.
Definition: linearelasticityparameter.hh:140
Dune::PDELab::PowerCompositeGridFunctionTraits::GridViewType
GV GridViewType
The type of the grid view the function lives on.
Definition: function.hh:116
Dune::PDELab::PowerCompositeGridFunctionTraits::ElementType
GV::Traits::template Codim< 0 >::Entity ElementType
codim 0 entity
Definition: function.hh:119
Dune::PDELab::LinearElasticityParameterTraits::ElementType
GV::Traits::template Codim< 0 >::Entity ElementType
grid types
Definition: linearelasticityparameter.hh:55
Dune::PDELab::GridFunctionTraits
traits class holding the function signature, same as in local function
Definition: function.hh:177
Dune
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
Dune::PDELab::LinearElasticityParameterTraits::GridViewType
GV GridViewType
the grid view
Definition: linearelasticityparameter.hh:30
e
const Entity & e
Definition: localfunctionspace.hh:121
Dune::PDELab::LinearElasticityParameterTraits::DomainType
Dune::FieldVector< DomainFieldType, dimDomain > DomainType
domain type
Definition: linearelasticityparameter.hh:43
Dune::PDELab::LinearElasticityParameterInterface::f
void f(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
volume force term
Definition: linearelasticityparameter.hh:69
Dune::PDELab::LinearElasticityParameterTraits::RangeType
Dune::FieldVector< RF, dimRange > RangeType
range type
Definition: linearelasticityparameter.hh:52
Dune::PDELab::LinearElasticityParameterTraits::dimRange
@ dimRange
Definition: linearelasticityparameter.hh:36
Dune::PDELab::LinearElasticityParameterInterface
base class for linear elasticity parameter class
Definition: linearelasticityparameter.hh:61
Dune::PDELab::FunctionTraits< GV::Grid::ctype, GV::dimension, Dune::FieldVector< GV::Grid::ctype, GV::dimension >, RF, m, R >::RangeType
R RangeType
range type
Definition: function.hh:62
geometrywrapper.hh
functionutilities.hh
Dune::PDELab::DirichletConstraintsParameters
Definition: constraintsparameters.hh:24
Dune::PDELab::LinearElasticityParameterInterface::lambda
Traits::RangeFieldType lambda(const typename Traits::ElementType &e, const typename Traits::DomainType &x) const
First Lame parameter.
Definition: linearelasticityparameter.hh:101
Dune::PDELab::LinearElasticityDirichletExtensionAdapter::getGridView
const Traits::GridViewType & getGridView() const
Definition: linearelasticityparameter.hh:147
Dune::PDELab::LinearElasticityParameterTraits::RangeFieldType
RF RangeFieldType
Export type for range field.
Definition: linearelasticityparameter.hh:49
Dune::PDELab::LinearElasticityParameterTraits
Traits class for linear elasticity parameters.
Definition: linearelasticityparameter.hh:27
Dune::PDELab::LinearElasticityParameterTraits::dimDomain
@ dimDomain
dimension of the domain
Definition: linearelasticityparameter.hh:35
Dune::PDELab::LinearElasticityParameterTraits::IntersectionDomainType
Dune::FieldVector< DomainFieldType, dimDomain-1 > IntersectionDomainType
domain type
Definition: linearelasticityparameter.hh:46
Dune::PDELab::LinearElasticityDirichletExtensionAdapter::Traits
Dune::PDELab::GridFunctionTraits< typename T::Traits::GridViewType, typename T::Traits::RangeFieldType, T::Traits::dimRange, typename T::Traits::RangeType > Traits
Definition: linearelasticityparameter.hh:132
Dune::PDELab::FunctionTraits< GV::Grid::ctype, GV::dimension, Dune::FieldVector< GV::Grid::ctype, GV::dimension >, RF, m, R >::DomainType
Dune::FieldVector< GV::Grid::ctype, GV::dimension > DomainType
domain type in dim-size coordinates
Definition: function.hh:50
ig
const IG & ig
Definition: constraints.hh:149
Dune::PDELab::LinearElasticityParameterTraits::IntersectionType
GV::Intersection IntersectionType
Definition: linearelasticityparameter.hh:56
Dune::PDELab::LinearElasticityParameterInterface::u
void u(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Dirichlet boundary condition value (displacement)
Definition: linearelasticityparameter.hh:85
Dune::PDELab::LinearElasticityParameterInterface::Traits
T Traits
Definition: linearelasticityparameter.hh:65