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: