NoMassCGSolver Class Reference

#include <NoMassCGSolver.h>

Inheritance diagram for NoMassCGSolver:
Solver

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

SparseMatrixFixedPatternV
 
scalar epsilon2
 
int i_max
 
int num_rows
 
int num_nodes
 
scalarpreconditioner
 
vector3r
 
vector3p
 
vector3z
 
vector3q
 
vector3f
 
scalar one
 

Constructor & Destructor Documentation

§ NoMassCGSolver()

NoMassCGSolver::NoMassCGSolver ( )

Constructor

§ ~NoMassCGSolver()

NoMassCGSolver::~NoMassCGSolver ( )

Destructor

Member Function Documentation

§ apply_matrix()

void NoMassCGSolver::apply_matrix ( scalar in,
scalar result 
)
inlineprivatevirtual

Implements Solver.

§ check()

void NoMassCGSolver::check ( vector3 x)
private

§ conjugate_gradient_residual_assume_x_zero()

scalar NoMassCGSolver::conjugate_gradient_residual_assume_x_zero ( vector3 b)
private

Referenced by solve().

§ get_alpha_denominator()

scalar NoMassCGSolver::get_alpha_denominator ( )
private

Referenced by solve().

§ init()

int NoMassCGSolver::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 
)
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.

§ modx()

scalar NoMassCGSolver::modx ( vector3 x)
private

§ parallel_apply_preconditioner()

scalar NoMassCGSolver::parallel_apply_preconditioner ( )
private

Referenced by solve().

§ print_matrices()

void NoMassCGSolver::print_matrices ( vector3 force)

§ residual2()

scalar NoMassCGSolver::residual2 ( )
private

Referenced by solve().

§ solve()

int NoMassCGSolver::solve ( vector3 x)
virtual

Adds values to sparse viscosity matrix and uses it to solve the system Kv = f using conjugate gradient

Implements Solver.

Field Documentation

§ epsilon2

scalar NoMassCGSolver::epsilon2
private

Error tolerance threshold (squared) to determine when solution has converged

Referenced by init(), NoMassCGSolver(), solve(), and ~NoMassCGSolver().

§ f

§ i_max

int NoMassCGSolver::i_max
private

Maximum number of iterations the solver should use before giving up (as solution is not converging)

Referenced by init(), NoMassCGSolver(), solve(), and ~NoMassCGSolver().

§ num_nodes

§ num_rows

int NoMassCGSolver::num_rows
private

Number of rows in V (3 * num_nodes due to x, y and z)

Referenced by init(), NoMassCGSolver(), and ~NoMassCGSolver().

§ one

scalar NoMassCGSolver::one
private

Unchanging memory locoation

Referenced by init().

§ p

§ preconditioner

scalar* NoMassCGSolver::preconditioner
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().

§ q

vector3 * NoMassCGSolver::q
private

§ r

§ V

SparseMatrixFixedPattern* NoMassCGSolver::V
private

Pointer to the viscosity matrix that will be created

Referenced by check(), get_alpha_denominator(), init(), NoMassCGSolver(), print_matrices(), solve(), and ~NoMassCGSolver().

§ z


The documentation for this class was generated from the following files: