Collective Variables Module - Developer Documentation
Loading...
Searching...
No Matches
colvargrid_integrate.h
1#ifndef COLVARGRID_INTEGRATE_H
2#define COLVARGRID_INTEGRATE_H
3
4#include "colvargrid.h"
5
7
9{
10 public:
11
13
14 virtual ~colvargrid_integrate()
15 {}
16
18 colvargrid_integrate(std::vector<colvar *> &colvars,
19 std::shared_ptr<colvar_grid_gradient> gradients);
20
22 colvargrid_integrate(std::shared_ptr<colvar_grid_gradient> gradients);
23
25 int integrate(const int itmax, const cvm::real & tol, cvm::real & err, bool verbose = true);
26
29 void update_div_neighbors(const std::vector<int> &ix);
30
33 void update_div_local(const std::vector<int> &ix);
34
37 void set_div();
38
41 inline void set_zero_minimum() {
43 }
44
47
48
49 protected:
50
51 // Reference to gradient grid
52 std::shared_ptr<colvar_grid_gradient> gradients;
53
55 std::vector<cvm::real> divergence;
56
57// std::vector<cvm::real> inv_lap_diag; // Inverse of the diagonal of the Laplacian; for conditioning
58
62 void get_grad(cvm::real * g, std::vector<int> &ix);
63
65 void nr_linbcg_sym(const std::vector<cvm::real> &b, std::vector<cvm::real> &x,
66 const cvm::real &tol, const int itmax, int &iter, cvm::real &err);
67
69 cvm::real l2norm(const std::vector<cvm::real> &x);
70
72 void atimes(const std::vector<cvm::real> &x, std::vector<cvm::real> &r);
73
74// /// Inversion of preconditioner matrix
75// void asolve(const std::vector<cvm::real> &b, std::vector<cvm::real> &x);
76};
77
78#endif
Class for accumulating a scalar function on a grid.
Definition: colvargrid.h:1283
cvm::real minimum_value() const
Return the lowest value.
Definition: colvargrid.cpp:249
void add_constant(cvm::real const &t)
Add a constant to all elements (fast loop)
Definition: colvargrid.h:671
Integrate (1D, 2D or 3D) gradients.
Definition: colvargrid_integrate.h:9
void nr_linbcg_sym(const std::vector< cvm::real > &b, std::vector< cvm::real > &x, const cvm::real &tol, const int itmax, int &iter, cvm::real &err)
Solve linear system based on CG, valid for symmetric matrices only.
Definition: colvargrid_integrate.cpp:634
void update_div_neighbors(const std::vector< int > &ix)
Update matrix containing divergence and boundary conditions based on new gradient point value,...
Definition: colvargrid_integrate.cpp:112
bool b_smoothed
Flag requesting the use of a smoothed version of the gradient (default: false)
Definition: colvargrid_integrate.h:46
cvm::real l2norm(const std::vector< cvm::real > &x)
l2 norm of a vector
Definition: colvargrid_integrate.cpp:687
void atimes(const std::vector< cvm::real > &x, std::vector< cvm::real > &r)
Multiplication by sparse matrix representing Lagrangian (or its transpose)
Definition: colvargrid_integrate.cpp:218
int integrate(const int itmax, const cvm::real &tol, cvm::real &err, bool verbose=true)
Calculate potential from divergence (in 2D); return number of steps.
Definition: colvargrid_integrate.cpp:63
void get_grad(cvm::real *g, std::vector< int > &ix)
Definition: colvargrid_integrate.cpp:150
std::vector< cvm::real > divergence
Array holding divergence + boundary terms (modified Neumann) if not periodic.
Definition: colvargrid_integrate.h:55
void set_div()
Set matrix containing divergence and boundary conditions based on complete gradient grid.
Definition: colvargrid_integrate.cpp:103
void set_zero_minimum()
Add constant to potential so that its minimum value is zero Useful e.g. for output.
Definition: colvargrid_integrate.h:41
void update_div_local(const std::vector< int > &ix)
Update matrix containing divergence and boundary conditions called by update_div_neighbors and by col...
Definition: colvargrid_integrate.cpp:166
double real
Defining an abstract real number allows to switch precision.
Definition: colvarmodule.h:141