Rheolef  7.2
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
23 #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
see the disarray page for the full documentation
Definition: disarray.h:497
distributed mesh with rerefence counting
Definition: geo.h:1367
see the geo_element page for the full documentation
Definition: geo_element.h:102
reference_element::size_type size_type
Definition: geo_element.h:125
static const variant_type max_variant
size_t size_type
Definition: basis_get.cc:76
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)
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)
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)
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)
size_type nnod(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
size_type dis_nnod(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
size_type dis_ndof(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
size_type ndof(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
geo_element::size_type size_type
This file is part of Rheolef.