Rheolef  7.2
an efficient C++ finite element environment
 
Loading...
Searching...
No Matches
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
26NAME: @code{space_numbering} - global degree of freedom numbering
27@cindex numbering, global degree of freedom
28@cindex polynomial basis
29@clindex space_numbering
30SYNOPSIS:
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
41AUTHORS:
42 LMC-IMAG, 38041 Grenoble cedex 9, France
43 | Pierre.Saramito@imag.fr
44DATE: 7 january 2004
45End:
46*/
47
48namespace 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>
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
generic mesh with rerefence counting
Definition geo.h:1089
see the geo_element page for the full documentation
reference_element::size_type size_type
static const variant_type max_variant
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)
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)
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)
geo_element::size_type size_type
This file is part of Rheolef.