Collective Variables Module - Developer Documentation
|
Colvar component: root mean square deviation (RMSD) of a group with respect to a set of reference coordinates; uses colvar::orientation to calculate the rotation matrix (colvarvalue::type_scalar type, range [0:*)) More...
#include <colvarcomp.h>
Public Member Functions | |
virtual int | init (std::string const &conf) |
virtual void | calc_value () |
Calculate the variable. More... | |
virtual void | calc_gradients () |
Calculate the atomic gradients, to be reused later in order to apply forces. More... | |
virtual void | calc_force_invgrads () |
Calculate the total force from the system using the inverse atomic gradients. More... | |
virtual void | calc_Jacobian_derivative () |
Calculate the divergence of the inverse atomic gradients. More... | |
Public Member Functions inherited from colvar::cvc | |
std::string | function_type () const |
String identifier for the type of collective variable. | |
cvc () | |
Constructor. | |
virtual | ~cvc () |
Destructor. | |
virtual int | init (std::string const &conf) |
virtual int | init_dependencies () |
Initialize dependency tree. More... | |
int | setup () |
After construction, set data related to dependency handling. | |
virtual const std::vector< feature * > & | features () const |
Implementation of the feature list accessor for colvar. More... | |
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. | |
virtual void | calc_value ()=0 |
Calculate the variable. More... | |
virtual void | calc_gradients () |
Calculate the atomic gradients, to be reused later in order to apply forces. More... | |
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. More... | |
virtual void | calc_force_invgrads () |
Calculate the total force from the system using the inverse atomic gradients. More... | |
virtual void | calc_Jacobian_derivative () |
Calculate the divergence of the inverse atomic gradients. More... | |
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 void | apply_force (colvarvalue const &cvforce) |
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... | |
virtual cvm::real | dist2 (colvarvalue const &x1, colvarvalue const &x2) const |
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) More... | |
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) More... | |
virtual void | wrap (colvarvalue &x_unwrapped) const |
Wrap value (for periodic/symmetric cvcs) More... | |
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. More... | |
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) | |
virtual int | set_param (std::string const ¶m_name, void const *new_value) |
Set the named parameter to the given value. More... | |
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) |
virtual const std::vector< feature * > & | features () const =0 |
virtual std::vector< feature * > & | modify_features ()=0 |
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) |
virtual int | init_dependencies ()=0 |
Initialize dependency tree for object of a derived class. More... | |
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. | |
Protected Member Functions | |
int | init_permutation (std::string const &conf) |
Permutation RMSD input parsing. | |
Protected Member Functions inherited from colvar::cvc | |
int | set_function_type (std::string const &type) |
Set the value of function_type and its dependencies. | |
int | update_description () |
Update the description string based on name and type. | |
cvm::atom_group * | parse_group (std::string const &conf, char const *group_key, bool optional=false) |
Parse a group definition. | |
virtual int | init_total_force_params (std::string const &conf) |
Parse options pertaining to total force calculation. | |
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 | |
cvm::atom_group * | atoms = nullptr |
Atom group. | |
std::vector< cvm::atom_pos > | ref_pos |
size_t | n_permutations = 1 |
Number of permutations of symmetry-related atoms. | |
size_t | best_perm_index = 0 |
Index of the permutation yielding the smallest RMSD (0 for identity) | |
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 = 0.0 |
CVC-specific default colvar width (default: not provided) | |
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. | |
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_extended , 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_explicit_atom_groups , 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 | config_key |
Keyword used in the input to denote this CVC. | |
cvm::real | sup_coeff = 1.0 |
Coefficient in the polynomial combination (default: 1.0) | |
int | sup_np = 1 |
Exponent in the polynomial combination (default: 1) | |
cvm::real | period = 0.0 |
Period of the values of this CVC (default: 0.0, non periodic) | |
cvm::real | wrap_center = 0.0 |
If the component is periodic, wrap around this value (default: 0.0) | |
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 = true |
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 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. | |
Static Protected Attributes inherited from colvar::cvc | |
static std::vector< feature * > | cvc_features |
Implementation of the feature list for colvar. | |
Colvar component: root mean square deviation (RMSD) of a group with respect to a set of reference coordinates; uses colvar::orientation to calculate the rotation matrix (colvarvalue::type_scalar type, range [0:*))
|
virtual |
Calculate the total force from the system using the inverse atomic gradients.
Reimplemented from colvar::cvc.
|
virtual |
Calculate the atomic gradients, to be reused later in order to apply forces.
Reimplemented from colvar::cvc.
|
virtual |
Calculate the divergence of the inverse atomic gradients.
Reimplemented from colvar::cvc.
|
virtual |
Calculate the variable.
Implements colvar::cvc.
|
virtual |
An init function should be defined for every class inheriting from cvc
conf | Contents of the configuration file pertaining to this cvc |
Reimplemented from colvar::cvc.
|
protected |
Reference coordinates (for RMSD calculation only) Includes sets with symmetry permutations (n_permutations * n_atoms)