Flow123d
jenkins-Flow123d-linux-release-multijob-282
|
#include <linsys_PETSC.hh>
Classes | |
struct | PetscScalar2Double_ |
Public Member Functions | |
LinSys_PETSC (const Distribution *rows_ds) | |
LinSys_PETSC (LinSys_PETSC &other) | |
const Distribution * | get_ds () |
const Mat * | get_matrix () |
const Vec * | get_rhs () |
PetscErrorCode | set_matrix (Mat &matrix, MatStructure str) |
PetscErrorCode | set_rhs (Vec &rhs) |
PetscErrorCode | mat_zero_entries () |
PetscErrorCode | rhs_zero_entries () |
void | start_allocation () |
void | start_add_assembly () |
void | start_insert_assembly () |
void | mat_set_values (int nrow, int *rows, int ncol, int *cols, double *vals) |
void | rhs_set_values (int nrow, int *rows, double *vals) |
void | preallocate_values (int nrow, int *rows, int ncol, int *cols) |
void | preallocate_matrix () |
void | finish_assembly () |
void | finish_assembly (MatAssemblyType assembly_type) |
void | apply_constrains (double scalar=1.) |
void | set_initial_guess_nonzero (bool set_nonzero=true) |
int | solve () |
double | get_absolute_accuracy () |
void | view () |
void | set_from_input (const Input::Record in_rec) |
double | get_solution_precision () |
~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 (double *sol_array) |
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_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 Attributes | |
static Input::Type::Record | input_type |
Static Public Attributes inherited from LinSys | |
static Input::Type::AbstractRecord | input_type |
Protected Attributes | |
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... | |
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_ |
Protected Attributes inherited from LinSys | |
double | r_tol_ |
double | a_tol_ |
int | max_it_ |
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_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) |
Additional Inherited Members | |
Public Types inherited from LinSys | |
enum | SetValuesMode { INSERT =INSERT_VALUES, ADD =ADD_VALUES, ALLOCATE, DONE, NONE } |
Protected Types inherited from LinSys | |
typedef std::pair< unsigned, double > | Constraint_ |
typedef std::vector< Constraint_ > | ConstraintVec_ |
Definition at line 42 of file linsys_PETSC.hh.
LinSys_PETSC::LinSys_PETSC | ( | const Distribution * | rows_ds | ) |
Definition at line 50 of file linsys_PETSC.cc.
LinSys_PETSC::LinSys_PETSC | ( | LinSys_PETSC & | other | ) |
Copy constructor.
Definition at line 69 of file linsys_PETSC.cc.
LinSys_PETSC::~LinSys_PETSC | ( | ) |
Definition at line 401 of file linsys_PETSC.cc.
|
virtual |
Apply constrains to assembled matrix. Constrains are given by pairs: global row index, value. i.e. typedef pair<unsigned int, double> Constrain;
What is th meaning of ( const double factor ) form Cambridge code?
Implements LinSys.
Definition at line 248 of file linsys_PETSC.cc.
|
virtual |
Finish assembly of the whole system. For PETSC this should call MatEndAssembly with MAT_FINAL_ASSEMBLY
Implements LinSys.
Definition at line 223 of file linsys_PETSC.cc.
void LinSys_PETSC::finish_assembly | ( | MatAssemblyType | assembly_type | ) |
Definition at line 229 of file linsys_PETSC.cc.
|
inlinevirtual |
Returns information on absolute solver accuracy
Reimplemented from LinSys.
Definition at line 124 of file linsys_PETSC.hh.
|
inline |
Returns whole Distribution class for distribution of the solution.
Definition at line 58 of file linsys_PETSC.hh.
|
inlinevirtual |
Returns PETSC matrix (only for PETSC solvers)
If matrix is changed, method set_matrix_changed() must be called. Example: MatDiagonalSet(schur->get_matrix(), new_diagonal, ADD_VALUES); schur->set_matrix_changed();
Reimplemented from LinSys.
Definition at line 63 of file linsys_PETSC.hh.
|
inlinevirtual |
Returns RHS vector (only for PETSC solvers)
If vector is changed, method set_rhs_changed() must be called. Example: VecScale(schur->get_rhs(), -1.0); schur->set_rhs_changed();
Reimplemented from LinSys.
Definition at line 68 of file linsys_PETSC.hh.
|
virtual |
Get precision of solving
Implements LinSys.
Reimplemented in SchurComplement.
Definition at line 424 of file linsys_PETSC.cc.
|
inlineprivate |
|
virtual |
Assembly full rectangular submatrix into the system matrix. Should be virtual, implemented differently in particular solvers.
Implements LinSys.
Definition at line 123 of file linsys_PETSC.cc.
|
inlinevirtual |
Clears entries of the matrix
Reimplemented from LinSys.
Definition at line 85 of file linsys_PETSC.hh.
void LinSys_PETSC::preallocate_matrix | ( | ) |
void LinSys_PETSC::preallocate_values | ( | int | nrow, |
int * | rows, | ||
int | ncol, | ||
int * | cols | ||
) |
|
virtual |
Set values of the system right-hand side. Should be virtual, implemented differently in particular solvers.
Implements LinSys.
Definition at line 142 of file linsys_PETSC.cc.
|
inlinevirtual |
Clears entries of the right-hand side
Reimplemented from LinSys.
Definition at line 91 of file linsys_PETSC.hh.
|
virtual |
Sets specific parameters of LinSys_PETSC defined by user in input file and used to calculate
Reimplemented from LinSys.
Definition at line 411 of file linsys_PETSC.cc.
void LinSys_PETSC::set_initial_guess_nonzero | ( | bool | set_nonzero = true | ) |
Definition at line 293 of file linsys_PETSC.cc.
|
inlinevirtual |
Sets PETSC matrix (only for PETSC solvers)
Reimplemented from LinSys.
Definition at line 73 of file linsys_PETSC.hh.
|
inlinevirtual |
Sets RHS vector (only for PETSC solvers)
Reimplemented from LinSys.
Definition at line 79 of file linsys_PETSC.hh.
|
virtual |
Solve the system and return convergence reason.
Implements LinSys.
Reimplemented in SchurComplement.
Definition at line 299 of file linsys_PETSC.cc.
|
virtual |
Switch linear system into adding assembly. (the only one supported by triplets ??)
Reimplemented from LinSys.
Definition at line 87 of file linsys_PETSC.cc.
|
virtual |
Switch linear system into allocating assembly. (only for PETSC_MPIAIJ_preallocate_by_assembly)
Reimplemented from LinSys.
Definition at line 78 of file linsys_PETSC.cc.
|
virtual |
Switch linear system into insert assembly. (not currently used)
Reimplemented from LinSys.
Definition at line 105 of file linsys_PETSC.cc.
|
virtual |
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 375 of file linsys_PETSC.cc.
|
protected |
flag for starting from nonzero guess
Definition at line 161 of file linsys_PETSC.hh.
|
static |
Definition at line 46 of file linsys_PETSC.hh.
|
protected |
Petsc matrix of the problem.
Definition at line 163 of file linsys_PETSC.hh.
|
protected |
Vectors for counting non-zero entries in off-diagonal block.
Definition at line 169 of file linsys_PETSC.hh.
|
protected |
Vectors for counting non-zero entries in diagonal block.
Definition at line 168 of file linsys_PETSC.hh.
|
protected |
command-line-like options for the PETSc solver
Definition at line 159 of file linsys_PETSC.hh.
|
protected |
PETSc vector constructed with vx array.
Definition at line 164 of file linsys_PETSC.hh.
|
protected |
Definition at line 171 of file linsys_PETSC.hh.
|
protected |
local RHS array pointing to Vec rhs_
Definition at line 166 of file linsys_PETSC.hh.