space_numbering.h
Go to the documentation of this file.
#ifndef _RHEOLEF_SPACE_NUMBERING_H
#define _RHEOLEF_SPACE_NUMBERING_H
#include "rheolef/geo.h"
/*Class:space_numbering
NAME: @code{space_numbering} - global degree of freedom numbering
@cindex numbering, global degree of freedom
@cindex polynomial basis
@clindex space_numbering
SYNOPSIS:
@noindent
The @code{space_numbering} class defines methods that furnish global
numbering of degrees of freedom. This numbering depends upon
the degrees of polynoms on elements and upon the continuity
requirement at inter-element boundary. For instance the
"P1" continuous finite element approximation has one degree
of freedom per vertice of the mesh, while its discontinuous
counterpart has dim(basis) times the number of elements of the
mesh, where dim(basis) is the size of the local finite element basis.
AUTHORS:
LMC-IMAG, 38041 Grenoble cedex 9, France
| Pierre.Saramito@imag.fr
DATE: 7 january 2004
End:
*/
namespace rheolef { namespace space_numbering {
typedef geo_element::size_type size_type;
template<class T> size_type ndof (const basis_basic<T>& b, const geo_size& gs, size_type map_dim);
template<class T> size_type nnod (const basis_basic<T>& b, const geo_size& gs, size_type map_dim);
template<class T> size_type dis_ndof (const basis_basic<T>& b, const geo_size& gs, size_type map_dim);
template<class T> size_type dis_nnod (const basis_basic<T>& b, const geo_size& gs, size_type map_dim);
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);
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);
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);
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);
template<class T>
inline void set_ios_permutations (
const basis_basic<T>& b,
const geo_basic<T,sequential>& omega,
disarray<size_type,sequential>& idof2ios_dis_idof,
disarray<size_type,sequential>& ios_idof2dis_idof) {}
#ifdef _RHEOLEF_HAVE_MPI
template<class T>
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);
// low-level interface, used by geo_mpi_get.cc
template<class T>
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);
#endif // _RHEOLEF_HAVE_MPI
}} // namespace rheolef::space_numbering
#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
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:206
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
mkgeo_ball.b
b
Definition: mkgeo_ball.sh:152
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