MGTransferSelect< number > Class Template Reference
[Multilevel support]

Inheritance diagram for MGTransferSelect< number >:
Inheritance graph
[legend]

List of all members.

Public Member Functions

virtual ~MGTransferSelect ()
template<int dim, int spacedim>
void build_matrices (const DoFHandler< dim, spacedim > &dof, const MGDoFHandler< dim, spacedim > &mg_dof, unsigned int selected, unsigned int mg_selected, const std::vector< unsigned int > &target_component=std::vector< unsigned int >(), const std::vector< unsigned int > &mg_target_component=std::vector< unsigned int >())
void select (const unsigned int component, const unsigned int mg_component=numbers::invalid_unsigned_int)
virtual void prolongate (const unsigned int to_level, Vector< number > &dst, const Vector< number > &src) const
virtual void restrict_and_add (const unsigned int from_level, Vector< number > &dst, const Vector< number > &src) const
template<int dim, typename number2 , int spacedim>
void copy_to_mg (const MGDoFHandler< dim, spacedim > &mg_dof, MGLevelObject< Vector< number > > &dst, const Vector< number2 > &src) const
template<int dim, typename number2 , int spacedim>
void copy_from_mg (const MGDoFHandler< dim, spacedim > &mg_dof, Vector< number2 > &dst, const MGLevelObject< Vector< number > > &src) const
template<int dim, typename number2 , int spacedim>
void copy_from_mg_add (const MGDoFHandler< dim, spacedim > &mg_dof, Vector< number2 > &dst, const MGLevelObject< Vector< number > > &src) const
template<int dim, typename number2 , int spacedim>
void copy_to_mg (const MGDoFHandler< dim, spacedim > &mg_dof, MGLevelObject< Vector< number > > &dst, const BlockVector< number2 > &src) const
template<int dim, typename number2 , int spacedim>
void copy_from_mg (const MGDoFHandler< dim, spacedim > &mg_dof, BlockVector< number2 > &dst, const MGLevelObject< Vector< number > > &src) const
template<int dim, typename number2 , int spacedim>
void copy_from_mg_add (const MGDoFHandler< dim, spacedim > &mg_dof, BlockVector< number2 > &dst, const MGLevelObject< Vector< number > > &src) const
unsigned int memory_consumption () const

Private Member Functions

template<int dim, class OutVector , int spacedim>
void do_copy_from_mg (const MGDoFHandler< dim, spacedim > &mg_dof, OutVector &dst, const MGLevelObject< Vector< number > > &src, const unsigned int offset) const
template<int dim, class OutVector , int spacedim>
void do_copy_from_mg_add (const MGDoFHandler< dim, spacedim > &mg_dof, OutVector &dst, const MGLevelObject< Vector< number > > &src, const unsigned int offset) const
template<int dim, class InVector , int spacedim>
void do_copy_to_mg (const MGDoFHandler< dim, spacedim > &mg_dof, MGLevelObject< Vector< number > > &dst, const InVector &src, const unsigned int offset) const

Private Attributes

unsigned int selected_component
unsigned int mg_selected_component

Detailed Description

template<typename number>
class MGTransferSelect< number >

Implementation of the MGTransferBase interface for block matrices and simple vectors. This class uses MGTransferComponentBase selecting a single component or grouping several components into a single block. The transfer operators themselves are implemented for Vector and BlockVector objects.

See MGTransferBase to find out which of the transfer classes is best for your needs.

Author:
Guido Kanschat, 2001, 2002, 2003

Constructor & Destructor Documentation

template<typename number >
virtual MGTransferSelect< number >::~MGTransferSelect (  )  [virtual]

Destructor.


Member Function Documentation

template<typename number >
template<int dim, int spacedim>
void MGTransferSelect< number >::build_matrices ( const DoFHandler< dim, spacedim > &  dof,
const MGDoFHandler< dim, spacedim > &  mg_dof,
unsigned int  selected,
unsigned int  mg_selected,
const std::vector< unsigned int > &  target_component = std::vector< unsigned int >(),
const std::vector< unsigned int > &  mg_target_component = std::vector< unsigned int >() 
) [inline]

Actually build the prolongation matrices for grouped components.

This function is a front-end for the same function in MGTransferComponentBase.

  • selected: Number of the component of the global vector to be copied from and to the multilevel vector. This number refers to the renumbering by target_component.
  • mg_selected: Number of the component for which the transfer matrices should be built.

If mg_target_component is present, this refers to the renumbered components.

  • mg_target_component: this argument allows grouping and renumbering of components in the level vectors (see DoFRenumbering::component_wise). It also affects the behavior of the selected argument
template<typename number >
void MGTransferSelect< number >::select ( const unsigned int  component,
const unsigned int  mg_component = numbers::invalid_unsigned_int 
) [inline]
template<typename number >
virtual void MGTransferSelect< number >::prolongate ( const unsigned int  to_level,
Vector< number > &  dst,
const Vector< number > &  src 
) const [virtual]

