Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
oomph::PseudoElasticPreconditionerOld Class Reference

//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// More...

#include <pseudo_elastic_preconditioner.h>

Inheritance diagram for oomph::PseudoElasticPreconditionerOld:

Public Types

enum  Elastic_preconditioner_type { Exact_block_preconditioner , Block_diagonal_preconditioner , Block_lower_triangular_preconditioner , Block_upper_triangular_preconditioner }
 The augmented elasticity system can be preconditioned in one of four ways. 0 - Exact preconditioner 1 - Block diagonal preconditioning 2 - Block upper triangular preconditioner 3 - Block lower triangular preconditioner We group together the different components of the displacement vector field for the block decomposition. More...
 
typedef Preconditioner *(* SubsidiaryPreconditionerFctPt) ()
 This preconditioner includes the option to use subsidiary operators other than SuperLUPreconditioner for this problem. This is the typedef of a function that should return an instance of a subsidiary preconditioning operator. This preconditioner is responsible for the destruction of the subsidiary preconditioners. More...
 

Public Member Functions

 PseudoElasticPreconditionerOld ()
 Default (and only) constructor. More...
 
virtual ~PseudoElasticPreconditionerOld ()
 destructor More...
 
 PseudoElasticPreconditionerOld (const PseudoElasticPreconditionerOld &)=delete
 Broken copy constructor. More...
 
void setup ()
 Broken assignment operator. More...
 
void preconditioner_solve (const DoubleVector &r, DoubleVector &z)
 Apply the preconditioner. Method implemented in two other methods (elastic and lagrange multiplier subsidiary preocnditioner) for the PseudoElasticFSIPreconditioner. More...
 
void set_elastic_mesh (Mesh *mesh_pt)
 Access function to mesh containing the block-preconditionable elastic elements. More...
 
void set_lagrange_multiplier_mesh (Mesh *mesh_pt)
 Access function to mesh containing the block-preconditionable lagrange multiplier elements. More...
 
void enable_inf_norm_of_s_scaling ()
 Call to use the inf norm of S as scaling. More...
 
void disable_inf_norm_of_s_scaling ()
 Call to use no scaling. More...
 
void set_lagrange_multiplier_subsidiary_preconditioner (SubsidiaryPreconditionerFctPt prec_fn)
 By default the Lagrange multiplier subsidiary systems are preconditioner with SuperLUPreconditioner. For a different preconditioner, pass a function to this method returning a different subsidiary operator. More...
 
void set_elastic_subsidiary_preconditioner (SubsidiaryPreconditionerFctPt prec_fn)
 By default the elastic subsidiary systems are preconditioner with SuperLUPreconditioner. For a different preconditioner, pass a function to this method returning a different subsidiary operator. More...
 
Elastic_preconditioner_typeelastic_preconditioner_type ()
 Set the type of preconditioner applied to the elastic: 0 - Exact preconditioner 1 - Block diagonal preconditioning 2 - Block upper triangular preconditioner 3 - Block lower triangular preconditioner We group together the different components of the displacement vector field for the block decomposition. More...
 
void clean_up_memory ()
 Clears the memory. More...
 

Private Member Functions

void elastic_preconditioner_solve (const DoubleVector &r, DoubleVector &z)
 Apply the elastic subsidiary preconditioner. More...
 
void lagrange_multiplier_preconditioner_solve (const DoubleVector &r, DoubleVector &z)
 Apply the lagrange multiplier subsidiary preconditioner. More...
 

Private Attributes

double Scaling
 The scaling. Defaults to infinity norm of S. More...
 
bool Use_inf_norm_of_s_scaling
 boolean indicating whether the inf-norm of S should be used as scaling. Default = true; More...
 
Elastic_preconditioner_type E_preconditioner_type
 An unsigned indicating which method should be used for preconditioning the solid component. More...
 
unsigned Dim
 the dimension of the problem More...
 
Preconditioner * Elastic_preconditioner_pt
 storage for the preconditioner for the solid system More...
 
Vector< Preconditioner * > Lagrange_multiplier_preconditioner_pt
 lagrange multiplier preconditioner pt More...
 
SubsidiaryPreconditionerFctPt Lagrange_multiplier_subsidiary_preconditioner_function_pt
 The Lagrange multiplier subsidary preconditioner function pointer. More...
 
SubsidiaryPreconditionerFctPt Elastic_subsidiary_preconditioner_function_pt
 The solid subsidiary preconditioner function pointer. More...
 
