Collective Variables Module - Developer Documentation
Loading...
Searching...
No Matches
colvarbias_abf.h
1// -*- c++ -*-
2
3// This file is part of the Collective Variables module (Colvars).
4// The original version of Colvars and its updates are located at:
5// https://github.com/Colvars/colvars
6// Please update all Colvars source files before making any changes.
7// If you wish to distribute your changes, please submit them to the
8// Colvars repository at GitHub.
9
10#ifndef COLVARBIAS_ABF_H
11#define COLVARBIAS_ABF_H
12
13#include <vector>
14#include <list>
15#include <sstream>
16#include <iomanip>
17#include <memory>
18
19#include "colvarproxy.h"
20#include "colvarbias.h"
21#include "colvargrid.h"
22#include "colvargrid_integrate.h"
23#include "colvar_UIestimator.h"
24
25typedef cvm::real *gradient_t;
26
27
29class colvarbias_abf : public colvarbias {
30
31public:
32
34 colvarbias_abf(char const *key);
36 int init(std::string const &conf) override;
38 ~colvarbias_abf() override;
40 int update() override;
41
42private:
43
45 std::vector<std::string> input_prefix;
46
54
71
82
86 std::vector<cvm::real> max_force;
87
88 // Internal data and methods
89
91 std::vector<int> bin;
93 std::vector<int> force_bin;
95 std::vector<int> z_bin;
96
98 gradient_t system_force;
99
101 std::shared_ptr<colvar_grid_gradient> gradients;
103 std::shared_ptr<colvar_grid_count> samples;
105 std::shared_ptr<colvargrid_integrate> pmf;
107 std::shared_ptr<colvar_grid_gradient> z_gradients;
109 std::shared_ptr<colvar_grid_count> z_samples;
111 std::shared_ptr<colvar_grid_gradient> czar_gradients;
113 std::shared_ptr<colvargrid_integrate> czar_pmf;
114
117
119 int calc_biasing_force(std::vector<cvm::real> &force);
120
123
124 // shared ABF
125 bool shared_on;
126 size_t shared_freq;
127 cvm::step_number shared_last_step;
128
129 // Share between replicas -- may be called independently of update
130 int replica_share() override;
131
132 // Share data needed for CZAR between replicas - called before output only
133 int replica_share_CZAR();
134
136 size_t replica_share_freq() const override;
137
138 // Data just after the last share (start of cycle) in shared ABF
139 std::unique_ptr<colvar_grid_gradient> last_gradients;
140 std::shared_ptr<colvar_grid_count> last_samples;
141 // eABF/CZAR local data last shared
142 std::unique_ptr<colvar_grid_gradient> z_gradients_in;
143 std::shared_ptr<colvar_grid_count> z_samples_in;
144 // ABF data from local replica only in shared ABF
145 std::shared_ptr<colvar_grid_gradient> local_gradients;
146 std::shared_ptr<colvar_grid_count> local_samples;
147 std::unique_ptr<colvargrid_integrate> local_pmf;
148 // eABF/CZAR data collected from all replicas in shared eABF on replica 0
149 // if non-shared, aliases of regular CZAR grids, for output purposes
150 std::shared_ptr<colvar_grid_gradient> global_z_gradients;
151 std::shared_ptr<colvar_grid_count> global_z_samples;
152 std::shared_ptr<colvar_grid_gradient> global_czar_gradients;
153 std::shared_ptr<colvargrid_integrate> global_czar_pmf;
154
155
156 // For Tcl implementation of selection rules.
158 int bin_num() override;
160 int current_bin() override;
162 int bin_count(int bin_index) override;
164 int local_sample_count(int radius) override;
165
168 void write_gradients_samples(const std::string &prefix, bool close = true, bool local = false);
169
172
174 template <class T> int write_grid_to_file(T const *grid,
175 std::string const &name,
176 bool close);
177
178private:
179
181 template <typename OST> OST &write_state_data_template_(OST &os);
182
184 template <typename IST> IST &read_state_data_template_(IST &is);
185
186public:
187
188 std::ostream &write_state_data(std::ostream &os) override;
189
191
192 std::istream &read_state_data(std::istream &is) override;
193
195
196 int write_output_files() override;
197
199 int calc_energy(std::vector<colvarvalue> const *values) override;
200};
201#endif
Definition: colvar_UIestimator.h:215
ABF bias.
Definition: colvarbias_abf.h:29
std::shared_ptr< colvar_grid_count > samples
n-dim grid of number of samples
Definition: colvarbias_abf.h:103
int calc_biasing_force(std::vector< cvm::real > &force)
Calulate the biasing force for the current bin.
Definition: colvarbias_abf.cpp:505
int local_sample_count(int radius) override
Return the average number of samples in a given "radius" around current bin.
int current_bin() override
Calculate the bin index for a given bias.
Definition: colvarbias_abf.cpp:871
int pabf_integrate_iterations
Max number of CG iterations for integrating PMF at on-the-fly pABF updates.
Definition: colvarbias_abf.h:79
int init(std::string const &conf) override
Initializer for ABF bias.
Definition: colvarbias_abf.cpp:27
bool b_CZAR_estimator
Run CZAR estimator?
Definition: colvarbias_abf.h:70
std::vector< cvm::real > max_force
Maximum force to be applied.
Definition: colvarbias_abf.h:86
bool cap_force
Cap the biasing force to be applied? (option maxForce)
Definition: colvarbias_abf.h:84
int write_grid_to_file(T const *grid, std::string const &name, bool close)
Shorthand template used in write_gradient_samples()
Definition: colvarbias_abf.cpp:748
size_t replica_share_freq() const override
Report the frequency at which this bias needs to communicate with replicas.
Definition: colvarbias_abf.cpp:742
std::vector< int > z_bin
Cuurent bin in "actual" coordinate, when running extended Lagrangian dynamics.
Definition: colvarbias_abf.h:95
bool b_czar_window_file
Write CZAR output file for stratified eABF (.zgrad)
Definition: colvarbias_abf.h:62
std::vector< std::string > input_prefix
Base filename(s) for reading previous gradient data (replaces data from restart file)
Definition: colvarbias_abf.h:45
int bin_num() override
Give the total number of bins for a given bias.
Definition: colvarbias_abf.cpp:866
int update_system_force()
Calculate system force for all colvars.
Definition: colvarbias_abf.cpp:470
OST & write_state_data_template_(OST &os)
Generic stream writing function (formatted and not)
Definition: colvarbias_abf.cpp:935
std::shared_ptr< colvar_grid_gradient > z_gradients
n-dim grid: average force on "real" coordinate for eABF z-based estimator
Definition: colvarbias_abf.h:107
int read_gradients_samples()
Read human-readable FE gradients and sample count (if not using restart)
Definition: colvarbias_abf.cpp:889
bool b_integrate
Integrate gradients into a PMF on output.
Definition: colvarbias_abf.h:53
std::shared_ptr< colvargrid_integrate > czar_pmf
n-dim grid of CZAR pmf (dimension 1 to 3)
Definition: colvarbias_abf.h:113
cvm::real integrate_tol
Tolerance for integrating PMF at startup and for file output.
Definition: colvarbias_abf.h:77
std::shared_ptr< colvar_grid_gradient > gradients
n-dim grid of free energy gradients
Definition: colvarbias_abf.h:101
size_t full_samples
Number of samples per bin before applying the full biasing force.
Definition: colvarbias_abf.h:56
std::ostream & write_state_data(std::ostream &os) override
Write all mutable data not already written by get_state_params() to a formatted stream.
Definition: colvarbias_abf.cpp:967
cvm::step_number history_last_step
Latest absolute time step at which history files were written.
Definition: colvarbias_abf.h:60
std::vector< int > force_bin
Current bin in force grid.
Definition: colvarbias_abf.h:93
gradient_t system_force
Measured instantaneous system force.
Definition: colvarbias_abf.h:98
int update() override
Per-timestep update of ABF bias.
Definition: colvarbias_abf.cpp:333
cvm::real smoothing_factor(cvm::real weight)
Calulate the smoothing factor to apply to biasing forces for given local count.
Definition: colvarbias_abf.cpp:491
bool update_bias
Adapt the bias at each time step (as opposed to keeping it constant)?
Definition: colvarbias_abf.h:48
int bin_count(int bin_index) override
Give the count at a given bin index.
Definition: colvarbias_abf.cpp:876
cvm::real pabf_integrate_tol
Tolerance for integrating PMF at on-the-fly pABF updates.
Definition: colvarbias_abf.h:81
bool b_UI_estimator
Run UI estimator?
Definition: colvarbias_abf.h:68
std::vector< int > bin
Current bin in sample grid.
Definition: colvarbias_abf.h:91
size_t history_freq
Number of timesteps between recording data in history files (if non-zero)
Definition: colvarbias_abf.h:64
std::shared_ptr< colvar_grid_count > z_samples
n-dim grid of number of samples on "real" coordinate for eABF z-based estimator
Definition: colvarbias_abf.h:109
std::istream & read_state_data(std::istream &is) override
Read all mutable data not already set by set_state_params() from a formatted stream.
Definition: colvarbias_abf.cpp:1047
IST & read_state_data_template_(IST &is)
Generic stream readingx function (formatted and not)
Definition: colvarbias_abf.cpp:979
int integrate_iterations
Max number of CG iterations for integrating PMF at startup and for file output.
Definition: colvarbias_abf.h:75
int write_output_files() override
Write any output files that this bias may have (e.g. PMF files)
Definition: colvarbias_abf.cpp:1059
UIestimator::UIestimator eabf_UI
Umbrella Integration estimator of free energy from eABF.
Definition: colvarbias_abf.h:66
std::shared_ptr< colvargrid_integrate > pmf
n-dim grid of pmf (dimension 1 to 3)
Definition: colvarbias_abf.h:105
void write_gradients_samples(const std::string &prefix, bool close=true, bool local=false)
Definition: colvarbias_abf.cpp:787
std::shared_ptr< colvar_grid_gradient > czar_gradients
n-dim grid containing CZAR estimatr of "real" free energy gradients
Definition: colvarbias_abf.h:111
int pabf_freq
Frequency for updating pABF PMF (if zero, pABF is not used)
Definition: colvarbias_abf.h:73
size_t min_samples
Number of samples per bin before applying a scaled-down biasing force.
Definition: colvarbias_abf.h:58
~colvarbias_abf() override
Default destructor for ABF bias.
Definition: colvarbias_abf.cpp:325
bool hide_Jacobian
Definition: colvarbias_abf.h:51
int calc_energy(std::vector< colvarvalue > const *values) override
Calculate the bias energy for 1D ABF.
Definition: colvarbias_abf.cpp:1103
Collective variable bias, base class.
Definition: colvarbias.h:23
std::string name
Name of this bias.
Definition: colvarbias.h:27
double real
Defining an abstract real number allows to switch precision.
Definition: colvarmodule.h:141
long long step_number
Use a 64-bit integer to store the step number.
Definition: colvarmodule.h:138
Definition: colvars_memstream.h:30
Colvars proxy classes.