Prolongate a vector from level to_level-1 to level to_level. The previous content of dst is overwritten.

  • src is a vector with as many elements as there are degrees of freedom on the coarser level involved.
  • dst has as many elements as there are degrees of freedom on the finer level.

Implements MGTransferBase< Vector< number > >.

template<typename number >
virtual void MGTransferSelect< number >::restrict_and_add ( const unsigned int  from_level,
Vector< number > &  dst,
const Vector< number > &  src 
) const [virtual]

Restrict a vector from level from_level to level from_level-1 and add this restriction to dst. If the region covered by cells on level from_level is smaller than that of level from_level-1 (local refinement), then some degrees of freedom in dst are active and will not be altered. For the other degress of freedom, the result of the restriction is added.

  • src is a vector with as many elements as there are degrees of freedom on the finer level
  • dst has as many elements as there are degrees of freedom on the coarser level.

Implements MGTransferBase< Vector< number > >.

template<typename number >
template<int dim, typename number2 , int spacedim>
void MGTransferSelect< number >::copy_to_mg ( const MGDoFHandler< dim, spacedim > &  mg_dof,
MGLevelObject< Vector< number > > &  dst,
const Vector< number2 > &  src 
) const [inline]

Transfer from a vector on the global grid to a multilevel vector.

template<typename number >
template<int dim, typename number2 , int spacedim>
void MGTransferSelect< number >::copy_from_mg ( const MGDoFHandler< dim, spacedim > &  mg_dof,
Vector< number2 > &  dst,
const MGLevelObject< Vector< number > > &  src 
) const [inline]

Transfer from multilevel vector to normal vector.

Copies data from active portions of an multilevel vector into the respective positions of a Vector.

template<typename number >
template<int dim, typename number2 , int spacedim>
void MGTransferSelect< number >::copy_from_mg_add ( const MGDoFHandler< dim, spacedim > &  mg_dof,
Vector< number2 > &  dst,
const MGLevelObject< Vector< number > > &  src 
) const [inline]

Add a multi-level vector to a normal vector.

Works as the previous function, but probably not for continuous elements.

template<typename number >
template<int dim, typename number2 , int spacedim>
void MGTransferSelect< number >::copy_to_mg ( const MGDoFHandler< dim, spacedim > &  mg_dof,
MGLevelObject< Vector< number > > &  dst,
const BlockVector< number2 > &  src 
) const [inline]

Transfer from a vector on the global grid to multilevel vectors.

template<typename number >
template<int dim, typename number2 , int spacedim>
void MGTransferSelect< number >::copy_from_mg ( const MGDoFHandler< dim, spacedim > &  mg_dof,
BlockVector< number2 > &  dst,
const MGLevelObject< Vector< number > > &  src 
) const [inline]

Transfer from multilevel vector to normal vector.

Copies data from active portions of a multilevel vector into the respective positions of a global BlockVector.

template<typename number >
template<int dim, typename number2 , int spacedim>
void MGTransferSelect< number >::copy_from_mg_add ( const MGDoFHandler< dim, spacedim > &  mg_dof,
BlockVector< number2 > &  dst,
const MGLevelObject< Vector< number > > &  src 
) const [inline]

Add a multi-level vector to a normal vector.

Works as the previous function, but probably not for continuous elements.

template<typename number >
unsigned int MGTransferSelect< number >::memory_consumption (  )  const

Memory used by this object.

Reimplemented from MGTransferComponentBase.

template<typename number >
template<int dim, class OutVector , int spacedim>
void MGTransferSelect< number >::do_copy_from_mg ( const MGDoFHandler< dim, spacedim > &  mg_dof,
OutVector &  dst,
const MGLevelObject< Vector< number > > &  src,
const unsigned int  offset 
) const [inline, private]

Implementation of the public function.

template<typename number >
template<int dim, class OutVector , int spacedim>
void MGTransferSelect< number >::do_copy_from_mg_add ( const MGDoFHandler< dim, spacedim > &  mg_dof,
OutVector &  dst,
const MGLevelObject< Vector< number > > &  src,
const unsigned int  offset 
) const [inline, private]

Implementation of the public function.

template<typename number >
template<int dim, class InVector , int spacedim>
void MGTransferSelect< number >::do_copy_to_mg ( const MGDoFHandler< dim, spacedim > &  mg_dof,
MGLevelObject< Vector< number > > &  dst,
const InVector &  src,
const unsigned int  offset 
) const [inline, private]

Actual implementation of copy_to_mg().


Member Data Documentation

template<typename number >
unsigned int MGTransferSelect< number >::selected_component [private]

Selected component of global vector.

Referenced by MGTransferSelect< number >::select().

template<typename number >
unsigned int MGTransferSelect< number >::mg_selected_component [private]

Selected component inside multigrid.

Referenced by MGTransferSelect< number >::select().


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

deal.II documentation generated on Mon Nov 23 22:57:57 2009 by doxygen 1.6.1