Collective Variables Module - Developer Documentation
|
Public Member Functions | |
componentDisabled (std::string const &) | |
virtual void | calc_value () |
Calculate the variable. | |
virtual void | calc_gradients () |
Calculate the atomic gradients, to be reused later in order to apply forces. | |
virtual void | apply_force (colvarvalue const &) |
Apply the collective variable force, by communicating the atomic forces to the simulation program (Note: the ft member is not altered by this function) More... | |
Public Member Functions inherited from colvar::cvc | |
cvc (std::string const &conf) | |
Constructor. More... | |
int | set_function_type (std::string const &type) |
Set the value of function_type and its dependencies. | |
virtual int | init (std::string const &conf) |
virtual int | init_dependencies () |
Initialize dependency tree. | |
cvm::atom_group * | parse_group (std::string const &conf, char const *group_key, bool optional=false) |
Within the constructor, make a group parse its own options from the provided configuration string Returns reference to new group. | |
virtual int | init_total_force_params (std::string const &conf) |
Parse options pertaining to total force calculation. | |
int | setup () |
After construction, set data related to dependency handling. | |
cvc () | |
Default constructor (used when colvar::cvc objects are declared within other ones) | |
virtual | ~cvc () |
Destructor. | |
virtual const std::vector< feature * > & | features () const |
Implementation of the feature list accessor for colvar. | |
virtual std::vector< feature * > & | modify_features () |
virtual std::vector< std::vector< int > > | get_atom_lists () |
Get vector of vectors of atom IDs for all atom groups. | |
virtual void | read_data () |
Obtain data needed for the calculation for the backend. | |
void | calc_fit_gradients () |
Calculate the atomic fit gradients. | |
virtual void | debug_gradients () |
Calculate finite-difference gradients alongside the analytical ones, for each Cartesian component. | |
virtual void | collect_gradients (std::vector< int > const &atom_ids, std::vector< cvm::rvector > &atomic_gradients) |
Calculate atomic gradients and add them to the corresponding item in gradient vector May be overridden by CVCs that do not store their gradients in the classic way, see dihedPC. | |
virtual void | calc_force_invgrads () |
Calculate the total force from the system using the inverse atomic gradients. | |
virtual void | calc_Jacobian_derivative () |
Calculate the divergence of the inverse atomic gradients. | |
colvarvalue const & | value () const |
Return the previously calculated value. | |
colvarvalue const & | total_force () const |
Return the previously calculated total force. | |
colvarvalue const & | Jacobian_derivative () const |
Return the previously calculated divergence of the inverse atomic gradients. | |
virtual cvm::real | dist2 (colvarvalue const &x1, colvarvalue const &x2) const |
Square distance between x1 and x2 (can be redefined to transparently implement constraints, symmetries and periodicities) More... | |
virtual colvarvalue | dist2_lgrad (colvarvalue const &x1, colvarvalue const &x2) const |
Gradient(with respect to x1) of the square distance (can be redefined to transparently implement constraints, symmetries and periodicities) | |
virtual colvarvalue | dist2_rgrad (colvarvalue const &x1, colvarvalue const &x2) const |
Gradient(with respect to x2) of the square distance (can be redefined to transparently implement constraints, symmetries and periodicities) | |
virtual void | wrap (colvarvalue &x_unwrapped) const |
Wrap value (for periodic/symmetric cvcs) | |
void | register_atom_group (cvm::atom_group *ag) |
Store a pointer to new atom group, and list as child for dependencies. | |
virtual colvarvalue const * | get_param_grad (std::string const ¶m_name) |
Pointer to the gradient of parameter param_name. | |
virtual int | set_param (std::string const ¶m_name, void const *new_value) |
Set the named parameter to the given value. | |
void | set_value (colvarvalue const &new_value) |
Public Member Functions inherited from colvarparse | |
colvarparse () | |
Default constructor. | |
colvarparse (const std::string &conf) | |
Constructor that stores the object's config string. | |
void | clear () |
Set the object ready to parse a new configuration string. | |
void | set_string (std::string const &conf) |
Set a new config string for this object. | |
~colvarparse () override | |
Default destructor. | |
std::string const & | get_config () const |
Get the configuration string (includes comments) | |
int | check_keywords (std::string &conf, char const *key) |
Check that all the keywords within "conf" are in the list of allowed keywords; this will invoke strip_values() first and then loop over all words. | |
void | clear_keyword_registry () |
Use this after parsing a config string (note that check_keywords() calls it already) | |
bool | get_keyval (std::string const &conf, char const *key, int &value, int const &def_value=0, Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, size_t &value, size_t const &def_value=0, Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, long &value, long const &def_value=0, Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, cvm::step_number &value, cvm::step_number const &def_value=0, Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, std::string &value, std::string const &def_value=std::string(""), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, cvm::real &value, cvm::real const &def_value=0.0, Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, cvm::rvector &value, cvm::rvector const &def_value=cvm::rvector(), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, cvm::quaternion &value, cvm::quaternion const &def_value=cvm::quaternion(), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, colvarvalue &value, colvarvalue const &def_value=colvarvalue(colvarvalue::type_notset), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, bool &value, bool const &def_value=false, Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, std::vector< int > &values, std::vector< int > const &def_values=std::vector< int >(0, 0), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, std::vector< size_t > &values, std::vector< size_t > const &def_values=std::vector< size_t >(0, 0), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, std::vector< long > &values, std::vector< long > const &def_values=std::vector< long >(0, 0), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, std::vector< std::string > &values, std::vector< std::string > const &def_values=std::vector< std::string >(0, std::string("")), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, std::vector< cvm::real > &values, std::vector< cvm::real > const &def_values=std::vector< cvm::real >(0, 0.0), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, std::vector< cvm::rvector > &values, std::vector< cvm::rvector > const &def_values=std::vector< cvm::rvector >(0, cvm::rvector()), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, std::vector< cvm::quaternion > &values, std::vector< cvm::quaternion > const &def_values=std::vector< cvm::quaternion >(0, cvm::quaternion()), Parse_Mode const parse_mode=parse_normal) |
bool | get_keyval (std::string const &conf, char const *key, std::vector< colvarvalue > &values, std::vector< colvarvalue > const &def_values=std::vector< colvarvalue >(0, colvarvalue(colvarvalue::type_notset)), Parse_Mode const parse_mode=parse_normal) |
bool | key_lookup (std::string const &conf, char const *key, std::string *data=nullptr, size_t *save_pos=nullptr) |
Low-level function for parsing configuration strings; automatically adds the requested keyword to the list of valid ones. More... | |
std::istream & | read_config_line (std::istream &is, std::string &line) |
Reads a configuration line, adds it to config_string, and returns the stream. More... | |
template<> | |
int | _get_keyval_scalar_value_ (std::string const &key_str, std::string const &data, bool &value, bool const &) |
template<> | |
int | _get_keyval_scalar_novalue_ (std::string const &key_str, bool &value, Parse_Mode const &parse_mode) |
Public Member Functions inherited from colvarparams | |
int | param_exists (std::string const ¶m_name) |
Whether the parameter param_name exists. | |
virtual std::vector< std::string > | get_param_names () |
Get a copy of the names of registered parameters. | |
virtual std::vector< std::string > | get_param_grad_names () |
Get a copy of the names of registered parameter gradients. | |
virtual void const * | get_param_ptr (std::string const ¶m_name) |
Pointer to the parameter param_name. | |
virtual void const * | get_param_grad_ptr (std::string const ¶m_name) |
Pointer to the gradient of parameter param_name. | |
virtual cvm::real | get_param (std::string const ¶m_name) |
Value of the parameter param_name (must be a scalar) | |
Public Member Functions inherited from colvardeps | |
int | get_time_step_factor () const |
returns time_step_factor | |
void | init_feature (int feature_id, const char *description, feature_type type) |
Pair a numerical feature ID with a description and type. | |
bool | is_not_set (int id) |
bool | is_dynamic (int id) |
bool | is_static (int id) |
bool | is_user (int id) |
void | add_child (colvardeps *child) |
void | remove_child (colvardeps *child) |
void | remove_all_children () |
bool | is_enabled (int f=f_cv_active) const |
bool | is_available (int f=f_cv_active) const |
void | provide (int feature_id, bool truefalse=true) |
void | set_enabled (int feature_id, bool truefalse=true) |
Enable or disable, depending on flag value. | |
int | enable (int f, bool dry_run=false, bool toplevel=true) |
int | disable (int f) |
void | free_children_deps () |
void | restore_children_deps () |
re-enable children features (to be used when object becomes active) | |
int | decr_ref_count (int f) |
virtual void | do_feature_side_effects (int) |
void | require_feature_self (int f, int g) |
Make feature f require feature g within the same object. | |
void | exclude_feature_self (int f, int g) |
Make features f and g mutually exclusive within the same object. | |
void | require_feature_children (int f, int g) |
Make feature f require feature g within children. | |
void | require_feature_alt (int f, int g, int h) |
Make feature f require either g or h within the same object. | |
void | require_feature_alt (int f, int g, int h, int i) |
Make feature f require any of g, h, or i within the same object. | |
void | require_feature_alt (int f, int g, int h, int i, int j) |
Make feature f require any of g, h, i, or j within the same object. | |
void | print_state () |
print all enabled features and those of children, for debugging | |
void | check_enabled (int f, std::string const &reason) const |
Check that a feature is enabled, raising COLVARS_BUG_ERROR if not. | |
Additional Inherited Members | |
Public Types inherited from colvarparse | |
enum | Parse_Mode { parse_null = 0, parse_echo = (1<<1), parse_echo_default = (1<<2), parse_deprecation_warning = (1<<3), parse_silent = 0, parse_required = (1<<16), parse_override = (1<<17), parse_restart = (1<<18), parse_normal = (1<<1) | (1<<2) | (1<<17), parse_deprecated = (1<<1) | (1<<3) | (1<<17) } |
How a keyword is parsed in a string. More... | |
Public Types inherited from colvardeps | |
enum | features_biases { f_cvb_active, f_cvb_awake, f_cvb_step_zero_data, f_cvb_apply_force, f_cvb_bypass_ext_lagrangian, f_cvb_get_total_force, f_cvb_output_acc_work, f_cvb_history_dependent, f_cvb_time_dependent, f_cvb_scalar_variables, f_cvb_calc_pmf, f_cvb_calc_ti_samples, f_cvb_write_ti_samples, f_cvb_write_ti_pmf, f_cvb_scale_biasing_force, f_cvb_ntot } |
enum | features_colvar { f_cv_active, f_cv_awake, f_cv_gradient, f_cv_collect_gradient, f_cv_collect_atom_ids, f_cv_fdiff_velocity, f_cv_total_force, f_cv_total_force_calc, f_cv_subtract_applied_force, f_cv_Jacobian, f_cv_hide_Jacobian, f_cv_extended_Lagrangian, f_cv_external, f_cv_Langevin, f_cv_output_energy, f_cv_output_value, f_cv_output_velocity, f_cv_output_applied_force, f_cv_output_total_force, f_cv_lower_boundary, f_cv_upper_boundary, f_cv_hard_lower_boundary, f_cv_hard_upper_boundary, f_cv_reflecting_lower_boundary, f_cv_reflecting_upper_boundary, f_cv_grid, f_cv_runave, f_cv_corrfunc, f_cv_scripted, f_cv_custom_function, f_cv_periodic, f_cv_single_cvc, f_cv_scalar, f_cv_linear, f_cv_homogeneous, f_cv_multiple_ts, f_cv_ntot } |
enum | features_cvc { f_cvc_active, f_cvc_scalar, f_cvc_periodic, f_cvc_width, f_cvc_lower_boundary, f_cvc_upper_boundary, f_cvc_gradient, f_cvc_explicit_gradient, f_cvc_inv_gradient, f_cvc_Jacobian, f_cvc_one_site_total_force, f_cvc_debug_gradient, f_cvc_pbc_minimum_image, f_cvc_com_based, f_cvc_scalable, f_cvc_scalable_com, f_cvc_collect_atom_ids, f_cvc_ntot } |
enum | features_atomgroup { f_ag_active, f_ag_center, f_ag_center_origin, f_ag_rotate, f_ag_fitting_group, f_ag_explicit_gradient, f_ag_fit_gradients, f_ag_atom_forces, f_ag_scalable, f_ag_scalable_com, f_ag_collect_atom_ids, f_ag_ntot } |
Static Public Member Functions inherited from colvar::cvc | |
static void | delete_features () |
Static Public Member Functions inherited from colvarparse | |
static std::string | to_lower_cppstr (std::string const &in) |
Return a lowercased copy of the string. | |
static std::istream & | getline_nocomments (std::istream &is, std::string &s) |
Works as std::getline() but also removes everything between a comment character and the following newline. | |
static int | check_braces (std::string const &conf, size_t const start_pos) |
Check if the content of a config string has matching braces. More... | |
static int | check_ascii (std::string const &conf) |
Check that a config string contains non-ASCII characters. More... | |
static void | split_string (const std::string &data, const std::string &delim, std::vector< std::string > &dest) |
Split a string with a specified delimiter into a vector. More... | |
Public Attributes inherited from colvar::cvc | |
std::string | name |
The name of the object (helps to identify this cvc instance when debugging) | |
std::string | function_type |
Description of the type of collective variable. More... | |
std::string | config_key |
Keyword used in the input to denote this CVC. | |
cvm::real | sup_coeff |
Coefficient in the polynomial combination (default: 1.0) | |
int | sup_np |
Exponent in the polynomial combination (default: 1) | |
cvm::real | period |
Period of the values of this CVC (default: 0.0, non periodic) | |
cvm::real | wrap_center |
If the component is periodic, wrap around this value (default: 0.0) | |
int | init_code = COLVARS_OK |
Current initialization state; TODO remove this when using init() after default constructor. | |
std::vector< cvm::atom_group * > | atom_groups |
Pointers to all atom groups, to let colvars collect info e.g. atomic gradients. | |
bool | b_try_scalable |
Whether or not this CVC will be computed in parallel whenever possible. | |
Public Attributes inherited from colvardeps | |
std::string | description |
Static Public Attributes inherited from colvar::cvc | |
static std::vector< feature * > | cvc_features |
Implementation of the feature list for colvar. | |
Static Public Attributes inherited from colvarparse | |
static const char *const | white_space = " \t" |
Accepted white space delimiters, used in key_lookup() | |
Protected Types inherited from colvarparse | |
enum | key_set_mode { key_not_set = 0, key_set_user = 1, key_set_default = 2 } |
How a keyword has been set. | |
Protected Types inherited from colvardeps | |
enum | feature_type { f_type_not_set, f_type_dynamic, f_type_user, f_type_static } |
Enum of possible feature types. | |
Protected Member Functions inherited from colvar::cvc | |
int | update_description () |
Update the description string based on name and type. | |
void | init_as_distance () |
Set data types for a scalar distance (convenience function) | |
void | init_as_angle () |
Set data types for a bounded angle (0° to 180°) | |
void | init_as_periodic_angle () |
Set data types for a periodic angle (-180° to 180°) | |
void | init_scalar_boundaries (cvm::real lb, cvm::real ub) |
Set two scalar boundaries (convenience function) | |
Protected Member Functions inherited from colvarparse | |
bool | get_key_string_value (std::string const &conf, char const *key, std::string &data) |
Get the string value of a keyword, and save it for later parsing. | |
bool | get_key_string_multi_value (std::string const &conf, char const *key, std::vector< std::string > &data) |
Get multiple strings from repeated instances of a same keyword. | |
template<typename TYPE > | |
bool | _get_keyval_scalar_ (std::string const &conf, char const *key, TYPE &value, TYPE const &def_value, Parse_Mode const &parse_mode) |
Template for single-value keyword parsers. | |
template<typename TYPE > | |
bool | _get_keyval_vector_ (std::string const &conf, char const *key, std::vector< TYPE > &values, std::vector< TYPE > const &def_values, Parse_Mode const &parse_mode) |
Template for multiple-value keyword parsers. | |
template<typename TYPE > | |
int | _get_keyval_scalar_value_ (std::string const &key_str, std::string const &data, TYPE &value, TYPE const &def_value) |
Extract the value of a variable from a string. | |
template<typename TYPE > | |
int | _get_keyval_scalar_novalue_ (std::string const &key_str, TYPE &value, Parse_Mode const &parse_mode) |
Handle the case where the user provides a keyword without value. | |
template<typename TYPE > | |
void | mark_key_set_user (std::string const &key_str, TYPE const &value, Parse_Mode const &parse_mode) |
Record that the keyword has just been user-defined. | |
template<typename TYPE > | |
void | mark_key_set_default (std::string const &key_str, TYPE const &def_value, Parse_Mode const &parse_mode) |
Record that the keyword has just been set to its default value. | |
void | error_key_required (std::string const &key_str, Parse_Mode const &parse_mode) |
Raise error condition due to the keyword being required! | |
bool | key_already_set (std::string const &key_str) |
True if the keyword has been set already. | |
void | add_keyword (char const *key) |
Add a new valid keyword to the list. | |
void | strip_values (std::string &conf) |
Remove all the values from the config string. | |
Protected Member Functions inherited from colvarparams | |
colvarparams () | |
Default constructor. | |
virtual | ~colvarparams () |
Default destructor. | |
void | register_param (std::string const ¶m_name, void *param_ptr) |
Register the given parameter. | |
void | register_param_grad (std::string const ¶m_name, colvarvalue *param_grad_ptr) |
Register the gradient of the given parameter. | |
Protected Member Functions inherited from colvardeps | |
bool | get_keyval_feature (colvarparse *cvp, std::string const &conf, char const *key, int feature_id, bool const &def_value, colvarparse::Parse_Mode const parse_mode=colvarparse::parse_normal) |
Parse a keyword and enable a feature accordingly. | |
Protected Attributes inherited from colvar::cvc | |
std::vector< std::string > | function_types |
Record the type of this class as well as those it is derived from. | |
colvarvalue | x |
Cached value. | |
colvarvalue | x_old |
Value at the previous step. | |
colvarvalue | ft |
Calculated total force (Note: this is calculated from the total atomic forces read from the program, subtracting fromt the "internal" forces of the system the "external" forces from the colvar biases) | |
colvarvalue | jd |
Calculated Jacobian derivative (divergence of the inverse gradients): serves to calculate the phase space correction. | |
colvarvalue | lower_boundary |
Location of the lower boundary (not defined by user choice) | |
colvarvalue | upper_boundary |
Location of the upper boundary (not defined by user choice) | |
cvm::real | width |
CVC-specific default colvar width. | |
Protected Attributes inherited from colvarparse | |
std::string const | keyword_delimiters_left |
Characters allowed immediately to the left of a kewyord. | |
std::string const | keyword_delimiters_right |
Characters allowed immediately to the right of a kewyord. | |
std::list< std::string > | allowed_keywords |
List of legal keywords for this object: this is updated by each call to colvarparse::get_keyval() or colvarparse::key_lookup() | |
std::map< std::string, key_set_mode > | key_set_modes |
Track which keywords have been already set, and how. | |
std::list< size_t > | data_begin_pos |
List of delimiters for the values of each keyword in the configuration string; all keywords will be stripped of their values before the keyword check is performed. | |
std::list< size_t > | data_end_pos |
List of delimiters for the values of each keyword in the configuration string; all keywords will be stripped of their values before the keyword check is performed. | |
std::string | config_string |
Configuration string of the object (includes comments) | |
Protected Attributes inherited from colvarparams | |
std::map< std::string, void const * > | param_map |
Pointers to relevant parameters that may be accessed by other objects. | |
std::map< std::string, colvarvalue const * > | param_grad_map |
Derivatives of the object with respect to internal parameters. | |
Protected Attributes inherited from colvardeps | |
int | time_step_factor |
std::vector< feature_state > | feature_states |
List of the states of all features. | |
|
inlinevirtual |
Apply the collective variable force, by communicating the atomic forces to the simulation program (Note: the ft member is not altered by this function)
Note: multiple calls to this function within the same simulation step will add the forces altogether
cvforce | The collective variable force, usually coming from the biases and eventually manipulated by the parent colvar object |
Implements colvar::cvc.