From 1c4bf10f19498c9bbf7a03a064a93a7272b90cb9 Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Thu, 14 Nov 2024 10:40:39 -0500 Subject: [PATCH] Squashed merge of master branch --- README.md | 2 +- doc/colvars-code-refs.bib | 14 +++ doc/colvars-refman-main.tex | 13 ++- doc/cv_version.tex | 2 +- doc/doxygen/Doxyfile | 2 +- .../tests/interface/010_MPI_multi-sim/run.sh | 2 +- .../tests/interface/011_MPI_mwABF/README.md | 20 ++++ .../interface/011_MPI_mwABF/a/system.mdp | 56 ++++++++++ .../interface/011_MPI_mwABF/a/test.colvars | 1 + .../tests/interface/011_MPI_mwABF/a/test.tpr | Bin 0 -> 134360 bytes .../interface/011_MPI_mwABF/b/system.mdp | 56 ++++++++++ .../interface/011_MPI_mwABF/b/test.colvars | 1 + .../tests/interface/011_MPI_mwABF/b/test.tpr | Bin 0 -> 134360 bytes .../interface/011_MPI_mwABF/c/system.mdp | 56 ++++++++++ .../interface/011_MPI_mwABF/c/test.colvars | 1 + .../tests/interface/011_MPI_mwABF/c/test.tpr | Bin 0 -> 134360 bytes .../tests/interface/011_MPI_mwABF/cleanup.sh | 14 +++ .../interface/011_MPI_mwABF/d/system.mdp | 56 ++++++++++ .../interface/011_MPI_mwABF/d/test.colvars | 1 + .../tests/interface/011_MPI_mwABF/d/test.tpr | Bin 0 -> 134360 bytes gromacs/tests/interface/011_MPI_mwABF/run.sh | 53 +++++++++ gromacs/tests/interface/run_tests.sh | 29 +++-- src/colvar.cpp | 70 ++++++++---- src/colvar.h | 12 +++ src/colvar_rotation_derivative.h | 102 ++++++++---------- src/colvaratoms.cpp | 20 ++-- src/colvaratoms.h | 56 +++++++++- src/colvarbias_abf.cpp | 20 ++-- src/colvarcomp.cpp | 6 +- src/colvarcomp_distances.cpp | 4 +- src/colvarcomp_rotations.cpp | 16 +-- src/colvarmodule.cpp | 15 ++- src/colvarmodule_refs.h | 20 ++++ src/colvars_version.h | 2 +- src/colvartypes.cpp | 65 ----------- src/colvartypes.h | 53 ++++++++- 36 files changed, 637 insertions(+), 203 deletions(-) create mode 100644 gromacs/tests/interface/011_MPI_mwABF/README.md create mode 100644 gromacs/tests/interface/011_MPI_mwABF/a/system.mdp create mode 120000 gromacs/tests/interface/011_MPI_mwABF/a/test.colvars create mode 100644 gromacs/tests/interface/011_MPI_mwABF/a/test.tpr create mode 100644 gromacs/tests/interface/011_MPI_mwABF/b/system.mdp create mode 120000 gromacs/tests/interface/011_MPI_mwABF/b/test.colvars create mode 100644 gromacs/tests/interface/011_MPI_mwABF/b/test.tpr create mode 100644 gromacs/tests/interface/011_MPI_mwABF/c/system.mdp create mode 120000 gromacs/tests/interface/011_MPI_mwABF/c/test.colvars create mode 100644 gromacs/tests/interface/011_MPI_mwABF/c/test.tpr create mode 100755 gromacs/tests/interface/011_MPI_mwABF/cleanup.sh create mode 100644 gromacs/tests/interface/011_MPI_mwABF/d/system.mdp create mode 120000 gromacs/tests/interface/011_MPI_mwABF/d/test.colvars create mode 100644 gromacs/tests/interface/011_MPI_mwABF/d/test.tpr create mode 100755 gromacs/tests/interface/011_MPI_mwABF/run.sh diff --git a/README.md b/README.md index 874d278c4..f72a738cf 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ All of the above MD engine versions are automatically tested as part of GitHub A ## Legacy GROMACS-Colvars patched releases -Versions GROMACS prior to 2024 are no longer supported by the current version of Colvars: please use GROMACS 2024 or later. +Versions of GROMACS prior to 2024 are no longer supported by the current version of Colvars: please use GROMACS 2024 or later. ## Which version of Colvars is recommended? diff --git a/doc/colvars-code-refs.bib b/doc/colvars-code-refs.bib index 205e3f304..efda6d9c1 100644 --- a/doc/colvars-code-refs.bib +++ b/doc/colvars-code-refs.bib @@ -144,6 +144,20 @@ @article{Fiorin2020 url = {https://doi.org/10.1002/jcc.26075} } +% Updated multiple-walker ABF implementation +@article{Fiorin2024, + author = {Fiorin, Giacomo and Marinelli, Fabrizio and Forrest, Lucy R. and Chen, Haochuan and Chipot, Christophe and Kohlmeyer, Axel and Santuz, Hubert and H{\'e}nin, J{\'e}rôme}, + title = {Expanded Functionality and Portability for the Colvars Library}, + journal = {J. Phys. Chem. {B}}, + volume = {0}, + number = {0}, + pages = {null}, + year = {2024}, + doi = {10.1021/acs.jpcb.4c05604}, + pmid = 39501453, + url = { https://doi.org/10.1021/acs.jpcb.4c05604} +} + % Umbrella-integration eABF estimator @article{Fu2016, author = {Fu, Haohao and Shao, Xueguang and Chipot, Christophe and Cai, Wensheng}, diff --git a/doc/colvars-refman-main.tex b/doc/colvars-refman-main.tex index 454070c72..978dbf594 100644 --- a/doc/colvars-refman-main.tex +++ b/doc/colvars-refman-main.tex @@ -5616,13 +5616,12 @@ } \end{itemize} -\cvnamdonly{ \cvsubsubsec{Multiple-walker ABF}{sec:colvarbias_abf_shared} \label{sec:mw-ABF} -This implements the multiple-walker ABF scheme described in \cite{Minoukadeh2010}. The reference for this -implementation is \cite{Comer2014c}. -This feature requires that \MDENGINE be compiled and executed with multiple-replica +This implements the multiple-walker ABF scheme described in \cite{Minoukadeh2010}. The references for this +implementation are \cite{Comer2014c} and \cite{Fiorin2024}. +This feature requires that \MDENGINE{} be compiled and executed with multiple-replica support. If \refkey{shared}{abf|shared} is enabled, the total force samples will be synchronized among all replicas @@ -5632,14 +5631,15 @@ Thus, it is as if total force samples among all replicas are gathered in a single shared buffer. Shared ABF allows all replicas to benefit from the sampling done by other replicas and can lead to faster convergence of the biasing force. +\cvnamdonly{ An implementation of the selection mechanism described in \cite{Comer2014c} is provided as a set of Tcl scripts in \texttt{colvartools/mwABF\_selection.tcl} in the Colvars repository. Compared with the initial implementation, the current implementation supports selection on sets of up to 3 colvars. To reduce noise, samples can be counted in a hybercube around the current bin (see Tcl script for details). A set of example NAMD inputs can be found in the \texttt{namd/tests/library/multiple\_walker\_abf} directory. - +} % end of \cvnamdonly \paragraph{Output files of multiple-walker ABF.} -In multiple-walker ABF runs, each walker now outputs gradient and count files containing only data collected locally (this is a change in version 2024-01-06). +In multiple-walker ABF runs, since Colvars version 2024-01-06, each walker outputs gradient and count files containing only data collected locally. In addition, the first walker outputs the collected data using the common prefix, with an additional \texttt{".all"} string (i.e. file names ending with \texttt{".all.count"}, \texttt{".all.grad"} etc.). @@ -5665,7 +5665,6 @@ Because this forces the replicas to synchronize, small values of this parameter may slightly reduce the overall throughput, especially on systems with unequal performance. } \end{itemize} -} \cvsubsubsec{Output files}{sec:colvarbias_abf_output} diff --git a/doc/cv_version.tex b/doc/cv_version.tex index 93608f1f4..feaa6ffcc 100644 --- a/doc/cv_version.tex +++ b/doc/cv_version.tex @@ -1 +1 @@ -\newcommand{\cvversion}{2024-11-08} +\newcommand{\cvversion}{2024-11-13} diff --git a/doc/doxygen/Doxyfile b/doc/doxygen/Doxyfile index 18d638d0e..df85e5377 100644 --- a/doc/doxygen/Doxyfile +++ b/doc/doxygen/Doxyfile @@ -1420,7 +1420,7 @@ FORMULA_TRANSPARENT = YES # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -USE_MATHJAX = NO +USE_MATHJAX = YES # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: diff --git a/gromacs/tests/interface/010_MPI_multi-sim/run.sh b/gromacs/tests/interface/010_MPI_multi-sim/run.sh index 261f1eb0f..106ef96c3 100755 --- a/gromacs/tests/interface/010_MPI_multi-sim/run.sh +++ b/gromacs/tests/interface/010_MPI_multi-sim/run.sh @@ -42,5 +42,5 @@ done # cp -f a/test.colvars.traj a/test.colvars.state . # cp -f a/test.log ./test.out -echo " Success!" +echo " Done." diff --git a/gromacs/tests/interface/011_MPI_mwABF/README.md b/gromacs/tests/interface/011_MPI_mwABF/README.md new file mode 100644 index 000000000..7212426ed --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/README.md @@ -0,0 +1,20 @@ +## Gromacs mwABF regression test + +This directory contains a test for multiple-walker ABF in Colvars/Gromacs. + + +### Version tested + +The tests are valid against Gromacs version 2024.3 and following. + + +### Files tested + +Only the traj files of the simulation **a** is being tested. + + +### Scripts + + - `create_tpr.sh` is used to generate the .tpr + - `run.sh` is called by a `run_tests.sh` script to run the REMD simulation + - `cleanup.sh` is called by a `run_tests.sh` to clean the simulations files in the subfolders. diff --git a/gromacs/tests/interface/011_MPI_mwABF/a/system.mdp b/gromacs/tests/interface/011_MPI_mwABF/a/system.mdp new file mode 100644 index 000000000..3ddc96919 --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/a/system.mdp @@ -0,0 +1,56 @@ +;Run control +integrator = md-vv +;time step in picoseconds +dt = 0.002 +;number of steps +nsteps = 50 +;no trr +nstxout = 0 +nstvout = 0 +nstfout = 0 +;frequency to write energies to log file +nstlog = 1 +;frequency to write energies to energy file +nstenergy = 1 +nstcalcenergy = 1 +;frequency to write coordinates to xtc trajectory +nstxout-compressed = 1 + +cutoff-scheme = verlet + + +; Periodic boundary conditions +pbc = xyz ; 3-D PBC + +; Bond parameters +constraint_algorithm = lincs +constraints = h-bonds + + + +;treatment of van der waals interactions +vdwtype = cut-off +vdw-modifier = Potential-switch +rvdw = 1.2 +rvdw-switch = 1.0 + +coulombtype = PME +rcoulomb = 1.2 +pme_order = 4 ; cubic interpolation +fourierspacing = 0.12 ; grid spacing for FFT + +;Temperature coupling +tcoupl = v-rescale +tc-grps = System +ref-t = 300 +tau-t = 1 +ld-seed = 1 + +; pressure coupling +pcoupl = no + +gen-vel = no + +colvars-active = yes +colvars-configfile = test.colvars + diff --git a/gromacs/tests/interface/011_MPI_mwABF/a/test.colvars b/gromacs/tests/interface/011_MPI_mwABF/a/test.colvars new file mode 120000 index 000000000..a3d39cf89 --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/a/test.colvars @@ -0,0 +1 @@ +../test.colvars \ No newline at end of file diff --git a/gromacs/tests/interface/011_MPI_mwABF/a/test.tpr b/gromacs/tests/interface/011_MPI_mwABF/a/test.tpr new file mode 100644 index 0000000000000000000000000000000000000000..38bc5dfa7784f79762cbcab3f727c54baeb3edd3 GIT binary patch literal 134360 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 literal 0 HcmV?d00001 diff --git a/gromacs/tests/interface/011_MPI_mwABF/b/system.mdp b/gromacs/tests/interface/011_MPI_mwABF/b/system.mdp new file mode 100644 index 000000000..ef67b7d5e --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/b/system.mdp @@ -0,0 +1,56 @@ +;Run control +integrator = md-vv +;time step in picoseconds +dt = 0.002 +;number of steps +nsteps = 50 +;no trr +nstxout = 0 +nstvout = 0 +nstfout = 0 +;frequency to write energies to log file +nstlog = 1 +;frequency to write energies to energy file +nstenergy = 1 +nstcalcenergy = 1 +;frequency to write coordinates to xtc trajectory +nstxout-compressed = 1 + +cutoff-scheme = verlet + + +; Periodic boundary conditions +pbc = xyz ; 3-D PBC + +; Bond parameters +constraint_algorithm = lincs +constraints = h-bonds + + + +;treatment of van der waals interactions +vdwtype = cut-off +vdw-modifier = Potential-switch +rvdw = 1.2 +rvdw-switch = 1.0 + +coulombtype = PME +rcoulomb = 1.2 +pme_order = 4 ; cubic interpolation +fourierspacing = 0.12 ; grid spacing for FFT + +;Temperature coupling +tcoupl = v-rescale +tc-grps = System +ref-t = 300 +tau-t = 1 +ld-seed = 2 + +; pressure coupling +pcoupl = no + +gen-vel = no + +colvars-active = yes +colvars-configfile = test.colvars + diff --git a/gromacs/tests/interface/011_MPI_mwABF/b/test.colvars b/gromacs/tests/interface/011_MPI_mwABF/b/test.colvars new file mode 120000 index 000000000..a3d39cf89 --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/b/test.colvars @@ -0,0 +1 @@ +../test.colvars \ No newline at end of file diff --git a/gromacs/tests/interface/011_MPI_mwABF/b/test.tpr b/gromacs/tests/interface/011_MPI_mwABF/b/test.tpr new file mode 100644 index 0000000000000000000000000000000000000000..1c8e5f347f7c1e1dec5d949a43a151bfee79fa37 GIT binary patch literal 134360 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 literal 0 HcmV?d00001 diff --git a/gromacs/tests/interface/011_MPI_mwABF/c/system.mdp b/gromacs/tests/interface/011_MPI_mwABF/c/system.mdp new file mode 100644 index 000000000..cc848237c --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/c/system.mdp @@ -0,0 +1,56 @@ +;Run control +integrator = md-vv +;time step in picoseconds +dt = 0.002 +;number of steps +nsteps = 50 +;no trr +nstxout = 0 +nstvout = 0 +nstfout = 0 +;frequency to write energies to log file +nstlog = 1 +;frequency to write energies to energy file +nstenergy = 1 +nstcalcenergy = 1 +;frequency to write coordinates to xtc trajectory +nstxout-compressed = 1 + +cutoff-scheme = verlet + + +; Periodic boundary conditions +pbc = xyz ; 3-D PBC + +; Bond parameters +constraint_algorithm = lincs +constraints = h-bonds + + + +;treatment of van der waals interactions +vdwtype = cut-off +vdw-modifier = Potential-switch +rvdw = 1.2 +rvdw-switch = 1.0 + +coulombtype = PME +rcoulomb = 1.2 +pme_order = 4 ; cubic interpolation +fourierspacing = 0.12 ; grid spacing for FFT + +;Temperature coupling +tcoupl = v-rescale +tc-grps = System +ref-t = 300 +tau-t = 1 +ld-seed = 3 + +; pressure coupling +pcoupl = no + +gen-vel = no + +colvars-active = yes +colvars-configfile = test.colvars + diff --git a/gromacs/tests/interface/011_MPI_mwABF/c/test.colvars b/gromacs/tests/interface/011_MPI_mwABF/c/test.colvars new file mode 120000 index 000000000..a3d39cf89 --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/c/test.colvars @@ -0,0 +1 @@ +../test.colvars \ No newline at end of file diff --git a/gromacs/tests/interface/011_MPI_mwABF/c/test.tpr b/gromacs/tests/interface/011_MPI_mwABF/c/test.tpr new file mode 100644 index 0000000000000000000000000000000000000000..47aaa0031e6f21531c945e1cbb9deb7153cafe05 GIT binary patch literal 134360 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 a&pt5zJg!(zcI#wV^LcRt{9MKt2lGFdH!-gO literal 0 HcmV?d00001 diff --git a/gromacs/tests/interface/011_MPI_mwABF/cleanup.sh b/gromacs/tests/interface/011_MPI_mwABF/cleanup.sh new file mode 100755 index 000000000..3d409bb4b --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/cleanup.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# -*- sh-basic-offset: 2; sh-indentation: 2; -*- + +# Script to remove simulations files +# Called by `run_tests.sh` scripts + +echo "Cleaning up output files" +for i in a b c d +do + cd $i + rm -f *.xtc *.trr *.edr *.cpt *.gro *.log *~ \#*\# mdout.mdp + rm -f *.state *.old *.traj *.zcount + cd .. +done diff --git a/gromacs/tests/interface/011_MPI_mwABF/d/system.mdp b/gromacs/tests/interface/011_MPI_mwABF/d/system.mdp new file mode 100644 index 000000000..393774992 --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/d/system.mdp @@ -0,0 +1,56 @@ +;Run control +integrator = md-vv +;time step in picoseconds +dt = 0.002 +;number of steps +nsteps = 50 +;no trr +nstxout = 0 +nstvout = 0 +nstfout = 0 +;frequency to write energies to log file +nstlog = 1 +;frequency to write energies to energy file +nstenergy = 1 +nstcalcenergy = 1 +;frequency to write coordinates to xtc trajectory +nstxout-compressed = 1 + +cutoff-scheme = verlet + + +; Periodic boundary conditions +pbc = xyz ; 3-D PBC + +; Bond parameters +constraint_algorithm = lincs +constraints = h-bonds + + + +;treatment of van der waals interactions +vdwtype = cut-off +vdw-modifier = Potential-switch +rvdw = 1.2 +rvdw-switch = 1.0 + +coulombtype = PME +rcoulomb = 1.2 +pme_order = 4 ; cubic interpolation +fourierspacing = 0.12 ; grid spacing for FFT + +;Temperature coupling +tcoupl = v-rescale +tc-grps = System +ref-t = 300 +tau-t = 1 +ld-seed = 4 + +; pressure coupling +pcoupl = no + +gen-vel = no + +colvars-active = yes +colvars-configfile = test.colvars + diff --git a/gromacs/tests/interface/011_MPI_mwABF/d/test.colvars b/gromacs/tests/interface/011_MPI_mwABF/d/test.colvars new file mode 120000 index 000000000..a3d39cf89 --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/d/test.colvars @@ -0,0 +1 @@ +../test.colvars \ No newline at end of file diff --git a/gromacs/tests/interface/011_MPI_mwABF/d/test.tpr b/gromacs/tests/interface/011_MPI_mwABF/d/test.tpr new file mode 100644 index 0000000000000000000000000000000000000000..69445dc58f0c97412dcf5e4d1aa1d7720b46e3f7 GIT binary patch literal 134360 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�B`O@%8S~_uR`|OkeAC%)`X%G)LR>#-Wo* z+-xtZBlFKNz~(yUzrEphnQQj9cW=#F#6xK^d;Z(zaz~m@HNVN_?P(Js+x+iuJ(B}* z13R2*wc<<9Dn+p?la)G43$k^{igeT1cde2yE1p4_QD}Y*8%>Id-MFlCa%Z+gfh;?d zp^fRi856%8+>^1P{{h#(>A}|jgeSwqPy4NM&G$5M6F;a`oYap(^V|+YLj7xX+|=)r zYbm7(Uyh?%H9@ki8b_)0LnI&3b@&x0Hnj%QNouj=oDcb7C}T_K_iAp6{BxW%3aq3W zOULuWvb90_<=&KwwA4af5wdnv&Gp^ac$CD{*zsuw3t(dH2U# zsUOI3%1vth%%s;ZrBFa|au-t0*I>R~H1Z1w0 zIHzrWFoAbkSNA8W4DhIFx(=E4Mjlt*v}(yR;AX53>I7vpPz7Di?RDa^^ckYB9lA2= zHs94OWKc}QHaDvDIdLXLSW<9HIZwOhvXWmm&*aC=Ol6YJM_D|nIg!%ybAqiU469LU zXuyJvYetE}^dRzNC13Hh3^KpULt>U5A$@v0COstV>YY2o539AbX9^O|%&O|i@^x{; z`N?@?_f*IQQz4(vBU!Z023ZV?X|k=>EE1NHvGHj$h?AmjcHp>)rff$2HL>&B@>s5~ z=~2^P>}m(RxVgQke`e$qy&fYRk_;d>rZUtr>Sd>F#-$$S#VDMBSzggnrIs;iv2%Xc z1l$_U{!1Y@irt-^?HM*3%JsaJXoHNGM77X!V$&egj9RsthjnH^&o}bNm1wHTmvu>3 z4q$+$@hfVsFT`$x#Q?ZOCRz$0oEX@#G+PB<~a&8pG zUedGjl^*lpET`+lnt=`7h{D{$B$sB`Kesx2p0l=uLg>p0JyohzDyyBq$jf3EQ7qBJ zQ+nKClrnv9@LPCYKbLt(Q#VdE|18a3VzFl5R!_W3$|KJ%kX40ew~#tVL&!eN6L%?a evS&AuXCD}U7FVn%yEQVXdc3#+ekSAdgZXbnIWfZk literal 0 HcmV?d00001 diff --git a/gromacs/tests/interface/011_MPI_mwABF/run.sh b/gromacs/tests/interface/011_MPI_mwABF/run.sh new file mode 100755 index 000000000..8c3170106 --- /dev/null +++ b/gromacs/tests/interface/011_MPI_mwABF/run.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# -*- sh-basic-offset: 2; sh-indentation: 2; -*- + +# Script to launch the REMD regression tests +# It's best to have Gromacs compiled in double precision +# Reference files have been generated with Gromacs version 2024-dev + +echo -n "Running $(basename $PWD)..." + +#set -e + +# if script called from `run_tests.sh` in the parent folder, retrieve the correct command binary from the argument +if [ -x "$1" ] +then + BINARY=$1 +else + BINARY="gmx_mpi_d" +fi + +for i in a b c d +do + cd $i + $BINARY grompp -f system.mdp -p ../../Common/system.top -c ../../Common/system.gro -o test.tpr &> grompp.log + cd .. +done + +mpirun -np 16 -oversubscribe $BINARY mdrun -multidir a b c d -s test.tpr -deffnm test -reseed 376 >& test.out + +labels=(a b c d) +for number in $(seq 1 ${#labels[@]}) ; do + index=$((${number} - 1)) + label=${labels[${index}]} + replica_msg=$(grep -s "colvars: Enabling multiple replicas: this is replica number" ${label}/test.log) + if [ -z "${replica_msg}" ] ; then + echo "Error: missing replica initialization message." >& 2 + exit 1 + fi + replica_num=$(echo ${replica_msg} | cut -d' ' -f 9) + replicas_count=$(echo ${replica_msg} | cut -d' ' -f 11) + replicas_count=${replicas_count%.} + if [ ${replicas_count} != 4 ] || [ ${replica_num} != ${number} ] ; then + echo -e "Error: wrong initialization for replica number ${number}; got the following message:\n\n${replica_msg}\n" >& 2 + exit 1 + fi +done + +# Copy result files to be tested in the main folder +cp a/test.colvars.traj a/test.colvars.state . +cp a/test.log ./test.out +cp a/test.all.czar.pmf ./test.all.czar.pmf + +echo " Done." + diff --git a/gromacs/tests/interface/run_tests.sh b/gromacs/tests/interface/run_tests.sh index 913ec3d2e..bd1053902 100755 --- a/gromacs/tests/interface/run_tests.sh +++ b/gromacs/tests/interface/run_tests.sh @@ -6,11 +6,19 @@ if [ ! -d ${TOPDIR} ] ; then exit 1 fi +MPI_TESTS=[0-9][0-9][0-9]_MPI_* + tests=([0-9][0-9][0-9]_*) -tests=(${tests[@]/010_MPI_multi-sim}) + +for DIR in $MPI_TESTS +do + tests=(${tests[@]/$DIR}) +done ALL_SUCCESS=1 +echo "Running tests ${tests[@]}" + ../library/run_tests.sh $1 ${tests[@]} if [ $? -ne 0 ] @@ -20,14 +28,17 @@ fi # Run tests that depend on an MPI build if source ${TOPDIR}/devel-tools/load-openmpi.sh ; then - if pushd 010_MPI_multi-sim > /dev/null ; then - ./run.sh $1 - if [ $? -ne 0 ] - then - ALL_SUCCESS=0 - fi - popd > /dev/null - fi + for DIR in $MPI_TESTS + do + if pushd $DIR > /dev/null ; then + ./run.sh $1 + if [ $? -ne 0 ] + then + ALL_SUCCESS=0 + fi + popd > /dev/null + fi + done fi diff --git a/src/colvar.cpp b/src/colvar.cpp index ce974cc39..7e85eeb3b 100644 --- a/src/colvar.cpp +++ b/src/colvar.cpp @@ -502,8 +502,6 @@ int colvar::init_grid_parameters(std::string const &conf) { int error_code = COLVARS_OK; - colvarmodule *cv = cvm::main(); - cvm::real default_width = width; if (!key_already_set("width")) { @@ -529,34 +527,68 @@ int colvar::init_grid_parameters(std::string const &conf) if (is_enabled(f_cv_scalar)) { - if (is_enabled(f_cv_single_cvc)) { - // Get the default boundaries from the component + // Record the CVC's intrinsic boundaries, and set them as default values for the user's choice + colvarvalue cvc_lower_boundary, cvc_upper_boundary; + + if (is_enabled(f_cv_single_cvc)) { // Get the intrinsic boundaries of the CVC + if (cvcs[0]->is_enabled(f_cvc_lower_boundary)) { enable(f_cv_lower_boundary); enable(f_cv_hard_lower_boundary); - lower_boundary = + lower_boundary = cvc_lower_boundary = *(reinterpret_cast(cvcs[0]->get_param_ptr("lowerBoundary"))); } + if (cvcs[0]->is_enabled(f_cvc_upper_boundary)) { enable(f_cv_upper_boundary); enable(f_cv_hard_upper_boundary); - upper_boundary = - *(reinterpret_cast(cvcs[0]->get_param_ptr("upperBoundary"))); + upper_boundary = cvc_upper_boundary = + *(reinterpret_cast(cvcs[0]->get_param_ptr("upperBoundary"))); } } if (get_keyval(conf, "lowerBoundary", lower_boundary, lower_boundary)) { enable(f_cv_lower_boundary); - // Because this is the user's choice, we cannot assume it is a true - // physical boundary - disable(f_cv_hard_lower_boundary); + if (is_enabled(f_cv_single_cvc) && is_enabled(f_cv_hard_lower_boundary)) { + if (cvm::sqrt(dist2(lower_boundary, cvc_lower_boundary))/width > colvar_boundaries_tol) { + // The user choice is different from the CVC's default + disable(f_cv_hard_lower_boundary); + } + } } if (get_keyval(conf, "upperBoundary", upper_boundary, upper_boundary)) { enable(f_cv_upper_boundary); - disable(f_cv_hard_upper_boundary); + if (is_enabled(f_cv_single_cvc) && is_enabled(f_cv_hard_upper_boundary)) { + if (cvm::sqrt(dist2(upper_boundary, cvc_upper_boundary))/width > colvar_boundaries_tol) { + disable(f_cv_hard_upper_boundary); + } + } } + get_keyval_feature(this, conf, "hardLowerBoundary", f_cv_hard_lower_boundary, + is_enabled(f_cv_hard_lower_boundary)); + + get_keyval_feature(this, conf, "hardUpperBoundary", f_cv_hard_upper_boundary, + is_enabled(f_cv_hard_upper_boundary)); + + get_keyval(conf, "expandBoundaries", expand_boundaries, expand_boundaries); + + error_code |= parse_legacy_wall_params(conf); + error_code |= check_grid_parameters(); + } + + return error_code; +} + + +int colvar::parse_legacy_wall_params(std::string const &conf) +{ + int error_code = COLVARS_OK; + colvarmodule *cv = cvm::main(); + + if (is_enabled(f_cv_scalar)) { + // Parse legacy wall options and set up a harmonicWalls bias if needed cvm::real lower_wall_k = 0.0, upper_wall_k = 0.0; cvm::real lower_wall = 0.0, upper_wall = 0.0; @@ -610,13 +642,14 @@ harmonicWalls {\n\ } } - get_keyval_feature(this, conf, "hardLowerBoundary", f_cv_hard_lower_boundary, - is_enabled(f_cv_hard_lower_boundary)); + return error_code; +} - get_keyval_feature(this, conf, "hardUpperBoundary", f_cv_hard_upper_boundary, - is_enabled(f_cv_hard_upper_boundary)); - // consistency checks for boundaries and walls +int colvar::check_grid_parameters() +{ + int error_code = COLVARS_OK; + if (is_enabled(f_cv_lower_boundary) && is_enabled(f_cv_upper_boundary)) { if (lower_boundary >= upper_boundary) { error_code |= cvm::error("Error: the upper boundary, "+ @@ -627,7 +660,6 @@ harmonicWalls {\n\ } } - get_keyval(conf, "expandBoundaries", expand_boundaries, expand_boundaries); if (expand_boundaries && periodic_boundaries()) { error_code |= cvm::error("Error: trying to expand boundaries that already " "cover a whole period of a periodic colvar.\n", @@ -2189,12 +2221,10 @@ int colvar::set_cvc_param(std::string const ¶m_name, void const *new_value) bool colvar::periodic_boundaries(colvarvalue const &lb, colvarvalue const &ub) const { if (period > 0.0) { - if ( ((cvm::sqrt(this->dist2(lb, ub))) / this->width) - < 1.0E-10 ) { + if (((cvm::sqrt(this->dist2(lb, ub))) / this->width) < colvar_boundaries_tol) { return true; } } - return false; } diff --git a/src/colvar.h b/src/colvar.h index 1dacff431..3c08b5cc5 100644 --- a/src/colvar.h +++ b/src/colvar.h @@ -263,6 +263,12 @@ class colvar : public colvarparse, public colvardeps { /// Init defaults for grid options int init_grid_parameters(std::string const &conf); + /// Consistency check for the grid paramaters + int check_grid_parameters(); + + /// Read legacy wall keyword (these are biases now) + int parse_legacy_wall_params(std::string const &conf); + /// Init extended Lagrangian parameters int init_extended_Lagrangian(std::string const &conf); @@ -779,4 +785,10 @@ inline void colvar::reset_bias_force() { fb_actual.reset(); } + +namespace { + // Tolerance parameter to decide when two boundaries coincide + constexpr cvm::real colvar_boundaries_tol = 1.0e-10; +} + #endif diff --git a/src/colvar_rotation_derivative.h b/src/colvar_rotation_derivative.h index 50f4f1aa9..ceaf728c3 100644 --- a/src/colvar_rotation_derivative.h +++ b/src/colvar_rotation_derivative.h @@ -5,11 +5,21 @@ #include #include +#ifndef _noalias +#if defined(__INTEL_COMPILER) || (defined(__PGI) && !defined(__NVCOMPILER)) +#define _noalias restrict +#elif defined(__GNUC__) || defined(__INTEL_LLVM_COMPILER) || defined(__NVCOMPILER) +#define _noalias __restrict +#else +#define _noalias +#endif +#endif + /// \brief Helper function for loading the ia-th atom in the vector pos to x, y and z (C++11 SFINAE is used) template ::value, bool>::type = true> inline void read_atom_coord( size_t ia, const std::vector& pos, - cvm::real* x, cvm::real* y, cvm::real* z) { + cvm::real* _noalias x, cvm::real* _noalias y, cvm::real* _noalias z) { *x = pos[ia].x; *y = pos[ia].y; *z = pos[ia].z; @@ -18,7 +28,7 @@ inline void read_atom_coord( template ::value, bool>::type = true> inline void read_atom_coord( size_t ia, const std::vector& pos, - cvm::real* x, cvm::real* y, cvm::real* z) { + cvm::real* _noalias x, cvm::real* _noalias y, cvm::real* _noalias z) { *x = pos[ia].pos.x; *y = pos[ia].pos.y; *z = pos[ia].pos.z; @@ -26,9 +36,9 @@ inline void read_atom_coord( /// \brief Helper enum class for specifying options in rotation_derivative::prepare_derivative enum class rotation_derivative_dldq { - /// Require the derivative of the leading eigenvalue with respect to the atom coordinats + /// Require the derivative of the leading eigenvalue with respect to the atom coordinates use_dl = 1 << 0, - /// Require the derivative of the leading eigenvector with respect to the atom coordinats + /// Require the derivative of the leading eigenvector with respect to the atom coordinates use_dq = 1 << 1 }; @@ -327,12 +337,13 @@ struct rotation_derivative { * @param[out] dq0_out The output of derivative of Q * @param[out] ds_out The output of derivative of overlap matrix S */ + template void calc_derivative_impl( const cvm::rvector (&ds)[4][4], - cvm::rvector* const dl0_out, - cvm::vector1d* const dq0_out, - cvm::matrix2d* const ds_out) const { - if (ds_out != nullptr) { + cvm::rvector* _noalias const dl0_out, + cvm::vector1d* _noalias const dq0_out, + cvm::matrix2d* _noalias const ds_out) const { + if (use_ds) { // this code path is for debug_gradients, so not necessary to unroll the loop *ds_out = cvm::matrix2d(4, 4); for (int i = 0; i < 4; ++i) { @@ -341,7 +352,7 @@ struct rotation_derivative { } } } - if (dl0_out != nullptr) { + if (use_dl) { /* manually loop unrolling of the following loop: dl0_1.reset(); for (size_t i = 0; i < 4; i++) { @@ -367,7 +378,7 @@ struct rotation_derivative { tmp_Q0Q0[3][2] * ds[3][2] + tmp_Q0Q0[3][3] * ds[3][3]; } - if (dq0_out != nullptr) { + if (use_dq) { // we can skip this check if a fixed-size array is used if (dq0_out->size() != 4) dq0_out->resize(4); /* manually loop unrolling of the following loop: @@ -462,32 +473,21 @@ struct rotation_derivative { * @param[out] ds_1_out The output of derivative of overlap matrix S with * respect to ia-th atom of group 1 */ + template void calc_derivative_wrt_group1( - size_t ia, cvm::rvector* const dl0_1_out = nullptr, - cvm::vector1d* const dq0_1_out = nullptr, - cvm::matrix2d* const ds_1_out = nullptr) const { - if (dl0_1_out == nullptr && dq0_1_out == nullptr) return; + size_t ia, cvm::rvector* _noalias const dl0_1_out = nullptr, + cvm::vector1d* _noalias const dq0_1_out = nullptr, + cvm::matrix2d* _noalias const ds_1_out = nullptr) const { + // if (dl0_1_out == nullptr && dq0_1_out == nullptr) return; cvm::real a2x, a2y, a2z; // we can get rid of the helper function read_atom_coord if C++17 (constexpr) is available read_atom_coord(ia, m_pos2, &a2x, &a2y, &a2z); - cvm::rvector ds_1[4][4]; - ds_1[0][0].set( a2x, a2y, a2z); - ds_1[1][0].set( 0.0, a2z, -a2y); - ds_1[0][1] = ds_1[1][0]; - ds_1[2][0].set(-a2z, 0.0, a2x); - ds_1[0][2] = ds_1[2][0]; - ds_1[3][0].set( a2y, -a2x, 0.0); - ds_1[0][3] = ds_1[3][0]; - ds_1[1][1].set( a2x, -a2y, -a2z); - ds_1[2][1].set( a2y, a2x, 0.0); - ds_1[1][2] = ds_1[2][1]; - ds_1[3][1].set( a2z, 0.0, a2x); - ds_1[1][3] = ds_1[3][1]; - ds_1[2][2].set(-a2x, a2y, -a2z); - ds_1[3][2].set( 0.0, a2z, a2y); - ds_1[2][3] = ds_1[3][2]; - ds_1[3][3].set(-a2x, -a2y, a2z); - calc_derivative_impl(ds_1, dl0_1_out, dq0_1_out, ds_1_out); + const cvm::rvector ds_1[4][4] = { + {{ a2x, a2y, a2z}, { 0.0, a2z, -a2y}, {-a2z, 0.0, a2x}, { a2y, -a2x, 0.0}}, + {{ 0.0, a2z, -a2y}, { a2x, -a2y, -a2z}, { a2y, a2x, 0.0}, { a2z, 0.0, a2x}}, + {{-a2z, 0.0, a2x}, { a2y, a2x, 0.0}, {-a2x, a2y, -a2z}, { 0.0, a2z, a2y}}, + {{ a2y, -a2x, 0.0}, { a2z, 0.0, a2x}, { 0.0, a2z, a2y}, {-a2x, -a2y, a2z}}}; + calc_derivative_impl(ds_1, dl0_1_out, dq0_1_out, ds_1_out); } /*! @brief Calculate the derivatives of S, the leading eigenvalue L and * the leading eigenvector Q with respect to `m_pos2` @@ -499,32 +499,21 @@ struct rotation_derivative { * @param[out] ds_2_out The output of derivative of overlap matrix S with * respect to ia-th atom of group 2 */ + template void calc_derivative_wrt_group2( - size_t ia, cvm::rvector* const dl0_2_out = nullptr, - cvm::vector1d* const dq0_2_out = nullptr, - cvm::matrix2d* const ds_2_out = nullptr) const { - if (dl0_2_out == nullptr && dq0_2_out == nullptr) return; + size_t ia, cvm::rvector* _noalias const dl0_2_out = nullptr, + cvm::vector1d* _noalias const dq0_2_out = nullptr, + cvm::matrix2d* _noalias const ds_2_out = nullptr) const { + // if (dl0_2_out == nullptr && dq0_2_out == nullptr) return; cvm::real a1x, a1y, a1z; // we can get rid of the helper function read_atom_coord if C++17 (constexpr) is available read_atom_coord(ia, m_pos1, &a1x, &a1y, &a1z); - cvm::rvector ds_2[4][4]; - ds_2[0][0].set( a1x, a1y, a1z); - ds_2[1][0].set( 0.0, -a1z, a1y); - ds_2[0][1] = ds_2[1][0]; - ds_2[2][0].set( a1z, 0.0, -a1x); - ds_2[0][2] = ds_2[2][0]; - ds_2[3][0].set(-a1y, a1x, 0.0); - ds_2[0][3] = ds_2[3][0]; - ds_2[1][1].set( a1x, -a1y, -a1z); - ds_2[2][1].set( a1y, a1x, 0.0); - ds_2[1][2] = ds_2[2][1]; - ds_2[3][1].set( a1z, 0.0, a1x); - ds_2[1][3] = ds_2[3][1]; - ds_2[2][2].set(-a1x, a1y, -a1z); - ds_2[3][2].set( 0.0, a1z, a1y); - ds_2[2][3] = ds_2[3][2]; - ds_2[3][3].set(-a1x, -a1y, a1z); - calc_derivative_impl(ds_2, dl0_2_out, dq0_2_out, ds_2_out); + const cvm::rvector ds_2[4][4] = { + {{ a1x, a1y, a1z}, { 0.0, -a1z, a1y}, { a1z, 0.0, -a1x}, {-a1y, a1x, 0.0}}, + {{ 0.0, -a1z, a1y}, { a1x, -a1y, -a1z}, { a1y, a1x, 0.0}, { a1z, 0.0, a1x}}, + {{ a1z, 0.0, -a1x}, { a1y, a1x, 0.0}, {-a1x, a1y, -a1z}, { 0.0, a1z, a1y}}, + {{-a1y, a1x, 0.0}, { a1z, 0.0, a1x}, { 0.0, a1z, a1y}, {-a1x, -a1y, a1z}}}; + calc_derivative_impl(ds_2, dl0_2_out, dq0_2_out, ds_2_out); } }; @@ -585,10 +574,7 @@ void debug_gradients( cvm::real S_new_eigval[4]; cvm::real S_new_eigvec[4][4]; for (size_t ia = 0; ia < pos2.size(); ++ia) { - // cvm::real const &a1x = pos1[ia].x; - // cvm::real const &a1y = pos1[ia].y; - // cvm::real const &a1z = pos1[ia].z; - deriv.calc_derivative_wrt_group2(ia, &dl0_2, &dq0_2, &ds_2); + deriv.template calc_derivative_wrt_group2(ia, &dl0_2, &dq0_2, &ds_2); // make an infitesimal move along each cartesian coordinate of // this atom, and solve again the eigenvector problem for (size_t comp = 0; comp < 3; comp++) { diff --git a/src/colvaratoms.cpp b/src/colvaratoms.cpp index be183dc53..054db505f 100644 --- a/src/colvaratoms.cpp +++ b/src/colvaratoms.cpp @@ -1058,6 +1058,14 @@ void cvm::atom_group::calc_apply_roto_translation() } } + if (is_enabled(f_ag_fit_gradients) && !b_dummy) { + // Save the unrotated frame for fit gradients + pos_unrotated.resize(size()); + for (size_t i = 0; i < size(); ++i) { + pos_unrotated[i] = atoms[i].pos; + } + } + if (is_enabled(f_ag_rotate)) { // rotate the group (around the center of geometry if f_ag_center is // enabled, around the origin otherwise) @@ -1253,17 +1261,13 @@ void cvm::atom_group::calc_fit_forces_impl( cvm::vector1d dq0_1(4); // loop 1: iterate over the current atom group for (size_t i = 0; i < size(); i++) { - cvm::atom_pos pos_orig; if (B_ag_center) { atom_grad += accessor_main(i); - if (B_ag_rotate) pos_orig = rot_inv * (atoms[i].pos - ref_pos_cog); - } else { - if (B_ag_rotate) pos_orig = rot_inv * atoms[i].pos; } if (B_ag_rotate) { // calculate \partial(R(q) \vec{x}_i)/\partial q) \cdot \partial\xi/\partial\vec{x}_i cvm::quaternion const dxdq = - rot.q.position_derivative_inner(pos_orig, accessor_main(i)); + rot.q.position_derivative_inner(pos_unrotated[i], accessor_main(i)); sum_dxdq[0] += dxdq[0]; sum_dxdq[1] += dxdq[1]; sum_dxdq[2] += dxdq[2]; @@ -1282,7 +1286,7 @@ void cvm::atom_group::calc_fit_forces_impl( fitting_force_grad += atom_grad; } if (B_ag_rotate) { - rot_deriv->calc_derivative_wrt_group1(j, nullptr, &dq0_1); + rot_deriv->calc_derivative_wrt_group1(j, nullptr, &dq0_1); // multiply by {\partial q}/\partial\vec{x}_j and add it to the fit gradients fitting_force_grad += sum_dxdq[0] * dq0_1[0] + sum_dxdq[1] * dq0_1[1] + @@ -1299,7 +1303,7 @@ void cvm::atom_group::calc_fit_forces_impl( template void cvm::atom_group::calc_fit_forces( main_force_accessor_T accessor_main, - fitting_force_accessor_T accessor_fitting) const { + fitting_force_accessor_T accessor_fitting) const { if (is_enabled(f_ag_center) && is_enabled(f_ag_rotate)) calc_fit_forces_impl(accessor_main, accessor_fitting); if (is_enabled(f_ag_center) && !is_enabled(f_ag_rotate)) @@ -1536,7 +1540,7 @@ void cvm::atom_group::group_force_object::apply_force_with_fitting_group() { // computed. For a vector component, we can only know the forces on the fitting // group, but checking this flag can mimic results that the users expect (if // "enableFitGradients no" then there is no force on the fitting group). - if (m_ag->is_enabled(f_ag_fit_gradients)) { + if (!m_ag->b_dummy && m_ag->is_enabled(f_ag_fit_gradients)) { auto accessor_main = [this](size_t i){return m_ag->group_forces[i];}; auto accessor_fitting = [this](size_t j, const cvm::rvector& fitting_force){ (*(m_group_for_fit))[j].apply_force(fitting_force); diff --git a/src/colvaratoms.h b/src/colvaratoms.h index 25b0d34ee..528e849df 100644 --- a/src/colvaratoms.h +++ b/src/colvaratoms.h @@ -264,10 +264,46 @@ class colvarmodule::atom_group public: + /*! @class group_force_object + * @brief A helper class for applying forces on an atom group in a way that + * is aware of the fitting group. NOTE: you are encouraged to use + * get_group_force_object() to get an instance of group_force_object + * instead of constructing directly. + */ class group_force_object { public: + /*! @brief Constructor of group_force_object + * @param ag The pointer to the atom group that forces will be applied on. + */ group_force_object(cvm::atom_group* ag); + /*! @brief Destructor of group_force_object + */ ~group_force_object(); + /*! @brief Apply force to atom i + * @param i The i-th of atom in the atom group. + * @param force The force being added to atom i. + * + * The function can be used as follows, + * @code + * // In your colvar::cvc::apply_force() loop of a component: + * auto ag_force = atoms->get_group_force_object(); + * for (ia = 0; ia < atoms->size(); ia++) { + * const cvm::rvector f = compute_force_on_atom_ia(); + * ag_force.add_atom_force(ia, f); + * } + * @endcode + * There are actually two scenarios under the hood: + * (i) If the atom group does not have a fitting group, then the force is + * added to atom i directly; + * (ii) If the atom group has a fitting group, the force on atom i will just + * be temporary stashed into ag->group_forces. At the end of the loop + * of apply_force(), the destructor ~group_force_object() will be called, + * which then call apply_force_with_fitting_group(). The forces on the + * main group will be rotated back by multiplying ag->group_forces with + * the inverse rotation. The forces on the fitting group (if + * enableFitGradients is on) will be calculated by calling + * calc_fit_forces. + */ void add_atom_force(size_t i, const cvm::rvector& force); private: cvm::atom_group* m_ag; @@ -442,6 +478,9 @@ class colvarmodule::atom_group /// \brief Center of geometry before any fitting cvm::atom_pos cog_orig; + /// \brief Unrotated atom positions for fit gradients + std::vector pos_unrotated; + public: /// \brief Return the center of geometry of the atomic positions @@ -525,15 +564,25 @@ class colvarmodule::atom_group * @tparam B_ag_rotate Calculate the optimal rotation? This should follow * the value of `is_enabled(f_ag_rotate)`. * @tparam main_force_accessor_T The type of accessor of the main - * group forces or gradients. + * group forces or gradients acting on the rotated frame. * @tparam fitting_force_accessor_T The type of accessor of the fitting group * forces or gradients. * @param accessor_main The accessor of the main group forces or gradients. * accessor_main(i) should return the i-th force or gradient of the - * main group. + * rotated main group. * @param accessor_fitting The accessor of the fitting group forces or gradients. * accessor_fitting(j, v) should store/apply the j-th atom gradient or * force in the fitting group. + * + * This function is used to (i) project the gradients of CV with respect to + * rotated main group atoms to fitting group atoms, or (ii) project the forces + * on rotated main group atoms to fitting group atoms, by the following two steps + * (using the goal (ii) for example): + * (1) Loop over the positions of main group atoms and call cvm::quaternion::position_derivative_inner + * to project the forces on rotated main group atoms to the forces on quaternion. + * (2) Loop over the positions of fitting group atoms, compute the gradients of + * \f$\mathbf{q}\f$ with respect to the position of each atom, and then multiply + * that with the force on \f$\mathbf{q}\f$ (chain rule). */ template @@ -552,6 +601,9 @@ class colvarmodule::atom_group * @param accessor_fitting The accessor of the fitting group forces or gradients. * accessor_fitting(j, v) should store/apply the j-th atom gradient or * force in the fitting group. + * + * This function just dispatches the parameters to calc_fit_forces_impl that really + * performs the calculations. */ template void calc_fit_forces( diff --git a/src/colvarbias_abf.cpp b/src/colvarbias_abf.cpp index 6744d6a8f..db6ee6d57 100644 --- a/src/colvarbias_abf.cpp +++ b/src/colvarbias_abf.cpp @@ -87,13 +87,19 @@ int colvarbias_abf::init(std::string const &conf) get_keyval(conf, "shared", shared_on, false); if (shared_on) { cvm::main()->cite_feature("Multiple-walker ABF implementation"); - if ((proxy->check_replicas_enabled() != COLVARS_OK) || - (proxy->num_replicas() <= 1)) { - return cvm::error("Error: shared ABF requires more than one replica.", - COLVARS_INPUT_ERROR); - } - cvm::log("shared ABF will be applied among "+ - cvm::to_str(proxy->num_replicas()) + " replicas.\n"); + cvm::main()->cite_feature("Updated multiple-walker ABF implementation"); + + + // Cannot check this here because the replica communicator is obtained later + // in Gromacs + + // if ((proxy->check_replicas_enabled() != COLVARS_OK) || + // (proxy->num_replicas() <= 1)) { + // return cvm::error("Error: shared ABF requires more than one replica.", + // COLVARS_INPUT_ERROR); + // } + // cvm::log("shared ABF will be applied among "+ + // cvm::to_str(proxy->num_replicas()) + " replicas.\n"); // If shared_freq is not set, we default to output_freq get_keyval(conf, "sharedFreq", shared_freq, output_freq); diff --git a/src/colvarcomp.cpp b/src/colvarcomp.cpp index e6729f43a..024c00e50 100644 --- a/src/colvarcomp.cpp +++ b/src/colvarcomp.cpp @@ -533,8 +533,10 @@ void colvar::cvc::calc_Jacobian_derivative() void colvar::cvc::calc_fit_gradients() { - for (size_t ig = 0; ig < atom_groups.size(); ig++) { - atom_groups[ig]->calc_fit_gradients(); + if (is_enabled(f_cvc_explicit_gradient)) { + for (size_t ig = 0; ig < atom_groups.size(); ig++) { + atom_groups[ig]->calc_fit_gradients(); + } } } diff --git a/src/colvarcomp_distances.cpp b/src/colvarcomp_distances.cpp index 1c7267f1e..6de68264c 100644 --- a/src/colvarcomp_distances.cpp +++ b/src/colvarcomp_distances.cpp @@ -1003,7 +1003,7 @@ void colvar::rmsd::calc_Jacobian_derivative() for (size_t ia = 0; ia < atoms->size(); ia++) { // Gradient of optimal quaternion wrt current Cartesian position - atoms->rot_deriv->calc_derivative_wrt_group1(ia, nullptr, &dq); + atoms->rot_deriv->calc_derivative_wrt_group1(ia, nullptr, &dq); g11 = 2.0 * (atoms->rot.q)[1]*dq[1]; g22 = 2.0 * (atoms->rot.q)[2]*dq[2]; @@ -1302,7 +1302,7 @@ void colvar::eigenvector::calc_Jacobian_derivative() // Gradient of optimal quaternion wrt current Cartesian position // trick: d(R^-1)/dx = d(R^t)/dx = (dR/dx)^t // we can just transpose the derivatives of the direct matrix - atoms->rot_deriv->calc_derivative_wrt_group1(ia, nullptr, &dq_1); + atoms->rot_deriv->calc_derivative_wrt_group1(ia, nullptr, &dq_1); g11 = 2.0 * quat0[1]*dq_1[1]; g22 = 2.0 * quat0[2]*dq_1[2]; diff --git a/src/colvarcomp_rotations.cpp b/src/colvarcomp_rotations.cpp index 12dd90e33..766a0870d 100644 --- a/src/colvarcomp_rotations.cpp +++ b/src/colvarcomp_rotations.cpp @@ -139,7 +139,7 @@ void colvar::orientation::apply_force(colvarvalue const &force) cvm::vector1d dq0_2; auto ag_force = atoms->get_group_force_object(); for (size_t ia = 0; ia < atoms->size(); ia++) { - rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); + rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); const auto f_ia = FQ[0] * dq0_2[0] + FQ[1] * dq0_2[1] + FQ[2] * dq0_2[2] + @@ -208,7 +208,7 @@ void colvar::orientation_angle::calc_gradients() rot_deriv_impl->prepare_derivative(rotation_derivative_dldq::use_dq); cvm::vector1d dq0_2; for (size_t ia = 0; ia < atoms->size(); ia++) { - rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); + rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); (*atoms)[ia].grad = (dxdq0 * dq0_2[0]); } } @@ -268,7 +268,7 @@ void colvar::orientation_proj::calc_gradients() rot_deriv_impl->prepare_derivative(rotation_derivative_dldq::use_dq); cvm::vector1d dq0_2; for (size_t ia = 0; ia < atoms->size(); ia++) { - rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); + rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); (*atoms)[ia].grad = (dxdq0 * dq0_2[0]); } } @@ -317,7 +317,7 @@ void colvar::tilt::calc_gradients() cvm::vector1d dq0_2; for (size_t ia = 0; ia < atoms->size(); ia++) { (*atoms)[ia].grad = cvm::rvector(0.0, 0.0, 0.0); - rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); + rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); for (size_t iq = 0; iq < 4; iq++) { (*atoms)[ia].grad += (dxdq[iq] * dq0_2[iq]); } @@ -354,7 +354,7 @@ void colvar::spin_angle::calc_gradients() cvm::vector1d dq0_2; for (size_t ia = 0; ia < atoms->size(); ia++) { (*atoms)[ia].grad = cvm::rvector(0.0, 0.0, 0.0); - rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); + rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); for (size_t iq = 0; iq < 4; iq++) { (*atoms)[ia].grad += (dxdq[iq] * dq0_2[iq]); } @@ -402,7 +402,7 @@ void colvar::euler_phi::calc_gradients() rot_deriv_impl->prepare_derivative(rotation_derivative_dldq::use_dq); cvm::vector1d dq0_2; for (size_t ia = 0; ia < atoms->size(); ia++) { - rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); + rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); (*atoms)[ia].grad = (dxdq0 * dq0_2[0]) + (dxdq1 * dq0_2[1]) + (dxdq2 * dq0_2[2]) + @@ -451,7 +451,7 @@ void colvar::euler_psi::calc_gradients() rot_deriv_impl->prepare_derivative(rotation_derivative_dldq::use_dq); cvm::vector1d dq0_2; for (size_t ia = 0; ia < atoms->size(); ia++) { - rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); + rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); (*atoms)[ia].grad = (dxdq0 * dq0_2[0]) + (dxdq1 * dq0_2[1]) + (dxdq2 * dq0_2[2]) + @@ -498,7 +498,7 @@ void colvar::euler_theta::calc_gradients() rot_deriv_impl->prepare_derivative(rotation_derivative_dldq::use_dq); cvm::vector1d dq0_2; for (size_t ia = 0; ia < atoms->size(); ia++) { - rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); + rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); (*atoms)[ia].grad = (dxdq0 * dq0_2[0]) + (dxdq1 * dq0_2[1]) + (dxdq2 * dq0_2[2]) + diff --git a/src/colvarmodule.cpp b/src/colvarmodule.cpp index 45dbb48d8..4a52017b7 100644 --- a/src/colvarmodule.cpp +++ b/src/colvarmodule.cpp @@ -110,16 +110,15 @@ colvarmodule::colvarmodule(colvarproxy *proxy_in) " https://doi.org/10.1080/00268976.2013.813594\n" "as well as all other papers listed below for individual features used.\n"); -#if (__cplusplus >= 201103L) - cvm::log("This version was built with the C++11 standard or higher.\n"); -#else - cvm::log("This version was built without the C++11 standard: some features are disabled.\n" - "Please see the following link for details:\n" - " https://colvars.github.io/README-c++11.html\n"); -#endif - cvm::log("Summary of compile-time features available in this build:\n"); + std::string cxx_lang_msg(" - C++ language version: " + cvm::to_str(__cplusplus)); +#if defined(_WIN32) && !defined(__CYGWIN__) + cxx_lang_msg += std::string(" (warning: may not be accurate for this build)"); +#endif + cxx_lang_msg += std::string("\n"); + cvm::log(cxx_lang_msg); + if (proxy->check_smp_enabled() == COLVARS_NOT_IMPLEMENTED) { cvm::log(" - SMP parallelism: not available\n"); } else { diff --git a/src/colvarmodule_refs.h b/src/colvarmodule_refs.h index 04934f8d9..fa702a0a7 100644 --- a/src/colvarmodule_refs.h +++ b/src/colvarmodule_refs.h @@ -129,6 +129,23 @@ " url = {https://doi.org/10.1002/jcc.26075}\n" "}\n"; + paper_count_[std::string("Fiorin2024")] = 0; + paper_url_[std::string("Fiorin2024")] = "https://doi.org/10.1021/acs.jpcb.4c05604"; + paper_bibtex_[std::string("Fiorin2024")] = + "\n" + "@article{Fiorin2024,\n" + " author = {Fiorin, Giacomo and Marinelli, Fabrizio and Forrest, Lucy R. and Chen, Haochuan and Chipot, Christophe and Kohlmeyer, Axel and Santuz, Hubert and H{\\'e}nin, J{\\'e}rôme},\n" + " title = {Expanded Functionality and Portability for the Colvars Library},\n" + " journal = {J. Phys. Chem. {B}},\n" + " volume = {0},\n" + " number = {0},\n" + " pages = {null},\n" + " year = {2024},\n" + " doi = {10.1021/acs.jpcb.4c05604},\n" + " pmid = 39501453,\n" + " url = { https://doi.org/10.1021/acs.jpcb.4c05604}\n" + "}\n"; + paper_count_[std::string("Fu2016")] = 0; paper_url_[std::string("Fu2016")] = "https://doi.org/10.1021/acs.jctc.6b00447"; paper_bibtex_[std::string("Fu2016")] = @@ -528,6 +545,9 @@ feature_count_[std::string("Multi-Map collective variables")] = 0; feature_paper_map_[std::string("Multi-Map collective variables")] = "Fiorin2020"; + feature_count_[std::string("Updated multiple-walker ABF implementation")] = 0; + feature_paper_map_[std::string("Updated multiple-walker ABF implementation")] = "Fiorin2024"; + feature_count_[std::string("Umbrella-integration eABF estimator")] = 0; feature_paper_map_[std::string("Umbrella-integration eABF estimator")] = "Fu2016"; diff --git a/src/colvars_version.h b/src/colvars_version.h index 6f1817453..44ef4f090 100644 --- a/src/colvars_version.h +++ b/src/colvars_version.h @@ -1,3 +1,3 @@ #ifndef COLVARS_VERSION -#define COLVARS_VERSION "2024-11-08" +#define COLVARS_VERSION "2024-11-13" #endif diff --git a/src/colvartypes.cpp b/src/colvartypes.cpp index f51791d01..6e568e58d 100644 --- a/src/colvartypes.cpp +++ b/src/colvartypes.cpp @@ -137,71 +137,6 @@ std::istream & operator >> (std::istream &is, colvarmodule::quaternion &q) } -cvm::quaternion -cvm::quaternion::position_derivative_inner(cvm::rvector const &pos, - cvm::rvector const &vec) const -{ - cvm::quaternion result(0.0, 0.0, 0.0, 0.0); - - - result.q0 = 2.0 * pos.x * q0 * vec.x - +2.0 * pos.y * q0 * vec.y - +2.0 * pos.z * q0 * vec.z - - -2.0 * pos.y * q3 * vec.x - +2.0 * pos.z * q2 * vec.x - - +2.0 * pos.x * q3 * vec.y - -2.0 * pos.z * q1 * vec.y - - -2.0 * pos.x * q2 * vec.z - +2.0 * pos.y * q1 * vec.z; - - - result.q1 = +2.0 * pos.x * q1 * vec.x - -2.0 * pos.y * q1 * vec.y - -2.0 * pos.z * q1 * vec.z - - +2.0 * pos.y * q2 * vec.x - +2.0 * pos.z * q3 * vec.x - - +2.0 * pos.x * q2 * vec.y - -2.0 * pos.z * q0 * vec.y - - +2.0 * pos.x * q3 * vec.z - +2.0 * pos.y * q0 * vec.z; - - - result.q2 = -2.0 * pos.x * q2 * vec.x - +2.0 * pos.y * q2 * vec.y - -2.0 * pos.z * q2 * vec.z - - +2.0 * pos.y * q1 * vec.x - +2.0 * pos.z * q0 * vec.x - - +2.0 * pos.x * q1 * vec.y - +2.0 * pos.z * q3 * vec.y - - -2.0 * pos.x * q0 * vec.z - +2.0 * pos.y * q3 * vec.z; - - - result.q3 = -2.0 * pos.x * q3 * vec.x - -2.0 * pos.y * q3 * vec.y - +2.0 * pos.z * q3 * vec.z - - -2.0 * pos.y * q0 * vec.x - +2.0 * pos.z * q1 * vec.x - - +2.0 * pos.x * q0 * vec.y - +2.0 * pos.z * q2 * vec.y - - +2.0 * pos.x * q1 * vec.z - +2.0 * pos.y * q2 * vec.z; - - return result; -} - #ifdef COLVARS_LAMMPS namespace { inline void *new_Jacobi_solver(int size) { diff --git a/src/colvartypes.h b/src/colvartypes.h index 455e628f1..07a7065e5 100644 --- a/src/colvartypes.h +++ b/src/colvartypes.h @@ -1221,8 +1221,57 @@ class colvarmodule::quaternion { /// \brief Multiply the given vector by the derivative of the given /// (rotated) position with respect to the quaternion - cvm::quaternion position_derivative_inner(cvm::rvector const &pos, - cvm::rvector const &vec) const; + /// \param pos The position \f$\mathbf{x}\f$. + /// \param vec The vector \f$\mathbf{v}\f$. + /// \return A quaternion (see the detailed documentation below). + /// + /// This function is mainly used for projecting the gradients or forces on + /// the rotated atoms to the forces on quaternion. Assume this rotation can + /// be represented as \f$R(\mathbf{q})\f$, + /// where \f$\mathbf{q} := (q_0, q_1, q_2, q_3)\f$ + /// is the current quaternion, the function returns the following new + /// quaternion: + /// \f[ + /// \left(\mathbf{v}^\mathrm{T}\frac{\partial R(\mathbf{q})}{\partial q_0}\mathbf{x}, + /// \mathbf{v}^\mathrm{T}\frac{\partial R(\mathbf{q})}{\partial q_1}\mathbf{x}, + /// \mathbf{v}^\mathrm{T}\frac{\partial R(\mathbf{q})}{\partial q_2}\mathbf{x}, + /// \mathbf{v}^\mathrm{T}\frac{\partial R(\mathbf{q})}{\partial q_3}\mathbf{x}\right) + /// \f] + /// where \f$\mathbf{v}\f$ is usually the gradient of \f$\xi\f$ with respect to + /// the rotated frame \f$\tilde{\mathbf{X}}\f$, + /// \f$\partial \xi / \partial \tilde{\mathbf{X}}\f$, or the force acting on it + /// (\f$\mathbf{F}_{\tilde{\mathbf{X}}}\f$). + /// By using the following loop in pseudo C++ code, + /// either \f$\partial \xi / \partial \tilde{\mathbf{X}}\f$ + /// or \f$\mathbf{F}_{\tilde{\mathbf{X}}}\f$, can be projected to + /// \f$\partial \xi / \partial \mathbf{q}\f$ or \f$\mathbf{F}_q\f$ into `sum_dxdq`: + /// @code + /// cvm::real sum_dxdq[4] = {0, 0, 0, 0}; + /// for (size_t i = 0; i < main_group_size(); ++i) { + /// const cvm::rvector v = grad_or_force_on_rotated_main_group(i); + /// const cvm::rvector x = unrotated_main_group_positions(i); + /// cvm::quaternion const dxdq = position_derivative_inner(x, v); + /// sum_dxdq[0] += dxdq[0]; + /// sum_dxdq[1] += dxdq[1]; + /// sum_dxdq[2] += dxdq[2]; + /// sum_dxdq[3] += dxdq[3]; + /// } + /// @endcode + inline cvm::quaternion position_derivative_inner(cvm::rvector const &pos, + cvm::rvector const &vec) const { + return cvm::quaternion(2.0 * (vec.x * ( q0 * pos.x - q3 * pos.y + q2 * pos.z) + + vec.y * ( q3 * pos.x + q0 * pos.y - q1 * pos.z) + + vec.z * (-q2 * pos.x + q1 * pos.y + q0 * pos.z)), + 2.0 * (vec.x * ( q1 * pos.x + q2 * pos.y + q3 * pos.z) + + vec.y * ( q2 * pos.x - q1 * pos.y - q0 * pos.z) + + vec.z * ( q3 * pos.x + q0 * pos.y - q1 * pos.z)), + 2.0 * (vec.x * (-q2 * pos.x + q1 * pos.y + q0 * pos.z) + + vec.y * ( q1 * pos.x + q2 * pos.y + q3 * pos.z) + + vec.z * (-q0 * pos.x + q3 * pos.y - q2 * pos.z)), + 2.0 * (vec.x * (-q3 * pos.x - q0 * pos.y + q1 * pos.z) + + vec.y * ( q0 * pos.x - q3 * pos.y + q2 * pos.z) + + vec.z * ( q1 * pos.x + q2 * pos.y + q3 * pos.z))); + } /// \brief Return the cosine between the orientation frame