Logo Search packages:      
Sourcecode: feel++ version File versions  Download package

Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Attributes | Private Types | Private Member Functions | Private Attributes | Friends

Feel::DofTable< MeshType, FEType, PeriodicityType > Class Template Reference

Local-to-global Degree of Freedom table. More...

#include <doftable.hpp>

Inheritance diagram for Feel::DofTable< MeshType, FEType, PeriodicityType >:
Inheritance graph
[legend]
Collaboration diagram for Feel::DofTable< MeshType, FEType, PeriodicityType >:
Collaboration graph
[legend]

List of all members.

Classes

struct  element_access
struct  face_access

Public Types

typedef boost::multi_array
< global_dof_type, 2 > 
Container
typedef boost::multi_array
< global_dof_fromface_type, 2 > 
Container_fromface
typedef fe_type::continuity_type continuity_type
typedef
reference_convex_type::super 
convex_type
typedef boost::array
< Container::index, 2 > 
dims_type
typedef
dof_element_type::const_iterator 
dof_const_iterator
typedef std::map< size_type,
std::list< local_dof_type > > 
dof_element_type
typedef dof_element_type::iterator dof_iterator
typedef std::map< dof_type,
size_type, size_type >
::const_iterator 
dof_map_const_iterator
typedef std::map< dof_type,
size_type >::iterator 
dof_map_iterator
typedef std::map< dof_type,
size_type
dof_map_type
typedef boost::tuple
< node_type, size_type,
uint16_type > 
dof_point_type
typedef std::vector
< dof_point_type >
::const_iterator 
dof_points_const_iterator
typedef std::vector
< dof_point_type >::iterator 
dof_points_iterator
typedef std::vector
< dof_point_type > 
dof_points_type
typedef std::map< size_type,
std::set< size_type > > 
dof_procset_type
typedef boost::tuple
< uint16_type, uint16_type,
size_type
dof_type
typedef
element_type::edge_permutation_type 
edge_permutation_type
typedef
mesh_type::element_const_iterator 
element_const_iterator
typedef boost::tuple
< element_type const
*, face_type const * > 
element_face_pair_type
typedef mesh_type::element_type element_type
typedef
element_type::face_permutation_type 
face_permutation_type
typedef ublas::vector< bool > face_sign_info_type
typedef mesh_type::face_type face_type
typedef boost::shared_ptr< FEType > fe_ptrtype
typedef FEType fe_type
typedef boost::tuple
< size_type, int16_type, bool,
int16_type > 
global_dof_fromface_type
typedef boost::tuple
< size_type, int16_type, bool > 
global_dof_type
typedef mesh_type::gm_ptrtype gm_ptrtype
typedef mesh_type::gm_type gm_type
typedef Container::array_view
< 1 >::type 
indices_per_element_type
typedef std::list
< local_dof_type >
::const_iterator 
ldof_const_iterator
typedef boost::tuple
< size_type, uint16_type,
uint16_type, uint16_type > 
local_dof_type
typedef Eigen::Matrix< int,
nDofPerElement, 1 > 
localglobal_indices_type
typedef fe_type::matrix_type matrix_type
typedef MeshType mesh_type
typedef node< value_type >::type node_type
typedef std::multimap
< size_type, periodic_dof_type > 
periodic_dof_map_type
typedef boost::tuple
< size_type, uint16_type,
size_type, uint16_type > 
periodic_dof_type
typedef
periodic_element_list_type::const_iterator 
periodic_element_list_const_iterator
typedef
periodic_element_list_type::iterator 
periodic_element_list_iterator
typedef std::list
< element_face_pair_type > 
periodic_element_list_type
typedef PeriodicityType periodicity_type
typedef ublas::vector
< uint16_type > 
permutation_vector_type
typedef
mesh_type::pid_element_const_iterator 
pid_element_const_iterator
typedef fe_type::points_type points_type
typedef Container::index_range range_type
typedef boost::tuple
< uint16_type &, size_type & > 
ref_shift_type
typedef
fe_type::reference_convex_type 
reference_convex_type
typedef DofTable< MeshType,
FEType, PeriodicityType > 
self_type
typedef fe_type::value_type value_type

Public Member Functions

