Skip to content
Snippets Groups Projects
Commit 706f990c authored by Giovanni Bussi's avatar Giovanni Bussi
Browse files

Merge branch 'master' into autoconf

Conflicts:
	CHANGES/Unreleased.txt
	user-doc/Installation.txt
parents 93d934e4 8e9ce48f
No related branches found
No related tags found
No related merge requests found
Showing
with 238 additions and 41 deletions
/**
@page CHANGES-2-1 Version 2.1
@page CHANGES-UNRELEASED Unreleased changes
Version 2.1.0 - unreleased
------------------------
Includes all fixes in branch 2.0 (see \ref CHANGES-2-0) up to 2.0.1.
Include all fixes in branch 2.0 indicated in \ref CHANGES-2-0 .
Changes from version 2.0 which are relevant for users:
- New configuration system based on autoconf (use ./configure from root directory)
- Root-mean-square devations with align weights different from displace weights
are now considerably faster. This will affect \ref RMSD calculations plus
other variables based on RMSD.
- Added WALKERS_MPI to \ref METAD, allowing to run multiple walkers in a mpi-based multi-replica framework.
- Added ACCELERATION to \ref METAD, allowing to calculate on the fly the Metadynamics acceleration factor.
- Added option PRECISION to set number of digits in \ref DUMPATOMS.
- Added NDX_FILE and NDX_GROUP to action \ref GROUP, allowing to import atom lists from ndx files.
- Several optimizations in the following actions: \ref WHOLEMOLECULES, ...
- Small optimization in \ref WHOLEMOLECULES
- Small optimization in \ref COORDINATION when NN and MM are even and D_0=0
- Faster atom scattering with domain decomposition.
- \ref SPRINT topological collective variables.
- \ref CH3SHIFTS collective variable.
......@@ -23,6 +24,10 @@ Changes from version 2.0 which are relevant for users:
- Added possibility to use negative strides in atom ranges (e.g. 10-1:-3).
- Added possibility to use \ref COORDINATION or \ref DHENERGY with NLIST in replica exchange simulations.
- Added STRETCH flag to \ref switchingfunction.
- Added possibility to read trajectories from \ref driver using VMD molfile
plugin (requires VMD plugins to be compiled and installed)
- Simplified configuration with the possibility to use an internally compiled
version of lapack and blas.
Changes from version 2.0 which are relevant for developers:
- Added regtests for plumed as a library (e.g. basic/rt-make-0). plumed command has an additional
......@@ -31,5 +36,13 @@ Changes from version 2.0 which are relevant for developers:
- Improved class Communicator. Many operations can now be done directly on Vectors, Tensors, std::vector and PLMD::Matrix.
- Patches for GPL codes (QuantumEspresso and Gromacs) now also include
original code so as to simplify their modification.
- Fixed dependencies among actions such that it is now possible (and reliable)
to use MPI calls inside Action::prepare()
- colvar/CoordinationBase.cpp has been changed to make it faster. If you devised a class which inherits from here,
consider that CoordinationBase::pairing now needs _squared_ distance instead of distance
- It is possible to run "make install" from subdirectories (e.g. from src/colvar)
- There is a small script which disables/enables all optional modules (make mod-light/mod-heavy/mod-reset)
- Added "-q" option to plumed patch
*/
......@@ -6,19 +6,43 @@ Version 2.0.0
-------------
Version 2.0 is a complete rewrite, so there is no way to write a complete set of difference
with respect to plumed 1.3. Here is a summary of the difference:
- The input is simpler and more error proof. Many checks are now performed and in this way common errors are avoided.
with respect to plumed 1.3. Here is a possibly incomplete summary of the difference:
- The input is simpler, more flexible, and more error proof. Many checks are now performed and in this way common errors are avoided.
- The units are now the same for all MD codes. If you want to use a different unit than the default you set it in the input file.
- The analysis tools are now much more flexible. As an example of this it is now possible to write different collective variables with different frequencies
- Many complex collective variables are considerably faster than they were in plumed1. In particular, all variables based on RMSD distances.
- Centers of mass can be used as if they were atoms. Hence, unlike plumed 1.3, you can use center of mass positions in ALL collective variables.
- The virial contribution is now computed and passed to the MD code. Plumed can thus now be used to perform biased NPT simulations
- Variables can be dumped on different files and with different files, and are
computed only when this is necessary.
- PLUMED is now compiled as a separate library. This simplifies the patching
procedure, but might require some extra work to configure PLUMED properly.
Since PLUMED can be loaded as a shared library, it is possible to setup
everything such that PLUMED and MD codes can be updated independently from each
other.
In addition, it is now much easier to contribute new functionality to the code because:
- There is a much simpler interface between plumed and the base MD codes. This makes it much easier to add plumed to a new MD code.
- There is C++ object oriented programming and full compatibility with the C++ standard library
- A modular structure
- Developer and user documentation
- A modular structure
- New collective variables and methods can be released independently
- There is an extensive developer documentation
- User documentation is provided together inside the implementation files
- Interfacing with MD codes is simpler. Hopefully, in the future, these
interface will be maitained by the developers of the MD codes
independently from PLUMED developers. This will allow more MD codes
to be compatible with PLUMED.
Caveats:
- PLUMED 2 input file (plumed.dat) has a syntax which is not
compatible with PLUMED 1.
Transition should be easy, but cannot
be done just using the new version with the old input file.
- PLUMED 2 is written in C++, thus requires a C++ compiler
- PLUMED 2 may not include all the features that were available
in PLUMED 1.
A tutorial explaining how to move from PLUMED 1 to PLUMED 2 is available (see \ref moving).
Version 2.0.1
-------------
......@@ -45,7 +69,14 @@ Unreleased changes
-------------
See <a href="http://github.com/plumed/plumed2/tree/v2.0">branch v2.0 on git repository</a>.
There are currently no unreleased changes.
For users:
- Added full reference (page/number) to published paper in doc and log.
- Fixed a bug in file backups (only affecting Windows version - thanks to T. Giorgino).
- Several small fixes in documentation and log file.
For developers:
- Fixed makefile dependencies in some auxiliary files in src/lib (src/lib/*cmake and src/lib/*inc).
- Several small fixes in documentation.
*/
......@@ -11,7 +11,6 @@
# Requirements
# - A recent mingw32 distribution (tested on FC17)
# - A cross-compiled versions of laplack and blas (tested 3.4.2)
# Notes
# - Shared libraries are disabled. This means that the "runtime"
......@@ -26,8 +25,8 @@
LIBS=
# TG Add the path to your cross-compiled lapack
DYNAMIC_LIBS=-L../lapack-3.4.2/build/lib -lstdc++ -llapack -lblas -lgfortran
# GB in this branch it is not necessary to link external lapack/blas
DYNAMIC_LIBS=-lstdc++ -lgfortran
DOUBLEPRECISION=-fdefault-real-8
# TG - disabling DLOPEN (but can be implemented)
......
......@@ -18,3 +18,10 @@ function plumed_after_revert(){
mv src/kernel/Makefile.plumedbck src/kernel/Makefile
}
function plumed_patch_info(){
echo ""
echo "PLUMED can be incorporated into gromacs using a simple patching procedure."
echo "Patching must be done _after_ gromacs has been configured but _before_ gromacs is compiled"
echo
echo "For more information on gromacs you should visit http://www.gromacs.org"
}
......@@ -4,3 +4,11 @@ function plumed_preliminary_test(){
# check if the README contains the word GROMACS and if gromacs has been already configured
grep -q GROMACS README 1>/dev/null 2>/dev/null
}
function plumed_patch_info(){
echo ""
echo "PLUMED can be incorporated into gromacs using a simple patching procedure."
echo "Patching must be done _before_ the cmake command is invoked"
echo
echo "For more information on gromacs you should visit http://www.gromacs.org"
}
......@@ -14,3 +14,14 @@ function plumed_after_revert(){
rm -fr src/USER-PLUMED/
}
function plumed_patch_info(){
echo ""
echo "PLUMED can be incorporated into LAMMPS using a simple patching procedure."
echo "Patching must be done _before_ LAMMPS is configured."
echo "After patching, one should enable PLUMED using the command"
echo "make yes-user-plumed"
echo "In the same way, before reverting one should disable PLUMED using the command"
echo "make no-user-plumed"
echo
echo "For more information on LAMMPS you should visit http://lammps.sandia.gov/"
}
......@@ -4,3 +4,10 @@ function plumed_preliminary_test(){
# check if the README.txt contains the word NAMD
grep -q NAMD README.txt 1>/dev/null 2>/dev/null && test -f */Make.config
}
function plumed_patch_info(){
echo "WARNING: NAMD does not currently take into account virial contributions"
echo "from PLUMED. Please use constant volume simulations only"
echo ""
echo "For more information on NAMD you should visit http://www.ks.uiuc.edu/Research/namd/"
}
function plumed_preliminary_test(){
# check if the README.txt contains the word NAMD
grep -q NAMD README.txt 1>/dev/null 2>/dev/null && test -f */Make.config
}
function plumed_patch_info(){
echo "WARNING: NAMD does not currently take into account virial contributions"
echo "from PLUMED. Please use constant volume simulations only"
echo ""
echo "For more information on NAMD you should visit http://www.ks.uiuc.edu/Research/namd/"
}
......@@ -17,6 +17,8 @@ Actions (choose one):
same as save, but save also original files
-n NEWENGINE, --new NEWENGINE
create a new patch named NEWENGINE (*)
-i, --info
output information on the patching procedure for a particular code
Options:
-e ENGINE, --engine ENGINE
set MD engine to ENGINE (default: choose interactively)
......@@ -30,6 +32,9 @@ Options:
same as --mode runtime
-d FILE, --diff FILE
set the path to diff file (default: ROOT/patches/ENGINE.diff) (*)
-q, --quiet
do not write loggin information; useful with -i to print just
the patching information
-f, --force
force patching (*)
......@@ -49,7 +54,7 @@ multiple_actions=
otherfiles=
save_originals=
quiet=
for option
do
......@@ -64,6 +69,7 @@ do
(--save-originals) test -n "$action" && multiple_actions=yes ; action=save ; save_originals=yes ;;
(--revert|-R|-r) test -n "$action" && multiple_actions=yes ; action=revert ;;
(--list-engines|-l) test -n "$action" && multiple_actions=yes ; action=list ;;
(--info|-i) test -n "$action" && multiple_actions=yes ; action=info ;;
(--new=*) test -n "$action" && multiple_actions=yes ; action=new ; newpatch="${prefix_option#--new=}" ;;
(--description) echo "patch an MD engine" ; exit ;;
(--engine=*) engine="${prefix_option#--engine=}" ;;
......@@ -78,6 +84,7 @@ do
(--shared) mode=shared ;;
(--runtime) mode=runtime ;;
(--force|-f) force=yes ;;
(--quiet|-q) quiet=yes ;;
(*)
echo "ERROR: Unknown option $prefix_option. Use -h for help."
exit
......@@ -94,8 +101,8 @@ if [ -z "$action" ] ; then
exit
fi
echo "PLUMED patching tool"
echo
test -n "$quiet" || echo "PLUMED patching tool"
test -n "$quiet" || echo
if [ -z "$PLUMED_ROOT" ]
then
echo "ERROR: I cannot find PLUMED"
......@@ -133,14 +140,14 @@ fi
if [ "$action" == new ]
then
echo "Creating a new patch"
test -n "$quiet" || echo "Creating a new patch"
if [[ -e "$PLUMED_ROOT"/patches/"$newpatch".diff ]] ; then
echo "ERROR: patch $newpatch is already defined"
exit
fi
touch "$PLUMED_ROOT"/patches/"$newpatch".diff
echo "Created file $PLUMED_ROOT/patches/$newpatch.diff"
echo "Also consider the possibility of adding a $PLUMED_ROOT/patches/$newpatch.config file"
test -n "$quiet" || echo "Created file $PLUMED_ROOT/patches/$newpatch.diff"
test -n "$quiet" || echo "Also consider the possibility of adding a $PLUMED_ROOT/patches/$newpatch.config file"
exit
fi
......@@ -169,19 +176,19 @@ then
test -d "$PLUMED_ROOT/patches/${engine}" && otherfiles="$PLUMED_ROOT/patches/${engine}/"
fi
echo "MD engine: $engine"
echo "PLUMED location: $PLUMED_ROOT"
echo "diff file: $diff"
test -n "$quiet" || echo "MD engine: $engine"
test -n "$quiet" || echo "PLUMED location: $PLUMED_ROOT"
test -n "$quiet" || echo "diff file: $diff"
if [ -f "$config" ]
then
echo "sourcing config file: $config"
test -n "$quiet" || echo "sourcing config file: $config"
source "$config"
fi
if [ -d "$otherfiles" ]
then
echo "extra files located in: $otherfiles"
test -n "$quiet" || echo "extra files located in: $otherfiles"
fi
case "$mode" in
......@@ -220,16 +227,16 @@ case "$action" in
exit
fi
if type -t plumed_before_patch 1>/dev/null ; then
echo "Executing plumed_before_patch function"
test -n "$quiet" || echo "Executing plumed_before_patch function"
plumed_before_patch
fi
echo "Linking Plumed.h and Plumed.inc ($mode mode)"
test -n "$quiet" || echo "Linking Plumed.h and Plumed.inc ($mode mode)"
ln -s "$PLUMED_ROOT/src/wrapper/Plumed.h"
ln -s "$PLUMED_ROOT/src/lib/Plumed.inc.$mode" Plumed.inc
ln -s "$PLUMED_ROOT/src/lib/Plumed.cmake.$mode" Plumed.cmake
if [ -d "$diff" ]; then
echo "Patching with on-the-fly diff from stored originals"
test -n "$quiet" || echo "Patching with on-the-fly diff from stored originals"
PREPLUMED=$(cd $diff ; find . -name "*.preplumed" | sort)
for bckfile in $PREPLUMED ; do
file="${bckfile%.preplumed}"
......@@ -241,15 +248,23 @@ case "$action" in
fi
done
else
echo "Patching with stored diff"
test -n "$quiet" || echo "Patching with stored diff"
bash "$diff"
fi
if type -t plumed_after_patch 1>/dev/null ; then
echo "Executing plumed_after_patch function"
test -n "$quiet" || echo "Executing plumed_after_patch function"
plumed_after_patch
fi
;;
(info)
if type -t plumed_patch_info 1>/dev/null ; then
test -n "$quiet" || echo "Executing plumed_patch_info function"
plumed_patch_info
else
echo "No special info for this MD engine"
fi
;;
(save)
if [ ! -L Plumed.h -o ! -L Plumed.inc ]
then
......@@ -271,9 +286,9 @@ case "$action" in
exit
fi
fi
echo "Saving your changes to $diff"
echo "Preplumed files:"
echo "$PREPLUMED"
test -n "$quiet" || echo "Saving your changes to $diff"
test -n "$quiet" || echo "Preplumed files:"
test -n "$quiet" || echo "$PREPLUMED"
if [ -d "$diff" ] && [ -z "$save_originals" ]; then
echo "This patch uses the dir format (originals are saved)"
echo "Are you sure you want to save the single diff?"
......@@ -290,10 +305,10 @@ case "$action" in
fi
done
if [ "$answer" = originals ] ; then
echo "saving originals"
test -n "$quiet" || echo "saving originals"
save_originals=yes
else
echo "saving single diff file"
test -n "$quiet" || echo "saving single diff file"
fi
fi
test -e "$diff" && rm -r "$diff"
......@@ -328,21 +343,21 @@ EOF
exit
fi
if type -t plumed_before_revert 1>/dev/null ; then
echo "Executing plumed_before_revert function"
test -n "$quiet" || echo "Executing plumed_before_revert function"
plumed_before_revert
fi
if [ ! -L Plumed.h -o ! -L Plumed.inc ]
then
echo "WARNING: I cannot find Plumed.h and Plumed.inc files. You have likely not patched yet."
else
echo "Removing Plumed.h and Plumed.inc"
test -n "$quiet" || echo "Removing Plumed.h and Plumed.inc"
rm Plumed.h Plumed.inc Plumed.cmake
fi
PREPLUMED=$(find . -name "*.preplumed")
if ! test "$PREPLUMED" ; then
echo "No .preplumed file found, nothing to restore."
else
echo "Reverting changes and touching reverted files"
test -n "$quiet" || echo "Reverting changes and touching reverted files"
for bckfile in $PREPLUMED ; do
file="${bckfile%.preplumed}"
mv "$bckfile" "$file"
......@@ -350,7 +365,7 @@ EOF
done
fi
if type -t plumed_after_revert 1>/dev/null ; then
echo "Executing plumed_after_revert function"
test -n "$quiet" || echo "Executing plumed_after_revert function"
plumed_after_revert
fi
esac
......
......@@ -15,3 +15,9 @@ awk '{if($1=="LIBS" && $2=="="){print $0" $(PLUMED_LOAD) "}else{print }}' make.s
function plumed_after_revert(){
mv make.sys.old make.sys
}
function plumed_patch_info(){
echo ""
echo "For more information on Quantum Espresso you should visit http://www.quantum-espresso.org"
}
......@@ -6,14 +6,14 @@
!/function
!/analysis
!/basic
!/crystallization
!/multicolvar
!/secondarystructure
!/trajectories
!/scripts
!/manyrestraints
!/molfile_plugin
!/has-almost
# These files we just want to ignore completely
tmp
report.txt
crystallization
#! FIELDS time rmsd0 rmsd1 sum @3.bias @3.force2
0.000000 0.000 0.149 0.149 197.034 394.068
0.005000 0.072 0.160 0.231 195.399 390.797
0.010000 0.032 0.147 0.178 196.450 392.899
0.015000 0.051 0.144 0.195 196.121 392.242
0.020000 0.090 0.144 0.235 195.331 390.662
0.025000 0.070 0.142 0.212 195.776 391.552
0.030000 0.068 0.119 0.187 196.271 392.542
0.035000 0.100 0.137 0.237 195.289 390.578
0.040000 0.070 0.125 0.196 196.106 392.212
0.045000 0.088 0.102 0.190 196.211 392.422
0.050000 0.109 0.130 0.240 195.235 390.470
0.055000 0.133 0.086 0.219 195.641 391.283
0.060000 0.121 0.112 0.233 195.358 390.715
0.065000 0.126 0.110 0.236 195.313 390.627
0.070000 0.125 0.113 0.238 195.272 390.544
0.075000 0.120 0.105 0.224 195.536 391.072
0.080000 0.128 0.105 0.233 195.363 390.726
0.085000 0.157 0.117 0.274 194.558 389.117
0.090000 0.168 0.107 0.275 194.538 389.076
0.095000 0.169 0.101 0.270 194.635 389.270
0.100000 0.149 0.000 0.149 197.034 394.068
include ../../scripts/test.make
type=driver
plumed_needs=molfile
arg="--plumed plumed.dat --trajectory-stride 1 --timestep 0.005 --pdb diala.pdb --mf_xtc traj.xtc --dump-forces forces --dump-forces-fmt=%10.6f"
extra_files="../../trajectories/molfile_plugin/traj.xtc ../../trajectories/molfile_plugin/test0.pdb ../../trajectories/molfile_plugin/test1.pdb ../../trajectories/molfile_plugin/diala.pdb "
rmsd0: RMSD TYPE=OPTIMAL REFERENCE=test0.pdb
rmsd1: RMSD TYPE=OPTIMAL REFERENCE=test1.pdb
sum: COMBINE ARG=* PERIODIC=NO
RESTRAINT ARG=sum AT=20.0 KAPPA=1.0
PRINT ...
STRIDE=1
ARG=*
FILE=COLVAR FMT=%6.3f
... PRINT
ENDPLUMED
text here should be ignored
#! FIELDS time rmsd0 rmsd1 sum @3.bias @3.force2
0.000000 0.000 0.149 0.149 197.034 394.068
0.005000 0.072 0.160 0.231 195.399 390.797
0.010000 0.032 0.147 0.178 196.450 392.899
0.015000 0.051 0.144 0.195 196.121 392.242
0.020000 0.090 0.144 0.235 195.331 390.662
0.025000 0.070 0.142 0.212 195.776 391.552
0.030000 0.068 0.119 0.187 196.271 392.542
0.035000 0.100 0.137 0.237 195.289 390.578
0.040000 0.070 0.125 0.196 196.106 392.212
0.045000 0.088 0.102 0.190 196.211 392.422
0.050000 0.109 0.130 0.240 195.235 390.470
0.055000 0.133 0.086 0.219 195.641 391.283
0.060000 0.121 0.112 0.233 195.358 390.715
0.065000 0.126 0.110 0.236 195.313 390.627
0.070000 0.125 0.113 0.238 195.272 390.544
0.075000 0.120 0.105 0.224 195.536 391.072
0.080000 0.128 0.105 0.233 195.363 390.726
0.085000 0.157 0.117 0.274 194.558 389.117
0.090000 0.168 0.107 0.275 194.538 389.076
0.095000 0.169 0.101 0.270 194.635 389.270
0.100000 0.149 0.000 0.149 197.034 394.068
include ../../scripts/test.make
type=driver
plumed_needs=molfile
arg="--plumed plumed.dat --trajectory-stride 1 --timestep 0.005 --pdb diala.pdb --mf_dcd traj.dcd --dump-forces forces --dump-forces-fmt=%10.6f"
extra_files="../../trajectories/molfile_plugin/traj.dcd ../../trajectories/molfile_plugin/test0.pdb ../../trajectories/molfile_plugin/test1.pdb ../../trajectories/molfile_plugin/diala.pdb "
rmsd0: RMSD TYPE=OPTIMAL REFERENCE=test0.pdb
rmsd1: RMSD TYPE=OPTIMAL REFERENCE=test1.pdb
sum: COMBINE ARG=* PERIODIC=NO
RESTRAINT ARG=sum AT=20.0 KAPPA=1.0
PRINT ...
STRIDE=1
ARG=*
FILE=COLVAR FMT=%6.3f
... PRINT
ENDPLUMED
text here should be ignored
include ../../scripts/test.make
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment