27 #ifndef OOMPH_BIHARMONIC_PRECONDITIONER_HEADER
28 #define OOMPH_BIHARMONIC_PRECONDITIONER_HEADER
33 #include <oomph-lib-config.h>
36 #include "../generic/preconditioner.h"
37 #include "../generic/block_preconditioner.h"
38 #include "../generic/hijacked_elements.h"
40 #include "../meshes/hermite_element_quad_mesh.template.h"
41 #include "../generic/SuperLU_preconditioner.h"
42 #include "../generic/general_purpose_preconditioners.h"
44 #ifdef OOMPH_HAS_HYPRE
45 #include "../generic/hypre_solver.h"
50 #ifdef OOMPH_HAS_HYPRE
57 namespace Biharmonic_schur_complement_Hypre_defaults
60 extern unsigned AMG_smoother;
66 extern unsigned N_cycle;
72 extern double AMG_jacobi_damping;
75 extern unsigned AMG_smoother_iterations;
78 extern void set_defaults(HyprePreconditioner* hypre_prec_pt);
100 #ifdef OOMPH_HAS_HYPRE
192 const bool& retain_all_blocks =
false)
304 for (
unsigned i = 0;
i <
n;
i++)
306 for (
unsigned j = 0;
j <
n;
j++)
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Biharmonic Preconditioner - for two dimensional problems.
Definition: biharmonic_preconditioner.h:88
BiharmonicPreconditioner()
Constructor - by default inexact preconditioning is used.
Definition: biharmonic_preconditioner.h:91
Preconditioner * Hijacked_sub_block_preconditioner_pt
Preconditioner the diagonal block associated with hijacked elements.
Definition: biharmonic_preconditioner.h:171
Preconditioner * Sub_preconditioner_2_pt
Inexact Preconditioner Pointer.
Definition: biharmonic_preconditioner.h:168
void clean_up_memory()
Clean up memory (empty). Generic interface function.
Definition: biharmonic_preconditioner.h:118
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply preconditioner to r.
Definition: biharmonic_preconditioner.cc:243
BiharmonicPreconditioner(const BiharmonicPreconditioner &)=delete
Broken copy constructor.
~BiharmonicPreconditioner()
destructor - cleans up preconditioners and delete matrices
Definition: biharmonic_preconditioner.h:112
void operator=(const BiharmonicPreconditioner &)=delete
Broken assignment operator.
unsigned & preconditioner_type()
Definition: biharmonic_preconditioner.h:143
void setup()
Setup the preconditioner.
Definition: biharmonic_preconditioner.cc:107
unsigned Preconditioner_type
Definition: biharmonic_preconditioner.h:162
Mesh * Bulk_element_mesh_pt
the bulk element mesh pt
Definition: biharmonic_preconditioner.h:174
Mesh *& bulk_element_mesh_pt()
Definition: biharmonic_preconditioner.h:151
Preconditioner * Sub_preconditioner_1_pt
Exact Preconditioner Pointer.
Definition: biharmonic_preconditioner.h:165
Definition: block_preconditioner.h:422
void turn_into_subsidiary_block_preconditioner(BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse)
Definition: block_preconditioner.cc:2376
void set_nmesh(const unsigned &n)
Definition: block_preconditioner.h:2851
Definition: matrices.h:888
Definition: matrices.h:386
Definition: double_vector.h:58
Definition: biharmonic_preconditioner.h:188
ExactSubBiharmonicPreconditioner(BiharmonicPreconditioner *master_prec_pt, const bool &retain_all_blocks=false)
Constructor - for a preconditioner acting as a sub preconditioner.
Definition: biharmonic_preconditioner.h:191
ExactSubBiharmonicPreconditioner(const ExactSubBiharmonicPreconditioner &)=delete
Broken copy constructor.
void clean_up_memory()
delete the subsidiary preconditioner pointer
Definition: biharmonic_preconditioner.h:216
void operator=(const ExactSubBiharmonicPreconditioner &)=delete
Broken assignment operator.
Preconditioner * Sub_preconditioner_pt
Definition: biharmonic_preconditioner.h:238
bool Retain_all_blocks
Definition: biharmonic_preconditioner.h:243
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply preconditioner to r.
Definition: biharmonic_preconditioner.cc:335
~ExactSubBiharmonicPreconditioner()
destructor deletes the exact preconditioner
Definition: biharmonic_preconditioner.h:210
void setup()
Setup the preconditioner.
Definition: biharmonic_preconditioner.cc:274
Definition: biharmonic_preconditioner.h:253
DenseMatrix< CRDoubleMatrix * > Matrix_of_block_pointers
Definition: biharmonic_preconditioner.h:349
void compute_inexact_schur_complement()
Definition: biharmonic_preconditioner.cc:446
Preconditioner * S_00_preconditioner_pt
Pointer to the S00 Schur Complement preconditioner.
Definition: biharmonic_preconditioner.h:338
unsigned Use_amg
Definition: biharmonic_preconditioner.h:356
InexactSubBiharmonicPreconditioner(BiharmonicPreconditioner *master_prec_pt, const bool use_amg)
Definition: biharmonic_preconditioner.h:259
void clean_up_memory()
clean the memory
Definition: biharmonic_preconditioner.h:288
~InexactSubBiharmonicPreconditioner()
destructor - just calls this->clean_up_memory()
Definition: biharmonic_preconditioner.h:282
void operator=(const InexactSubBiharmonicPreconditioner &)=delete
Broken assignment operator.
MatrixBasedLumpedPreconditioner< CRDoubleMatrix > * Lumped_J_22_preconditioner_pt
Preconditioner for storing the lumped J_22 matrix.
Definition: biharmonic_preconditioner.h:346
InexactSubBiharmonicPreconditioner(const InexactSubBiharmonicPreconditioner &)=delete
Broken copy constructor.
CRDoubleMatrix * S_00_pt
Definition: biharmonic_preconditioner.h:352
void setup()
Setup the preconditioner.
Definition: biharmonic_preconditioner.cc:356
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply preconditioner to r.
Definition: biharmonic_preconditioner.cc:657
MatrixBasedLumpedPreconditioner< CRDoubleMatrix > * Lumped_J_11_preconditioner_pt
Preconditioner for storing the lumped J_11 matrix.
Definition: biharmonic_preconditioner.h:342
Matrix-based lumped preconditioner.
Definition: general_purpose_preconditioners.h:81
Definition: preconditioner.h:54
static void set_defaults(double knobs[NKnobs])
set default parameters The use of this routine is optional.
Definition: Eigen_Colamd.h:295
unsigned AMG_coarsening
Definition: hypre_solver.cc:134
double AMG_strength
Definition: hypre_solver.cc:118
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2