24 #ifndef CG_SOLVER_H_INCLUDED 25 #define CG_SOLVER_H_INCLUDED scalar parallel_apply_preconditioner()
Definition: CG_solver.cpp:197
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:188
scalar residual2()
Definition: CG_solver.cpp:166
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:210
~CG_solver()
Definition: CG_solver.cpp:37
static const int x
Definition: rod_math_v9.h:52
scalar dot(scalar *a, scalar *b)
Definition: CG_solver.cpp:216
scalar conjugate_gradient_residual(SparseMatrixFixedPattern *A, scalar *x, scalar *b)
Definition: CG_solver.cpp:149
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:179
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