24 #ifndef CG_SOLVER_H_INCLUDED 25 #define CG_SOLVER_H_INCLUDED scalar parallel_apply_preconditioner()
Definition: CG_solver.cpp:198
int init(int N, scalar tol, int max_num_iterations)
Definition: CG_solver.cpp:54
int max_num_iterations
Maximum number of iterations before giving up.
Definition: CG_solver.h:51
void parallel_vector_add(scalar *v1, scalar a, scalar *v2)
Definition: CG_solver.cpp:189
scalar residual2()
Definition: CG_solver.cpp:167
scalar * r
Vector needed for use by conjugate gradient solver.
Definition: CG_solver.h:56
scalar * d
Vector needed for use by conjugate gradient solver.
Definition: CG_solver.h:55
void zero(scalar *v)
Definition: CG_solver.cpp:211
~CG_solver()
Definition: CG_solver.cpp:37
scalar dot(scalar *a, scalar *b)
Definition: CG_solver.cpp:217
scalar conjugate_gradient_residual(SparseMatrixFixedPattern *A, scalar *x, scalar *b)
Definition: CG_solver.cpp:150
Definition: SparseMatrixFixedPattern.h:36
CG_solver()
Definition: CG_solver.cpp:26
int solve(SparseMatrixFixedPattern *A, scalar *x, scalar *b)
Definition: CG_solver.cpp:85
Definition: CG_solver.h:34
scalar * inv_M
The preconditioner matrix (inverse of the diagonal)
Definition: CG_solver.h:53
scalar tol
The convergence tolerance threshold.
Definition: CG_solver.h:49
void parallel_vector_add_self(scalar *v1, scalar a, scalar *v2)
Definition: CG_solver.cpp:180
int N
The number of unknowns.
Definition: CG_solver.h:47
scalar * q
Vector needed for use by conjugate gradient solver.
Definition: CG_solver.h:57
double scalar
Definition: mat_vec_types.h:36
scalar * s
Vector needed for use by conjugate gradient solver.
Definition: CG_solver.h:58