![]() |
Reference documentation for deal.II version 9.3.3
|
#include <deal.II/multigrid/mg_transfer_global_coarsening.h>
Classes | |
struct | MGTransferScheme |
Public Member Functions | |
void | reinit_geometric_transfer (const DoFHandler< dim > &dof_handler_fine, const DoFHandler< dim > &dof_handler_coarse, const AffineConstraints< Number > &constraint_fine, const AffineConstraints< Number > &constraint_coarse) |
void | reinit_polynomial_transfer (const DoFHandler< dim > &dof_handler_fine, const DoFHandler< dim > &dof_handler_coarse, const AffineConstraints< Number > &constraint_fine, const AffineConstraints< Number > &constraint_coarse) |
void | prolongate (LinearAlgebra::distributed::Vector< Number > &dst, const LinearAlgebra::distributed::Vector< Number > &src) const |
void | restrict_and_add (LinearAlgebra::distributed::Vector< Number > &dst, const LinearAlgebra::distributed::Vector< Number > &src) const |
void | interpolate (LinearAlgebra::distributed::Vector< Number > &dst, const LinearAlgebra::distributed::Vector< Number > &src) const |
Static Public Member Functions | |
static bool | fast_polynomial_transfer_supported (const unsigned int fe_degree_fine, const unsigned int fe_degree_coarse) |
Private Attributes | |
std::vector< MGTransferScheme > | schemes |
bool | fine_element_is_continuous |
std::shared_ptr< const Utilities::MPI::Partitioner > | partitioner_fine |
std::shared_ptr< const Utilities::MPI::Partitioner > | partitioner_coarse |
LinearAlgebra::distributed::Vector< Number > | vec_fine |
LinearAlgebra::distributed::Vector< Number > | vec_coarse |
LinearAlgebra::distributed::Vector< Number > | vec_coarse_constraints |
std::vector< unsigned int > | constraint_coarse_distribute_indices |
std::vector< Number > | constraint_coarse_distribute_values |
std::vector< unsigned int > | constraint_coarse_distribute_ptr |
std::vector< unsigned int > | distribute_local_to_global_indices |
std::vector< Number > | distribute_local_to_global_values |
std::vector< unsigned int > | distribute_local_to_global_ptr |
unsigned int | n_components |
Friends | |
class | internal::MGTwoLevelTransferImplementation |
Class for transfer between two multigrid levels for p- or global coarsening. Specialization for LinearAlgebra::distributed::Vector.
Definition at line 143 of file mg_transfer_global_coarsening.h.
void MGTwoLevelTransfer< dim, LinearAlgebra::distributed::Vector< Number > >::reinit_geometric_transfer | ( | const DoFHandler< dim > & | dof_handler_fine, |
const DoFHandler< dim > & | dof_handler_coarse, | ||
const AffineConstraints< Number > & | constraint_fine, | ||
const AffineConstraints< Number > & | constraint_coarse | ||
) |
Set up global coarsening transfer transfer
between the given dof-handlers.
void MGTwoLevelTransfer< dim, LinearAlgebra::distributed::Vector< Number > >::reinit_polynomial_transfer | ( | const DoFHandler< dim > & | dof_handler_fine, |
const DoFHandler< dim > & | dof_handler_coarse, | ||
const AffineConstraints< Number > & | constraint_fine, | ||
const AffineConstraints< Number > & | constraint_coarse | ||
) |
Set up polynomial coarsening transfer transfer
between the given dof-handlers.
|
static |
Check if a fast templated version of the polynomial transfer between fe_degree_fine
and fe_degree_coarse
is available.
void MGTwoLevelTransfer< dim, LinearAlgebra::distributed::Vector< Number > >::prolongate | ( | LinearAlgebra::distributed::Vector< Number > & | dst, |
const LinearAlgebra::distributed::Vector< Number > & | src | ||
) | const |
Perform prolongation.
void MGTwoLevelTransfer< dim, LinearAlgebra::distributed::Vector< Number > >::restrict_and_add | ( | LinearAlgebra::distributed::Vector< Number > & | dst, |
const LinearAlgebra::distributed::Vector< Number > & | src | ||
) | const |
Perform restriction.
void MGTwoLevelTransfer< dim, LinearAlgebra::distributed::Vector< Number > >::interpolate | ( | LinearAlgebra::distributed::Vector< Number > & | dst, |
const LinearAlgebra::distributed::Vector< Number > & | src | ||
) | const |
Perform interpolation of a solution vector from the fine level to the coarse level. This function is different from restriction, where a weighted residual is transferred to a coarser level (transposition of prolongation matrix).
|
friend |
Definition at line 364 of file mg_transfer_global_coarsening.h.
|
private |
Transfer schemes.
Definition at line 282 of file mg_transfer_global_coarsening.h.
|
private |
Flag if the finite elements on the fine cells are continuous. If yes, the multiplicity of DoF sharing a vertex/line as well as constraints have to be taken into account via weights.
Definition at line 289 of file mg_transfer_global_coarsening.h.
|
private |
Partitioner needed by the intermediate vector.
Definition at line 294 of file mg_transfer_global_coarsening.h.
|
private |
Partitioner needed by the intermediate vector.
Definition at line 299 of file mg_transfer_global_coarsening.h.
|
mutableprivate |
Internal vector needed for collecting all degrees of freedom of the fine cells. It is only initialized if the fine-level DoF indices touch DoFs other than the locally active ones (which we always assume can be accessed by the given vectors in the prolongate/restrict functions), otherwise it is left at size zero.
Definition at line 308 of file mg_transfer_global_coarsening.h.
|
mutableprivate |
Internal vector on that the actual prolongation/restriction is performed.
Definition at line 313 of file mg_transfer_global_coarsening.h.
|
mutableprivate |
Internal vector for performing manual constraint_coarse.distribute(), which is needed for acceptable performance.
Definition at line 319 of file mg_transfer_global_coarsening.h.
|
private |
Constraint-entry indices for manually performing constraint_coarse.distribute() in MPI-local indices (for performance reasons).
Definition at line 326 of file mg_transfer_global_coarsening.h.
|
private |
Constraint-entry values for manually performing constraint_coarse.distribute() in MPI-local indices (for performance reasons).
Definition at line 333 of file mg_transfer_global_coarsening.h.
|
private |
Pointers to the constraint entries for performing manual constraint_coarse.distribute().
Definition at line 339 of file mg_transfer_global_coarsening.h.
|
private |
Constraint-entry indices for performing manual constraint_coarse.distribute_local_to_global().
Definition at line 345 of file mg_transfer_global_coarsening.h.
|
private |
Constraint-entry values for performing manual constraint_coarse.distribute_local_to_global().
Definition at line 351 of file mg_transfer_global_coarsening.h.
|
private |
Pointers to the constraint entries for performing manual constraint_coarse.distribute_local_to_global().
Definition at line 357 of file mg_transfer_global_coarsening.h.
|
private |
Number of components.
Definition at line 362 of file mg_transfer_global_coarsening.h.