#include <NoMassCGSolver.h>
Public Member Functions | |
NoMassCGSolver () | |
~NoMassCGSolver () | |
int | init (int num_nodes, int num_elements, mesh_node *node, tetra_element_linear *elem, SimulationParams *params, int num_pinned_nodes, int *pinned_nodes_list, set< int > bsite_pinned_node_list) |
int | solve (vector3 *x) |
void | print_matrices (vector3 *force) |
Public Member Functions inherited from Solver | |
Solver () | |
virtual | ~Solver () |
Private Member Functions | |
scalar | conjugate_gradient_residual_assume_x_zero (vector3 *b) |
scalar | residual2 () |
scalar | modx (vector3 *x) |
scalar | get_alpha_denominator () |
scalar | parallel_apply_preconditioner () |
void | check (vector3 *x) |
void | apply_matrix (scalar *in, scalar *result) |
Private Attributes | |
SparseMatrixFixedPattern * | V |
scalar | epsilon2 |
int | i_max |
int | num_rows |
int | num_nodes |
scalar * | preconditioner |
vector3 * | r |
vector3 * | p |
vector3 * | z |
vector3 * | q |
vector3 * | f |
scalar | one |
NoMassCGSolver::NoMassCGSolver | ( | ) |
Constructor
NoMassCGSolver::~NoMassCGSolver | ( | ) |
Destructor
Implements Solver.
|
private |
Referenced by solve().
|
virtual |
Builds a sparse matrix pattern for blob viscosity matrix from initial structure. Doesn't build the matrix though, just the key and whatnot
Implements Solver.
void NoMassCGSolver::print_matrices | ( | vector3 * | force | ) |
|
virtual |
Adds values to sparse viscosity matrix and uses it to solve the system Kv = f using conjugate gradient
Implements Solver.
|
private |
Error tolerance threshold (squared) to determine when solution has converged
Referenced by init(), NoMassCGSolver(), solve(), and ~NoMassCGSolver().
|
private |
Referenced by check(), conjugate_gradient_residual_assume_x_zero(), init(), NoMassCGSolver(), residual2(), and ~NoMassCGSolver().
|
private |
Maximum number of iterations the solver should use before giving up (as solution is not converging)
Referenced by init(), NoMassCGSolver(), solve(), and ~NoMassCGSolver().
|
private |
Number of nodes
Referenced by check(), conjugate_gradient_residual_assume_x_zero(), get_alpha_denominator(), init(), modx(), NoMassCGSolver(), parallel_apply_preconditioner(), residual2(), solve(), and ~NoMassCGSolver().
|
private |
Number of rows in V (3 * num_nodes due to x, y and z)
Referenced by init(), NoMassCGSolver(), and ~NoMassCGSolver().
|
private |
Referenced by conjugate_gradient_residual_assume_x_zero(), get_alpha_denominator(), init(), NoMassCGSolver(), solve(), and ~NoMassCGSolver().
|
private |
Jacobi preconditioner (inverse of the viscosity matrix diagonal)
Referenced by conjugate_gradient_residual_assume_x_zero(), init(), NoMassCGSolver(), parallel_apply_preconditioner(), solve(), and ~NoMassCGSolver().
|
private |
Referenced by get_alpha_denominator(), init(), NoMassCGSolver(), solve(), and ~NoMassCGSolver().
|
private |
Work vectors
Referenced by conjugate_gradient_residual_assume_x_zero(), init(), NoMassCGSolver(), parallel_apply_preconditioner(), residual2(), solve(), and ~NoMassCGSolver().
|
private |
Pointer to the viscosity matrix that will be created
Referenced by check(), get_alpha_denominator(), init(), NoMassCGSolver(), print_matrices(), solve(), and ~NoMassCGSolver().
|
private |