Mesh * Elastic_mesh_pt
 Pointer to the mesh containing the solid elements. More...
 
Mesh * Lagrange_multiplier_mesh_pt
 Pointer to the mesh containing the Lagrange multiplier elements. More...
 

Friends

class PseudoElasticFSIPreconditioner
 PseudoElasticFSIPreconditioner is a friend to access the private *_preconditioner_solve(...) method. More...
 

Detailed Description

//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////

A subsidiary preconditioner for the pseudo-elastic FSI preconditioner. Also a stand-alone preconditioner for the problem of non-linear elasticity subject to prescribed displacement by Lagrange multiplier.. Enumeration of Elastic DOF types in the Pseudo-Elastic Elements The method get_dof_types_for_unknowns() must be implemented such that DOFs subject be Lagrange multiplier and DOFs NOT subject to Lagrange multiplier have different labels. For example in a 3D problem there are 6 DOF types and the following labelling must be implemented: 0 - x displacement (without lagr mult traction) 1 - y displacement (without lagr mult traction) 2 - z displacement (without lagr mult traction) 4 - x displacement (with lagr mult traction) 5 - y displacement (with lagr mult traction) 6 - z displacement (with lagr mult traction)

Definition at line 301 of file pseudo_elastic_preconditioner.h.

Member Typedef Documentation

◆ SubsidiaryPreconditionerFctPt

typedef Preconditioner*(* oomph::PseudoElasticPreconditionerOld::SubsidiaryPreconditionerFctPt) ()

This preconditioner includes the option to use subsidiary operators other than SuperLUPreconditioner for this problem. This is the typedef of a function that should return an instance of a subsidiary preconditioning operator. This preconditioner is responsible for the destruction of the subsidiary preconditioners.

Definition at line 314 of file pseudo_elastic_preconditioner.h.

Member Enumeration Documentation

◆ Elastic_preconditioner_type

The augmented elasticity system can be preconditioned in one of four ways. 0 - Exact preconditioner 1 - Block diagonal preconditioning 2 - Block upper triangular preconditioner 3 - Block lower triangular preconditioner We group together the different components of the displacement vector field for the block decomposition.

Enumerator
Exact_block_preconditioner 
Block_diagonal_preconditioner 
Block_lower_triangular_preconditioner 
Block_upper_triangular_preconditioner 

Definition at line 324 of file pseudo_elastic_preconditioner.h.

Constructor & Destructor Documentation

◆ PseudoElasticPreconditionerOld() [1/2]

oomph::PseudoElasticPreconditionerOld::PseudoElasticPreconditionerOld ( )
inline

◆ ~PseudoElasticPreconditionerOld()

virtual oomph::PseudoElasticPreconditionerOld::~PseudoElasticPreconditionerOld ( )
inlinevirtual

destructor

Definition at line 350 of file pseudo_elastic_preconditioner.h.

References clean_up_memory().

◆ PseudoElasticPreconditionerOld() [2/2]

oomph::PseudoElasticPreconditionerOld::PseudoElasticPreconditionerOld ( const PseudoElasticPreconditionerOld )
delete

Broken copy constructor.

Member Function Documentation

◆ clean_up_memory()

void oomph::PseudoElasticPreconditionerOld::clean_up_memory ( )

◆ disable_inf_norm_of_s_scaling()

void oomph::PseudoElasticPreconditionerOld::disable_inf_norm_of_s_scaling ( )
inline

Call to use no scaling.

Definition at line 395 of file pseudo_elastic_preconditioner.h.

References Use_inf_norm_of_s_scaling.

◆ elastic_preconditioner_solve()

void oomph::PseudoElasticPreconditionerOld::elastic_preconditioner_solve ( const DoubleVector &  r,
DoubleVector &  z 
)
private

Apply the elastic subsidiary preconditioner.

Definition at line 751 of file pseudo_elastic_preconditioner.cc.

References Elastic_preconditioner_pt.

Referenced by preconditioner_solve().

◆ elastic_preconditioner_type()

Elastic_preconditioner_type& oomph::PseudoElasticPreconditionerOld::elastic_preconditioner_type ( )
inline

Set the type of preconditioner applied to the elastic: 0 - Exact preconditioner 1 - Block diagonal preconditioning 2 - Block upper triangular preconditioner 3 - Block lower triangular preconditioner We group together the different components of the displacement vector field for the block decomposition.

