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#include "colvarproxy_gpu.h"
23
37
38
39// forward declarations
40class colvarscript;
41
42
45
46public:
47
48#if ( defined(COLVARS_CUDA) || defined(COLVARS_HIP) )
49 template <typename T>
51#else
52 template <typename T>
53 using allocator_type = std::allocator<T>;
54#endif
55 using atom_buffer_real_t = std::vector<cvm::real, allocator_type<cvm::real>>;
56 using atom_buffer_rvector_t = std::vector<cvm::rvector, allocator_type<cvm::rvector>>;
57
60
62 virtual ~colvarproxy_atoms();
63
66 virtual int init_atom(int atom_number);
67
70 virtual int check_atom_id(int atom_number);
71
74
78 virtual int init_atom(cvm::residue_id const &residue,
79 std::string const &atom_name,
80 std::string const &segment_id);
81
83 virtual int check_atom_id(cvm::residue_id const &residue,
84 std::string const &atom_name,
85 std::string const &segment_id);
86
89 virtual void clear_atom(int index);
90
92 int reset();
93
96 inline int get_atom_id(int index) const
97 {
98 return atoms_ids[index];
99 }
100
103 inline cvm::real get_atom_mass(int index) const
104 {
105 return atoms_masses[index];
106 }
107
110 inline void increase_refcount(int index)
111 {
112 atoms_refcount[index] += 1;
113 }
114
117 inline cvm::real get_atom_charge(int index) const
118 {
119 return atoms_charges[index];
120 }
121
124 inline cvm::rvector get_atom_position(int index) const
125 {
126 return atoms_positions[index];
127 }
128
131 inline cvm::rvector get_atom_total_force(int index) const
132 {
133 return atoms_total_forces[index];
134 }
135
139 inline void apply_atom_force(int index, cvm::rvector const &new_force)
140 {
141 atoms_new_colvar_forces[index] += new_force;
142 }
143
145 inline cvm::rvector get_atom_velocity(int /* index */)
146 {
147 cvm::error("Error: reading the current velocity of an atom "
148 "is not yet implemented.\n",
149 COLVARS_NOT_IMPLEMENTED);
150 return cvm::rvector(0.0);
151 }
152
153 inline std::vector<int> const *get_atom_ids() const
154 {
155 return &atoms_ids;
156 }
157
159 size_t get_num_active_atoms() const;
160
161 inline atom_buffer_real_t const *get_atom_masses() const
162 {
163 return &atoms_masses;
164 }
165
166 inline atom_buffer_real_t *modify_atom_masses()
167 {
168 // assume that we are requesting masses to change them
169 updated_masses_ = true;
170 return &atoms_masses;
171 }
172
173 inline atom_buffer_real_t const *get_atom_charges()
174 {
175 return &atoms_charges;
176 }
177
178 inline atom_buffer_real_t *modify_atom_charges()
179 {
180 // assume that we are requesting charges to change them
181 updated_charges_ = true;
182 return &atoms_charges;
183 }
184
185 inline atom_buffer_rvector_t const *get_atom_positions() const
186 {
187 return &atoms_positions;
188 }
189
190 inline atom_buffer_rvector_t *modify_atom_positions()
191 {
192 return &atoms_positions;
193 }
194
195 inline atom_buffer_rvector_t const *get_atom_total_forces() const
196 {
197 return &atoms_total_forces;
198 }
199
200 inline atom_buffer_rvector_t *modify_atom_total_forces()
201 {
202 return &atoms_total_forces;
203 }
204
205 inline atom_buffer_rvector_t const *get_atom_applied_forces() const
206 {
208 }
209
210 inline atom_buffer_rvector_t *modify_atom_applied_forces()
211 {
213 }
214
217
220
223 {
225 }
226
229 {
231 }
232
234 inline int max_atoms_applied_force_id() const
235 {
237 }
238
240 inline bool modified_atom_list() const
241 {
242 return modified_atom_list_;
243 }
244
247 {
248 modified_atom_list_ = false;
249 }
250
252 inline bool updated_masses() const
253 {
254 return updated_masses_;
255 }
256
258 inline bool updated_charges() const
259 {
260 return updated_charges_;
261 }
262
263protected:
264
267 std::vector<int> atoms_ids;
269 std::vector<size_t> atoms_refcount;
271 std::vector<cvm::real, allocator_type<cvm::real>> atoms_masses;
273 std::vector<cvm::real, allocator_type<cvm::real>> atoms_charges;
275 std::vector<cvm::rvector, allocator_type<cvm::rvector>> atoms_positions;
277 std::vector<cvm::rvector, allocator_type<cvm::rvector>> atoms_total_forces;
279 std::vector<cvm::rvector, allocator_type<cvm::rvector>> atoms_new_colvar_forces;
280
283
286
289
292
294 bool updated_masses_, updated_charges_;
295
298 int add_atom_slot(int atom_id);
299
300};
301
302
306
307public:
308
311
313 virtual ~colvarproxy_atom_groups();
314
316 int reset();
317
319 virtual int scalable_group_coms();
320
322 virtual int init_atom_group(std::vector<int> const &atoms_ids);
323
325 virtual void clear_atom_group(int index);
326
328 inline int get_atom_group_id(int index) const
329 {
330 return atom_groups_ids[index];
331 }
332
334 inline cvm::real get_atom_group_mass(int index) const
335 {
336 return atom_groups_masses[index];
337 }
338
340 inline cvm::real get_atom_group_charge(int index) const
341 {
342 return atom_groups_charges[index];
343 }
344
346 inline cvm::rvector get_atom_group_com(int index) const
347 {
348 return atom_groups_coms[index];
349 }
350
353 {
354 return atom_groups_total_forces[index];
355 }
356
358 inline void apply_atom_group_force(int index, cvm::rvector const &new_force)
359 {
360 atom_groups_new_colvar_forces[index] += new_force;
361 }
362
364 inline cvm::rvector get_atom_group_velocity(int /* index */)
365 {
366 cvm::error("Error: reading the current velocity of an atom group is not yet implemented.\n",
367 COLVARS_NOT_IMPLEMENTED);
368 return cvm::rvector(0.0);
369 }
370
371 inline std::vector<int> const *get_atom_group_ids() const
372 {
373 return &atom_groups_ids;
374 }
375
377 size_t get_num_active_atom_groups() const;
378
379 inline std::vector<cvm::real> *modify_atom_group_masses()
380 {
381 // TODO updated_masses
382 return &atom_groups_masses;
383 }
384
385 inline std::vector<cvm::real> *modify_atom_group_charges()
386 {
387 // TODO updated masses
388 return &atom_groups_charges;
389 }
390
391 inline std::vector<cvm::rvector> *modify_atom_group_positions()
392 {
393 return &atom_groups_coms;
394 }
395
396 inline std::vector<cvm::rvector> *modify_atom_group_total_forces()
397 {
399 }
400
401 inline std::vector<cvm::rvector> *modify_atom_group_applied_forces()
402 {
404 }
405
408
411
414 {
416 }
417
420 {
422 }
423
424protected:
425
428 std::vector<int> atom_groups_ids;
430 std::vector<size_t> atom_groups_refcount;
432 std::vector<cvm::real> atom_groups_masses;
434 std::vector<cvm::real> atom_groups_charges;
436 std::vector<cvm::rvector> atom_groups_coms;
438 std::vector<cvm::rvector> atom_groups_total_forces;
440 std::vector<cvm::rvector> atom_groups_new_colvar_forces;
441
444
447
449 int add_atom_group_slot(int atom_group_id);
450};
451
452
453#if defined(_OPENMP)
454#include <omp.h>
455#else
456struct omp_lock_t;
457#endif
458
461
462public:
463
464 enum class smp_mode_t {cvcs, inner_loop, gpu, none};
465
468
470 virtual ~colvarproxy_smp();
471
473 virtual smp_mode_t get_smp_mode() const;
474
476 virtual std::vector<smp_mode_t> get_available_smp_modes() const;
477
479 virtual smp_mode_t get_preferred_smp_mode() const;
480
482 virtual int set_smp_mode(smp_mode_t mode);
483
485 virtual int smp_loop(int n_items, std::function<int (int)> const &worker);
486
488 virtual int smp_biases_loop();
489
491 virtual int smp_biases_script_loop();
492
494 virtual int smp_thread_id();
495
497 virtual int smp_num_threads();
498
500 virtual int smp_lock();
501
503 virtual int smp_trylock();
504
506 virtual int smp_unlock();
507
508protected:
509
511 omp_lock_t *omp_lock_state;
512
515 smp_mode_t smp_mode;
516};
517
518
521
522public:
523
526
528 virtual ~colvarproxy_script();
529
533
536
538 virtual int run_force_callback();
539
540 virtual int run_colvar_callback(
541 std::string const &name,
542 std::vector<const colvarvalue *> const &cvcs,
543 colvarvalue &value);
544
545 virtual int run_colvar_gradient_callback(
546 std::string const &name,
547 std::vector<const colvarvalue *> const &cvcs,
548 std::vector<cvm::matrix2d<cvm::real> > &gradient);
549};
550
551
552
557 : public colvarproxy_system,
558 public colvarproxy_atoms,
560 public colvarproxy_volmaps,
561 public colvarproxy_smp,
563 public colvarproxy_script,
564 public colvarproxy_tcl,
565 public colvarproxy_io,
566 public colvarproxy_gpu
567{
568
569public:
570
573
575 colvarproxy();
576
578 virtual ~colvarproxy() override;
579
580 inline std::string const &engine_name() const
581 {
582 return engine_name_;
583 }
584
585 bool io_available() override;
586
588 virtual int request_deletion();
589
591 inline bool delete_requested() const
592 {
593 return b_delete_requested;
594 }
595
597 virtual int reset();
598
600 virtual int parse_module_config();
601
608 virtual int load_atoms_pdb(char const *filename, cvm::atom_group &atoms,
609 std::string const &pdb_field, double pdb_field_value);
610
611
619 virtual int load_coords_pdb(char const *filename, std::vector<cvm::atom_pos> &pos,
620 std::vector<int> const &sorted_ids, std::string const &pdb_field,
621 double pdb_field_value);
622
624 virtual int setup();
625
627 inline bool engine_ready() const
628 {
629 return engine_ready_;
630 }
631
633 void add_config(std::string const &cmd, std::string const &conf);
634
638 virtual int update_input();
639
641 virtual int update_output();
642
644 int end_of_step();
645
647 virtual void log(std::string const &message);
648
650 virtual void error(std::string const &message);
651
653 void add_error_msg(std::string const &message);
654
656 std::string const & get_error_msgs();
657
659 void clear_error_msgs();
660
662 inline bool simulation_running() const
663 {
665 }
666
670 inline bool simulation_continuing() const
671 {
673 }
674
676 int post_run();
677
680
683
685 int get_version_from_string(char const *version_string);
686
688 int version_number() const
689 {
690 return version_int;
691 }
692
693protected:
694
697
699 std::string error_output;
700
703
708
711
714
717
718protected:
719
721 std::string engine_name_ = "standalone";
722
725
726};
727
728
729#endif
Arbitrary size array (two dimensions) suitable for linear algebra operations (i.e....
Definition: colvartypes.h:375
vector of real numbers with three components
Definition: colvartypes.h:726
Collective variables module (main class)
Definition: colvarmodule.h:71
double real
Defining an abstract real number allows to switch precision.
Definition: colvarmodule.h:98
int residue_id
Residue identifier.
Definition: colvarmodule.h:223
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:2181
Container of atom group data (allow collection of aggregated atomic data)
Definition: colvarproxy.h:305
cvm::rvector get_atom_group_total_force(int index) const
Read the current total force of the given atom group.
Definition: colvarproxy.h:352
int get_atom_group_id(int index) const
Get the numeric ID of the given atom group (for the MD program)
Definition: colvarproxy.h:328
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:340
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:434
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:440
std::vector< size_t > atom_groups_refcount
Keep track of how many times each group is used by a separate cvc.
Definition: colvarproxy.h:430
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:364
cvm::real atom_groups_max_applied_force_
Maximum norm among all applied group forces.
Definition: colvarproxy.h:446
cvm::real rms_atom_groups_applied_force() const
Get the root-mean-square of the applied forces.
Definition: colvarproxy.h:413
cvm::real get_atom_group_mass(int index) const
Get the mass of the given atom group.
Definition: colvarproxy.h:334
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:419
std::vector< cvm::real > atom_groups_masses
Total masses of the atom groups.
Definition: colvarproxy.h:432
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:346
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:358
cvm::real atom_groups_rms_applied_force_
Root-mean-square of the applied group forces.
Definition: colvarproxy.h:443
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:438
std::vector< int > atom_groups_ids
Array of 0-based integers used to uniquely associate atom groups within the host program.
Definition: colvarproxy.h:428
std::vector< cvm::rvector > atom_groups_coms
Current centers of mass of the atom groups.
Definition: colvarproxy.h:436
Container of atomic data for processing by Colvars.
Definition: colvarproxy.h:44
cvm::real get_atom_mass(int index) const
Definition: colvarproxy.h:103
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:277
bool updated_masses() const
Record whether masses have been updated.
Definition: colvarproxy.h:252
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:282
colvarproxy_atoms()
Constructor.
Definition: colvarproxy.cpp:23
void apply_atom_force(int index, cvm::rvector const &new_force)
Definition: colvarproxy.h:139
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:271
cvm::rvector get_atom_velocity(int)
Read the current velocity of the given atom.
Definition: colvarproxy.h:145
cvm::real get_atom_charge(int index) const
Definition: colvarproxy.h:117
virtual ~colvarproxy_atoms()
Destructor.
Definition: colvarproxy.cpp:32
void increase_refcount(int index)
Definition: colvarproxy.h:110
cvm::real rms_atoms_applied_force() const
Get the root-mean-square of the applied forces.
Definition: colvarproxy.h:222
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:275
bool modified_atom_list_
Whether the atom list has been modified internally.
Definition: colvarproxy.h:291
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:279
cvm::rvector get_atom_position(int index) const
Definition: colvarproxy.h:124
bool modified_atom_list() const
Whether the atom list has been modified internally.
Definition: colvarproxy.h:240
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:288
void reset_modified_atom_list()
Reset the modified atom list flag.
Definition: colvarproxy.h:246
cvm::rvector get_atom_total_force(int index) const
Definition: colvarproxy.h:131
int max_atoms_applied_force_id() const
Get the atom ID with the largest applied force.
Definition: colvarproxy.h:234
bool updated_masses_
Whether the masses and charges have been updated from the host code.
Definition: colvarproxy.h:294
cvm::real atoms_max_applied_force_
Maximum norm among all applied forces.
Definition: colvarproxy.h:285
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:273
std::vector< size_t > atoms_refcount
Keep track of how many times each atom is used by a separate colvar object.
Definition: colvarproxy.h:269
bool updated_charges() const
Record whether masses have been updated.
Definition: colvarproxy.h:258
cvm::real max_atoms_applied_force() const
Get the maximum norm among all applied forces.
Definition: colvarproxy.h:228
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:96
std::vector< int > atoms_ids
Array of 0-based integers used to uniquely associate atoms within the host program.
Definition: colvarproxy.h:267
Class for managing GPU memory allocation and data transfer.
Definition: colvarproxy_gpu.h:15
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:520
bool have_scripts
Do we have a scripting interface?
Definition: colvarproxy.h:535
virtual ~colvarproxy_script()
Destructor.
Definition: colvarproxy.cpp:426
colvarproxy_script()
Constructor.
Definition: colvarproxy.cpp:419
virtual int run_force_callback()
Run a user-defined colvar forces script.
Definition: colvarproxy.cpp:435
colvarscript * script
Definition: colvarproxy.h:532
Methods for SMP parallelization.
Definition: colvarproxy.h:460
virtual smp_mode_t get_smp_mode() const
Get the current SMP mode.
Definition: colvarproxy.cpp:269
smp_mode_t smp_mode
Definition: colvarproxy.h:515
virtual std::vector< smp_mode_t > get_available_smp_modes() const
Get available SMP modes.
Definition: colvarproxy.cpp:273
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:341
virtual int smp_thread_id()
Index of this thread.
Definition: colvarproxy.cpp:370
virtual int smp_trylock()
Attempt to lock the proxy's shared data.
Definition: colvarproxy.cpp:399
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:390
virtual int set_smp_mode(smp_mode_t mode)
Set the current SMP mode.
Definition: colvarproxy.cpp:287
virtual int smp_num_threads()
Number of threads sharing this address space.
Definition: colvarproxy.cpp:380
omp_lock_t * omp_lock_state
Lock state for OpenMP.
Definition: colvarproxy.h:511
virtual int smp_unlock()
Release the lock.
Definition: colvarproxy.cpp:409
virtual int smp_biases_loop()
Distribute calculation of biases across threads.
Definition: colvarproxy.cpp:318
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:299
virtual smp_mode_t get_preferred_smp_mode() const
Get the preferred SMP mode.
Definition: colvarproxy.cpp:283
virtual ~colvarproxy_smp()
Destructor.
Definition: colvarproxy.cpp:258
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:10
Definition: colvarproxy.h:567
virtual int update_input()
Definition: colvarproxy.cpp:571
colvarproxy()
Constructor.
Definition: colvarproxy.cpp:458
std::string error_output
Collected error messages.
Definition: colvarproxy.h:699
virtual int update_output()
Update data based on the results of a Colvars call (e.g. send forces)
Definition: colvarproxy.cpp:577
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:513
virtual int request_deletion()
Request deallocation of the module (currently only implemented by VMD)
Definition: colvarproxy.cpp:505
colvarmodule * colvars
Pointer to the main object.
Definition: colvarproxy.h:572
bool simulation_continuing() const
Definition: colvarproxy.h:670
void clear_error_msgs()
As the name says.
Definition: colvarproxy.cpp:746
void add_error_msg(std::string const &message)
Record error message (used by VMD to collect them after a script call)
Definition: colvarproxy.cpp:736
int version_int
Integer representing the version string (allows comparisons)
Definition: colvarproxy.h:713
std::string const & get_error_msgs()
Retrieve accumulated error messages.
Definition: colvarproxy.cpp:752
int end_of_step()
Carry out operations needed before next simulation step is run.
Definition: colvarproxy.cpp:583
virtual void log(std::string const &message)
Print a message to the main log.
Definition: colvarproxy.cpp:723
bool b_delete_requested
Whether the entire module should be deallocated by the host engine.
Definition: colvarproxy.h:710
std::string engine_name_
Name of the simulation engine that the derived proxy object supports.
Definition: colvarproxy.h:721
void print_input_atomic_data()
Print a full list of all input atomic arrays for debug purposes.
Definition: colvarproxy.cpp:616
virtual int parse_module_config()
(Re)initialize the module
Definition: colvarproxy.cpp:525
bool engine_ready() const
Whether the engine allows to fully initialize Colvars immediately.
Definition: colvarproxy.h:627
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:558
int get_version_from_string(char const *version_string)
Convert a version string "YYYY-MM-DD" into an integer.
Definition: colvarproxy.cpp:758
bool simulation_running() const
Whether a simulation is running (warn against irrecovarable errors)
Definition: colvarproxy.h:662
virtual int reset()
Reset proxy state, e.g. requested atoms.
Definition: colvarproxy.cpp:491
void * config_queue_
Queue of config strings or files to be fed to the module.
Definition: colvarproxy.h:724
int post_run()
Called at the end of a simulation segment (i.e. "run" command)
Definition: colvarproxy.cpp:604
bool b_simulation_continuing
Definition: colvarproxy.h:707
bool engine_ready_
Whether the engine allows to fully initialize Colvars immediately.
Definition: colvarproxy.h:696
bool delete_requested() const
Whether deallocation was requested.
Definition: colvarproxy.h:591
size_t features_hash
Track which features have been acknowledged during the last run.
Definition: colvarproxy.h:716
void print_output_atomic_data()
Print a full list of all applied forces for debug purposes.
Definition: colvarproxy.cpp:698
int version_number() const
Get the version number (higher = more recent)
Definition: colvarproxy.h:688
bool io_available() override
Ensure that we're on the main thread (derived class will do actual check)
Definition: colvarproxy.cpp:483
virtual int setup()
(Re)initialize required member data (called after the module)
Definition: colvarproxy.cpp:519
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:547
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:729
bool b_simulation_running
Whether a simulation is running (warn against irrecovarable errors)
Definition: colvarproxy.h:702
virtual ~colvarproxy() override
Destructor.
Definition: colvarproxy.cpp:472
Allocator for pinned host memory using cudaHostAlloc.
Definition: colvar_gpu_support.h:202
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
Store the information of a group of atoms in a structure-of-arrays (SoA) style.
Definition: colvaratoms.h:52
Collective variables main module.
Declaration of the class for GPU memory management.