My Project
|
This class implements a Constrained Pressure Residual (CPR) preconditioner. More...
#include <CprCreation.hpp>
Protected Types | |
using | DuneMat = Dune::BCRSMatrix< Dune::FieldMatrix< Scalar, 1, 1 > > |
using | DuneVec = Dune::BlockVector< Dune::FieldVector< Scalar, 1 > > |
using | MatrixOperator = Dune::MatrixAdapter< DuneMat, DuneVec, DuneVec > |
using | DuneAmg = Dune::Amg::MatrixHierarchy< MatrixOperator, Dune::Amg::SequentialInformation > |
Protected Member Functions | |
void | analyzeHierarchy () |
void | analyzeAggregateMaps () |
void | create_preconditioner_amg (BlockedMatrix< Scalar > *mat) |
Protected Attributes | |
int | num_levels |
std::vector< Scalar > | weights |
std::vector< Scalar > | coarse_vals |
std::vector< Scalar > | coarse_x |
std::vector< Scalar > | coarse_y |
std::vector< Matrix< Scalar > > | Amatrices |
std::vector< Matrix< Scalar > > | Rmatrices |
std::vector< std::vector< int > > | PcolIndices |
std::vector< std::vector< Scalar > > | invDiags |
BlockedMatrix< Scalar > * | mat = nullptr |
std::unique_ptr< DuneAmg > | dune_amg |
std::unique_ptr< DuneMat > | dune_coarse |
std::shared_ptr< MatrixOperator > | dune_op |
std::vector< int > | level_sizes |
std::vector< std::vector< int > > | diagIndices |
std::conditional_t< std::is_same_v< Scalar, double >, Dune::UMFPack< DuneMat >, int > | umfpack |
bool | always_recalculate_aggregates = false |
bool | recalculate_aggregates = true |
const int | pressure_idx = 1 |
unsigned | num_pre_smooth_steps |
unsigned | num_post_smooth_steps |
This class implements a Constrained Pressure Residual (CPR) preconditioner.