diff --git a/developer-doc/usingDoxygen.md b/developer-doc/usingDoxygen.md index 7ef8e8e692d5b8185295d212f357baf50bcf1819..e0dda8b7d3241d65125246cf6dfcf063a45826bc 100644 --- a/developer-doc/usingDoxygen.md +++ b/developer-doc/usingDoxygen.md @@ -466,20 +466,14 @@ DISTANCE ATOMS=1,2 LABEL=dist INCLUDE FILE=toBeIncluded.inc \ endplumedfile /*** But with no space between the \ and the endplumedfile -\plumedincludefile -# this is toBeIncluded.inc +\plumedfile +#SETTINGS FILENAME=toBeIncluded.inc RESTRAINT ARG=dist AT=2.0 KAPPA=1.0 -\ endplumedincludefile /*** But with no space between the \ and the endplumedincludefile -\endverbatim - -Please note that it is essential that you write: - -\verbatim -# this is <filename> +\ endplumedfile /*** But with no space between the \ and the endplumedincludefile \endverbatim -on the second line in the plumedincludefile environment as this is where the script that builds the user documentation gets the name of the included file -from. Also notice that if, as in the example above, the included file is not (by itself) a valid plumed input it CANNOT be called *.dat as the script that +By including the FILENAME attribute on the SETTINGS line you can set the name of the plumed input file that is generated when the input is tested. +Also notice that if, as in the example above, the included file is not (by itself) a valid plumed input it CANNOT be called *.dat as the script that checks the input will complain. \subsection molfileeg Using MOLFILE in your example input files diff --git a/src/generic/Group.cpp b/src/generic/Group.cpp index 59b26c780d33341308f4bfde9bf0fdfaa7c32a00..bdf44b2235b897a18e94ea9cbd27cb82989a6525 100644 --- a/src/generic/Group.cpp +++ b/src/generic/Group.cpp @@ -79,11 +79,12 @@ PRINT ARG=c FILE=colvar Groups can be conveniently stored in a separate file. E.g. one could create a file named `groups.dat` which reads -\plumedincludefile +\plumedfile +#SETTINGS FILENAME=groups.dat # this is groups.dat o: GROUP ATOMS=1,4,7,11,14 h: GROUP ATOMS=2,3,5,6,8,9,12,13 -\endplumedincludefile +\endplumedfile and then include it in the main 'plumed.dat' file \plumedfile INCLUDE FILE=groups.dat diff --git a/src/generic/Include.cpp b/src/generic/Include.cpp index 950d6ef7e7d979ac8e7df861fb6492ea4c4adf3f..d146678a54f6fef9db40b8250b6fcb796ebf85e2 100644 --- a/src/generic/Include.cpp +++ b/src/generic/Include.cpp @@ -54,11 +54,12 @@ d: DISTANCE ATOMS=c1,c2 PRINT ARG=d \endplumedfile where the content of file pippo.dat is -\plumedincludefile +\plumedfile +#SETTINGS FILENAME=pippo.dat # this is pippo.dat c1: COM ATOMS=1-100 c2: COM ATOMS=101-202 -\endplumedincludefile +\endplumedfile The files in this example are rather short, but imagine a case like this one: \plumedfile @@ -67,7 +68,8 @@ c: COORDINATION GROUPA=groupa GROUPB=groupb R_0=0.5 METAD ARG=c HEIGHT=0.2 PACE=100 SIGMA=0.2 BIASFACTOR=5 \endplumedfile Here `groups.dat` could be huge file containing group definitions such as -\plumedincludefile +\plumedfile +#SETTINGS FILENAME=groups.dat # this is groups.dat groupa: GROUP ... ATOMS={ @@ -91,17 +93,18 @@ groupb: GROUP ... 121 } ... -\endplumedincludefile +\endplumedfile So, included files are the best place where one can store long definitions. Another case where INCLUDE is very useful is when running multi-replica simulations. Here different replicas might have different input files, but perhaps a large part of the input is shared. This part can be put in a common included file. For instance you could have `common.dat`: -\plumedincludefile +\plumedfile +#SETTINGS FILENAME=common.dat # this is common.dat t: TORSION ATOMS=1,2,3,4 -\endplumedincludefile +\endplumedfile Then `plumed.0.dat`: \plumedfile # this is plumed.0.dat @@ -128,15 +131,17 @@ t: TORSION ATOMS=1,2,3,4 INCLUDE FILE=other.inc \endplumedfile Then `other.0.inc`: -\plumedincludefile +\plumedfile +#SETTINGS FILENAME=other.0.inc # this is other.0.inc RESTRAINT ARG=t AT=1.0 KAPPA=10 -\endplumedincludefile +\endplumedfile And `other.1.inc`: -\plumedincludefile +\plumedfile +#SETTINGS FILENAME=other.1.inc # this is other.1.inc RESTRAINT ARG=t AT=1.2 KAPPA=10 -\endplumedincludefile +\endplumedfile diff --git a/user-doc/Doxyfile b/user-doc/Doxyfile index 571e3ad3b2d0754e28d81bafef988651c6a9aff6..26134d62f23de31bc8e7f368925c462a9bfc4475 100644 --- a/user-doc/Doxyfile +++ b/user-doc/Doxyfile @@ -238,8 +238,6 @@ ALIASES = \ "tarball{1}=\htmlonly<span style=\"background-color:yellow\">\endhtmlonly<a href=\"tutorial-resources/\1.tar.gz\" style=\"font-weight:bold\" style=\"color:green\" download=\"\1.tar.gz\"> TARBALL </a>\htmlonly</span>\endhtmlonly" \ "plumedfile=\verbatim BEGIN_PLUMED_FILE" \ "endplumedfile=\endverbatim" \ - "plumedincludefile=\verbatim BEGIN_PLUMED_FILE" \ - "endplumedincludefile=\endverbatim" \ "auxfile{1}=\verbatim" \ "endauxfile=\endverbatim" \ "plumednotmaintained=\warning This branch is not maintained. Users are invited to upgrade to a newer version" diff --git a/user-doc/Makefile b/user-doc/Makefile index 9e869587acfe2f19716fb27bc362580110ebbb7a..9e35d3c8ed97a625c73297932d116bc8fa504936 100644 --- a/user-doc/Makefile +++ b/user-doc/Makefile @@ -17,7 +17,7 @@ else all: ifeq ($(make_doc),yes) make_pdfdoc=$(make_pdfdoc) ./extract - # temporarily removed for travis to build: + # check examples in input file: ./go-example-check make_pdfdoc=$(make_pdfdoc) ./go-doxygen cp *png html/ diff --git a/user-doc/Miscelaneous.md b/user-doc/Miscelaneous.md index a1a452d417897e3aff42fcfcfff4c40bb8a16c4f..01e9712f20287eb0c5e505dac68e3b196341a46b 100644 --- a/user-doc/Miscelaneous.md +++ b/user-doc/Miscelaneous.md @@ -482,10 +482,11 @@ DISTANCE ATOMS=1,2 LABEL=dist INCLUDE FILE=toBeIncluded.inc \endplumedfile plus a "toBeIncluded.inc" file -\plumedincludefile +\plumedfile +#SETTINGS FILENAME=toBeIncluded.inc # this is toBeIncluded.inc RESTRAINT ARG=dist AT=2.0 KAPPA=1.0 -\endplumedincludefile +\endplumedfile However, when you do this it is important to recognize that \ref INCLUDE is a real directive that is only resolved after all the \ref comments have been stripped and the \ref ContinuationLines have been unrolled. This means it diff --git a/user-doc/go-example-check b/user-doc/go-example-check index bd52325922082bc13bb3f10f99f62cec1bb07a1e..846bedfdf60e469779631860a0a66d9533a48928 100755 --- a/user-doc/go-example-check +++ b/user-doc/go-example-check @@ -5,7 +5,7 @@ mkdir example-check # This generates plumed.dat files for each of the documentation pages in the manual for file in *PP.md automatic/*.txt ../CHANGES/*.md tutorials/*.txt tutorials/*.site tutorials/others/*.txt ; do - # echo Generating examples to check for file $file + #echo Generating examples to check for file $file # Single replica examples splits=`echo $file | sed -e 's/\// /g'` nf=`echo $splits | awk '{print NF}'` @@ -29,31 +29,16 @@ for file in *PP.md automatic/*.txt ../CHANGES/*.md tutorials/*.txt tutorials/*.s wrongc=`grep "this is wrong" example-check/$fname/$i.dat | wc -l | awk '{print $1}'` if [ $wrongc -gt 0 ] ; then rm example-check/$fname/$i.dat + else + # This deals with include files + hasname=`grep "#SETTINGS" example-check/$fname/$i.dat | grep "FILENAME=" | wc -l | awk '{print $1}'` + if [ $hasname -gt 0 ] ; then + filename=`grep "#SETTINGS" example-check/$fname/$i.dat | awk '{for(i=1;i<=NF;++i){if(match($i,"FILENAME=")){print $i}}}' | sed -e 's/FILENAME=//'` + mv example-check/$fname/$i.dat example-check/$fname/$filename + fi fi sline=$eline done - # Check for plumed include files - cat $file | - awk 'BEGIN{inp=0;}{ - if( $1=="\\endplumedincludefile" ){ print ">>END OF EXAMPLE>>"; inp=0; } - else if( $1=="\\plumedincludefile" ){ inp=1; } - else if( inp==1 ){ print $0; } - }' > example-check/$fname.inc - ninc=`grep ">>END OF EXAMPLE>>" example-check/$fname.inc | wc -l | awk '{print $1}'` - # And split the set of include files - sline=0 - for ((i=1;i<=$ninc;++i)) ; do - checks=`grep -A 1 "plumedincludefile" $file | head -n $((($i-1)*6+2)) | tail -n 1 | awk '{match($0,"# this is")}'` - ifname=`grep -A 1 "plumedincludefile" $file | head -n $((($i-1)*6+2)) | tail -n 1 | awk '{if(match($0,"# this is")){ print $4; } else { print "ERROR";}}'` - if [ $ifname == "ERROR" ] ; then - echo ERROR in specification of include file for $file - exit 1 - fi - eline=`grep -n ">>END OF EXAMPLE>>" example-check/$fname.inc | head -n $i | tail -n 1 | awk '{print $1}' | sed -e 's/:>>END//g'` - head -n $(($eline-1)) example-check/$fname.inc | tail -n $(($eline-1-$sline)) > example-check/$fname/$ifname - sline=$eline - done - rm example-check/$fname.inc # Check for auxiliary files cat $file | awk 'BEGIN{inp=0;}{ @@ -145,7 +130,7 @@ for dir in * ; do fi nerr=`grep "PLUMED error" check.log | wc -l | awk '{print $1}'` if [ $nerr -gt 0 ] ; then - echo Found mistakes for examples $file + echo Found mistakes for examples in $dir example $file cat check.log exit 1 fi diff --git a/user-doc/go-spelling b/user-doc/go-spelling index 6b9ced05d40852fdd61136d38ac4711d10ce09b1..e01ae4b2f46ce58f620b55b92916873043ab4aa1 100755 --- a/user-doc/go-spelling +++ b/user-doc/go-spelling @@ -29,8 +29,8 @@ for file in *PP.md automatic/*.txt ../CHANGES/*.md tutorials/*.txt tutorials/*.s # This is some stuff to get rid of stuff that trips up the spell checker: the equations and the plumed examples cat $file | grep -v "\\image" | grep -v "anchor" | sed -e 's/psi-1//' | sed -e 's/-#//' | sed -e 's/@//' | sed -e 's/&//' | sed -e 's/\vdots//' | awk 'BEGIN{inp=0}{ - if($1=="\\endplumedfile" || $1=="\\f]" || $1=="\\f}" || $1=="\\endauxfile" || $1=="\\endplumedincludefile" || $1=="\\endverbatim" || $1=="\\endcode"){inp=0;} - else if($1=="\\plumedfile" || $1=="\\f[" || $1=="\\f{eqnarray*}{" || match($1,"\\auxfile") || $1=="\\plumedincludefile" || $1=="\\verbatim" || index($1,"\\code{")!=0 ){inp=1;} + if($1=="\\endplumedfile" || $1=="\\f]" || $1=="\\f}" || $1=="\\endauxfile" || $1=="\\endverbatim" || $1=="\\endcode"){inp=0;} + else if($1=="\\plumedfile" || $1=="\\f[" || $1=="\\f{eqnarray*}{" || match($1,"\\auxfile") || $1=="\\verbatim" || index($1,"\\code{")!=0 ){inp=1;} else if(inp==0){ skip=0; for(i=1;i<=NF;++i){ diff --git a/user-doc/tutorials/aa-lugano-2.txt b/user-doc/tutorials/aa-lugano-2.txt index 9235e1311f8acd5f383ea38e6a85d36114822841..4c92988a1e994766457499de18e66a6a275ccd8a 100644 --- a/user-doc/tutorials/aa-lugano-2.txt +++ b/user-doc/tutorials/aa-lugano-2.txt @@ -390,7 +390,8 @@ is presented in the following but the exercise is possible only if plumed is com Here we use the "replica" syntax of plumed to write a single plumed input file for all the windows: -\plumedincludefile +\plumedfile +#SETTINGS FILENAME=plumed.dat # this is plumed.dat # vim:ft=plumed MOLINFO STRUCTURE=diala.pdb @@ -413,7 +414,7 @@ restraint-phi: RESTRAINT ... } ... # monitor the two variables and the bias potential from the restraint PRINT STRIDE=20 ARG=phi,psi,restraint-phi.bias FILE=COLVAR -\endplumedincludefile +\endplumedfile The \@replicas syntax allow to define different values for a variable for the different replicas.