void addDofFromElement (element_type const &__elt, size_type &next_free_dof, size_type processor=0, size_type shift=0)
void addEdgePeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag)
void addEdgePeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag, mpl::bool_< false >, mpl::int_< 1 >)
void addEdgePeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag, mpl::bool_< false >, mpl::int_< 2 >)
void addEdgePeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag, mpl::bool_< false >, mpl::int_< 3 >)
void addEdgePeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag, mpl::bool_< true >, mpl::int_< 1 >)
void addEdgePeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag, mpl::bool_< true >, mpl::int_< 2 >)
void addEdgePeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag, mpl::bool_< true >, mpl::int_< 3 >)
void addFacePeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag)
void addFacePeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag, mpl::bool_< false >)
void addFacePeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag, mpl::bool_< true >)
void addVertexPeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag, mpl::bool_< true >)
void addVertexPeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag)
void addVertexPeriodicDof (element_type const &__elt, face_type const &__face, size_type &next_free_dof, std::map< size_type, periodic_dof_map_type > &periodic_dof, size_type tag, mpl::bool_< false >)
void build (mesh_type *M)
void build (boost::shared_ptr< mesh_type > &M)
void build (mesh_type &M)
void buildBoundaryDofMap (mesh_type &mesh)
 Build the localToGlobal table for the boundary.
void buildDofMap (mesh_type &mesh, size_type start_next_free_dof=0)
 Build the localToGlobal table.
size_type buildLocallyDiscontinuousDofMap (mesh_type &M, size_type start_next_free_dof)
size_type buildPeriodicDofMap (mesh_type &M)
void clearMapGDof ()
size_type dofIndex (size_type dof) const
size_type dofNProc (size_type dof) const
const dof_point_type & dofPoint (size_type i) const
dof_points_const_iterator dofPointBegin () const
dof_points_iterator dofPointBegin ()
dof_points_const_iterator dofPointEnd () const
dof_points_iterator dofPointEnd ()
std::set< size_typedofProcSet (size_type dof) const
 DofTable (fe_ptrtype const &_fe, periodicity_type const &periodicity)
 The minimal constructor.
 DofTable (const DofTable &dof2)
 DofTable (mesh_type &mesh, fe_ptrtype const &_fe, periodicity_type const &periodicity)
 Constructor accepting a mesh as parameter.
dof_container_type const & dofView () const
void dump () const
global_dof_fromface_type faceLocalToGlobal (const size_type ElId, const uint16_type localNode, const uint16_type c=0) const
std::vector< size_typegetIndices (size_type id_el) const
indices_per_element_type indices (size_type id_el) const
void initDofMap (mesh_type &M)
bool insertDof (size_type ie, uint16_type l_dof, uint16_type lc, dof_type gDof, uint16_type processor, size_type &pDof, int32_type sign=1, bool is_dof_periodic=false, size_type shift=0)
bool isElementDone (size_type elt, int c=0)
template<typename Elem >
uint16_type localDofInElement (Elem const &El, const uint16_type localNode, const uint16_type c=0) const
size_type localToGlobal (size_type l) const
global_dof_type localToGlobal (const size_type ElId, const uint16_type localNode, const uint16_type c=0) const
template<typename Elem >
mpl::if_< mpl::equal_to
< mpl::int_< Elem::nDim >
, mpl::int_< nDim >
>, global_dof_type,
global_dof_fromface_type >
::type 
localToGlobal (Elem const &El, const uint16_type localNode, const uint16_type c=0) const
 local to global mapping
localglobal_indices_type const & localToGlobalIndices (size_type ElId)
std::map< size_type, std::pair
< size_type, size_type > > 
localToGlobalMap () const
localglobal_indices_type const & localToGlobalSigns (size_type ElId)
dof_map_type const & mapGDof () const
dof_map_type & mapGDof ()
uint16_type nDofPerFaceOnBoundary () const
size_type numElements () const
uint16_type numLocalEdges () const
uint16_type numLocalFaces () const
uint16_type numLocalVertices () const
void setDofIndices (std::vector< boost::tuple< size_type, uint16_type, size_type > > const &dof)
void setElementDone (size_type elt)
void setMapGDof (dof_map_type const &mapdof)
void showMe () const
Accessors
size_type nDof () const
size_type nLocalDof () const
size_type nMyDof () const
size_type nDofOnProcessor (const size_type proc) const
size_type nProcessors () const
size_type firstDof () const
size_type firstDof (const size_type proc) const
size_type lastDof () const
size_type lastDof (const unsigned int proc) const
size_type lid (size_type GID) const
 Returns local ID of global ID, return invalid_size_type_value if not found on this processor.
size_type gid (size_type LID) const
 Returns global ID of local ID, return -1 if not found on this processor.
