42 std::string description;
105 std::string description;
109 std::vector<int> requires_self;
116 std::vector<int> requires_exclude;
120 std::vector<std::vector<int> > requires_alt;
123 std::vector<int> requires_children;
125 inline bool is_dynamic() {
return type == f_type_dynamic; }
126 inline bool is_static() {
return type == f_type_static; }
127 inline bool is_user() {
return type == f_type_user; }
132 inline bool is_not_set(
int id) {
return features()[id]->type == f_type_not_set; }
133 inline bool is_dynamic(
int id) {
return features()[id]->type == f_type_dynamic; }
134 inline bool is_static(
int id) {
return features()[id]->type == f_type_static; }
135 inline bool is_user(
int id) {
return features()[id]->type == f_type_user; }
142 virtual const std::vector<feature *> &features()
const = 0;
143 virtual std::vector<feature *>&modify_features() = 0;
167 inline bool is_enabled(
int f =
f_cv_active)
const {
173 inline bool is_available(
int f =
f_cv_active)
const {
180 void provide(
int feature_id,
bool truefalse =
true);
183 void set_enabled(
int feature_id,
bool truefalse =
true);
189 std::string
const &conf,
char const *key,
190 int feature_id,
bool const &def_value,
201 int enable(
int f,
bool dry_run =
false,
bool toplevel =
true);
436 if (! is_enabled(f)) {
437 cvm::error(
"Error: "+reason+
" requires that the feature \""+
438 features()[f]->description+
"\" is active.\n", COLVARS_BUG_ERROR);
Definition: colvardeps.h:99
feature_type type
Type of this feature, from the enum feature_type.
Definition: colvardeps.h:129
Parent class for a member object of a bias, cv or cvc etc. containing features and their dependencies...
Definition: colvardeps.h:34
void init_feature(int feature_id, const char *description, feature_type type)
Pair a numerical feature ID with a description and type.
Definition: colvardeps.cpp:388
int enable(int f, bool dry_run=false, bool toplevel=true)
Definition: colvardeps.cpp:125
virtual void do_feature_side_effects(int)
Definition: colvardeps.h:222
void require_feature_alt(int f, int g, int h)
Make feature f require either g or h within the same object.
Definition: colvardeps.cpp:412
std::vector< colvardeps * > children
Definition: colvardeps.h:158
features_cvc
Definition: colvardeps.h:347
@ f_cvc_scalar
This CVC computes a scalar value.
Definition: colvardeps.h:351
@ f_cvc_pbc_minimum_image
Definition: colvardeps.h:376
@ f_cvc_active
Computation of this CVC is enabled.
Definition: colvardeps.h:349
@ f_cvc_ntot
Number of CVC features.
Definition: colvardeps.h:386
@ f_cvc_explicit_gradient
CVC calculates and stores explicit atom gradients on rank 0.
Definition: colvardeps.h:365
@ f_cvc_gradient
CVC calculates atom gradients.
Definition: colvardeps.h:363
@ f_cvc_Jacobian
CVC calculates the Jacobian term of the total-force expression.
Definition: colvardeps.h:369
@ f_cvc_scalable
This CVC can be computed in parallel.
Definition: colvardeps.h:380
@ f_cvc_one_site_total_force
The total force for this CVC will be computed from one group only.
Definition: colvardeps.h:371
@ f_cvc_com_based
This CVC is a function of centers of mass.
Definition: colvardeps.h:378
@ f_cvc_periodic
Values of this CVC lie in a periodic interval.
Definition: colvardeps.h:353
@ f_cvc_debug_gradient
calc_gradients() will call debug_gradients() for every group needed
Definition: colvardeps.h:373
@ f_cvc_inv_gradient
CVC calculates and stores inverse atom gradients (used for total force)
Definition: colvardeps.h:367
@ f_cvc_lower_boundary
This CVC provides a default value for the colvar's lower boundary.
Definition: colvardeps.h:357
@ f_cvc_explicit_atom_groups
CVC accesses atom groups directly (as opposed to going throuh other objects)
Definition: colvardeps.h:361
@ f_cvc_width
This CVC provides a default value for the colvar's width.
Definition: colvardeps.h:355
@ f_cvc_upper_boundary
This CVC provides a default value for the colvar's upper boundary.
Definition: colvardeps.h:359
@ f_cvc_scalable_com
Centers-of-mass used in this CVC can be computed in parallel.
Definition: colvardeps.h:382
@ f_cvc_collect_atom_ids
Build list of atoms involved in CVC calculation.
Definition: colvardeps.h:384
int disable(int f)
Definition: colvardeps.cpp:299
feature_type
Enum of possible feature types.
Definition: colvardeps.h:83
virtual int init_dependencies()=0
Initialize dependency tree for object of a derived class.
features_atomgroup
Definition: colvardeps.h:389
@ f_ag_explicit_gradient
Does not have explicit atom gradients from parent CVC.
Definition: colvardeps.h:399
@ f_ag_collect_atom_ids
Build list of atoms involved in atom group.
Definition: colvardeps.h:405
int decr_ref_count(int f)
Definition: colvardeps.cpp:362
int get_time_step_factor() const
returns time_step_factor
Definition: colvardeps.h:92
void require_feature_self(int f, int g)
Make feature f require feature g within the same object.
Definition: colvardeps.cpp:395
void require_feature_children(int f, int g)
Make feature f require feature g within children.
Definition: colvardeps.cpp:407
void check_enabled(int f, std::string const &reason) const
Check that a feature is enabled, raising COLVARS_BUG_ERROR if not.
Definition: colvardeps.h:434
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.
Definition: colvardeps.cpp:107
void set_enabled(int feature_id, bool truefalse=true)
Enable or disable, depending on flag value.
Definition: colvardeps.cpp:98
void exclude_feature_self(int f, int g)
Make features f and g mutually exclusive within the same object.
Definition: colvardeps.cpp:401
features_biases
Definition: colvardeps.h:225
@ f_cvb_apply_force
will apply forces
Definition: colvardeps.h:233
@ f_cvb_scale_biasing_force
whether this bias uses an external grid to scale the biasing forces
Definition: colvardeps.h:255
@ f_cvb_calc_pmf
whether this bias will compute a PMF
Definition: colvardeps.h:247
@ f_cvb_time_dependent
depends on time
Definition: colvardeps.h:243
@ f_cvb_history_dependent
depends on simulation history
Definition: colvardeps.h:241
@ f_cvb_calc_ti_samples
whether this bias will compute TI samples
Definition: colvardeps.h:249
@ f_cvb_extended
whether this bias is applied to one or more ext-Lagrangian colvars
Definition: colvardeps.h:257
@ f_cvb_awake
Bias is awake (active on its own accord) this timestep.
Definition: colvardeps.h:229
@ f_cvb_get_total_force
requires total forces
Definition: colvardeps.h:237
@ f_cvb_write_ti_pmf
whether this bias should write the TI PMF
Definition: colvardeps.h:253
@ f_cvb_step_zero_data
Accumulates data starting from step 0 of a simulation run.
Definition: colvardeps.h:231
@ f_cvb_bypass_ext_lagrangian
force this bias to act on actual value for extended-Lagrangian coordinates
Definition: colvardeps.h:235
@ f_cvb_active
Bias is active.
Definition: colvardeps.h:227
@ f_cvb_scalar_variables
requires scalar colvars
Definition: colvardeps.h:245
@ f_cvb_write_ti_samples
whether this bias will write TI samples
Definition: colvardeps.h:251
@ f_cvb_output_acc_work
whether this bias should record the accumulated work
Definition: colvardeps.h:239
std::vector< feature_state > feature_states
List of the states of all features.
Definition: colvardeps.h:80
std::vector< colvardeps * > parents
Definition: colvardeps.h:162
void restore_children_deps()
re-enable children features (to be used when object becomes active)
Definition: colvardeps.cpp:73
void provide(int feature_id, bool truefalse=true)
Definition: colvardeps.cpp:93
features_colvar
Definition: colvardeps.h:261
@ f_cv_Jacobian
Estimate Jacobian derivative.
Definition: colvardeps.h:284
@ f_cv_ntot
Number of colvar features.
Definition: colvardeps.h:344
@ f_cv_total_force
The total force is calculated, projecting the atomic forces on the inverse gradient.
Definition: colvardeps.h:278
@ f_cv_extended_Lagrangian
The variable has a harmonic restraint around a moving center with fictitious mass; bias forces will b...
Definition: colvardeps.h:291
@ f_cv_upper_boundary
An upper boundary is defined.
Definition: colvardeps.h:312
@ f_cv_subtract_applied_force
Subtract the applied force from the total force.
Definition: colvardeps.h:282
@ f_cv_collect_gradient
Collect atomic gradient data from all cvcs into vector atomic_gradient.
Definition: colvardeps.h:271
@ f_cv_hard_lower_boundary
The lower boundary is not defined from user's choice.
Definition: colvardeps.h:314
@ f_cv_runave
Compute running average.
Definition: colvardeps.h:326
@ f_cv_output_total_force
Output the total force to the trajectory file.
Definition: colvardeps.h:308
@ f_cv_hard_upper_boundary
The upper boundary is not defined from user's choice.
Definition: colvardeps.h:316
@ f_cv_gradient
Gradients are calculated and temporarily stored, so that external forces can be applied.
Definition: colvardeps.h:268
@ f_cv_periodic
Colvar is periodic.
Definition: colvardeps.h:334
@ f_cv_corrfunc
Compute time correlation function.
Definition: colvardeps.h:328
@ f_cv_reflecting_upper_boundary
Reflecting upper boundary condition.
Definition: colvardeps.h:320
@ f_cv_total_force_calc
Calculate total force from atomic forces.
Definition: colvardeps.h:280
@ f_cv_reflecting_lower_boundary
Reflecting lower boundary condition.
Definition: colvardeps.h:318
@ f_cv_single_cvc
The colvar has only one component.
Definition: colvardeps.h:336
@ f_cv_awake
Colvar is awake (active on its own accord) this timestep.
Definition: colvardeps.h:265
@ f_cv_Langevin
The extended system coordinate undergoes Langevin dynamics.
Definition: colvardeps.h:297
@ f_cv_multiple_ts
multiple timestep through time_step_factor
Definition: colvardeps.h:342
@ f_cv_scripted
Value and gradient computed by user script.
Definition: colvardeps.h:330
@ f_cv_collect_atom_ids
Build list of atoms involved in CV calculation.
Definition: colvardeps.h:273
@ f_cv_grid
Provide a discretization of the values of the colvar to be used by the biases or in analysis (needs l...
Definition: colvardeps.h:324
@ f_cv_custom_function
Value and gradient computed by user function through Lepton.
Definition: colvardeps.h:332
@ f_cv_output_velocity
Output the velocity to the trajectory file.
Definition: colvardeps.h:304
@ f_cv_scalar
is scalar
Definition: colvardeps.h:338
@ f_cv_active
Calculate colvar.
Definition: colvardeps.h:263
@ f_cv_output_value
Output the value to the trajectory file (on by default)
Definition: colvardeps.h:302
@ f_cv_fdiff_velocity
Calculate the velocity with finite differences.
Definition: colvardeps.h:275
@ f_cv_external
An extended variable that sets an external variable in the back-end (eg. an alchemical coupling param...
Definition: colvardeps.h:295
@ f_cv_output_applied_force
Output the applied force to the trajectory file.
Definition: colvardeps.h:306
@ f_cv_lower_boundary
A lower boundary is defined.
Definition: colvardeps.h:310
@ f_cv_hide_Jacobian
Do not report the Jacobian force as part of the total force instead, apply a correction internally to...
Definition: colvardeps.h:287
@ f_cv_output_energy
Output the potential and kinetic energies (for extended Lagrangian colvars only)
Definition: colvardeps.h:300
void free_children_deps()
Definition: colvardeps.cpp:43
int time_step_factor
Definition: colvardeps.h:77
void remove_all_children()
Definition: colvardeps.cpp:507
void print_state()
print all enabled features and those of children, for debugging
Definition: colvardeps.cpp:436
static int error(std::string const &message, int code=-1)
Print a message to the main log and set global error code.
Definition: colvarmodule.cpp:2046
Base class containing parsing functions; all objects which need to parse input inherit from this.
Definition: colvarparse.h:27
Parse_Mode
How a keyword is parsed in a string.
Definition: colvarparse.h:53
@ parse_normal
Alias for old default behavior (should be phased out)
Definition: colvarparse.h:72
Collective variables main module.
Parsing functions for collective variables.
This contains the current state of each feature for each object.
Definition: colvardeps.h:46
int ref_count
Definition: colvardeps.h:63
bool enabled
Definition: colvardeps.h:55
bool available
Feature may be enabled, subject to possible dependencies.
Definition: colvardeps.h:51
std::vector< int > alternate_refs
Definition: colvardeps.h:68