Loading...
Searching...
No Matches
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::basis_basic
Definition basis.h:566
rheolef::disarray
see the disarray page for the full documentation
Definition disarray.h:497
rheolef::geo_basic
generic mesh with rerefence counting
Definition geo.h:1089
rheolef::geo_element
see the geo_element page for the full documentation
Definition geo_element.h:102
rheolef::geo_element::size_type
reference_element::size_type size_type
Definition geo_element.h:125
rheolef::reference_element::max_variant
static const variant_type max_variant
Definition reference_element.h:82
rheolef::space_numbering
Definition space_numbering.cc:24
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_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::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::space_numbering::nnod
size_type nnod(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
Definition space_numbering.cc:54
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::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::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::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::space_numbering::size_type
geo_element::size_type size_type
Definition space_numbering.h:50
rheolef
This file is part of Rheolef.
Definition compiler_eigen.h:39
rheolef::geo_size
Definition geo_size.h:29