bool myGID (size_type GID) const
 Returns true if the GID passed in belongs to the calling processor in this map, otherwise returns false.
bool myLID (size_type LID) const
 Returns true if the LID passed in belongs to the calling processor in this map, otherwise returns false.
size_type minAllGID () const
 Returns the minimum global ID across the entire map.
size_type maxAllGID () const
 Returns the maximum global ID across the entire map.
size_type minMyGID () const
 Returns the maximum global ID owned by this processor.
size_type maxMyGID () const
 Returns the maximum global ID owned by this processor.
size_type minLID () const
 The minimum local index value on the calling processor.
size_type maxLID () const
 The maximum local index value on the calling processor.
size_type nGlobalElements () const
 number of elements across all processors.
size_type nMyElements () const
 number of elements on the calling processor.
std::vector< size_type > const & myGlobalElements () const
 Puts list of global elements on this processor size_typeo the user-provided array.
bool closed () const
mpi::communicator const & comm () const
Methods
void close () const

Static Public Attributes

static const bool is_continuous = fe_type::isContinuous
static const bool is_discontinuous_locally = fe_type::continuity_type::is_discontinuous_locally
static const bool is_discontinuous_totally = fe_type::continuity_type::is_discontinuous_totally
static const bool is_modal = FEType::is_modal
static const bool is_p0_continuous = ( (nOrder == 0) && is_continuous )
static const bool is_periodic = periodicity_type::is_periodic
static const bool is_product = FEType::is_product
static const bool is_scalar = FEType::is_scalar
static const bool is_tensor2 = FEType::is_tensor2
static const bool is_vectorial = FEType::is_vectorial
static const uint16_type nComponents = fe_type::nComponents
static const uint16_type nComponents1 = fe_type::nComponents1
static const uint16_type nComponents2 = fe_type::nComponents2
static const uint16_type nDim = mesh_type::nDim
static const uint16_type nDofPerElement = mpl::if_<mpl::bool_<is_product>, mpl::int_<FEType::nLocalDof*nComponents1>, mpl::int_<FEType::nLocalDof> >::type::value
static const uint16_type nOrder = fe_type::nOrder
static const uint16_type Shape = mesh_type::Shape

Protected Attributes

std::vector< size_type_M_first_df
std::vector< size_type_M_last_df
size_type _M_n_dofs
bool M_closed
mpi::communicator M_comm
std::vector< size_typeM_myglobalelements

Private Types

typedef DataMap super
typedef std::vector
< localglobal_indices_type,
Eigen::aligned_allocator
< localglobal_indices_type > > 
vector_indices_type

Private Member Functions

