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 colvarparse, 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
100 virtual ~cvc();
101
105 virtual int init(std::string const &conf);
106
108 virtual int init_dependencies();
109
111 int setup();
112
114 virtual const std::vector<feature *> &features() const
115 {
116 return cvc_features;
117 }
118
119 virtual std::vector<feature *> &modify_features()
120 {
121 return cvc_features;
122 }
123
124 static void delete_features() {
125 for (size_t i=0; i < cvc_features.size(); i++) {
126 delete cvc_features[i];
127 }
128 cvc_features.clear();
129 }
130
132 virtual std::vector<std::vector<int> > get_atom_lists();
133
135 virtual void read_data();
136
138 virtual void calc_value() = 0;
139
142 virtual void calc_gradients() {}
143
145 void calc_fit_gradients();
146
148 virtual void debug_gradients();
149
152 virtual void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
153
156 virtual void calc_force_invgrads();
157
159 virtual void calc_Jacobian_derivative();
160
161
163 colvarvalue const & value() const;
164
166 colvarvalue const & total_force() const;
167
170 colvarvalue const & Jacobian_derivative() const;
171
181 virtual void apply_force(colvarvalue const &cvforce);
182
201 virtual cvm::real dist2(colvarvalue const &x1,
202 colvarvalue const &x2) const;
203
207 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
208 colvarvalue const &x2) const;
209
213 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
214 colvarvalue const &x2) const;
215
217 virtual void wrap(colvarvalue &x_unwrapped) const;
218
221 std::vector<cvm::atom_group *> atom_groups;
222
225
227 virtual colvarvalue const *get_param_grad(std::string const &param_name);
228
230 virtual int set_param(std::string const &param_name, void const *new_value);
231
233 bool b_try_scalable = true;
234
237 inline void set_value(colvarvalue const &new_value, bool now=false) {
238 x = new_value;
239 // Cache value to be communicated to back-end between time steps
241 if (now) {
242 // If requested (e.g. upon restarting), sync to back-end
244 }
245 }
246
247protected:
248
250 int set_function_type(std::string const &type);
251
253 int update_description();
254
256 cvm::atom_group *parse_group(std::string const &conf, char const *group_key,
257 bool optional = false);
258
260 virtual int init_total_force_params(std::string const &conf);
261
263 static std::vector<feature *> cvc_features;
264
266 std::vector<std::string> function_types;
267
270
273
279
283
285 void init_as_distance();
286
288 void init_as_angle();
289
292
295
298
301
304};
305
306
307inline colvarvalue const & colvar::cvc::value() const
308{
309 return x;
310}
311
312
314{
315 return ft;
316}
317
318
320{
321 return jd;
322}
323
324
325
328
330 : public colvar::cvc
331{
332protected:
339public:
340 distance();
341 virtual ~distance() {}
342 virtual int init(std::string const &conf);
343 virtual void calc_value();
344 virtual void calc_gradients();
345 virtual void calc_force_invgrads();
346 virtual void calc_Jacobian_derivative();
347};
348
349
350
351// \brief Colvar component: distance vector between centers of mass
352// of two groups (\link colvarvalue::type_3vector \endlink type,
353// range (-*:*)x(-*:*)x(-*:*))
355 : public colvar::distance
356{
357public:
358 distance_vec();
359 virtual ~distance_vec() {}
360 virtual void calc_value();
361 virtual void calc_gradients();
362 virtual void apply_force(colvarvalue const &force);
364 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
366 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
368 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
370 virtual void wrap(colvarvalue &x_unwrapped) const;
371};
372
373
378 : public colvar::distance
379{
380public:
381 distance_dir();
382 virtual ~distance_dir() {}
383 virtual void calc_value();
384 virtual void calc_gradients();
385 virtual void apply_force(colvarvalue const &force);
387 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
389 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
391 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
393 virtual void wrap(colvarvalue &x_unwrapped) const;
394};
395
396
397
401 : public colvar::cvc
402{
403protected:
417 bool fixed_axis = true;
418public:
419 distance_z();
420 virtual ~distance_z() {}
421 virtual int init(std::string const &conf);
422 virtual void calc_value();
423 virtual void calc_gradients();
424 virtual void calc_force_invgrads();
425 virtual void calc_Jacobian_derivative();
426};
427
428
429
433 : public colvar::distance_z
434{
435protected:
440public:
441 distance_xy();
442 virtual ~distance_xy() {}
443 virtual void calc_value();
444 virtual void calc_gradients();
445 virtual void calc_force_invgrads();
446 virtual void calc_Jacobian_derivative();
447};
448
449
453 : public colvar::cvc
454{
455protected:
456 cvm::atom_group *atoms = nullptr;
457 cvm::real r, theta, phi;
458
459public:
460 polar_phi();
461 virtual ~polar_phi() {}
462 virtual int init(std::string const &conf);
463 virtual void calc_value();
464 virtual void calc_gradients();
465};
466
467
471 : public colvar::cvc
472{
473public:
474 polar_theta();
475 virtual ~polar_theta() {}
476 virtual int init(std::string const &conf);
477protected:
478 cvm::atom_group *atoms = nullptr;
479 cvm::real r, theta, phi;
480public:
481 virtual void calc_value();
482 virtual void calc_gradients();
483};
484
485
489 : public colvar::cvc
490{
491protected:
497 int exponent = 6;
498public:
499 distance_inv();
500 virtual ~distance_inv() {}
501 virtual int init(std::string const &conf);
502 virtual void calc_value();
503 virtual void calc_gradients();
504};
505
506
507
511 : public colvar::cvc
512{
513protected:
518public:
520 virtual ~distance_pairs() {}
521 virtual int init(std::string const &conf);
522 virtual void calc_value();
523 virtual void calc_gradients();
524 virtual void apply_force(colvarvalue const &force);
526 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
528 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
530 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
532 virtual void wrap(colvarvalue &x_unwrapped) const;
533};
534
535
538 : public colvar::cvc
539{
540protected:
543 cvm::atom_pos dipoleV;
544public:
546 virtual ~dipole_magnitude() {}
547 virtual int init(std::string const &conf);
548 virtual void calc_value();
549 virtual void calc_gradients();
550};
551
552
553
557 : public colvar::cvc
558{
559protected:
562public:
563 gyration();
564 virtual ~gyration() {}
565 virtual int init(std::string const &conf);
566 virtual void calc_value();
567 virtual void calc_gradients();
568 virtual void calc_force_invgrads();
569 virtual void calc_Jacobian_derivative();
570};
571
572
573
577 : public colvar::gyration
578{
579public:
580 inertia();
581 virtual ~inertia() {}
582 virtual void calc_value();
583 virtual void calc_gradients();
584};
585
586
587
591 : public colvar::inertia
592{
593protected:
596public:
597 inertia_z();
598 virtual ~inertia_z() {}
599 virtual int init(std::string const &conf);
600 virtual void calc_value();
601 virtual void calc_gradients();
602};
603
604
605
609 : public colvar::cvc
610{
611protected:
612
615
617 std::vector<cvm::atom_pos> ref_pos;
618
620 std::vector<cvm::rvector> eigenvec;
621
624
625public:
626
627 eigenvector();
628 virtual ~eigenvector() {}
629 virtual int init(std::string const &conf);
630 virtual void calc_value();
631 virtual void calc_gradients();
632 virtual void calc_force_invgrads();
633 virtual void calc_Jacobian_derivative();
634};
635
636
637
641 : public colvar::cvc
642{
643protected:
656
660 bool b_1site_force = false;
661public:
662
663 angle();
668 virtual ~angle() {}
669 virtual int init(std::string const &conf);
670 virtual void calc_value();
671 virtual void calc_gradients();
672 virtual void calc_force_invgrads();
673 virtual void calc_Jacobian_derivative();
674};
675
676
677
681 : public colvar::cvc
682{
683protected:
684
697
701 bool b_1site_force = false;
702public:
703
704 dipole_angle();
705 virtual ~dipole_angle() {}
706 virtual int init(std::string const &conf);
707 virtual void calc_value();
708 virtual void calc_gradients();
709};
710
711
712
716 : public colvar::cvc
717{
718protected:
719
729 cvm::rvector r12, r23, r34;
730
733 bool b_1site_force = false;
734
735public:
736
742 dihedral();
743 virtual ~dihedral() {}
744 virtual int init(std::string const &conf);
745 virtual void calc_value();
746 virtual void calc_gradients();
747 virtual void calc_force_invgrads();
748 virtual void calc_Jacobian_derivative();
749};
750
751
752
756 : public colvar::cvc
757{
758protected:
768 bool b_anisotropic = false;
770 int en = 6;
772 int ed = 12;
773
776
779
781 int pairlist_freq = 100;
782
784 bool *pairlist = nullptr;
785
786public:
787
788 coordnum();
789 virtual ~coordnum();
790 virtual int init(std::string const &conf);
791 virtual void calc_value();
792 virtual void calc_gradients();
793
794 enum {
795 ef_null = 0,
796 ef_gradients = 1,
797 ef_anisotropic = (1<<8),
798 ef_use_pairlist = (1<<9),
799 ef_rebuild_pairlist = (1<<10)
800 };
801
809 template<int flags>
811 cvm::rvector const &inv_r0_vec,
812 cvm::rvector const &inv_r0sq_vec,
813 int en,
814 int ed,
815 const cvm::real a1x,
816 const cvm::real a1y,
817 const cvm::real a1z,
818 const cvm::real a2x,
819 const cvm::real a2y,
820 const cvm::real a2z,
821 cvm::real& g1x,
822 cvm::real& g1y,
823 cvm::real& g1z,
824 cvm::real& g2x,
825 cvm::real& g2y,
826 cvm::real& g2z,
827 bool **pairlist_elem,
829
831 template<int flags> int compute_coordnum();
832
834 template<int flags> void main_loop(bool **pairlist_elem);
835
836};
837
838
839
843 : public colvar::cvc
844{
845protected:
851 int en = 6;
853 int ed = 12;
854 cvm::real tolerance = 0.0;
855 int pairlist_freq = 100;
856
857 bool *pairlist = nullptr;
858
859public:
860
861 selfcoordnum();
863 virtual int init(std::string const &conf);
864 virtual void calc_value();
865 virtual void calc_gradients();
866
868 template<int flags> int compute_selfcoordnum();
869};
870
871
872
876 : public colvar::distance
877{
878protected:
885 bool b_anisotropic = false;
887 int en = 6;
889 int ed = 12;
890public:
892 virtual ~groupcoordnum() {}
893 virtual int init(std::string const &conf);
894 virtual void calc_value();
895 virtual void calc_gradients();
896};
897
898
899
904 : public colvar::cvc
905{
906protected:
910 int en = 6;
912 int ed = 8;
913public:
915 h_bond(cvm::atom_group::simple_atom const &acceptor,
916 cvm::atom_group::simple_atom const &donor,
917 cvm::real r0, int en, int ed);
918 h_bond();
919 virtual ~h_bond() {}
920 virtual int init(std::string const &conf);
921 virtual void calc_value();
922 virtual void calc_gradients();
923};
924
925
931 : public colvar::cvc
932{
933protected:
934
937
940
942 std::vector<angle *> theta;
943
945 std::vector<h_bond *> hb;
946
949
952
954 int en = 6;
955
957 int ed = 8;
958
959public:
960
961 alpha_angles();
962 virtual ~alpha_angles();
963 virtual int init(std::string const &conf);
964 void calc_value();
965 void calc_gradients();
967 void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
968 void apply_force(colvarvalue const &force);
969};
970
971
972
978 : public colvar::cvc
979{
980protected:
981
982 std::vector<dihedral *> theta;
983 std::vector<cvm::real> coeffs;
984
985public:
986
987 dihedPC();
988 virtual ~dihedPC();
989 virtual int init(std::string const &conf);
990 virtual void calc_value();
991 virtual void calc_gradients();
993 virtual void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
994 virtual void apply_force(colvarvalue const &force);
995};
996
997
998
1004 : public colvar::cvc
1005{
1006protected:
1011
1013 cvm::ag_vector_real_t ref_pos_soa;
1014 size_t num_ref_pos;
1015
1017 cvm::ag_vector_real_t shifted_pos_soa;
1018 size_t num_shifted_pos;
1019
1022
1026
1029 std::unique_ptr<rotation_derivative_impl_> rot_deriv_impl;
1030
1031public:
1032
1033 orientation();
1034 virtual ~orientation();
1035 virtual int init(std::string const &conf);
1036 virtual void calc_value();
1037 virtual void calc_gradients();
1038 virtual void apply_force(colvarvalue const &force);
1040 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
1042 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1044 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1046 virtual void wrap(colvarvalue &x_unwrapped) const;
1047};
1048
1049
1054 : public colvar::orientation
1055{
1056public:
1057
1059 virtual ~orientation_angle() {}
1060 virtual void calc_value();
1061 virtual void calc_gradients();
1062 virtual void apply_force(colvarvalue const &force);
1064 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
1066 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1068 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1070 virtual void wrap(colvarvalue &x_unwrapped) const;
1071};
1072
1073
1074
1080{
1081public:
1082
1084 virtual ~orientation_proj() {}
1085 virtual void calc_value();
1086 virtual void calc_gradients();
1087};
1088
1089
1090
1095{
1096protected:
1097
1098 cvm::rvector axis;
1099
1100public:
1101
1102 tilt();
1103 virtual ~tilt() {}
1104 virtual int init(std::string const &conf);
1105 virtual void calc_value();
1106 virtual void calc_gradients();
1107};
1108
1109
1110
1114 : public colvar::tilt
1115{
1116public:
1117
1118 spin_angle();
1119 virtual ~spin_angle() {}
1120 virtual void calc_value();
1121 virtual void calc_gradients();
1122};
1123
1124
1127{
1128public:
1129 euler_phi();
1130 virtual ~euler_phi() {}
1131 virtual void calc_value();
1132 virtual void calc_gradients();
1133};
1134
1135
1138{
1139public:
1140 euler_psi();
1141 virtual ~euler_psi() {}
1142 virtual void calc_value();
1143 virtual void calc_gradients();
1144};
1145
1146
1149{
1150public:
1151 euler_theta();
1152 virtual ~euler_theta() {}
1153 virtual void calc_value();
1154 virtual void calc_gradients();
1155};
1156
1157
1163 : public colvar::cvc
1164{
1165protected:
1166
1167 // TODO: transfrom ref_pos to soa
1170
1173 std::vector<cvm::atom_pos> ref_pos;
1174
1176 size_t n_permutations = 1;
1177
1180
1182 int init_permutation(std::string const &conf);
1183
1184public:
1185 rmsd();
1186 virtual ~rmsd() {}
1187 virtual int init(std::string const &conf);
1188 virtual void calc_value();
1189 virtual void calc_gradients();
1190 virtual void calc_force_invgrads();
1191 virtual void calc_Jacobian_derivative();
1192};
1193
1194
1195
1196// \brief Colvar component: flat vector of Cartesian coordinates
1197// Mostly useful to compute scripted colvar values
1199 : public colvar::cvc
1200{
1201protected:
1205 std::vector<size_t> axes;
1206public:
1207 cartesian();
1208 virtual ~cartesian() {}
1209 virtual int init(std::string const &conf);
1210 virtual void calc_value();
1211 virtual void calc_gradients();
1212 virtual void apply_force(colvarvalue const &force);
1214 virtual cvm::real dist2(colvarvalue const &x1,
1215 colvarvalue const &x2) const;
1217 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1218 colvarvalue const &x2) const;
1220 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1221 colvarvalue const &x2) const;
1223 virtual void wrap(colvarvalue &x_unwrapped) const;
1224};
1225
1226
1227// \brief Colvar component: alch_lambda
1228// To communicate value with back-end in lambda-dynamics
1230 : public colvar::cvc
1231{
1232protected:
1233 // No atom groups needed
1234public:
1235 alch_lambda();
1236 int init_alchemy(int time_step_factor);
1237 virtual ~alch_lambda() {}
1238 virtual void calc_value();
1239 virtual void calc_force_invgrads();
1240 virtual void calc_Jacobian_derivative();
1241 virtual void apply_force(colvarvalue const &force);
1242};
1243
1244
1245// \brief Colvar component: alch_Flambda
1246// To communicate force on lambda with back-end in lambda-dynamics
1248 : public colvar::cvc
1249{
1250protected:
1251 // No atom groups needed
1252public:
1253 alch_Flambda();
1254 virtual ~alch_Flambda() {}
1255 virtual void calc_value();
1256 virtual void calc_gradients();
1257 virtual void apply_force(colvarvalue const &force);
1258};
1259
1260
1262 : public colvar::cvc
1263{
1264protected:
1265 virtual void computeDistanceBetweenReferenceFrames(std::vector<cvm::real>& result);
1266 virtual void computeDistanceToReferenceFrames(std::vector<cvm::real>& result);
1272 std::vector<std::vector<cvm::atom_pos>> reference_frames;
1273 std::vector<std::vector<cvm::atom_pos>> reference_fitting_frames;
1275 std::vector<cvm::atom_group*> comp_atoms;
1278public:
1280 virtual ~CartesianBasedPath();
1281 virtual int init(std::string const &conf);
1282 virtual void calc_value() = 0;
1284 virtual void apply_force(colvarvalue const &force);
1285};
1286
1291 : public colvar::CartesianBasedPath, public GeometricPathCV::GeometricPathBase<cvm::atom_pos, cvm::real, GeometricPathCV::path_sz::S>
1292{
1293private:
1294 // Optimal rotation for compute v3
1295 cvm::rotation rot_v3;
1296protected:
1297 virtual void prepareVectors();
1298 virtual void updateDistanceToReferenceFrames();
1299public:
1300 gspath();
1301 virtual ~gspath() {}
1302 virtual int init(std::string const &conf);
1303 virtual void calc_value();
1304 virtual void calc_gradients();
1305 virtual void apply_force(colvarvalue const &force);
1306};
1307
1308
1309
1313 : public colvar::CartesianBasedPath, public GeometricPathCV::GeometricPathBase<cvm::atom_pos, cvm::real, GeometricPathCV::path_sz::Z>
1314{
1315private:
1316 // Optimal rotation for compute v3, v4
1317 cvm::rotation rot_v3;
1318 cvm::rotation rot_v4;
1319protected:
1320 virtual void prepareVectors();
1321 virtual void updateDistanceToReferenceFrames();
1322public:
1323 gzpath();
1324 virtual ~gzpath() {}
1325 virtual int init(std::string const &conf);
1326 virtual void calc_value();
1327 virtual void calc_gradients();
1328 virtual void apply_force(colvarvalue const &force);
1329};
1330
1333 : public colvar::cvc
1334{
1335protected:
1337 std::vector<colvar::cvc*> cv;
1340protected:
1341 cvm::real getPolynomialFactorOfCVGradient(size_t i_cv) const;
1342public:
1344 virtual ~linearCombination();
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);
1350 virtual cvm::real dist2(colvarvalue const &x1,
1351 colvarvalue const &x2) const;
1353 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1354 colvarvalue const &x2) const;
1356 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1357 colvarvalue const &x2) const;
1359 virtual void wrap(colvarvalue &x_unwrapped) const;
1360};
1361
1362
1366{
1367protected:
1368 bool use_custom_function = false;
1369#ifdef LEPTON
1371 std::vector<Lepton::CompiledExpression *> value_evaluators;
1373 std::vector<Lepton::CompiledExpression *> gradient_evaluators;
1375 std::vector<double *> value_eval_var_refs;
1376 std::vector<double *> grad_eval_var_refs;
1378 double dev_null = 0.0;
1379#endif
1380public:
1381 customColvar();
1382 virtual ~customColvar();
1383 virtual int init(std::string const &conf);
1384 virtual void calc_value();
1385 virtual void calc_gradients();
1386 virtual void apply_force(colvarvalue const &force);
1387};
1388
1389
1391 : public colvar::cvc
1392{
1393protected:
1395 std::vector<colvar::cvc*> cv;
1397 std::vector<std::vector<colvarvalue>> ref_cv;
1402protected:
1403 virtual void computeDistanceToReferenceFrames(std::vector<cvm::real>& result);
1405 virtual void computeDistanceBetweenReferenceFrames(std::vector<cvm::real>& result) const;
1406 cvm::real getPolynomialFactorOfCVGradient(size_t i_cv) const;
1407public:
1408 CVBasedPath();
1409 virtual ~CVBasedPath();
1410 virtual int init(std::string const &conf);
1411 virtual void calc_value() = 0;
1413 virtual void apply_force(colvarvalue const &force);
1415 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
1417 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1419 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1421 virtual void wrap(colvarvalue &x_unwrapped) const;
1422};
1423
1424
1430 : public colvar::CVBasedPath, public GeometricPathCV::GeometricPathBase<colvarvalue, cvm::real, GeometricPathCV::path_sz::S>
1431{
1432protected:
1433 virtual void updateDistanceToReferenceFrames();
1434 virtual void prepareVectors();
1435public:
1436 gspathCV();
1437 virtual ~gspathCV();
1438 virtual int init(std::string const &conf);
1439 virtual void calc_value();
1440 virtual void calc_gradients();
1441 virtual void apply_force(colvarvalue const &force);
1442};
1443
1444
1445
1447 : public colvar::CVBasedPath, public GeometricPathCV::GeometricPathBase<colvarvalue, cvm::real, GeometricPathCV::path_sz::Z>
1448{
1449protected:
1450 virtual void updateDistanceToReferenceFrames();
1451 virtual void prepareVectors();
1452public:
1453 gzpathCV();
1454 virtual ~gzpathCV();
1455 virtual int init(std::string const &conf);
1456 virtual void calc_value();
1457 virtual void calc_gradients();
1458 virtual void apply_force(colvarvalue const &force);
1459};
1460
1461struct ArithmeticPathImpl;
1462
1465{
1466private:
1467 std::unique_ptr<ArithmeticPathImpl> impl_;
1468 friend struct ArithmeticPathImpl;
1469public:
1470 aspath();
1471 virtual ~aspath();
1472 virtual int init(std::string const &conf);
1473 virtual void calc_value();
1474 virtual void calc_gradients();
1475 virtual void apply_force(colvarvalue const &force);
1476};
1477
1480{
1481private:
1482 std::unique_ptr<ArithmeticPathImpl> impl_;
1483 friend struct ArithmeticPathImpl;
1484public:
1485 azpath();
1486 virtual ~azpath();
1487 virtual int init(std::string const &conf);
1488 virtual void calc_value();
1489 virtual void calc_gradients();
1490 virtual void apply_force(colvarvalue const &force);
1491};
1492
1494 : public colvar::CVBasedPath
1495{
1496private:
1497 std::unique_ptr<ArithmeticPathImpl> impl_;
1498 friend struct ArithmeticPathImpl;
1499public:
1500 aspathCV();
1501 virtual ~aspathCV();
1502 virtual int init(std::string const &conf);
1503 virtual void calc_value();
1504 virtual void calc_gradients();
1505 virtual void apply_force(colvarvalue const &force);
1506};
1507
1508
1510 : public colvar::CVBasedPath
1511{
1512private:
1513 std::unique_ptr<ArithmeticPathImpl> impl_;
1514 friend struct ArithmeticPathImpl;
1515public:
1516 azpathCV();
1517 virtual ~azpathCV();
1518 virtual int init(std::string const &conf);
1519 virtual void calc_value();
1520 virtual void calc_gradients();
1521 virtual void apply_force(colvarvalue const &force);
1522};
1523
1524// forward declaration
1525namespace neuralnetworkCV {
1526 class neuralNetworkCompute;
1527}
1528
1529
1531 : public linearCombination
1532{
1533protected:
1535 std::unique_ptr<neuralnetworkCV::neuralNetworkCompute> nn;
1537 size_t m_output_index = 0;
1538public:
1539 neuralNetwork();
1540 virtual ~neuralNetwork();
1541 virtual int init(std::string const &conf);
1542 virtual void calc_value();
1543 virtual void calc_gradients();
1544 virtual void apply_force(colvarvalue const &force);
1546 virtual cvm::real dist2(colvarvalue const &x1,
1547 colvarvalue const &x2) const;
1549 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1550 colvarvalue const &x2) const;
1552 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1553 colvarvalue const &x2) const;
1555 virtual void wrap(colvarvalue &x_unwrapped) const;
1556};
1557
1558
1559// \brief Colvar component: total value of a scalar map
1560// (usually implemented as a grid by the simulation engine)
1562 : public colvar::cvc
1563{
1564public:
1565
1566 map_total();
1567 virtual ~map_total() {}
1568 virtual int init(std::string const &conf);
1569 virtual void calc_value();
1570 virtual void calc_gradients();
1571 virtual void apply_force(colvarvalue const &force);
1572
1573protected:
1574
1576 std::string volmap_name;
1577
1579 int volmap_id = -1;
1580
1583
1586
1588 std::vector<cvm::real> atom_weights;
1589};
1590
1591
1592
1593#endif
Definition: colvar_geometricpath.h:24
Definition: colvarcomp.h:1392
std::vector< colvar::cvc * > cv
Sub-colvar components.
Definition: colvarcomp.h:1395
size_t total_reference_frames
Total number of reference frames.
Definition: colvarcomp.h:1401
bool use_explicit_gradients
If all sub-cvs use explicit gradients then we also use it.
Definition: colvarcomp.h:1399
std::vector< std::vector< colvarvalue > > ref_cv
Reference colvar values from path.
Definition: colvarcomp.h:1397
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_gpath.cpp:666
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:673
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:679
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to use the metric of the returned colvarvalue (defined at runtime)
Definition: colvarcomp_gpath.cpp:691
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:621
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:685
Definition: colvarcomp.h:1263
cvm::atom_group * atoms
Selected atoms.
Definition: colvarcomp.h:1268
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:1272
size_t total_reference_frames
Total number of reference frames.
Definition: colvarcomp.h:1277
bool has_user_defined_fitting
Fitting options.
Definition: colvarcomp.h:1270
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:1275
Definition: colvarcomp.h:1249
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:1231
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:932
void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_protein.cpp:236
cvm::real theta_tol
Tolerance on the Calpha-Calpha angle.
Definition: colvarcomp.h:939
int en
Integer exponent of the HB numerator.
Definition: colvarcomp.h:954
cvm::real theta_ref
Reference Calpha-Calpha angle (default: 88 degrees)
Definition: colvarcomp.h:936
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:247
void calc_value()
Calculate the variable.
Definition: colvarcomp_protein.cpp:192
cvm::real hb_coeff
Contribution of the HB terms.
Definition: colvarcomp.h:948
int ed
Integer exponent of the HB denominator.
Definition: colvarcomp.h:957
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:299
cvm::real r0
Cutoff for HB.
Definition: colvarcomp.h:951
std::vector< h_bond * > hb
List of hydrogen bonds.
Definition: colvarcomp.h:945
virtual int init(std::string const &conf)
Definition: colvarcomp_protein.cpp:28
std::vector< angle * > theta
List of Calpha-Calpha angles.
Definition: colvarcomp.h:942
Colvar component: angle between the centers of mass of three groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:642
bool b_1site_force
Definition: colvarcomp.h:660
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:649
cvm::rvector r21
Inter site vectors.
Definition: colvarcomp.h:651
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:81
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_angles.cpp:121
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:647
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:98
cvm::rvector dxdr1
Derivatives wrt group centers of mass.
Definition: colvarcomp.h:655
cvm::real r21l
Inter site vector norms.
Definition: colvarcomp.h:653
cvm::atom_group * group1
Atom group.
Definition: colvarcomp.h:645
Definition: colvarcomp.h:1495
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:1465
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:1511
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:1480
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:1200
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1474
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1437
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1203
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1480
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:1394
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:1423
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1462
std::vector< size_t > axes
Which Cartesian coordinates to include.
Definition: colvarcomp.h:1205
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1468
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:1445
Colvar component: coordination number between two groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:757
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:770
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:323
int compute_coordnum()
Workhorse function.
Definition: colvarcomp_coordnums.cpp:274
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:762
cvm::real tolerance
Tolerance for the pair list.
Definition: colvarcomp.h:778
bool b_group2_center_only
If true, group2 will be treated as a single atom.
Definition: colvarcomp.h:775
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:772
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:334
static cvm::real switching_function(cvm::real const &r0, cvm::rvector const &inv_r0_vec, cvm::rvector const &inv_r0sq_vec, int en, int ed, const cvm::real a1x, const cvm::real a1y, const cvm::real a1z, const cvm::real a2x, const cvm::real a2y, const cvm::real a2z, cvm::real &g1x, cvm::real &g1y, cvm::real &g1z, cvm::real &g2x, cvm::real &g2y, cvm::real &g2z, bool **pairlist_elem, cvm::real tolerance)
Calculate a coordination number through the function (1-x**n)/(1-x**m), where x = |A1-A2|/r0.
Definition: colvarcomp_coordnums.cpp:18
int pairlist_freq
Frequency of update of the pair list.
Definition: colvarcomp.h:781
cvm::real r0
"Cutoff" for isotropic calculation (default)
Definition: colvarcomp.h:764
bool b_anisotropic
Whether r/r0 or \vec{r}*\vec{1/r0_vec} should be used.
Definition: colvarcomp.h:768
virtual int init(std::string const &conf)
Definition: colvarcomp_coordnums.cpp:122
bool * pairlist
Pair list.
Definition: colvarcomp.h:784
void main_loop(bool **pairlist_elem)
Workhorse function.
Definition: colvarcomp_coordnums.cpp:215
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:760
cvm::rvector r0_vec
"Cutoff vector" for anisotropic calculation
Definition: colvarcomp.h:766
custom expression of colvars
Definition: colvarcomp.h:1366
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_combination.cpp:303
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:343
virtual int init(std::string const &conf)
Definition: colvarcomp_combination.cpp:172
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_combination.cpp:272
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:480
virtual int init_total_force_params(std::string const &conf)
Parse options pertaining to total force calculation.
Definition: colvarcomp.cpp:140
virtual void wrap(colvarvalue &x_unwrapped) const
Wrap value (for periodic/symmetric cvcs)
Definition: colvarcomp.cpp:867
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:50
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:525
colvarvalue jd
Calculated Jacobian derivative (divergence of the inverse gradients): serves to calculate the phase s...
Definition: colvarcomp.h:282
std::vector< std::string > function_types
Record the type of this class as well as those it is derived from.
Definition: colvarcomp.h:266
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:861
std::string function_type() const
String identifier for the type of collective variable.
Definition: colvarcomp.cpp:41
virtual int init(std::string const &conf)
Definition: colvarcomp.cpp:63
virtual void debug_gradients()
Calculate finite-difference gradients alongside the analytical ones, for each Cartesian component.
Definition: colvarcomp.cpp:562
virtual ~cvc()
Destructor.
Definition: colvarcomp.cpp:356
colvarvalue const & Jacobian_derivative() const
Return the previously calculated divergence of the inverse atomic gradients.
Definition: colvarcomp.h:319
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp.h:142
cvm::real width
CVC-specific default colvar width (default: not provided)
Definition: colvarcomp.h:303
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:850
virtual colvarvalue const * get_param_grad(std::string const &param_name)
Pointer to the gradient of parameter param_name.
Definition: colvarcomp.cpp:414
int setup()
After construction, set data related to dependency handling.
Definition: colvarcomp.cpp:349
virtual int set_param(std::string const &param_name, void const *new_value)
Set the named parameter to the given value.
Definition: colvarcomp.cpp:422
colvarvalue const & value() const
Return the previously calculated value.
Definition: colvarcomp.h:307
static std::vector< feature * > cvc_features
Implementation of the feature list for colvar.
Definition: colvarcomp.h:263
virtual int init_dependencies()
Initialize dependency tree.
Definition: colvarcomp.cpp:234
colvarvalue ft
Calculated total force (Note: this is calculated from the total atomic forces read from the program,...
Definition: colvarcomp.h:278
int update_description()
Update the description string based on name and type.
Definition: colvarcomp.cpp:29
std::string name
The name of the object (helps to identify this cvc instance when debugging)
Definition: colvarcomp.h:76
bool b_try_scalable
Whether or not this CVC will be computed in parallel whenever possible.
Definition: colvarcomp.h:233
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.
void set_value(colvarvalue const &new_value, bool now=false)
Definition: colvarcomp.h:237
virtual void read_data()
Obtain data needed for the calculation for the backend.
Definition: colvarcomp.cpp:448
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Definition: colvarcomp.cpp:839
colvarvalue x
Cached value.
Definition: colvarcomp.h:269
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp.cpp:533
void calc_fit_gradients()
Calculate the atomic fit gradients.
Definition: colvarcomp.cpp:541
void init_as_periodic_angle()
Set data types for a periodic angle (-180° to 180°)
Definition: colvarcomp.cpp:383
virtual std::vector< std::vector< int > > get_atom_lists()
Get vector of vectors of atom IDs for all atom groups.
Definition: colvarcomp.cpp:462
cvc()
Constructor.
Definition: colvarcomp.cpp:22
void register_atom_group(cvm::atom_group *ag)
Store a pointer to new atom group, and list as child for dependencies.
Definition: colvarcomp.cpp:406
void init_as_angle()
Set data types for a bounded angle (0° to 180°)
Definition: colvarcomp.cpp:376
void init_as_distance()
Set data types for a scalar distance (convenience function)
Definition: colvarcomp.cpp:366
colvarvalue const & total_force() const
Return the previously calculated total force.
Definition: colvarcomp.h:313
colvarvalue x_old
Value at the previous step.
Definition: colvarcomp.h:272
colvarvalue upper_boundary
Location of the upper boundary (not defined by user choice)
Definition: colvarcomp.h:300
colvarvalue lower_boundary
Location of the lower boundary (not defined by user choice)
Definition: colvarcomp.h:297
void init_scalar_boundaries(cvm::real lb, cvm::real ub)
Set two scalar boundaries (convenience function)
Definition: colvarcomp.cpp:393
std::vector< cvm::atom_group * > atom_groups
Pointers to all atom groups, to let colvars collect info e.g. atomic gradients.
Definition: colvarcomp.h:221
std::string config_key
Keyword used in the input to denote this CVC.
Definition: colvarcomp.h:82
virtual const std::vector< feature * > & features() const
Implementation of the feature list accessor for colvar.
Definition: colvarcomp.h:114
cvm::atom_group * parse_group(std::string const &conf, char const *group_key, bool optional=false)
Parse a group definition.
Definition: colvarcomp.cpp:169
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:551
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:979
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:559
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_protein.cpp:539
virtual int init(std::string const &conf)
Definition: colvarcomp_protein.cpp:350
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_protein.cpp:551
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:582
Colvar component: dihedral between the centers of mass of four groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:717
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:727
virtual int init(std::string const &conf)
Definition: colvarcomp_angles.cpp:223
cvm::rvector r12
Inter site vectors.
Definition: colvarcomp.h:729
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:721
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:725
bool b_1site_force
Compute total force on first site only to avoid unwanted coupling to other colvars (see e....
Definition: colvarcomp.h:733
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:723
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:264
Colvar component: angle between the dipole of a molecule and an axis formed by two groups of atoms(co...
Definition: colvarcomp.h:682
bool b_1site_force
Definition: colvarcomp.h:701
cvm::rvector r21
Inter site vectors.
Definition: colvarcomp.h:692
cvm::real r21l
Inter site vector norms.
Definition: colvarcomp.h:694
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:151
cvm::rvector dxdr1
Derivatives wrt group centers of mass.
Definition: colvarcomp.h:696
cvm::atom_group * group1
Atom group.
Definition: colvarcomp.h:686
virtual int init(std::string const &conf)
Definition: colvarcomp_angles.cpp:138
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:690
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:688
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:176
Colvar component: dipole magnitude of a molecule.
Definition: colvarcomp.h:539
cvm::atom_group * atoms
Dipole atom group.
Definition: colvarcomp.h:542
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:646
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:655
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:637
Colvar component: distance unit vector (direction) between centers of mass of two groups (colvarvalue...
Definition: colvarcomp.h:379
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:394
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:373
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:363
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:406
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:388
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:351
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:400
Colvar component: average distance between two groups of atoms, weighted as the sixth power,...
Definition: colvarcomp.h:490
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:495
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:417
int exponent
Components of the distance vector orthogonal to the axis.
Definition: colvarcomp.h:497
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:493
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:449
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:507
Colvar component: N1xN2 vector of pairwise distances (colvarvalue::type_vector type,...
Definition: colvarcomp.h:512
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:614
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:626
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:517
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:620
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:521
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:533
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:573
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:608
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:515
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:567
Definition: colvarcomp.h:356
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:141
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:132
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:123
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:106
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:113
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:147
Colvar component: projection of the distance vector on a plane (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:434
cvm::rvector dist_v_ortho
Components of the distance vector orthogonal to the axis.
Definition: colvarcomp.h:437
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:293
cvm::rvector v12
Vector distances.
Definition: colvarcomp.h:439
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:269
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:322
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:335
Colvar component: projection of the distance vector along an axis(colvarvalue::type_scalar type,...
Definition: colvarcomp.h:402
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:222
cvm::rvector dist_v
Vector distance, cached to be recycled.
Definition: colvarcomp.h:415
cvm::atom_group * main
Main atom group.
Definition: colvarcomp.h:405
bool fixed_axis
Flag: using a fixed axis vector?
Definition: colvarcomp.h:417
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:241
cvm::real axis_norm
Norm of the axis.
Definition: colvarcomp.h:413
cvm::atom_group * ref1
Reference atom group.
Definition: colvarcomp.h:407
cvm::atom_group * ref2
Optional, second ref atom group.
Definition: colvarcomp.h:409
cvm::rvector axis
Vector on which the distance vector is projected.
Definition: colvarcomp.h:411
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:194
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:161
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:254
Colvar component: distance between the centers of mass of two groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:331
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:336
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:48
cvm::rvector dist_v
Vector distance, cached to be recycled.
Definition: colvarcomp.h:338
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:31
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:334
Colvar component: projection of 3N coordinates onto an eigenvector(colvarvalue::type_scalar type,...
Definition: colvarcomp.h:610
std::vector< cvm::atom_pos > ref_pos
Reference coordinates.
Definition: colvarcomp.h:617
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:1103
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1332
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:1299
std::vector< cvm::rvector > eigenvec
Eigenvector (of a normal or essential mode): will always have zero center.
Definition: colvarcomp.h:620
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:614
cvm::real eigenvec_invnorm2
Inverse square norm of the eigenvector.
Definition: colvarcomp.h:623
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1310
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1320
Definition: colvarcomp.h:1127
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:396
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:380
Definition: colvarcomp.h:1138
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:443
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:427
Definition: colvarcomp.h:1149
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:488
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:474
Colvar component: coordination number between two groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:877
cvm::rvector r0_vec
"Cutoff vector" for anisotropic calculation
Definition: colvarcomp.h:882
bool b_anisotropic
Wheter dist/r0 or \vec{dist}*\vec{1/r0_vec} should ne be used.
Definition: colvarcomp.h:885
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:887
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:889
virtual int init(std::string const &conf)
Definition: colvarcomp_coordnums.cpp:638
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:682
cvm::real r0
"Cutoff" for isotropic calculation (default)
Definition: colvarcomp.h:880
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:716
Colvar component: alternative path collective variable using geometry, variable s Allow any combinati...
Definition: colvarcomp.h:1431
virtual int init(std::string const &conf)
Definition: colvarcomp_gpath.cpp:701
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_gpath.cpp:770
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_gpath.cpp:808
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_gpath.cpp:765
Colvar component: alternative path collective variable using geometry, variable s For more informatio...
Definition: colvarcomp.h:1292
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:558
cvm::atom_group * atoms
Atoms involved.
Definition: colvarcomp.h:561
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:697
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:718
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:708
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:732
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:678
Definition: colvarcomp.h:1448
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_gpath.cpp:954
virtual int init(std::string const &conf)
Definition: colvarcomp_gpath.cpp:838
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_gpath.cpp:915
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_gpath.cpp:920
Colvar component: alternative path collective variable using geometry, variable z This should be merg...
Definition: colvarcomp.h:1314
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: hydrogen bond, defined as the product of a colvar::coordnum and 1/2*(1-cos((180-ang...
Definition: colvarcomp.h:905
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:912
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:414
cvm::real r0
"Cutoff" distance between acceptor and donor
Definition: colvarcomp.h:908
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:910
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:452
virtual int init(std::string const &conf)
Definition: colvarcomp_coordnums.cpp:353
Colvar component: moment of inertia of an atom group around a user-defined axis (colvarvalue::type_sc...
Definition: colvarcomp.h:592
cvm::rvector axis
Vector on which the inertia tensor is projected.
Definition: colvarcomp.h:595
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:787
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:800
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:771
Colvar component: moment of inertia of an atom group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:578
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:745
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:755
Current only linear combination of sub-CVCs is available.
Definition: colvarcomp.h:1334
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_combination.cpp:148
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:124
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_combination.cpp:92
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_combination.cpp:162
std::vector< colvar::cvc * > cv
Sub-colvar components.
Definition: colvarcomp.h:1337
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_combination.cpp:106
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_combination.cpp:142
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to allow arbitrary dimensions.
Definition: colvarcomp_combination.cpp:155
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:1339
Definition: colvarcomp.h:1563
std::string volmap_name
String identifier of the map object (as used by the simulation engine)
Definition: colvarcomp.h:1576
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_volmaps.cpp:87
int volmap_index
Index of the map objet in the proxy arrays.
Definition: colvarcomp.h:1582
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:117
cvm::atom_group * atoms
Group of atoms selected internally (optional)
Definition: colvarcomp.h:1585
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_volmaps.cpp:111
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:1588
int volmap_id
Numeric identifier of the map object (as used by the simulation engine)
Definition: colvarcomp.h:1579
Definition: colvarcomp.h:1532
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:1537
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:1535
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:1055
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:1080
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:262
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:271
Colvar component: orientation in space of an atom group, with respect to a set of reference coordinat...
Definition: colvarcomp.h:1005
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:1021
cvm::ag_vector_real_t shifted_pos_soa
Shifted atomic positions.
Definition: colvarcomp.h:1017
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:1013
cvm::atom_pos atoms_cog
Center of geometry of the group.
Definition: colvarcomp.h:1010
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:1025
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:41
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1008
Colvar component: polar coordinate phi of a group (colvarvalue::type_scalar type, range [-180:180])
Definition: colvarcomp.h:454
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:472
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
Colvar component: root mean square deviation (RMSD) of a group with respect to a set of reference coo...
Definition: colvarcomp.h:1164
int init_permutation(std::string const &conf)
Permutation RMSD input parsing.
Definition: colvarcomp_distances.cpp:920
size_t best_perm_index
Index of the permutation yielding the smallest RMSD (0 for identity)
Definition: colvarcomp.h:1179
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:998
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1031
std::vector< cvm::atom_pos > ref_pos
Definition: colvarcomp.h:1173
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1169
size_t n_permutations
Number of permutations of symmetry-related atoms.
Definition: colvarcomp.h:1176
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1017
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:824
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:967
Colvar component: self-coordination number within a group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:844
cvm::atom_group * group1
Selected atoms.
Definition: colvarcomp.h:847
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:618
virtual int init(std::string const &conf)
Definition: colvarcomp_coordnums.cpp:490
int compute_selfcoordnum()
Main workhorse function.
Definition: colvarcomp_coordnums.cpp:545
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:853
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:607
cvm::real r0
"Cutoff" for isotropic calculation (default)
Definition: colvarcomp.h:849
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:851
Colvar component: angle of rotation around a predefined axis (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:1115
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:344
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:356
Colvar component: projection of the orientation vector onto a predefined axis (colvarvalue::type_scal...
Definition: colvarcomp.h:1095
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:320
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:295
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:309
std::vector< cvm::rvector > atomic_gradients
Array of atomic gradients collected from all cvcs with appropriate components, rotations etc....
Definition: colvar.h:719
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:714
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:77
1-dimensional vector of real numbers with four components and a quaternion algebra
Definition: colvartypes.h:978
A rotation between two sets of coordinates (for the moment a wrapper for colvarmodule::quaternion)
Definition: colvartypes.h:1366
vector of real numbers with three components
Definition: colvartypes.h:726
double real
Defining an abstract real number allows to switch precision.
Definition: colvarmodule.h:98
static colvarproxy * proxy
Pointer to the proxy object, used to retrieve atomic data from the hosting program; it is static in o...
Definition: colvarmodule.h:919
Base class containing parsing functions; all objects which need to parse input inherit from this.
Definition: colvarparse.h:27
virtual int send_alch_lambda()
Send cached value of alchemical lambda parameter to back-end (if available)
Definition: colvarproxy_system.cpp:184
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:177
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:107