Reference documentation for deal.II version 9.2.0
|
#include <deal.II/meshworker/assembler.h>
Public Types | |
using | MatrixPtrVector = MGMatrixBlockVector< MatrixType > |
using | MatrixPtrVectorPtr = SmartPointer< MatrixPtrVector, MGMatrixLocalBlocksToGlobalBlocks< MatrixType, number > > |
Public Member Functions | |
MGMatrixLocalBlocksToGlobalBlocks (double threshold=1.e-12) | |
void | initialize (const BlockInfo *block_info, MatrixPtrVector &matrices) |
void | initialize (const MGConstrainedDoFs &mg_constrained_dofs) |
void | initialize_edge_flux (MatrixPtrVector &up, MatrixPtrVector &down) |
void | initialize_interfaces (MatrixPtrVector &interface_in, MatrixPtrVector &interface_out) |
template<class DOFINFO > | |
void | initialize_info (DOFINFO &info, bool face) const |
template<class DOFINFO > | |
void | assemble (const DOFINFO &info) |
template<class DOFINFO > | |
void | assemble (const DOFINFO &info1, const DOFINFO &info2) |
Private Member Functions | |
void | assemble (MatrixType &global, const FullMatrix< number > &local, const unsigned int block_row, const unsigned int block_col, const std::vector< types::global_dof_index > &dof1, const std::vector< types::global_dof_index > &dof2, const unsigned int level1, const unsigned int level2, bool transpose=false) |
void | assemble_fluxes (MatrixType &global, const FullMatrix< number > &local, const unsigned int block_row, const unsigned int block_col, const std::vector< types::global_dof_index > &dof1, const std::vector< types::global_dof_index > &dof2, const unsigned int level1, const unsigned int level2) |
void | assemble_up (MatrixType &global, const FullMatrix< number > &local, const unsigned int block_row, const unsigned int block_col, const std::vector< types::global_dof_index > &dof1, const std::vector< types::global_dof_index > &dof2, const unsigned int level1, const unsigned int level2) |
void | assemble_down (MatrixType &global, const FullMatrix< number > &local, const unsigned int block_row, const unsigned int block_col, const std::vector< types::global_dof_index > &dof1, const std::vector< types::global_dof_index > &dof2, const unsigned int level1, const unsigned int level2) |
void | assemble_in (MatrixType &global, const FullMatrix< number > &local, const unsigned int block_row, const unsigned int block_col, const std::vector< types::global_dof_index > &dof1, const std::vector< types::global_dof_index > &dof2, const unsigned int level1, const unsigned int level2) |
void | assemble_out (MatrixType &global, const FullMatrix< number > &local, const unsigned int block_row, const unsigned int block_col, const std::vector< types::global_dof_index > &dof1, const std::vector< types::global_dof_index > &dof2, const unsigned int level1, const unsigned int level2) |
Private Attributes | |
MatrixPtrVectorPtr | matrices |
MatrixPtrVectorPtr | flux_down |
MatrixPtrVectorPtr | flux_up |
MatrixPtrVectorPtr | interface_out |
MatrixPtrVectorPtr | interface_in |
SmartPointer< const BlockInfo, MGMatrixLocalBlocksToGlobalBlocks< MatrixType, number > > | block_info |
SmartPointer< const MGConstrainedDoFs, MGMatrixLocalBlocksToGlobalBlocks< MatrixType, number > > | mg_constrained_dofs |
const double | threshold |
A helper class assembling local matrices into global multilevel matrices. This class is the multilevel equivalent of MatrixLocalBlocksToGlobalBlocks and documentation of that class applies here to a large extend.
The global matrices are expected as a vector of pointers to MatrixBlock objects, each containing a MGLevelObject with matrices with a function corresponding to SparseMatrix::add() and information on the block row and column this matrix represents in a block system.
The local matrices are a similar vector of MatrixBlock objects, but containing a FullMatrix.
If local refinement occurs, the Multigrid method needs more matrices, two for continuous elements and another two if numerical fluxes are computed on interfaces. The second set can be added using initialize_edge_flux(). Once added, the contributions in all participating matrices will be assembled from the cell and face matrices automatically.
Definition at line 329 of file assembler.h.
using MeshWorker::Assembler::MGMatrixLocalBlocksToGlobalBlocks< MatrixType, number >::MatrixPtrVector = MGMatrixBlockVector<MatrixType> |
Definition at line 332 of file assembler.h.
using MeshWorker::Assembler::MGMatrixLocalBlocksToGlobalBlocks< MatrixType, number >::MatrixPtrVectorPtr = SmartPointer<MatrixPtrVector, MGMatrixLocalBlocksToGlobalBlocks<MatrixType, number> > |
Definition at line 335 of file assembler.h.
|
inline |
Constructor, initializing the threshold, which limits how small numbers may be to be entered into the matrix.
Definition at line 787 of file assembler.h.
|
inline |
Copy the BlockInfo and the matrix pointers into local variables and initialize cell matrix vectors.
Definition at line 794 of file assembler.h.
|
inline |
Initialize the multilevel constraints.
Definition at line 806 of file assembler.h.
|
inline |
Multigrid methods on locally refined meshes need additional matrices. For discontinuous Galerkin methods, these are two flux matrices across the refinement edge, which are set by this method.
Definition at line 827 of file assembler.h.
|
inline |
Multigrid methods on locally refined meshes need additional matrices. For discontinuous Galerkin methods, these are two flux matrices across the refinement edge, which are set by this method.
Definition at line 839 of file assembler.h.
|
inline |
Initialize the local data in the DoFInfo object used later for assembling.
The info
object refers to a cell if !face
, or else to an interior or boundary face.
Definition at line 816 of file assembler.h.
|
inline |
Assemble the local matrices into the global matrices.
Definition at line 1278 of file assembler.h.
|
inline |
Assemble all local matrices into the global matrices.
Definition at line 1343 of file assembler.h.
|
inlineprivate |
Assemble a single local matrix into a global one.
Definition at line 848 of file assembler.h.
|
inlineprivate |
Assemble a single local matrix into a global one.
Definition at line 937 of file assembler.h.
|
inlineprivate |
Assemble a single local matrix into a global one.
Definition at line 1000 of file assembler.h.
|
inlineprivate |
Assemble a single local matrix into a global one.
Definition at line 1063 of file assembler.h.
|
inlineprivate |
Assemble a single local matrix into a global one.
Definition at line 1126 of file assembler.h.
|
inlineprivate |
Assemble a single local matrix into a global one.
Definition at line 1201 of file assembler.h.
|
private |
The level matrices, stored as a vector of pointers.
Definition at line 481 of file assembler.h.
|
private |
The flux matrix between the fine and the coarse level at refinement edges.
Definition at line 487 of file assembler.h.
|
private |
The flux matrix between the coarse and the fine level at refinement edges.
Definition at line 493 of file assembler.h.
|
private |
The interface matrix between the fine and the coarse level at refinement edges.
Definition at line 499 of file assembler.h.
|
private |
The interface matrix between the coarse and the fine level at refinement edges.
Definition at line 505 of file assembler.h.
|
private |
A pointer to the object containing the block structure.
Definition at line 512 of file assembler.h.
|
private |
A pointer to the object containing constraints.
Definition at line 519 of file assembler.h.
|
private |
The smallest positive number that will be entered into the global matrix. All smaller absolute values will be treated as zero and will not be assembled.
Definition at line 527 of file assembler.h.