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
29
67
69 : public colvarparse, public colvardeps
70{
71public:
72
75 std::string name;
76
85 std::string function_type;
86
88 std::string config_key;
89
93 int sup_np;
94
97
100
104 cvc(std::string const &conf);
105
107 int init_code = COLVARS_OK;
108
110 int set_function_type(std::string const &type);
111
115 virtual int init(std::string const &conf);
116
118 virtual int init_dependencies();
119
123 cvm::atom_group *parse_group(std::string const &conf,
124 char const *group_key,
125 bool optional = false);
126
128 virtual int init_total_force_params(std::string const &conf);
129
131 int setup();
132
135 cvc();
136
138 virtual ~cvc();
139
141 static std::vector<feature *> cvc_features;
142
144 virtual const std::vector<feature *> &features() const
145 {
146 return cvc_features;
147 }
148 virtual std::vector<feature *> &modify_features()
149 {
150 return cvc_features;
151 }
152 static void delete_features() {
153 for (size_t i=0; i < cvc_features.size(); i++) {
154 delete cvc_features[i];
155 }
156 cvc_features.clear();
157 }
158
160 virtual std::vector<std::vector<int> > get_atom_lists();
161
163 virtual void read_data();
164
166 virtual void calc_value() = 0;
167
170 virtual void calc_gradients() {}
171
173 void calc_fit_gradients();
174
176 virtual void debug_gradients();
177
180 virtual void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
181
184 virtual void calc_force_invgrads();
185
187 virtual void calc_Jacobian_derivative();
188
189
191 colvarvalue const & value() const;
192
194 colvarvalue const & total_force() const;
195
198 colvarvalue const & Jacobian_derivative() const;
199
209 virtual void apply_force(colvarvalue const &cvforce) = 0;
210
239 virtual cvm::real dist2(colvarvalue const &x1,
240 colvarvalue const &x2) const;
241
245 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
246 colvarvalue const &x2) const;
247
251 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
252 colvarvalue const &x2) const;
253
255 virtual void wrap(colvarvalue &x_unwrapped) const;
256
259 std::vector<cvm::atom_group *> atom_groups;
260
263
265 virtual colvarvalue const *get_param_grad(std::string const &param_name);
266
268 virtual int set_param(std::string const &param_name, void const *new_value);
269
272
275 inline void set_value(colvarvalue const &new_value) {
276 x = new_value;
277 }
278
279protected:
280
282 int update_description();
283
285 std::vector<std::string> function_types;
286
289
292
298
302
304 void init_as_distance();
305
307 void init_as_angle();
308
311
314
317
320
323};
324
325
326inline colvarvalue const & colvar::cvc::value() const
327{
328 return x;
329}
330
331
333{
334 return ft;
335}
336
337
339{
340 return jd;
341}
342
343
344
347
349 : public colvar::cvc
350{
351protected:
358public:
359 distance(std::string const &conf);
360 distance();
361 virtual ~distance() {}
362 virtual void calc_value();
363 virtual void calc_gradients();
364 virtual void calc_force_invgrads();
365 virtual void calc_Jacobian_derivative();
366 virtual void apply_force(colvarvalue const &force);
367 virtual cvm::real dist2(colvarvalue const &x1,
368 colvarvalue const &x2) const;
370 colvarvalue const &x2) const;
372 colvarvalue const &x2) const;
373};
374
375
376
377// \brief Colvar component: distance vector between centers of mass
378// of two groups (\link colvarvalue::type_3vector \endlink type,
379// range (-*:*)x(-*:*)x(-*:*))
381 : public colvar::distance
382{
383public:
384 distance_vec(std::string const &conf);
385 distance_vec();
386 virtual ~distance_vec() {}
387 virtual void calc_value();
388 virtual void calc_gradients();
389 virtual void apply_force(colvarvalue const &force);
391 virtual cvm::real dist2(colvarvalue const &x1,
392 colvarvalue const &x2) const;
394 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
395 colvarvalue const &x2) const;
397 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
398 colvarvalue const &x2) const;
399};
400
401
402
407 : public colvar::distance
408{
409public:
410 distance_dir(std::string const &conf);
411 distance_dir();
412 virtual ~distance_dir() {}
413 virtual void calc_value();
414 virtual void calc_gradients();
415 virtual void apply_force(colvarvalue const &force);
417 virtual cvm::real dist2(colvarvalue const &x1,
418 colvarvalue const &x2) const;
420 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
421 colvarvalue const &x2) const;
423 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
424 colvarvalue const &x2) const;
425};
426
427
428
432 : public colvar::cvc
433{
434protected:
449public:
450 distance_z(std::string const &conf);
451 distance_z();
452 virtual ~distance_z() {}
453 virtual void calc_value();
454 virtual void calc_gradients();
455 virtual void calc_force_invgrads();
456 virtual void calc_Jacobian_derivative();
457 virtual void apply_force(colvarvalue const &force);
458 virtual cvm::real dist2(colvarvalue const &x1,
459 colvarvalue const &x2) const;
460 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
461 colvarvalue const &x2) const;
462 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
463 colvarvalue const &x2) const;
465 virtual void wrap(colvarvalue &x_unwrapped) const;
466};
467
468
469
473 : public colvar::distance_z
474{
475protected:
480public:
481 distance_xy(std::string const &conf);
482 distance_xy();
483 virtual ~distance_xy() {}
484 virtual void calc_value();
485 virtual void calc_gradients();
486 virtual void calc_force_invgrads();
487 virtual void calc_Jacobian_derivative();
488 virtual void apply_force(colvarvalue const &force);
489 virtual cvm::real dist2(colvarvalue const &x1,
490 colvarvalue const &x2) const;
492 colvarvalue const &x2) const;
494 colvarvalue const &x2) const;
495};
496
497
501 : public colvar::cvc
502{
503public:
504 polar_phi(std::string const &conf);
505 polar_phi();
506 virtual ~polar_phi() {}
507protected:
508 cvm::atom_group *atoms;
509 cvm::real r, theta, phi;
510public:
511 virtual void calc_value();
512 virtual void calc_gradients();
513 virtual void apply_force(colvarvalue const &force);
515 virtual cvm::real dist2(colvarvalue const &x1,
516 colvarvalue const &x2) const;
518 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
519 colvarvalue const &x2) const;
521 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
522 colvarvalue const &x2) const;
524 virtual void wrap(colvarvalue &x_unwrapped) const;
525};
526
527
531 : public colvar::cvc
532{
533public:
534 polar_theta(std::string const &conf);
535 polar_theta();
536 virtual ~polar_theta() {}
537protected:
538 cvm::atom_group *atoms;
539 cvm::real r, theta, phi;
540public:
541 virtual void calc_value();
542 virtual void calc_gradients();
543 virtual void apply_force(colvarvalue const &force);
545 virtual cvm::real dist2(colvarvalue const &x1,
546 colvarvalue const &x2) const;
549 colvarvalue const &x2) const;
552 colvarvalue const &x2) const;
553};
554
558 : public colvar::cvc
559{
560protected:
567public:
568 distance_inv(std::string const &conf);
569 virtual ~distance_inv() {}
570 virtual void calc_value();
571 virtual void calc_gradients();
572 virtual void apply_force(colvarvalue const &force);
573 virtual cvm::real dist2(colvarvalue const &x1,
574 colvarvalue const &x2) const;
576 colvarvalue const &x2) const;
578 colvarvalue const &x2) const;
579};
580
581
582
586 : public colvar::cvc
587{
588protected:
593public:
594 distance_pairs(std::string const &conf);
596 virtual ~distance_pairs() {}
597 virtual void calc_value();
598 virtual void calc_gradients();
599 virtual void apply_force(colvarvalue const &force);
600};
601
602
603
606 : public colvar::cvc
607{
608protected:
611 cvm::atom_pos dipoleV;
612public:
614 dipole_magnitude (std::string const &conf);
615 dipole_magnitude (cvm::atom const &a1);
617 virtual ~dipole_magnitude() {}
618 virtual void calc_value();
619 virtual void calc_gradients();
620 //virtual void calc_force_invgrads();
621 //virtual void calc_Jacobian_derivative();
622 virtual void apply_force (colvarvalue const &force);
623 virtual cvm::real dist2 (colvarvalue const &x1,
624 colvarvalue const &x2) const;
626 colvarvalue const &x2) const;
628 colvarvalue const &x2) const;
629};
630
631
632
636 : public colvar::cvc
637{
638protected:
641public:
642 gyration(std::string const &conf);
643 virtual ~gyration() {}
644 virtual void calc_value();
645 virtual void calc_gradients();
646 virtual void calc_force_invgrads();
647 virtual void calc_Jacobian_derivative();
648 virtual void apply_force(colvarvalue const &force);
649 virtual cvm::real dist2(colvarvalue const &x1,
650 colvarvalue const &x2) const;
652 colvarvalue const &x2) const;
654 colvarvalue const &x2) const;
655};
656
657
658
662 : public colvar::gyration
663{
664public:
666 inertia(std::string const &conf);
667 inertia();
668 virtual ~inertia() {}
669 virtual void calc_value();
670 virtual void calc_gradients();
671 virtual void apply_force(colvarvalue const &force);
672 virtual cvm::real dist2(colvarvalue const &x1,
673 colvarvalue const &x2) const;
675 colvarvalue const &x2) const;
677 colvarvalue const &x2) const;
678};
679
680
681
685 : public colvar::inertia
686{
687protected:
690public:
692 inertia_z(std::string const &conf);
693 inertia_z();
694 virtual ~inertia_z() {}
695 virtual void calc_value();
696 virtual void calc_gradients();
697 virtual void apply_force(colvarvalue const &force);
698 virtual cvm::real dist2(colvarvalue const &x1,
699 colvarvalue const &x2) const;
701 colvarvalue const &x2) const;
703 colvarvalue const &x2) const;
704};
705
706
707
711 : public colvar::cvc
712{
713protected:
714
717
719 std::vector<cvm::atom_pos> ref_pos;
720
722 std::vector<cvm::rvector> eigenvec;
723
726
727public:
728
730 eigenvector(std::string const &conf);
731 virtual ~eigenvector() {}
732 virtual void calc_value();
733 virtual void calc_gradients();
734 virtual void calc_force_invgrads();
735 virtual void calc_Jacobian_derivative();
736 virtual void apply_force(colvarvalue const &force);
737 virtual cvm::real dist2(colvarvalue const &x1,
738 colvarvalue const &x2) const;
740 colvarvalue const &x2) const;
742 colvarvalue const &x2) const;
743};
744
745
746
750 : public colvar::cvc
751{
752protected:
753
760
767
772public:
773
775 angle(std::string const &conf);
777 angle(cvm::atom const &a1, cvm::atom const &a2, cvm::atom const &a3);
778 virtual ~angle() {}
779 virtual void calc_value();
780 virtual void calc_gradients();
781 virtual void calc_force_invgrads();
782 virtual void calc_Jacobian_derivative();
783 virtual void apply_force(colvarvalue const &force);
784 virtual cvm::real dist2(colvarvalue const &x1,
785 colvarvalue const &x2) const;
787 colvarvalue const &x2) const;
789 colvarvalue const &x2) const;
790};
791
792
793
797 : public colvar::cvc
798{
799protected:
800
807
814
819public:
820
822 dipole_angle (std::string const &conf);
824 dipole_angle (cvm::atom const &a1, cvm::atom const &a2, cvm::atom const &a3);
825 dipole_angle();
826 virtual ~dipole_angle() {}
827 virtual void calc_value();
828 virtual void calc_gradients();
829 virtual void apply_force (colvarvalue const &force);
830 virtual cvm::real dist2 (colvarvalue const &x1,
831 colvarvalue const &x2) const;
833 colvarvalue const &x2) const;
835 colvarvalue const &x2) const;
836};
837
838
839
843 : public colvar::cvc
844{
845protected:
846
856 cvm::rvector r12, r23, r34;
857
861
862public:
863
865 dihedral(std::string const &conf);
867 dihedral(cvm::atom const &a1, cvm::atom const &a2, cvm::atom const &a3, cvm::atom const &a4);
868 dihedral();
869 virtual ~dihedral() {}
870 virtual void calc_value();
871 virtual void calc_gradients();
872 virtual void calc_force_invgrads();
873 virtual void calc_Jacobian_derivative();
874 virtual void apply_force(colvarvalue const &force);
875
877 virtual cvm::real dist2(colvarvalue const &x1,
878 colvarvalue const &x2) const;
880 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
881 colvarvalue const &x2) const;
883 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
884 colvarvalue const &x2) const;
886 virtual void wrap(colvarvalue &x_unwrapped) const;
887};
888
889
890
894 : public colvar::cvc
895{
896protected:
908 int en;
910 int ed;
911
914
917
920
922 bool *pairlist;
923
924public:
925
926 coordnum(std::string const &conf);
927 ~coordnum();
928
929 virtual void calc_value();
930 virtual void calc_gradients();
931 virtual void apply_force(colvarvalue const &force);
932 virtual cvm::real dist2(colvarvalue const &x1,
933 colvarvalue const &x2) const;
935 colvarvalue const &x2) const;
937 colvarvalue const &x2) const;
938
939 enum {
940 ef_null = 0,
941 ef_gradients = 1,
942 ef_anisotropic = (1<<8),
943 ef_use_pairlist = (1<<9),
944 ef_rebuild_pairlist = (1<<10)
945 };
946
954 template<int flags>
956 cvm::rvector const &r0_vec,
957 int en,
958 int ed,
959 cvm::atom &A1,
960 cvm::atom &A2,
961 bool **pairlist_elem,
963
965 template<int flags> int compute_coordnum();
966
968 template<int flags> void main_loop(bool **pairlist_elem);
969
970};
971
972
973
977 : public colvar::cvc
978{
979protected:
980
986 int en;
988 int ed;
989 cvm::real tolerance;
990 int pairlist_freq;
991 bool *pairlist;
992
993public:
994
995 selfcoordnum(std::string const &conf);
997 virtual void calc_value();
998 virtual void calc_gradients();
999 virtual void apply_force(colvarvalue const &force);
1000
1001 virtual cvm::real dist2(colvarvalue const &x1,
1002 colvarvalue const &x2) const;
1004 colvarvalue const &x2) const;
1006 colvarvalue const &x2) const;
1007
1009 template<int flags> int compute_selfcoordnum();
1010};
1011
1012
1013
1017 : public colvar::distance
1018{
1019protected:
1028 int en;
1030 int ed;
1031public:
1033 groupcoordnum(std::string const &conf);
1034 virtual ~groupcoordnum() {}
1035 virtual void calc_value();
1036 virtual void calc_gradients();
1037 virtual void apply_force(colvarvalue const &force);
1038
1039 virtual cvm::real dist2(colvarvalue const &x1,
1040 colvarvalue const &x2) const;
1042 colvarvalue const &x2) const;
1044 colvarvalue const &x2) const;
1045};
1046
1047
1048
1053 : public colvar::cvc
1054{
1055protected:
1059 int en;
1061 int ed;
1062public:
1063 h_bond(std::string const &conf);
1065 h_bond(cvm::atom const &acceptor,
1066 cvm::atom const &donor,
1067 cvm::real r0, int en, int ed);
1068 h_bond();
1069 virtual ~h_bond() {}
1070 virtual void calc_value();
1071 virtual void calc_gradients();
1072 virtual void apply_force(colvarvalue const &force);
1073
1074 virtual cvm::real dist2(colvarvalue const &x1,
1075 colvarvalue const &x2) const;
1077 colvarvalue const &x2) const;
1079 colvarvalue const &x2) const;
1080};
1081
1082
1083
1088// class colvar::alpha_dihedrals
1089// : public colvar::cvc
1090// {
1091// protected:
1092
1093// /// Alpha-helical reference phi value
1094// cvm::real phi_ref;
1095
1096// /// Alpha-helical reference psi value
1097// cvm::real psi_ref;
1098
1099// /// List of phi dihedral angles
1100// std::vector<dihedral *> phi;
1101
1102// /// List of psi dihedral angles
1103// std::vector<dihedral *> psi;
1104
1105// /// List of hydrogen bonds
1106// std::vector<h_bond *> hb;
1107
1108// public:
1109
1110// alpha_dihedrals (std::string const &conf);
1111// alpha_dihedrals();
1112// virtual ~alpha_dihedrals() {}
1113// virtual void calc_value();
1114// virtual void calc_gradients();
1115// virtual void apply_force (colvarvalue const &force);
1116// virtual cvm::real dist2 (colvarvalue const &x1,
1117// colvarvalue const &x2) const;
1118// virtual colvarvalue dist2_lgrad (colvarvalue const &x1,
1119// colvarvalue const &x2) const;
1120// virtual colvarvalue dist2_rgrad (colvarvalue const &x1,
1121// colvarvalue const &x2) const;
1122// };
1123
1124
1125
1131 : public colvar::cvc
1132{
1133protected:
1134
1137
1140
1142 std::vector<angle *> theta;
1143
1145 std::vector<h_bond *> hb;
1146
1149
1150public:
1151
1152 alpha_angles(std::string const &conf);
1153 alpha_angles();
1154 virtual ~alpha_angles();
1155 void calc_value();
1156 void calc_gradients();
1158 void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
1159 void apply_force(colvarvalue const &force);
1160 virtual cvm::real dist2(colvarvalue const &x1,
1161 colvarvalue const &x2) const;
1163 colvarvalue const &x2) const;
1165 colvarvalue const &x2) const;
1166};
1167
1168
1169
1175 : public colvar::cvc
1176{
1177protected:
1178
1179 std::vector<dihedral *> theta;
1180 std::vector<cvm::real> coeffs;
1181
1182public:
1183
1184 dihedPC(std::string const &conf);
1185 dihedPC();
1186 virtual ~dihedPC();
1187 void calc_value();
1188 void calc_gradients();
1190 void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
1191 void apply_force(colvarvalue const &force);
1192 virtual cvm::real dist2(colvarvalue const &x1,
1193 colvarvalue const &x2) const;
1195 colvarvalue const &x2) const;
1197 colvarvalue const &x2) const;
1198};
1199
1200
1201
1207 : public colvar::cvc
1208{
1209protected:
1210
1215
1217 std::vector<cvm::atom_pos> ref_pos;
1218
1220 std::vector<cvm::atom_pos> shifted_pos;
1221
1224
1228
1231 std::unique_ptr<rotation_derivative_impl_> rot_deriv_impl;
1232
1233public:
1234
1235 orientation(std::string const &conf);
1236 orientation();
1237 virtual int init(std::string const &conf);
1238 virtual ~orientation();
1239 virtual void calc_value();
1240 virtual void calc_gradients();
1241 virtual void apply_force(colvarvalue const &force);
1242 virtual cvm::real dist2(colvarvalue const &x1,
1243 colvarvalue const &x2) const;
1244 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1245 colvarvalue const &x2) const;
1246 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1247 colvarvalue const &x2) const;
1248};
1249
1250
1251
1256 : public colvar::orientation
1257{
1258public:
1259
1260 orientation_angle(std::string const &conf);
1261 virtual int init(std::string const &conf);
1262 virtual ~orientation_angle() {}
1263 virtual void calc_value();
1264 virtual void calc_gradients();
1265 virtual void apply_force(colvarvalue const &force);
1266 virtual cvm::real dist2(colvarvalue const &x1,
1267 colvarvalue const &x2) const;
1269 colvarvalue const &x2) const;
1271 colvarvalue const &x2) const;
1272};
1273
1274
1275
1280 : public colvar::orientation
1281{
1282public:
1283
1284 orientation_proj(std::string const &conf);
1286 virtual int init(std::string const &conf);
1287 virtual ~orientation_proj() {}
1288 virtual void calc_value();
1289 virtual void calc_gradients();
1290 virtual void apply_force(colvarvalue const &force);
1291 virtual cvm::real dist2(colvarvalue const &x1,
1292 colvarvalue const &x2) const;
1294 colvarvalue const &x2) const;
1296 colvarvalue const &x2) const;
1297};
1298
1299
1300
1304 : public colvar::orientation
1305{
1306protected:
1307
1308 cvm::rvector axis;
1309
1310public:
1311
1312 tilt(std::string const &conf);
1313 virtual int init(std::string const &conf);
1314 virtual ~tilt() {}
1315 virtual void calc_value();
1316 virtual void calc_gradients();
1317 virtual void apply_force(colvarvalue const &force);
1318 virtual cvm::real dist2(colvarvalue const &x1,
1319 colvarvalue const &x2) const;
1321 colvarvalue const &x2) const;
1323 colvarvalue const &x2) const;
1324};
1325
1326
1327
1331 : public colvar::orientation
1332{
1333protected:
1334
1335 cvm::rvector axis;
1336
1337public:
1338
1339 spin_angle(std::string const &conf);
1340 spin_angle();
1341 virtual int init(std::string const &conf);
1342 virtual ~spin_angle() {}
1343 virtual void calc_value();
1344 virtual void calc_gradients();
1345 virtual void apply_force(colvarvalue const &force);
1347 virtual cvm::real dist2(colvarvalue const &x1,
1348 colvarvalue const &x2) const;
1350 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1351 colvarvalue const &x2) const;
1353 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1354 colvarvalue const &x2) const;
1356 virtual void wrap(colvarvalue &x_unwrapped) const;
1357};
1358
1359
1361 : public colvar::orientation
1362{
1363public:
1364 euler_phi(std::string const &conf);
1365 euler_phi();
1366 virtual int init(std::string const &conf);
1367 virtual ~euler_phi() {}
1368 virtual void calc_value();
1369 virtual void calc_gradients();
1370 virtual void apply_force(colvarvalue const &force);
1371 virtual cvm::real dist2(colvarvalue const &x1,
1372 colvarvalue const &x2) const;
1373 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1374 colvarvalue const &x2) const;
1375 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1376 colvarvalue const &x2) const;
1378 virtual void wrap(colvarvalue &x_unwrapped) const;
1379};
1380
1381
1383 : public colvar::orientation
1384{
1385public:
1386 euler_psi(std::string const &conf);
1387 euler_psi();
1388 virtual int init(std::string const &conf);
1389 virtual ~euler_psi() {}
1390 virtual void calc_value();
1391 virtual void calc_gradients();
1392 virtual void apply_force(colvarvalue const &force);
1393 virtual cvm::real dist2(colvarvalue const &x1,
1394 colvarvalue const &x2) const;
1395 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1396 colvarvalue const &x2) const;
1397 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1398 colvarvalue const &x2) const;
1400 virtual void wrap(colvarvalue &x_unwrapped) const;
1401};
1402
1403
1405 : public colvar::orientation
1406{
1407public:
1408 euler_theta(std::string const &conf);
1409 euler_theta();
1410 virtual int init(std::string const &conf);
1411 virtual ~euler_theta() {}
1412 virtual void calc_value();
1413 virtual void calc_gradients();
1414 virtual void apply_force(colvarvalue const &force);
1415 // theta angle is a scalar variable and not periodic
1416 // we need to override the virtual functions from orientation
1417 virtual cvm::real dist2(colvarvalue const &x1,
1418 colvarvalue const &x2) const;
1419 virtual colvarvalue dist2_lgrad(colvarvalue const &x1,
1420 colvarvalue const &x2) const;
1421 virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
1422 colvarvalue const &x2) const;
1423};
1424
1425
1431 : public colvar::cvc
1432{
1433protected:
1434
1437
1440 std::vector<cvm::atom_pos> ref_pos;
1441
1444
1447public:
1448
1450 rmsd(std::string const &conf);
1451 virtual ~rmsd() {}
1452 virtual void calc_value();
1453 virtual void calc_gradients();
1454 virtual void calc_force_invgrads();
1455 virtual void calc_Jacobian_derivative();
1456 virtual void apply_force(colvarvalue const &force);
1457 virtual cvm::real dist2(colvarvalue const &x1,
1458 colvarvalue const &x2) const;
1460 colvarvalue const &x2) const;
1462 colvarvalue const &x2) const;
1463};
1464
1465
1466
1467// \brief Colvar component: flat vector of Cartesian coordinates
1468// Mostly useful to compute scripted colvar values
1470 : public colvar::cvc
1471{
1472protected:
1476 std::vector<size_t> axes;
1477public:
1478 cartesian(std::string const &conf);
1479 cartesian();
1480 virtual ~cartesian() {}
1481 virtual void calc_value();
1482 virtual void calc_gradients();
1483 virtual void apply_force(colvarvalue const &force);
1484};
1485
1486
1487// \brief Colvar component: alch_lambda
1488// To communicate value with back-end in lambda-dynamics
1490 : public colvar::cvc
1491{
1492protected:
1493 // No atom groups needed
1494public:
1495 alch_lambda(std::string const &conf);
1496 alch_lambda();
1497 virtual ~alch_lambda() {}
1498 virtual void calc_value();
1499 virtual void calc_gradients();
1500 virtual void apply_force(colvarvalue const &force);
1501 virtual cvm::real dist2(colvarvalue const &x1,
1502 colvarvalue const &x2) const;
1504 colvarvalue const &x2) const;
1506 colvarvalue const &x2) const;
1507};
1508
1509
1510// \brief Colvar component: alch_Flambda
1511// To communicate force on lambda with back-end in lambda-dynamics
1513 : public colvar::cvc
1514{
1515protected:
1516 // No atom groups needed
1517public:
1518 alch_Flambda(std::string const &conf);
1519 alch_Flambda();
1520 virtual ~alch_Flambda() {}
1521 virtual void calc_value();
1522 virtual void calc_gradients();
1523 virtual void apply_force(colvarvalue const &force);
1524 virtual cvm::real dist2(colvarvalue const &x1,
1525 colvarvalue const &x2) const;
1527 colvarvalue const &x2) const;
1529 colvarvalue const &x2) const;
1530};
1531
1532
1534 : public colvar::cvc
1535{
1536public:
1537 componentDisabled(std::string const & /* conf */) {
1538 cvm::error("Error: this component is not enabled in the current build; please see https://colvars.github.io/README-c++11.html");
1539 }
1540 virtual ~componentDisabled() {}
1541 virtual void calc_value() {}
1542 virtual void calc_gradients() {}
1543 virtual void apply_force(colvarvalue const & /* force */) {}
1544};
1545
1546
1547
1549 : public colvar::cvc
1550{
1551protected:
1552 virtual void computeDistanceBetweenReferenceFrames(std::vector<cvm::real>& result);
1553 virtual void computeDistanceToReferenceFrames(std::vector<cvm::real>& result);
1559 std::vector<std::vector<cvm::atom_pos>> reference_frames;
1560 std::vector<std::vector<cvm::atom_pos>> reference_fitting_frames;
1562 std::vector<cvm::atom_group*> comp_atoms;
1565public:
1566 CartesianBasedPath(std::string const &conf);
1567 virtual ~CartesianBasedPath();
1568 virtual void calc_value() = 0;
1569 virtual void apply_force(colvarvalue const &force) = 0;
1570};
1571
1576 : public colvar::CartesianBasedPath, public GeometricPathCV::GeometricPathBase<cvm::atom_pos, cvm::real, GeometricPathCV::path_sz::S>
1577{
1578private:
1579 // Optimal rotation for compute v3
1580 cvm::rotation rot_v3;
1581protected:
1582 virtual void prepareVectors();
1583 virtual void updateDistanceToReferenceFrames();
1584public:
1585 gspath(std::string const &conf);
1586 virtual ~gspath() {}
1587 virtual void calc_value();
1588 virtual void calc_gradients();
1589 virtual void apply_force(colvarvalue const &force);
1590};
1591
1592
1593
1597 : public colvar::CartesianBasedPath, public GeometricPathCV::GeometricPathBase<cvm::atom_pos, cvm::real, GeometricPathCV::path_sz::Z>
1598{
1599private:
1600 // Optimal rotation for compute v3, v4
1601 cvm::rotation rot_v3;
1602 cvm::rotation rot_v4;
1603protected:
1604 virtual void prepareVectors();
1605 virtual void updateDistanceToReferenceFrames();
1606public:
1607 gzpath(std::string const &conf);
1608 virtual ~gzpath() {}
1609 virtual void calc_value();
1610 virtual void calc_gradients();
1611 virtual void apply_force(colvarvalue const &force);
1612};
1613
1616 : public colvar::cvc
1617{
1618protected:
1620 std::vector<colvar::cvc*> cv;
1623protected:
1624 cvm::real getPolynomialFactorOfCVGradient(size_t i_cv) const;
1625public:
1626 linearCombination(std::string const &conf);
1627 virtual ~linearCombination();
1628 virtual void calc_value();
1629 virtual void calc_gradients();
1630 virtual void apply_force(colvarvalue const &force);
1631};
1632
1633
1637{
1638protected:
1639 bool use_custom_function;
1640#ifdef LEPTON
1642 std::vector<Lepton::CompiledExpression *> value_evaluators;
1644 std::vector<Lepton::CompiledExpression *> gradient_evaluators;
1646 std::vector<double *> value_eval_var_refs;
1647 std::vector<double *> grad_eval_var_refs;
1649 double dev_null;
1650#endif
1651public:
1652 customColvar(std::string const &conf);
1653 virtual ~customColvar();
1654 virtual void calc_value();
1655 virtual void calc_gradients();
1656 virtual void apply_force(colvarvalue const &force);
1657};
1658
1659
1661 : public colvar::cvc
1662{
1663protected:
1665 std::vector<colvar::cvc*> cv;
1667 std::vector<std::vector<colvarvalue>> ref_cv;
1672protected:
1673 virtual void computeDistanceToReferenceFrames(std::vector<cvm::real>& result);
1675 virtual void computeDistanceBetweenReferenceFrames(std::vector<cvm::real>& result) const;
1676 cvm::real getPolynomialFactorOfCVGradient(size_t i_cv) const;
1677public:
1678 CVBasedPath(std::string const &conf);
1679 virtual ~CVBasedPath();
1680 virtual void calc_value() = 0;
1681 virtual void apply_force(colvarvalue const &force) = 0;
1682};
1683
1684
1690 : public colvar::CVBasedPath, public GeometricPathCV::GeometricPathBase<colvarvalue, cvm::real, GeometricPathCV::path_sz::S>
1691{
1692protected:
1693 virtual void updateDistanceToReferenceFrames();
1694 virtual void prepareVectors();
1695public:
1696 gspathCV(std::string const &conf);
1697 virtual ~gspathCV();
1698 virtual void calc_value();
1699 virtual void calc_gradients();
1700 virtual void apply_force(colvarvalue const &force);
1701};
1702
1703
1704
1706 : public colvar::CVBasedPath, public GeometricPathCV::GeometricPathBase<colvarvalue, cvm::real, GeometricPathCV::path_sz::Z>
1707{
1708protected:
1709 virtual void updateDistanceToReferenceFrames();
1710 virtual void prepareVectors();
1711public:
1712 gzpathCV(std::string const &conf);
1713 virtual ~gzpathCV();
1714 virtual void calc_value();
1715 virtual void calc_gradients();
1716 virtual void apply_force(colvarvalue const &force);
1717};
1718
1719struct ArithmeticPathImpl;
1720
1723{
1724private:
1725 std::unique_ptr<ArithmeticPathImpl> impl_;
1726 friend struct ArithmeticPathImpl;
1727public:
1728 aspath(std::string const &conf);
1729 virtual ~aspath();
1730 virtual void calc_value();
1731 virtual void calc_gradients();
1732 virtual void apply_force(colvarvalue const &force);
1733};
1734
1737{
1738private:
1739 std::unique_ptr<ArithmeticPathImpl> impl_;
1740 friend struct ArithmeticPathImpl;
1741public:
1742 azpath(std::string const &conf);
1743 virtual ~azpath();
1744 virtual void calc_value();
1745 virtual void calc_gradients();
1746 virtual void apply_force(colvarvalue const &force);
1747};
1748
1750 : public colvar::CVBasedPath
1751{
1752private:
1753 std::unique_ptr<ArithmeticPathImpl> impl_;
1754 friend struct ArithmeticPathImpl;
1755public:
1756 aspathCV(std::string const &conf);
1757 virtual ~aspathCV();
1758 virtual void calc_value();
1759 virtual void calc_gradients();
1760 virtual void apply_force(colvarvalue const &force);
1761};
1762
1763
1765 : public colvar::CVBasedPath
1766{
1767private:
1768 std::unique_ptr<ArithmeticPathImpl> impl_;
1769 friend struct ArithmeticPathImpl;
1770public:
1771 azpathCV(std::string const &conf);
1772 virtual ~azpathCV();
1773 virtual void calc_value();
1774 virtual void calc_gradients();
1775 virtual void apply_force(colvarvalue const &force);
1776};
1777
1778// forward declaration
1779namespace neuralnetworkCV {
1780 class neuralNetworkCompute;
1781}
1782
1783
1785 : public linearCombination
1786{
1787protected:
1789 std::unique_ptr<neuralnetworkCV::neuralNetworkCompute> nn;
1792public:
1793 neuralNetwork(std::string const &conf);
1794 virtual ~neuralNetwork();
1795 virtual void calc_value();
1796 virtual void calc_gradients();
1797 virtual void apply_force(colvarvalue const &force);
1798};
1799
1800
1801// \brief Colvar component: total value of a scalar map
1802// (usually implemented as a grid by the simulation engine)
1804 : public colvar::cvc
1805{
1806public:
1807
1808 map_total();
1809 map_total(std::string const &conf);
1810 virtual ~map_total() {}
1811 virtual int init(std::string const &conf);
1812 virtual void calc_value();
1813 virtual void calc_gradients();
1814 virtual void apply_force(colvarvalue const &force);
1815
1816protected:
1817
1819 std::string volmap_name;
1820
1823
1826
1829
1831 std::vector<cvm::real> atom_weights;
1832};
1833
1834
1835
1836// metrics functions for cvc implementations
1837
1838// simple definitions of the distance functions; these are useful only
1839// for optimization (the type check performed in the default
1840// colvarcomp functions is skipped)
1841
1842// definitions assuming the scalar type
1843
1844#define simple_scalar_dist_functions(TYPE) \
1845 \
1846 \
1847 cvm::real colvar::TYPE::dist2(colvarvalue const &x1, \
1848 colvarvalue const &x2) const \
1849 { \
1850 return (x1.real_value - x2.real_value)*(x1.real_value - x2.real_value); \
1851 } \
1852 \
1853 \
1854 colvarvalue colvar::TYPE::dist2_lgrad(colvarvalue const &x1, \
1855 colvarvalue const &x2) const \
1856 { \
1857 return 2.0 * (x1.real_value - x2.real_value); \
1858 } \
1859 \
1860 \
1861 colvarvalue colvar::TYPE::dist2_rgrad(colvarvalue const &x1, \
1862 colvarvalue const &x2) const \
1863 { \
1864 return this->dist2_lgrad(x2, x1); \
1865 } \
1866
1867
1868#endif
Definition: colvar_geometricpath.h:24
Definition: colvarcomp.h:1662
std::vector< colvar::cvc * > cv
Sub-colvar components.
Definition: colvarcomp.h:1665
size_t total_reference_frames
Total number of reference frames.
Definition: colvarcomp.h:1671
bool use_explicit_gradients
If all sub-cvs use explicit gradients then we also use it.
Definition: colvarcomp.h:1669
std::vector< std::vector< colvarvalue > > ref_cv
Reference colvar values from path.
Definition: colvarcomp.h:1667
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:539
virtual void apply_force(colvarvalue const &force)=0
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp.h:1550
cvm::atom_group * atoms
Selected atoms.
Definition: colvarcomp.h:1555
std::vector< std::vector< cvm::atom_pos > > reference_frames
Reference frames.
Definition: colvarcomp.h:1559
virtual void apply_force(colvarvalue const &force)=0
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
size_t total_reference_frames
Total number of reference frames.
Definition: colvarcomp.h:1564
bool has_user_defined_fitting
Fitting options.
Definition: colvarcomp.h:1557
virtual void calc_value()=0
Calculate the variable.
std::vector< cvm::atom_group * > comp_atoms
Atom groups for RMSD calculation together with reference frames.
Definition: colvarcomp.h:1562
Definition: colvarcomp.h:1514
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_alchlambda.cpp:85
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...
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:90
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...
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_alchlambda.cpp:74
Definition: colvarcomp.h:1491
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_alchlambda.cpp:33
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_alchlambda.cpp:47
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...
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...
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:52
Colvar component: alpha helix content of a contiguous segment of 5 or more residues,...
Definition: colvarcomp.h:1132
void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_protein.cpp:176
cvm::real theta_tol
Tolerance on the Calpha-Calpha angle.
Definition: colvarcomp.h:1139
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...
cvm::real theta_ref
Reference Calpha-Calpha angle (default: 88 degrees)
Definition: colvarcomp.h:1136
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:187
void calc_value()
Calculate the variable.
Definition: colvarcomp_protein.cpp:132
cvm::real hb_coeff
Contribution of the hb terms.
Definition: colvarcomp.h:1148
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:239
std::vector< h_bond * > hb
List of hydrogen bonds.
Definition: colvarcomp.h:1145
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...
std::vector< angle * > theta
List of Calpha-Calpha angles.
Definition: colvarcomp.h:1142
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
Colvar component: angle between the centers of mass of three groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:751
bool b_1site_force
Definition: colvarcomp.h:771
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:759
cvm::rvector r21
Inter site vectors.
Definition: colvarcomp.h:762
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_angles.cpp:123
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:74
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_angles.cpp:114
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...
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:757
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...
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:53
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_angles.cpp:91
cvm::rvector dxdr1
Derivatives wrt group centers of mass.
Definition: colvarcomp.h:766
cvm::real r21l
Inter site vector norms.
Definition: colvarcomp.h:764
cvm::atom_group * group1
Atom group.
Definition: colvarcomp.h:755
Definition: colvarcomp.h:1751
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_apath.cpp:249
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_apath.cpp:264
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_apath.cpp:288
Definition: colvarcomp.h:1723
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_apath.cpp:176
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_apath.cpp:167
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_apath.cpp:152
Definition: colvarcomp.h:1766
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_apath.cpp:358
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_apath.cpp:343
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_apath.cpp:382
Definition: colvarcomp.h:1737
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_apath.cpp:212
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_apath.cpp:221
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_apath.cpp:197
Definition: colvarcomp.h:1471
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1550
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1474
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:1538
std::vector< size_t > axes
Which Cartesian coordinates to include.
Definition: colvarcomp.h:1476
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:1558
Definition: colvarcomp.h:1535
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp.h:1541
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp.h:1542
virtual void apply_force(colvarvalue const &)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp.h:1543
Colvar component: coordination number between two groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:895
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:908
static cvm::real switching_function(cvm::real const &r0, cvm::rvector const &r0_vec, int en, int ed, cvm::atom &A1, cvm::atom &A2, 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:19
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:270
int compute_coordnum()
Workhorse function.
Definition: colvarcomp_coordnums.cpp:221
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:900
cvm::real tolerance
Tolerance for the pair list.
Definition: colvarcomp.h:916
bool b_group2_center_only
If true, group2 will be treated as a single atom.
Definition: colvarcomp.h:913
int ed
Integer exponent of the function denominator.
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:281
int pairlist_freq
Frequency of update of the pair list.
Definition: colvarcomp.h:919
cvm::real r0
"Cutoff" for isotropic calculation (default)
Definition: colvarcomp.h:902
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...
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...
bool b_anisotropic
Whether r/r0 or \vec{r}*\vec{1/r0_vec} should be used.
Definition: colvarcomp.h:906
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
bool * pairlist
Pair list.
Definition: colvarcomp.h:922
void main_loop(bool **pairlist_elem)
Workhorse function.
Definition: colvarcomp_coordnums.cpp:194
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:898
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_coordnums.cpp:287
cvm::rvector r0_vec
"Cutoff vector" for anisotropic calculation
Definition: colvarcomp.h:904
custom expression of colvars
Definition: colvarcomp.h:1637
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_combination.cpp:252
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:290
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_combination.cpp:221
Colvar component (base class for collective variables)
Definition: colvarcomp.h:70
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:474
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:680
void set_value(colvarvalue const &new_value)
Definition: colvarcomp.h:275
std::string function_type
Description of the type of collective variable.
Definition: colvarcomp.h:85
int sup_np
Exponent in the polynomial combination (default: 1)
Definition: colvarcomp.h:93
int set_function_type(std::string const &type)
Set the value of function_type and its dependencies.
Definition: colvarcomp.cpp:62
cvm::real sup_coeff
Coefficient in the polynomial combination (default: 1.0)
Definition: colvarcomp.h:91
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp.cpp:516
colvarvalue jd
Calculated Jacobian derivative (divergence of the inverse gradients): serves to calculate the phase s...
Definition: colvarcomp.h:301
std::vector< std::string > function_types
Record the type of this class as well as those it is derived from.
Definition: colvarcomp.h:285
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:673
virtual int init(std::string const &conf)
Definition: colvarcomp.cpp:83
virtual void debug_gradients()
Calculate finite-difference gradients alongside the analytical ones, for each Cartesian component.
Definition: colvarcomp.cpp:540
virtual ~cvc()
Destructor.
Definition: colvarcomp.cpp:344
colvarvalue const & Jacobian_derivative() const
Return the previously calculated divergence of the inverse atomic gradients.
Definition: colvarcomp.h:338
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp.h:170
cvm::real width
CVC-specific default colvar width.
Definition: colvarcomp.h:322
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:666
virtual colvarvalue const * get_param_grad(std::string const &param_name)
Pointer to the gradient of parameter param_name.
Definition: colvarcomp.cpp:400
int setup()
After construction, set data related to dependency handling.
Definition: colvarcomp.cpp:337
virtual int set_param(std::string const &param_name, void const *new_value)
Set the named parameter to the given value.
Definition: colvarcomp.cpp:408
int init_code
Current initialization state; TODO remove this when using init() after default constructor.
Definition: colvarcomp.h:107
colvarvalue const & value() const
Return the previously calculated value.
Definition: colvarcomp.h:326
static std::vector< feature * > cvc_features
Implementation of the feature list for colvar.
Definition: colvarcomp.h:141
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:297
int update_description()
Update the description string based on name and type.
Definition: colvarcomp.cpp:46
std::string name
The name of the object (helps to identify this cvc instance when debugging)
Definition: colvarcomp.h:75
bool b_try_scalable
Whether or not this CVC will be computed in parallel whenever possible.
Definition: colvarcomp.h:271
cvm::real wrap_center
If the component is periodic, wrap around this value (default: 0.0)
Definition: colvarcomp.h:99
virtual void calc_value()=0
Calculate the variable.
virtual void read_data()
Obtain data needed for the calculation for the backend.
Definition: colvarcomp.cpp:434
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
Definition: colvarcomp.cpp:659
colvarvalue x
Cached value.
Definition: colvarcomp.h:288
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp.cpp:524
void calc_fit_gradients()
Calculate the atomic fit gradients.
Definition: colvarcomp.cpp:532
void init_as_periodic_angle()
Set data types for a periodic angle (-180° to 180°)
Definition: colvarcomp.cpp:371
virtual std::vector< std::vector< int > > get_atom_lists()
Get vector of vectors of atom IDs for all atom groups.
Definition: colvarcomp.cpp:456
cvc()
Default constructor (used when colvar::cvc objects are declared within other ones)
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:393
void init_as_angle()
Set data types for a bounded angle (0° to 180°)
Definition: colvarcomp.cpp:364
void init_as_distance()
Set data types for a scalar distance (convenience function)
Definition: colvarcomp.cpp:354
colvarvalue const & total_force() const
Return the previously calculated total force.
Definition: colvarcomp.h:332
virtual void apply_force(colvarvalue const &cvforce)=0
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
colvarvalue x_old
Value at the previous step.
Definition: colvarcomp.h:291
colvarvalue upper_boundary
Location of the upper boundary (not defined by user choice)
Definition: colvarcomp.h:319
colvarvalue lower_boundary
Location of the lower boundary (not defined by user choice)
Definition: colvarcomp.h:316
void init_scalar_boundaries(cvm::real lb, cvm::real ub)
Set two scalar boundaries (convenience function)
Definition: colvarcomp.cpp:380
std::vector< cvm::atom_group * > atom_groups
Pointers to all atom groups, to let colvars collect info e.g. atomic gradients.
Definition: colvarcomp.h:259
std::string config_key
Keyword used in the input to denote this CVC.
Definition: colvarcomp.h:88
virtual const std::vector< feature * > & features() const
Implementation of the feature list accessor for colvar.
Definition: colvarcomp.h:144
cvm::atom_group * parse_group(std::string const &conf, char const *group_key, bool optional=false)
Within the constructor, make a group parse its own options from the provided configuration string Ret...
Definition: colvarcomp.cpp:170
cvm::real period
Period of the values of this CVC (default: 0.0, non periodic)
Definition: colvarcomp.h:96
Colvar component: dihedPC Projection of the config onto a dihedral principal component See e....
Definition: colvarcomp.h:1176
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...
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:459
void calc_value()
Calculate the variable.
Definition: colvarcomp_protein.cpp:439
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_protein.cpp:451
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:482
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...
Colvar component: dihedral between the centers of mass of four groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:844
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:330
cvm::atom_group * group4
Atom group.
Definition: colvarcomp.h:854
cvm::rvector r12
Inter site vectors.
Definition: colvarcomp.h:856
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_angles.cpp:404
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_angles.cpp:435
cvm::atom_group * group1
Atom group.
Definition: colvarcomp.h:848
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:852
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_angles.cpp:478
bool b_1site_force
Compute total force on first site only to avoid unwanted coupling to other colvars (see e....
Definition: colvarcomp.h:860
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_angles.cpp:487
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_angles.cpp:460
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:850
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_angles.cpp:469
dihedral(std::string const &conf)
Initialize by parsing the configuration.
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:301
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_angles.cpp:442
Colvar component: angle between the dipole of a molecule and an axis formed by two groups of atoms(co...
Definition: colvarcomp.h:798
bool b_1site_force
Definition: colvarcomp.h:818
cvm::rvector r21
Inter site vectors.
Definition: colvarcomp.h:809
cvm::real r21l
Inter site vector norms.
Definition: colvarcomp.h:811
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:177
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_angles.cpp:232
cvm::rvector dxdr1
Derivatives wrt group centers of mass.
Definition: colvarcomp.h:813
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...
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
cvm::atom_group * group1
Dipole atom group.
Definition: colvarcomp.h:802
cvm::atom_group * group3
Atom group.
Definition: colvarcomp.h:806
dipole_angle(std::string const &conf)
Initialize by parsing the configuration.
cvm::atom_group * group2
Atom group.
Definition: colvarcomp.h:804
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...
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:201
Colvar component: dipole magnitude of a molecule.
Definition: colvarcomp.h:607
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
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:789
cvm::atom_group * atoms
Dipole atom group.
Definition: colvarcomp.h:610
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:769
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:778
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...
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...
Colvar component: distance unit vector (direction) between centers of mass of two groups (colvarvalue...
Definition: colvarcomp.h:408
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to override the distance ones.
Definition: colvarcomp_distances.cpp:544
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:523
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:513
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to override the distance ones.
Definition: colvarcomp_distances.cpp:537
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:501
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to override the distance ones.
Definition: colvarcomp_distances.cpp:551
Colvar component: average distance between two groups of atoms, weighted as the sixth power,...
Definition: colvarcomp.h:559
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:564
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...
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
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:644
int exponent
Components of the distance vector orthogonal to the axis.
Definition: colvarcomp.h:566
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:562
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:595
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...
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:639
Colvar component: N1xN2 vector of pairwise distances (colvarvalue::type_vector type,...
Definition: colvarcomp.h:587
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:592
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:680
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:717
cvm::atom_group * group1
First atom group.
Definition: colvarcomp.h:590
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:711
Definition: colvarcomp.h:382
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the box periodicity.
Definition: colvarcomp_distances.cpp:162
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the box periodicity.
Definition: colvarcomp_distances.cpp:155
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:120
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the box periodicity.
Definition: colvarcomp_distances.cpp:148
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:131
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:138
Colvar component: projection of the distance vector on a plane (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:474
cvm::rvector dist_v_ortho
Components of the distance vector orthogonal to the axis.
Definition: colvarcomp.h:477
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:416
cvm::rvector v12
Vector distances.
Definition: colvarcomp.h:479
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...
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:464
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
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...
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:392
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:445
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:458
Colvar component: projection of the distance vector along an axis(colvarvalue::type_scalar type,...
Definition: colvarcomp.h:433
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:260
cvm::rvector dist_v
Vector distance, cached to be recycled.
Definition: colvarcomp.h:446
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_distances.cpp:343
cvm::atom_group * main
Main atom group.
Definition: colvarcomp.h:436
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to make use of the user-provided period.
Definition: colvarcomp_distances.cpp:355
bool fixed_axis
Flag: using a fixed axis vector?
Definition: colvarcomp.h:448
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_distances.cpp:331
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:286
cvm::real axis_norm
Norm of the axis.
Definition: colvarcomp.h:444
cvm::atom_group * ref1
Reference atom group.
Definition: colvarcomp.h:438
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
Definition: colvarcomp_distances.cpp:319
cvm::atom_group * ref2
Optional, second ref atom group.
Definition: colvarcomp.h:440
cvm::rvector axis
Vector on which the distance vector is projected.
Definition: colvarcomp.h:442
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:230
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:305
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:299
Colvar component: distance between the centers of mass of two groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:350
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:86
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...
cvm::atom_group * group2
Second atom group.
Definition: colvarcomp.h:355
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:80
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...
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:357
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:68
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:353
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
Colvar component: projection of 3N coordinates onto an eigenvector(colvarvalue::type_scalar type,...
Definition: colvarcomp.h:712
std::vector< cvm::atom_pos > ref_pos
Reference coordinates.
Definition: colvarcomp.h:719
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:1433
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...
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1452
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:1416
eigenvector(std::string const &conf)
Constructor.
std::vector< cvm::rvector > eigenvec
Eigenvector (of a normal or essential mode): will always have zero center.
Definition: colvarcomp.h:722
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:716
cvm::real eigenvec_invnorm2
Inverse square norm of the eigenvector.
Definition: colvarcomp.h:725
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1425
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...
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1440
Definition: colvarcomp.h:1362
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:523
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_rotations.cpp:564
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_rotations.cpp:573
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
Definition: colvarcomp_rotations.cpp:555
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_rotations.cpp:582
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:506
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:498
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:546
Definition: colvarcomp.h:1384
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_rotations.cpp:683
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:617
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:642
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_rotations.cpp:701
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:665
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:625
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_rotations.cpp:692
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
Definition: colvarcomp_rotations.cpp:674
Definition: colvarcomp.h:1406
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:759
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
Definition: colvarcomp_rotations.cpp:791
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:736
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:782
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_rotations.cpp:807
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_rotations.cpp:799
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:744
Colvar component: coordination number between two groups (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:1018
cvm::rvector r0_vec
"Cutoff vector" for anisotropic calculation
Definition: colvarcomp.h:1023
bool b_anisotropic
Wheter dist/r0 or \vec{dist}*\vec{1/r0_vec} should ne be used.
Definition: colvarcomp.h:1026
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:1028
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:1030
groupcoordnum(std::string const &conf)
Constructor.
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
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...
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:595
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...
cvm::real r0
"Cutoff" for isotropic calculation (default)
Definition: colvarcomp.h:1021
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_coordnums.cpp:644
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:618
Colvar component: alternative path collective variable using geometry, variable s Allow any combinati...
Definition: colvarcomp.h:1691
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_gpath.cpp:650
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_gpath.cpp:681
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_gpath.cpp:645
Colvar component: alternative path collective variable using geometry, variable s For more informatio...
Definition: colvarcomp.h:1577
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_gpath.cpp:272
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_gpath.cpp:267
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_gpath.cpp:293
Colvar component: Radius of gyration of an atom group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:637
cvm::atom_group * atoms
Atoms involved.
Definition: colvarcomp.h:640
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:821
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:840
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...
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:831
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
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...
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:853
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:859
Definition: colvarcomp.h:1707
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_gpath.cpp:810
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_gpath.cpp:778
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_gpath.cpp:783
Colvar component: alternative path collective variable using geometry, variable z This should be merg...
Definition: colvarcomp.h:1598
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_gpath.cpp:410
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_gpath.cpp:415
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_gpath.cpp:426
Colvar component: hydrogen bond, defined as the product of a colvar::coordnum and 1/2*(1-cos((180-ang...
Definition: colvarcomp.h:1054
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:1061
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...
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_coordnums.cpp:387
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:364
cvm::real r0
"Cutoff" distance between acceptor and donor
Definition: colvarcomp.h:1057
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...
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:1059
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:376
Colvar component: moment of inertia of an atom group around a user-defined axis (colvarvalue::type_sc...
Definition: colvarcomp.h:686
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
inertia_z(std::string const &conf)
Constructor.
cvm::rvector axis
Vector on which the inertia tensor is projected.
Definition: colvarcomp.h:689
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:942
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:924
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...
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:934
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...
Colvar component: moment of inertia of an atom group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:663
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:878
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_distances.cpp:895
inertia(std::string const &conf)
Constructor.
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:887
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...
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...
Current only linear combination of sub-CVCs is available.
Definition: colvarcomp.h:1617
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:110
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_combination.cpp:80
std::vector< colvar::cvc * > cv
Sub-colvar components.
Definition: colvarcomp.h:1620
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_combination.cpp:94
bool use_explicit_gradients
If all sub-cvs use explicit gradients then we also use it.
Definition: colvarcomp.h:1622
Definition: colvarcomp.h:1805
std::string volmap_name
String identifier of the map object (as used by the simulation engine)
Definition: colvarcomp.h:1819
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_volmaps.cpp:103
int volmap_index
Index of the map objet in the proxy arrays.
Definition: colvarcomp.h:1825
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:133
cvm::atom_group * atoms
Group of atoms selected internally (optional)
Definition: colvarcomp.h:1828
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_volmaps.cpp:127
virtual int init(std::string const &conf)
Definition: colvarcomp_volmaps.cpp:40
std::vector< cvm::real > atom_weights
Weights assigned to each atom (default: uniform weights)
Definition: colvarcomp.h:1831
int volmap_id
Numeric identifier of the map object (as used by the simulation engine)
Definition: colvarcomp.h:1822
Definition: colvarcomp.h:1786
size_t m_output_index
the index of nn output components
Definition: colvarcomp.h:1791
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_neuralnetwork.cpp:142
std::unique_ptr< neuralnetworkCV::neuralNetworkCompute > nn
actual computation happens in neuralnetworkCV::neuralNetworkCompute
Definition: colvarcomp.h:1789
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_neuralnetwork.cpp:159
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:176
Colvar component: angle of rotation with respect to a set of reference coordinates (colvarvalue::type...
Definition: colvarcomp.h:1257
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:190
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:196
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:211
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:227
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
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...
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...
Colvar component: cosine of the angle of rotation with respect to a set of reference coordinates (col...
Definition: colvarcomp.h:1281
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...
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:251
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:278
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:257
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
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...
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:266
Colvar component: orientation in space of an atom group, with respect to a set of reference coordinat...
Definition: colvarcomp.h:1208
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:141
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
Definition: colvarcomp_rotations.cpp:158
cvm::rotation rot
Rotation object.
Definition: colvarcomp.h:1223
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:132
std::vector< cvm::atom_pos > shifted_pos
Shifted atomic positions.
Definition: colvarcomp.h:1220
cvm::atom_pos atoms_cog
Center of geometry of the group.
Definition: colvarcomp.h:1214
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_rotations.cpp:172
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_rotations.cpp:165
std::vector< cvm::atom_pos > ref_pos
Reference coordinates.
Definition: colvarcomp.h:1217
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:1227
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:38
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1212
Colvar component: polar coordinate phi of a group (colvarvalue::type_scalar type, range [-180:180])
Definition: colvarcomp.h:502
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_angles.cpp:601
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_angles.cpp:592
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:572
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_angles.cpp:619
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_angles.cpp:610
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_angles.cpp:628
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:583
Colvar component: polar coordinate theta of a group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:532
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to override the distance ones.
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to override the distance ones.
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to override the distance ones.
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_angles.cpp:543
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_angles.cpp:520
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_angles.cpp:531
Colvar component: root mean square deviation (RMSD) of a group with respect to a set of reference coo...
Definition: colvarcomp.h:1432
size_t best_perm_index
Index of the permutation yielding the smallest RMSD (0 for identity)
Definition: colvarcomp.h:1446
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_distances.cpp:1116
virtual void calc_Jacobian_derivative()
Calculate the divergence of the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1151
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...
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:1130
std::vector< cvm::atom_pos > ref_pos
Definition: colvarcomp.h:1440
cvm::atom_group * atoms
Atom group.
Definition: colvarcomp.h:1436
size_t n_permutations
Number of permutations of symmetry-related atoms.
Definition: colvarcomp.h:1443
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
virtual void calc_force_invgrads()
Calculate the total force from the system using the inverse atomic gradients.
Definition: colvarcomp_distances.cpp:1137
rmsd(std::string const &conf)
Constructor.
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...
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_distances.cpp:1089
Colvar component: self-coordination number within a group (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:978
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
cvm::atom_group * group1
Selected atoms.
Definition: colvarcomp.h:982
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_coordnums.cpp:523
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...
virtual void apply_force(colvarvalue const &force)
Apply the collective variable force, by communicating the atomic forces to the simulation program (No...
Definition: colvarcomp_coordnums.cpp:529
int compute_selfcoordnum()
Main workhorse function.
Definition: colvarcomp_coordnums.cpp:450
int ed
Integer exponent of the function denominator.
Definition: colvarcomp.h:988
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_coordnums.cpp:512
cvm::real r0
"Cutoff" for isotropic calculation (default)
Definition: colvarcomp.h:984
int en
Integer exponent of the function numerator.
Definition: colvarcomp.h:986
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...
Colvar component: angle of rotation around a predefined axis (colvarvalue::type_scalar type,...
Definition: colvarcomp.h:1332
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_rotations.cpp:436
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:426
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:398
virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_rotations.cpp:445
virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_rotations.cpp:454
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:371
virtual void wrap(colvarvalue &x_unwrapped) const
Redefined to handle the 2*PI periodicity.
Definition: colvarcomp_rotations.cpp:463
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:410
Colvar component: projection of the orientation vector onto a predefined axis (colvarvalue::type_scal...
Definition: colvarcomp.h:1305
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:346
virtual void calc_gradients()
Calculate the atomic gradients, to be reused later in order to apply forces.
Definition: colvarcomp_rotations.cpp:330
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...
virtual int init(std::string const &conf)
Definition: colvarcomp_rotations.cpp:303
virtual void calc_value()
Calculate the variable.
Definition: colvarcomp_rotations.cpp:319
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...
virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const
Square distance between x1 and x2 (can be redefined to transparently implement constraints,...
std::vector< cvm::rvector > atomic_gradients
Array of atomic gradients collected from all cvcs with appropriate components, rotations etc....
Definition: colvar.h:709
colvarvalue ft
Total force, as derived from the atomic trajectory; should equal the system force plus f.
Definition: colvar.h:222
std::vector< int > atom_ids
Sorted array of (zero-based) IDs for all atoms involved.
Definition: colvar.h:704
Parent class for a member object of a bias, cv or cvc etc. containing features and their dependencies...
Definition: colvardeps.h:34
Group of atom objects, mostly used by a colvar::cvc object to gather all atomic data.
Definition: colvaratoms.h:159
Stores numeric id, mass and all mutable data for an atom, mostly used by a colvar::cvc.
Definition: colvaratoms.h:31
1-dimensional vector of real numbers with four components and a quaternion algebra
Definition: colvartypes.h:958
A rotation between two sets of coordinates (for the moment a wrapper for colvarmodule::quaternion)
Definition: colvartypes.h:1314
vector of real numbers with three components
Definition: colvartypes.h:727
double real
Defining an abstract real number allows to switch precision.
Definition: colvarmodule.h:87
static int error(std::string const &message, int code=-1)
Print a message to the main log and set global error code.
Definition: colvarmodule.cpp:2011
Base class containing parsing functions; all objects which need to parse input inherit from this.
Definition: colvarparse.h:27
Value of a collective variable: this is a metatype which can be set at runtime. By default it is set ...
Definition: colvarvalue.h:43
Collective variables main module.
Definition: colvarcomp_apath.cpp:22
Definition: colvarcomp_rotations.cpp:17