![]() |
|
#include <lagrange_enforced_flow_preconditioner.h>
Inheritance diagram for oomph::LagrangeEnforcedFlowPreconditioner:Public Types | |
| typedef Preconditioner *(* | SubsidiaryPreconditionerFctPt) () |
Public Member Functions | |
| LagrangeEnforcedFlowPreconditioner () | |
| Constructor - initialise variables. More... | |
| virtual | ~LagrangeEnforcedFlowPreconditioner () |
| Destructor. More... | |
| LagrangeEnforcedFlowPreconditioner (const LagrangeEnforcedFlowPreconditioner &)=delete | |
| Broken copy constructor. More... | |
| void | operator= (const LagrangeEnforcedFlowPreconditioner &)=delete |
| Broken assignment operator. More... | |
| void | setup () |
| Setup method for the LagrangeEnforcedFlowPreconditioner. More... | |
| void | preconditioner_solve (const DoubleVector &r, DoubleVector &z) |
| void | set_meshes (const Vector< Mesh * > &mesh_pt) |
| void | use_norm_f_for_scaling_sigma () |
| void | set_scaling_sigma (const double &scaling_sigma) |
| double | scaling_sigma () const |
| Read (const) function to get the scaling sigma. More... | |
| void | set_navier_stokes_preconditioner (Preconditioner *new_ns_preconditioner_pt=0) |
| void | set_superlu_for_navier_stokes_preconditioner () |
| void | clean_up_memory () |
| Clears the memory. More... | |
Public Member Functions inherited from oomph::BlockPreconditioner< CRDoubleMatrix > | |
| BlockPreconditioner () | |
| Constructor. More... | |
| BlockPreconditioner (const BlockPreconditioner &)=delete | |
| Broken copy constructor. More... | |
| virtual | ~BlockPreconditioner () |
| Destructor. More... | |
| void | operator= (const BlockPreconditioner &)=delete |
| Broken assignment operator. More... | |
| CRDoubleMatrix * | matrix_pt () const |
| void | turn_on_recursive_debug_flag () |
| void | turn_off_recursive_debug_flag () |
| void | turn_on_debug_flag () |
| Toggles on the debug flag. More... | |
| void | turn_off_debug_flag () |
| Toggles off the debug flag. More... | |
| void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse) |
| void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse, const Vector< Vector< unsigned >> &doftype_coarsen_map_coarse) |
| virtual void | block_setup () |
| void | block_setup (const Vector< unsigned > &dof_to_block_map) |
| void | get_block (const unsigned &i, const unsigned &j, CRDoubleMatrix &output_matrix, const bool &ignore_replacement_block=false) const |
| CRDoubleMatrix | get_block (const unsigned &i, const unsigned &j, const bool &ignore_replacement_block=false) const |
| void | set_master_matrix_pt (CRDoubleMatrix *in_matrix_pt) |
| Set the matrix_pt in the upper-most master preconditioner. More... | |
| void | get_block_other_matrix (const unsigned &i, const unsigned &j, CRDoubleMatrix *in_matrix_pt, CRDoubleMatrix &output_matrix) |
| void | get_blocks (DenseMatrix< bool > &required_blocks, DenseMatrix< CRDoubleMatrix * > &block_matrix_pt) const |
| void | get_dof_level_block (const unsigned &i, const unsigned &j, CRDoubleMatrix &output_block, const bool &ignore_replacement_block=false) const |
| void | get_dof_level_block (const unsigned &block_i, const unsigned &block_j, CRDoubleMatrix &output_block, const bool &ignore_replacement_block) const |
| CRDoubleMatrix | get_concatenated_block (const VectorMatrix< BlockSelector > &selected_block) |
| void | get_concatenated_block_vector (const Vector< unsigned > &block_vec_number, const DoubleVector &v, DoubleVector &b) |
| void | return_concatenated_block_vector (const Vector< unsigned > &block_vec_number, const DoubleVector &b, DoubleVector &v) const |
| Takes concatenated block ordered vector, b, and copies its. More... | |
| void | get_block_vectors (const Vector< unsigned > &block_vec_number, const DoubleVector &v, Vector< DoubleVector > &s) const |
| void | get_block_vectors (const DoubleVector &v, Vector< DoubleVector > &s) const |
| void | return_block_vectors (const Vector< unsigned > &block_vec_number, const Vector< DoubleVector > &s, DoubleVector &v) const |
| void | return_block_vectors (const Vector< DoubleVector > &s, DoubleVector &v) const |
| void | get_block_vector (const unsigned &n, const DoubleVector &v, DoubleVector &b) const |
| void | return_block_vector (const unsigned &n, const DoubleVector &b, DoubleVector &v) const |
| void | get_block_ordered_preconditioner_vector (const DoubleVector &v, DoubleVector &w) |
| void | return_block_ordered_preconditioner_vector (const DoubleVector &w, DoubleVector &v) const |
| unsigned | nblock_types () const |
| Return the number of block types. More... | |
| unsigned | ndof_types () const |
| Return the total number of DOF types. More... | |
| const Mesh * | mesh_pt (const unsigned &i) const |
| unsigned | nmesh () const |
| int | block_number (const unsigned &i_dof) const |
| Return the block number corresponding to a global index i_dof. More... | |
| int | index_in_block (const unsigned &i_dof) const |
| const LinearAlgebraDistribution * | block_distribution_pt (const unsigned &b) const |
| Access function to the block distributions (const version). More... | |
| LinearAlgebraDistribution * | block_distribution_pt (const unsigned b) |
| Access function to the block distributions (non-const version). More... | |
| LinearAlgebraDistribution * | dof_block_distribution_pt (const unsigned &b) |
| Access function to the dof-level block distributions. More... | |
| const LinearAlgebraDistribution * | master_distribution_pt () const |
| unsigned | ndof_types_in_mesh (const unsigned &i) const |
| bool | is_subsidiary_block_preconditioner () const |
| bool | is_master_block_preconditioner () const |
| void | set_block_output_to_files (const std::string &basefilename) |
| void | disable_block_output_to_files () |
| Turn off output of blocks (by clearing the basefilename string). More... | |
| bool | block_output_on () const |
| Test if output of blocks is on or not. More... | |
| void | output_blocks_to_files (const std::string &basefilename, const unsigned &precision=8) const |
| void | post_block_matrix_assembly_partial_clear () |
| BlockPreconditioner< CRDoubleMatrix > * | master_block_preconditioner_pt () const |
| Access function to the master block preconditioner pt. More... | |
| void | clear_block_preconditioner_base () |
| void | document () |
| Vector< Vector< unsigned > > | doftype_coarsen_map_fine () const |
| Vector< unsigned > | get_fine_grain_dof_types_in (const unsigned &i) const |
| unsigned | nfine_grain_dof_types_in (const unsigned &i) const |
| MapMatrix< unsigned, CRDoubleMatrix * > | replacement_dof_block_pt () const |
| Access function to the replaced dof-level blocks. More... | |
| void | setup_matrix_vector_product (MatrixVectorProduct *matvec_prod_pt, CRDoubleMatrix *block_pt, const Vector< unsigned > &block_col_indices) |
| void | setup_matrix_vector_product (MatrixVectorProduct *matvec_prod_pt, CRDoubleMatrix *block_pt, const unsigned &block_col_index) |
| void | internal_get_block_ordered_preconditioner_vector (const DoubleVector &v, DoubleVector &w) const |
| void | internal_return_block_ordered_preconditioner_vector (const DoubleVector &w, DoubleVector &v) const |
| unsigned | internal_nblock_types () const |
| unsigned | internal_ndof_types () const |
| void | internal_return_block_vector (const unsigned &n, const DoubleVector &b, DoubleVector &v) const |
| void | internal_get_block_vector (const unsigned &n, const DoubleVector &v, DoubleVector &b) const |
| void | internal_get_block_vectors (const Vector< unsigned > &block_vec_number, const DoubleVector &v, Vector< DoubleVector > &s) const |
| void | internal_get_block_vectors (const DoubleVector &v, Vector< DoubleVector > &s) const |
| void | internal_return_block_vectors (const Vector< unsigned > &block_vec_number, const Vector< DoubleVector > &s, DoubleVector &v) const |
| void | internal_return_block_vectors (const Vector< DoubleVector > &s, DoubleVector &v) const |
| void | internal_get_block (const unsigned &i, const unsigned &j, CRDoubleMatrix &output_block) const |
| void | internal_get_block (const unsigned &block_i, const unsigned &block_j, CRDoubleMatrix &output_block) const |
| int | internal_block_number (const unsigned &i_dof) const |
| int | internal_index_in_block (const unsigned &i_dof) const |
| const LinearAlgebraDistribution * | internal_block_distribution_pt (const unsigned &b) const |
| Access function to the internal block distributions. More... | |
| void | insert_auxiliary_block_distribution (const Vector< unsigned > &block_vec_number, LinearAlgebraDistribution *dist_pt) |
| void | block_matrix_test (const unsigned &i, const unsigned &j, const CRDoubleMatrix *block_matrix_pt) const |
| int | get_index_of_value (const Vector< myType > &vec, const myType val, const bool sorted=false) const |
Public Member Functions inherited from oomph::Preconditioner | |
| Preconditioner () | |
| Constructor. More... | |
| Preconditioner (const Preconditioner &)=delete | |
| Broken copy constructor. More... | |
| void | operator= (const Preconditioner &)=delete |
| Broken assignment operator. More... | |
| virtual | ~Preconditioner () |
| Destructor (empty) More... | |
| virtual void | preconditioner_solve_transpose (const DoubleVector &r, DoubleVector &z) |
| void | setup (DoubleMatrixBase *matrix_pt) |
| void | setup (const Problem *problem_pt, DoubleMatrixBase *matrix_pt) |
| void | enable_silent_preconditioner_setup () |
| Set up the block preconditioner quietly! More... | |
| void | disable_silent_preconditioner_setup () |
| Be verbose in the block preconditioner setup. More... | |
| virtual void | set_matrix_pt (DoubleMatrixBase *matrix_pt) |
| Set the matrix pointer. More... | |
| virtual const OomphCommunicator * | comm_pt () const |
| Get function for comm pointer. More... | |
| virtual void | set_comm_pt (const OomphCommunicator *const comm_pt) |
| Set the communicator pointer. More... | |
| double | setup_time () const |
| Returns the time to setup the preconditioner. More... | |
| virtual void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse) |
| virtual void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse, const Vector< Vector< unsigned >> &doftype_coarsen_map_coarse) |
Public Member Functions inherited from oomph::DistributableLinearAlgebraObject | |
| DistributableLinearAlgebraObject () | |
| Default constructor - create a distribution. More... | |
| DistributableLinearAlgebraObject (const DistributableLinearAlgebraObject &matrix)=delete | |
| Broken copy constructor. More... | |
| void | operator= (const DistributableLinearAlgebraObject &)=delete |
| Broken assignment operator. More... | |
| virtual | ~DistributableLinearAlgebraObject () |
| Destructor. More... | |
| LinearAlgebraDistribution * | distribution_pt () const |
| access to the LinearAlgebraDistribution More... | |
| unsigned | nrow () const |
| access function to the number of global rows. More... | |
| unsigned | nrow_local () const |
| access function for the num of local rows on this processor. More... | |
| unsigned | nrow_local (const unsigned &p) const |
| access function for the num of local rows on this processor. More... | |
| unsigned | first_row () const |
| access function for the first row on this processor More... | |
| unsigned | first_row (const unsigned &p) const |
| access function for the first row on this processor More... | |
| bool | distributed () const |
| distribution is serial or distributed More... | |
| bool | distribution_built () const |
| void | build_distribution (const LinearAlgebraDistribution *const dist_pt) |
| void | build_distribution (const LinearAlgebraDistribution &dist) |
Private Attributes | |
| bool | Preconditioner_has_been_setup |
| double | Scaling_sigma |
| Scaling for the augmentation: Scaling_sigma*(LL^T) More... | |
| bool | Use_norm_f_for_scaling_sigma |
| Vector< Vector< double > > | Inv_w_diag_values |
| Inverse W values. More... | |
| Preconditioner * | Navier_stokes_preconditioner_pt |
| Pointer to the 'preconditioner' for the Navier-Stokes block. More... | |
| bool | Navier_stokes_preconditioner_is_block_preconditioner |
| bool | Using_superlu_ns_preconditioner |
| Flag to indicate whether the default NS preconditioner is used. More... | |
| Vector< Mesh * > | My_mesh_pt |
| Vector< unsigned > | My_ndof_types_in_mesh |
| unsigned | My_nmesh |
| unsigned | N_lagrange_doftypes |
| The number of Lagrange multiplier DOF types. More... | |
| unsigned | N_fluid_doftypes |
| The number of fluid DOF types (including pressure). More... | |
| unsigned | N_velocity_doftypes |
| The number of velocity DOF types. More... | |
The preconditioner for the Lagrange multiplier constrained Navier-Stokes equations. The velocity components are constrained by Lagrange multiplier, which are applied via OOMPH-LIB's FACE elements.
The linearised Jacobian takes the block form:
| F_ns | L^T | |---------—| | L | 0 |
where L correspond to the constrained block, F_ns is the Navier-Stokes block with the following block structure
| F | G^T | |-------—| | D | 0 |
Here F is the momentum block, G the discrete gradient operator, and D the discrete divergence operator. For unstabilised elements, we have D = G^T and in much of the literature the divergence matrix is denoted by B.
The Lagrange enforced flow preconditioner takes the form:
| F_aug | |
|---|---|
| Wd |
where F_aug = F_ns + L^T*inv(Wd)*L is an augmented Navier-Stokes block and Wd=(1/Scaling_sigma)*diag(LL^T).
In our implementation of the preconditioner, the linear systems associated with the (1,1) block can either be solved "exactly", using SuperLU (in its incarnation as an exact preconditioner; this is the default) or by any other Preconditioner (inexact solver) specified via the access functions
LagrangeEnforcedFlowPreconditioner::set_navier_stokes_preconditioner(...)
Access to the elements is provided via meshes. However, a Vector of meshes is taken, each mesh contains a different type of block preconditionable element. This allows the (re-)classification of the constrained velocity DOF types.
The first mesh in the Vector Mesh_pt must be the 'bulk' mesh. The rest are assumed to contain FACEELMENTS.
Thus, the most general block structure (in 3D) is:
0 1 2 3 4 5 6 7 8 ..x x+0 x+1 x+2 x+3 x+4 [u v w p] [u v w l1 l2 ...] [u v w l1 l2 ...] ... Bulk Surface 1 Surface 2 ...
where the DOF types in [] are the DOF types associated with each mesh.
For example, consider a unit cube domain [0,1]^3 with parallel outflow imposed (in mesh 0) and tangential flow imposed (in mesh 1), then there are 13 DOF types and our implementation respects the following (natural) DOF type order:
bulk mesh 0 mesh 1 [0 1 2 3] [4 5 6 7 8 ] [9 10 11 12 ] [u v w p] [up vp wp Lp1 Lp2] [ut vt wt Lt1]
Via the appropriate mapping, the block_setup(...) function will re-order the DOF types into the following block types:
0 1 2 3 4 5 6 7 8 9 10 11 12 <- Block type 0 4 9 1 5 10 2 6 11 3 7 8 12 <- DOF type [u up ut v vp vt w wp wt ] [p] [Lp1 Lp2 Lt1]
| typedef Preconditioner*(* oomph::LagrangeEnforcedFlowPreconditioner::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.
|
inline |
Constructor - initialise variables.
References My_mesh_pt, My_ndof_types_in_mesh, My_nmesh, N_fluid_doftypes, N_lagrange_doftypes, N_velocity_doftypes, Navier_stokes_preconditioner_is_block_preconditioner, Navier_stokes_preconditioner_pt, Preconditioner_has_been_setup, Scaling_sigma, Use_norm_f_for_scaling_sigma, and Using_superlu_ns_preconditioner.
|
inlinevirtual |
Destructor.
References clean_up_memory().
|
delete |
Broken copy constructor.
|
virtual |
Clears the memory.
Reimplemented from oomph::Preconditioner.
References oomph::BlockPreconditioner< CRDoubleMatrix >::clear_block_preconditioner_base(), Navier_stokes_preconditioner_pt, Preconditioner_has_been_setup, and Using_superlu_ns_preconditioner.
Referenced by setup(), and ~LagrangeEnforcedFlowPreconditioner().
|
delete |
Broken assignment operator.
|
virtual |
Apply the preconditioner. r is the residual (rhs), z will contain the solution.
///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// Apply the preconditioner. r is the residual (rhs), z will contain the solution.
Implements oomph::Preconditioner.
References b, oomph::DoubleVector::build(), oomph::DoubleVector::built(), oomph::LinearAlgebraDistribution::built(), oomph::DoubleVector::clear(), oomph::DistributableLinearAlgebraObject::distribution_pt(), oomph::BlockPreconditioner< CRDoubleMatrix >::get_block_vector(), oomph::BlockPreconditioner< CRDoubleMatrix >::get_concatenated_block_vector(), i, Inv_w_diag_values, N_fluid_doftypes, N_lagrange_doftypes, Navier_stokes_preconditioner_pt, oomph::DistributableLinearAlgebraObject::nrow(), oomph::DistributableLinearAlgebraObject::nrow_local(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, Preconditioner_has_been_setup, oomph::Preconditioner::preconditioner_solve(), UniformPSDSelfTest::r, oomph::BlockPreconditioner< CRDoubleMatrix >::return_block_vector(), oomph::BlockPreconditioner< CRDoubleMatrix >::return_concatenated_block_vector(), Using_superlu_ns_preconditioner, and oomph::DoubleVector::values_pt().
|
inline |
Read (const) function to get the scaling sigma.
References Scaling_sigma.
Referenced by set_scaling_sigma().
Set the meshes, the first mesh in the vector must be the bulk mesh.
References oomph::Mesh::elemental_dimension(), oomph::BlockPreconditioner< CRDoubleMatrix >::mesh_pt(), My_mesh_pt, My_nmesh, oomph::BlockPreconditioner< CRDoubleMatrix >::nmesh(), oomph::Mesh::nodal_dimension(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::BlockPreconditioner< CRDoubleMatrix >::set_mesh(), and oomph::BlockPreconditioner< CRDoubleMatrix >::set_nmesh().
Referenced by TiltedCavityProblem< ELEMENT >::TiltedCavityProblem().
| void oomph::LagrangeEnforcedFlowPreconditioner::set_navier_stokes_preconditioner | ( | Preconditioner * | new_ns_preconditioner_pt = 0 | ) |
Set a new Navier-Stokes matrix preconditioner (inexact solver)
Function to set a new momentum matrix preconditioner (inexact solver)
References Navier_stokes_preconditioner_pt, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and Using_superlu_ns_preconditioner.
Referenced by TiltedCavityProblem< ELEMENT >::TiltedCavityProblem().
|
inline |
Access function to set the scaling sigma. Note: this also sets the flag to use the infinite norm of the Navier-Stokes F matrix as the scaling sigma to false. Warning is given if trying to set scaling sigma to be equal to or greater than zero.
References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, scaling_sigma(), Scaling_sigma, and Use_norm_f_for_scaling_sigma.
|
inline |
Set Navier-Stokes matrix preconditioner (inexact solver) to SuperLU
References Navier_stokes_preconditioner_pt, and Using_superlu_ns_preconditioner.
Referenced by TiltedCavityProblem< ELEMENT >::TiltedCavityProblem().
|
virtual |
Setup method for the LagrangeEnforcedFlowPreconditioner.
Setup the Lagrange enforced flow preconditioner. This extracts blocks corresponding to the velocity and Lagrange multiplier unknowns, creates the matrices actually needed in the application of the preconditioner and deletes what can be deleted... Note that this preconditioner needs a CRDoubleMatrix.
Implements oomph::Preconditioner.
References oomph::BlockPreconditioner< CRDoubleMatrix >::Block_distribution_pt, oomph::BlockPreconditioner< CRDoubleMatrix >::block_setup(), oomph::CRDoubleMatrix::build(), clean_up_memory(), oomph::CRDoubleMatrix::diagonal_entries(), oomph::DistributableLinearAlgebraObject::distribution_pt(), oomph::BlockPreconditioner< CRDoubleMatrix >::get_block(), oomph::BlockPreconditioner< CRDoubleMatrix >::get_concatenated_block(), oomph::CRDoubleMatrixHelpers::inf_norm(), Inv_w_diag_values, oomph::BlockPreconditioner< CRDoubleMatrix >::is_subsidiary_block_preconditioner(), oomph::BlockPreconditioner< CRDoubleMatrix >::matrix_pt(), oomph::CRDoubleMatrix::multiply(), My_mesh_pt, My_ndof_types_in_mesh, My_nmesh, N_fluid_doftypes, N_lagrange_doftypes, N_velocity_doftypes, Navier_stokes_preconditioner_is_block_preconditioner, Navier_stokes_preconditioner_pt, oomph::DenseMatrix< T >::ncol(), oomph::BlockPreconditioner< CRDoubleMatrix >::ndof_types(), oomph::CRDoubleMatrix::nnz(), oomph::DenseMatrix< T >::nrow(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, Preconditioner_has_been_setup, Scaling_sigma, oomph::BlockPreconditioner< CRDoubleMatrix >::set_replacement_dof_block(), oomph::Preconditioner::setup(), oomph::BlockPreconditioner< MATRIX >::turn_into_subsidiary_block_preconditioner(), Use_norm_f_for_scaling_sigma, and Using_superlu_ns_preconditioner.
|
inline |
Set flag to use the infinite norm of the Navier-Stokes F matrix as the scaling sigma. This is the default behaviour. Note: the norm of the NS F matrix positive, however, we actually use the negative of the norm. This is because the underlying Navier-Stokes Jacobian is multiplied by -1. Ask Andrew/Matthias for more detail.
References Use_norm_f_for_scaling_sigma.
Inverse W values.
Referenced by preconditioner_solve(), and setup().
Storage for the meshes. In our implementation, the first mesh must always be the Navier-Stokes (bulk) mesh, followed by surface meshes.
Referenced by LagrangeEnforcedFlowPreconditioner(), set_meshes(), and setup().
The number of DOF types in each mesh. This is used create various lookup lists.
Referenced by LagrangeEnforcedFlowPreconditioner(), and setup().
|
private |
The number of meshes. This is used to create various lookup lists.
Referenced by LagrangeEnforcedFlowPreconditioner(), set_meshes(), and setup().
|
private |
The number of fluid DOF types (including pressure).
Referenced by LagrangeEnforcedFlowPreconditioner(), preconditioner_solve(), and setup().
|
private |
The number of Lagrange multiplier DOF types.
Referenced by LagrangeEnforcedFlowPreconditioner(), preconditioner_solve(), and setup().
|
private |
The number of velocity DOF types.
Referenced by LagrangeEnforcedFlowPreconditioner(), and setup().
|
private |
Flag to indicate if the preconditioner for the Navier-Stokes block is a block preconditioner or not.
Referenced by LagrangeEnforcedFlowPreconditioner(), and setup().
|
private |
Pointer to the 'preconditioner' for the Navier-Stokes block.
Referenced by clean_up_memory(), LagrangeEnforcedFlowPreconditioner(), preconditioner_solve(), set_navier_stokes_preconditioner(), set_superlu_for_navier_stokes_preconditioner(), and setup().
|
private |
Control flag is true if the preconditioner has been setup (used so we can wipe the data when the preconditioner is called again)
Referenced by clean_up_memory(), LagrangeEnforcedFlowPreconditioner(), preconditioner_solve(), and setup().
|
private |
Scaling for the augmentation: Scaling_sigma*(LL^T)
Referenced by LagrangeEnforcedFlowPreconditioner(), scaling_sigma(), set_scaling_sigma(), and setup().
|
private |
Flag to indicate if we want to use the infinite norm of the Navier-Stokes momentum block for the scaling sigma.
Referenced by LagrangeEnforcedFlowPreconditioner(), set_scaling_sigma(), setup(), and use_norm_f_for_scaling_sigma().
|
private |
Flag to indicate whether the default NS preconditioner is used.
Referenced by clean_up_memory(), LagrangeEnforcedFlowPreconditioner(), preconditioner_solve(), set_navier_stokes_preconditioner(), set_superlu_for_navier_stokes_preconditioner(), and setup().