27 #ifndef OOMPH_GENERAL_PURPOSE_SPACE_TIME_BLOCK_PRECONDITIONER_HEADER
28 #define OOMPH_GENERAL_PURPOSE_SPACE_TIME_BLOCK_PRECONDITIONER_HEADER
32 #include <oomph-lib-config.h>
56 template<
typename MATRIX>
136 std::ostringstream warning_message_stream;
139 warning_message_stream
140 <<
"The memory statistics have not been calculated "
141 <<
"so I'm returning\nthe value zero." << std::endl;
145 OOMPH_CURRENT_FUNCTION,
146 OOMPH_EXCEPTION_LOCATION);
156 std::ostringstream warning_message_stream;
159 warning_message_stream
160 <<
"The preconditioner hasn't even been set up yet "
161 <<
"so I'm returning\nthe value zero." << std::endl;
165 OOMPH_CURRENT_FUNCTION,
166 OOMPH_EXCEPTION_LOCATION);
196 template<
typename MATRIX>
341 std::ostringstream warning_message_stream;
344 warning_message_stream
345 <<
"The memory statistics have not been calculated "
346 <<
"so I'm returning\nthe value zero." << std::endl;
350 OOMPH_CURRENT_FUNCTION,
351 OOMPH_EXCEPTION_LOCATION);
361 std::ostringstream warning_message_stream;
364 warning_message_stream
365 <<
"The preconditioner hasn't even been set up yet "
366 <<
"so I'm returning\nthe value zero." << std::endl;
370 OOMPH_CURRENT_FUNCTION,
371 OOMPH_EXCEPTION_LOCATION);
General purpose block triangular preconditioner. By default this operates as an upper triangular prec...
void enable_doc_memory_usage()
Document the memory usage.
DenseMatrix< MatrixVectorProduct * > Off_diagonal_matrix_vector_products
Matrix of matrix-vector product operators for the off diagonals.
void setup()
Setup the preconditioner.
virtual void clean_up_memory()
Clean up the memory.
bool Preconditioner_has_been_setup
Control flag is true if the preconditioner has been setup (used so we can wipe the data when the prec...
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply preconditioner to r.
bool Compute_memory_statistics
Flag to indicate whether or not to record the memory statistics this preconditioner.
bool Upper_triangular
Boolean indicating upper or lower triangular.
bool is_upper_triangular()
Is this being used as an upper triangular preconditioner?
void disable_doc_memory_usage()
Don't document the memory usage!
BandedBlockTriangularPreconditioner()
Constructor. (By default this preconditioner is upper triangular).
void upper_triangular()
Use as an upper triangular preconditioner.
int block_bandwidth()
Get the block bandwidth of the preconditioner.
void lower_triangular()
Use as a lower triangular preconditioner.
double Memory_usage_in_bytes
Storage for the memory usage of the solver if the flag above is set to true (in bytes)
int Block_bandwidth
Storage for the block bandwidth of the matrix. Defaults to -1 indicating that we assume every off-dia...
BandedBlockTriangularPreconditioner(const BandedBlockTriangularPreconditioner &)=delete
Broken copy constructor.
virtual ~BandedBlockTriangularPreconditioner()
Destructor - delete the preconditioner matrices.
void set_block_bandwidth(const int &block_bandwidth)
Set the block bandwidth of the preconditioner.
void operator=(const BandedBlockTriangularPreconditioner &)=delete
Broken assignment operator.
double get_memory_usage_in_bytes()
Get the memory statistics.
//////////////////////////////////////////////////////////////////////////// ////////////////////////...
A vector in the mathematical sense, initially developed for linear algebra type applications....
General purpose block tridiagonal preconditioner. By default SuperLUPreconditioner (or SuperLUDistPre...
void enable_doc_memory_usage()
Document the memory usage.
ExactDGPBlockPreconditioner()
Constructor. (By default this preconditioner is upper triangular).
void operator=(const ExactDGPBlockPreconditioner &)=delete
Broken assignment operator.
bool Compute_memory_statistics
Flag to indicate whether or not to record the memory statistics this preconditioner.
virtual void clean_up_memory()
Clean up the memory.
void disable_doc_memory_usage()
Don't document the memory usage!
bool Preconditioner_has_been_setup
Control flag is true if the preconditioner has been setup (used so we can wipe the data when the prec...
void setup()
Setup the preconditioner.
virtual ~ExactDGPBlockPreconditioner()
Destructor - delete the preconditioner matrices.
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply preconditioner to r.
double get_memory_usage_in_bytes()
Get the memory statistics.
ExactDGPBlockPreconditioner(const ExactDGPBlockPreconditioner &)=delete
Broken copy constructor.
double Memory_usage_in_bytes
Storage for the memory usage of the solver if the flag above is set to true (in bytes)
Base class for general purpose block preconditioners. Deals with setting subsidiary preconditioners a...
virtual void clean_up_memory()
??ds I think clean_up_memory is supposed to clear out any stuff that doesn't need to be stored betwee...
An OomphLibWarning object which should be created as a temporary object to issue a warning....
//////////////////////////////////////////////////////////////////// ////////////////////////////////...