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;
224
226 virtual colvarvalue const *get_param_grad(std::string const &param_name);
227
229 virtual int set_param(std::string const &param_name, void const *new_value);
230
232 bool b_try_scalable = true;
233
236 inline void set_value(colvarvalue const &new_value, bool now=false) {
237 x = new_value;
238 // Cache value to be communicated to back-end between time steps
240 if (now) {
241 // If requested (e.g. upon restarting), sync to back-end
243 }
244 }
245
246protected:
247
249 int set_function_type(std::string const &type);
250
252 int update_description();
253
255 cvm::atom_group *parse_group(std::string const &conf, char const *group_key,
256 bool optional = false);
257
259 virtual int init_total_force_params(std::string const &conf);
260
262 static std::vector<feature *> cvc_features;
263
265 std::vector<std::string> function_types;
266
269
272
278
282
284 void init_as_distance();
285
287 void init_as_angle();
288
291
294
297
300
303};
304
305
306inline colvarvalue const & colvar::cvc::value() const
307{
308 return x;
309}
310
311
313{
314 return ft;
315}
316
317
319{
320 return jd;
321}
322
323
324
327
329 : public colvar::cvc
330{
331protected:
338public:
339 distance();
340 virtual ~distance() {}
341 virtual int init(std::string const &conf);
342 virtual void calc_value();
343 virtual void calc_gradients();
344 virtual void calc_force_invgrads();
345 virtual void calc_Jacobian_derivative();
346};
347
348
349
350// \brief Colvar component: distance vector between centers of mass
351// of two groups (\link colvarvalue::type_3vector \endlink type,
352// range (-*:*)x(-*:*)x(-*:*))
354 : public colvar::distance
355{
356public:
357 distance_vec();
358 virtual ~distance_vec() {}
359 virtual void calc_value();
360 virtual void calc_gradients();
361 virtual void apply_force(colvarvalue const &force);
363 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
365 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
367 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
369 virtual void wrap(colvarvalue &x_unwrapped) const;
370};
371
372
377 : public colvar::distance
378{
379public:
380 distance_dir();
381 virtual ~distance_dir() {}
382 virtual void calc_value();
383 virtual void calc_gradients();
384 virtual void apply_force(colvarvalue const &force);
386 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
388 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
390 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
392 virtual void wrap(colvarvalue &x_unwrapped) const;
393};
394
395
396
400 : public colvar::cvc
401{
402protected:
416 bool fixed_axis = true;
417public:
418 distance_z();
419 virtual ~distance_z() {}
420 virtual int init(std::string const &conf);
421 virtual void calc_value();
422 virtual void calc_gradients();
423 virtual void calc_force_invgrads();
424 virtual void calc_Jacobian_derivative();
425};
426
427
428
432 : public colvar::distance_z
433{
434protected:
439public:
440 distance_xy();
441 virtual ~distance_xy() {}
442 virtual void calc_value();
443 virtual void calc_gradients();
444 virtual void calc_force_invgrads();
445 virtual void calc_Jacobian_derivative();
446};
447
448
452 : public colvar::cvc
453{
454protected:
455 cvm::atom_group *atoms = nullptr;
456 cvm::real r, theta, phi;
457
458public:
459 polar_phi();
460 virtual ~polar_phi() {}
461 virtual int init(std::string const &conf);
462 virtual void calc_value();
463 virtual void calc_gradients();
464};
465
466
470 : public colvar::cvc
471{
472public:
473 polar_theta();
474 virtual ~polar_theta() {}
475 virtual int init(std::string const &conf);
476protected:
477 cvm::atom_group *atoms = nullptr;
478 cvm::real r, theta, phi;
479public:
480 virtual void calc_value();
481 virtual void calc_gradients();
482};
483
484
488 : public colvar::cvc
489{
490protected:
496 int exponent = 6;
497public:
498 distance_inv();
499 virtual ~distance_inv() {}
500 virtual int init(std::string const &conf);
501 virtual void calc_value();
502 virtual void calc_gradients();
503};
504
505
506
510 : public colvar::cvc
511{
512protected:
517public:
519 virtual ~distance_pairs() {}
520 virtual int init(std::string const &conf);
521 virtual void calc_value();
522 virtual void calc_gradients();
523 virtual void apply_force(colvarvalue const &force);
525 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
527 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
529 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
531 virtual void wrap(colvarvalue &x_unwrapped) const;
532};
533
534
537 : public colvar::cvc
538{
539protected:
542 cvm::atom_pos dipoleV;
543public:
545 virtual ~dipole_magnitude() {}
546 virtual int init(std::string const &conf);
547 virtual void calc_value();
548 virtual void calc_gradients();
549};
550
551
552
556 : public colvar::cvc
557{
558protected:
561public:
562 gyration();
563 virtual ~gyration() {}
564 virtual int init(std::string const &conf);
565 virtual void calc_value();
566 virtual void calc_gradients();
567 virtual void calc_force_invgrads();
568 virtual void calc_Jacobian_derivative();
569};
570
571
572
576 : public colvar::gyration
577{
578public:
579 inertia();
580 virtual ~inertia() {}
581 virtual void calc_value();
582 virtual void calc_gradients();
583};
584
585
586
590 : public colvar::inertia
591{
592protected:
595public:
596 inertia_z();
597 virtual ~inertia_z() {}
598 virtual int init(std::string const &conf);
599 virtual void calc_value();
600 virtual void calc_gradients();
601};
602
603
604
608 : public colvar::cvc
609{
610protected:
611
614
616 std::vector<cvm::atom_pos> ref_pos;
617
619 std::vector<cvm::rvector> eigenvec;
620
623
624public:
625
626 eigenvector();
627 virtual ~eigenvector() {}
628 virtual int init(std::string const &conf);
629 virtual void calc_value();
630 virtual void calc_gradients();
631 virtual void calc_force_invgrads();
632 virtual void calc_Jacobian_derivative();
633};
634
635
636
640 : public colvar::cvc
641{
642protected:
655
659 bool b_1site_force = false;
660public:
661
662 angle();
667 virtual ~angle() {}
668 virtual int init(std::string const &conf);
669 virtual void calc_value();
670 virtual void calc_gradients();
671 virtual void calc_force_invgrads();
672 virtual void calc_Jacobian_derivative();
673};
674
675
676
680 : public colvar::cvc
681{
682protected:
683
696
700 bool b_1site_force = false;
701public:
702
703 dipole_angle();
704 virtual ~dipole_angle() {}
705 virtual int init(std::string const &conf);
706 virtual void calc_value();
707 virtual void calc_gradients();
708};
709
710
711
715 : public colvar::cvc
716{
717protected:
718
728 cvm::rvector r12, r23, r34;
729
732 bool b_1site_force = false;
733
734public:
735
741 dihedral();
742 virtual ~dihedral() {}
743 virtual int init(std::string const &conf);
744 virtual void calc_value();
745 virtual void calc_gradients();
746 virtual void calc_force_invgrads();
747 virtual void calc_Jacobian_derivative();
748};
749
750
751
755 : public colvar::cvc
756{
757protected:
767 bool b_anisotropic = false;
769 int en = 6;
771 int ed = 12;
772
775
778
780 int pairlist_freq = 100;
781
783 bool *pairlist = nullptr;
784
785public:
786
787 coordnum();
788 virtual ~coordnum();
789 virtual int init(std::string const &conf);
790 virtual void calc_value();
791 virtual void calc_gradients();
792
793 enum {
794 ef_null = 0,
795 ef_gradients = 1,
796 ef_anisotropic = (1<<8),
797 ef_use_pairlist = (1<<9),
798 ef_rebuild_pairlist = (1<<10)
799 };
800
808 template<int flags>
810 cvm::rvector const &inv_r0_vec,
811 cvm::rvector const &inv_r0sq_vec,
812 int en,
813 int ed,
814 const cvm::real a1x,
815 const cvm::real a1y,
816 const cvm::real a1z,
817 const cvm::real a2x,
818 const cvm::real a2y,
819 const cvm::real a2z,
820 cvm::real& g1x,
821 cvm::real& g1y,
822 cvm::real& g1z,
823 cvm::real& g2x,
824 cvm::real& g2y,
825 cvm::real& g2z,
826 bool **pairlist_elem,
828
830 template<int flags> int compute_coordnum();
831
833 template<int flags> void main_loop(bool **pairlist_elem);
834
835};
836
837
838
842 : public colvar::cvc
843{
844protected:
850 int en = 6;
852 int ed = 12;
853 cvm::real tolerance = 0.0;
854 int pairlist_freq = 100;
855
856 bool *pairlist = nullptr;
857
858public:
859
860 selfcoordnum();
862 virtual int init(std::string const &conf);
863 virtual void calc_value();
864 virtual void calc_gradients();
865
867 template<int flags> int compute_selfcoordnum();
868};
869
870
871
875 : public colvar::distance
876{
877protected:
884 bool b_anisotropic = false;
886 int en = 6;
888 int ed = 12;
889public:
891 virtual ~groupcoordnum() {}
892 virtual int init(std::string const &conf);
893 virtual void calc_value();
894 virtual void calc_gradients();
895};
896
897
898
903 : public colvar::cvc
904{
905protected:
909 int en = 6;
911 int ed = 8;
912public:
914 h_bond(cvm::atom_group::simple_atom const &acceptor,
915 cvm::atom_group::simple_atom const &donor,
916 cvm::real r0, int en, int ed);
917 h_bond();
918 virtual ~h_bond() {}
919 virtual int init(std::string const &conf);
920 virtual void calc_value();
921 virtual void calc_gradients();
922};
923
924
930 : public colvar::cvc
931{
932protected:
933
936
939
941 std::vector<angle *> theta;
942
944 std::vector<h_bond *> hb;
945
948
951
953 int en = 6;
954
956 int ed = 8;
957
958public:
959
960 alpha_angles();
961 virtual ~alpha_angles();
962 virtual int init(std::string const &conf);
963 void calc_value();
964 void calc_gradients();
966 void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
967 void apply_force(colvarvalue const &force);
968};
969
970
971
977 : public colvar::cvc
978{
979protected:
980
981 std::vector<dihedral *> theta;
982 std::vector<cvm::real> coeffs;
983
984public:
985
986 dihedPC();
987 virtual ~dihedPC();
988 virtual int init(std::string const &conf);
989 virtual void calc_value();
990 virtual void calc_gradients();
992 virtual void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
993 virtual void apply_force(colvarvalue const &force);
994};
995
996
997
1003 : public colvar::cvc
1004{
1005protected:
1010
1012 std::vector<cvm::real> ref_pos_soa;
1013 size_t num_ref_pos;
1014
1016 std::vector<cvm::real> shifted_pos_soa;
1017 size_t num_shifted_pos;
1018
1021
1025
1028 std::unique_ptr<rotation_derivative_impl_> rot_deriv_impl;
1029
1030public:
1031
1032 orientation();
1033 virtual ~orientation();
1034 virtual int init(std::string const &conf);
1035 virtual void calc_value();
1036 virtual void calc_gradients();
1037 virtual void apply_force(colvarvalue const &force);
1039 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
1041 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1043 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1045 virtual void wrap(colvarvalue &x_unwrapped) const;
1046};
1047
1048
1053 : public colvar::orientation
1054{
1055public:
1056
1058 virtual ~orientation_angle() {}
1059 virtual void calc_value();
1060 virtual void calc_gradients();
1061 virtual void apply_force(colvarvalue const &force);
1063 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
1065 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1067 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1069 virtual void wrap(colvarvalue &x_unwrapped) const;
1070};
1071
1072
1073
1079{
1080public:
1081
1083 virtual ~orientation_proj() {}
1084 virtual void calc_value();
1085 virtual void calc_gradients();
1086};
1087
1088
1089
1094{
1095protected:
1096
1097 cvm::rvector axis;
1098
1099public:
1100
1101 tilt();
1102 virtual ~tilt() {}
1103 virtual int init(std::string const &conf);
1104 virtual void calc_value();
1105 virtual void calc_gradients();
1106};
1107
1108
1109
1113 : public colvar::tilt
1114{
1115public:
1116
1117 spin_angle();
1118 virtual ~spin_angle() {}
1119 virtual void calc_value();
1120 virtual void calc_gradients();
1121};
1122
1123
1126{
1127public:
1128 euler_phi();
1129 virtual ~euler_phi() {}
1130 virtual void calc_value();
1131 virtual void calc_gradients();
1132};
1133
1134
1137{
1138public:
1139 euler_psi();
1140 virtual ~euler_psi() {}
1141 virtual void calc_value();
1142 virtual void calc_gradients();
1143};
1144
1145
1148{
1149public:
1150 euler_theta();
1151 virtual ~euler_theta() {}
1152 virtual void calc_value();
1153 virtual void calc_gradients();
1154};
1155
1156
1162 : public colvar::cvc
1163{
1164protected:
1165
1166 // TODO: transfrom ref_pos to soa
1169
1172 std::vector<cvm::atom_pos> ref_pos;
1173
1175 size_t n_permutations = 1;
1176
1179
1181 int init_permutation(std::string const &conf);
1182
1183public:
1184 rmsd();
1185 virtual ~rmsd() {}
1186 virtual int init(std::string const &conf);
1187 virtual void calc_value();
1188 virtual void calc_gradients();
1189 virtual void calc_force_invgrads();
1190 virtual void calc_Jacobian_derivative();
1191};
1192
1193
1194
1195// \brief Colvar component: flat vector of Cartesian coordinates
1196// Mostly useful to compute scripted colvar values
1198 : public colvar::cvc
1199{
1200protected:
1204 std::vector<size_t> axes;
1205public:
1206 cartesian();
1207 virtual ~cartesian() {}
1208 virtual int init(std::string const &conf);
1209 virtual void calc_value();
1210 virtual void calc_gradients();
1211 virtual void apply_force(colvarvalue const &force);
1213 virtual cvm::real dist2(colvarvalue const &x1,
1214 colvarvalue const &x2) const;
1216 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1217 colvarvalue const &x2) const;
1219 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1220 colvarvalue const &x2) const;
1222 virtual void wrap(colvarvalue &x_unwrapped) const;
1223};
1224
1225
1226// \brief Colvar component: alch_lambda
1227// To communicate value with back-end in lambda-dynamics
1229 : public colvar::cvc
1230{
1231protected:
1232 // No atom groups needed
1233public:
1234 alch_lambda();
1235 int init_alchemy(int time_step_factor);
1236 virtual ~alch_lambda() {}
1237 virtual void calc_value();
1238 virtual void calc_force_invgrads();
1239 virtual void calc_Jacobian_derivative();
1240 virtual void apply_force(colvarvalue const &force);
1241};
1242
1243
1244// \brief Colvar component: alch_Flambda
1245// To communicate force on lambda with back-end in lambda-dynamics
1247 : public colvar::cvc
1248{
1249protected:
1250 // No atom groups needed
1251public:
1252 alch_Flambda();
1253 virtual ~alch_Flambda() {}
1254 virtual void calc_value();
1255 virtual void calc_gradients();
1256 virtual void apply_force(colvarvalue const &force);
1257};
1258
1259
1261 : public colvar::cvc
1262{
1263protected:
1264 virtual void computeDistanceBetweenReferenceFrames(std::vector<cvm::real>& result);
1265 virtual void computeDistanceToReferenceFrames(std::vector<cvm::real>& result);
1271 std::vector<std::vector<cvm::atom_pos>> reference_frames;
1272 std::vector<std::vector<cvm::atom_pos>> reference_fitting_frames;
1274 std::vector<cvm::atom_group*> comp_atoms;
1277public:
1279 virtual ~CartesianBasedPath();
1280 virtual int init(std::string const &conf);
1281 virtual void calc_value() = 0;
1283 virtual void apply_force(colvarvalue const &force);
1284};
1285
1290 : public colvar::CartesianBasedPath, public GeometricPathCV::GeometricPathBase<cvm::atom_pos, cvm::real, GeometricPathCV::path_sz::S>
1291{
1292private:
1293 // Optimal rotation for compute v3
1294 cvm::rotation rot_v3;
1295protected:
1296 virtual void prepareVectors();
1297 virtual void updateDistanceToReferenceFrames();
1298public:
1299 gspath();
1300 virtual ~gspath() {}
1301 virtual int init(std::string const &conf);
1302 virtual void calc_value();
1303 virtual void calc_gradients();
1304 virtual void apply_force(colvarvalue const &force);
1305};
1306
1307
1308
1312 : public colvar::CartesianBasedPath, public GeometricPathCV::GeometricPathBase<cvm::atom_pos, cvm::real, GeometricPathCV::path_sz::Z>
1313{
1314private:
1315 // Optimal rotation for compute v3, v4
1316 cvm::rotation rot_v3;
1317 cvm::rotation rot_v4;
1318protected:
1319 virtual void prepareVectors();
1320 virtual void updateDistanceToReferenceFrames();
1321public:
1322 gzpath();
1323 virtual ~gzpath() {}
1324 virtual int init(std::string const &conf);
1325 virtual void calc_value();
1326 virtual void calc_gradients();
1327 virtual void apply_force(colvarvalue const &force);
1328};
1329
1332 : public colvar::cvc
1333{
1334protected:
1336 std::vector<colvar::cvc*> cv;
1339protected:
1340 cvm::real getPolynomialFactorOfCVGradient(size_t i_cv) const;
1341public:
1343 virtual ~linearCombination();
1344 virtual int init(std::string const &conf);
1345 virtual void calc_value();
1346 virtual void calc_gradients();
1347 virtual void apply_force(colvarvalue const &force);
1349 virtual cvm::real dist2(colvarvalue const &x1,
1350 colvarvalue const &x2) const;
1352 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1353 colvarvalue const &x2) const;
1355 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1356 colvarvalue const &x2) const;
1358 virtual void wrap(colvarvalue &x_unwrapped) const;
1359};
1360
1361
1365{
1366protected:
1367 bool use_custom_function = false;
1368#ifdef LEPTON
1370 std::vector<Lepton::CompiledExpression *> value_evaluators;
1372 std::vector<Lepton::CompiledExpression *> gradient_evaluators;
1374 std::vector<double *> value_eval_var_refs;
1375 std::vector<double *> grad_eval_var_refs;
1377 double dev_null = 0.0;
1378#endif
1379public:
1380 customColvar();
1381 virtual ~customColvar();
1382 virtual int init(std::string const &conf);
1383 virtual void calc_value();
1384 virtual void calc_gradients();
1385 virtual void apply_force(colvarvalue const &force);
1386};
1387
1388
1390 : public colvar::cvc
1391{
1392protected:
1394 std::vector<colvar::cvc*> cv;
1396 std::vector<std::vector<colvarvalue>> ref_cv;
1401protected:
1402 virtual void computeDistanceToReferenceFrames(std::vector<cvm::real>& result);
1404 virtual void computeDistanceBetweenReferenceFrames(std::vector<cvm::real>& result) const;
1405 cvm::real getPolynomialFactorOfCVGradient(size_t i_cv) const;
1406public:
1407 CVBasedPath();
1408 virtual ~CVBasedPath();
1409 virtual int init(std::string const &conf);
1410 virtual void calc_value() = 0;
1412 virtual void apply_force(colvarvalue const &force);
1414 virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const;
1416 virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1418 virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const;
1420 virtual void wrap(colvarvalue &x_unwrapped) const;
1421};
1422
1423
1429 : public colvar::CVBasedPath, public GeometricPathCV::GeometricPathBase<colvarvalue, cvm::real, GeometricPathCV::path_sz::S>
1430{
1431protected:
1432 virtual void updateDistanceToReferenceFrames();
1433 virtual void prepareVectors();
1434public:
1435 gspathCV();
1436 virtual ~gspathCV();
1437 virtual int init(std::string const &conf);
1438 virtual void calc_value();
1439 virtual void calc_gradients();
1440 virtual void apply_force(colvarvalue const &force);
1441};
1442
1443
1444
1446 : public colvar::CVBasedPath, public GeometricPathCV::GeometricPathBase<colvarvalue, cvm::real, GeometricPathCV::path_sz::Z>
1447{
1448protected:
1449 virtual void updateDistanceToReferenceFrames();
1450 virtual void prepareVectors();
1451public:
1452 gzpathCV();
1453 virtual ~gzpathCV();
1454 virtual int init(std::string const &conf);
1455 virtual void calc_value();
1456 virtual void calc_gradients();
1457 virtual void apply_force(colvarvalue const &force);
1458};
1459
1460struct ArithmeticPathImpl;
1461
1464{
1465private:
1466 std::unique_ptr<ArithmeticPathImpl> impl_;
1467 friend struct ArithmeticPathImpl;
1468public:
1469 aspath();
1470 virtual ~aspath();
1471 virtual int init(std::string const &conf);
1472 virtual void calc_value();
1473 virtual void calc_gradients();
1474 virtual void apply_force(colvarvalue const &force);
1475};
1476
1479{
1480private:
1481 std::unique_ptr<ArithmeticPathImpl> impl_;
1482 friend struct ArithmeticPathImpl;
1483public:
1484 azpath();
1485 virtual ~azpath();
1486 virtual int init(std::string const &conf);
1487 virtual void calc_value();
1488 virtual void calc_gradients();
1489 virtual void apply_force(colvarvalue const &force);
1490};
1491
1493 : public colvar::CVBasedPath
1494{
1495private:
1496 std::unique_ptr<ArithmeticPathImpl> impl_;
1497 friend struct ArithmeticPathImpl;
1498public:
1499 aspathCV();
1500 virtual ~aspathCV();
1501 virtual int init(std::string const &conf);
1502 virtual void calc_value();
1503 virtual void calc_gradients();
1504 virtual void apply_force(colvarvalue const &force);
1505};
1506
1507
1509 : public colvar::CVBasedPath
1510{
1511private:
1512 std::unique_ptr<ArithmeticPathImpl> impl_;
1513 friend struct ArithmeticPathImpl;
1514public:
1515 azpathCV();
1516 virtual ~azpathCV();
1517 virtual int init(std::string const &conf);
1518 virtual void calc_value();
1519 virtual void calc_gradients();
1520 virtual void apply_force(colvarvalue const &force);
1521};
1522
1523// forward declaration
1524namespace neuralnetworkCV {
1525 class neuralNetworkCompute;
1526}
1527
1528
1530 : public linearCombination
1531{
1532protected:
1534 std::unique_ptr<neuralnetworkCV::neuralNetworkCompute> nn;
1536 size_t m_output_index = 0;
1537public:
1538 neuralNetwork();
1539 virtual ~neuralNetwork();
1540 virtual int init(std::string const &conf);
1541 virtual void calc_value();
1542 virtual void calc_gradients();
1543 virtual void apply_force(colvarvalue const &force);
1545 virtual cvm::real dist2(colvarvalue const &x1,
1546 colvarvalue const &x2) const;
1548 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1549 colvarvalue const &x2) const;
1551 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1552 colvarvalue const &x2) const;
1554 virtual void wrap(colvarvalue &x_unwrapped) const;
1555};
1556
1557
1558// \brief Colvar component: total value of a scalar map
1559// (usually implemented as a grid by the simulation engine)
1561 : public colvar::cvc
1562{
1563public:
1564
1565 map_total();
1566 virtual ~map_total() {}
1567 virtual int init(std::string const &conf);
1568 virtual void calc_value();
1569 virtual void calc_gradients();
1570 virtual void apply_force(colvarvalue const &force);
1571
1572protected:
1573
1575 std::string volmap_name;
1576
1578 int volmap_id = -1;
1579
1582
1585
1587 std::vector<cvm::real> atom_weights;
1588};
1589
1590
1591
1592#endif
Definition: colvar_geometricpath.h:24
Definition: colvarcomp.h:1391
std::vector< colvar::cvc * > cv
Sub-colvar components.
Definition: colvarcomp.h:1394
size_t total_reference_frames
Total number of reference frames.
Definition: colvarcomp.h:1400
bool use_explicit_gradients
If all sub-cvs use explicit gradients then we also use it.
Definition: colvarcomp.h:1398
std::vector< std::vector< colvarvalue > > ref_cv
Reference colvar values from path.
Definition: colvarcomp.h:1396
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:1262
cvm::atom_group * atoms
Selected atoms.
Definition: colvarcomp.h:1267
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:1271
size_t total_reference_frames
Total number of reference frames.
Definition: colvarcomp.h:1276
bool has_user_defined_fitting
Fitting options.
Definition: colvarcomp.h:1269
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:1274
Definition: colvarcomp.h:1248
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:1230
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:931
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:938
int en
Integer exponent of the HB numerator.
Definition: colvarcomp.h:953
cvm::real theta_ref
Reference Calpha-Calpha angle (default: 88 degrees)
Definition: colvarcomp.h:935
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:947
int ed
Integer exponent of the HB denominator.
Definition: colvarcomp.h:956
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:950
std::vector< h_bond * > hb
List of hydrogen bonds.
Definition: colvarcomp.h:944
virtual int init(std::string const &conf)
Definition: colvarcomp_protein.cpp:28
std::vector< angle * > theta
List of Calpha-Calpha angles.
Definition: colvarcomp.h:941
Colvar component: angle between the centers of mass of three groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:641
bool b_1site_force
Definition: colvarcomp.h:659
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:648
cvm::rvector r21
Inter site vectors.
Definition: colvarcomp.h:650
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:646
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:654
cvm::real r21l
Inter site vector norms.
Definition: colvarcomp.h:652
cvm::atom_group * group1
Atom group.
Definition: colvarcomp.h:644
Definition: colvarcomp.h:1494
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:1464
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:1510
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_apath.cpp:402
virtual int init(std::string const &conf)
Definition: colvarcomp_apath.cpp:365
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_apath.cpp:387
virtual void apply_force(colvarvalue const &force)
Redefined to raise error because this is an abstract type.
Definition: colvarcomp_apath.cpp:428
Definition: colvarcomp.h:1479
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:1199
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1483
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1446
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1202
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1489
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:1403
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:1432
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1471
std::vector< size_t > axes
Which Cartesian coordinates to include.
Definition: colvarcomp.h:1204
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:1477
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:1454
Colvar component: coordination number between two groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:756
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:769
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:309
int compute_coordnum()
Workhorse function.
Definition: colvarcomp_coordnums.cpp:260
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:761
cvm::real tolerance
Tolerance for the pair list.
Definition: colvarcomp.h:777
bool b_group2_center_only
If true, group2 will be treated as a single atom.
Definition: colvarcomp.h:774
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:771
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:320
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:780
cvm::real r0
"Cutoff" for isotropic calculation (default)
Definition: colvarcomp.h:763
bool b_anisotropic
Whether r/r0 or \vec{r}*\vec{1/r0_vec} should be used.
Definition: colvarcomp.h:767
virtual int init(std::string const &conf)
Definition: colvarcomp_coordnums.cpp:110
bool * pairlist
Pair list.
Definition: colvarcomp.h:783
void main_loop(bool **pairlist_elem)
Workhorse function.
Definition: colvarcomp_coordnums.cpp:201
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:759
cvm::rvector r0_vec
"Cutoff vector" for anisotropic calculation
Definition: colvarcomp.h:765
custom expression of colvars
Definition: colvarcomp.h:1365
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:472
virtual int init_total_force_params(std::string const &conf)
Parse options pertaining to total force calculation.
Definition: colvarcomp.cpp:137
virtual void wrap(colvarvalue &x_unwrapped) const
Wrap value (for periodic/symmetric cvcs)
Definition: colvarcomp.cpp:735
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:47
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:517
colvarvalue jd
Calculated Jacobian derivative (divergence of the inverse gradients): serves to calculate the phase s...
Definition: colvarcomp.h:281
std::vector< std::string > function_types
Record the type of this class as well as those it is derived from.
Definition: colvarcomp.h:265
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:729
std::string function_type() const
String identifier for the type of collective variable.
Definition: colvarcomp.cpp:38
virtual int init(std::string const &conf)
Definition: colvarcomp.cpp:60
virtual void debug_gradients()
Calculate finite-difference gradients alongside the analytical ones, for each Cartesian component.
Definition: colvarcomp.cpp:555
virtual ~cvc()
Destructor.
Definition: colvarcomp.cpp:348
colvarvalue const & Jacobian_derivative() const
Return the previously calculated divergence of the inverse atomic gradients.
Definition: colvarcomp.h:318
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:302
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:718
virtual colvarvalue const * get_param_grad(std::string const &param_name)
Pointer to the gradient of parameter param_name.
Definition: colvarcomp.cpp:406
int setup()
After construction, set data related to dependency handling.
Definition: colvarcomp.cpp:341
virtual int set_param(std::string const &param_name, void const *new_value)
Set the named parameter to the given value.
Definition: colvarcomp.cpp:414
colvarvalue const & value() const
Return the previously calculated value.
Definition: colvarcomp.h:306
static std::vector< feature * > cvc_features
Implementation of the feature list for colvar.
Definition: colvarcomp.h:262
virtual int init_dependencies()
Initialize dependency tree.
Definition: colvarcomp.cpp:231
colvarvalue ft
Calculated total force (Note: this is calculated from the total atomic forces read from the program,...
Definition: colvarcomp.h:277
int update_description()
Update the description string based on name and type.
Definition: colvarcomp.cpp:26
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:232
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:236
virtual void read_data()
Obtain data needed for the calculation for the backend.
Definition: colvarcomp.cpp:440
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Definition: colvarcomp.cpp:707
colvarvalue x
Cached value.
Definition: colvarcomp.h:268
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp.cpp:525
void calc_fit_gradients()
Calculate the atomic fit gradients.
Definition: colvarcomp.cpp:533
void init_as_periodic_angle()
Set data types for a periodic angle (-180° to 180°)
Definition: colvarcomp.cpp:375
virtual std::vector< std::vector< int > > get_atom_lists()
Get vector of vectors of atom IDs for all atom groups.
Definition: colvarcomp.cpp:454
cvc()
Constructor.
Definition: colvarcomp.cpp:19
void register_atom_group(cvm::atom_group *ag)
Store a pointer to new atom group, and list as child for dependencies.
Definition: colvarcomp.cpp:398
void init_as_angle()
Set data types for a bounded angle (0° to 180°)
Definition: colvarcomp.cpp:368
void init_as_distance()
Set data types for a scalar distance (convenience function)
Definition: colvarcomp.cpp:358
colvarvalue const & total_force() const
Return the previously calculated total force.
Definition: colvarcomp.h:312
colvarvalue x_old
Value at the previous step.
Definition: colvarcomp.h:271
colvarvalue upper_boundary
Location of the upper boundary (not defined by user choice)
Definition: colvarcomp.h:299
colvarvalue lower_boundary
Location of the lower boundary (not defined by user choice)
Definition: colvarcomp.h:296
void init_scalar_boundaries(cvm::real lb, cvm::real ub)
Set two scalar boundaries (convenience function)
Definition: colvarcomp.cpp:385
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:166
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:543
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:978
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:553
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_protein.cpp:533
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:545
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:576
Colvar component: dihedral between the centers of mass of four groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:716
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:726
virtual int init(std::string const &conf)
Definition: colvarcomp_angles.cpp:223
cvm::rvector r12
Inter site vectors.
Definition: colvarcomp.h:728
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:720
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:724
bool b_1site_force
Compute total force on first site only to avoid unwanted coupling to other colvars (see e....
Definition: colvarcomp.h:732
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:722
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:681
bool b_1site_force
Definition: colvarcomp.h:700
cvm::rvector r21
Inter site vectors.
Definition: colvarcomp.h:691
cvm::real r21l
Inter site vector norms.
Definition: colvarcomp.h:693
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:151
cvm::rvector dxdr1
Derivatives wrt group centers of mass.
Definition: colvarcomp.h:695
cvm::atom_group * group1
Atom group.
Definition: colvarcomp.h:685
virtual int init(std::string const &conf)
Definition: colvarcomp_angles.cpp:138
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:689
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:687
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:538
cvm::atom_group * atoms
Dipole atom group.
Definition: colvarcomp.h:541
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:654
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:663
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:645
Colvar component: distance unit vector (direction) between centers of mass of two groups (colvarvalue...
Definition: colvarcomp.h:378
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:402
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:381
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:371
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:414
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:396
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:359
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:408
Colvar component: average distance between two groups of atoms, weighted as the sixth power,...
Definition: colvarcomp.h:489
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:494
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:425
int exponent
Components of the distance vector orthogonal to the axis.
Definition: colvarcomp.h:496
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:492
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:457
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:515
Colvar component: N1xN2 vector of pairwise distances (colvarvalue::type_vector type,...
Definition: colvarcomp.h:511
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:622
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:634
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:516
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:628
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:529
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:541
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:581
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:616
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:514
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:575
Definition: colvarcomp.h:355
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:140
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:131
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:94
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:122
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:105
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:112
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to deal with multiple dimensions.
Definition: colvarcomp_distances.cpp:146
Colvar component: projection of the distance vector on a plane (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:433
cvm::rvector dist_v_ortho
Components of the distance vector orthogonal to the axis.
Definition: colvarcomp.h:436
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:301
cvm::rvector v12
Vector distances.
Definition: colvarcomp.h:438
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:277
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:330
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:343
Colvar component: projection of the distance vector along an axis(colvarvalue::type_scalar type,...
Definition: colvarcomp.h:401
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:223
cvm::rvector dist_v
Vector distance, cached to be recycled.
Definition: colvarcomp.h:414
cvm::atom_group * main
Main atom group.
Definition: colvarcomp.h:404
bool fixed_axis
Flag: using a fixed axis vector?
Definition: colvarcomp.h:416
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:249
cvm::real axis_norm
Norm of the axis.
Definition: colvarcomp.h:412
cvm::atom_group * ref1
Reference atom group.
Definition: colvarcomp.h:406
cvm::atom_group * ref2
Optional, second ref atom group.
Definition: colvarcomp.h:408
cvm::rvector axis
Vector on which the distance vector is projected.
Definition: colvarcomp.h:410
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:193
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:160
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:262
Colvar component: distance between the centers of mass of two groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:330
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:335
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:79
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:47
cvm::rvector dist_v
Vector distance, cached to be recycled.
Definition: colvarcomp.h:337
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:67
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:30
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:59
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:333
Colvar component: projection of 3N coordinates onto an eigenvector(colvarvalue::type_scalar type,...
Definition: colvarcomp.h:609
std::vector< cvm::atom_pos > ref_pos
Reference coordinates.
Definition: colvarcomp.h:616
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:1111
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1341
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:1308
std::vector< cvm::rvector > eigenvec
Eigenvector (of a normal or essential mode): will always have zero center.
Definition: colvarcomp.h:619
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:613
cvm::real eigenvec_invnorm2
Inverse square norm of the eigenvector.
Definition: colvarcomp.h:622
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1319
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1329
Definition: colvarcomp.h:1126
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:408
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:392
Definition: colvarcomp.h:1137
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:459
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:443
Definition: colvarcomp.h:1148
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:508
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:494
Colvar component: coordination number between two groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:876
cvm::rvector r0_vec
"Cutoff vector" for anisotropic calculation
Definition: colvarcomp.h:881
bool b_anisotropic
Wheter dist/r0 or \vec{dist}*\vec{1/r0_vec} should ne be used.
Definition: colvarcomp.h:884
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:886
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:888
virtual int init(std::string const &conf)
Definition: colvarcomp_coordnums.cpp:622
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:666
cvm::real r0
"Cutoff" for isotropic calculation (default)
Definition: colvarcomp.h:879
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:700
Colvar component: alternative path collective variable using geometry, variable s Allow any combinati...
Definition: colvarcomp.h:1430
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:1291
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:557
cvm::atom_group * atoms
Atoms involved.
Definition: colvarcomp.h:560
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:705
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:726
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:716
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:740
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:686
Definition: colvarcomp.h:1447
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:1313
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:904
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:911
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:400
cvm::real r0
"Cutoff" distance between acceptor and donor
Definition: colvarcomp.h:907
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:909
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:438
virtual int init(std::string const &conf)
Definition: colvarcomp_coordnums.cpp:339
Colvar component: moment of inertia of an atom group around a user-defined axis (colvarvalue::type_sc...
Definition: colvarcomp.h:591
cvm::rvector axis
Vector on which the inertia tensor is projected.
Definition: colvarcomp.h:594
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:795
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:808
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:779
Colvar component: moment of inertia of an atom group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:577
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:753
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:763
Current only linear combination of sub-CVCs is available.
Definition: colvarcomp.h:1333
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:1336
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:1338
Definition: colvarcomp.h:1562
std::string volmap_name
String identifier of the map object (as used by the simulation engine)
Definition: colvarcomp.h:1575
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:1581
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:1584
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:1587
int volmap_id
Numeric identifier of the map object (as used by the simulation engine)
Definition: colvarcomp.h:1578
Definition: colvarcomp.h:1531
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:1536
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:1534
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:1054
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:193
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:207
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:226
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to use scalar metrics.
Definition: colvarcomp_rotations.cpp:252
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use scalar metrics.
Definition: colvarcomp_rotations.cpp:245
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use scalar metrics.
Definition: colvarcomp_rotations.cpp:232
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use scalar metrics.
Definition: colvarcomp_rotations.cpp:238
Colvar component: cosine of the angle of rotation with respect to a set of reference coordinates (col...
Definition: colvarcomp.h:1079
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:265
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:274
Colvar component: orientation in space of an atom group, with respect to a set of reference coordinat...
Definition: colvarcomp.h:1004
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:160
cvm::rotation rot
Rotation object.
Definition: colvarcomp.h:1020
std::vector< cvm::real > ref_pos_soa
Reference coordinates.
Definition: colvarcomp.h:1012
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::atom_pos atoms_cog
Center of geometry of the group.
Definition: colvarcomp.h:1009
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use quaternion metrics.
Definition: colvarcomp_rotations.cpp:174
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to use quaternion metrics.
Definition: colvarcomp_rotations.cpp:167
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to use quaternion metrics.
Definition: colvarcomp_rotations.cpp:181
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:1024
std::vector< cvm::real > shifted_pos_soa
Shifted atomic positions.
Definition: colvarcomp.h:1016
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:41
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1007
Colvar component: polar coordinate phi of a group (colvarvalue::type_scalar type, range [-180:180])
Definition: colvarcomp.h:453
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:471
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:1163
int init_permutation(std::string const &conf)
Permutation RMSD input parsing.
Definition: colvarcomp_distances.cpp:928
size_t best_perm_index
Index of the permutation yielding the smallest RMSD (0 for identity)
Definition: colvarcomp.h:1178
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1006
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1039
std::vector< cvm::atom_pos > ref_pos
Definition: colvarcomp.h:1172
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1168
size_t n_permutations
Number of permutations of symmetry-related atoms.
Definition: colvarcomp.h:1175
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1025
virtual int init(std::string const &conf)
Definition: colvarcomp_distances.cpp:832
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:975
Colvar component: self-coordination number within a group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:843
cvm::atom_group * group1
Selected atoms.
Definition: colvarcomp.h:846
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:602
virtual int init(std::string const &conf)
Definition: colvarcomp_coordnums.cpp:476
int compute_selfcoordnum()
Main workhorse function.
Definition: colvarcomp_coordnums.cpp:529
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:852
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:591
cvm::real r0
"Cutoff" for isotropic calculation (default)
Definition: colvarcomp.h:848
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:850
Colvar component: angle of rotation around a predefined axis (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:1114
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:352
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:364
Colvar component: projection of the orientation vector onto a predefined axis (colvarvalue::type_scal...
Definition: colvarcomp.h:1094
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:324
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:299
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:313
std::vector< cvm::rvector > atomic_gradients
Array of atomic gradients collected from all cvcs with appropriate components, rotations etc....
Definition: colvar.h:714
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:709
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:954
A rotation between two sets of coordinates (for the moment a wrapper for colvarmodule::quaternion)
Definition: colvartypes.h:1359
vector of real numbers with three components
Definition: colvartypes.h:723
double real
Defining an abstract real number allows to switch precision.
Definition: colvarmodule.h:150
static colvarproxy * proxy
Pointer to the proxy object, used to retrieve atomic data from the hosting program; it is static in o...
Definition: colvarmodule.h:951
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:179
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:172
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:51
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:106