Rheolef  7.1
an efficient C++ finite element environment
space_numbering.h
Go to the documentation of this file.
1 #ifndef _RHEOLEF_SPACE_NUMBERING_H
2 #define _RHEOLEF_SPACE_NUMBERING_H
3 #include "rheolef/geo.h"
24 
25 /*Class:space_numbering
26 NAME: @code{space_numbering} - global degree of freedom numbering
27 @cindex numbering, global degree of freedom
28 @cindex polynomial basis
29 @clindex space_numbering
30 SYNOPSIS:
31  @noindent
32  The @code{space_numbering} class defines methods that furnish global
33  numbering of degrees of freedom. This numbering depends upon
34  the degrees of polynoms on elements and upon the continuity
35  requirement at inter-element boundary. For instance the
36  "P1" continuous finite element approximation has one degree
37  of freedom per vertice of the mesh, while its discontinuous
38  counterpart has dim(basis) times the number of elements of the
39  mesh, where dim(basis) is the size of the local finite element basis.
40 
41 AUTHORS:
42  LMC-IMAG, 38041 Grenoble cedex 9, France
43  | Pierre.Saramito@imag.fr
44 DATE: 7 january 2004
45 End:
46 */
47 
48 namespace rheolef { namespace space_numbering {
49 
51 
52  template<class T> size_type ndof (const basis_basic<T>& b, const geo_size& gs, size_type map_dim);
53  template<class T> size_type nnod (const basis_basic<T>& b, const geo_size& gs, size_type map_dim);
54  template<class T> size_type dis_ndof (const basis_basic<T>& b, const geo_size& gs, size_type map_dim);
55  template<class T> size_type dis_nnod (const basis_basic<T>& b, const geo_size& gs, size_type map_dim);
56  template<class T> void dis_idof (const basis_basic<T>& b, const geo_size& gs, const geo_element& K, std::vector<size_type>& dis_idof);
57  template<class T> void dis_inod (const basis_basic<T>& b, const geo_size& gs, const geo_element& K, std::vector<size_type>& dis_inod);
58  template<class T> void dis_idof (const basis_basic<T>& b, const geo_size& gs, const geo_element& K, typename std::vector<size_type>::iterator dis_idof);
59  template<class T> void dis_inod (const basis_basic<T>& b, const geo_size& gs, const geo_element& K, typename std::vector<size_type>::iterator dis_inod);
60 
61  template<class T>
62  inline void set_ios_permutations (
63  const basis_basic<T>& b,
64  const geo_basic<T,sequential>& omega,
65  disarray<size_type,sequential>& idof2ios_dis_idof,
66  disarray<size_type,sequential>& ios_idof2dis_idof) {}
67 #ifdef _RHEOLEF_HAVE_MPI
68  template<class T>
70  const basis_basic<T>& b,
71  const geo_basic<T,distributed>& omega,
72  disarray<size_type,distributed>& idof2ios_dis_idof,
73  disarray<size_type,distributed>& ios_idof2dis_idof);
74 
75  // low-level interface, used by geo_mpi_get.cc
76  template<class T>
78  const basis_basic<T>& b,
79  size_t map_d,
80  const geo_size& gs,
82  igev2ios_dis_igev,
83  disarray<size_t,distributed>& idof2ios_dis_idof);
84 #endif // _RHEOLEF_HAVE_MPI
85 }} // namespace rheolef::space_numbering
86 #endif // _RHEOLEF_SPACE_NUMBERING_H
rheolef::space_numbering::ndof
size_type ndof(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
Definition: space_numbering.cc:28
rheolef::space_numbering::generic_set_ios_permutation
void generic_set_ios_permutation(const basis_basic< T > &b, size_t map_d, const geo_size &gs, const std::array< disarray< size_t, distributed >, reference_element::max_variant > &igev2ios_dis_igev, disarray< size_t, distributed > &idof2ios_dis_idof)
Definition: space_numbering.cc:234
rheolef::space_numbering::dis_ndof
size_type dis_ndof(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
Definition: space_numbering.cc:41
rheolef::geo_size
Definition: geo_size.h:29
rheolef::space_numbering::set_ios_permutations
void set_ios_permutations(const basis_basic< T > &b, const geo_basic< T, distributed > &omega, disarray< size_type, distributed > &idof2ios_dis_idof, disarray< size_type, distributed > &ios_idof2dis_idof)
Definition: space_numbering.cc:275
mkgeo_ball.b
int b
Definition: mkgeo_ball.sh:152
rheolef::geo_element
see the geo_element page for the full documentation
Definition: geo_element.h:102
rheolef::size_type
size_t size_type
Definition: basis_get.cc:76
rheolef::space_numbering::dis_idof
void dis_idof(const basis_basic< T > &b, const geo_size &gs, const geo_element &K, typename std::vector< size_type >::iterator dis_idof_tab)
Definition: space_numbering.cc:187
rheolef::basis_basic
Definition: basis.h:532
rheolef::geo_basic< T, sequential >
Definition: geo.h:1108
rheolef::geo_basic< T, distributed >
distributed mesh with rerefence counting
Definition: geo.h:1367
rheolef::space_numbering::size_type
geo_element::size_type size_type
Definition: space_numbering.h:50
rheolef::geo_element::size_type
reference_element::size_type size_type
Definition: geo_element.h:125
rheolef::space_numbering::dis_nnod
size_type dis_nnod(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
Definition: space_numbering.cc:67
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
rheolef::space_numbering::dis_inod
void dis_inod(const basis_basic< T > &b, const geo_size &gs, const geo_element &K, typename std::vector< size_type >::iterator dis_inod_tab)
Definition: space_numbering.cc:177
rheolef::reference_element::max_variant
static const variant_type max_variant
Definition: reference_element.h:82
rheolef::disarray
see the disarray page for the full documentation
Definition: disarray.h:459
rheolef::space_numbering::nnod
size_type nnod(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
Definition: space_numbering.cc:54
mkgeo_ball.map_dim
map_dim
Definition: mkgeo_ball.sh:337