26 #ifndef OOMPH_LAGRANGE_ENFORCED_FLOW_PRECONDITIONERS_HEADER
27 #define OOMPH_LAGRANGE_ENFORCED_FLOW_PRECONDITIONERS_HEADER
32 #include <oomph-lib-config.h>
36 #include "../generic/matrices.h"
37 #include "../generic/assembly_handler.h"
38 #include "../generic/problem.h"
39 #include "../generic/block_preconditioner.h"
40 #include "../generic/preconditioner.h"
41 #include "../generic/SuperLU_preconditioner.h"
42 #include "../generic/matrix_vector_product.h"
43 #include "../generic/general_purpose_preconditioners.h"
44 #include "../generic/general_purpose_block_preconditioners.h"
45 #ifdef OOMPH_HAS_HYPRE
46 #include "../generic/hypre_solver.h"
48 #ifdef OOMPH_HAS_TRILINOS
49 #include "../generic/trilinos_solver.h"
57 namespace Lagrange_Enforced_Flow_Preconditioner_Subsidiary_Operator_Helper
252 std::ostringstream warning_stream;
253 warning_stream <<
"WARNING: \n"
254 <<
"Setting scaling_sigma = 0.0 may cause values.\n";
261 std::ostringstream warning_stream;
262 warning_stream <<
"WARNING: " << std::endl
263 <<
"The scaling (scaling_sigma) is positive: "
265 <<
"Performance may be degraded.\n";
Definition: block_preconditioner.h:422
const Mesh * mesh_pt(const unsigned &i) const
Definition: block_preconditioner.h:1782
Definition: matrices.h:888
Definition: double_vector.h:58
Definition: lagrange_enforced_flow_preconditioner.h:168
Preconditioner * Navier_stokes_preconditioner_pt
Pointer to the 'preconditioner' for the Navier-Stokes block.
Definition: lagrange_enforced_flow_preconditioner.h:319
unsigned N_lagrange_doftypes
The number of Lagrange multiplier DOF types.
Definition: lagrange_enforced_flow_preconditioner.h:342
void set_scaling_sigma(const double &scaling_sigma)
Definition: lagrange_enforced_flow_preconditioner.h:246
unsigned N_fluid_doftypes
The number of fluid DOF types (including pressure).
Definition: lagrange_enforced_flow_preconditioner.h:345
void set_navier_stokes_preconditioner(Preconditioner *new_ns_preconditioner_pt=0)
Definition: lagrange_enforced_flow_preconditioner.cc:1214
LagrangeEnforcedFlowPreconditioner(const LagrangeEnforcedFlowPreconditioner &)=delete
Broken copy constructor.
bool Preconditioner_has_been_setup
Definition: lagrange_enforced_flow_preconditioner.h:306
bool Use_norm_f_for_scaling_sigma
Definition: lagrange_enforced_flow_preconditioner.h:313
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Definition: lagrange_enforced_flow_preconditioner.cc:310
double scaling_sigma() const
Read (const) function to get the scaling sigma.
Definition: lagrange_enforced_flow_preconditioner.h:277
Vector< unsigned > My_ndof_types_in_mesh
Definition: lagrange_enforced_flow_preconditioner.h:335
LagrangeEnforcedFlowPreconditioner()
Constructor - initialise variables.
Definition: lagrange_enforced_flow_preconditioner.h:178
Vector< Vector< double > > Inv_w_diag_values
Inverse W values.
Definition: lagrange_enforced_flow_preconditioner.h:316
void set_meshes(const Vector< Mesh * > &mesh_pt)
Definition: lagrange_enforced_flow_preconditioner.cc:419
unsigned My_nmesh
Definition: lagrange_enforced_flow_preconditioner.h:339
virtual ~LagrangeEnforcedFlowPreconditioner()
Destructor.
Definition: lagrange_enforced_flow_preconditioner.h:208
void use_norm_f_for_scaling_sigma()
Definition: lagrange_enforced_flow_preconditioner.h:236
void operator=(const LagrangeEnforcedFlowPreconditioner &)=delete
Broken assignment operator.
double Scaling_sigma
Scaling for the augmentation: Scaling_sigma*(LL^T)
Definition: lagrange_enforced_flow_preconditioner.h:309
void setup()
Setup method for the LagrangeEnforcedFlowPreconditioner.
Definition: lagrange_enforced_flow_preconditioner.cc:507
bool Using_superlu_ns_preconditioner
Flag to indicate whether the default NS preconditioner is used.
Definition: lagrange_enforced_flow_preconditioner.h:326
bool Navier_stokes_preconditioner_is_block_preconditioner
Definition: lagrange_enforced_flow_preconditioner.h:323
void clean_up_memory()
Clears the memory.
Definition: lagrange_enforced_flow_preconditioner.cc:1250
void set_superlu_for_navier_stokes_preconditioner()
Definition: lagrange_enforced_flow_preconditioner.h:289
Vector< Mesh * > My_mesh_pt
Definition: lagrange_enforced_flow_preconditioner.h:331
unsigned N_velocity_doftypes
The number of velocity DOF types.
Definition: lagrange_enforced_flow_preconditioner.h:348
Definition: oomph_definitions.h:267
Definition: preconditioner.h:54
An interface to allow SuperLU to be used as an (exact) Preconditioner.
Definition: SuperLU_preconditioner.h:40
unsigned Preconditioner
----------------------—Domain Properties------------------------—
Definition: space_time_oscillating_cylinder.cc:725
Preconditioner * boomer_amg_for_2D_momentum_stressdiv_visc()
Definition: lagrange_enforced_flow_preconditioner.cc:107
Preconditioner * boomer_amg_for_3D_momentum()
Definition: lagrange_enforced_flow_preconditioner.cc:146
Preconditioner * get_w_cg_preconditioner()
Definition: lagrange_enforced_flow_preconditioner.cc:37
Preconditioner * boomer_amg_for_3D_poisson_problem()
Definition: lagrange_enforced_flow_preconditioner.cc:264
Preconditioner * boomer_amg_for_2D_poisson_problem()
Definition: lagrange_enforced_flow_preconditioner.cc:225
Preconditioner * boomer_amg_for_2D_momentum_simple_visc()
Definition: lagrange_enforced_flow_preconditioner.cc:67
Preconditioner * boomer_amg2v22_for_3D_momentum()
Definition: lagrange_enforced_flow_preconditioner.cc:185
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86