template<typename FaceIterator >
void addEdgeBoundaryDof (FaceIterator __face_it, uint16_type &lc)
template<typename FaceIterator >
void addEdgeBoundaryDof (FaceIterator __face_it, uint16_type &lc, mpl::bool_< true >, mpl::int_< 3 >)
template<typename FaceIterator >
void addEdgeBoundaryDof (FaceIterator, uint16_type &, mpl::bool_< false >, mpl::int_< 1 >)
template<typename FaceIterator >
void addEdgeBoundaryDof (FaceIterator, uint16_type &, mpl::bool_< false >, mpl::int_< 2 >)
template<typename FaceIterator >
void addEdgeBoundaryDof (FaceIterator, uint16_type &, mpl::bool_< false >, mpl::int_< 3 >)
template<typename FaceIterator >
void addEdgeBoundaryDof (FaceIterator __face_it, uint16_type &lc, mpl::bool_< true >, mpl::int_< 2 >)
void addEdgeDof (element_type const &, uint16_type, size_type &, ref_shift_type &, mpl::int_< 1 >, mpl::bool_< false >)
void addEdgeDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts, mpl::int_< 2 >, mpl::bool_< true >)
void addEdgeDof (element_type const &, uint16_type, size_type &, ref_shift_type &, mpl::int_< 3 >, mpl::bool_< false >)
void addEdgeDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts, mpl::int_< 3 >, mpl::bool_< true >)
void addEdgeDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts, mpl::int_< 1 >, mpl::bool_< true >)
void addEdgeDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts)
void addEdgeDof (element_type const &, uint16_type, size_type &, ref_shift_type &, mpl::int_< 2 >, mpl::bool_< false >)
template<typename FaceIterator >
void addFaceBoundaryDof (FaceIterator __face_it, uint16_type &lc)
template<typename FaceIterator >
void addFaceBoundaryDof (FaceIterator, uint16_type &, mpl::bool_< false >)
template<typename FaceIterator >
void addFaceBoundaryDof (FaceIterator __face_it, uint16_type &lc, mpl::bool_< true >)
void addFaceDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts, mpl::int_< 3 >, mpl::bool_< true >)
void addFaceDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts)
void addFaceDof (element_type const &, uint16_type, size_type &, ref_shift_type &, mpl::int_< 1 >, mpl::bool_< false >)
void addFaceDof (element_type const &, uint16_type, size_type &, ref_shift_type &, mpl::int_< 2 >, mpl::bool_< false >)
void addFaceDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts, mpl::int_< 2 >, mpl::bool_< true >)
void addFaceDof (element_type const &, uint16_type, size_type &, ref_shift_type &, mpl::int_< 3 >, mpl::bool_< false >)
template<typename FaceIterator >
void addVertexBoundaryDof (FaceIterator __face_it, uint16_type &lc)
template<typename FaceIterator >
void addVertexBoundaryDof (FaceIterator, uint16_type &, mpl::bool_< false >, mpl::int_< 1 >)
template<typename FaceIterator >
void addVertexBoundaryDof (FaceIterator, uint16_type &, mpl::bool_< false >, mpl::int_< 2 >)
template<typename FaceIterator >
void addVertexBoundaryDof (FaceIterator, uint16_type &, mpl::bool_< false >, mpl::int_< 3 >)
template<typename FaceIterator >
void addVertexBoundaryDof (FaceIterator __face_it, uint16_type &lc, mpl::bool_< true >, mpl::int_< 1 >)
template<typename FaceIterator >
void addVertexBoundaryDof (FaceIterator __face_it, uint16_type &lc, mpl::bool_< true >, mpl::int_< 2 >)
template<typename FaceIterator >
void addVertexBoundaryDof (FaceIterator __face_it, uint16_type &lc, mpl::bool_< true >, mpl::int_< 3 >)
void addVertexDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts)
void addVertexDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts, mpl::bool_< true >)
void addVertexDof (element_type const &, uint16_type, size_type &, ref_shift_type &, mpl::bool_< false >)
void addVolumeDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts)
void addVolumeDof (element_type const &, uint16_type, size_type &, ref_shift_type &, mpl::bool_< false >)
void addVolumeDof (element_type const &__elt, uint16_type processor, size_type &next_free_dof, ref_shift_type &shifts, mpl::bool_< true >)
void checkDofContinuity (mesh_type &mesh, mpl::int_< 3 >)
void checkDofContinuity (mesh_type &mesh, mpl::int_< 2 >)
void checkDofContinuity (mesh_type &, mpl::int_< 1 >)
template<int N>
void checkDofEntity (mesh_type &M)
 Checks if the dofs associated with entity_id N are continuous.
void generateDofPoints (mesh_type &M)
void generateFacePermutations (mesh_type &, mpl::bool_< false >)
void generateFacePermutations (mesh_type &mesh, mpl::bool_< true >)
void generatePeriodicDofPoints (mesh_type &M, periodic_element_list_type const &periodic_elements, dof_points_type &periodic_dof_points)

Private Attributes

reference_convex_type _M_convex_ref
dof_element_type _M_dof2elt
dof_procset_type _M_dof_procset
Container _M_el_l2g
std::vector< bool > _M_elt_done
Container_fromface _M_face_l2g
face_sign_info_type _M_face_sign
fe_ptrtype _M_fe
std::map< size_type, std::pair
< size_type, size_type > > 
_M_local2global
uint16_type _M_n_dof_per_face
uint16_type _M_n_dof_per_face_on_bdy
size_type _M_n_el
std::vector< boost::tuple
< size_type, uint16_type,
size_type > > 
M_dof_indices
dof_points_type M_dof_points
dof_container_type M_dof_view
 a view of the dof container
vector_indices_type M_locglob_indices
vector_indices_type M_locglob_signs
periodicity_type M_periodicity
dof_map_type map_gdof
std::map
< face_permutation_type,
permutation_vector_type
vector_permutation

Friends

class element_access
class face_access

Detailed Description

template<typename MeshType, typename FEType, typename PeriodicityType>
class Feel::DofTable< MeshType, FEType, PeriodicityType >

Local-to-global Degree of Freedom table.

Author:
Christophe Prud'homme
Goncalo Pena

Definition at line 62 of file doftable.hpp.


The documentation for this class was generated from the following file:

Generated by  Doxygen 1.6.0   Back to index