#include <prometheus.hh>
Collaboration diagram for PromSolver:

Public Member Functions | |
| PromSolver (const PromOptions &opts, PromPerfMonitor &perf, const PromMap &map, const PromMap *const pmap=NULL) | |
| normal constructor | |
| PromSolver (PromSolver *const solver) | |
| shallow copy constructor constructor -- for 'post' smoother | |
| ~PromSolver () | |
| destructor | |
| int | SetPC (PromPC_base *const pc, const PromMatrix_base *AA) |
| int | PrintInfo (const int nactivep, const int lev=-1) const |
| int | SetUp () |
| int | KSPMult (const PromMatrix_base *const A, const PromVector_base *const XX, PromVector_base *const YY) const |
| Mult: v2 = (I - P) A (I - P) * v1. | |
| int | SetTolerances (const int maxits, double rtol=-1., double atol=-1., double dtol=-1.) |
| int | SetGMRESRestart (int kmax) |
| int | SetNewPVec (const PromMap &map) |
| int | SetKSPType (PromKSPType type) |
| PromKSPType | getKSPType () const |
| int | SetKSP (const int maxit, const char *const prestring=NULL, const char *const ksp_string=NULL) |
| int | SetRTol (double tol) |
| double | getRTol () const |
| double | getATol () const |
| int | nEig () const |
| int | SetNEig (int nn) |
| bool | computeSVD () const |
| int | SetComputeSVD () |
| int | ComputeExtremeSVD (int nits, double &emax, double &emin) |
| int | SolveGMRES (const PromVector_base *const, PromVector_base *const, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE, const PromPCSide=PROM_RIGHT) |
| int | SolveRichardson (const PromVector_base *const, PromVector_base *const, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE, const PromPCSide=PROM_RIGHT) |
| int | SolveBCGS (const PromVector_base *const, PromVector_base *const, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE, const PromPCSide=PROM_RIGHT) |
| int | SolveCR (const PromVector_base *const, PromVector_base *const, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE, const PromPCSide=PROM_RIGHT) |
| int | SolveBrez (const PromVector_base *const, PromVector_base *const, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE, const PromPCSide=PROM_RIGHT) |
| int | SolveCheb (const PromVector_base *const, PromVector_base *const, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE, const PromPCSide=PROM_RIGHT) |
| int | SolveCG (const PromVector_base *const, PromVector_base *const, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE, const PromPCSide=PROM_RIGHT) |
| int | SolveTFQMR (const PromVector_base *const, PromVector_base *const, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE, const PromPCSide=PROM_LEFT) |
| int | SolveSYMMLQ (const PromVector_base *const, PromVector_base *const, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE, const PromPCSide=PROM_LEFT) |
| int | SolveMINRES (const PromVector_base *const, PromVector_base *const, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE, const PromPCSide=PROM_LEFT) |
| int | CreatePC (PromPCType type, const PromVector_base *const v) |
| int | MakePC (PromGrid *const grid, int &nblocks, PromIS *&blockISs, bool &kspset, const PromVector *const xx, const char *const prestring=NULL, const char *const pcname=NULL) |
| int | SetOperator (const PromMatrix_base *const A) |
| int | SetNewOperator (const PromMatrix_base *const A) |
| int | SetOperator_private (const PromMatrix_base *const A) |
| int | PromPCApplyBAorAB (const PromMatrix_base *const Amat, PromPC_base *const pc, const PromPCSide pc_side, const PromVector_base *const xx, PromVector_base *const dest, PromVector_base *const zz) const |
| int | Solve (const PromVector_base *const bb, PromVector_base *const xx, int *its, const bool zeroguess=TRUE, const bool avoidnorms=FALSE) |
Public Attributes | |
| PromPC_base * | pc_ |
| const PromMatrix_base * | A_ |
| PromVector_base ** | work_ |
| const PromMap & | map_ |
| const PromMap *const | p_map_ |
| PromProjKKTSolver * | projector_ |
| short int | verbose_ |
| PromSolver::prom_history | history_ |
Static Public Attributes | |
| const char *const | PromKSPStrings [PROMNUMKSP] = {"GMRES","Richardson","BCGS","CR","TFQMR","PC only","CG","Chebychev", "Brezina", "FGMRES", "SYMMLQ", "MINRES"} |
Protected Member Functions | |
| int | TestSymmMA (const PromMatrix_base *const Amat, PromPC_base *const pc, PromVector_base *const Z, PromVector_base *const P, PromVector_base *const R) const |
| int | Monitor (const int it, const double dp) |
| int | converged (double r0, double r) |
Protected Attributes | |
| PromSolver * | alias_ |
| const PromOptions & | options_ |
| PromPerfMonitor & | perf_mon_ |
| float | rtol_ |
| float | dtol_ |
| float | atol_ |
| const bool | alloced_ |
| short int | nwork_ |
| short int | cg_restart_ |
| PromSolver::prom_double_complex | origin_ |
| PromSolver::prom_double_complex | d_ |
| PromSolver::prom_double_complex | hes_ |
| PromSolver::prom_double_complex | dd_ |
| PromSolver::prom_double_complex | ee_ |
| PromKSPType | ksp_type_ |
| short int | nEig_ |
| short int | maxits_ |
Private Member Functions | |
| int | ComputeExtremeSVD_cg (int nn, double &emax, double &emin) |
| int | ComputeExtremeSVD_gmres (int n, double &emax, double &emin) |
| int | ResidualGMRES (const PromPCSide pc_side, const PromVector_base *const xx, PromVector_base *const vv_0, const PromVector_base *const binvf, PromVector_base *const temp) |
| int | CycleGMRES (const PromPCSide pc_side, const PromVector_base *const bb, PromVector_base *const xx, int *reason, int *itcount, double *rnorm0, const bool avoidnorms) |
| int | UpdateGMRESHessenberg (const int it, bool hapend, double *res) |
| int | BuildGMRESSoln (const PromPCSide pc_side, double *nrs, PromVector_base *vdest, const int it, const PromVector_base *const *vv_0, PromVector_base *const temp) |
| int | ModifiedGramSchmidtOrthogonalization (const int it) |
| int | UnmodifiedGramSchmidtOrthogonalization (const int it) |
| int | TwoUnmodifiedGramSchmidtOrthogonalization (const int it) |
| int | PromResidual (const PromPCSide pc_side, const bool zerox, PromVector_base *vsoln, PromVector_base *vt1, PromVector_base *vt2, PromVector_base *vres, PromVector_base *vbinvf, const PromVector_base *const vb) |
| int | SandwPre (const double omV[], const int deg, PromPC_base *const pc, const PromMatrix_base *const Amat, PromVector_base *const xx, PromVector_base *const yy, PromVector_base *const work) const |
| int | SandwPost (const double omV[], const int deg, PromPC_base *const pc, const PromMatrix_base *const Amat, PromVector_base *const xx, PromVector_base *const yy, PromVector_base *const work) const |
| int | BrezParameters (const PromMatrix_base *const AA, double &mlsOver, double &mlsCf, double &mlsOm, double &mlsOm2) |
Krylov methods owns PC object
|
||||||||||||||||
|
copy tridiagonal matrix to work space |
1.3.7