diff --git a/patches/gromacs-4.5.5.config b/patches/gromacs-4.5.5.config index c4c96cc70c23ae5ce30c003563e8c5e5a23acc93..8529732bb2d56c68645d017d87ec94464e22f7e3 100644 --- a/patches/gromacs-4.5.5.config +++ b/patches/gromacs-4.5.5.config @@ -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" +} diff --git a/patches/gromacs-4.6.3.config b/patches/gromacs-4.6.3.config index a5d00fcea22295d52544fcd345e60947ff7553ef..b5d89332bfd90c7da73c33769c3f5ff3e8529642 100644 --- a/patches/gromacs-4.6.3.config +++ b/patches/gromacs-4.6.3.config @@ -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" +} diff --git a/patches/lammps-6Apr13.config b/patches/lammps-6Apr13.config index 7aa1e453acc89b3e771728925a4620caa2836edd..a83ff65c1a8e63d7f15d7d5aae0e6bdcafcc0f35 100644 --- a/patches/lammps-6Apr13.config +++ b/patches/lammps-6Apr13.config @@ -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/" +} diff --git a/patches/namd-2.8.config b/patches/namd-2.8.config index 3eff738a2fc6ae97add7a847e49352c15fcbe335..3bef46c3c5a3bd83f44e12caf867f063f2b40df4 100644 --- a/patches/namd-2.8.config +++ b/patches/namd-2.8.config @@ -4,3 +4,9 @@ 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 "" + echo "" + echo "For more information on NAMD you should visit http://www.ks.uiuc.edu/Research/namd/" +} diff --git a/patches/patch.sh b/patches/patch.sh index fc77435c8b6ca6db9b5eff1b8972fcafa9b3c6a4..6ee52c5af150b5a0fa557119189d4d6203d9b605 100755 --- a/patches/patch.sh +++ b/patches/patch.sh @@ -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 diff --git a/patches/qespresso-5.0.2.config b/patches/qespresso-5.0.2.config index 84c8e48453a9c74b3998ecf58c1ef6fe42d95a5d..f7c7b6ff5255426bf2178facfc72cc428d32e120 100644 --- a/patches/qespresso-5.0.2.config +++ b/patches/qespresso-5.0.2.config @@ -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" +} + diff --git a/user-doc/Modules.txt b/user-doc/Modules.txt index 0b6d9c5604a1e772babd27a07b29b4f82e2e4228..f4996b6cb2abaff1d5d21614bfa80172ccea5afd 100644 --- a/user-doc/Modules.txt +++ b/user-doc/Modules.txt @@ -1,47 +1,23 @@ /** -@page mymodules Modules +@page mymodules module -PLUMED 2 is written and maintained by five core developers none of whom work full -time on the maintanence and upkeep of the code. From our point of view it is thus -desirable to keep the core of the code small. In addition, we are very keen that -users who contribute functionality to PLUMED get the plaudits that they deserve. -For these reasons many of PLUMED's more advanced functionalities are provided in -modules that users can download. To download a module you simply change to the -<c> plumed2/mymodules </c> directory and issue the following command: +The functionality in PLUMED 2 is divided into a small number of modules. Some +users may only wish to use a subset of the functionality available within the +code while others may wish to use some of PLUMED's more complicated features. +For this reason the plumed source code is divided into modules, which users can +activate or deactivate to their hearts content. -\verbatim -./plumed-get-module.sh <name of module> -\endverbatim +- To activate a module add a file called modulename.on to the plumed2/src directory +- To deactivate a module add a file called modulename.off to the plumed2/src directory -The following optional modules can be added to PLUMED 2: +Obviously, in the above instructions modulename should be replaced by the name of the +module that you would like to activate or deactivate. -@MODULES@ - -\section addmodule Adding a module - -If you have a PLUMED module that you would like us to advertise on the website -you should copy the directory structure from <c> plumed2/template-module </c> -as well as all the files inside that directory and place your source and regtest -files in appropriate directories. You are responsible for finding a suitable -web repository to host the code that you have developed (we use http://www.assembla.com -for PLUMED). You do not need to give us write access to your repository as ensuring that -your code keeps working with any new release of PLUMED is YOUR responsibility. - -Once you are ready to release your code simply send any email to one of the developers -with a txt file that contains the following information in the following format: - -\verbatim -NAME: <the name of your module> +Some modules are active by default in the version of PLUMED 2 that you download from +the website while others are inactive. The following lists all of the modules that +are available in plumed and tells you whether or not they are active by default. -AUTHOR: <the list of people involved in the development of the module> - -REPOSITORY: <the command that retreives the code e.g. git clone git@git.assembla.com:plumed2.git> - -DESCRIPTION: - -<a short description of what it is your module calculates> -<citations and equations can be included using the usual doxygen commands> -\endverbatim +@MODULES@ */ diff --git a/user-doc/extract b/user-doc/extract index 6443e5d4d2bece46f110c1f24342f08c5086079d..d361a36779f675d14d53204cdbd247ffd939b5d9 100755 --- a/user-doc/extract +++ b/user-doc/extract @@ -18,7 +18,13 @@ done # Create the list of codes that plumed works with from the set of available patches for file in ../patches/*.diff do - echo "- $file" | sed -e 's/.diff//' | sed -e 's/..\/patches\///' >> automatic/codes.list + myengine=`echo "$file" | sed -e 's/.diff//' | sed -e 's/..\/patches\///'` + mytag=`echo "$myengine" | sed -e 's/\./\_/g'` + echo "- \subpage $mytag" >> automatic/codes.list + echo "/**" >> automatic/$myengine.txt + echo "\page $mytag $myengine" >> automatic/$myengine.txt + plumed patch -e $myengine -i -q >> automatic/$myengine.txt + echo "*/" >> automatic/$myengine.txt done ## Check for utilities that register actions with no documentation @@ -105,53 +111,62 @@ done # Find what modules the user has installed # Find the list of modules -if [ -d ../mymodules ] ; then - sed -i '' -e 's/type="user" visible="no" url="mymodules.html"/type="user" visible="yes" url="mymodules.html"/' PlumedLayout.xml - for file in `ls ../mymodules/available-modules/` - do - #Â Check if module has been installed - if [ -d "../mymodules/$file" ] ; then - # Generate documentation and accreditation on modules page - echo "\section $file" >> automatic/mymodules.list - echo >> automatic/mymodules.list - echo "<table align=center frame=void width=95%% celpadding=5%%>" >> automatic/mymodules.list - echo "<tr> <td width=70%%> </td> </tr> <td>" >> automatic/mymodules.list - author=`grep AUTHOR: ../mymodules/available-modules/"$file" | sed -e 's/AUTHOR://'` - echo "<b> author: $author </b>" >> automatic/mymodules.list - echo "</td> </tr>" >> automatic/mymodules.list - echo "<tr> <td colspan="2">" >> automatic/mymodules.list - dline=`grep -n DESCRIPTION: ../mymodules/available-modules/"$file" | sed -n 's/^\([0-9]*\)[:].*/\1/p'` >> automatic/mymodules.list - tail -n +$(($dline+1)) ../mymodules/available-modules/"$file" >> automatic/mymodules.list - echo "</td> </tr> </table>" >> automatic/mymodules.list - echo >> automatic/mymodules.list - echo >> automatic/mymodules.list - - # Find src files in module and add a link to the module description - for srcfile in `ls ../mymodules/"$file"/src/*cpp` ; do - ndocs=`grep PLUMEDOC "$srcfile" | wc -l | awk '{print $1}'` - for ((line=1;line<$ndocs;++line)) ; do - docfile=`grep PLUMEDOC "$srcfile" | grep -v END | head -n $line | tail -n 1 | awk '{print $3}'` - cat automatic/"$docfile".tmp | - { - while read -r LINE ; do - if `echo $LINE | grep "\section $docfile" 1>/dev/null 2>&1` - then - echo $LINE - echo "<table align=center frame=void width=95%% celpadding=5%%>" - echo "<tr> <td width=70%%> </td> <td>" - echo "<b> This is part of the \ref $file module </b>" - echo "</td> </tr> </table>" - else - echo "$LINE" - fi - done - } > automatic/"$docfile"1.tmp - mv automatic/"$docfile"1.tmp automatic/"$docfile".tmp - done - done - fi - done -fi +# if [ -d ../mymodules ] ; then +# sed -i '' -e 's/type="user" visible="no" url="mymodules.html"/type="user" visible="yes" url="mymodules.html"/' PlumedLayout.xml +echo "<table align=center frame=void width=65%% cellpadding=5%%>" > automatic/modules.list +echo "<tr> <td> <b> Module name </b> </td> <td> <b> Default behavior </b> </td> </tr>" >> automatic/modules.list +for file in `ls ../src/*/module.type | sed -e 's/..\/src\///' | sed -e 's/\/module.type//'` +do + dstr=`head ../src/$file/module.type` + if [ "$dstr" != "always" ] ; then + echo "<tr> <td> $file </td>" >> automatic/modules.list + if [ "$dstr" == "default-on" ] ; then + echo "<td> on </td> </tr>" >> automatic/modules.list + else + echo "<td> off </td> </tr>" >> automatic/modules.list + fi +# # Generate documentation and accreditation on modules page +# echo "\section $file" >> automatic/mymodules.list +# echo >> automatic/mymodules.list +# echo "<table align=center frame=void width=95%% celpadding=5%%>" >> automatic/mymodules.list +# echo "<tr> <td width=70%%> </td> </tr> <td>" >> automatic/mymodules.list +# author=`grep AUTHOR: ../mymodules/available-modules/"$file" | sed -e 's/AUTHOR://'` +# echo "<b> author: $author </b>" >> automatic/mymodules.list +# echo "</td> </tr>" >> automatic/mymodules.list +# echo "<tr> <td colspan="2">" >> automatic/mymodules.list +# dline=`grep -n DESCRIPTION: ../mymodules/available-modules/"$file" | sed -n 's/^\([0-9]*\)[:].*/\1/p'` >> automatic/mymodules.list +# tail -n +$(($dline+1)) ../mymodules/available-modules/"$file" >> automatic/mymodules.list +# echo "</td> </tr> </table>" >> automatic/mymodules.list +# echo >> automatic/mymodules.list +# echo >> automatic/mymodules.list + + # Find src files in module and add a link to the module description + for srcfile in `ls ../src/"$file"/*cpp` ; do + ndocs=`grep PLUMEDOC "$srcfile" | grep -v END | wc -l | awk '{print $1}'` + for ((line=1;line<=$ndocs;++line)) ; do + docfile=`grep PLUMEDOC "$srcfile" | grep -v END | head -n $line | tail -n 1 | awk '{print $3}'` + cat automatic/"$docfile".tmp | + { + while read -r LINE ; do + if `echo $LINE | grep "section $docfile" 1>/dev/null 2>&1` + then + echo $LINE + echo "<table align=center frame=void width=95%% celpadding=5%%>" + echo "<tr> <td width=70%%> </td> <td>" + echo "<b> This is part of the $file \\ref mymodules </b>" + echo "</td> </tr> </table>" + else + echo "$LINE" + fi + done + } > automatic/"$docfile"1.tmp + mv automatic/"$docfile"1.tmp automatic/"$docfile".tmp + done + done + fi +done +echo "</table>" >> automatic/modules.list +# fi # Generate all the documentation from keywords source ../sourceme.sh @@ -237,7 +252,7 @@ cat $file.txt | echo "</table>" elif [ "$LINE" = "@MODULES@" ] then - cat automatic/mymodules.list + cat automatic/modules.list elif [ "$LINE" = "@FUNCTION@" ] then echo "<table align=center frame=void width=95%% cellpadding=5%%>"