rheolef  6.5
piola.h
Go to the documentation of this file.
1 #ifndef _RHEOLEF_PIOLA_H
2 #define _RHEOLEF_PIOLA_H
3 #include "rheolef/geo.h"
4 #include "rheolef/basis_on_pointset.h"
5 namespace rheolef {
6 
7 template<class T, class M>
8 point_basic<T>
10  const geo_basic<T,M>& omega,
11  const basis_on_pointset<T>& piola_on_pointset,
12  reference_element hat_K,
13  const std::vector<size_t>& dis_inod,
14  size_t q);
15 
16 template<class T, class M>
17 void
19  const geo_basic<T,M>& omega,
20  const basis_on_pointset<T>& piola_on_pointset,
21  reference_element hat_K,
22  const std::vector<size_t>& dis_inod,
23  const point_basic<T>& hat_x,
24  tensor_basic<T>& DF);
25 
26 template<class T, class M>
27 void
29  const geo_basic<T,M>& omega,
30  const basis_on_pointset<T>& piola_on_pointset,
31  reference_element hat_K,
32  const std::vector<size_t>& dis_inod,
33  size_t q,
34  tensor_basic<T>& DF);
35 
36 template <class T>
37 T
38 det_jacobian_piola_transformation (const tensor_basic<T>& DF, size_t d , size_t map_d);
39 
40 // if K=triangle(a,b,c) then u=ab=b-a, v=ac=c-a and w = n = u^v/|u^v|.
41 // and inv(DF)^T = [ac^n/|ab^ac|, -ab^n/|ab^ac|, n]
42 template<class T, class M>
43 point_basic<T>
44 normal_from_piola_transformation (const geo_basic<T,M>& omega, const geo_element& S, const tensor_basic<T>& DF, size_t d);
45 
46 // if K=triangle(a,b,c) then u=ab=b-a, v=ac=c-a and w = n = u^v/|u^v|.
47 // and inv(DF)^T = [ac^n/|ab^ac|, -ab^n/|ab^ac|, n]
48 template<class T>
49 tensor_basic<T>
51  const tensor_basic<T>& DF,
52  size_t d,
53  size_t map_d);
54 
55 // DF: hat_x --> DF(hat_x) on hat_K
56 template<class T, class M>
57 void
59  const geo_basic<T,M>& omega,
60  reference_element hat_K,
61  const std::vector<size_t>& dis_inod,
62  const point_basic<T>& hat_x,
63  tensor_basic<T>& DF);
64 
65 // F^{-1}: x --> hat_x on K
66 template<class T, class M>
67 point_basic<T>
69  const geo_basic<T,M>& omega,
70  reference_element hat_K,
71  const std::vector<size_t>& dis_inod,
72  const point_basic<T>& x);
73 
74 template <class T>
75 void map_projector (const tensor_basic<T>& DF, size_t d, size_t map_d, tensor_basic<T>& P);
76 
77 // point_basic<T> xq = rheolef::piola_transformation (_omega, _piola_table, K, dis_inod, q);
78 template<class T>
79 T
80 weight_coordinate_system (space_constant::coordinate_type sys_coord, const point_basic<T>& xq);
81 
82 template<class T, class M>
83 T
85  const geo_basic<T,M>& omega,
86  const basis_on_pointset<T>& piola_table,
87  const geo_element& K,
88  const std::vector<size_t>& dis_inod,
89  size_t q);
90 
91 }// namespace rheolef
92 #endif // _RHEOLEF_PIOLA_H
93