Collective Variables Module - Developer Documentation
Loading...
Searching...
No Matches
colvarproxy.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 COLVARPROXY_H
11#define COLVARPROXY_H
12
13#include <functional>
14
15#include "colvarmodule.h"
16#include "colvartypes.h"
17#include "colvarproxy_io.h"
18#include "colvarproxy_replicas.h"
19#include "colvarproxy_system.h"
20#include "colvarproxy_tcl.h"
21#include "colvarproxy_volmaps.h"
22
36
37
38// forward declarations
39class colvarscript;
40
41
44
45public:
46
47#if defined(COLVARS_CUDA)
48 template <typename T>
49 using allocator_type = cvm::CudaHostAllocator<T>;
50#else
51 template <typename T>
52 using allocator_type = std::allocator<T>;
53#endif
54 using atom_buffer_real_t = std::vector<cvm::real, allocator_type<cvm::real>>;
55 using atom_buffer_rvector_t = std::vector<cvm::rvector, allocator_type<cvm::rvector>>;
56
59
61 virtual ~colvarproxy_atoms();
62
65 virtual int init_atom(int atom_number);
66
69 virtual int check_atom_id(int atom_number);
70
73
77 virtual int init_atom(cvm::residue_id const &residue,
78 std::string const &atom_name,
79 std::string const &segment_id);
80
82 virtual int check_atom_id(cvm::residue_id const &residue,
83 std::string const &atom_name,
84 std::string const &segment_id);
85
88 virtual void clear_atom(int index);
89
91 int reset();
92
95 inline int get_atom_id(int index) const
96 {
97 return atoms_ids[index];
98 }
99
102 inline cvm::real get_atom_mass(int index) const
103 {
104 return atoms_masses[index];
105 }
106
109 inline void increase_refcount(int index)
110 {
111 atoms_refcount[index] += 1;
112 }
113
116 inline cvm::real get_atom_charge(int index) const
117 {
118 return atoms_charges[index];
119 }
120
123 inline cvm::rvector get_atom_position(int index) const
124 {
125 return atoms_positions[index];
126 }
127
130 inline cvm::rvector get_atom_total_force(int index) const
131 {
132 return atoms_total_forces[index];
133 }
134
138 inline void apply_atom_force(int index, cvm::rvector const &new_force)
139 {
140 atoms_new_colvar_forces[index] += new_force;
141 }
142
144 inline cvm::rvector get_atom_velocity(int /* index */)
145 {
146 cvm::error("Error: reading the current velocity of an atom "
147 "is not yet implemented.\n",
148 COLVARS_NOT_IMPLEMENTED);
149 return cvm::rvector(0.0);
150 }
151
152 inline std::vector<int> const *get_atom_ids() const
153 {
154 return &atoms_ids;
155 }
156
158 size_t get_num_active_atoms() const;
159
160 inline atom_buffer_real_t const *get_atom_masses() const
161 {
162 return &atoms_masses;
163 }
164
165 inline atom_buffer_real_t *modify_atom_masses()
166 {
167 // assume that we are requesting masses to change them
168 updated_masses_ = true;
169 return &atoms_masses;
170 }
171
172 inline atom_buffer_real_t const *get_atom_charges()
173 {
174 return &atoms_charges;
175 }
176
177 inline atom_buffer_real_t *modify_atom_charges()
178 {
179 // assume that we are requesting charges to change them
180 updated_charges_ = true;
181 return &atoms_charges;
182 }
183
184 inline atom_buffer_rvector_t const *get_atom_positions() const
185 {
186 return &atoms_positions;
187 }
188
189 inline atom_buffer_rvector_t *modify_atom_positions()
190 {
191 return &atoms_positions;
192 }
193
194 inline atom_buffer_rvector_t const *get_atom_total_forces() const
195 {
196 return &atoms_total_forces;
197 }
198
199 inline atom_buffer_rvector_t *modify_atom_total_forces()
200 {
201 return &atoms_total_forces;
202 }
203
204 inline atom_buffer_rvector_t const *get_atom_applied_forces() const
205 {
207 }
208
209 inline atom_buffer_rvector_t *modify_atom_applied_forces()
210 {
212 }
213
216
219
222 {
224 }
225
228 {
230 }
231
233 inline int max_atoms_applied_force_id() const
234 {
236 }
237
239 inline bool modified_atom_list() const
240 {
241 return modified_atom_list_;
242 }
243
246 {
247 modified_atom_list_ = false;
248 }
249
251 inline bool updated_masses() const
252 {
253 return updated_masses_;
254 }
255
257 inline bool updated_charges() const
258 {
259 return updated_charges_;
260 }
261
262protected:
263
266 std::vector<int> atoms_ids;
268 std::vector<size_t> atoms_refcount;
270 std::vector<cvm::real, allocator_type<cvm::real>> atoms_masses;
272 std::vector<cvm::real, allocator_type<cvm::real>> atoms_charges;
274 std::vector<cvm::rvector, allocator_type<cvm::rvector>> atoms_positions;
276 std::vector<cvm::rvector, allocator_type<cvm::rvector>> atoms_total_forces;
278 std::vector<cvm::rvector, allocator_type<cvm::rvector>> atoms_new_colvar_forces;
279
282
285
288
291
293 bool updated_masses_, updated_charges_;
294
297 int add_atom_slot(int atom_id);
298
299};
300
301
305
306public:
307
310
312 virtual ~colvarproxy_atom_groups();
313
315 int reset();
316
318 virtual int scalable_group_coms();
319
321 virtual int init_atom_group(std::vector<int> const &atoms_ids);
322
324 virtual void clear_atom_group(int index);
325
327 inline int get_atom_group_id(int index) const
328 {
329 return atom_groups_ids[index];
330 }
331
333 inline cvm::real get_atom_group_mass(int index) const
334 {
335 return atom_groups_masses[index];
336 }
337
339 inline cvm::real get_atom_group_charge(int index) const
340 {
341 return atom_groups_charges[index];
342 }
343
345 inline cvm::rvector get_atom_group_com(int index) const
346 {
347 return atom_groups_coms[index];
348 }
349
352 {
353 return atom_groups_total_forces[index];
354 }
355
357 inline void apply_atom_group_force(int index, cvm::rvector const &new_force)
358 {
359 atom_groups_new_colvar_forces[index] += new_force;
360 }
361
363 inline cvm::rvector get_atom_group_velocity(int /* index */)
364 {
365 cvm::error("Error: reading the current velocity of an atom group is not yet implemented.\n",
366 COLVARS_NOT_IMPLEMENTED);
367 return cvm::rvector(0.0);
368 }
369
370 inline std::vector<int> const *get_atom_group_ids() const
371 {
372 return &atom_groups_ids;
373 }
374
376 size_t get_num_active_atom_groups() const;
377
378 inline std::vector<cvm::real> *modify_atom_group_masses()
379 {
380 // TODO updated_masses
381 return &atom_groups_masses;
382 }
383
384 inline std::vector<cvm::real> *modify_atom_group_charges()
385 {
386 // TODO updated masses
387 return &atom_groups_charges;
388 }
389
390 inline std::vector<cvm::rvector> *modify_atom_group_positions()
391 {
392 return &atom_groups_coms;
393 }
394
395 inline std::vector<cvm::rvector> *modify_atom_group_total_forces()
396 {
398 }
399
400 inline std::vector<cvm::rvector> *modify_atom_group_applied_forces()
401 {
403 }
404
407
410
413 {
415 }
416
419 {
421 }
422
423protected:
424
427 std::vector<int> atom_groups_ids;
429 std::vector<size_t> atom_groups_refcount;
431 std::vector<cvm::real> atom_groups_masses;
433 std::vector<cvm::real> atom_groups_charges;
435 std::vector<cvm::rvector> atom_groups_coms;
437 std::vector<cvm::rvector> atom_groups_total_forces;
439 std::vector<cvm::rvector> atom_groups_new_colvar_forces;
440
443
446
448 int add_atom_group_slot(int atom_group_id);
449};
450
451
452#if defined(_OPENMP)
453#include <omp.h>
454#else
455struct omp_lock_t;
456#endif
457
460
461public:
462
463 enum class smp_mode_t {cvcs, inner_loop, none};
464
467
469 virtual ~colvarproxy_smp();
470
472 virtual smp_mode_t get_smp_mode() const;
473
475 virtual int set_smp_mode(smp_mode_t mode);
476
478 virtual int smp_loop(int n_items, std::function<int (int)> const &worker);
479
481 virtual int smp_biases_loop();
482
484 virtual int smp_biases_script_loop();
485
487 virtual int smp_thread_id();
488
490 virtual int smp_num_threads();
491
493 virtual int smp_lock();
494
496 virtual int smp_trylock();
497
499 virtual int smp_unlock();
500
501protected:
502
504 omp_lock_t *omp_lock_state;
505
508 smp_mode_t smp_mode;
509};
510
511
514
515public:
516
519
521 virtual ~colvarproxy_script();
522
526
529
531 virtual int run_force_callback();
532
533 virtual int run_colvar_callback(
534 std::string const &name,
535 std::vector<const colvarvalue *> const &cvcs,
536 colvarvalue &value);
537
538 virtual int run_colvar_gradient_callback(
539 std::string const &name,
540 std::vector<const colvarvalue *> const &cvcs,
541 std::vector<cvm::matrix2d<cvm::real> > &gradient);
542};
543
544
545
550 : public colvarproxy_system,
551 public colvarproxy_atoms,
553 public colvarproxy_volmaps,
554 public colvarproxy_smp,
556 public colvarproxy_script,
557 public colvarproxy_tcl,
558 public colvarproxy_io
559{
560
561public:
562
565
567 colvarproxy();
568
570 ~colvarproxy() override;
571
572 inline std::string const &engine_name() const
573 {
574 return engine_name_;
575 }
576
577 bool io_available() override;
578
580 virtual int request_deletion();
581
583 inline bool delete_requested() const
584 {
585 return b_delete_requested;
586 }
587
589 virtual int reset();
590
592 virtual int parse_module_config();
593
600 virtual int load_atoms_pdb(char const *filename, cvm::atom_group &atoms,
601 std::string const &pdb_field, double pdb_field_value);
602
610 virtual int load_coords_pdb(char const *filename, std::vector<cvm::atom_pos> &pos,
611 std::vector<int> const &sorted_ids, std::string const &pdb_field,
612 double pdb_field_value);
613
615 virtual int setup();
616
618 inline bool engine_ready() const
619 {
620 return engine_ready_;
621 }
622
624 void add_config(std::string const &cmd, std::string const &conf);
625
629 virtual int update_input();
630
632 virtual int update_output();
633
635 int end_of_step();
636
638 virtual void log(std::string const &message);
639
641 virtual void error(std::string const &message);
642
644 void add_error_msg(std::string const &message);
645
647 std::string const & get_error_msgs();
648
650 void clear_error_msgs();
651
653 inline bool simulation_running() const
654 {
656 }
657
661 inline bool simulation_continuing() const
662 {
664 }
665
667 int post_run();
668
671
674
676 int get_version_from_string(char const *version_string);
677
679 int version_number() const
680 {
681 return version_int;
682 }
683
684protected:
685
688
690 std::string error_output;
691
694
699
702
705
708
709protected:
710
712 std::string engine_name_ = "standalone";
713
716
717};
718
719
720#endif
Group of atom objects, mostly used by a colvar::cvc object to gather all atomic data.
Definition: colvaratoms.h:159
Arbitrary size array (two dimensions) suitable for linear algebra operations (i.e....
Definition: colvartypes.h:372
vector of real numbers with three components
Definition: colvartypes.h:723
Collective variables module (main class)
Definition: colvarmodule.h:69
double real
Defining an abstract real number allows to switch precision.
Definition: colvarmodule.h:141
int residue_id
Residue identifier.
Definition: colvarmodule.h:266
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:2070
Container of atom group data (allow collection of aggregated atomic data)
Definition: colvarproxy.h:304
cvm::rvector get_atom_group_total_force(int index) const
Read the current total force of the given atom group.
Definition: colvarproxy.h:351
int get_atom_group_id(int index) const
Get the numeric ID of the given atom group (for the MD program)
Definition: colvarproxy.h:327
virtual void clear_atom_group(int index)
Used by the atom_group class destructor.
Definition: colvarproxy.cpp:206
colvarproxy_atom_groups()
Constructor.
Definition: colvarproxy.cpp:153
cvm::real get_atom_group_charge(int index) const
Get the charge of the given atom group.
Definition: colvarproxy.h:339
std::vector< cvm::real > atom_groups_charges
Total charges of the atom groups (allow redefinition during a run, as done e.g. in LAMMPS)
Definition: colvarproxy.h:433
int add_atom_group_slot(int atom_group_id)
Used by all init_atom_group() functions: create a slot for an atom group not requested yet.
Definition: colvarproxy.cpp:178
virtual int scalable_group_coms()
Whether this proxy implementation has capability for scalable groups.
Definition: colvarproxy.cpp:191
std::vector< cvm::rvector > atom_groups_new_colvar_forces
Forces applied from colvars, to be communicated to the MD integrator.
Definition: colvarproxy.h:439
std::vector< size_t > atom_groups_refcount
Keep track of how many times each group is used by a separate cvc.
Definition: colvarproxy.h:429
void compute_max_atom_groups_applied_force()
Compute the maximum norm among all applied forces.
Definition: colvarproxy.cpp:236
cvm::rvector get_atom_group_velocity(int)
Read the current velocity of the given atom group.
Definition: colvarproxy.h:363
cvm::real atom_groups_max_applied_force_
Maximum norm among all applied group forces.
Definition: colvarproxy.h:445
cvm::real rms_atom_groups_applied_force() const
Get the root-mean-square of the applied forces.
Definition: colvarproxy.h:412
cvm::real get_atom_group_mass(int index) const
Get the mass of the given atom group.
Definition: colvarproxy.h:333
int reset()
Clear atom group data.
Definition: colvarproxy.cpp:165
void compute_rms_atom_groups_applied_force()
Compute the root-mean-square of the applied forces.
Definition: colvarproxy.cpp:229
cvm::real max_atom_groups_applied_force() const
Get the maximum norm among all applied forces.
Definition: colvarproxy.h:418
std::vector< cvm::real > atom_groups_masses
Total masses of the atom groups.
Definition: colvarproxy.h:431
virtual ~colvarproxy_atom_groups()
Destructor.
Definition: colvarproxy.cpp:159
size_t get_num_active_atom_groups() const
Return number of atom groups with positive reference count.
Definition: colvarproxy.cpp:219
cvm::rvector get_atom_group_com(int index) const
Read the current position of the center of mass given atom group.
Definition: colvarproxy.h:345
void apply_atom_group_force(int index, cvm::rvector const &new_force)
Request that this force is applied to the given atom group.
Definition: colvarproxy.h:357
cvm::real atom_groups_rms_applied_force_
Root-mean-square of the applied group forces.
Definition: colvarproxy.h:442
virtual int init_atom_group(std::vector< int > const &atoms_ids)
Prepare this group for collective variables calculation, selecting atoms by internal ids (0-based)
Definition: colvarproxy.cpp:197
std::vector< cvm::rvector > atom_groups_total_forces
Most recently updated total forces on the com of each group.
Definition: colvarproxy.h:437
std::vector< int > atom_groups_ids
Array of 0-based integers used to uniquely associate atom groups within the host program.
Definition: colvarproxy.h:427
std::vector< cvm::rvector > atom_groups_coms
Current centers of mass of the atom groups.
Definition: colvarproxy.h:435
Container of atomic data for processing by Colvars.
Definition: colvarproxy.h:43
cvm::real get_atom_mass(int index) const
Definition: colvarproxy.h:102
int reset()
Clear atomic data.
Definition: colvarproxy.cpp:38
int add_atom_slot(int atom_id)
Definition: colvarproxy.cpp:51
std::vector< cvm::rvector, allocator_type< cvm::rvector > > atoms_total_forces
Most recent total forces on each atom.
Definition: colvarproxy.h:276
bool updated_masses() const
Record whether masses have been updated.
Definition: colvarproxy.h:251
virtual int init_atom(int atom_number)
Definition: colvarproxy.cpp:65
size_t get_num_active_atoms() const
Return number of atoms with positive reference count.
Definition: colvarproxy.cpp:114
cvm::real atoms_rms_applied_force_
Root-mean-square of the applied forces.
Definition: colvarproxy.h:281
colvarproxy_atoms()
Constructor.
Definition: colvarproxy.cpp:23
void apply_atom_force(int index, cvm::rvector const &new_force)
Definition: colvarproxy.h:138
std::vector< cvm::real, allocator_type< cvm::real > > atoms_masses
Masses of the atoms (allow redefinition during a run, as done e.g. in LAMMPS)
Definition: colvarproxy.h:270
cvm::rvector get_atom_velocity(int)
Read the current velocity of the given atom.
Definition: colvarproxy.h:144
cvm::real get_atom_charge(int index) const
Definition: colvarproxy.h:116
virtual ~colvarproxy_atoms()
Destructor.
Definition: colvarproxy.cpp:32
void increase_refcount(int index)
Definition: colvarproxy.h:109
cvm::real rms_atoms_applied_force() const
Get the root-mean-square of the applied forces.
Definition: colvarproxy.h:221
virtual int check_atom_name_selections_available()
Check whether it is possible to select atoms by residue number name.
Definition: colvarproxy.cpp:77
std::vector< cvm::rvector, allocator_type< cvm::rvector > > atoms_positions
Current three-dimensional positions of the atoms.
Definition: colvarproxy.h:274
bool modified_atom_list_
Whether the atom list has been modified internally.
Definition: colvarproxy.h:290
std::vector< cvm::rvector, allocator_type< cvm::rvector > > atoms_new_colvar_forces
Forces applied from colvars, to be communicated to the MD integrator.
Definition: colvarproxy.h:278
cvm::rvector get_atom_position(int index) const
Definition: colvarproxy.h:123
bool modified_atom_list() const
Whether the atom list has been modified internally.
Definition: colvarproxy.h:239
void compute_max_atoms_applied_force()
Compute the maximum norm among all applied forces.
Definition: colvarproxy.cpp:131
virtual void clear_atom(int index)
Used by the atom class destructor: rather than deleting the array slot (costly) set the corresponding...
Definition: colvarproxy.cpp:102
int atoms_max_applied_force_id_
ID of the atom with the maximum norm among all applied forces.
Definition: colvarproxy.h:287
void reset_modified_atom_list()
Reset the modified atom list flag.
Definition: colvarproxy.h:245
cvm::rvector get_atom_total_force(int index) const
Definition: colvarproxy.h:130
int max_atoms_applied_force_id() const
Get the atom ID with the largest applied force.
Definition: colvarproxy.h:233
bool updated_masses_
Whether the masses and charges have been updated from the host code.
Definition: colvarproxy.h:293
cvm::real atoms_max_applied_force_
Maximum norm among all applied forces.
Definition: colvarproxy.h:284
std::vector< cvm::real, allocator_type< cvm::real > > atoms_charges
Charges of the atoms (allow redefinition during a run, as done e.g. in LAMMPS)
Definition: colvarproxy.h:272
std::vector< size_t > atoms_refcount
Keep track of how many times each atom is used by a separate colvar object.
Definition: colvarproxy.h:268
bool updated_charges() const
Record whether masses have been updated.
Definition: colvarproxy.h:257
cvm::real max_atoms_applied_force() const
Get the maximum norm among all applied forces.
Definition: colvarproxy.h:227
void compute_rms_atoms_applied_force()
Compute the root-mean-square of the applied forces.
Definition: colvarproxy.cpp:124
virtual int check_atom_id(int atom_number)
Definition: colvarproxy.cpp:71
int get_atom_id(int index) const
Definition: colvarproxy.h:95
std::vector< int > atoms_ids
Array of 0-based integers used to uniquely associate atoms within the host program.
Definition: colvarproxy.h:266
Methods for data input/output.
Definition: colvarproxy_io.h:20
Methods for multiple-replica communication.
Definition: colvarproxy_replicas.h:23
Methods for scripting language interface (Tcl or Python)
Definition: colvarproxy.h:513
bool have_scripts
Do we have a scripting interface?
Definition: colvarproxy.h:528
virtual ~colvarproxy_script()
Destructor.
Definition: colvarproxy.cpp:418
colvarproxy_script()
Constructor.
Definition: colvarproxy.cpp:411
virtual int run_force_callback()
Run a user-defined colvar forces script.
Definition: colvarproxy.cpp:427
colvarscript * script
Definition: colvarproxy.h:525
Methods for SMP parallelization.
Definition: colvarproxy.h:459
virtual smp_mode_t get_smp_mode() const
Get the current SMP mode.
Definition: colvarproxy.cpp:268
smp_mode_t smp_mode
Definition: colvarproxy.h:508
virtual int smp_biases_script_loop()
Distribute calculation of biases across threads 2nd through last, with all scripted biased on 1st thr...
Definition: colvarproxy.cpp:333
virtual int smp_thread_id()
Index of this thread.
Definition: colvarproxy.cpp:362
virtual int smp_trylock()
Attempt to lock the proxy's shared data.
Definition: colvarproxy.cpp:391
virtual int smp_lock()
Lock the proxy's shared data for access by a thread, if threads are implemented; if not implemented,...
Definition: colvarproxy.cpp:382
virtual int set_smp_mode(smp_mode_t mode)
Set the current SMP mode.
Definition: colvarproxy.cpp:276
virtual int smp_num_threads()
Number of threads sharing this address space.
Definition: colvarproxy.cpp:372
omp_lock_t * omp_lock_state
Lock state for OpenMP.
Definition: colvarproxy.h:504
virtual int smp_unlock()
Release the lock.
Definition: colvarproxy.cpp:401
virtual int smp_biases_loop()
Distribute calculation of biases across threads.
Definition: colvarproxy.cpp:310
virtual int smp_loop(int n_items, std::function< int(int)> const &worker)
Distribute computation over threads using OpenMP, unless overridden in the backend (e....
Definition: colvarproxy.cpp:291
virtual ~colvarproxy_smp()
Destructor.
Definition: colvarproxy.cpp:257
colvarproxy_smp()
Constructor.
Definition: colvarproxy.cpp:244
Methods for accessing the simulation system (PBCs, integrator, etc)
Definition: colvarproxy_system.h:15
Methods for using Tcl within Colvars.
Definition: colvarproxy_tcl.h:28
Container of grid-based objects.
Definition: colvarproxy_volmaps.h:8
Definition: colvarproxy.h:559
virtual int update_input()
Definition: colvarproxy.cpp:564
colvarproxy()
Constructor.
Definition: colvarproxy.cpp:450
std::string error_output
Collected error messages.
Definition: colvarproxy.h:690
virtual int update_output()
Update data based on the results of a Colvars call (e.g. send forces)
Definition: colvarproxy.cpp:570
void add_config(std::string const &cmd, std::string const &conf)
Enqueue new configuration text, to be parsed as soon as possible.
Definition: colvarproxy.cpp:504
virtual int request_deletion()
Request deallocation of the module (currently only implemented by VMD)
Definition: colvarproxy.cpp:496
colvarmodule * colvars
Pointer to the main object.
Definition: colvarproxy.h:564
bool simulation_continuing() const
Definition: colvarproxy.h:661
void clear_error_msgs()
As the name says.
Definition: colvarproxy.cpp:739
void add_error_msg(std::string const &message)
Record error message (used by VMD to collect them after a script call)
Definition: colvarproxy.cpp:729
int version_int
Integer representing the version string (allows comparisons)
Definition: colvarproxy.h:704
std::string const & get_error_msgs()
Retrieve accumulated error messages.
Definition: colvarproxy.cpp:745
int end_of_step()
Carry out operations needed before next simulation step is run.
Definition: colvarproxy.cpp:576
virtual void log(std::string const &message)
Print a message to the main log.
Definition: colvarproxy.cpp:716
bool b_delete_requested
Whether the entire module should be deallocated by the host engine.
Definition: colvarproxy.h:701
std::string engine_name_
Name of the simulation engine that the derived proxy object supports.
Definition: colvarproxy.h:712
void print_input_atomic_data()
Print a full list of all input atomic arrays for debug purposes.
Definition: colvarproxy.cpp:609
virtual int parse_module_config()
(Re)initialize the module
Definition: colvarproxy.cpp:516
bool engine_ready() const
Whether the engine allows to fully initialize Colvars immediately.
Definition: colvarproxy.h:618
virtual int load_coords_pdb(char const *filename, std::vector< cvm::atom_pos > &pos, std::vector< int > const &sorted_ids, std::string const &pdb_field, double pdb_field_value)
Load a set of coordinates from a PDB file.
Definition: colvarproxy.cpp:551
int get_version_from_string(char const *version_string)
Convert a version string "YYYY-MM-DD" into an integer.
Definition: colvarproxy.cpp:751
bool simulation_running() const
Whether a simulation is running (warn against irrecovarable errors)
Definition: colvarproxy.h:653
virtual int reset()
Reset proxy state, e.g. requested atoms.
Definition: colvarproxy.cpp:482
void * config_queue_
Queue of config strings or files to be fed to the module.
Definition: colvarproxy.h:715
int post_run()
Called at the end of a simulation segment (i.e. "run" command)
Definition: colvarproxy.cpp:597
bool b_simulation_continuing
Definition: colvarproxy.h:698
bool engine_ready_
Whether the engine allows to fully initialize Colvars immediately.
Definition: colvarproxy.h:687
bool delete_requested() const
Whether deallocation was requested.
Definition: colvarproxy.h:583
size_t features_hash
Track which features have been acknowledged during the last run.
Definition: colvarproxy.h:707
void print_output_atomic_data()
Print a full list of all applied forces for debug purposes.
Definition: colvarproxy.cpp:691
int version_number() const
Get the version number (higher = more recent)
Definition: colvarproxy.h:679
bool io_available() override
Ensure that we're on the main thread (derived class will do actual check)
Definition: colvarproxy.cpp:475
virtual int setup()
(Re)initialize required member data (called after the module)
Definition: colvarproxy.cpp:510
virtual int load_atoms_pdb(char const *filename, cvm::atom_group &atoms, std::string const &pdb_field, double pdb_field_value)
Read a selection of atom IDs from a PDB coordinate file.
Definition: colvarproxy.cpp:539
virtual void error(std::string const &message)
Print a message to the main log and/or let the host code know about it.
Definition: colvarproxy.cpp:722
bool b_simulation_running
Whether a simulation is running (warn against irrecovarable errors)
Definition: colvarproxy.h:693
~colvarproxy() override
Destructor.
Definition: colvarproxy.cpp:464
Definition: colvarscript.h:29
Value of a collective variable: this is a metatype which can be set at runtime. By default it is set ...
Definition: colvarvalue.h:43
Collective variables main module.