an efficient C++ finite element environment
|
|
Go to the documentation of this file. 1 #ifndef _RHEOLEF_PIOLA_FEM_H
2 #define _RHEOLEF_PIOLA_FEM_H
3 #include "rheolef/piola.h"
24 #include "rheolef/space_constant.h"
25 #include "rheolef/smart_pointer.h"
57 virtual std::string
name()
const = 0;
106 #define _RHEOLEF_inline_value_s(ValueName,Value) \
109 piola_fem_rep<T>::transform (const piola<T>& p, const Value& hat_u, Value& u) const \
111 error_macro (ValueName<<"-valued "<<name()<<" transfom not implemented"); \
115 piola_fem_rep<T>::inv_transform (const piola<T>& p, const Value& u, Value& hat_u) const \
117 error_macro (ValueName<<"-valued "<<name()<<" inverse-transfom not implemented"); \
120 #define _RHEOLEF_inline_value_g(ValueName,Value,GradValue) \
121 _RHEOLEF_inline_value_s(ValueName,Value) \
124 piola_fem_rep<T>::grad_transform ( \
126 const Value& hat_u, \
127 const GradValue& hat_grad_u, \
128 const details::differentiate_option& gopt, \
129 GradValue& grad_u) const \
131 error_macro (ValueName<<"-valued "<<name()<<" grad-transfom not implemented"); \
139 #undef _RHEOLEF_inline_value_s
140 #undef _RHEOLEF_inline_value_g
159 piola_fem(rep *
p = 0);
163 bool transform_need_piola()
const;
165 template<
class Value>
166 void transform (
const piola<T>&
p,
const Value& hat_u, Value&
u)
const;
167 template<
class Value>
168 void inv_transform (
const piola<T>&
p,
const Value&
u, Value& hat_u)
const;
169 template<
class Value,
class GradValue>
170 void grad_transform (
173 const GradValue& hat_grad_u,
183 piola_fem<T>::piola_fem(rep*
p)
190 piola_fem<T>::transform_need_piola()
const
192 return base::data().transform_need_piola();
195 template<
class Value>
198 piola_fem<T>::transform (
const piola<T>&
p,
const Value& hat_u, Value&
u)
const
200 base::data().transform (
p, hat_u,
u);
203 template<
class Value>
206 piola_fem<T>::inv_transform (
const piola<T>&
p,
const Value&
u, Value& hat_u)
const
208 base::data().inv_transform (
p,
u, hat_u);
211 template<
class Value,
class GradValue>
214 piola_fem<T>::grad_transform (
217 const GradValue& hat_grad_u,
218 const details::differentiate_option& gopt,
221 base::data().grad_transform (
p, hat_u, hat_grad_u, gopt,
grad_u);
225 #endif // _RHEOLEF_PIOLA_FEM_H
see the tensor3 page for the full documentation
see the tensor page for the full documentation
virtual void inv_transform(const piola< T > &p, const T &u, T &hat_u) const
virtual void grad_transform(const piola< T > &p, const T &hat_u, const point_basic< T > &hat_grad_u, const details::differentiate_option &gopt, point_basic< T > &grad_u) const
virtual void transform(const piola< T > &p, const tensor_basic< T > &hat_u, tensor_basic< T > &u) const
point_basic< T >::size_type size_type
_RHEOLEF_inline_value_g("scalar", T, point_basic< T >) _RHEOLEF_inline_value_g("vector"
see the tensor4 page for the full documentation
virtual bool transform_need_piola() const
virtual void transform(const piola< T > &p, const tensor4_basic< T > &hat_u, tensor4_basic< T > &u) const
virtual void transform(const piola< T > &p, const T &hat_u, T &u) const
virtual void grad_transform(const piola< T > &p, const point_basic< T > &hat_u, const tensor_basic< T > &hat_grad_u, const details::differentiate_option &gopt, tensor_basic< T > &grad_u) const
virtual void inv_transform(const piola< T > &p, const tensor4_basic< T > &u, tensor4_basic< T > &hat_u) const
virtual void transform(const piola< T > &p, const point_basic< T > &hat_u, point_basic< T > &u) const
This file is part of Rheolef.
virtual void grad_transform(const piola< T > &p, const tensor_basic< T > &hat_u, const tensor3_basic< T > &hat_grad_u, const details::differentiate_option &gopt, tensor3_basic< T > &grad_u) const
virtual void grad_transform(const piola< T > &p, const tensor3_basic< T > &hat_u, const tensor4_basic< T > &hat_grad_u, const details::differentiate_option &gopt, tensor4_basic< T > &grad_u) const
field::size_type size_type
virtual std::string name() const =0
virtual void transform(const piola< T > &p, const tensor3_basic< T > &hat_u, tensor3_basic< T > &u) const
virtual void inv_transform(const piola< T > &p, const tensor_basic< T > &u, tensor_basic< T > &hat_u) const
virtual void inv_transform(const piola< T > &p, const tensor3_basic< T > &u, tensor3_basic< T > &hat_u) const
virtual void inv_transform(const piola< T > &p, const point_basic< T > &u, point_basic< T > &hat_u) const