Definition at line 427 of file pseudo_elastic_preconditioner.h.

References E_preconditioner_type.

◆ enable_inf_norm_of_s_scaling()

void oomph::PseudoElasticPreconditionerOld::enable_inf_norm_of_s_scaling ( )
inline

Call to use the inf norm of S as scaling.

Definition at line 389 of file pseudo_elastic_preconditioner.h.

References Use_inf_norm_of_s_scaling.

◆ lagrange_multiplier_preconditioner_solve()

void oomph::PseudoElasticPreconditionerOld::lagrange_multiplier_preconditioner_solve ( const DoubleVector &  r,
DoubleVector &  z 
)
private

Apply the lagrange multiplier subsidiary preconditioner.

Definition at line 762 of file pseudo_elastic_preconditioner.cc.

References Dim, Lagrange_multiplier_preconditioner_pt, and Scaling.

Referenced by preconditioner_solve().

◆ preconditioner_solve()

void oomph::PseudoElasticPreconditionerOld::preconditioner_solve ( const DoubleVector &  r,
DoubleVector &  z 
)
inline

Apply the preconditioner. Method implemented in two other methods (elastic and lagrange multiplier subsidiary preocnditioner) for the PseudoElasticFSIPreconditioner.

Definition at line 368 of file pseudo_elastic_preconditioner.h.

References elastic_preconditioner_solve(), and lagrange_multiplier_preconditioner_solve().

◆ set_elastic_mesh()

void oomph::PseudoElasticPreconditionerOld::set_elastic_mesh ( Mesh *  mesh_pt)
inline

Access function to mesh containing the block-preconditionable elastic elements.

Definition at line 376 of file pseudo_elastic_preconditioner.h.

References Elastic_mesh_pt.

◆ set_elastic_subsidiary_preconditioner()

void oomph::PseudoElasticPreconditionerOld::set_elastic_subsidiary_preconditioner ( SubsidiaryPreconditionerFctPt  prec_fn)
inline

By default the elastic subsidiary systems are preconditioner with SuperLUPreconditioner. For a different preconditioner, pass a function to this method returning a different subsidiary operator.

Definition at line 414 of file pseudo_elastic_preconditioner.h.

References Elastic_subsidiary_preconditioner_function_pt.

◆ set_lagrange_multiplier_mesh()

void oomph::PseudoElasticPreconditionerOld::set_lagrange_multiplier_mesh ( Mesh *  mesh_pt)
inline

Access function to mesh containing the block-preconditionable lagrange multiplier elements.

Definition at line 383 of file pseudo_elastic_preconditioner.h.

References Lagrange_multiplier_mesh_pt.

◆ set_lagrange_multiplier_subsidiary_preconditioner()

void oomph::PseudoElasticPreconditionerOld::set_lagrange_multiplier_subsidiary_preconditioner ( SubsidiaryPreconditionerFctPt  prec_fn)
inline

By default the Lagrange multiplier subsidiary systems are preconditioner with SuperLUPreconditioner. For a different preconditioner, pass a function to this method returning a different subsidiary operator.

Definition at line 404 of file pseudo_elastic_preconditioner.h.

References Lagrange_multiplier_subsidiary_preconditioner_function_pt.

◆ setup()

void oomph::PseudoElasticPreconditionerOld::setup ( )

Broken assignment operator.

//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////

Setup method for the PseudoElasticPreconditionerOld.

Definition at line 552 of file pseudo_elastic_preconditioner.cc.

References Block_diagonal_preconditioner, Block_lower_triangular_preconditioner, Block_upper_triangular_preconditioner, clean_up_memory(), Dim, E_preconditioner_type, Elastic_mesh_pt, Elastic_preconditioner_pt, Elastic_subsidiary_preconditioner_function_pt, Exact_block_preconditioner, Lagrange_multiplier_mesh_pt, Lagrange_multiplier_preconditioner_pt, Lagrange_multiplier_subsidiary_preconditioner_function_pt, oomph::PseudoElasticPreconditionerScalingHelperOld::s_inf_norm(), Scaling, oomph::PseudoElasticPreconditionerSubsidiaryPreconditionerOld::scaling(), oomph::PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld::scaling(), oomph::PseudoElasticPreconditionerSubsidiaryPreconditionerOld::set_subsidiary_preconditioner_function(), oomph::PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld::set_subsidiary_preconditioner_function(), oomph::PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld::use_block_diagonal_approximation(), Use_inf_norm_of_s_scaling, oomph::PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld::use_lower_triangular_approximation(), and oomph::PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld::use_upper_triangular_approximation().

