![]() |
|
#include <multi_poisson_block_preconditioners.h>
Inheritance diagram for oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >:Public Member Functions | |
| TwoPlusOneUpperTriangularPreconditioner () | |
| Constructor for TwoPlusOneUpperTriangularPreconditioner. More... | |
| ~TwoPlusOneUpperTriangularPreconditioner () | |
| Destructor - delete the diagonal solvers (subsidiary preconditioners) More... | |
| virtual void | clean_up_my_memory () |
| Cleanup function. More... | |
| TwoPlusOneUpperTriangularPreconditioner (const TwoPlusOneUpperTriangularPreconditioner &) | |
| Broken copy constructor. More... | |
| void | operator= (const TwoPlusOneUpperTriangularPreconditioner &) |
| Broken assignment operator. More... | |
| void | preconditioner_solve (const DoubleVector &r, DoubleVector &z) |
| Apply preconditioner to r, i.e. return z such that P z = r. More... | |
| void | setup () |
| Setup the preconditioner. More... | |
| void | set_multi_poisson_mesh (Mesh *multi_poisson_mesh_pt) |
| Specify the mesh that contains multi-poisson elements. More... | |
| void | setup (DoubleMatrixBase *matrix_pt) |
| void | setup (const Problem *problem_pt, DoubleMatrixBase *matrix_pt) |
| virtual void | setup ()=0 |
Public Member Functions inherited from oomph::BlockPreconditioner< MATRIX > | |
| BlockPreconditioner () | |
| Constructor. More... | |
| virtual | ~BlockPreconditioner () |
| Destructor. More... | |
| BlockPreconditioner (const BlockPreconditioner &)=delete | |
| Broken copy constructor. More... | |
| void | operator= (const BlockPreconditioner &)=delete |
| Broken assignment operator. More... | |
| MATRIX * | matrix_pt () const |
| void | turn_on_recursive_debug_flag () |
| void | turn_off_recursive_debug_flag () |
| void | turn_on_debug_flag () |
| Toggles on the debug flag. More... | |
| void | turn_off_debug_flag () |
| Toggles off the debug flag. More... | |
| void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< MATRIX > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse) |
| void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< MATRIX > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse, const Vector< Vector< unsigned >> &doftype_coarsen_map_coarse) |
| virtual void | block_setup () |
| void | block_setup (const Vector< unsigned > &dof_to_block_map) |
| void | get_block (const unsigned &i, const unsigned &j, MATRIX &output_matrix, const bool &ignore_replacement_block=false) const |
| MATRIX | get_block (const unsigned &i, const unsigned &j, const bool &ignore_replacement_block=false) const |
| void | set_master_matrix_pt (MATRIX *in_matrix_pt) |
| Set the matrix_pt in the upper-most master preconditioner. More... | |
| void | get_block_other_matrix (const unsigned &i, const unsigned &j, MATRIX *in_matrix_pt, MATRIX &output_matrix) |
| void | get_blocks (DenseMatrix< bool > &required_blocks, DenseMatrix< MATRIX * > &block_matrix_pt) const |
| void | get_dof_level_block (const unsigned &i, const unsigned &j, MATRIX &output_block, const bool &ignore_replacement_block=false) const |
| MATRIX | get_concatenated_block (const VectorMatrix< BlockSelector > &selected_block) |
| void | get_concatenated_block_vector (const Vector< unsigned > &block_vec_number, const DoubleVector &v, DoubleVector &b) |
| void | return_concatenated_block_vector (const Vector< unsigned > &block_vec_number, const DoubleVector &b, DoubleVector &v) const |
| Takes concatenated block ordered vector, b, and copies its. More... | |
| void | get_block_vectors (const Vector< unsigned > &block_vec_number, const DoubleVector &v, Vector< DoubleVector > &s) const |
| void | get_block_vectors (const DoubleVector &v, Vector< DoubleVector > &s) const |
| void | return_block_vectors (const Vector< unsigned > &block_vec_number, const Vector< DoubleVector > &s, DoubleVector &v) const |
| void | return_block_vectors (const Vector< DoubleVector > &s, DoubleVector &v) const |
| void | get_block_vector (const unsigned &n, const DoubleVector &v, DoubleVector &b) const |
| void | return_block_vector (const unsigned &n, const DoubleVector &b, DoubleVector &v) const |
| void | get_block_ordered_preconditioner_vector (const DoubleVector &v, DoubleVector &w) |
| void | return_block_ordered_preconditioner_vector (const DoubleVector &w, DoubleVector &v) const |
| unsigned | nblock_types () const |
| Return the number of block types. More... | |
| unsigned | ndof_types () const |
| Return the total number of DOF types. More... | |
| const Mesh * | mesh_pt (const unsigned &i) const |
| unsigned | nmesh () const |
| int | block_number (const unsigned &i_dof) const |
| Return the block number corresponding to a global index i_dof. More... | |
| int | index_in_block (const unsigned &i_dof) const |
| const LinearAlgebraDistribution * | block_distribution_pt (const unsigned &b) const |
| Access function to the block distributions (const version). More... | |
| LinearAlgebraDistribution * | block_distribution_pt (const unsigned b) |
| Access function to the block distributions (non-const version). More... | |
| LinearAlgebraDistribution * | dof_block_distribution_pt (const unsigned &b) |
| Access function to the dof-level block distributions. More... | |
| const LinearAlgebraDistribution * | master_distribution_pt () const |
| unsigned | ndof_types_in_mesh (const unsigned &i) const |
| bool | is_subsidiary_block_preconditioner () const |
| bool | is_master_block_preconditioner () const |
| void | set_block_output_to_files (const std::string &basefilename) |
| void | disable_block_output_to_files () |
| Turn off output of blocks (by clearing the basefilename string). More... | |
| bool | block_output_on () const |
| Test if output of blocks is on or not. More... | |
| void | output_blocks_to_files (const std::string &basefilename, const unsigned &precision=8) const |
| void | post_block_matrix_assembly_partial_clear () |
| BlockPreconditioner< MATRIX > * | master_block_preconditioner_pt () const |
| Access function to the master block preconditioner pt. More... | |
| void | clear_block_preconditioner_base () |
| void | document () |
| Vector< Vector< unsigned > > | doftype_coarsen_map_fine () const |
| Vector< unsigned > | get_fine_grain_dof_types_in (const unsigned &i) const |
| unsigned | nfine_grain_dof_types_in (const unsigned &i) const |
| MapMatrix< unsigned, CRDoubleMatrix * > | replacement_dof_block_pt () const |
| Access function to the replaced dof-level blocks. More... | |
| void | setup_matrix_vector_product (MatrixVectorProduct *matvec_prod_pt, CRDoubleMatrix *block_pt, const Vector< unsigned > &block_col_indices) |
| void | setup_matrix_vector_product (MatrixVectorProduct *matvec_prod_pt, CRDoubleMatrix *block_pt, const unsigned &block_col_index) |
| void | internal_get_block_ordered_preconditioner_vector (const DoubleVector &v, DoubleVector &w) const |
| void | internal_return_block_ordered_preconditioner_vector (const DoubleVector &w, DoubleVector &v) const |
| unsigned | internal_nblock_types () const |
| unsigned | internal_ndof_types () const |
| void | internal_return_block_vector (const unsigned &n, const DoubleVector &b, DoubleVector &v) const |
| void | internal_get_block_vector (const unsigned &n, const DoubleVector &v, DoubleVector &b) const |
| void | internal_get_block_vectors (const Vector< unsigned > &block_vec_number, const DoubleVector &v, Vector< DoubleVector > &s) const |
| void | internal_get_block_vectors (const DoubleVector &v, Vector< DoubleVector > &s) const |
| void | internal_return_block_vectors (const Vector< unsigned > &block_vec_number, const Vector< DoubleVector > &s, DoubleVector &v) const |
| void | internal_return_block_vectors (const Vector< DoubleVector > &s, DoubleVector &v) const |
| void | internal_get_block (const unsigned &i, const unsigned &j, MATRIX &output_block) const |
| int | internal_block_number (const unsigned &i_dof) const |
| int | internal_index_in_block (const unsigned &i_dof) const |
| const LinearAlgebraDistribution * | internal_block_distribution_pt (const unsigned &b) const |
| Access function to the internal block distributions. More... | |
| void | insert_auxiliary_block_distribution (const Vector< unsigned > &block_vec_number, LinearAlgebraDistribution *dist_pt) |
| void | block_matrix_test (const unsigned &i, const unsigned &j, const MATRIX *block_matrix_pt) const |
| template<typename myType > | |
| int | get_index_of_value (const Vector< myType > &vec, const myType val, const bool sorted=false) const |
| void | internal_get_block (const unsigned &block_i, const unsigned &block_j, CRDoubleMatrix &output_block) const |
| void | get_dof_level_block (const unsigned &block_i, const unsigned &block_j, CRDoubleMatrix &output_block, const bool &ignore_replacement_block) const |
Public Member Functions inherited from oomph::Preconditioner | |
| Preconditioner () | |
| Constructor. More... | |
| Preconditioner (const Preconditioner &)=delete | |
| Broken copy constructor. More... | |
| void | operator= (const Preconditioner &)=delete |
| Broken assignment operator. More... | |
| virtual | ~Preconditioner () |
| Destructor (empty) More... | |
| virtual void | preconditioner_solve_transpose (const DoubleVector &r, DoubleVector &z) |
| void | setup (DoubleMatrixBase *matrix_pt) |
| void | setup (const Problem *problem_pt, DoubleMatrixBase *matrix_pt) |
| void | enable_silent_preconditioner_setup () |
| Set up the block preconditioner quietly! More... | |
| void | disable_silent_preconditioner_setup () |
| Be verbose in the block preconditioner setup. More... | |
| virtual void | clean_up_memory () |
| Clean up memory (empty). Generic interface function. More... | |
| virtual void | set_matrix_pt (DoubleMatrixBase *matrix_pt) |
| Set the matrix pointer. More... | |
| virtual const OomphCommunicator * | comm_pt () const |
| Get function for comm pointer. More... | |
| virtual void | set_comm_pt (const OomphCommunicator *const comm_pt) |
| Set the communicator pointer. More... | |
| double | setup_time () const |
| Returns the time to setup the preconditioner. More... | |
| virtual void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse) |
| virtual void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse, const Vector< Vector< unsigned >> &doftype_coarsen_map_coarse) |
Public Member Functions inherited from oomph::DistributableLinearAlgebraObject | |
| DistributableLinearAlgebraObject () | |
| Default constructor - create a distribution. More... | |
| DistributableLinearAlgebraObject (const DistributableLinearAlgebraObject &matrix)=delete | |
| Broken copy constructor. More... | |
| void | operator= (const DistributableLinearAlgebraObject &)=delete |
| Broken assignment operator. More... | |
| virtual | ~DistributableLinearAlgebraObject () |
| Destructor. More... | |
| LinearAlgebraDistribution * | distribution_pt () const |
| access to the LinearAlgebraDistribution More... | |
| unsigned | nrow () const |
| access function to the number of global rows. More... | |
| unsigned | nrow_local () const |
| access function for the num of local rows on this processor. More... | |
| unsigned | nrow_local (const unsigned &p) const |
| access function for the num of local rows on this processor. More... | |
| unsigned | first_row () const |
| access function for the first row on this processor More... | |
| unsigned | first_row (const unsigned &p) const |
| access function for the first row on this processor More... | |
| bool | distributed () const |
| distribution is serial or distributed More... | |
| bool | distribution_built () const |
| void | build_distribution (const LinearAlgebraDistribution *const dist_pt) |
| void | build_distribution (const LinearAlgebraDistribution &dist) |
Private Attributes | |
| Preconditioner * | First_subsidiary_preconditioner_pt |
| Preconditioner * | Second_subsidiary_preconditioner_pt |
| MatrixVectorProduct * | Off_diagonal_matrix_vector_product_pt |
| Matrix vector product operators for the off diagonals. More... | |
| Mesh * | Multi_poisson_mesh_pt |
///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// Block diagonal preconditioner for system with 3 dof types assembled into a 2x2 block system, with (0,0) block containing the first two dof types, the (1,1) block containing the last one. Both blocks are solved by subsidiary diagonal block preconditioners, so the overall behaviour is equivalent to a solve with a 3x3 upper triangular preconditioner.
|
inline |
Constructor for TwoPlusOneUpperTriangularPreconditioner.
References oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >::Multi_poisson_mesh_pt.
|
inline |
Destructor - delete the diagonal solvers (subsidiary preconditioners)
References oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >::clean_up_my_memory().
|
inline |
Broken copy constructor.
References oomph::BrokenCopy::broken_copy().
|
virtual |
Cleanup function.
The clean up function.
Referenced by oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >::~TwoPlusOneUpperTriangularPreconditioner().
|
inline |
Broken assignment operator.
References oomph::BrokenCopy::broken_assign().
|
virtual |
Apply preconditioner to r, i.e. return z such that P z = r.
Preconditioner solve for the two plus one diagonal preconditioner: Apply preconditioner to r and return z, so that P z = r
Implements oomph::Preconditioner.
References oomph::DistributableLinearAlgebraObject::distribution_pt(), and UniformPSDSelfTest::r.
|
inline |
Specify the mesh that contains multi-poisson elements.
References oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >::Multi_poisson_mesh_pt.
Referenced by oomph::TwoPlusThreeUpperTriangularWithTwoLevelSubsidiary< MATRIX >::setup().
|
virtual |
Setup the preconditioner.
The setup function.
Implements oomph::Preconditioner.
References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::UpperTriangular< MATRIX >::set_multi_poisson_mesh(), oomph::UpperTriangular< MATRIX >::setup(), tmp, and oomph::BlockPreconditioner< MATRIX >::turn_into_subsidiary_block_preconditioner().
Referenced by oomph::TwoPlusThreeUpperTriangularWithTwoLevelSubsidiary< MATRIX >::setup().
|
virtual |
Setup the preconditioner. Pure virtual generic interface function.
Implements oomph::Preconditioner.
|
inlinevirtual |
Compatability layer for old preconditioners where problem pointers were needed. The problem pointer is only used to get a communicator pointer.
Implements oomph::Preconditioner.
|
inlinevirtual |
Setup the preconditioner: store the matrix pointer and the communicator pointer then call preconditioner specific setup() function.
Implements oomph::Preconditioner.
|
private |
Pointer to preconditioners/inexact solver for (0,0) block
|
private |
Pointer to mesh with preconditionable elements used for classification of dof types.
Referenced by oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >::set_multi_poisson_mesh(), and oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >::TwoPlusOneUpperTriangularPreconditioner().
|
private |
Matrix vector product operators for the off diagonals.
|
private |
Pointer to preconditioners/inexact solver for (1,1) block