From 47d1e7177695eeea2d36cd7b05980942c478aa47 Mon Sep 17 00:00:00 2001
From: Giovanni Bussi <giovanni.bussi@gmail.com>
Date: Thu, 30 Oct 2014 11:06:48 +0100
Subject: [PATCH] Added notes on file backup/restart/suffix

---
 user-doc/Files.txt  | 61 +++++++++++++++++++++++++++++++++++++++++++++
 user-doc/Misc.txt   |  5 ++++
 user-doc/extract    |  4 ++-
 user-doc/go-doxygen |  2 +-
 4 files changed, 70 insertions(+), 2 deletions(-)
 create mode 100644 user-doc/Files.txt

diff --git a/user-doc/Files.txt b/user-doc/Files.txt
new file mode 100644
index 000000000..571f344fa
--- /dev/null
+++ b/user-doc/Files.txt
@@ -0,0 +1,61 @@
+/**
+
+\page Files Files
+
+We tried to design PLUMED in such a manner that input/output is done consistently
+irrespectively of the file type. Most of the files written or read by PLUMED thus follow
+the very same conventions discussed below. 
+
+\section Restart
+
+Whenever the \ref RESTART option is used, all the files written by PLUMED are appended.
+This makes it easy to analyze results of simulations performed as a chain of several sub-runs.
+Notice that most of the PLUMED textual files have a header. The header is repeated at every
+restart. Additionally, several files have time in the first column. PLUMED just takes the value
+of the physical time from the MD engine. As such, you could have that time starts again from zero
+upon restart or not.
+
+An exception from this behavior is given by files which are not growing as the simulation proceeds.
+For example, grids written with \ref METAD with GRID_WFILE are overwritten by default during the simulation.
+As such, when restarting, there is no point in appending the file. Internally, PLUMED opens the file in append
+mode but then rewinds it every time a new grid is dumped.
+
+\section Backup
+
+Whenever the \ref RESTART option is not used, PLUMED tries to write new files. If an old file
+is found in the way, PLUMED takes a backup named "bck.X.filename" where X is a progressive number.
+Notice that by default PLUMED only allows a maximum of 100 backup copies for a file.
+This behavior can be changed by setting the environment variable PLUMED_MAXBACKUP to the desired number
+of copies. E.g. export PLUMED_MAXBACKUP=10 will fail after 10 copies. PLUMED_MAXBACKUP=-1 will never fail - be careful
+since your disk might fill up quickly with this setting.
+
+\section Replica-Suffix Replica suffix
+
+When running with multiple replicas (e.g., with GROMACS, -multi option) PLUMED adds the replica index as a suffix to
+all the files. The following command
+will thus print files named COLVAR.0, COLVAR.1, etc for the different replicas.
+\verbatim
+d: DISTANCE ATOMS=1,2
+PRINT ARG=d FILE=COLVAR
+\endverbatim
+(see also \ref DISTANCE and \ref PRINT).
+
+When reading a file, PLUMED will try to add the suffix. If the file is not found, it will fall back to
+the name without suffix. The most important case is the reading of the plumed input file.
+If you provide a file for each replica (e.g. plumed.dat.0, plumed.dat.1, etc) you will be able to
+setup plumed differently on each replica. 
+On the other hand, using a single plumed.dat will make all the replicas read the same file.
+
+\subsection Suffixes-and-file-extension Suffixes and file extension
+
+When PLUMED adds the replica suffix, it recognizes some file extension and add the suffix _before_ the
+extension. The only suffix recognized by PLUMED 2.1 is ".gz". This means that using
+\verbatim
+d: DISTANCE ATOMS=1,2
+PRINT ARG=d FILE=COLVAR.gz
+\endverbatim
+will write files named COLVAR.0.gz, COLVAR.1.gz, etc. This is useful since the preserved extension makes it easy
+to process the files later. In future PLUMED versions this behavior might change and more extensions
+could be recognized.
+
+*/
diff --git a/user-doc/Misc.txt b/user-doc/Misc.txt
index 5bf6d50de..ab1445537 100644
--- a/user-doc/Misc.txt
+++ b/user-doc/Misc.txt
@@ -124,6 +124,11 @@ chosen replicas. This is useful e.g. for bias exchange metadynamics \cite{piana}
 \subpage Regex </TD><TD> </TD><TD> POSIX regular expressions can be used to select multiple actions when using ARG (i.e. \ref PRINT).
 </TD>
 </TR>
+<TR>
+<TD WIDTH="5%"> 
+\subpage Files </TD><TD> </TD><TD> Dealing with Input/Outpt
+</TD>
+</TR>
 </TABLE>
 
 */
diff --git a/user-doc/extract b/user-doc/extract
index f9fa7041f..d57bdcfa3 100755
--- a/user-doc/extract
+++ b/user-doc/extract
@@ -216,9 +216,11 @@ do
 done
 
 
-for file in Bias Syntax Colvar Functions Group Installation Intro Analysis Glossary Tutorials Modules Regex  Misc Tools
+for f in *.txt
 do
 
+file=${f%.txt}
+
 # first replace with the content of the files
 # then grep out the special strings
 
diff --git a/user-doc/go-doxygen b/user-doc/go-doxygen
index 444172ac9..3bf2af804 100755
--- a/user-doc/go-doxygen
+++ b/user-doc/go-doxygen
@@ -17,7 +17,7 @@ fi
 
 LIST="
  IntroPP.txt ../CHANGES InstallationPP.txt SyntaxPP.txt ColvarPP.txt GroupPP.txt FunctionsPP.txt AnalysisPP.txt
-  BiasPP.txt ToolsPP.txt MiscPP.txt RegexPP.txt ModulesPP.txt TutorialsPP.txt GlossaryPP.txt automatic tutorials"
+  BiasPP.txt ToolsPP.txt MiscPP.txt RegexPP.txt FilesPP.txt ModulesPP.txt TutorialsPP.txt GlossaryPP.txt automatic tutorials"
 
 {
   cat Doxyfile
-- 
GitLab