CArl
Code Arlequin / C++ implementation
PETSC_matrix_operations.h
Go to the documentation of this file.
1 /*
2  * PETSC_matrix_operations.h
3  *
4  * Created on: Jan 29, 2016
5  * Author: Thiago Milanetto Schlittler
6  */
7 
8 #ifndef COMMON_LIBMESH_CODE_PETSC_MATRIX_OPERATIONS_H_
9 #define COMMON_LIBMESH_CODE_PETSC_MATRIX_OPERATIONS_H_
10 
11 #include "carl_headers.h"
12 
13 namespace carl
14 {
15 
16 void lump_matrix( libMesh::PetscMatrix<libMesh::Number>& matrixInput,
17  libMesh::PetscMatrix<libMesh::Number>& matrixOutput);
18 
19 void lump_matrix_and_invert( libMesh::PetscMatrix<libMesh::Number>& matrixInput,
20  libMesh::PetscMatrix<libMesh::Number>& matrixOutput);
21 
22 void lump_matrix_and_invert( libMesh::PetscMatrix<libMesh::Number>& matrixInput,
23  libMesh::PetscVector<libMesh::Number>& vecOutput);
24 
25 void print_matrix(libMesh::PetscMatrix<libMesh::Number>& CouplingTestMatrix);
26 
27 void print_matrix_dim(libMesh::PetscMatrix<libMesh::Number>& CouplingTestMatrix, bool bDetailed = false);
28 
29 void print_matrix_info(libMesh::PetscMatrix<libMesh::Number>& InputMatrix, std::ostream & os=libMesh::out);
30 
31 void print_matrix_col_line_sum(libMesh::PetscMatrix<libMesh::Number>& CouplingTestMatrix, const std::string name_base);
32 
33 void print_matrix_matlab(libMesh::PetscMatrix<libMesh::Number>& CouplingTestMatrix, const std::string name_base);
34 
35 void solve_linear_PETSC( libMesh::PetscMatrix<libMesh::Number>& A,
36  libMesh::PetscVector<libMesh::Number>& b,
37  libMesh::PetscVector<libMesh::Number>& x,
38  KSP& ksp, PC& pc);
39 
40 void check_coupling_matrix( libMesh::PetscMatrix<libMesh::Number>& CouplingTestMatrix ,
41  libMesh::Mesh& IntersectionMesh,
42  libMesh::Real CouplingScale,
43  const std::string matrixtype,
44  int n_var = 3);
45 
46 void write_PETSC_vector( libMesh::PetscVector<libMesh::Number>& input_vec,
47  const std::string& filename, int dim = 1);
48 
49 void read_PETSC_vector( libMesh::PetscVector<libMesh::Number>& input_vec,
50  const std::string& filename);
51 
52 void print_PETSC_vector( libMesh::PetscVector<libMesh::Number>& input_vec,
53  const std::string& filename);
54 
55 void write_PETSC_vector( Vec input_vec, const std::string& filename, int rank, MPI_Comm comm = PETSC_COMM_WORLD, int dim = 1);
56 
57 void read_PETSC_vector( Vec input_vec, const std::string& filename, MPI_Comm comm = PETSC_COMM_WORLD);
58 
59 void write_PETSC_matrix( Mat input_mat, const std::string& filename, int rank, MPI_Comm comm = PETSC_COMM_WORLD, int dim = 1);
60 
61 void write_PETSC_matrix(libMesh::PetscMatrix<libMesh::Number>& input_mat,
62  const std::string& filename, int dim = 1);
63 
64 void read_PETSC_matrix( Mat input_mat, const std::string& filename, MPI_Comm comm = PETSC_COMM_WORLD);
65 
66 void read_PETSC_matrix(libMesh::PetscMatrix<libMesh::Number>& input_mat,
67  const std::string& filename);
68 
69 void write_PETSC_vector_MATLAB( Vec input_vec, const std::string& filename, MPI_Comm comm = PETSC_COMM_WORLD);
70 
71 void write_PETSC_matrix_MATLAB( Mat input_mat, const std::string& filename, MPI_Comm comm = PETSC_COMM_WORLD);
72 
73 void attach_rigid_body_mode_vectors(libMesh::PetscMatrix<libMesh::Number>& mat_sys,
74  const std::string& filename_base, int nb_of_vecs, int dimension );
75 
76 void create_PETSC_dense_matrix_from_vectors(const Vec *vecs_in, int nb_vecs, Mat& matrix_out);
77 
78 void PETSC_invert_dense_matrix(Mat& matrix_in, Mat& matrix_out);
79 
80 void PETSC_MatMultScale_Bcast(Mat mat_seq, Vec vec_seq_in, Vec vec_seq_out, double a_const);
81 }
82 
83 
84 
85 #endif /* COMMON_LIBMESH_CODE_PETSC_MATRIX_OPERATIONS_H_ */
void check_coupling_matrix(libMesh::PetscMatrix< libMesh::Number > &CouplingTestMatrix, libMesh::Mesh &IntersectionMesh, libMesh::Real CouplingScale, const std::string matrixtype, int n_var=3)
void lump_matrix_and_invert(libMesh::PetscMatrix< libMesh::Number > &matrixInput, libMesh::PetscMatrix< libMesh::Number > &matrixOutput)
void print_matrix_col_line_sum(libMesh::PetscMatrix< libMesh::Number > &CouplingTestMatrix, const std::string name_base)
void write_PETSC_vector(libMesh::PetscVector< libMesh::Number > &input_vec, const std::string &filename, int dim=1)
void create_PETSC_dense_matrix_from_vectors(const Vec *vecs_in, int nb_vecs, Mat &matrix_out)
void solve_linear_PETSC(libMesh::PetscMatrix< libMesh::Number > &A, libMesh::PetscVector< libMesh::Number > &b, libMesh::PetscVector< libMesh::Number > &x, KSP &ksp, PC &pc)
void attach_rigid_body_mode_vectors(libMesh::PetscMatrix< libMesh::Number > &mat_sys, const std::string &filename_base, int nb_of_vecs, int dimension)
void lump_matrix(libMesh::PetscMatrix< libMesh::Number > &matrixInput, libMesh::PetscMatrix< libMesh::Number > &matrixOutput)
void PETSC_MatMultScale_Bcast(Mat mat_seq, Vec vec_seq_in, Vec vec_seq_out, double a_const)
void PETSC_invert_dense_matrix(Mat &matrix_in, Mat &matrix_out)
void read_PETSC_matrix(Mat input_mat, const std::string &filename, MPI_Comm comm=PETSC_COMM_WORLD)
void print_matrix_info(libMesh::PetscMatrix< libMesh::Number > &InputMatrix, std::ostream &os=libMesh::out)
void print_matrix_matlab(libMesh::PetscMatrix< libMesh::Number > &CouplingTestMatrix, const std::string name_base)
void write_PETSC_matrix_MATLAB(Mat input_mat, const std::string &filename, MPI_Comm comm=PETSC_COMM_WORLD)
void print_matrix_dim(libMesh::PetscMatrix< libMesh::Number > &CouplingTestMatrix, bool bDetailed=false)
void print_matrix(libMesh::PetscMatrix< libMesh::Number > &CouplingTestMatrix)
void read_PETSC_vector(libMesh::PetscVector< libMesh::Number > &input_vec, const std::string &filename)
void write_PETSC_vector_MATLAB(Vec input_vec, const std::string &filename, MPI_Comm comm=PETSC_COMM_WORLD)
void print_PETSC_vector(libMesh::PetscVector< libMesh::Number > &input_vec, const std::string &filename)
void write_PETSC_matrix(Mat input_mat, const std::string &filename, int rank, MPI_Comm comm=PETSC_COMM_WORLD, int dim=1)