Base class for any linear algebra object that is distributable. Just contains storage for the LinearAlgebraDistribution object and access functions. More...
#include <linear_algebra_distribution.h>
Public Member Functions | |
DistributableLinearAlgebraObject () | |
Default constructor - create a distribution. | |
DistributableLinearAlgebraObject (const DistributableLinearAlgebraObject &matrix)=delete | |
Broken copy constructor. | |
void | operator= (const DistributableLinearAlgebraObject &)=delete |
Broken assignment operator. | |
virtual | ~DistributableLinearAlgebraObject () |
Destructor. | |
LinearAlgebraDistribution * | distribution_pt () const |
access to the LinearAlgebraDistribution | |
unsigned | nrow () const |
access function to the number of global rows. | |
unsigned | nrow_local () const |
access function for the num of local rows on this processor. | |
unsigned | nrow_local (const unsigned &p) const |
access function for the num of local rows on this processor. | |
unsigned | first_row () const |
access function for the first row on this processor | |
unsigned | first_row (const unsigned &p) const |
access function for the first row on this processor | |
bool | distributed () const |
distribution is serial or distributed | |
bool | distribution_built () const |
if the communicator_pt is null then the distribution is not setup then false is returned, otherwise return true | |
void | build_distribution (const LinearAlgebraDistribution *const dist_pt) |
setup the distribution of this distributable linear algebra object | |
void | build_distribution (const LinearAlgebraDistribution &dist) |
setup the distribution of this distributable linear algebra object | |
Protected Member Functions | |
void | clear_distribution () |
clear the distribution of this distributable linear algebra object | |
Private Attributes | |
LinearAlgebraDistribution * | Distribution_pt |
the LinearAlgebraDistribution object | |
Base class for any linear algebra object that is distributable. Just contains storage for the LinearAlgebraDistribution object and access functions.
Definition at line 434 of file linear_algebra_distribution.h.
|
inline |
Default constructor - create a distribution.
Definition at line 438 of file linear_algebra_distribution.h.
References Distribution_pt.
|
delete |
Broken copy constructor.
|
inlinevirtual |
Destructor.
Definition at line 451 of file linear_algebra_distribution.h.
References Distribution_pt.
|
inline |
setup the distribution of this distributable linear algebra object
Definition at line 514 of file linear_algebra_distribution.h.
References oomph::LinearAlgebraDistribution::build(), and Distribution_pt.
|
inline |
setup the distribution of this distributable linear algebra object
Definition at line 507 of file linear_algebra_distribution.h.
References oomph::LinearAlgebraDistribution::build(), and Distribution_pt.
Referenced by oomph::DoubleVector::build(), oomph::DoubleVector::build(), oomph::CRDoubleMatrix::build(), oomph::CRDoubleMatrix::build(), oomph::DoubleMultiVector::build(), oomph::CRDoubleMatrix::CRDoubleMatrix(), oomph::CRDoubleMatrix::CRDoubleMatrix(), oomph::CRDoubleMatrix::CRDoubleMatrix(), oomph::MumpsSolver::factorise(), oomph::SuperLUSolver::factorise_distributed(), oomph::DoubleMultiVector::redistribute(), oomph::DoubleVector::redistribute(), oomph::AugmentedBlockPitchForkLinearSolver::resolve(), oomph::DoubleVector::set_external_values(), oomph::MatrixBasedDiagPreconditioner::setup(), oomph::InnerIterationPreconditioner< SOLVER, PRECONDITIONER >::setup(), oomph::HyprePreconditioner::setup(), oomph::MumpsPreconditioner::setup(), oomph::IdentityPreconditioner::setup(), oomph::SuperLUPreconditioner::setup(), oomph::TrilinosPreconditionerBase::setup(), oomph::MatrixVectorProduct::setup(), oomph::DoubleMultiVector::shallow_build(), oomph::DenseLU::solve(), oomph::SuperLUSolver::solve(), oomph::MumpsSolver::solve(), oomph::HypreSolver::solve(), oomph::CG< MATRIX >::solve(), oomph::BiCGStab< MATRIX >::solve(), oomph::GS< MATRIX >::solve(), oomph::GS< CRDoubleMatrix >::solve(), oomph::DampedJacobi< MATRIX >::solve(), oomph::GMRES< MATRIX >::solve(), oomph::AugmentedProblemGMRES::solve(), oomph::AugmentedBlockFoldLinearSolver::solve(), oomph::BlockPitchForkLinearSolver::solve(), oomph::AugmentedBlockPitchForkLinearSolver::solve(), oomph::BlockHopfLinearSolver::solve(), oomph::HSL_MA42::solve(), oomph::AugmentedProblemGMRES::solve(), oomph::SuperLUSolver::solve(), oomph::HelmholtzGMRESMG< MATRIX >::solve(), oomph::HelmholtzFGMRESMG< MATRIX >::solve(), oomph::TrilinosAztecOOSolver::solve(), oomph::LAPACK_QZ::solve_eigenproblem_helper(), oomph::BlockHopfLinearSolver::solve_for_two_rhs(), oomph::SuperLUSolver::solve_transpose(), oomph::SuperLUSolver::solve_transpose(), and oomph::TrilinosAztecOOSolver::solver_setup().
|
inlineprotected |
clear the distribution of this distributable linear algebra object
Definition at line 522 of file linear_algebra_distribution.h.
References oomph::LinearAlgebraDistribution::clear(), and Distribution_pt.
Referenced by oomph::DenseLU::clean_up_memory(), oomph::SuperLUSolver::clean_up_memory(), oomph::DoubleMultiVector::clear(), oomph::DoubleVector::clear(), oomph::CRDoubleMatrix::clear(), and oomph::BlockPreconditioner< MATRIX >::clear_block_preconditioner_base().
|
inline |
distribution is serial or distributed
Definition at line 493 of file linear_algebra_distribution.h.
References oomph::LinearAlgebraDistribution::distributed(), and Distribution_pt.
Referenced by oomph::NavierStokesSchurComplementPreconditioner::assemble_inv_press_and_veloc_mass_matrix_diagonal(), oomph::PressureBasedSolidLSCPreconditioner::assemble_mass_matrix_diagonal(), oomph::HelmholtzSmoother::check_validity_of_solve_helper_inputs(), oomph::Smoother::check_validity_of_solve_helper_inputs(), oomph::DoubleMultiVector::dot(), oomph::DoubleVector::dot(), oomph::CRDoubleMatrix::entries_are_sorted(), oomph::SuperLUSolver::factorise_serial(), oomph::CRDoubleMatrix::get_matrix_transpose(), oomph::CRDoubleMatrix::global_matrix(), oomph::DoubleVectorWithHaloEntries::global_value(), oomph::DoubleVectorWithHaloEntries::global_value(), oomph::CRDoubleMatrix::inf_norm(), oomph::DoubleVector::max(), oomph::CRDoubleMatrix::multiply(), oomph::CRDoubleMatrix::multiply(), oomph::DenseDoubleMatrix::multiply(), oomph::CCDoubleMatrix::multiply(), oomph::CRDoubleMatrix::multiply_transpose(), oomph::DenseDoubleMatrix::multiply_transpose(), oomph::CCDoubleMatrix::multiply_transpose(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::MvTransMv(), oomph::DoubleVector::norm(), oomph::DoubleMultiVector::norm(), oomph::DoubleMultiVector::output(), oomph::DoubleVector::output(), oomph::ILUZeroPreconditioner< CCDoubleMatrix >::preconditioner_solve(), oomph::ILUZeroPreconditioner< CRDoubleMatrix >::preconditioner_solve(), oomph::DoubleMultiVector::redistribute(), oomph::DoubleVector::redistribute(), oomph::CRDoubleMatrix::redistribute(), oomph::AugmentedProblemGMRES::solve_helper(), oomph::CRDoubleMatrix::sort_entries(), oomph::DoubleVectorWithHaloEntries::sum_all_halo_and_haloed_values(), and oomph::DoubleVectorWithHaloEntries::synchronise().
|
inline |
if the communicator_pt is null then the distribution is not setup then false is returned, otherwise return true
Definition at line 500 of file linear_algebra_distribution.h.
References oomph::LinearAlgebraDistribution::built(), and Distribution_pt.
Referenced by oomph::SuperLUSolver::backsub_distributed(), oomph::DoubleMultiVector::build(), oomph::DoubleVector::build(), oomph::Problem::get_jacobian(), oomph::CRDoubleMatrix::inf_norm(), oomph::DoubleVector::operator*=(), oomph::DoubleMultiVector::operator*=(), oomph::DoubleVector::operator-=(), oomph::DoubleMultiVector::operator-=(), oomph::DoubleVector::set_external_values(), and oomph::DoubleMultiVector::shallow_build().
|
inline |
access to the LinearAlgebraDistribution
Definition at line 457 of file linear_algebra_distribution.h.
References Distribution_pt.
Referenced by oomph::CRDoubleMatrix::add(), oomph::AdjointProblemBasedShiftInvertOperator::apply(), oomph::AugmentedProblemGMRES::apply_schur_complement_preconditioner(), oomph::OomphLibPreconditionerEpetraOperator::ApplyInverse(), oomph::AugmentedProblemGMRES::augmented_matrix_multiply(), oomph::MumpsSolver::backsub(), oomph::SuperLUSolver::backsub_distributed(), oomph::DoubleMultiVector::build(), oomph::DoubleVector::build(), oomph::HelmholtzSmoother::check_validity_of_solve_helper_inputs(), oomph::SuperLUSolver::clean_up_memory(), oomph::HelmholtzGMRESMG< MATRIX >::complex_matrix_multiplication(), oomph::HelmholtzSmoother::complex_matrix_multiplication(), oomph::CRDoubleMatrix::CRDoubleMatrix(), oomph::DoubleMultiVector::dot(), oomph::DoubleVector::dot(), oomph::MumpsSolver::factorise(), oomph::SuperLUSolver::factorise_distributed(), oomph::Problem::get_hessian_vector_products(), oomph::Problem::get_jacobian(), oomph::CRDoubleMatrix::get_matrix_transpose(), oomph::CRDoubleMatrix::global_matrix(), oomph::HypreInterface::hypre_matrix_setup(), oomph::CRDoubleMatrix::inf_norm(), oomph::BlockPreconditioner< MATRIX >::internal_dof_number(), oomph::BlockPreconditioner< MATRIX >::internal_index_in_dof(), oomph::BlockPreconditioner< MATRIX >::internal_preconditioner_matrix_distribution_pt(), oomph::BlockPreconditioner< MATRIX >::internal_return_block_ordered_preconditioner_vector(), oomph::BlockPreconditioner< MATRIX >::internal_return_block_vector(), oomph::CRDoubleMatrix::lubksub(), oomph::BlockPreconditioner< MATRIX >::master_distribution_pt(), oomph::DoubleVector::max(), oomph::CRDoubleMatrix::multiply(), oomph::CRDoubleMatrix::multiply(), oomph::DenseDoubleMatrix::multiply(), oomph::CCDoubleMatrix::multiply(), oomph::MatrixVectorProduct::multiply(), oomph::CRDoubleMatrix::multiply_transpose(), oomph::DenseDoubleMatrix::multiply_transpose(), oomph::CCDoubleMatrix::multiply_transpose(), oomph::MatrixVectorProduct::multiply_transpose(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::MvTransMv(), oomph::DoubleVector::norm(), oomph::DoubleVector::norm(), oomph::DoubleMultiVector::norm(), oomph::OomphLibPreconditionerEpetraOperator::OomphLibPreconditionerEpetraOperator(), oomph::DoubleMultiVector::output(), oomph::DoubleVector::output(), oomph::MatrixBasedDiagPreconditioner::preconditioner_solve(), oomph::MatrixBasedLumpedPreconditioner< MATRIX >::preconditioner_solve(), oomph::ILUZeroPreconditioner< CCDoubleMatrix >::preconditioner_solve(), oomph::ILUZeroPreconditioner< CRDoubleMatrix >::preconditioner_solve(), oomph::HyprePreconditioner::preconditioner_solve(), oomph::IdentityPreconditioner::preconditioner_solve(), oomph::TrilinosPreconditionerBase::preconditioner_solve(), oomph::LagrangeEnforcedFlowPreconditioner::preconditioner_solve(), oomph::NavierStokesSchurComplementPreconditioner::preconditioner_solve(), oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner::preconditioner_solve(), oomph::GMRESBlockPreconditioner::preconditioner_solve(), oomph::DoubleMultiVector::redistribute(), oomph::DoubleVector::redistribute(), oomph::CRDoubleMatrix::redistribute(), oomph::AugmentedBlockFoldLinearSolver::resolve(), oomph::BlockPitchForkLinearSolver::resolve(), oomph::AugmentedBlockPitchForkLinearSolver::resolve(), oomph::HSL_MA42::resolve(), oomph::MumpsSolver::resolve(), oomph::HypreSolver::resolve(), oomph::BlockPreconditioner< MATRIX >::return_block_ordered_preconditioner_vector(), oomph::MatrixBasedDiagPreconditioner::setup(), oomph::InnerIterationPreconditioner< SOLVER, PRECONDITIONER >::setup(), oomph::HyprePreconditioner::setup(), oomph::IdentityPreconditioner::setup(), oomph::SuperLUPreconditioner::setup(), oomph::TrilinosPreconditionerBase::setup(), oomph::LagrangeEnforcedFlowPreconditioner::setup(), oomph::MatrixVectorProduct::setup(), oomph::DoubleMultiVector::setup_doublevector_representation(), oomph::DoubleMultiVector::shallow_build(), oomph::DenseLU::solve(), oomph::SuperLUSolver::solve(), oomph::MumpsSolver::solve(), oomph::HypreSolver::solve(), oomph::CG< MATRIX >::solve(), oomph::BiCGStab< MATRIX >::solve(), oomph::GS< MATRIX >::solve(), oomph::GS< CRDoubleMatrix >::solve(), oomph::DampedJacobi< MATRIX >::solve(), oomph::GMRES< MATRIX >::solve(), oomph::AugmentedProblemGMRES::solve(), oomph::AugmentedBlockFoldLinearSolver::solve(), oomph::BlockPitchForkLinearSolver::solve(), oomph::AugmentedBlockPitchForkLinearSolver::solve(), oomph::BlockHopfLinearSolver::solve(), oomph::CG< MATRIX >::solve(), oomph::BiCGStab< MATRIX >::solve(), oomph::AugmentedProblemGMRES::solve(), oomph::SuperLUSolver::solve(), oomph::MumpsSolver::solve(), oomph::HelmholtzGMRESMG< MATRIX >::solve(), oomph::HelmholtzFGMRESMG< MATRIX >::solve(), oomph::TrilinosAztecOOSolver::solve(), oomph::LAPACK_QZ::solve_eigenproblem(), oomph::LAPACK_QZ::solve_eigenproblem_helper(), oomph::BlockHopfLinearSolver::solve_for_two_rhs(), oomph::AugmentedProblemGMRES::solve_helper(), oomph::HelmholtzGMRESMG< MATRIX >::solve_helper(), oomph::HelmholtzFGMRESMG< MATRIX >::solve_helper(), oomph::SuperLUSolver::solve_transpose(), oomph::SuperLUSolver::solve_transpose(), oomph::TrilinosAztecOOSolver::solver_setup(), oomph::CRDoubleMatrix::sparse_indexed_output_with_offset(), oomph::GMRESBlockPreconditioner::update(), oomph::GMRES< MATRIX >::update(), oomph::AugmentedProblemGMRES::update(), oomph::HelmholtzGMRESMG< MATRIX >::update(), and oomph::HelmholtzFGMRESMG< MATRIX >::update().
|
inline |
access function for the first row on this processor
Definition at line 481 of file linear_algebra_distribution.h.
References Distribution_pt, and oomph::LinearAlgebraDistribution::first_row().
Referenced by oomph::PressureBasedSolidLSCPreconditioner::assemble_mass_matrix_diagonal(), oomph::CRDoubleMatrix::diagonal_entries(), oomph::MumpsSolver::factorise(), oomph::SuperLUSolver::factorise_distributed(), oomph::CRDoubleMatrix::global_matrix(), oomph::DoubleVectorWithHaloEntries::global_value(), oomph::DoubleVectorWithHaloEntries::global_value(), oomph::DoubleVector::initialise(), oomph::BlockPreconditioner< MATRIX >::internal_dof_number(), oomph::BlockPreconditioner< MATRIX >::internal_index_in_dof(), oomph::DoubleMultiVector::output(), oomph::DoubleVector::output(), oomph::DoubleVector::output_local_values_with_offset(), oomph::DoubleMultiVector::redistribute(), oomph::DoubleVector::redistribute(), oomph::CRDoubleMatrix::redistribute(), oomph::MatrixBasedDiagPreconditioner::setup(), and oomph::CRDoubleMatrix::sparse_indexed_output_with_offset().
access function for the first row on this processor
Definition at line 487 of file linear_algebra_distribution.h.
References Distribution_pt, and oomph::LinearAlgebraDistribution::first_row().
|
inline |
access function to the number of global rows.
Definition at line 463 of file linear_algebra_distribution.h.
References Distribution_pt, and oomph::LinearAlgebraDistribution::nrow().
Referenced by oomph::PressureBasedSolidLSCPreconditioner::assemble_mass_matrix_diagonal(), oomph::HelmholtzSmoother::check_validity_of_solve_helper_inputs(), oomph::ComplexGMRES< MATRIX >::complex_smoother_setup(), oomph::SuperLUSolver::factorise_distributed(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::GetGlobalLength(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::GetVecLength(), oomph::BlockPreconditioner< MATRIX >::internal_get_block_vector(), oomph::MGSolver< DIM >::interpolation_matrix_set(), oomph::HelmholtzMGPreconditioner< DIM >::interpolation_matrix_set(), oomph::DoubleVector::max(), oomph::DenseDoubleMatrix::multiply(), oomph::CCDoubleMatrix::multiply(), oomph::DenseDoubleMatrix::multiply_transpose(), oomph::CCDoubleMatrix::multiply_transpose(), oomph::CRDoubleMatrix::nrow(), oomph::DoubleMultiVector::output(), oomph::DoubleVector::output(), oomph::LagrangeEnforcedFlowPreconditioner::preconditioner_solve(), oomph::NavierStokesSchurComplementPreconditioner::preconditioner_solve(), oomph::PressureBasedSolidLSCPreconditioner::preconditioner_solve(), oomph::MGPreconditioner< DIM >::preconditioner_solve(), oomph::DoubleMultiVector::redistribute(), oomph::DoubleVector::redistribute(), oomph::InnerIterationPreconditioner< SOLVER, PRECONDITIONER >::setup(), oomph::HyprePreconditioner::setup(), oomph::TrilinosPreconditionerBase::setup(), oomph::AugmentedProblemGMRES::solve_helper(), oomph::GMRESBlockPreconditioner::update(), oomph::GMRES< MATRIX >::update(), and oomph::AugmentedProblemGMRES::update().
|
inline |
access function for the num of local rows on this processor.
Definition at line 469 of file linear_algebra_distribution.h.
References Distribution_pt, and oomph::LinearAlgebraDistribution::nrow_local().
Referenced by oomph::CRDoubleMatrix::add(), oomph::ProblemBasedShiftInvertOperator::apply(), oomph::AdjointProblemBasedShiftInvertOperator::apply(), oomph::PressureBasedSolidLSCPreconditioner::assemble_mass_matrix_diagonal(), oomph::DoubleMultiVector::build(), oomph::DoubleVector::build(), oomph::DoubleVector::build(), oomph::DoubleVector::build(), oomph::DoubleMultiVector::build(), oomph::CRDoubleMatrix::build(), oomph::CRDoubleMatrix::build_without_copy(), oomph::CRDoubleMatrix::CRDoubleMatrix(), oomph::CRDoubleMatrix::diagonal_entries(), oomph::DoubleMultiVector::dot(), oomph::DoubleVector::dot(), oomph::DoubleMultiVector::DoubleMultiVector(), oomph::DoubleMultiVector::DoubleMultiVector(), oomph::SuperLUSolver::factorise_distributed(), oomph::CRDoubleMatrix::global_matrix(), oomph::DoubleVectorWithHaloEntries::global_value(), oomph::DoubleVectorWithHaloEntries::global_value(), oomph::CRDoubleMatrix::inf_norm(), oomph::DoubleMultiVector::initialise(), oomph::DoubleVector::initialise(), oomph::DoubleVector::initialise(), oomph::BlockPreconditioner< MATRIX >::internal_dof_number(), oomph::BlockPreconditioner< MATRIX >::internal_index_in_dof(), oomph::PseudoElasticPreconditioner::lagrange_multiplier_preconditioner_solve(), oomph::PseudoElasticPreconditionerOld::lagrange_multiplier_preconditioner_solve(), oomph::CRDoubleMatrix::matrix_reduction(), oomph::DoubleVector::max(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::MvAddMv(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::MvRandom(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::MvScale(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::MvTimesMatAddMv(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::MvTransMv(), oomph::DoubleVector::norm(), oomph::DoubleMultiVector::norm(), oomph::DoubleMultiVector::operator()(), oomph::DoubleVector::operator*=(), oomph::DoubleMultiVector::operator*=(), oomph::DoubleVector::operator+=(), oomph::DoubleMultiVector::operator+=(), oomph::DoubleVector::operator-=(), oomph::DoubleMultiVector::operator-=(), oomph::DoubleMultiVector::operator==(), oomph::DoubleVector::operator==(), oomph::DoubleVector::operator[](), oomph::DoubleVector::operator[](), oomph::DoubleMultiVector::output(), oomph::DoubleVector::output(), oomph::DoubleVector::output_local_values(), oomph::DoubleVector::output_local_values_with_offset(), oomph::MatrixBasedDiagPreconditioner::preconditioner_solve(), oomph::DoubleMultiVector::redistribute(), oomph::DoubleVector::redistribute(), oomph::CRDoubleMatrix::redistribute(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::SetBlock(), Anasazi::MultiVecTraits< double, oomph::DoubleMultiVector >::SetBlock(), oomph::MatrixBasedDiagPreconditioner::setup(), oomph::ANASAZI::solve_eigenproblem(), and oomph::CRDoubleMatrix::sparse_indexed_output_with_offset().
access function for the num of local rows on this processor.
Definition at line 475 of file linear_algebra_distribution.h.
References Distribution_pt, and oomph::LinearAlgebraDistribution::nrow_local().
|
delete |
Broken assignment operator.
|
private |
the LinearAlgebraDistribution object
Definition at line 529 of file linear_algebra_distribution.h.
Referenced by build_distribution(), build_distribution(), clear_distribution(), DistributableLinearAlgebraObject(), distributed(), distribution_built(), distribution_pt(), first_row(), first_row(), nrow(), nrow_local(), nrow_local(), and ~DistributableLinearAlgebraObject().