Public Member Functions | |
MGTransferBlock () | |
virtual | ~MGTransferBlock () |
void | initialize (const std::vector< number > &factors, VectorMemory< Vector< number > > &memory) |
template<int dim, int spacedim> | |
void | build_matrices (const DoFHandler< dim, spacedim > &dof, const MGDoFHandler< dim, spacedim > &mg_dof, const std::vector< bool > &selected) |
virtual void | prolongate (const unsigned int to_level, BlockVector< number > &dst, const BlockVector< number > &src) const |
virtual void | restrict_and_add (const unsigned int from_level, BlockVector< number > &dst, const BlockVector< number > &src) const |
template<int dim, typename number2 , int spacedim> | |
void | copy_to_mg (const MGDoFHandler< dim, spacedim > &mg_dof, MGLevelObject< BlockVector< 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< BlockVector< 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< BlockVector< number > > &src) const |
Private Attributes | |
std::vector< number > | factors |
SmartPointer< VectorMemory < Vector< number > > > | memory |
Implementation of the MGTransferBase interface for block matrices and block vectors.
In addition to the functionality of MGTransferPrebuilt, the operation may be restricted to certain blocks of the vector.
If the restricted mode is chosen, block vectors used in the transfer routines may only have as many blocks as there are trues
in the selected-field.
See MGTransferBase to find out which of the transfer classes is best for your needs.
MGTransferBlock< number >::MGTransferBlock | ( | ) |
Default constructor.
virtual MGTransferBlock< number >::~MGTransferBlock | ( | ) | [virtual] |
Destructor.
void MGTransferBlock< number >::initialize | ( | const std::vector< number > & | factors, | |
VectorMemory< Vector< number > > & | memory | |||
) |
void MGTransferBlock< number >::build_matrices | ( | const DoFHandler< dim, spacedim > & | dof, | |
const MGDoFHandler< dim, spacedim > & | mg_dof, | |||
const std::vector< bool > & | selected | |||
) | [inline] |
Build the prolongation matrices for each level.
This function is a front-end for the same function in MGTransferBlockBase.
virtual void MGTransferBlock< number >::prolongate | ( | const unsigned int | to_level, | |
BlockVector< number > & | dst, | |||
const BlockVector< number > & | src | |||
) | const [virtual] |
Prolongate a vector from level to_level-1
to level to_level
. The previous content of dst
is overwritten.
Implements MGTransferBase< BlockVector< number > >.
virtual void MGTransferBlock< number >::restrict_and_add | ( | const unsigned int | from_level, | |
BlockVector< number > & | dst, | |||
const BlockVector< 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.
Implements MGTransferBase< BlockVector< number > >.
void MGTransferBlock< number >::copy_to_mg | ( | const MGDoFHandler< dim, spacedim > & | mg_dof, | |
MGLevelObject< BlockVector< number > > & | dst, | |||
const BlockVector< number2 > & | src | |||
) | const [inline] |
Transfer from a vector on the global grid to a multilevel vector.
The action for discontinuous elements is as follows: on an active mesh cell, the global vector entries are simply copied to the corresponding entries of the level vector. Then, these values are restricted down to the coarsest level.
void MGTransferBlock< number >::copy_from_mg | ( | const MGDoFHandler< dim, spacedim > & | mg_dof, | |
BlockVector< number2 > & | dst, | |||
const MGLevelObject< BlockVector< number > > & | src | |||
) | const [inline] |
Transfer from multi-level vector to normal vector.
Copies data from active portions of a multilevel vector into the respective positions of a global vector.
void MGTransferBlock< number >::copy_from_mg_add | ( | const MGDoFHandler< dim, spacedim > & | mg_dof, | |
BlockVector< number2 > & | dst, | |||
const MGLevelObject< BlockVector< number > > & | src | |||
) | const [inline] |
Add a multi-level vector to a normal vector.
Works as the previous function, but probably not for continuous elements.
std::vector<number> MGTransferBlock< number >::factors [private] |
Optional multiplication factors for each block. Requires initialization of memory.
SmartPointer<VectorMemory<Vector<number> > > MGTransferBlock< number >::memory [private] |
Memory pool required if additional multiplication using factors is desired.