oomph::NavierStokesSchurComplementPreconditioner Member List

This is the complete list of members for oomph::NavierStokesSchurComplementPreconditioner, including all inherited members.

Accept_non_NavierStokesElementWithDiagonalMassMatrices_elementsoomph::NavierStokesSchurComplementPreconditionerprivate
Allow_multiple_element_type_in_meshoomph::BlockPreconditioner< CRDoubleMatrix >protected
Allow_multiple_element_type_in_navier_stokes_meshoomph::NavierStokesSchurComplementPreconditionerprivate
any_mesh_distributed() constoomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
assemble_inv_press_and_veloc_mass_matrix_diagonal(CRDoubleMatrix *&inv_p_mass_pt, CRDoubleMatrix *&inv_v_mass_pt, const bool &do_both)oomph::NavierStokesSchurComplementPreconditionerprivate
Auxiliary_block_distribution_ptoomph::BlockPreconditioner< CRDoubleMatrix >private
Block_distribution_ptoomph::BlockPreconditioner< CRDoubleMatrix >protected
block_distribution_pt(const unsigned &b) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
block_distribution_pt(const unsigned b)oomph::BlockPreconditioner< CRDoubleMatrix >inline
block_matrix_test(const unsigned &i, const unsigned &j, const CRDoubleMatrix *block_matrix_pt) constoomph::BlockPreconditioner< CRDoubleMatrix >
block_number(const unsigned &i_dof) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Block_number_to_dof_number_lookupoomph::BlockPreconditioner< CRDoubleMatrix >private
block_output_on() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
block_setup()oomph::BlockPreconditioner< CRDoubleMatrix >virtual
block_setup(const Vector< unsigned > &dof_to_block_map)oomph::BlockPreconditioner< CRDoubleMatrix >
Block_to_dof_map_coarseoomph::BlockPreconditioner< CRDoubleMatrix >protected
Block_to_dof_map_fineoomph::BlockPreconditioner< CRDoubleMatrix >protected
BlockPreconditioner()oomph::BlockPreconditioner< CRDoubleMatrix >inline
BlockPreconditioner(const BlockPreconditioner &)=deleteoomph::BlockPreconditioner< CRDoubleMatrix >
Bt_mat_vec_ptoomph::NavierStokesSchurComplementPreconditionerprivate
build_distribution(const LinearAlgebraDistribution *const dist_pt)oomph::DistributableLinearAlgebraObjectinline
build_distribution(const LinearAlgebraDistribution &dist)oomph::DistributableLinearAlgebraObjectinline
clean_up_memory()oomph::NavierStokesSchurComplementPreconditionervirtual
clear_block_preconditioner_base()oomph::BlockPreconditioner< CRDoubleMatrix >inline
clear_distribution()oomph::DistributableLinearAlgebraObjectinlineprotected
Comm_ptoomph::Preconditionerprivate
comm_pt() constoomph::Preconditionerinlinevirtual
Debug_flagoomph::BlockPreconditioner< CRDoubleMatrix >private
disable_accept_non_NavierStokesElementWithDiagonalMassMatrices_elements()oomph::NavierStokesSchurComplementPreconditionerinline
disable_block_output_to_files()oomph::BlockPreconditioner< CRDoubleMatrix >inline
disable_doc_time()oomph::NavierStokesSchurComplementPreconditionerinline
disable_robin_for_fp()oomph::NavierStokesSchurComplementPreconditionerinline
disable_silent_preconditioner_setup()oomph::Preconditionerinline
DistributableLinearAlgebraObject()oomph::DistributableLinearAlgebraObjectinline
DistributableLinearAlgebraObject(const DistributableLinearAlgebraObject &matrix)=deleteoomph::DistributableLinearAlgebraObject
distributed() constoomph::DistributableLinearAlgebraObjectinline
distribution_built() constoomph::DistributableLinearAlgebraObjectinline
distribution_pt() constoomph::DistributableLinearAlgebraObjectinline
Distribution_ptoomph::DistributableLinearAlgebraObjectprivate
Doc_timeoomph::NavierStokesSchurComplementPreconditionerprivate
document()oomph::BlockPreconditioner< CRDoubleMatrix >inline
Dof_block_distribution_ptoomph::BlockPreconditioner< CRDoubleMatrix >protected
dof_block_distribution_pt(const unsigned &b)oomph::BlockPreconditioner< CRDoubleMatrix >inline
Dof_dimensionoomph::BlockPreconditioner< CRDoubleMatrix >private
Dof_number_denseoomph::BlockPreconditioner< CRDoubleMatrix >private
Dof_number_sparseoomph::BlockPreconditioner< CRDoubleMatrix >private
Dof_number_to_block_number_lookupoomph::BlockPreconditioner< CRDoubleMatrix >private
Doftype_coarsen_map_coarseoomph::BlockPreconditioner< CRDoubleMatrix >protected
Doftype_coarsen_map_fineoomph::BlockPreconditioner< CRDoubleMatrix >protected
doftype_coarsen_map_fine() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Doftype_in_master_preconditioner_coarseoomph::BlockPreconditioner< CRDoubleMatrix >private
Doftype_in_master_preconditioner_fineoomph::BlockPreconditioner< CRDoubleMatrix >private
E_mat_vec_ptoomph::NavierStokesSchurComplementPreconditionerprivate
enable_accept_non_NavierStokesElementWithDiagonalMassMatrices_elements()oomph::NavierStokesSchurComplementPreconditionerinline
enable_doc_time()oomph::NavierStokesSchurComplementPreconditionerinline
enable_robin_for_fp()oomph::NavierStokesSchurComplementPreconditionerinline
enable_silent_preconditioner_setup()oomph::Preconditionerinline
Eqn_number_backupoomph::NavierStokesSchurComplementPreconditionerprivate
F_mat_vec_ptoomph::NavierStokesSchurComplementPreconditionerprivate
F_preconditioner_is_block_preconditioneroomph::NavierStokesSchurComplementPreconditionerprivate
F_preconditioner_ptoomph::NavierStokesSchurComplementPreconditionerprivate
first_row() constoomph::DistributableLinearAlgebraObjectinline
first_row(const unsigned &p) constoomph::DistributableLinearAlgebraObjectinline
get_block(const unsigned &i, const unsigned &j, CRDoubleMatrix &output_matrix, const bool &ignore_replacement_block=false) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
get_block(const unsigned &i, const unsigned &j, const bool &ignore_replacement_block=false) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
get_block_ordered_preconditioner_vector(const DoubleVector &v, DoubleVector &w)oomph::BlockPreconditioner< CRDoubleMatrix >
get_block_other_matrix(const unsigned &i, const unsigned &j, CRDoubleMatrix *in_matrix_pt, CRDoubleMatrix &output_matrix)oomph::BlockPreconditioner< CRDoubleMatrix >inline
get_block_vector(const unsigned &n, const DoubleVector &v, DoubleVector &b) constoomph::BlockPreconditioner< CRDoubleMatrix >
get_block_vectors(const Vector< unsigned > &block_vec_number, const DoubleVector &v, Vector< DoubleVector > &s) constoomph::BlockPreconditioner< CRDoubleMatrix >
get_block_vectors(const DoubleVector &v, Vector< DoubleVector > &s) constoomph::BlockPreconditioner< CRDoubleMatrix >
get_blocks(DenseMatrix< bool > &required_blocks, DenseMatrix< CRDoubleMatrix * > &block_matrix_pt) constoomph::BlockPreconditioner< CRDoubleMatrix >
get_concatenated_block(const VectorMatrix< BlockSelector > &selected_block)oomph::BlockPreconditioner< CRDoubleMatrix >inline
get_concatenated_block_vector(const Vector< unsigned > &block_vec_number, const DoubleVector &v, DoubleVector &b)oomph::BlockPreconditioner< CRDoubleMatrix >
get_dof_level_block(const unsigned &i, const unsigned &j, CRDoubleMatrix &output_block, const bool &ignore_replacement_block=false) constoomph::BlockPreconditioner< CRDoubleMatrix >
get_dof_level_block(const unsigned &block_i, const unsigned &block_j, CRDoubleMatrix &output_block, const bool &ignore_replacement_block) constoomph::BlockPreconditioner< CRDoubleMatrix >
get_fine_grain_dof_types_in(const unsigned &i) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
get_index_of_value(const Vector< myType > &vec, const myType val, const bool sorted=false) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
get_pressure_advection_diffusion_matrix(CRDoubleMatrix &fp_matrix)oomph::NavierStokesSchurComplementPreconditionerinline
Global_indexoomph::BlockPreconditioner< CRDoubleMatrix >private
Global_index_sparseoomph::BlockPreconditioner< CRDoubleMatrix >private
index_in_block(const unsigned &i_dof) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Index_in_dof_block_denseoomph::BlockPreconditioner< CRDoubleMatrix >private
Index_in_dof_block_sparseoomph::BlockPreconditioner< CRDoubleMatrix >private
insert_auxiliary_block_distribution(const Vector< unsigned > &block_vec_number, LinearAlgebraDistribution *dist_pt)oomph::BlockPreconditioner< CRDoubleMatrix >inline
internal_block_dimension(const unsigned &b) constoomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
internal_block_distribution_pt(const unsigned &b) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Internal_block_distribution_ptoomph::BlockPreconditioner< CRDoubleMatrix >protected
internal_block_number(const unsigned &i_dof) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
internal_dof_block_dimension(const unsigned &i) constoomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
internal_dof_number(const unsigned &i_dof) constoomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
internal_get_block(const unsigned &i, const unsigned &j, CRDoubleMatrix &output_block) constoomph::BlockPreconditioner< CRDoubleMatrix >
internal_get_block(const unsigned &block_i, const unsigned &block_j, CRDoubleMatrix &output_block) constoomph::BlockPreconditioner< CRDoubleMatrix >
internal_get_block_ordered_preconditioner_vector(const DoubleVector &v, DoubleVector &w) constoomph::BlockPreconditioner< CRDoubleMatrix >
internal_get_block_vector(const unsigned &n, const DoubleVector &v, DoubleVector &b) constoomph::BlockPreconditioner< CRDoubleMatrix >
internal_get_block_vectors(const Vector< unsigned > &block_vec_number, const DoubleVector &v, Vector< DoubleVector > &s) constoomph::BlockPreconditioner< CRDoubleMatrix >
internal_get_block_vectors(const DoubleVector &v, Vector< DoubleVector > &s) constoomph::BlockPreconditioner< CRDoubleMatrix >
internal_index_in_block(const unsigned &i_dof) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
internal_index_in_dof(const unsigned &i_dof) constoomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
internal_master_dof_number(const unsigned &b) constoomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
Internal_nblock_typesoomph::BlockPreconditioner< CRDoubleMatrix >protected
internal_nblock_types() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Internal_ndof_typesoomph::BlockPreconditioner< CRDoubleMatrix >protected
internal_ndof_types() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Internal_preconditioner_matrix_distribution_ptoomph::BlockPreconditioner< CRDoubleMatrix >private
internal_preconditioner_matrix_distribution_pt() constoomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
internal_return_block_ordered_preconditioner_vector(const DoubleVector &w, DoubleVector &v) constoomph::BlockPreconditioner< CRDoubleMatrix >
internal_return_block_vector(const unsigned &n, const DoubleVector &b, DoubleVector &v) constoomph::BlockPreconditioner< CRDoubleMatrix >
internal_return_block_vectors(const Vector< unsigned > &block_vec_number, const Vector< DoubleVector > &s, DoubleVector &v) constoomph::BlockPreconditioner< CRDoubleMatrix >
internal_return_block_vectors(const Vector< DoubleVector > &s, DoubleVector &v) constoomph::BlockPreconditioner< CRDoubleMatrix >
is_master_block_preconditioner() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
is_subsidiary_block_preconditioner() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
master_block_preconditioner_pt() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Master_block_preconditioner_ptoomph::BlockPreconditioner< CRDoubleMatrix >private
master_distribution_pt() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
master_nrow() constoomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
Matrix_ptoomph::Preconditionerprivate
matrix_pt() constoomph::BlockPreconditioner< CRDoubleMatrix >inlinevirtual
Mesh_ptoomph::BlockPreconditioner< CRDoubleMatrix >protected
mesh_pt(const unsigned &i) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Navier_stokes_mesh_ptoomph::NavierStokesSchurComplementPreconditionerprivate
NavierStokesSchurComplementPreconditioner(Problem *problem_pt)oomph::NavierStokesSchurComplementPreconditionerinline
NavierStokesSchurComplementPreconditioner(const NavierStokesSchurComplementPreconditioner &)=deleteoomph::NavierStokesSchurComplementPreconditioner
nblock_types() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Ndof_in_blockoomph::BlockPreconditioner< CRDoubleMatrix >private
ndof_types() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
ndof_types_in_mesh(const unsigned &i) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Ndof_types_in_meshoomph::BlockPreconditioner< CRDoubleMatrix >protected
nfine_grain_dof_types_in(const unsigned &i) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
nmesh() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
Nrowoomph::BlockPreconditioner< CRDoubleMatrix >private
nrow() constoomph::DistributableLinearAlgebraObjectinline
nrow_local() constoomph::DistributableLinearAlgebraObjectinline
nrow_local(const unsigned &p) constoomph::DistributableLinearAlgebraObjectinline
Nrows_to_recv_for_get_blockoomph::BlockPreconditioner< CRDoubleMatrix >private
Nrows_to_recv_for_get_orderedoomph::BlockPreconditioner< CRDoubleMatrix >private
Nrows_to_send_for_get_blockoomph::BlockPreconditioner< CRDoubleMatrix >private
Nrows_to_send_for_get_orderedoomph::BlockPreconditioner< CRDoubleMatrix >private
operator=(const BlockPreconditioner &)=deleteoomph::BlockPreconditioner< CRDoubleMatrix >
oomph::Preconditioner::operator=(const Preconditioner &)=deleteoomph::Preconditioner
oomph::DistributableLinearAlgebraObject::operator=(const DistributableLinearAlgebraObject &)=deleteoomph::DistributableLinearAlgebraObject
Output_base_filenameoomph::BlockPreconditioner< CRDoubleMatrix >private
output_blocks_to_files(const std::string &basefilename, const unsigned &precision=8) constoomph::BlockPreconditioner< CRDoubleMatrix >inline
P_preconditioner_ptoomph::NavierStokesSchurComplementPreconditionerprivate
pin_all_non_pressure_dofs()oomph::NavierStokesSchurComplementPreconditionerinline
pin_first_pressure_dof_in_press_adv_diff()oomph::NavierStokesSchurComplementPreconditionerinline
Pin_first_pressure_dof_in_press_adv_diffoomph::NavierStokesSchurComplementPreconditionerprivate
post_block_matrix_assembly_partial_clear()oomph::BlockPreconditioner< CRDoubleMatrix >inline
Preconditioner()oomph::Preconditionerinline
Preconditioner(const Preconditioner &)=deleteoomph::Preconditioner
Preconditioner_has_been_setupoomph::NavierStokesSchurComplementPreconditionerprivate
preconditioner_matrix_distribution_pt() constoomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
Preconditioner_matrix_distribution_ptoomph::BlockPreconditioner< CRDoubleMatrix >private
preconditioner_solve(const DoubleVector &r, DoubleVector &z)oomph::NavierStokesSchurComplementPreconditionervirtual
preconditioner_solve_transpose(const DoubleVector &r, DoubleVector &z)oomph::Preconditionerinlinevirtual
problem_pt() constoomph::NavierStokesSchurComplementPreconditionerinline
Problem_ptoomph::NavierStokesSchurComplementPreconditionerprivate
QBt_mat_vec_ptoomph::NavierStokesSchurComplementPreconditionerprivate
Recursive_debug_flagoomph::BlockPreconditioner< CRDoubleMatrix >private
Replacement_dof_block_ptoomph::BlockPreconditioner< CRDoubleMatrix >protected
replacement_dof_block_pt() constoomph::BlockPreconditioner< CRDoubleMatrix >inline
reset_pin_status()oomph::NavierStokesSchurComplementPreconditionerinline
return_block_ordered_preconditioner_vector(const DoubleVector &w, DoubleVector &v) constoomph::BlockPreconditioner< CRDoubleMatrix >
return_block_vector(const unsigned &n, const DoubleVector &b, DoubleVector &v) constoomph::BlockPreconditioner< CRDoubleMatrix >
return_block_vectors(const Vector< unsigned > &block_vec_number, const Vector< DoubleVector > &s, DoubleVector &v) constoomph::BlockPreconditioner< CRDoubleMatrix >
return_block_vectors(const Vector< DoubleVector > &s, DoubleVector &v) constoomph::BlockPreconditioner< CRDoubleMatrix >
return_concatenated_block_vector(const Vector< unsigned > &block_vec_number, const DoubleVector &b, DoubleVector &v) constoomph::BlockPreconditioner< CRDoubleMatrix >
Rows_to_recv_for_get_blockoomph::BlockPreconditioner< CRDoubleMatrix >private
Rows_to_recv_for_get_orderedoomph::BlockPreconditioner< CRDoubleMatrix >private
Rows_to_send_for_get_blockoomph::BlockPreconditioner< CRDoubleMatrix >private
Rows_to_send_for_get_orderedoomph::BlockPreconditioner< CRDoubleMatrix >private
Run_block_matrix_testoomph::BlockPreconditioner< CRDoubleMatrix >privatestatic
set_block_output_to_files(const std::string &basefilename)oomph::BlockPreconditioner< CRDoubleMatrix >inline
set_comm_pt(const OomphCommunicator *const comm_pt)oomph::Preconditionerinlinevirtual
set_f_preconditioner(Preconditioner *new_f_preconditioner_pt)oomph::NavierStokesSchurComplementPreconditionerinline
set_f_superlu_preconditioner()oomph::NavierStokesSchurComplementPreconditionerinline
set_master_matrix_pt(CRDoubleMatrix *in_matrix_pt)oomph::BlockPreconditioner< CRDoubleMatrix >inline
set_matrix_pt(DoubleMatrixBase *matrix_pt)oomph::Preconditionerinlinevirtual
set_mesh(const unsigned &i, const Mesh *const mesh_pt, const bool &allow_multiple_element_type_in_mesh=false)oomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
set_navier_stokes_mesh(Mesh *mesh_pt, const bool &allow_multiple_element_type_in_navier_stokes_mesh=false)oomph::NavierStokesSchurComplementPreconditionerinline
set_nmesh(const unsigned &n)oomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
set_p_preconditioner(Preconditioner *new_p_preconditioner_pt)oomph::NavierStokesSchurComplementPreconditionerinline
set_p_superlu_preconditioner()oomph::NavierStokesSchurComplementPreconditionerinline
set_problem_pt(Problem *problem_pt)oomph::NavierStokesSchurComplementPreconditionerinline
set_replacement_dof_block(const unsigned &block_i, const unsigned &block_j, CRDoubleMatrix *replacement_dof_block_pt)oomph::BlockPreconditioner< CRDoubleMatrix >inlineprotected
setup()oomph::NavierStokesSchurComplementPreconditionervirtual
setup(DoubleMatrixBase *matrix_pt)oomph::NavierStokesSchurComplementPreconditionerinline
setup(const Problem *problem_pt, DoubleMatrixBase *matrix_pt)oomph::NavierStokesSchurComplementPreconditionerinline
setup()=0oomph::NavierStokesSchurComplementPreconditionervirtual
setup_matrix_vector_product(MatrixVectorProduct *matvec_prod_pt, CRDoubleMatrix *block_pt, const Vector< unsigned > &block_col_indices)oomph::BlockPreconditioner< CRDoubleMatrix >inline
setup_matrix_vector_product(MatrixVectorProduct *matvec_prod_pt, CRDoubleMatrix *block_pt, const unsigned &block_col_index)oomph::BlockPreconditioner< CRDoubleMatrix >inline
setup_time() constoomph::Preconditionerinline
Setup_timeoomph::Preconditionerprivate
Silent_preconditioner_setupoomph::Preconditionerprotected
Stream_ptoomph::Preconditionerprotected
turn_into_subsidiary_block_preconditioner(BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse)oomph::BlockPreconditioner< CRDoubleMatrix >
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)oomph::BlockPreconditioner< CRDoubleMatrix >
oomph::Preconditioner::turn_into_subsidiary_block_preconditioner(BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse)oomph::Preconditionerinlinevirtual
oomph::Preconditioner::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)oomph::Preconditionerinlinevirtual
turn_off_debug_flag()oomph::BlockPreconditioner< CRDoubleMatrix >inline
turn_off_recursive_debug_flag()oomph::BlockPreconditioner< CRDoubleMatrix >inline
turn_on_debug_flag()oomph::BlockPreconditioner< CRDoubleMatrix >inline
turn_on_recursive_debug_flag()oomph::BlockPreconditioner< CRDoubleMatrix >inline
unpin_first_pressure_dof_in_press_adv_diff()oomph::NavierStokesSchurComplementPreconditionerinline
use_fp()oomph::NavierStokesSchurComplementPreconditionerinline
Use_LSCoomph::NavierStokesSchurComplementPreconditionerprivate
use_lsc()oomph::NavierStokesSchurComplementPreconditionerinline
Use_robin_for_fpoomph::NavierStokesSchurComplementPreconditionerprivate
Using_default_f_preconditioneroomph::NavierStokesSchurComplementPreconditionerprivate
Using_default_p_preconditioneroomph::NavierStokesSchurComplementPreconditionerprivate
validate(DocInfo &doc_info, Problem *orig_problem_pt)oomph::NavierStokesSchurComplementPreconditionerinline
~BlockPreconditioner()oomph::BlockPreconditioner< CRDoubleMatrix >inlinevirtual
~DistributableLinearAlgebraObject()oomph::DistributableLinearAlgebraObjectinlinevirtual
~NavierStokesSchurComplementPreconditioner()oomph::NavierStokesSchurComplementPreconditionerinlinevirtual
~Preconditioner()oomph::Preconditionerinlinevirtual