Collective Variables Module - Developer Documentation
Loading...
Searching...
No Matches
colvarmodule.h
Go to the documentation of this file.
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 COLVARMODULE_H
11#define COLVARMODULE_H
12
13#include <cstdint>
14
15#include "colvars_version.h"
16
17#ifndef COLVARS_DEBUG
18#define COLVARS_DEBUG false
19#endif
20
21#if defined(__FAST_MATH__)
22// NOTE: This is used for fixing https://github.com/Colvars/colvars/issues/767
23#define COLVARS_BOUNDED_INV_TRIGONOMETRIC_FUNC
24#endif
25
26#define COLVARS_USE_SOA
27
44
45#include <cmath>
46#include <iosfwd>
47#include <string>
48#include <vector>
49
50#if defined(COLVARS_CUDA)
51#include <cuda_runtime.h>
52#endif
53
54#if defined(COLVARS_HIP)
55#include <hip/hip_runtime.h>
56#define cudaHostAllocMapped hipHostMallocMapped
57#define cudaHostAlloc hipHostMalloc
58#define cudaFreeHost hipHostFree
59#define cudaSuccess hipSuccess
60#endif
61
62class colvarparse;
63class colvar;
64class colvarbias;
65class colvarproxy;
66class colvarvalue;
67
68
79
80public:
81
83 std::string version() const
84 {
85 return std::string(COLVARS_VERSION);
86 }
87
89 int version_number() const
90 {
91 return version_int;
92 }
93
96 {
97 return patch_version_int;
98 }
99
100#if ( defined(COLVARS_CUDA) || defined(COLVARS_HIP) )
101 template <typename T>
102 class CudaHostAllocator {
103 public:
104 using value_type = T;
105
106 CudaHostAllocator() = default;
107
108 template<typename U>
109 constexpr CudaHostAllocator(const CudaHostAllocator<U>&) noexcept {}
110
111 friend bool operator==(const CudaHostAllocator&, const CudaHostAllocator&) { return true; }
112 friend bool operator!=(const CudaHostAllocator&, const CudaHostAllocator&) { return false; }
113
114 T* allocate(size_t n) {
115 T* ptr;
116 if (cudaHostAlloc(&ptr, n * sizeof(T), cudaHostAllocMapped) != cudaSuccess) {
117 throw std::bad_alloc();
118 }
119 return ptr;
120 }
121 void deallocate(T* ptr, size_t n) noexcept {
122 cudaFreeHost(ptr);
123 }
124 template<typename U, typename... Args>
125 void construct(U* p, Args&&... args) {
126 new(p) U(std::forward<Args>(args)...);
127 }
128
129 template<typename U>
130 void destroy(U* p) noexcept {
131 p->~U();
132 }
133 };
134#endif
135
136private:
137
139 int version_int = 0;
140
143
144public:
145
147 typedef long long step_number;
148
150 typedef double real;
151
152
153 // Math functions
154
156 static inline real integer_power(real const &x, int const n)
157 {
158 // Original code: math_special.h in LAMMPS
159 double yy, ww;
160 if (x == 0.0) return 0.0;
161 int nn = (n > 0) ? n : -n;
162 ww = x;
163 for (yy = 1.0; nn != 0; nn >>= 1, ww *=ww) {
164 if (nn & 1) yy *= ww;
165 }
166 return (n > 0) ? yy : 1.0/yy;
167 }
168
170 static inline real pow(real const &x, real const &y)
171 {
172 return ::pow(static_cast<double>(x), static_cast<double>(y));
173 }
174
176 static inline real floor(real const &x)
177 {
178 return ::floor(static_cast<double>(x));
179 }
180
182 static inline real fabs(real const &x)
183 {
184 return ::fabs(static_cast<double>(x));
185 }
186
188 static inline real sqrt(real const &x)
189 {
190 return ::sqrt(static_cast<double>(x));
191 }
192
194 static inline real sin(real const &x)
195 {
196 return ::sin(static_cast<double>(x));
197 }
198
200 static inline real cos(real const &x)
201 {
202 return ::cos(static_cast<double>(x));
203 }
204
205#ifndef PI
206#define PI 3.14159265358979323846
207#endif
208#ifndef PI_2
209#define PI_2 1.57079632679489661923
210#endif
211
213static inline real asin(real const &x)
214{
215#ifdef COLVARS_BOUNDED_INV_TRIGONOMETRIC_FUNC
216 if (x <= -1.0) {
217 return -PI_2;
218 } else if (x >= 1.0) {
219 return PI_2;
220 } else {
221 return ::asin(static_cast<double>(x));
222 }
223#else
224 return ::asin(static_cast<double>(x));
225#endif
226}
227
229static inline real acos(real const &x)
230{
231#ifdef COLVARS_BOUNDED_INV_TRIGONOMETRIC_FUNC
232 if (x <= -1.0) {
233 return PI;
234 } else if (x >= 1.0) {
235 return 0.0;
236 } else {
237 return ::acos(static_cast<double>(x));
238 }
239#else
240 return ::acos(static_cast<double>(x));
241#endif
242}
243
245 static inline real atan2(real const &x, real const &y)
246 {
247 return ::atan2(static_cast<double>(x), static_cast<double>(y));
248 }
249
251 static inline real exp(real const &x)
252 {
253 return ::exp(static_cast<double>(x));
254 }
255
259 static inline real logn(real const &x)
260 {
261 return ::log(static_cast<double>(x));
262 }
263
264 // Forward declarations
265 class rvector;
266 template <class T> class vector1d;
267 template <class T> class matrix2d;
268 class quaternion;
269 class rotation;
270
271 class usage;
272 class memory_stream;
273
275 typedef int residue_id;
276
280
282 class rmatrix;
283
284 // allow these classes to access protected data
285 class atom;
286 class atom_group;
287 typedef std::vector<atom>::iterator atom_iter;
288 typedef std::vector<atom>::const_iterator atom_const_iter;
289
292private:
293
294 static int errorCode;
295
296public:
297
298 static void set_error_bits(int code);
299
300 static bool get_error_bit(int code);
301
302 static inline int get_error()
303 {
304 return errorCode;
305 }
306
307 static void clear_error();
308
313
316 {
317 return it - it_restart;
318 }
319
323 {
324 return it;
325 }
326
327 bool binary_restart;
328
333
334private:
335
337 std::string cvm_output_prefix;
338
339public:
341 static inline std::string &output_prefix()
342 {
344 return cv->cvm_output_prefix;
345 }
346
347private:
348
350 std::vector<colvar *> colvars;
351
353 std::vector<colvar *> colvars_active;
354
357 std::vector<colvar *> colvars_smp;
359 std::vector<int> colvars_smp_items;
360
362 std::vector<atom_group *> named_atom_groups_soa;
363
364public:
365
366 void register_named_atom_group_soa(atom_group *ag);
367 void unregister_named_atom_group_soa(atom_group *ag);
368
370 std::vector<colvar *> *variables();
371
372 /* TODO: implement named CVCs
374 static std::vector<cvc *> cvcs;
376 inline void register_cvc(cvc *p) {
377 cvcs.push_back(p);
378 }
379 */
380
382 std::vector<colvar *> *variables_active();
383
386 std::vector<colvar *> *variables_active_smp();
387
389 std::vector<int> *variables_active_smp_items();
390
392 int calc_component_smp(int i);
393
395 std::vector<colvarbias *> biases;
396
399
400private:
401
404
406 std::vector<colvarbias *> biases_active_;
407
408public:
409
411 std::vector<colvarbias *> *biases_active();
412
414 static inline bool debug()
415 {
416 return COLVARS_DEBUG;
417 }
418
420 size_t size() const;
421
425
426private:
427
430
431public:
432
435
438
440 int reset();
441
444 int read_config_file(char const *config_file_name);
445
448 int read_config_string(std::string const &conf);
449
451 int parse_config(std::string &conf);
452
454 std::string const & get_config() const;
455
456 // Parse functions (setup internal data based on a string)
457
460 static std::istream & getline(std::istream &is, std::string &line);
461
463 int parse_global_params(std::string const &conf);
464
466 int parse_colvars(std::string const &conf);
467
469 int run_tcl_script(std::string const &filename);
470
472 int parse_biases(std::string const &conf);
473
477 int append_new_config(std::string const &conf);
478
480 void config_changed();
481
482private:
483
485 std::string config_string;
486
489 std::string extra_conf;
490
492 template <class bias_type>
493 int parse_biases_type(std::string const &conf, char const *keyword);
494
497 bool check_new_bias(std::string &conf, char const *key);
498
500 std::string source_Tcl_script;
501
502public:
503
505 size_t num_variables() const;
506
508 size_t num_variables_feature(int feature_id) const;
509
511 size_t num_biases() const;
512
514 size_t num_biases_feature(int feature_id) const;
515
517 size_t num_biases_type(std::string const &type) const;
518
521 std::vector<std::string> const time_dependent_biases() const;
522
523private:
525 int catch_input_errors(int result);
526
527public:
528
529 // "Setup" functions (change internal data based on related data
530 // from the proxy that may change during program execution)
531 // No additional parsing is done within these functions
532
536
538 int setup_input();
539
541 int setup_output();
542
543private:
544
545 template <typename IST> IST & read_state_template_(IST &is);
546
549
551 std::vector<unsigned char> input_state_buffer_;
552
553public:
554
556 std::istream & read_state(std::istream &is);
557
559 memory_stream & read_state(memory_stream &is);
560
562 int set_input_state_buffer(size_t n, unsigned char *buf);
563
565 int set_input_state_buffer(std::vector<unsigned char> &buf);
566
568 std::istream & read_objects_state(std::istream &is);
569
571 memory_stream & read_objects_state(memory_stream &is);
572
574 int print_total_forces_errning(bool warn_total_forces);
575
576private:
577 template <typename OST> OST &write_state_template_(OST &os);
578
579public:
580
582 std::ostream & write_state(std::ostream &os);
583
585 memory_stream & write_state(memory_stream &os);
586
588 int write_state_buffer(std::vector<unsigned char> &buffer);
589
591 static std::string state_file_prefix(char const *filename);
592
594 int open_traj_file(std::string const &file_name);
598 std::ostream & write_traj(std::ostream &os);
600 std::ostream & write_traj_label(std::ostream &os);
601
603 int write_traj_files();
605 int write_restart_file(std::string const &out_name);
607 int write_output_files();
609 static int backup_file(char const *filename);
610
612 int write_restart_string(std::string &output);
613
615 static colvarbias * bias_by_name(std::string const &name);
616
618 static colvar * colvar_by_name(std::string const &name);
619
621 static atom_group * atom_group_soa_by_name(std::string const& name);
622
625 int change_configuration(std::string const &bias_name, std::string const &conf);
626
628 std::string read_colvar(std::string const &name);
629
632 real energy_difference(std::string const &bias_name, std::string const &conf);
633
635 int calc();
636
638 int calc_colvars();
639
641 int calc_biases();
642
645
647 int analyze();
648
650 int end_of_step();
651
654 int read_traj(char const *traj_filename,
655 long traj_read_begin,
656 long traj_read_end);
657
659 static std::string to_str(char const *s);
660
662 static std::string to_str(std::string const &s);
663
665 static std::string to_str(bool x);
666
668 static std::string to_str(int const &x,
669 size_t width = 0, size_t prec = 0);
670
672 static std::string to_str(size_t const &x,
673 size_t width = 0, size_t prec = 0);
674
676 static std::string to_str(long int const &x,
677 size_t width = 0, size_t prec = 0);
678
680 static std::string to_str(step_number const &x,
681 size_t width = 0, size_t prec = 0);
682
684 static std::string to_str(real const &x,
685 size_t width = 0, size_t prec = 0);
686
688 static std::string to_str(rvector const &x,
689 size_t width = 0, size_t prec = 0);
690
692 static std::string to_str(quaternion const &x,
693 size_t width = 0, size_t prec = 0);
694
696 static std::string to_str(colvarvalue const &x,
697 size_t width = 0, size_t prec = 0);
698
700 static std::string to_str(vector1d<real> const &x,
701 size_t width = 0, size_t prec = 0);
702
704 static std::string to_str(matrix2d<real> const &x,
705 size_t width = 0, size_t prec = 0);
706
707
709 static std::string to_str(std::vector<int> const &x,
710 size_t width = 0, size_t prec = 0);
711
713 static std::string to_str(std::vector<size_t> const &x,
714 size_t width = 0, size_t prec = 0);
715
717 static std::string to_str(std::vector<long int> const &x,
718 size_t width = 0, size_t prec = 0);
719
721 static std::string to_str(std::vector<real> const &x,
722 size_t width = 0, size_t prec = 0);
723
725 static std::string to_str(std::vector<rvector> const &x,
726 size_t width = 0, size_t prec = 0);
727
729 static std::string to_str(std::vector<quaternion> const &x,
730 size_t width = 0, size_t prec = 0);
731
733 static std::string to_str(std::vector<colvarvalue> const &x,
734 size_t width = 0, size_t prec = 0);
735
737 static std::string to_str(std::vector<std::string> const &x,
738 size_t width = 0, size_t prec = 0);
739
740#if ( defined(COLVARS_CUDA) || defined(COLVARS_HIP) )
741 static std::string to_str(std::vector<rvector, CudaHostAllocator<rvector>> const &x,
742 size_t width = 0, size_t prec = 0);
743 static std::string to_str(std::vector<real, CudaHostAllocator<real>> const &x,
744 size_t width = 0, size_t prec = 0);
745#endif
746
747
749 static std::string wrap_string(std::string const &s,
750 size_t nchars);
751
753 static size_t const it_width;
755 static size_t const cv_prec;
757 static size_t const cv_width;
759 static size_t const en_prec;
761 static size_t const en_width;
763 static const char * const line_marker;
764
765
766 // proxy functions
767
769 static real dt();
770
772 static void request_total_force();
773
775 int cite_feature(std::string const &feature);
776
778 std::string feature_report(int flag = 0);
779
783 static void log(std::string const &message, int min_log_level = 10);
784
786 static int error(std::string const &message, int code = -1);
787
788private:
789
791 static int log_level_;
792
793public:
794
796 static inline int log_level()
797 {
798 return log_level_;
799 }
800
802 static inline int log_init_messages()
803 {
804 return 1;
805 }
806
808 static inline int log_user_params()
809 {
810 return 2;
811 }
812
814 static inline int log_default_params()
815 {
816 return 3;
817 }
818
820 static inline int log_output_files()
821 {
822 return 4;
823 }
824
826 static inline int log_input_files()
827 {
828 return 5;
829 }
830
834 atom_pos const &pos2);
835
837 std::vector<std::string> index_file_names;
838
840 std::vector<std::string> index_group_names;
841
843 std::vector<std::vector<int> *> index_groups;
844
846 int read_index_file(char const *filename);
847
849 int reset_index_groups();
850
859 static int load_coords(char const *filename,
860 std::vector<rvector> *pos,
861 atom_group *atoms,
862 std::string const &pdb_field,
863 double pdb_field_value = 0.0);
864
866 int load_coords_xyz(char const *filename,
867 std::vector<rvector> *pos,
868 atom_group *atoms,
869 bool keep_open = false);
870
872 static size_t cv_traj_freq;
873
875 static size_t restart_out_freq;
877 std::string restart_out_name;
878
881
882protected:
883
886
888 std::string cv_traj_name;
889
892
895
898
900 size_t depth_s;
901
903 std::vector<size_t> depth_v;
904
907
910
911public:
912
914 inline std::string restart_version() const
915 {
916 return restart_version_str;
917 }
918
920 inline int restart_version_number() const
921 {
922 return restart_version_int;
923 }
924
926 static size_t & depth();
927
929 static void increase_depth();
930
932 static void decrease_depth();
933
934 static inline bool scripted_forces()
935 {
936 return use_scripted_forces;
937 }
938
941
944
947
952
954 static colvarmodule *main();
955
956};
957
958
961
962
963std::ostream & operator << (std::ostream &os, cvm::rvector const &v);
964std::istream & operator >> (std::istream &is, cvm::rvector &v);
965
966
967namespace {
968 constexpr int32_t COLVARS_OK = 0;
969 constexpr int32_t COLVARS_ERROR = 1;
970 constexpr int32_t COLVARS_NOT_IMPLEMENTED = (1<<1);
971 constexpr int32_t COLVARS_INPUT_ERROR = (1<<2); // out of bounds or inconsistent input
972 constexpr int32_t COLVARS_BUG_ERROR = (1<<3); // Inconsistent state indicating bug
973 constexpr int32_t COLVARS_FILE_ERROR = (1<<4);
974 constexpr int32_t COLVARS_MEMORY_ERROR = (1<<5);
975 constexpr int32_t COLVARS_NO_SUCH_FRAME = (1<<6); // Cannot load the requested frame
976}
977
978
979#endif
A collective variable (main class); to be defined, it needs at least one object of a derived class of...
Definition: colvar.h:53
Collective variable bias, base class.
Definition: colvarbias.h:23
Arbitrary size array (two dimensions) suitable for linear algebra operations (i.e....
Definition: colvartypes.h:372
1-dimensional vector of real numbers with four components and a quaternion algebra
Definition: colvartypes.h:954
2-dimensional array of real numbers with three components along each dimension (works with colvarmodu...
Definition: colvartypes.h:891
vector of real numbers with three components
Definition: colvartypes.h:723
Track usage of Colvars features.
Definition: colvarmodule.cpp:35
Arbitrary size array (one dimensions) suitable for linear algebra operations (i.e....
Definition: colvartypes.h:33
Collective variables module (main class)
Definition: colvarmodule.h:78
int cite_feature(std::string const &feature)
Track usage of the given Colvars feature.
Definition: colvarmodule.cpp:2554
static const char *const line_marker
Line separator in the log output.
Definition: colvarmodule.h:763
rvector atom_pos
Atom position (different type name from rvector, to make possible future PBC-transparent implementati...
Definition: colvarmodule.h:279
int write_traj_files()
Write all trajectory files.
Definition: colvarmodule.cpp:1205
int load_coords_xyz(char const *filename, std::vector< rvector > *pos, atom_group *atoms, bool keep_open=false)
Load coordinates into an atom group from an XYZ file (assumes Angstroms)
std::ostream & write_state(std::ostream &os)
Write the state of the module to a formatted (text) file.
Definition: colvarmodule.cpp:1913
static std::string state_file_prefix(char const *filename)
Strips .colvars.state from filename and checks that it is not empty.
Definition: colvarmodule.cpp:1543
static real pow(real const &x, real const &y)
Reimplemented to work around MS compiler issues.
Definition: colvarmodule.h:170
size_t num_biases_feature(int feature_id) const
Return how many biases have this feature enabled.
Definition: colvarmodule.cpp:684
static real asin(real const &x)
Reimplemented to work around compiler issues; return hard-coded values for boundary conditions.
Definition: colvarmodule.h:213
static step_number it
Current step number.
Definition: colvarmodule.h:310
bool cv_traj_write_labels
Write labels at the next iteration.
Definition: colvarmodule.h:891
static std::string to_str(std::vector< quaternion > const &x, size_t width=0, size_t prec=0)
Convert to string for output purposes.
std::vector< std::string > const time_dependent_biases() const
Definition: colvarmodule.cpp:712
std::string cv_traj_name
Name of the trajectory file.
Definition: colvarmodule.h:888
static real logn(real const &x)
Definition: colvarmodule.h:259
std::ostream & write_traj(std::ostream &os)
Write in the trajectory file.
Definition: colvarmodule.cpp:1963
double real
Defining an abstract real number allows to switch precision.
Definition: colvarmodule.h:150
static size_t const en_prec
Number of digits to represent the collective variables energy.
Definition: colvarmodule.h:759
int read_config_string(std::string const &conf)
Parse a config string assuming it is a complete configuration (i.e. calling all parse functions)
Definition: colvarmodule.cpp:267
static std::string to_str(std::vector< rvector > const &x, size_t width=0, size_t prec=0)
Convert to string for output purposes.
static real floor(real const &x)
Reimplemented to work around MS compiler issues.
Definition: colvarmodule.h:176
static std::string wrap_string(std::string const &s, size_t nchars)
Reduce the number of characters in a string.
size_t size() const
How many objects (variables and biases) are configured yet?
Definition: colvarmodule.cpp:225
int xyz_reader_use_count
Track how many times the XYZ reader has been used.
Definition: colvarmodule.h:906
std::vector< std::string > index_group_names
Names of groups from one or more Gromacs .ndx files.
Definition: colvarmodule.h:840
usage * usage_
Track usage of Colvars features.
Definition: colvarmodule.h:909
int update_colvar_forces()
Integrate bias and restraint forces, send colvar forces to atoms.
Definition: colvarmodule.cpp:1085
std::string restart_version() const
Version of the most recent state file read.
Definition: colvarmodule.h:914
int set_input_state_buffer(size_t n, unsigned char *buf)
Set an internal state buffer, to be read later as an unformatted stream when ready.
Definition: colvarmodule.cpp:1647
int parse_config(std::string &conf)
Parse a "clean" config string (no comments)
Definition: colvarmodule.cpp:306
int write_restart_file(std::string const &out_name)
Write a state file useful to resume the simulation.
Definition: colvarmodule.cpp:1164
static void request_total_force()
Request calculation of total force from MD engine.
void set_initial_step(step_number it)
Set the initial step number (it is 0 otherwise); may be overridden when reading a state.
Definition: colvarmodule.cpp:231
static real exp(real const &x)
Reimplemented to work around MS compiler issues.
Definition: colvarmodule.h:251
memory_stream & read_state(memory_stream &is)
Read all objects' state fron an unformatted (binary) stream.
std::vector< int > * variables_active_smp_items()
Indexes of the items to calculate for each colvar.
Definition: colvarmodule.cpp:199
int residue_id
Residue identifier.
Definition: colvarmodule.h:275
std::vector< colvarbias * > biases_active_
Array of active collective variable biases.
Definition: colvarmodule.h:406
static int log_output_files()
Level at which output-file operations are logged.
Definition: colvarmodule.h:820
int end_of_step()
Carry out operations needed before next step is run.
Definition: colvarmodule.cpp:1278
size_t num_biases() const
Return how many biases are defined.
Definition: colvarmodule.cpp:678
int setup_output()
(Re)initialize the output trajectory and state file (does not write it yet)
Definition: colvarmodule.cpp:1498
bool check_new_bias(std::string &conf, char const *key)
Definition: colvarmodule.cpp:533
std::string feature_report(int flag=0)
Report usage of the Colvars features.
Definition: colvarmodule.cpp:2559
std::vector< int > colvars_smp_items
Indexes of the items to calculate for each colvar.
Definition: colvarmodule.h:359
static int load_coords(char const *filename, std::vector< rvector > *pos, atom_group *atoms, std::string const &pdb_field, double pdb_field_value=0.0)
Load coordinates for a group of atoms from a file (PDB or XYZ); if "pos" is already allocated,...
static int backup_file(char const *filename)
Backup a file before writing it.
Definition: colvarmodule.cpp:1771
int calc()
Main worker function.
Definition: colvarmodule.cpp:845
static real cos(real const &x)
Reimplemented to work around MS compiler issues.
Definition: colvarmodule.h:200
int patch_version_number() const
Get the patch version number (non-zero in patch releases of other packages)
Definition: colvarmodule.h:95
std::string extra_conf
Definition: colvarmodule.h:489
static real dt()
Time step of MD integrator (fs)
static step_number it_restart
Starting step number for this run.
Definition: colvarmodule.h:312
static real integer_power(real const &x, int const n)
Override the STL pow() with a product for n integer.
Definition: colvarmodule.h:156
std::string config_string
Configuration string read so far by the module (includes comments)
Definition: colvarmodule.h:485
std::string default_input_state_file_
Default input state file; if given, it is read unless the MD engine provides it.
Definition: colvarmodule.h:548
int read_config_file(char const *config_file_name)
Definition: colvarmodule.cpp:238
std::vector< std::vector< int > * > index_groups
Groups from one or more Gromacs .ndx files.
Definition: colvarmodule.h:843
int restart_version_number() const
Integer version of the most recent state file read.
Definition: colvarmodule.h:920
static atom_group * atom_group_soa_by_name(std::string const &name)
Look up a named atom group by name; returns NULL if not found.
Definition: colvarmodule.cpp:767
void * num_biases_types_used_
Pointer to a map counting how many biases of each type were used.
Definition: colvarmodule.h:403
int catch_input_errors(int result)
Useful wrapper to interrupt parsing if any error occurs.
Definition: colvarmodule.cpp:728
std::vector< std::string > index_file_names
Names of .ndx files that have been loaded.
Definition: colvarmodule.h:837
static int log_level_
Level of logging requested by the user.
Definition: colvarmodule.h:791
std::vector< colvar * > * variables_active()
Collective variables with the active flag on.
Definition: colvarmodule.cpp:187
std::vector< colvarbias * > * biases_active()
Array of active collective variable biases.
Definition: colvarmodule.cpp:219
int patch_version_int
Patch version number (non-zero in patch releases of other packages)
Definition: colvarmodule.h:142
int append_new_config(std::string const &conf)
Add new configuration during parsing (e.g. to implement back-compatibility); cannot be nested,...
Definition: colvarmodule.cpp:368
std::istream & read_objects_state(std::istream &is)
Read the states of individual objects; allows for changes.
Definition: colvarmodule.cpp:1662
real total_bias_energy
Energy of built-in and scripted biases, summed per time-step.
Definition: colvarmodule.h:398
static rvector position_distance(atom_pos const &pos1, atom_pos const &pos2)
Get the distance between two atomic positions with pbcs handled correctly.
size_t num_biases_type(std::string const &type) const
Return how many biases of this type are defined.
Definition: colvarmodule.cpp:698
static size_t const it_width
Number of characters to represent a time step.
Definition: colvarmodule.h:753
static bool use_scripted_forces
Use scripted colvars forces?
Definition: colvarmodule.h:940
std::istream & read_state(std::istream &is)
Read all objects' state fron a formatted (text) stream.
Definition: colvarmodule.cpp:1621
static void log(std::string const &message, int min_log_level=10)
Definition: colvarmodule.cpp:1988
std::vector< unsigned char > input_state_buffer_
Internal state buffer, to be read as an unformatted stream.
Definition: colvarmodule.h:551
colvarparse * parse
Configuration file parser object.
Definition: colvarmodule.h:885
int calc_component_smp(int i)
Calculate the value of the specified component (to be called in a SMP loop)
Definition: colvarmodule.cpp:205
static size_t cv_traj_freq
Frequency for collective variables trajectory output.
Definition: colvarmodule.h:872
static size_t & depth()
Get the current object depth in the hierarchy.
Definition: colvarmodule.cpp:2018
static bool scripting_after_biases
Wait for all biases before calculating scripted forces?
Definition: colvarmodule.h:943
std::string const & get_config() const
Get the configuration string read so far (includes comments)
Definition: colvarmodule.cpp:362
static size_t restart_out_freq
Frequency for saving output restarts.
Definition: colvarmodule.h:875
int parse_colvars(std::string const &conf)
Parse and initialize collective variables.
Definition: colvarmodule.cpp:484
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:2065
static int errorCode
Definition: colvarmodule.h:294
std::vector< colvar * > colvars
Array of collective variables.
Definition: colvarmodule.h:350
static real atan2(real const &x, real const &y)
Reimplemented to work around MS compiler issues.
Definition: colvarmodule.h:245
std::vector< colvar * > * variables_active_smp()
Definition: colvarmodule.cpp:193
std::vector< atom_group * > named_atom_groups_soa
Array of named atom groups.
Definition: colvarmodule.h:362
static void increase_depth()
Increase the depth (number of indentations in the output)
Definition: colvarmodule.cpp:2004
static real rand_gaussian()
Pseudo-random number with Gaussian distribution.
colvarmodule()
Cannot initialize the main object without a proxy.
int write_output_files()
Write all other output files.
Definition: colvarmodule.cpp:1777
static size_t const cv_prec
Number of digits to represent a collective variables value(s)
Definition: colvarmodule.h:755
static colvarmodule * main()
Access the one instance of the Colvars module.
Definition: colvarmodule.cpp:175
int parse_biases_type(std::string const &conf, char const *keyword)
Parse and initialize collective variable biases of a specific type.
Definition: colvarmodule.cpp:547
static real sqrt(real const &x)
Reimplemented to work around MS compiler issues.
Definition: colvarmodule.h:188
std::string version() const
Get the version string (YYYY-MM-DD format)
Definition: colvarmodule.h:83
static int log_level()
Level of logging requested by the user.
Definition: colvarmodule.h:796
int version_int
Integer representing the version string (allows comparisons)
Definition: colvarmodule.h:139
std::ostream & write_traj_label(std::ostream &os)
Write explanatory labels in the trajectory file.
Definition: colvarmodule.cpp:1938
static real acos(real const &x)
Reimplemented to work around compiler issues; return hard-coded values for boundary conditions.
Definition: colvarmodule.h:229
int reset()
Actual function called by the destructor.
Definition: colvarmodule.cpp:1353
int calc_biases()
Calculate biases.
Definition: colvarmodule.cpp:1011
std::vector< colvar * > colvars_smp
Definition: colvarmodule.h:357
std::vector< colvar * > colvars_active
Array of collective variables.
Definition: colvarmodule.h:353
int analyze()
Perform analysis.
Definition: colvarmodule.cpp:1250
std::string read_colvar(std::string const &name)
Read a colvar value.
Definition: colvarmodule.cpp:812
size_t num_variables() const
Return how many variables are defined.
Definition: colvarmodule.cpp:658
std::string restart_out_name
Output restart file name.
Definition: colvarmodule.h:877
int version_number() const
Get the version number (higher = more recent)
Definition: colvarmodule.h:89
int read_traj(char const *traj_filename, long traj_read_begin, long traj_read_end)
Read a collective variable trajectory (post-processing only, not called at runtime)
Definition: colvarmodule.cpp:1797
static size_t const cv_width
Number of characters to represent a collective variables value(s)
Definition: colvarmodule.h:757
size_t depth_s
Counter for the current depth in the object hierarchy (useg e.g. in output)
Definition: colvarmodule.h:900
static bool debug()
Whether debug output should be enabled (compile-time option)
Definition: colvarmodule.h:414
int change_configuration(std::string const &bias_name, std::string const &conf)
Definition: colvarmodule.cpp:794
std::vector< colvarbias * > biases
Array of collective variable biases.
Definition: colvarmodule.h:395
std::string restart_version_str
Version of the most recent state file read.
Definition: colvarmodule.h:894
int restart_version_int
Integer version of the most recent state file read.
Definition: colvarmodule.h:897
int calc_scripted_forces()
Calculate the energy and forces of scripted biases.
Definition: colvarmodule.cpp:1146
std::string source_Tcl_script
Initialization Tcl script, user-provided.
Definition: colvarmodule.h:500
int write_restart_string(std::string &output)
Write the state into a string.
Definition: colvarmodule.cpp:1193
static std::istream & getline(std::istream &is, std::string &line)
Definition: colvarmodule.cpp:286
static int log_input_files()
Level at which input-file operations (configuration, state) are logged.
Definition: colvarmodule.h:826
int calc_colvars()
Calculate collective variables.
Definition: colvarmodule.cpp:913
static real fabs(real const &x)
Reimplemented to work around MS compiler issues.
Definition: colvarmodule.h:182
std::vector< colvar * > * variables()
Array of collective variables.
Definition: colvarmodule.cpp:181
static void decrease_depth()
Decrease the depth (number of indentations in the output)
Definition: colvarmodule.cpp:2010
int update_engine_parameters()
Definition: colvarmodule.cpp:1305
real energy_difference(std::string const &bias_name, std::string const &conf)
Definition: colvarmodule.cpp:828
static int log_default_params()
Level at which a keyword's default value is logged.
Definition: colvarmodule.h:814
memory_stream & write_state(memory_stream &os)
Write the state of the module to an unformatted (binary) file.
int reset_index_groups()
Clear the index groups loaded so far.
Definition: colvarmodule.cpp:2173
static int log_user_params()
Level at which a keyword's user-provided value is logged.
Definition: colvarmodule.h:808
int print_total_forces_errning(bool warn_total_forces)
If needed (old restart file), print the warning that cannot be ignored.
Definition: colvarmodule.cpp:1747
memory_stream & read_objects_state(memory_stream &is)
Read the states of individual objects; allows for changes.
static step_number step_relative()
Return the current step number from the beginning of this run.
Definition: colvarmodule.h:315
int read_index_file(char const *filename)
Read a Gromacs .ndx file.
size_t num_variables_feature(int feature_id) const
Return how many variables have this feature enabled.
Definition: colvarmodule.cpp:664
static real sin(real const &x)
Reimplemented to work around MS compiler issues.
Definition: colvarmodule.h:194
~colvarmodule()
Destructor.
Definition: colvarmodule.cpp:1324
static std::string & output_prefix()
Accessor for the above.
Definition: colvarmodule.h:341
void config_changed()
Signals to the module object that the configuration has changed.
Definition: colvarmodule.cpp:375
static colvarproxy * proxy
Pointer to the proxy object, used to retrieve atomic data from the hosting program; it is static in o...
Definition: colvarmodule.h:951
static std::string to_str(char const *s)
Convert to string for output purposes.
Definition: colvarmodule.cpp:2407
static step_number step_absolute()
Definition: colvarmodule.h:322
static colvar * colvar_by_name(std::string const &name)
Look up a colvar by name; returns NULL if not found.
Definition: colvarmodule.cpp:754
static int log_init_messages()
Level at which initialization messages are logged.
Definition: colvarmodule.h:802
static colvarbias * bias_by_name(std::string const &name)
Look up a bias by name; returns NULL if not found.
Definition: colvarmodule.cpp:740
int open_traj_file(std::string const &file_name)
Open a trajectory file if requested (and leave it open)
std::string cvm_output_prefix
Prefix for all output files for this run.
Definition: colvarmodule.h:337
int setup_input()
(Re)initialize and (re)read the input state file calling read_restart()
Definition: colvarmodule.cpp:1388
int parse_biases(std::string const &conf)
Parse and initialize collective variable biases.
Definition: colvarmodule.cpp:591
int write_state_buffer(std::vector< unsigned char > &buffer)
Write the state of the module to an array of bytes (wrapped as a memory_stream object)
Definition: colvarmodule.cpp:1928
long long step_number
Use a 64-bit integer to store the step number.
Definition: colvarmodule.h:147
int parse_global_params(std::string const &conf)
Parse the few module's global parameters.
Definition: colvarmodule.cpp:381
static real debug_gradients_step_size
Finite difference step size (if there is no dynamics, or if gradients need to be tested independently...
Definition: colvarmodule.h:332
int run_tcl_script(std::string const &filename)
Run provided Tcl script.
Definition: colvarmodule.cpp:472
int close_traj_file()
Close it (note: currently unused)
std::vector< size_t > depth_v
Thread-specific depth.
Definition: colvarmodule.h:903
static size_t const en_width
Number of characters to represent the collective variables energy.
Definition: colvarmodule.h:761
static std::string to_str(std::vector< real > const &x, size_t width=0, size_t prec=0)
Convert to string for output purposes.
Base class containing parsing functions; all objects which need to parse input inherit from this.
Definition: colvarparse.h:27
Definition: colvarproxy.h:559
Value of a collective variable: this is a metatype which can be set at runtime. By default it is set ...
Definition: colvarvalue.h:43
colvarmodule cvm
Shorthand for the frequently used type prefix.
Definition: colvarmodule.h:960