26 #ifndef OOMPH_PSEUDO_ELASTIC_SUBSIDIARY_PRECONDITIONER
27 #define OOMPH_PSEUDO_ELASTIC_SUBSIDIARY_PRECONDITIONER
30 #include "../generic/problem.h"
31 #include "../generic/block_preconditioner.h"
32 #include "../generic/preconditioner.h"
33 #include "../generic/SuperLU_preconditioner.h"
34 #include "../generic/matrix_vector_product.h"
35 #include "../generic/general_purpose_preconditioners.h"
36 #include "../generic/general_purpose_block_preconditioners.h"
37 #ifdef OOMPH_HAS_HYPRE
38 #include "../generic/hypre_solver.h"
40 #ifdef OOMPH_HAS_TRILINOS
41 #include "../generic/trilinos_solver.h"
50 namespace Pseudo_Elastic_Preconditioner_Subsidiary_Operator_Helper
52 #ifdef OOMPH_HAS_HYPRE
64 #ifdef OOMPH_HAS_TRILINOS
717 const Mesh*
const solid_mesh_pt,
767 std::ostringstream error_message;
768 error_message <<
"This method is intentionally broken. This class is not "
770 <<
"preconditioner.";
778 std::ostringstream error_message;
779 error_message <<
"This method is intentionally broken. This class is not "
781 <<
"preconditioner.";
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3
Definition: block_preconditioner.h:422
const Mesh * mesh_pt(const unsigned &i) const
Definition: block_preconditioner.h:1782
void get_block(const unsigned &i, const unsigned &j, CRDoubleMatrix &output_matrix, const bool &ignore_replacement_block=false) const
Definition: block_preconditioner.h:673
void clear_block_preconditioner_base()
Definition: block_preconditioner.h:2159
CRDoubleMatrix * matrix_pt() const
Definition: block_preconditioner.h:520
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
virtual void block_setup()
Definition: block_preconditioner.cc:2483
void set_mesh(const unsigned &i, const Mesh *const mesh_pt, const bool &allow_multiple_element_type_in_mesh=false)
Definition: block_preconditioner.h:2866
Definition: matrices.h:888
double inf_norm() const
returns the inf-norm of this matrix
Definition: matrices.cc:3412
Definition: matrices.h:386
Definition: double_vector.h:58
Definition: communicator.h:54
Definition: oomph_definitions.h:222
Definition: preconditioner.h:54
virtual void set_comm_pt(const OomphCommunicator *const comm_pt)
Set the communicator pointer.
Definition: preconditioner.h:193
virtual const OomphCommunicator * comm_pt() const
Get function for comm pointer.
Definition: preconditioner.h:171
virtual void set_matrix_pt(DoubleMatrixBase *matrix_pt)
Set the matrix pointer.
Definition: preconditioner.h:165
Definition: pseudo_elastic_fsi_preconditioner.h:62
Definition: pseudo_elastic_preconditioner.h:303
void lagrange_multiplier_preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply the lagrange multiplier subsidiary preconditioner.
Definition: pseudo_elastic_preconditioner.cc:762
Preconditioner * Elastic_preconditioner_pt
storage for the preconditioner for the solid system
Definition: pseudo_elastic_preconditioner.h:458
Vector< Preconditioner * > Lagrange_multiplier_preconditioner_pt
lagrange multiplier preconditioner pt
Definition: pseudo_elastic_preconditioner.h:461
virtual ~PseudoElasticPreconditionerOld()
destructor
Definition: pseudo_elastic_preconditioner.h:350
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Definition: pseudo_elastic_preconditioner.h:368
void setup()
Broken assignment operator.
Definition: pseudo_elastic_preconditioner.cc:552
void set_lagrange_multiplier_mesh(Mesh *mesh_pt)
Definition: pseudo_elastic_preconditioner.h:383
bool Use_inf_norm_of_s_scaling
Definition: pseudo_elastic_preconditioner.h:448
SubsidiaryPreconditionerFctPt Elastic_subsidiary_preconditioner_function_pt
The solid subsidiary preconditioner function pointer.
Definition: pseudo_elastic_preconditioner.h:468
Elastic_preconditioner_type E_preconditioner_type
Definition: pseudo_elastic_preconditioner.h:452
void enable_inf_norm_of_s_scaling()
Call to use the inf norm of S as scaling.
Definition: pseudo_elastic_preconditioner.h:389
void elastic_preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply the elastic subsidiary preconditioner.
Definition: pseudo_elastic_preconditioner.cc:751
double Scaling
The scaling. Defaults to infinity norm of S.
Definition: pseudo_elastic_preconditioner.h:444
void disable_inf_norm_of_s_scaling()
Call to use no scaling.
Definition: pseudo_elastic_preconditioner.h:395
PseudoElasticPreconditionerOld()
Default (and only) constructor.
Definition: pseudo_elastic_preconditioner.h:333
unsigned Dim
the dimension of the problem
Definition: pseudo_elastic_preconditioner.h:455
Elastic_preconditioner_type
Definition: pseudo_elastic_preconditioner.h:325
@ Exact_block_preconditioner
Definition: pseudo_elastic_preconditioner.h:326
@ Block_upper_triangular_preconditioner
Definition: pseudo_elastic_preconditioner.h:329
@ Block_lower_triangular_preconditioner
Definition: pseudo_elastic_preconditioner.h:328
@ Block_diagonal_preconditioner
Definition: pseudo_elastic_preconditioner.h:327
Preconditioner *(* SubsidiaryPreconditionerFctPt)()
Definition: pseudo_elastic_preconditioner.h:314
void set_elastic_mesh(Mesh *mesh_pt)
Definition: pseudo_elastic_preconditioner.h:376
Elastic_preconditioner_type & elastic_preconditioner_type()
Definition: pseudo_elastic_preconditioner.h:427
void set_elastic_subsidiary_preconditioner(SubsidiaryPreconditionerFctPt prec_fn)
Definition: pseudo_elastic_preconditioner.h:414
SubsidiaryPreconditionerFctPt Lagrange_multiplier_subsidiary_preconditioner_function_pt
The Lagrange multiplier subsidary preconditioner function pointer.
Definition: pseudo_elastic_preconditioner.h:465
void set_lagrange_multiplier_subsidiary_preconditioner(SubsidiaryPreconditionerFctPt prec_fn)
Definition: pseudo_elastic_preconditioner.h:404
Mesh * Elastic_mesh_pt
Pointer to the mesh containing the solid elements.
Definition: pseudo_elastic_preconditioner.h:471
void clean_up_memory()
Clears the memory.
Definition: pseudo_elastic_preconditioner.cc:786
Mesh * Lagrange_multiplier_mesh_pt
Pointer to the mesh containing the Lagrange multiplier elements.
Definition: pseudo_elastic_preconditioner.h:474
PseudoElasticPreconditionerOld(const PseudoElasticPreconditionerOld &)=delete
Broken copy constructor.
Definition: pseudo_elastic_preconditioner.h:702
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Definition: pseudo_elastic_preconditioner.h:776
~PseudoElasticPreconditionerScalingHelperOld()
Destructor.
Definition: pseudo_elastic_preconditioner.h:741
void setup()
Definition: pseudo_elastic_preconditioner.h:765
double s_inf_norm()
Broken assignment operator.
Definition: pseudo_elastic_preconditioner.h:755
PseudoElasticPreconditionerScalingHelperOld(BlockPreconditioner< CRDoubleMatrix > *master_prec_pt, CRDoubleMatrix *matrix_pt, Vector< unsigned > &dof_list, const Mesh *const solid_mesh_pt, const OomphCommunicator *comm_pt)
Definition: pseudo_elastic_preconditioner.h:713
PseudoElasticPreconditionerScalingHelperOld(const PseudoElasticPreconditionerScalingHelperOld &)=delete
Broken copy constructor.
Definition: pseudo_elastic_preconditioner.h:586
void use_block_diagonal_approximation()
use as a block diagonal preconditioner
Definition: pseudo_elastic_preconditioner.h:642
PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld()
Constructor. (By default this preconditioner is upper triangular).
Definition: pseudo_elastic_preconditioner.h:596
void preconditioner_solve(const DoubleVector &res, DoubleVector &z)
Apply preconditioner to r.
Definition: pseudo_elastic_preconditioner.cc:1045
SubsidiaryPreconditionerFctPt Subsidiary_preconditioner_function_pt
The SubisidaryPreconditionerFctPt.
Definition: pseudo_elastic_preconditioner.h:682
void use_upper_triangular_approximation()
Use as an upper triangular preconditioner.
Definition: pseudo_elastic_preconditioner.h:648
~PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld()
Destructor.
Definition: pseudo_elastic_preconditioner.h:610
PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld(const PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld &)=delete
Broken copy constructor.
Vector< PseudoElasticPreconditionerSubsidiaryPreconditionerOld * > Diagonal_block_preconditioner_pt
Definition: pseudo_elastic_preconditioner.h:670
void setup()
Setup the preconditioner.
Definition: pseudo_elastic_preconditioner.cc:951
void use_lower_triangular_approximation()
Use as a lower triangular preconditioner.
Definition: pseudo_elastic_preconditioner.h:654
double Scaling
The scaling. default 1.0.
Definition: pseudo_elastic_preconditioner.h:685
unsigned Method
Definition: pseudo_elastic_preconditioner.h:679
void set_subsidiary_preconditioner_function(SubsidiaryPreconditionerFctPt sub_prec_fn)
access function to set the subsidiary preconditioner function.
Definition: pseudo_elastic_preconditioner.h:635
Preconditioner *(* SubsidiaryPreconditionerFctPt)()
Definition: pseudo_elastic_preconditioner.h:593
void clean_up_memory()
Broken assignment operator.
Definition: pseudo_elastic_preconditioner.cc:916
DenseMatrix< MatrixVectorProduct * > Off_diagonal_matrix_vector_products
Matrix of matrix vector product operators for the off diagonals.
Definition: pseudo_elastic_preconditioner.h:673
double & scaling()
Definition: pseudo_elastic_preconditioner.h:661
Definition: pseudo_elastic_preconditioner.h:497
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply the preconditioner.
Definition: pseudo_elastic_preconditioner.cc:897
SubsidiaryPreconditionerFctPt Subsidiary_preconditioner_function_pt
the SubisidaryPreconditionerFctPt
Definition: pseudo_elastic_preconditioner.h:563
~PseudoElasticPreconditionerSubsidiaryPreconditionerOld()
Destructor.
Definition: pseudo_elastic_preconditioner.h:515
Preconditioner *(* SubsidiaryPreconditionerFctPt)()
Definition: pseudo_elastic_preconditioner.h:504
double & scaling()
Definition: pseudo_elastic_preconditioner.h:536
void clean_up_memory()
clears the memory
Definition: pseudo_elastic_preconditioner.h:550
Preconditioner * Preconditioner_pt
the preconditioner pt
Definition: pseudo_elastic_preconditioner.h:560
void setup()
Broken assignment operator.
Definition: pseudo_elastic_preconditioner.cc:813
PseudoElasticPreconditionerSubsidiaryPreconditionerOld()
Constructor.
Definition: pseudo_elastic_preconditioner.h:507
void set_subsidiary_preconditioner_function(SubsidiaryPreconditionerFctPt sub_prec_fn)
access function to set the subsidiary preconditioner function.
Definition: pseudo_elastic_preconditioner.h:542
double Scaling
Definition: pseudo_elastic_preconditioner.h:557
PseudoElasticPreconditionerSubsidiaryPreconditionerOld(const PseudoElasticPreconditionerSubsidiaryPreconditionerOld &)=delete
Broken copy constructor.
Definition: pseudo_elastic_preconditioner.h:100
SubsidiaryPreconditionerFctPt Lagrange_multiplier_subsidiary_preconditioner_function_pt
The Lagrange multiplier subsidiary preconditioner function pointer.
Definition: pseudo_elastic_preconditioner.h:267
void disable_inf_norm_of_s_scaling()
Call to use no scaling.
Definition: pseudo_elastic_preconditioner.h:197
void lagrange_multiplier_preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply the lagrange multiplier subsidiary preconditioner.
Definition: pseudo_elastic_preconditioner.cc:503
Preconditioner *(* SubsidiaryPreconditionerFctPt)()
Definition: pseudo_elastic_preconditioner.h:111
Elastic_preconditioner_type & elastic_preconditioner_type()
Definition: pseudo_elastic_preconditioner.h:229
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Definition: pseudo_elastic_preconditioner.h:170
bool Use_inf_norm_of_s_scaling
Definition: pseudo_elastic_preconditioner.h:250
double Scaling
The scaling. Defaults to infinity norm of S.
Definition: pseudo_elastic_preconditioner.h:246
void set_lagrange_multiplier_mesh(Mesh *mesh_pt)
Definition: pseudo_elastic_preconditioner.h:185
void set_lagrange_multiplier_subsidiary_preconditioner(SubsidiaryPreconditionerFctPt prec_fn)
Definition: pseudo_elastic_preconditioner.h:206
void setup()
Broken assignment operator.
Definition: pseudo_elastic_preconditioner.cc:114
Vector< Preconditioner * > Lagrange_multiplier_preconditioner_pt
lagrange multiplier preconditioner pt
Definition: pseudo_elastic_preconditioner.h:263
void set_elastic_subsidiary_preconditioner(SubsidiaryPreconditionerFctPt prec_fn)
Definition: pseudo_elastic_preconditioner.h:216
void enable_inf_norm_of_s_scaling()
Call to use the inf norm of S as scaling.
Definition: pseudo_elastic_preconditioner.h:191
virtual ~PseudoElasticPreconditioner()
destructor
Definition: pseudo_elastic_preconditioner.h:147
void elastic_preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply the elastic subsidiary preconditioner.
Definition: pseudo_elastic_preconditioner.cc:493
Mesh * Lagrange_multiplier_mesh_pt
Pointer to the mesh containing the Lagrange multiplier elements.
Definition: pseudo_elastic_preconditioner.h:276
SubsidiaryPreconditionerFctPt Elastic_subsidiary_preconditioner_function_pt
The solid subsidiary preconditioner function pointer.
Definition: pseudo_elastic_preconditioner.h:270
PseudoElasticPreconditioner()
Default (and only) constructor.
Definition: pseudo_elastic_preconditioner.h:130
Mesh * Elastic_mesh_pt
Pointer to the mesh containing the solid elements.
Definition: pseudo_elastic_preconditioner.h:273
Elastic_preconditioner_type E_preconditioner_type
Definition: pseudo_elastic_preconditioner.h:254
Elastic_preconditioner_type
Definition: pseudo_elastic_preconditioner.h:122
@ Block_diagonal_preconditioner
Definition: pseudo_elastic_preconditioner.h:124
@ Exact_block_preconditioner
Definition: pseudo_elastic_preconditioner.h:123
@ Block_lower_triangular_preconditioner
Definition: pseudo_elastic_preconditioner.h:125
@ Block_upper_triangular_preconditioner
Definition: pseudo_elastic_preconditioner.h:126
void clean_up_memory()
Clears the memory.
Definition: pseudo_elastic_preconditioner.cc:527
void set_elastic_mesh(Mesh *mesh_pt)
Definition: pseudo_elastic_preconditioner.h:178
PseudoElasticPreconditioner(const PseudoElasticPreconditioner &)=delete
Broken copy constructor.
Preconditioner * Elastic_preconditioner_pt
storage for the preconditioner for the solid system
Definition: pseudo_elastic_preconditioner.h:260
unsigned Dim
the dimension of the problem
Definition: pseudo_elastic_preconditioner.h:257
Definition: oomph-lib/src/generic/Vector.h:58
unsigned Preconditioner
----------------------—Domain Properties------------------------—
Definition: space_time_oscillating_cylinder.cc:725
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