Collective Variables Module - Developer Documentation
Loading...
Searching...
No Matches
colvarcomp.h
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 COLVARCOMP_H
11#define COLVARCOMP_H
12
13// Declaration of colvar::cvc base class and derived ones.
14//
15// Future cvc's could be declared on additional header files.
16// After the declaration of a new derived class, its metric
17// functions must be reimplemented as well.
18// If the new cvc has no symmetry or periodicity,
19// this can be done straightforwardly by using the macro:
20// simple_scalar_dist_functions (derived_class)
21
22#include <memory>
23
24#include "colvarmodule.h"
25#include "colvaratoms.h"
26#include "colvar.h"
27#include "colvar_geometricpath.h"
28#include "colvaratoms.h"
29#include "colvarproxy.h"
30
68
70 : public colvardeps
71{
72public:
73
76 std::string name;
77
79 std::string function_type() const;
80
82 std::string config_key;
83
86
88 int sup_np = 1;
89
92
95
97 cvc();
98
99 cvc(colvarmodule *cvmodule_in);
100
102 virtual ~cvc();
103
107 virtual int init(std::string const &conf);
108
110 virtual int init_gpu();
111
113 int init_dependencies() override;
114
116 int setup();
117
119 virtual const std::vector<feature *> &features() const override
120 {
121 return cvc_features;
122 }
123
124 virtual std::vector<feature *> &modify_features() override
125 {
126 return cvc_features;
127 }
128
129 static void delete_features() {
130 for (size_t i=0; i < cvc_features.size(); i++) {
131 delete cvc_features[i];
132 }
133 cvc_features.clear();
134 }
135
137 virtual std::vector<std::vector<int> > get_atom_lists();
138
140 virtual void read_data();
141 virtual int read_data_gpu();
142
144 virtual void calc_value() = 0;
145 virtual int calc_value_gpu() { return COLVARS_NOT_IMPLEMENTED; }
147 virtual int calc_value_after_gpu() { return COLVARS_OK; }
148
151 virtual void calc_gradients() {}
152 virtual int calc_gradients_gpu() { return COLVARS_NOT_IMPLEMENTED; }
154 virtual int calc_gradients_after_gpu() { return COLVARS_OK; }
155
157 void calc_fit_gradients();
158 int calc_fit_gradients_gpu();
159
161 virtual void debug_gradients();
162
165 virtual void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
166
169 virtual void calc_force_invgrads();
170 virtual int calc_force_invgrads_gpu() { return COLVARS_NOT_IMPLEMENTED; }
172 virtual int calc_force_invgrads_after_gpu() { return COLVARS_OK; }
173
175 virtual void calc_Jacobian_derivative();
176 virtual int calc_Jacobian_derivative_gpu() { return COLVARS_NOT_IMPLEMENTED; }
178 virtual int calc_Jacobian_derivative_after_gpu() { return COLVARS_OK; }
179
181 virtual int debug_gradients_gpu();
182
183#if defined (COLVARS_CUDA) || defined (COLVARS_HIP)
184 enum class event_type {
185 calc_value = 0,
189 num_event_types,
190 };
194 const cudaEvent_t& get_event(event_type type) const {
195 return events[static_cast<int>(type)];
196 }
197#endif // defined (COLVARS_CUDA) || defined (COLVARS_HIP)
198
200 colvarvalue const & value() const;
201
203 colvarvalue const & total_force() const;
204
207 colvarvalue const & Jacobian_derivative() const;
208
218 virtual void apply_force(colvarvalue const &cvforce);
219
222
241 virtual cvm::real dist2(colvarvalue const &x1,
242 colvarvalue const &x2) const;
243
247 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
248 colvarvalue const &x2) const;
249
253 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
254 colvarvalue const &x2) const;
255
257 virtual void wrap(colvarvalue &x_unwrapped) const;
258
261 std::vector<cvm::atom_group *> atom_groups;
262
265
267 virtual colvarvalue const *get_param_grad(std::string const &param_name);
268
270 virtual int set_param(std::string const &param_name, void const *new_value) override;
271
273 bool b_try_scalable = true;
274
277 inline void set_value(colvarvalue const &new_value, bool now=false) {
278 x = new_value;
279 // Cache value to be communicated to back-end between time steps
280 cvmodule->proxy->set_alch_lambda(x.real_value);
281 if (now) {
282 // If requested (e.g. upon restarting), sync to back-end
283 cvmodule->proxy->send_alch_lambda();
284 }
285 }
286
287protected:
288
290 int set_function_type(std::string const &type);
291
293 int update_description();
294
296 cvm::atom_group *parse_group(std::string const &conf, char const *group_key,
297 bool optional = false);
298
300 virtual int init_total_force_params(std::string const &conf);
301
303 static std::vector<feature *> cvc_features;
304
306 std::vector<std::string> function_types;
307
310
313
319
323
325 void init_as_distance();
326
328 void init_as_angle();
329
332
335
338
341
344
347
348#if defined (COLVARS_CUDA) || defined (COLVARS_HIP)
349 std::array<cudaEvent_t, static_cast<int>(event_type::num_event_types)> events = {};
350#endif
351};
352
353
354inline colvarvalue const & colvar::cvc::value() const
355{
356 return x;
357}
358
359
361{
362 return ft;
363}
364
365
367{
368 return jd;
369}
370
371
372
375
377 : public colvar::cvc
378{
379protected:
386public:
387 distance();
388 virtual ~distance() {}
389 virtual int init(std::string const &conf);
390 virtual void calc_value();
391 virtual void calc_gradients();
392 virtual void calc_force_invgrads();
393 virtual void calc_Jacobian_derivative();
394};
395
396
397
398// \brief Colvar component: distance vector between centers of mass
399// of two groups (\link colvarvalue::type_3vector \endlink type,
400// range (-*:*)x(-*:*)x(-*:*))
402 : public colvar::distance
403{
404public:
405 distance_vec();
406 virtual ~distance_vec() {}
407 virtual void calc_value();
408 virtual void calc_gradients();
409 virtual void apply_force(colvarvalue const &force);
411 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
413 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
415 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
417 virtual void wrap(colvarvalue &x_unwrapped) const;
418};
419
420
425 : public colvar::distance
426{
427public:
428 distance_dir();
429 virtual ~distance_dir() {}
430 virtual void calc_value();
431 virtual void calc_gradients();
432 virtual void apply_force(colvarvalue const &force);
434 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
436 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
438 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
440 virtual void wrap(colvarvalue &x_unwrapped) const;
441};
442
443
444
448 : public colvar::cvc
449{
450protected:
464 bool fixed_axis = true;
465public:
466 distance_z();
467 virtual ~distance_z() {}
468 virtual int init(std::string const &conf);
469 virtual void calc_value();
470 virtual void calc_gradients();
471 virtual void calc_force_invgrads();
472 virtual void calc_Jacobian_derivative();
473};
474
475
476
480 : public colvar::distance_z
481{
482protected:
487public:
488 distance_xy();
489 virtual ~distance_xy() {}
490 virtual void calc_value();
491 virtual void calc_gradients();
492 virtual void calc_force_invgrads();
493 virtual void calc_Jacobian_derivative();
494};
495
496
500 : public colvar::cvc
501{
502protected:
503 cvm::atom_group *atoms = nullptr;
504 cvm::real r, theta, phi;
505
506public:
507 polar_phi();
508 virtual ~polar_phi() {}
509 virtual int init(std::string const &conf);
510 virtual void calc_value();
511 virtual void calc_gradients();
512};
513
514
518 : public colvar::cvc
519{
520public:
521 polar_theta();
522 virtual ~polar_theta() {}
523 virtual int init(std::string const &conf);
524protected:
525 cvm::atom_group *atoms = nullptr;
526 cvm::real r, theta, phi;
527public:
528 virtual void calc_value();
529 virtual void calc_gradients();
530};
531
532
536 : public colvar::cvc
537{
538protected:
544 int exponent = 6;
545public:
546 distance_inv();
547 virtual ~distance_inv() {}
548 virtual int init(std::string const &conf);
549 virtual void calc_value();
550 virtual void calc_gradients();
551};
552
553
554
558 : public colvar::cvc
559{
560protected:
565public:
567 virtual ~distance_pairs() {}
568 virtual int init(std::string const &conf);
569 virtual void calc_value();
570 virtual void calc_gradients();
571 virtual void apply_force(colvarvalue const &force);
573 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
575 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
577 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
579 virtual void wrap(colvarvalue &x_unwrapped) const;
580};
581
582
585 : public colvar::cvc
586{
587protected:
590 cvm::atom_pos dipoleV;
591public:
593 virtual ~dipole_magnitude() {}
594 virtual int init(std::string const &conf);
595 virtual void calc_value();
596 virtual void calc_gradients();
597};
598
599
600
604 : public colvar::cvc
605{
606protected:
609public:
610 gyration();
611 virtual ~gyration() {}
612 virtual int init(std::string const &conf);
613 virtual void calc_value();
614 virtual void calc_gradients();
615 virtual void calc_force_invgrads();
616 virtual void calc_Jacobian_derivative();
617};
618
619
620
624 : public colvar::gyration
625{
626public:
627 inertia();
628 virtual ~inertia() {}
629 virtual void calc_value();
630 virtual void calc_gradients();
631};
632
633
634
638 : public colvar::inertia
639{
640protected:
643public:
644 inertia_z();
645 virtual ~inertia_z() {}
646 virtual int init(std::string const &conf);
647 virtual void calc_value();
648 virtual void calc_gradients();
649};
650
651
652
656 : public colvar::cvc
657{
658protected:
659
662
664 std::vector<cvm::atom_pos> ref_pos;
665
667 std::vector<cvm::rvector> eigenvec;
668
671
672public:
673
674 eigenvector();
675 virtual ~eigenvector() {}
676 virtual int init(std::string const &conf);
677 virtual void calc_value();
678 virtual void calc_gradients();
679 virtual void calc_force_invgrads();
680 virtual void calc_Jacobian_derivative();
681};
682
683
684
688 : public colvar::cvc
689{
690protected:
703
707 bool b_1site_force = false;
708public:
709
710 angle();
715 virtual ~angle() {}
716 virtual int init(std::string const &conf);
717 virtual void calc_value();
718 virtual void calc_gradients();
719 virtual void calc_force_invgrads();
720 virtual void calc_Jacobian_derivative();
721};
722
723
724
728 : public colvar::cvc
729{
730protected:
731
744
748 bool b_1site_force = false;
749public:
750
751 dipole_angle();
752 virtual ~dipole_angle() {}
753 virtual int init(std::string const &conf);
754 virtual void calc_value();
755 virtual void calc_gradients();
756};
757
758
759
763 : public colvar::cvc
764{
765protected:
766
776 cvm::rvector r12, r23, r34;
777
780 bool b_1site_force = false;
781
782public:
783
789 dihedral();
790 virtual ~dihedral() {}
791 virtual int init(std::string const &conf);
792 virtual void calc_value();
793 virtual void calc_gradients();
794 virtual void calc_force_invgrads();
795 virtual void calc_Jacobian_derivative();
796};
797
798
804 : public colvar::cvc
805{
806protected:
807
810
813
815 std::vector<angle *> theta;
816
818 std::vector<h_bond *> hb;
819
822
825
827 int en = 6;
828
830 int ed = 8;
831
832public:
833
834 alpha_angles();
835 virtual ~alpha_angles();
836 virtual int init(std::string const &conf);
837 void calc_value();
838 void calc_gradients();
840 void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
841 void apply_force(colvarvalue const &force);
842};
843
844
845
851 : public colvar::cvc
852{
853protected:
854
855 std::vector<dihedral *> theta;
856 std::vector<cvm::real> coeffs;
857
858public:
859
860 dihedPC();
861 virtual ~dihedPC();
862 virtual int init(std::string const &conf);
863 virtual void calc_value();
864 virtual void calc_gradients();
866 virtual void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
867 virtual void apply_force(colvarvalue const &force);
868};
869
870
871
877 : public colvar::cvc
878{
879protected:
884
886 cvm::ag_vector_real_t ref_pos_soa;
887 size_t num_ref_pos;
888
890 cvm::ag_vector_real_t shifted_pos_soa;
891 size_t num_shifted_pos;
892
895
899
902 std::unique_ptr<rotation_derivative_impl_> rot_deriv_impl;
903
904public:
905
906 orientation();
907 virtual ~orientation();
908 virtual int init(std::string const &conf);
909 virtual void calc_value();
910 virtual void calc_gradients();
911 virtual void apply_force(colvarvalue const &force);
913 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
915 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
917 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
919 virtual void wrap(colvarvalue &x_unwrapped) const;
920};
921
922
927 : public colvar::orientation
928{
929public:
930
932 virtual ~orientation_angle() {}
933 virtual void calc_value();
934 virtual void calc_gradients();
935 virtual void apply_force(colvarvalue const &force);
937 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
939 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
941 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
943 virtual void wrap(colvarvalue &x_unwrapped) const;
944};
945
946
947
953{
954public:
955
957 virtual ~orientation_proj() {}
958 virtual void calc_value();
959 virtual void calc_gradients();
960};
961
962
963
968{
969protected:
970
971 cvm::rvector axis;
972
973public:
974
975 tilt();
976 virtual ~tilt() {}
977 virtual int init(std::string const &conf);
978 virtual void calc_value();
979 virtual void calc_gradients();
980};
981
982
983
987 : public colvar::tilt
988{
989public:
990
991 spin_angle();
992 virtual ~spin_angle() {}
993 virtual void calc_value();
994 virtual void calc_gradients();
995};
996
997
1000{
1001public:
1002 euler_phi();
1003 virtual ~euler_phi() {}
1004 virtual void calc_value();
1005 virtual void calc_gradients();
1006};
1007
1008
1011{
1012public:
1013 euler_psi();
1014 virtual ~euler_psi() {}
1015 virtual void calc_value();
1016 virtual void calc_gradients();
1017};
1018
1019
1022{
1023public:
1024 euler_theta();
1025 virtual ~euler_theta() {}
1026 virtual void calc_value();
1027 virtual void calc_gradients();
1028};
1029
1030
1036 : public colvar::cvc
1037{
1038protected:
1039
1040 // TODO: transfrom ref_pos to soa
1043
1046 size_t num_ref_pos = 0;
1047 cvm::ag_vector_real_t ref_pos_soa;
1048
1049#if defined (COLVARS_CUDA) || defined (COLVARS_HIP)
1050 class rmsd_gpu_impl_t;
1051 std::unique_ptr<rmsd_gpu_impl_t> rmsd_gpu_impl;
1052#endif // defined (COLVARS_CUDA) || defined (COLVARS_HIP)
1053
1055 size_t n_permutations = 1;
1056 cvm::ag_vector_real_t permutation_msds;
1057
1060
1062 int init_permutation(std::vector<cvm::atom_pos>& ref_pos, std::string const &conf);
1063
1064public:
1065 rmsd();
1066#if defined (COLVARS_CUDA) || defined (COLVARS_HIP)
1067 int calc_value_gpu() override;
1068 int calc_value_after_gpu() override;
1069 int calc_gradients_gpu() override;
1070 int calc_force_invgrads_gpu() override;
1071 int calc_force_invgrads_after_gpu() override;
1072 int calc_Jacobian_derivative_gpu() override;
1074 int proxy_gpu_buffers_reallocated() override;
1075#endif // defined (COLVARS_CUDA) || defined (COLVARS_HIP)
1076 virtual ~rmsd();
1077 virtual int init(std::string const &conf) override;
1078 virtual void calc_value() override;
1079 virtual void calc_gradients() override;
1080 virtual void calc_force_invgrads() override;
1081 virtual void calc_Jacobian_derivative() override;
1082};
1083
1084
1085
1086// \brief Colvar component: flat vector of Cartesian coordinates
1087// Mostly useful to compute scripted colvar values
1089 : public colvar::cvc
1090{
1091protected:
1095 std::vector<size_t> axes;
1096public:
1097 cartesian();
1098 virtual ~cartesian() {}
1099 virtual int init(std::string const &conf);
1100 virtual void calc_value();
1101 virtual void calc_gradients();
1102 virtual void apply_force(colvarvalue const &force);
1104 virtual cvm::real dist2(colvarvalue const &x1,
1105 colvarvalue const &x2) const;
1107 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1108 colvarvalue const &x2) const;
1110 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1111 colvarvalue const &x2) const;
1113 virtual void wrap(colvarvalue &x_unwrapped) const;
1114};
1115
1116
1117// \brief Colvar component: alch_lambda
1118// To communicate value with back-end in lambda-dynamics
1120 : public colvar::cvc
1121{
1122protected:
1123 // No atom groups needed
1124public:
1125 alch_lambda();
1126 int init_alchemy(int time_step_factor);
1127 virtual ~alch_lambda() {}
1128 virtual void calc_value();
1129 virtual void calc_force_invgrads();
1130 virtual void calc_Jacobian_derivative();
1131 virtual void apply_force(colvarvalue const &force);
1132};
1133
1134
1135// \brief Colvar component: alch_Flambda
1136// To communicate force on lambda with back-end in lambda-dynamics
1138 : public colvar::cvc
1139{
1140protected:
1141 // No atom groups needed
1142public:
1143 alch_Flambda();
1144 virtual ~alch_Flambda() {}
1145 virtual void calc_value();
1146 virtual void calc_gradients();
1147 virtual void apply_force(colvarvalue const &force);
1148};
1149
1150
1152 : public colvar::cvc
1153{
1154protected:
1155 virtual void computeDistanceBetweenReferenceFrames(std::vector<cvm::real>& result);
1156 virtual void computeDistanceToReferenceFrames(std::vector<cvm::real>& result);
1162 std::vector<std::vector<cvm::atom_pos>> reference_frames;
1163 std::vector<std::vector<cvm::atom_pos>> reference_fitting_frames;
1165 std::vector<cvm::atom_group*> comp_atoms;
1168public:
1170 virtual ~CartesianBasedPath();
1171 virtual int init(std::string const &conf);
1172 virtual void calc_value() = 0;
1174 virtual void apply_force(colvarvalue const &force);
1175};
1176
1181 : public colvar::CartesianBasedPath, public GeometricPathCV::GeometricPathBase<cvm::atom_pos, cvm::real, GeometricPathCV::path_sz::S>
1182{
1183private:
1184 // Optimal rotation for compute v3
1185 cvm::rotation rot_v3;
1186protected:
1187 virtual void prepareVectors();
1188 virtual void updateDistanceToReferenceFrames();
1189public:
1190 gspath();
1191 virtual ~gspath() {}
1192 virtual int init(std::string const &conf);
1193 virtual void calc_value();
1194 virtual void calc_gradients();
1195 virtual void apply_force(colvarvalue const &force);
1196};
1197
1198
1199
1203 : public colvar::CartesianBasedPath, public GeometricPathCV::GeometricPathBase<cvm::atom_pos, cvm::real, GeometricPathCV::path_sz::Z>
1204{
1205private:
1206 // Optimal rotation for compute v3, v4
1207 cvm::rotation rot_v3;
1208 cvm::rotation rot_v4;
1209protected:
1210 virtual void prepareVectors();
1211 virtual void updateDistanceToReferenceFrames();
1212public:
1213 gzpath();
1214 virtual ~gzpath() {}
1215 virtual int init(std::string const &conf);
1216 virtual void calc_value();
1217 virtual void calc_gradients();
1218 virtual void apply_force(colvarvalue const &force);
1219};
1220
1223 : public colvar::cvc
1224{
1225protected:
1227 std::vector<colvar::cvc*> cv;
1230protected:
1231 cvm::real getPolynomialFactorOfCVGradient(size_t i_cv) const;
1232public:
1234 virtual ~linearCombination();
1235 virtual int init(std::string const &conf);
1236 virtual void calc_value();
1237 virtual void calc_gradients();
1238 virtual void apply_force(colvarvalue const &force);
1240 virtual cvm::real dist2(colvarvalue const &x1,
1241 colvarvalue const &x2) const;
1243 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1244 colvarvalue const &x2) const;
1246 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1247 colvarvalue const &x2) const;
1249 virtual void wrap(colvarvalue &x_unwrapped) const;
1250};
1251
1252
1256{
1257protected:
1258 bool use_custom_function = false;
1259#ifdef LEPTON
1261 std::vector<Lepton::CompiledExpression *> value_evaluators;
1263 std::vector<Lepton::CompiledExpression *> gradient_evaluators;
1265 std::vector<double *> value_eval_var_refs;
1266 std::vector<double *> grad_eval_var_refs;
1268 double dev_null = 0.0;
1269#endif
1270public:
1271 customColvar();
1272 virtual ~customColvar();
1273 virtual int init(std::string const &conf);
1274 virtual void calc_value();
1275 virtual void calc_gradients();
1276 virtual void apply_force(colvarvalue const &force);
1277};
1278
1279
1281 : public colvar::cvc
1282{
1283protected:
1285 std::vector<colvar::cvc*> cv;
1287 std::vector<std::vector<colvarvalue>> ref_cv;
1292protected:
1293 virtual void computeDistanceToReferenceFrames(std::vector<cvm::real>& result);
1295 virtual void computeDistanceBetweenReferenceFrames(std::vector<cvm::real>& result) const;
1296 cvm::real getPolynomialFactorOfCVGradient(size_t i_cv) const;
1297public:
1298 CVBasedPath();
1299 virtual ~CVBasedPath();
1300 virtual int init(std::string const &conf);
1301 virtual void calc_value() = 0;
1303 virtual void apply_force(colvarvalue const &force);
1305 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
1307 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1309 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1311 virtual void wrap(colvarvalue &x_unwrapped) const;
1312};
1313
1314
1320 : public colvar::CVBasedPath, public GeometricPathCV::GeometricPathBase<colvarvalue, cvm::real, GeometricPathCV::path_sz::S>
1321{
1322protected:
1323 virtual void updateDistanceToReferenceFrames();
1324 virtual void prepareVectors();
1325public:
1326 gspathCV();
1327 virtual ~gspathCV();
1328 virtual int init(std::string const &conf);
1329 virtual void calc_value();
1330 virtual void calc_gradients();
1331 virtual void apply_force(colvarvalue const &force);
1332};
1333
1334
1335
1337 : public colvar::CVBasedPath, public GeometricPathCV::GeometricPathBase<colvarvalue, cvm::real, GeometricPathCV::path_sz::Z>
1338{
1339protected:
1340 virtual void updateDistanceToReferenceFrames();
1341 virtual void prepareVectors();
1342public:
1343 gzpathCV();
1344 virtual ~gzpathCV();
1345 virtual int init(std::string const &conf);
1346 virtual void calc_value();
1347 virtual void calc_gradients();
1348 virtual void apply_force(colvarvalue const &force);
1349};
1350
1351struct ArithmeticPathImpl;
1352
1355{
1356private:
1357 std::unique_ptr<ArithmeticPathImpl> impl_;
1358 friend struct ArithmeticPathImpl;
1359public:
1360 aspath();
1361 virtual ~aspath();
1362 virtual int init(std::string const &conf);
1363 virtual void calc_value();
1364 virtual void calc_gradients();
1365 virtual void apply_force(colvarvalue const &force);
1366};
1367
1370{
1371private:
1372 std::unique_ptr<ArithmeticPathImpl> impl_;
1373 friend struct ArithmeticPathImpl;
1374public:
1375 azpath();
1376 virtual ~azpath();
1377 virtual int init(std::string const &conf);
1378 virtual void calc_value();
1379 virtual void calc_gradients();
1380 virtual void apply_force(colvarvalue const &force);
1381};
1382
1384 : public colvar::CVBasedPath
1385{
1386private:
1387 std::unique_ptr<ArithmeticPathImpl> impl_;
1388 friend struct ArithmeticPathImpl;
1389public:
1390 aspathCV();
1391 virtual ~aspathCV();
1392 virtual int init(std::string const &conf);
1393 virtual void calc_value();
1394 virtual void calc_gradients();
1395 virtual void apply_force(colvarvalue const &force);
1396};
1397
1398
1400 : public colvar::CVBasedPath
1401{
1402private:
1403 std::unique_ptr<ArithmeticPathImpl> impl_;
1404 friend struct ArithmeticPathImpl;
1405public:
1406 azpathCV();
1407 virtual ~azpathCV();
1408 virtual int init(std::string const &conf);
1409 virtual void calc_value();
1410 virtual void calc_gradients();
1411 virtual void apply_force(colvarvalue const &force);
1412};
1413
1414// forward declaration
1415namespace neuralnetworkCV {
1416 class neuralNetworkCompute;
1417}
1418
1419
1421 : public linearCombination
1422{
1423protected:
1425 std::unique_ptr<neuralnetworkCV::neuralNetworkCompute> nn;
1427 size_t m_output_index = 0;
1428public:
1429 neuralNetwork();
1430 virtual ~neuralNetwork();
1431 virtual int init(std::string const &conf);
1432 virtual void calc_value();
1433 virtual void calc_gradients();
1434 virtual void apply_force(colvarvalue const &force);
1436 virtual cvm::real dist2(colvarvalue const &x1,
1437 colvarvalue const &x2) const;
1439 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1440 colvarvalue const &x2) const;
1442 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1443 colvarvalue const &x2) const;
1445 virtual void wrap(colvarvalue &x_unwrapped) const;
1446};
1447
1448
1449// \brief Colvar component: total value of a scalar map
1450// (usually implemented as a grid by the simulation engine)
1452 : public colvar::cvc
1453{
1454public:
1455
1456 map_total();
1457 virtual ~map_total() {}
1458 virtual int init(std::string const &conf);
1459 virtual void calc_value();
1460 virtual void calc_gradients();
1461 virtual void apply_force(colvarvalue const &force);
1462
1463protected:
1464
1466 std::string volmap_name;
1467
1469 int volmap_id = -1;
1470
1473
1476
1478 std::vector<cvm::real> atom_weights;
1479};
1480
1481
1482
1483#endif
Definition: colvar_geometricpath.h:24
Definition: colvarcomp.h:1282
std::vector< colvar::cvc * > cv
Sub-colvar components.
Definition: colvarcomp.h:1285
size_t total_reference_frames
Total number of reference frames.
Definition: colvarcomp.h:1291
bool use_explicit_gradients
If all sub-cvs use explicit gradients then we also use it.
Definition: colvarcomp.h:1289
std::vector< std::vector< colvarvalue > > ref_cv
Reference colvar values from path.
Definition: colvarcomp.h:1287
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_gpath.cpp:673
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use the metric of the returned colvarvalue (defined at runtime)
Definition: colvarcomp_gpath.cpp:680
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use the metric of the returned colvarvalue (defined at runtime)
Definition: colvarcomp_gpath.cpp:686
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to use the metric of the returned colvarvalue (defined at runtime)
Definition: colvarcomp_gpath.cpp:698
virtual int init(std::string const &conf)
Definition: colvarcomp_gpath.cpp:506
virtual void calc_value()=0
Calculate the variable.
virtual void computeDistanceBetweenReferenceFrames(std::vector< cvm::real > &result) const
Helper function to determine the distance between reference frames.
Definition: colvarcomp_gpath.cpp:628
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use the metric of the returned colvarvalue (defined at runtime)
Definition: colvarcomp_gpath.cpp:692
Definition: colvarcomp.h:1153
cvm::atom_group * atoms
Selected atoms.
Definition: colvarcomp.h:1158
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_gpath.cpp:173
std::vector< std::vector< cvm::atom_pos > > reference_frames
Reference frames.
Definition: colvarcomp.h:1162
size_t total_reference_frames
Total number of reference frames.
Definition: colvarcomp.h:1167
bool has_user_defined_fitting
Fitting options.
Definition: colvarcomp.h:1160
virtual void calc_value()=0
Calculate the variable.
virtual int init(std::string const &conf)
Definition: colvarcomp_gpath.cpp:31
std::vector< cvm::atom_group * > comp_atoms
Atom groups for RMSD calculation together with reference frames.
Definition: colvarcomp.h:1165
Definition: colvarcomp.h:1139
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_alchlambda.cpp:110
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_alchlambda.cpp:115
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_alchlambda.cpp:99
Definition: colvarcomp.h:1121
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_alchlambda.cpp:70
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_alchlambda.cpp:54
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_alchlambda.cpp:82
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_alchlambda.cpp:76
Colvar component: alpha helix content of a contiguous segment of 5 or more residues,...
Definition: colvarcomp.h:805
void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_protein.cpp:237
cvm::real theta_tol
Tolerance on the Calpha-Calpha angle.
Definition: colvarcomp.h:812
int en
Integer exponent of the HB numerator.
Definition: colvarcomp.h:827
cvm::real theta_ref
Reference Calpha-Calpha angle (default: 88 degrees)
Definition: colvarcomp.h:809
void collect_gradients(std::vector< int > const &atom_ids, std::vector< cvm::rvector > &atomic_gradients)
Re-implementation of cvc::collect_gradients() to carry over atomic gradients of sub-cvcs.
Definition: colvarcomp_protein.cpp:248
void calc_value()
Calculate the variable.
Definition: colvarcomp_protein.cpp:193
cvm::real hb_coeff
Contribution of the HB terms.
Definition: colvarcomp.h:821
int ed
Integer exponent of the HB denominator.
Definition: colvarcomp.h:830
void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_protein.cpp:300
cvm::real r0
Cutoff for HB.
Definition: colvarcomp.h:824
std::vector< h_bond * > hb
List of hydrogen bonds.
Definition: colvarcomp.h:818
virtual int init(std::string const &conf)
Definition: colvarcomp_protein.cpp:29
std::vector< angle * > theta
List of Calpha-Calpha angles.
Definition: colvarcomp.h:815
Colvar component: angle between the centers of mass of three groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:689
bool b_1site_force
Definition: colvarcomp.h:707
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:696
cvm::rvector r21
Inter site vectors.
Definition: colvarcomp.h:698
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:77
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_angles.cpp:117
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:694
virtual int init(std::string const &conf)
Definition: colvarcomp_angles.cpp:26
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:60
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_angles.cpp:94
cvm::rvector dxdr1
Derivatives wrt group centers of mass.
Definition: colvarcomp.h:702
cvm::real r21l
Inter site vector norms.
Definition: colvarcomp.h:700
cvm::atom_group * group1
Atom group.
Definition: colvarcomp.h:692
Definition: colvarcomp.h:1385
virtual int init(std::string const &conf)
Definition: colvarcomp_apath.cpp:258
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_apath.cpp:282
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_apath.cpp:297
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_apath.cpp:323
Definition: colvarcomp.h:1355
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_apath.cpp:188
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_apath.cpp:177
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_apath.cpp:162
virtual int init(std::string const &conf)
Definition: colvarcomp_apath.cpp:144
Definition: colvarcomp.h:1401
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_apath.cpp:404
virtual int init(std::string const &conf)
Definition: colvarcomp_apath.cpp:367
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_apath.cpp:389
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_apath.cpp:430
Definition: colvarcomp.h:1370
virtual int init(std::string const &conf)
Definition: colvarcomp_apath.cpp:201
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_apath.cpp:234
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_apath.cpp:245
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_apath.cpp:219
Definition: colvarcomp.h:1090
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1646
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1609
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1093
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1652
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:1566
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:1595
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1634
std::vector< size_t > axes
Which Cartesian coordinates to include.
Definition: colvarcomp.h:1095
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1640
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_distances.cpp:1617
custom expression of colvars
Definition: colvarcomp.h:1256
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_combination.cpp:310
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_combination.cpp:350
virtual int init(std::string const &conf)
Definition: colvarcomp_combination.cpp:179
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_combination.cpp:279
Colvar component (base class for collective variables)
Definition: colvarcomp.h:71
virtual void collect_gradients(std::vector< int > const &atom_ids, std::vector< cvm::rvector > &atomic_gradients)
Calculate atomic gradients and add them to the corresponding item in gradient vector May be overridde...
Definition: colvarcomp.cpp:568
const cudaEvent_t & get_event(event_type type) const
Getter of a specific CUDA event.
Definition: colvarcomp.h:194
virtual int init_total_force_params(std::string const &conf)
Parse options pertaining to total force calculation.
Definition: colvarcomp.cpp:172
virtual void wrap(colvarvalue &x_unwrapped) const
Wrap value (for periodic/symmetric cvcs)
Definition: colvarcomp.cpp:1249
int sup_np
Exponent in the polynomial combination (default: 1)
Definition: colvarcomp.h:88
int set_function_type(std::string const &type)
Set the value of function_type and its dependencies.
Definition: colvarcomp.cpp:59
cvm::real sup_coeff
Coefficient in the polynomial combination (default: 1.0)
Definition: colvarcomp.h:85
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp.cpp:613
colvarvalue jd
Calculated Jacobian derivative (divergence of the inverse gradients): serves to calculate the phase s...
Definition: colvarcomp.h:322
std::vector< std::string > function_types
Record the type of this class as well as those it is derived from.
Definition: colvarcomp.h:306
virtual int debug_gradients_gpu()
Calculate finite-difference gradients alongside the analytical ones, for each Cartesian component on ...
Definition: colvarcomp.cpp:931
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Gradient(with respect to x2) of the square distance (can be redefined to transparently implement cons...
Definition: colvarcomp.cpp:1243
std::string function_type() const
String identifier for the type of collective variable.
Definition: colvarcomp.cpp:50
virtual int init(std::string const &conf)
Definition: colvarcomp.cpp:72
virtual void debug_gradients()
Calculate finite-difference gradients alongside the analytical ones, for each Cartesian component.
Definition: colvarcomp.cpp:650
virtual ~cvc()
Destructor.
Definition: colvarcomp.cpp:392
colvarvalue const & Jacobian_derivative() const
Return the previously calculated divergence of the inverse atomic gradients.
Definition: colvarcomp.h:366
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp.h:151
cvm::real width
CVC-specific default colvar width (default: not provided)
Definition: colvarcomp.h:343
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Gradient(with respect to x1) of the square distance (can be redefined to transparently implement cons...
Definition: colvarcomp.cpp:1232
virtual colvarvalue const * get_param_grad(std::string const &param_name)
Pointer to the gradient of parameter param_name.
Definition: colvarcomp.cpp:459
int setup()
After construction, set data related to dependency handling.
Definition: colvarcomp.cpp:385
colvarvalue const & value() const
Return the previously calculated value.
Definition: colvarcomp.h:354
static std::vector< feature * > cvc_features
Implementation of the feature list for colvar.
Definition: colvarcomp.h:303
cvm::system_boundary_conditions boundary_conditions
Boundary conditions for the system, copied from the engine when needed.
Definition: colvarcomp.h:346
colvarvalue ft
Calculated total force (Note: this is calculated from the total atomic forces read from the program,...
Definition: colvarcomp.h:318
virtual const std::vector< feature * > & features() const override
Implementation of the feature list accessor for colvar.
Definition: colvarcomp.h:119
int update_description()
Update the description string based on name and type.
Definition: colvarcomp.cpp:38
std::string name
The name of the object (helps to identify this cvc instance when debugging)
Definition: colvarcomp.h:76
virtual int calc_value_after_gpu()
CPU-side calculation after the graph in add_calc_value_node is done on GPU.
Definition: colvarcomp.h:147
bool b_try_scalable
Whether or not this CVC will be computed in parallel whenever possible.
Definition: colvarcomp.h:273
virtual int init_gpu()
Initialize GPU data.
Definition: colvarcomp.cpp:149
virtual int calc_gradients_after_gpu()
CPU-side calculation after the graph in add_calc_gradients_node is done on GPU.
Definition: colvarcomp.h:154
cvm::real wrap_center
If the component is periodic, wrap around this value (default: 0.0)
Definition: colvarcomp.h:94
virtual void calc_value()=0
Calculate the variable.
virtual int set_param(std::string const &param_name, void const *new_value) override
Set the named parameter to the given value.
Definition: colvarcomp.cpp:467
void set_value(colvarvalue const &new_value, bool now=false)
Definition: colvarcomp.h:277
virtual void read_data()
Obtain data needed for the calculation for the backend.
Definition: colvarcomp.cpp:493
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Definition: colvarcomp.cpp:1221
colvarvalue x
Cached value.
Definition: colvarcomp.h:309
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp.cpp:621
void calc_fit_gradients()
Calculate the atomic fit gradients.
Definition: colvarcomp.cpp:629
void init_as_periodic_angle()
Set data types for a periodic angle (-180° to 180°)
Definition: colvarcomp.cpp:428
virtual std::vector< std::vector< int > > get_atom_lists()
Get vector of vectors of atom IDs for all atom groups.
Definition: colvarcomp.cpp:550
cvc()
Constructor.
Definition: colvarcomp.cpp:22
virtual int calc_force_invgrads_after_gpu()
CPU-side calculation after the graph in add_calc_force_invgrads_node is done on GPU.
Definition: colvarcomp.h:172
void register_atom_group(cvm::atom_group *ag)
Store a pointer to new atom group, and list as child for dependencies.
Definition: colvarcomp.cpp:451
int init_dependencies() override
Initialize dependency tree.
Definition: colvarcomp.cpp:266
void init_as_angle()
Set data types for a bounded angle (0° to 180°)
Definition: colvarcomp.cpp:421
void init_as_distance()
Set data types for a scalar distance (convenience function)
Definition: colvarcomp.cpp:411
colvarvalue const & total_force() const
Return the previously calculated total force.
Definition: colvarcomp.h:360
colvarvalue x_old
Value at the previous step.
Definition: colvarcomp.h:312
colvarvalue upper_boundary
Location of the upper boundary (not defined by user choice)
Definition: colvarcomp.h:340
colvarvalue lower_boundary
Location of the lower boundary (not defined by user choice)
Definition: colvarcomp.h:337
void init_scalar_boundaries(cvm::real lb, cvm::real ub)
Set two scalar boundaries (convenience function)
Definition: colvarcomp.cpp:438
virtual int begin_apply_force_from_cpu_to_gpu()
Function to clean the staged atom group forces.
Definition: colvarcomp.cpp:1271
std::vector< cvm::atom_group * > atom_groups
Pointers to all atom groups, to let colvars collect info e.g. atomic gradients.
Definition: colvarcomp.h:261
std::string config_key
Keyword used in the input to denote this CVC.
Definition: colvarcomp.h:82
virtual int calc_Jacobian_derivative_after_gpu()
CPU-side calculation after the graph in add_calc_Jacobian_derivative_node is done on GPU.
Definition: colvarcomp.h:178
cvm::atom_group * parse_group(std::string const &conf, char const *group_key, bool optional=false)
Parse a group definition.
Definition: colvarcomp.cpp:201
virtual void apply_force(colvarvalue const &cvforce)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp.cpp:639
cvm::real period
Period of the values of this CVC (default: 0.0, non periodic)
Definition: colvarcomp.h:91
Colvar component: dihedPC Projection of the config onto a dihedral principal component See e....
Definition: colvarcomp.h:852
virtual void collect_gradients(std::vector< int > const &atom_ids, std::vector< cvm::rvector > &atomic_gradients)
Re-implementation of cvc::collect_gradients() to carry over atomic gradients of sub-cvcs.
Definition: colvarcomp_protein.cpp:560
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_protein.cpp:540
virtual int init(std::string const &conf)
Definition: colvarcomp_protein.cpp:351
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_protein.cpp:552
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_protein.cpp:583
Colvar component: dihedral between the centers of mass of four groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:764
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:293
cvm::atom_group * group4
Atom group.
Definition: colvarcomp.h:774
virtual int init(std::string const &conf)
Definition: colvarcomp_angles.cpp:229
cvm::rvector r12
Inter site vectors.
Definition: colvarcomp.h:776
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_angles.cpp:315
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_angles.cpp:346
cvm::atom_group * group1
Atom group.
Definition: colvarcomp.h:768
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:772
bool b_1site_force
Compute total force on first site only to avoid unwanted coupling to other colvars (see e....
Definition: colvarcomp.h:780
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:770
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:270
Colvar component: angle between the dipole of a molecule and an axis formed by two groups of atoms(co...
Definition: colvarcomp.h:729
bool b_1site_force
Definition: colvarcomp.h:748
cvm::rvector r21
Inter site vectors.
Definition: colvarcomp.h:739
cvm::real r21l
Inter site vector norms.
Definition: colvarcomp.h:741
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:147
cvm::rvector dxdr1
Derivatives wrt group centers of mass.
Definition: colvarcomp.h:743
cvm::atom_group * group1
Atom group.
Definition: colvarcomp.h:733
virtual int init(std::string const &conf)
Definition: colvarcomp_angles.cpp:134
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:737
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:735
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:174
Colvar component: dipole magnitude of a molecule.
Definition: colvarcomp.h:586
cvm::atom_group * atoms
Dipole atom group.
Definition: colvarcomp.h:589
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:588
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:597
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:579
Colvar component: distance unit vector (direction) between centers of mass of two groups (colvarvalue...
Definition: colvarcomp.h:426
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:356
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_distances.cpp:335
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:325
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:368
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:350
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:317
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:362
Colvar component: average distance between two groups of atoms, weighted as the sixth power,...
Definition: colvarcomp.h:537
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:542
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:379
int exponent
Components of the distance vector orthogonal to the axis.
Definition: colvarcomp.h:544
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:540
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:411
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:461
Colvar component: N1xN2 vector of pairwise distances (colvarvalue::type_vector type,...
Definition: colvarcomp.h:559
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:556
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:568
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:564
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:562
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:475
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:487
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_distances.cpp:521
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:550
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:562
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:515
Definition: colvarcomp.h:403
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:131
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:125
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:95
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:119
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:102
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_distances.cpp:109
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:137
Colvar component: projection of the distance vector on a plane (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:481
cvm::rvector dist_v_ortho
Components of the distance vector orthogonal to the axis.
Definition: colvarcomp.h:484
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:264
cvm::rvector v12
Vector distances.
Definition: colvarcomp.h:486
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:250
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:288
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:301
Colvar component: projection of the distance vector along an axis(colvarvalue::type_scalar type,...
Definition: colvarcomp.h:449
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:203
cvm::rvector dist_v
Vector distance, cached to be recycled.
Definition: colvarcomp.h:462
cvm::atom_group * main
Main atom group.
Definition: colvarcomp.h:452
bool fixed_axis
Flag: using a fixed axis vector?
Definition: colvarcomp.h:464
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:222
cvm::real axis_norm
Norm of the axis.
Definition: colvarcomp.h:460
cvm::atom_group * ref1
Reference atom group.
Definition: colvarcomp.h:454
cvm::atom_group * ref2
Optional, second ref atom group.
Definition: colvarcomp.h:456
cvm::rvector axis
Vector on which the distance vector is projected.
Definition: colvarcomp.h:458
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:184
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:151
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:235
Colvar component: distance between the centers of mass of two groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:378
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:383
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:80
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:53
cvm::rvector dist_v
Vector distance, cached to be recycled.
Definition: colvarcomp.h:385
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:68
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:36
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:60
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:381
Colvar component: projection of 3N coordinates onto an eigenvector(colvarvalue::type_scalar type,...
Definition: colvarcomp.h:657
std::vector< cvm::atom_pos > ref_pos
Reference coordinates.
Definition: colvarcomp.h:664
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:1275
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1504
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:1471
std::vector< cvm::rvector > eigenvec
Eigenvector (of a normal or essential mode): will always have zero center.
Definition: colvarcomp.h:667
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:661
cvm::real eigenvec_invnorm2
Inverse square norm of the eigenvector.
Definition: colvarcomp.h:670
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1482
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1492
Definition: colvarcomp.h:1000
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:397
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:381
Definition: colvarcomp.h:1011
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:444
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:428
Definition: colvarcomp.h:1022
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:489
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:475
Colvar component: alternative path collective variable using geometry, variable s Allow any combinati...
Definition: colvarcomp.h:1321
virtual int init(std::string const &conf)
Definition: colvarcomp_gpath.cpp:708
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_gpath.cpp:777
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_gpath.cpp:815
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_gpath.cpp:772
Colvar component: alternative path collective variable using geometry, variable s For more informatio...
Definition: colvarcomp.h:1182
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_gpath.cpp:312
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_gpath.cpp:307
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_gpath.cpp:337
virtual int init(std::string const &conf)
Definition: colvarcomp_gpath.cpp:187
Colvar component: Radius of gyration of an atom group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:605
cvm::atom_group * atoms
Atoms involved.
Definition: colvarcomp.h:608
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:639
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:660
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:650
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:674
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:620
Definition: colvarcomp.h:1338
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_gpath.cpp:961
virtual int init(std::string const &conf)
Definition: colvarcomp_gpath.cpp:845
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_gpath.cpp:922
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_gpath.cpp:927
Colvar component: alternative path collective variable using geometry, variable z This should be merg...
Definition: colvarcomp.h:1204
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_gpath.cpp:471
virtual int init(std::string const &conf)
Definition: colvarcomp_gpath.cpp:350
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_gpath.cpp:476
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_gpath.cpp:491
Colvar component: moment of inertia of an atom group around a user-defined axis (colvarvalue::type_sc...
Definition: colvarcomp.h:639
cvm::rvector axis
Vector on which the inertia tensor is projected.
Definition: colvarcomp.h:642
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:729
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:742
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:713
Colvar component: moment of inertia of an atom group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:625
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:687
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:697
Current only linear combination of sub-CVCs is available.
Definition: colvarcomp.h:1224
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_combination.cpp:155
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_combination.cpp:131
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_combination.cpp:99
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_combination.cpp:169
std::vector< colvar::cvc * > cv
Sub-colvar components.
Definition: colvarcomp.h:1227
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_combination.cpp:113
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_combination.cpp:149
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_combination.cpp:162
virtual int init(std::string const &conf)
Definition: colvarcomp_combination.cpp:19
bool use_explicit_gradients
If all sub-cvs use explicit gradients then we also use it.
Definition: colvarcomp.h:1229
Definition: colvarcomp.h:1453
std::string volmap_name
String identifier of the map object (as used by the simulation engine)
Definition: colvarcomp.h:1466
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_volmaps.cpp:101
int volmap_index
Index of the map objet in the proxy arrays.
Definition: colvarcomp.h:1472
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_volmaps.cpp:130
cvm::atom_group * atoms
Group of atoms selected internally (optional)
Definition: colvarcomp.h:1475
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_volmaps.cpp:124
virtual int init(std::string const &conf)
Definition: colvarcomp_volmaps.cpp:24
std::vector< cvm::real > atom_weights
Weights assigned to each atom (default: uniform weights)
Definition: colvarcomp.h:1478
int volmap_id
Numeric identifier of the map object (as used by the simulation engine)
Definition: colvarcomp.h:1469
Definition: colvarcomp.h:1422
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_neuralnetwork.cpp:210
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_neuralnetwork.cpp:222
size_t m_output_index
the index of nn output components
Definition: colvarcomp.h:1427
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_neuralnetwork.cpp:229
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_neuralnetwork.cpp:155
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_neuralnetwork.cpp:216
std::unique_ptr< neuralnetworkCV::neuralNetworkCompute > nn
actual computation happens in neuralnetworkCV::neuralNetworkCompute
Definition: colvarcomp.h:1425
virtual int init(std::string const &conf)
Definition: colvarcomp_neuralnetwork.cpp:25
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_neuralnetwork.cpp:172
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_neuralnetwork.cpp:191
Definition: colvarcomp.h:928
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:190
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:204
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_rotations.cpp:223
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to use scalar metrics.
Definition: colvarcomp_rotations.cpp:249
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use scalar metrics.
Definition: colvarcomp_rotations.cpp:242
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use scalar metrics.
Definition: colvarcomp_rotations.cpp:229
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use scalar metrics.
Definition: colvarcomp_rotations.cpp:235
Colvar component: cosine of the angle of rotation with respect to a set of reference coordinates (col...
Definition: colvarcomp.h:953
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:263
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:272
Colvar component: orientation in space of an atom group, with respect to a set of reference coordinat...
Definition: colvarcomp.h:878
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_rotations.cpp:140
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use quaternion metrics.
Definition: colvarcomp_rotations.cpp:157
cvm::rotation rot
Rotation object.
Definition: colvarcomp.h:894
cvm::ag_vector_real_t shifted_pos_soa
Shifted atomic positions.
Definition: colvarcomp.h:890
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:117
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:131
cvm::ag_vector_real_t ref_pos_soa
Reference coordinates.
Definition: colvarcomp.h:886
cvm::atom_pos atoms_cog
Center of geometry of the group.
Definition: colvarcomp.h:883
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use quaternion metrics.
Definition: colvarcomp_rotations.cpp:171
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use quaternion metrics.
Definition: colvarcomp_rotations.cpp:164
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to use quaternion metrics.
Definition: colvarcomp_rotations.cpp:178
cvm::quaternion ref_quat
This is used to remove jumps in the sign of the quaternion, which may be annoying in the colvars traj...
Definition: colvarcomp.h:898
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:41
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:881
Colvar component: polar coordinate phi of a group (colvarvalue::type_scalar type, range [-180:180])
Definition: colvarcomp.h:501
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:414
virtual int init(std::string const &conf)
Definition: colvarcomp_angles.cpp:405
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:425
Colvar component: polar coordinate theta of a group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:519
virtual int init(std::string const &conf)
Definition: colvarcomp_angles.cpp:363
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:372
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:383
Definition: colvarcomp_distances.cpp:758
Colvar component: root mean square deviation (RMSD) of a group with respect to a set of reference coo...
Definition: colvarcomp.h:1037
size_t best_perm_index
Index of the permutation yielding the smallest RMSD (0 for identity)
Definition: colvarcomp.h:1059
int init_permutation(std::vector< cvm::atom_pos > &ref_pos, std::string const &conf)
Permutation RMSD input parsing.
Definition: colvarcomp_distances.cpp:1032
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1042
size_t num_ref_pos
Definition: colvarcomp.h:1046
int proxy_gpu_buffers_reallocated() override
Function to call when proxy buffer pointers are changed (re-allocated)
Definition: colvarcomp_distances.cpp:1256
virtual void calc_gradients() override
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1107
int calc_Jacobian_derivative_after_gpu() override
CPU-side calculation after the graph in add_calc_Jacobian_derivative_node is done on GPU.
Definition: colvarcomp_distances.cpp:1249
virtual void calc_force_invgrads() override
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1131
virtual void calc_Jacobian_derivative() override
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1145
size_t n_permutations
Number of permutations of symmetry-related atoms.
Definition: colvarcomp.h:1055
virtual int init(std::string const &conf) override
Definition: colvarcomp_distances.cpp:921
int calc_force_invgrads_after_gpu() override
CPU-side calculation after the graph in add_calc_force_invgrads_node is done on GPU.
Definition: colvarcomp_distances.cpp:1238
virtual void calc_value() override
Calculate the variable.
Definition: colvarcomp_distances.cpp:1081
int calc_value_after_gpu() override
CPU-side calculation after the graph in add_calc_value_node is done on GPU.
Definition: colvarcomp_distances.cpp:1214
Colvar component: angle of rotation around a predefined axis (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:988
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:345
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:357
Colvar component: projection of the orientation vector onto a predefined axis (colvarvalue::type_scal...
Definition: colvarcomp.h:968
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:321
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:296
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:310
std::vector< cvm::rvector > atomic_gradients
Array of atomic gradients collected from all cvcs with appropriate components, rotations etc....
Definition: colvar.h:724
colvarvalue ft
Total force, as derived from the atomic trajectory; should equal the system force plus f.
Definition: colvar.h:223
std::vector< int > atom_ids
Sorted array of (zero-based) IDs for all atoms involved.
Definition: colvar.h:719
Parent class for a member object of a bias, cv or cvc etc. containing features and their dependencies...
Definition: colvardeps.h:34
int time_step_factor
Definition: colvardeps.h:96
1-dimensional vector of real numbers with four components and a quaternion algebra
Definition: colvartypes.h:980
A rotation between two sets of coordinates (for the moment a wrapper for colvarmodule::quaternion)
Definition: colvartypes.h:1368
vector of real numbers with three components
Definition: colvartypes.h:728
Class to store the system's boundary conditions.
Definition: colvars_system.h:16
Collective variables module (main class)
Definition: colvarmodule.h:71
double real
Defining an abstract real number allows to switch precision.
Definition: colvarmodule.h:98
colvarproxy * proxy
Pointer to the proxy object, used to retrieve atomic data from the hosting program.
Definition: colvarmodule.h:970
virtual int send_alch_lambda()
Send cached value of alchemical lambda parameter to back-end (if available)
Definition: colvarproxy_system.cpp:120
void set_alch_lambda(cvm::real lambda)
Set value of alchemical lambda parameter to be sent to back-end at end of timestep.
Definition: colvarproxy_system.cpp:113
Value of a collective variable: this is a metatype which can be set at runtime. By default it is set ...
Definition: colvarvalue.h:43
cvm::real real_value
Real data member.
Definition: colvarvalue.h:77
Store the information of a group of atoms in a structure-of-arrays (SoA) style.
Definition: colvaratoms.h:52
Collective variables main module.
Colvars proxy classes.
Definition: colvarcomp_apath.cpp:22
Definition: colvarcomp_rotations.cpp:16
A simplified class of cvm::atom that can be used with cvm::atom_group::atom_modifier.
Definition: colvaratoms.h:111