Friends And Related Function Documentation

◆ PseudoElasticFSIPreconditioner

friend class PseudoElasticFSIPreconditioner
friend

PseudoElasticFSIPreconditioner is a friend to access the private *_preconditioner_solve(...) method.

Definition at line 306 of file pseudo_elastic_preconditioner.h.

Member Data Documentation

◆ Dim

unsigned oomph::PseudoElasticPreconditionerOld::Dim
private

the dimension of the problem

Definition at line 455 of file pseudo_elastic_preconditioner.h.

Referenced by lagrange_multiplier_preconditioner_solve(), and setup().

◆ E_preconditioner_type

Elastic_preconditioner_type oomph::PseudoElasticPreconditionerOld::E_preconditioner_type
private

An unsigned indicating which method should be used for preconditioning the solid component.

Definition at line 452 of file pseudo_elastic_preconditioner.h.

Referenced by elastic_preconditioner_type(), PseudoElasticPreconditionerOld(), and setup().

◆ Elastic_mesh_pt

Mesh* oomph::PseudoElasticPreconditionerOld::Elastic_mesh_pt
private

Pointer to the mesh containing the solid elements.

Definition at line 471 of file pseudo_elastic_preconditioner.h.

Referenced by PseudoElasticPreconditionerOld(), set_elastic_mesh(), and setup().

◆ Elastic_preconditioner_pt

Preconditioner* oomph::PseudoElasticPreconditionerOld::Elastic_preconditioner_pt
private

storage for the preconditioner for the solid system

Definition at line 458 of file pseudo_elastic_preconditioner.h.

Referenced by clean_up_memory(), elastic_preconditioner_solve(), PseudoElasticPreconditionerOld(), and setup().

◆ Elastic_subsidiary_preconditioner_function_pt

SubsidiaryPreconditionerFctPt oomph::PseudoElasticPreconditionerOld::Elastic_subsidiary_preconditioner_function_pt
private

The solid subsidiary preconditioner function pointer.

Definition at line 468 of file pseudo_elastic_preconditioner.h.

Referenced by PseudoElasticPreconditionerOld(), set_elastic_subsidiary_preconditioner(), and setup().

◆ Lagrange_multiplier_mesh_pt

Mesh* oomph::PseudoElasticPreconditionerOld::Lagrange_multiplier_mesh_pt
private

Pointer to the mesh containing the Lagrange multiplier elements.

Definition at line 474 of file pseudo_elastic_preconditioner.h.

Referenced by PseudoElasticPreconditionerOld(), set_lagrange_multiplier_mesh(), and setup().

◆ Lagrange_multiplier_preconditioner_pt

Vector<Preconditioner*> oomph::PseudoElasticPreconditionerOld::Lagrange_multiplier_preconditioner_pt
private

lagrange multiplier preconditioner pt

Definition at line 461 of file pseudo_elastic_preconditioner.h.

Referenced by clean_up_memory(), lagrange_multiplier_preconditioner_solve(), and setup().

◆ Lagrange_multiplier_subsidiary_preconditioner_function_pt

SubsidiaryPreconditionerFctPt oomph::PseudoElasticPreconditionerOld::Lagrange_multiplier_subsidiary_preconditioner_function_pt
private

The Lagrange multiplier subsidary preconditioner function pointer.

Definition at line 465 of file pseudo_elastic_preconditioner.h.

Referenced by PseudoElasticPreconditionerOld(), set_lagrange_multiplier_subsidiary_preconditioner(), and setup().

◆ Scaling

double oomph::PseudoElasticPreconditionerOld::Scaling
private

The scaling. Defaults to infinity norm of S.

Definition at line 444 of file pseudo_elastic_preconditioner.h.

Referenced by lagrange_multiplier_preconditioner_solve(), and setup().

◆ Use_inf_norm_of_s_scaling

bool oomph::PseudoElasticPreconditionerOld::Use_inf_norm_of_s_scaling
private

boolean indicating whether the inf-norm of S should be used as scaling. Default = true;

Definition at line 448 of file pseudo_elastic_preconditioner.h.

Referenced by disable_inf_norm_of_s_scaling(), enable_inf_norm_of_s_scaling(), PseudoElasticPreconditionerOld(), and setup().


The documentation for this class was generated from the following files: