Flow123d
master-f44eb46
|
#include <linsys_PERMON.hh>
Classes | |
struct | PetscScalar2Double_ |
Public Types | |
typedef LinSys | FactoryBaseType |
Public Types inherited from LinSys_PETSC | |
typedef LinSys | FactoryBaseType |
Public Types inherited from LinSys | |
enum | SetValuesMode { INSERT =INSERT_VALUES , ADD =ADD_VALUES , ALLOCATE , DONE , NONE } |
Public Member Functions | |
LinSys_PERMON (const Distribution *rows_ds, const std::string ¶ms="") | |
LinSys_PERMON (LinSys_PERMON &other) | |
void | set_inequality (Mat matrix_ineq, Vec ineq) |
LinSys_PETSC::SolveInfo | solve () override |
double | get_absolute_accuracy () override |
void | view (string text="") override |
double | get_solution_precision () override |
double | compute_residual () override |
~LinSys_PERMON () | |
Public Member Functions inherited from LinSys_PETSC | |
LinSys_PETSC (const Distribution *rows_ds, const std::string ¶ms="") | |
LinSys_PETSC (LinSys_PETSC &other) | |
void | set_tolerances (double r_tol, double a_tol, double d_tol, unsigned int max_it) override |
const Distribution * | get_ds () |
const Mat * | get_matrix () override |
const Vec * | get_rhs () override |
PetscErrorCode | set_matrix (Mat &matrix, MatStructure str) override |
PetscErrorCode | set_rhs (Vec &rhs) override |
PetscErrorCode | mat_zero_entries () override |
PetscErrorCode | rhs_zero_entries () override |
void | start_allocation () override |
void | start_add_assembly () override |
void | start_insert_assembly () override |
void | mat_set_values (int nrow, int *rows, int ncol, int *cols, double *vals) override |
void | rhs_set_values (int nrow, int *rows, double *vals) override |
void | preallocate_values (int nrow, int *rows, int ncol, int *cols) |
void | preallocate_matrix () |
void | finish_assembly () override |
void | finish_assembly (MatAssemblyType assembly_type) |
void | apply_constrains (double scalar=1.) override |
void | set_initial_guess_nonzero (bool set_nonzero=true) |
LinSys::SolveInfo | solve () override |
double | get_absolute_accuracy () override |
void | view (string text="") override |
void | set_from_input (const Input::Record in_rec) override |
double | get_solution_precision () override |
double | compute_residual () override |
~LinSys_PETSC () | |
Public Member Functions inherited from LinSys | |
LinSys (const Distribution *rows_ds) | |
LinSys (LinSys &other) | |
unsigned int | size () |
unsigned int | vec_lsize () |
void | set_matrix_changed () |
void | set_rhs_changed () |
bool | is_matrix_changed () |
bool | is_rhs_changed () |
const Vec & | get_solution () |
void | set_solution (Vec sol_vec) |
void | set_solution (double *sol_array) |
void | set_solution () |
double * | get_solution_array () |
void | mat_set_value (int row, int col, double val) |
void | rhs_set_value (int row, double val) |
void | set_values (int nrow, int *rows, int ncol, int *cols, PetscScalar *mat_vals, PetscScalar *rhs_vals) |
Set values in the system matrix and values in the right-hand side vector on corresponding rows. More... | |
void | set_local_system (LocalSystem &local) |
void | set_local_system (LocalSystem &local, const std::vector< LongIdx > &local_to_global_map) |
void | set_values (std::vector< int > &row_dofs, std::vector< int > &col_dofs, const arma::mat &matrix, const arma::vec &rhs, const arma::vec &row_solution, const arma::vec &col_solution) |
void | add_constraint (int row, double value) |
double | get_residual_norm () |
double | get_relative_accuracy () |
void | set_symmetric (bool flag=true) |
bool | is_symmetric () |
void | set_positive_definite (bool flag=true) |
void | set_negative_definite (bool flag=true) |
bool | is_positive_definite () |
bool | is_negative_definite () |
bool | is_new () |
bool | is_preallocated () |
void | set_spd_via_symmetric_general (bool flag=true) |
bool | is_spd_via_symmetric_general () |
virtual | ~LinSys () |
Static Public Member Functions | |
static const Input::Type::Record & | get_input_type () |
Static Public Member Functions inherited from LinSys_PETSC | |
static const Input::Type::Record & | get_input_type () |
Static Public Member Functions inherited from LinSys | |
static Input::Type::Abstract & | get_input_type () |
Protected Attributes | |
Mat | matrix_ineq_ |
PETSc matrix of inequality constraint. More... | |
Vec | ineq_ |
PETSc vector of inequality constraint. More... | |
QP | system |
QPS | solver |
Protected Attributes inherited from LinSys_PETSC | |
std::string | params_ |
command-line-like options for the PETSc solver More... | |
bool | init_guess_nonzero |
flag for starting from nonzero guess More... | |
Mat | matrix_ |
Petsc matrix of the problem. More... | |
Vec | rhs_ |
PETSc vector constructed with vx array. More... | |
Vec | residual_ |
double * | v_rhs_ |
local RHS array pointing to Vec rhs_ More... | |
Vec | on_vec_ |
Vectors for counting non-zero entries in diagonal block. More... | |
Vec | off_vec_ |
Vectors for counting non-zero entries in off-diagonal block. More... | |
double | solution_precision_ |
KSP | system |
KSPConvergedReason | reason |
Protected Attributes inherited from LinSys | |
double | r_tol_ |
relative tolerance of linear solver More... | |
double | a_tol_ |
absolute tolerance of linear solver More... | |
double | d_tol_ |
tolerance for divergence of linear solver More... | |
unsigned int | max_it_ |
maximum number of iterations of linear solver More... | |
MPI_Comm | comm_ |
SetValuesMode | status_ |
Set value status of the linear system. More... | |
const unsigned | lsize_ |
local number of matrix rows (non-overlapping division of rows) More... | |
unsigned | size_ |
global number of matrix rows, i.e. problem size More... | |
const Distribution * | rows_ds_ |
final distribution of rows of MH matrix More... | |
bool | symmetric_ |
bool | positive_definite_ |
bool | negative_definite_ |
bool | spd_via_symmetric_general_ |
bool | matrix_changed_ |
true if the matrix was changed since the last solve More... | |
bool | rhs_changed_ |
true if the right hand side was changed since the last solve More... | |
Vec | solution_ |
PETSc vector constructed with vb array. More... | |
double * | v_solution_ |
local solution array pointing into Vec solution_ More... | |
bool | own_vec_ |
Indicates if the solution vector has been allocated by this class. More... | |
bool | own_solution_ |
Indicates if the solution array has been allocated by this class. More... | |
double | residual_norm_ |
local solution array pointing into Vec solution_ More... | |
ConstraintVec_ | constraints_ |
std::vector< double > | globalSolution_ |
global solution in numbering for linear system More... | |
Input::Record | in_rec_ |
Private Member Functions | |
template<typename T > | |
T * | makePetscPointer_ (std::vector< T > &array) |
Static Private Attributes | |
static const int | registrar = LinSys_PERMON::get_input_type().size() |
Registrar of class to factory. More... | |
Additional Inherited Members | |
Protected Types inherited from LinSys | |
typedef std::pair< unsigned, double > | Constraint_ |
typedef std::vector< Constraint_ > | ConstraintVec_ |
Static Protected Attributes inherited from LinSys | |
static constexpr double | default_r_tol_ = 1e-7 |
static constexpr double | default_a_tol_ = 1e-11 |
static constexpr double | default_d_tol_ = 10000 |
static constexpr unsigned int | default_max_it_ = 1000 |
Definition at line 39 of file linsys_PERMON.hh.
typedef LinSys LinSys_PERMON::FactoryBaseType |
Definition at line 43 of file linsys_PERMON.hh.
LinSys_PERMON::LinSys_PERMON | ( | const Distribution * | rows_ds, |
const std::string & | params = "" |
||
) |
Definition at line 61 of file linsys_PERMON.cc.
LinSys_PERMON::LinSys_PERMON | ( | LinSys_PERMON & | other | ) |
Copy constructor.
Definition at line 68 of file linsys_PERMON.cc.
LinSys_PERMON::~LinSys_PERMON | ( | ) |
Definition at line 228 of file linsys_PERMON.cc.
|
overridevirtual |
Explicitly compute residual and its norm for current solution.
Implements LinSys.
Definition at line 242 of file linsys_PERMON.cc.
|
inlineoverridevirtual |
Returns information on absolute solver accuracy
Reimplemented from LinSys.
Definition at line 61 of file linsys_PERMON.hh.
|
static |
Definition at line 32 of file linsys_PERMON.cc.
|
overridevirtual |
|
inlineprivate |
Definition at line 79 of file linsys_PERMON.hh.
void LinSys_PERMON::set_inequality | ( | Mat | matrix_ineq, |
Vec | ineq | ||
) |
Definition at line 75 of file linsys_PERMON.cc.
|
overridevirtual |
Solve the system and return convergence reason.
Implements LinSys.
Definition at line 82 of file linsys_PERMON.cc.
|
overridevirtual |
Output the system in the Matlab format possibly with given ordering. Rather we shoud provide output operator <<, since it is more flexible.
Reimplemented from LinSys.
Definition at line 174 of file linsys_PERMON.cc.
|
protected |
PETSc vector of inequality constraint.
Definition at line 97 of file linsys_PERMON.hh.
|
protected |
PETSc matrix of inequality constraint.
Definition at line 96 of file linsys_PERMON.hh.
|
staticprivate |
Registrar of class to factory.
Definition at line 75 of file linsys_PERMON.hh.
|
protected |
Definition at line 100 of file linsys_PERMON.hh.
|
protected |
Definition at line 99 of file linsys_PERMON.hh.