Merge "Fixes linkage with FFTW + MKL for BLAS/LAPACK" into release-4-6
authorMark Abraham <mark.j.abraham@gmail.com>
Mon, 11 Mar 2013 11:10:49 +0000 (12:10 +0100)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Mon, 11 Mar 2013 11:10:49 +0000 (12:10 +0100)
13 files changed:
CMakeLists.txt
INSTALL.cmake [deleted file]
README
admin/README.patches [deleted file]
admin/installguide/installguide.tex
bootstrap
scripts/completion.bash
scripts/completion.csh
scripts/completion.zsh
src/mdlib/domdec.c
src/mdlib/gmx_wallcycle.c
src/mdlib/nbnxn_search.c
tests/CMakeLists.txt

index 123c53363e06e2282cb07e14b7bb339eb1895647..df12172a9a74370c7bfcaa51507c9db3d1b19a74 100644 (file)
@@ -56,7 +56,12 @@ mark_as_advanced(DART_ROOT)
 # machine with no git. 
 #
 # NOTE: when releasing the "-dev" suffix needs to be stripped off!
-set(PROJECT_VERSION "4.6.1-dev")
+set(PROJECT_VERSION "4.6.2-dev")
+# The version number of the regressiontest tarball against which this
+# git branch can be tested. Normally, this will be the version of the
+# last patch release. Comment the next line out for branches leading
+# to a major/minor release.
+set(REGRESSIONTEST_VERSION "4.6.1")
 set(CUSTOM_VERSION_STRING ""
     CACHE STRING "Custom version string (if empty, use hard-coded default)")
 mark_as_advanced(CUSTOM_VERSION_STRING)
@@ -543,11 +548,11 @@ endif (GMX_GSL)
 
 option(GMX_X11 "Use X window system" OFF)
 if (GMX_X11)
-       find_package(X11)
-       # X11 includes/libraries are only set in the ngmx subdirectory!
-       if(X11_FOUND)
-       set(HAVE_X11 1)
-       endif(X11_FOUND)
+    find_package(X11)
+    # X11 includes/libraries are only set in the ngmx subdirectory!
+    if(NOT X11_FOUND)
+        message(WARNING "X11 include files and/or libraries were not found. Will not build the GROMACS X11-binaries, such as ngmx")
+    endif()
 endif(GMX_X11)
 
 include(ThreadMPI)
diff --git a/INSTALL.cmake b/INSTALL.cmake
deleted file mode 100644 (file)
index c601856..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-                    Welcome to GROMACS!
-
-*Note*: Detailed, step-by-step installation instructions
-are available on the website
-http://www.gromacs.org/Downloads/Installation_Instructions.
-
-*Note*: If you want to use automake for building look at INSTALL.
-        However, automake will be deprecated in releases after 4.5
-
-
-
-Cmake  (cross-platform make) is a relatively new build system that
-is gaining in popularity. One of the biggest selling points is
-compatibility with MS Windows. Starting with the 4.5 release,
-it is possible to configure and compile the source code with it.
-
-GETTING CMAKE
-
-Packages for various platforms can be found on the project's download page.
-Most of the Linux distributions come with packages available through the
-corresponding package manage. Make sure the installed version is 2.6 or later.
-Using CMake
-
-Please read carefully the documentation on the CMake website. Developers
-may look at some of the online tutorials.
-
-CONFIGURING WITH DEFAULTS SETTINGS
-
-It is advisable that the configuration and the build of the binaries are done
-outside of the source tree. On Linux/Mac, the following will configure
-the build with the default settings:
-
-$ tar xvfz gromacs-4.5.tar.gz
-$ ls
-gromacs-4.5
-$ mkdir build
-$ cd build
-$ cmake ../gromacs-4.5
-$ make
-
-On multi-core CPU systems (very likely nowadays), the parallel make will do the job much faster:
-
-$ make -j 4
-$ make install
-
-Substitute 4 with the number of available cores.
-
-CONFIGURING WITH CUSTOM OPTIONS
-
-Custom options can be set in a few different ways.A list of the more commonly
-used ones can be found at http://www.gromacs.org/Developer_Zone/Cmake/Custom_options.
-
- *command line flag
-
-The values of custom options are supplied with the -D flag. Note that the source path should
-be the last argument (otherwise remove the space between -D and the option)!
-
-$ cmake -D GMX_DOUBLE=ON ../gromacs-4.5
-
- *interactive CMake session
-
-$ cmake -i ../gromacs-4.5
-
- *curses cmake interface (ccmake)
-
-$ ccmake ../gromacs-4.5
-
- *CMake GUI
-
-$ cmake-gui ../gromacs-4.5
-
-Explanation about the different options will be presented when using any of the
-interactive, curses or gui methods.
-
-All configure options are saved in the CMakeCache.txt file in the build directory.
-The file can be edited using a text editor, but after that cmake should be run again.
-
-$ vim CMakeCache.txt
-$ cmake ../gromacs-4.5
diff --git a/README b/README
index 89187253139475f266f1146407b00a3da0d52aff..84e5347fa88851ba3539f5ceaa21c6efff09626a 100644 (file)
--- a/README
+++ b/README
@@ -1,10 +1,10 @@
 
                Welcome to the official version of GROMACS!
 
-If you are familiar with unix, it should be fairly trivial to compile and
-install GROMACS. Installation instructions for CMake are available in the
-INSTALL.* files (the use of autotools is no longer available). A more
-extended step-by-step guide can be found on our website http://www.gromacs.org.
+If you are familiar with Unix, it should be fairly trivial to compile and
+install GROMACS. GROMACS uses only the CMake build sytem, and our
+installation guide can be found at
+http://www.gromacs.org/Documentation/Installation_Instructions.
 
 Of course we will do our utmost to help you with any problems, but PLEASE 
 READ THE INSTALLATION INSTRUCTIONS BEFORE CONTACTING US!
@@ -33,10 +33,11 @@ main code we appreciate if you first test that it works with (and without)
 MPI, threads, double precision, etc.
 
 If you still want to distribute a modified version or use part of GROMACS
-in your own program, remember that the entire modified must be licensed 
-under GPL, and that it must clearly be labeled as derived work. It should 
-not use the name "official GROMACS", and make sure support questions are
-directed to you instead of the GROMACS developers.
+in your own program, remember that the entire project must be licensed
+according to the requirements of the LGPL v2.1 license under which you
+received this copy of GROMACS. We request that it must clearly be labeled as
+derived work. It should not use the name "official GROMACS", and make
+sure support questions are directed to you instead of the GROMACS developers.
 Sorry for the hard wording, but it is meant to protect YOUR reseach results!
 
                                * * * * *
@@ -47,16 +48,26 @@ To help us fund development, we humbly ask that you cite the GROMACS papers:
 * GROMACS: A message-passing parallel molecular dynamics implementation
   H.J.C. Berendsen, D. van der Spoel and R. van Drunen
   Comp. Phys. Comm. 91, 43-56 (1995)
+  DOI: 10.1016/0010-4655(95)00042-E
  
 * GROMACS 4: Algorithms for highly efficient, load-balanced, and scalable
   molecular simulation
   B. Hess and C. Kutzner and D. van der Spoel and E. Lindahl
   J. Chem. Theory Comput. 4 (2008) pp. 435-447
+  DOI: 10.1021/ct700301q
+
+* GROMACS 4.5: a high-throughput and highly parallel open source
+  molecular simulation toolkit
+  Sander Pronk, Szilárd Páll, Roland Schulz, Per Larsson, Pär Bjelkmar,
+  Rossen Apostolov, Michael R. Shirts, Jeremy C. Smith, Peter M. Kasson,
+  David van der Spoel, Berk Hess, Erik Lindahl.
+  Bioinformatics (2013)
+  DOI: 10.1093/bioinformatics/btt055
 
 There are a lot of cool features we'd like to include in future versions,
 but our resources are limited. All kinds of donations are welcome, both in 
 form of code, hardware and funding! Industrial users who choose to pay
-for a license pro bono (it is still GPL and can be redistributed freely) or
+for a license pro bono (it is still LGPL and can be redistributed freely) or
 contribute in other ways are listed as GROMACS supporters on our webpages. 
 Don't hesitate to contact us at gromacs@gromacs.org if you are interested.
 
diff --git a/admin/README.patches b/admin/README.patches
deleted file mode 100644 (file)
index d61451c..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-
-To support special compiler and OS combinations like the Portland
-compilers on Linux/x86, Compaq compilers on Linux/Alpha, and enable
-shared libraries when using wrapper scripts like mpcc we are using
-a prerelease version of libtool (1.4e), and the libtool.m4 script has been
-patched and included at the end of acinclude.m4.
-
-PLEASE NOTE - You NEVER have to install libtool, and autoconf/automake 
-are only necessary for developers who change the Makefile.in's. You can 
-find the software at ftp.gromacs.org/developers.
-
-This file summarizes the patches/extensions we made so we can check it
-if we ever update the files in GROMACS:
-
-
-
-**********************************************************************
-
-B. Changes in libtool-1.4e:
-   All these changes should go in libtool.m4. This file is included
-   in the GROMACS acinclude.m4 to make sure we use the right version.
-
-1. I have implemented Fortran 77 support in libtool, which hopefully
-   will make its way into the main distribution. This involves
-   the AC_LIBTOOL_LANG_F77_CONFIG macro, and all supporting routines
-   with "F77" in the name :-) 
-   Since a couple of f77 compilers (ibm xlf notably) dont accept -DPIC
-   I also separated the compiler flag test into one for -fPIC and
-   a separate one for -DPIC.
-   I have changed echo to printf for the lt_simple.. variables, to
-   get the fortran formatting right.
-
-   There is one specific Gromacs-related change that won't be a
-   part of the main libtool distribution:
-
-   I removed the --with-tags argument from _LT_AC_TAGCONFIG, 
-   to fix libtool always creating the F77 and CXX macros, 
-   and replaced it with a check for ac_cv_prog_**_g to determine
-   whether we should use CXX and/or F77. Don't care about GCJ...
-   To avoid AC_PROG_CXX always being expanded, I introduced the macro 
-   inside an always-false test in our configure.ac.
-  
-2. To support dynamic libraries on Alpha/Linux with the Compaq Compilers,
-   I have added some flag specifications in the non-gcc compiler section 
-   of the AC_LIBTOOL_PROG_COMPILER_PIC macro. I added the linux*) case:
-
-=============================================================
-    irix5* | irix6* | nonstopux*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-+  linux*)
-+    # Check flags for non-gnu compilers on Linux 
-+    case "$host_cpu" in
-+    alpha*)
-+      # The only non-gnu compiler on Linux/Alpha is the Compaq one:
-+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-+      ;;
-+
-+    i?86)
-+      # Intel icc compiler
-+      if $CC -V 2>&1 | grep 'Intel Corporation' > /dev/null 2>&1; then
-+          _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption,link,'
-+          _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-+        else
-+          _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-+        fi     
-+      ;;
-+      
-+     ia64)
-+      # Intel icc compiler
-+      if $CC -V 2>&1 | grep 'Intel Corporation' > /dev/null 2>&1; then
-+          _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption,link,'
-+          _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-+        else
-+          _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-+        fi     
-+      ;;
-+
-+    *)
-+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-+      ;;
-+    esac
-+    ;;
-
-    newsos6)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-
-=====================================================================
-The intel compilers echoes stupid stuff to stderr, which is interpreted
-as errors when libtool checks for supported flags. As a workaround we
-only grep for the actual flag tried, or the words "flag" or "option".
-The modified versions of the macros are:
-
-
-# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#              [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
-[AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-  ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   save_CFLAGS="$CFLAGS"
-   CFLAGS="$CFLAGS $3"
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-   if (eval $ac_compile 2>conftest.err) && test -s $ac_outfile; then 
-     # Modified by Erik Lindahl:
-     # Some compilers (icc, pgcc) echo stupid stuff to stderr.
-     # To avoid this being interpreted as errors we check the output
-     # and only fail the test if the option is present, or one of the
-     # words 'option' or 'flag'.
-     if test -n "$3" && grep "$3" conftest.err > /dev/null 2>&1 || grep "option" conftest.err > /dev/null 2>&1 || grep "flag" conftest.err > /dev/null 2>&1 ; then
-        # Append any errors to the config.log.
-        cat conftest.err 1>&AS_MESSAGE_LOG_FD
-     else
-       $2=yes
-     fi
-   fi
-   $rm conftest*
-   CFLAGS="$save_CFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    ifelse([$5], , :, [$5])
-else
-    ifelse([$6], , :, [$6])
-fi
-])# AC_LIBTOOL_COMPILER_OPTION
-
-
-# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                          [ACTION-SUCCESS], [ACTION-FAILURE])
-# ------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
-[AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   printf "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -n "$3" && grep "$3" conftest.err > /dev/null 2>&1 || grep "option" conftest.err > /dev/null 2>&1 || grep "flag" conftest.err > /dev/null 2>&1 ; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-     else
-       $2=yes
-     fi
-   fi
-   $rm conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    ifelse([$4], , :, [$4])
-else
-    ifelse([$5], , :, [$5])
-fi
-])# AC_LIBTOOL_LINKER_OPTION
-
-
-
-===============================================================
-
-That's it. I've submitted most patches and extensions to 
-automake/libtool mailing lists, so hopefully the next release will be 
-easier if they are included in future versions :-)
-
-Erik Lindahl <lindahl@gromacs.org>, 2002-01-23
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
index a9cb1c544cf9fda89b558feafa7412a22eb10259..c5b8b30bbdd6a5b3286c08185365e58a3d4f791c 100644 (file)
@@ -70,8 +70,8 @@ see the documentation at
 \end{enumerate}
 Or, as a sequence of commands to execute:
 \begin{verbatim}
-tar xfz gromacs-4.6.tar.gz
-cd gromacs-4.6
+tar xfz gromacs-4.6.1.tar.gz
+cd gromacs-4.6.1
 mkdir build
 cd build
 cmake .. -DGMX_BUILD_OWN_FFTW=ON
@@ -153,8 +153,8 @@ also requires \cuda{}, and remains the only hardware-based
 acceleration available for implicit solvent simulations in
 \gromacs{} at the moment. However, the long-term plan is to enable 
 this functionality in core Gromacs, and not have the OpenMM
-interface supported by the \gromacs team. RIght now there might be
-some build issues for OpenMM, but they should be fixed by release 4.6.1.
+interface supported by the \gromacs team. Right now there are
+some build issues for OpenMM.
 
 If you wish to run in parallel on multiple machines across a network,
 you will need to have
@@ -308,8 +308,8 @@ line is the name of the directory containing the
 example, download the source tarball and use
 % TODO: keep up to date with new releases!
 \begin{verbatim}
-$ tar xfz gromacs-4.6.tgz
-$ cd gromacs-4.6
+$ tar xfz gromacs-4.6.1.tgz
+$ cd gromacs-4.6.1
 $ mkdir build-cmake
 $ cd build-cmake
 $ cmake ..
@@ -470,10 +470,19 @@ single and double precision, and with and without \mpi{}. By default,
 \gromacs{} will suffix binaries and libraries for such builds with
 '\verb+_d+' for double precision and/or '\verb+_mpi+' for \mpi{} (and
 nothing otherwise). This can be controlled manually with
-\verb+GMX_DEFAULT_SUFFIX+, \verb+GMX_BINARY_SUFFIX+ and
-\verb+GMX_LIBRARY_SUFFIX+. This can also be useful for resolving
-libary-naming conflicts with existing packges (\verb+GMX_PREFIX_LIBMD+
-also can be useful).
+\verb+GMX_DEFAULT_SUFFIX (ON/OFF)+, \verb+GMX_BINARY_SUFFIX+ (takes 
+a string) and \verb+GMX_LIBS_SUFFIX+ (also takes a string). 
+This can also be useful for resolving libary-naming conflicts with 
+existing packges (\verb+GMX_PREFIX_LIBMD+ also can be useful).
+For instance, to set a custom suffix for binaries and libraries, 
+one might specify:
+
+\begin{verbatim}
+cmake .. -DGMX_DEFAULT_SUFFIX=OFF -DGMX_BINARY_SUFFIX=_mod -DGMX_LIBS_SUFFIX=_mod
+\end{verbatim}
+
+Thus the names of all binaries and libraries will be appended with
+"_mod."
 
 \subsection{Building \gromacs{}}
 
@@ -546,7 +555,7 @@ The simplest way to run the checks is to build \gromacs{} with
 \verb+-DREGRESSIONTEST_DOWNLOAD+, and run \verb+make check+.
 \gromacs{} will automatically download and run the tests for you.
 Alternatively, you can download and unpack the tarball yourself from
-\url{http://gerrit.gromacs.org/download/regressiontests-4.6.tar.gz},
+\url{http://gerrit.gromacs.org/download/regressiontests-4.6.1.tar.gz},
 and use the advanced \cmake{} option \verb+REGRESSIONTEST_PATH+ to
 specify the path to the unpacked tarball, which will then be used for
 testing. If this doesn't work, then please read on.
@@ -650,8 +659,7 @@ parallel job execution.
 \subsubsection{BlueGene/P}
 
 There is currently no native acceleration on this platform, but the
-default plain C kernels will work. Toolchain files will be improved in
-\gromacs{} 4.6.1.
+default plain C kernels will work.
 
 \subsubsection{BlueGene/Q}
 
@@ -701,7 +709,7 @@ installation performed for that using the login node's toolchain.
 
 This is the architecture of the K computer, which uses Fujitsu Sparc64viiifx 
 chips. Gromacs-4.6 will build with default C kernels on this architecture,
-and Gromacs-4.6.1 will add accelerated kernels and a custom toolchain.
+and Gromacs-4.6.2 will add accelerated kernels and a custom toolchain.
 
 \section{Tested platforms}
 
index 36218eef0c8f8d84c5b2ba27931a136e522502eb..0e6c2654939cede55d79dc3d1be73ac8cbdac522 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -4,5 +4,6 @@
 
 echo "\
 The use of autotools for installing GROMACS is deprecated for 4.6 onwards
-Please switch to CMake. Check http://www.gromacs.org/Developer_Zone/Cmake
+Please switch to CMake. Check out
+http://www.gromacs.org/Documentation/Installation_Instructions
 for instructions."
index ac5d6b5e5452e2db2f8b632b1070f99acd20251b..e0b92294bea8a195260a4613c23731e53b18f25a 100644 (file)
@@ -606,7 +606,7 @@ shopt -s extglob
 _g_hbond_compl() {
 local p c
 COMPREPLY=() c=${COMP_WORDS[COMP_CWORD]} p=${COMP_WORDS[COMP_CWORD-1]}
-if (( $COMP_CWORD <= 1 )) || [[ $c == -* ]]; then COMPREPLY=( $(compgen  -W ' -f -s -n -num -g -ac -dist -ang -hx -hbn -hbm -don -dan -life -nhbdist -h -version -nice -b -e -dt -tu -xvg -a -r -noda -r2 -abin -rbin -nonitacc -contact -shell -fitstart -fitstart -temp -smooth -dump -max_hb -nomerge -geminate -diff -acflen -nonormalize -P -fitfn -ncskip -beginfit -endfit' -- $c)); return 0; fi
+if (( $COMP_CWORD <= 1 )) || [[ $c == -* ]]; then COMPREPLY=( $(compgen  -W ' -f -s -n -num -g -ac -dist -ang -hx -hbn -hbm -don -dan -life -nhbdist -h -version -nice -b -e -dt -tu -xvg -a -r -noda -r2 -abin -rbin -nonitacc -contact -shell -fitstart -fitstart -temp -smooth -dump -max_hb -nomerge -geminate -diff -nthreads -acflen -nonormalize -P -fitfn -ncskip -beginfit -endfit' -- $c)); return 0; fi
 case "$p" in
 -tu) COMPREPLY=( $(compgen -W ' fs ps ns us ms s ' -- $c ));;
 -xvg) COMPREPLY=( $(compgen -W ' xmgrace xmgr none ' -- $c ));;
@@ -1121,7 +1121,7 @@ shopt -s extglob
 _g_sans_compl() {
 local p c
 COMPREPLY=() c=${COMP_WORDS[COMP_CWORD]} p=${COMP_WORDS[COMP_CWORD-1]}
-if (( $COMP_CWORD <= 1 )) || [[ $c == -* ]]; then COMPREPLY=( $(compgen  -W ' -s -f -n -d -pr -sq -prframe -sqframe -h -version -nice -b -e -dt -tu -xvg -mode -mcover -nopbc -startq -endq -qstep -seed' -- $c)); return 0; fi
+if (( $COMP_CWORD <= 1 )) || [[ $c == -* ]]; then COMPREPLY=( $(compgen  -W ' -s -f -n -d -pr -sq -prframe -sqframe -h -version -nice -b -e -dt -tu -xvg -mode -mcover -nopbc -startq -endq -qstep -seed -nt' -- $c)); return 0; fi
 case "$p" in
 -tu) COMPREPLY=( $(compgen -W ' fs ps ns us ms s ' -- $c ));;
 -xvg) COMPREPLY=( $(compgen -W ' xmgrace xmgr none ' -- $c ));;
@@ -1495,10 +1495,11 @@ shopt -s extglob
 _mdrun_compl() {
 local p c
 COMPREPLY=() c=${COMP_WORDS[COMP_CWORD]} p=${COMP_WORDS[COMP_CWORD-1]}
-if (( $COMP_CWORD <= 1 )) || [[ $c == -* ]]; then COMPREPLY=( $(compgen  -W ' -s -o -x -cpi -cpo -c -e -g -dhdl -field -table -tabletf -tablep -tableb -rerun -tpi -tpid -ei -eo -j -jo -ffout -devout -runav -px -pf -ro -ra -rs -rt -mtx -dn -multidir -membed -mp -mn -h -version -nice -deffnm -xvg -pd -dd -ddorder -npme -nt -ntmpi -ntomp -ntomp_pme -nopin -pinht -pinoffset -gpu_id -noddcheck -rdd -rcon -dlb -dds -gcom -nb -notunepme -testverlet -v -nocompact -seppot -pforce -reprod -cpt -cpnum -noappend -nsteps -maxh -multi -replex -nex -reseed -ionize' -- $c)); return 0; fi
+if (( $COMP_CWORD <= 1 )) || [[ $c == -* ]]; then COMPREPLY=( $(compgen  -W ' -s -o -x -cpi -cpo -c -e -g -dhdl -field -table -tabletf -tablep -tableb -rerun -tpi -tpid -ei -eo -j -jo -ffout -devout -runav -px -pf -ro -ra -rs -rt -mtx -dn -multidir -membed -mp -mn -h -version -nice -deffnm -xvg -pd -dd -ddorder -npme -nt -ntmpi -ntomp -ntomp_pme -pin -pinoffset -pinstride -gpu_id -noddcheck -rdd -rcon -dlb -dds -gcom -nb -notunepme -testverlet -v -nocompact -seppot -pforce -reprod -cpt -cpnum -noappend -nsteps -maxh -multi -replex -nex -reseed -ionize' -- $c)); return 0; fi
 case "$p" in
 -xvg) COMPREPLY=( $(compgen -W ' xmgrace xmgr none ' -- $c ));;
 -ddorder) COMPREPLY=( $(compgen -W ' interleave pp_pme cartesian ' -- $c ));;
+-pin) COMPREPLY=( $(compgen -W ' auto on off ' -- $c ));;
 -dlb) COMPREPLY=( $(compgen -W ' auto no yes ' -- $c ));;
 -nb) COMPREPLY=( $(compgen -W ' auto cpu gpu gpu_cpu ' -- $c ));;
 -s) COMPREPLY=( $(compgen -X '!*.+(tpr|tpb|tpa)*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
@@ -1533,7 +1534,7 @@ case "$p" in
 -rt) COMPREPLY=( $(compgen -X '!*.log*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -mtx) COMPREPLY=( $(compgen -X '!*.mtx*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -dn) COMPREPLY=( $(compgen -X '!*.ndx*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
--multidir) COMPREPLY=( $(compgen -X '!*.rundir*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
+-multidir) COMPREPLY=( $(compgen -X '!*.*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -membed) COMPREPLY=( $(compgen -X '!*.dat*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -mp) COMPREPLY=( $(compgen -X '!*.top*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -mn) COMPREPLY=( $(compgen -X '!*.ndx*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
@@ -1543,10 +1544,11 @@ shopt -s extglob
 _mdrun_mpi_compl() {
 local p c
 COMPREPLY=() c=${COMP_WORDS[COMP_CWORD]} p=${COMP_WORDS[COMP_CWORD-1]}
-if (( $COMP_CWORD <= 1 )) || [[ $c == -* ]]; then COMPREPLY=( $(compgen  -W ' -s -o -x -cpi -cpo -c -e -g -dhdl -field -table -tabletf -tablep -tableb -rerun -tpi -tpid -ei -eo -j -jo -ffout -devout -runav -px -pf -ro -ra -rs -rt -mtx -dn -multidir -membed -mp -mn -h -version -nice -deffnm -xvg -pd -dd -ddorder -npme -nt -ntmpi -ntomp -ntomp_pme -nopin -pinht -pinoffset -gpu_id -noddcheck -rdd -rcon -dlb -dds -gcom -nb -notunepme -testverlet -v -nocompact -seppot -pforce -reprod -cpt -cpnum -noappend -nsteps -maxh -multi -replex -nex -reseed -ionize' -- $c)); return 0; fi
+if (( $COMP_CWORD <= 1 )) || [[ $c == -* ]]; then COMPREPLY=( $(compgen  -W ' -s -o -x -cpi -cpo -c -e -g -dhdl -field -table -tabletf -tablep -tableb -rerun -tpi -tpid -ei -eo -j -jo -ffout -devout -runav -px -pf -ro -ra -rs -rt -mtx -dn -multidir -membed -mp -mn -h -version -nice -deffnm -xvg -pd -dd -ddorder -npme -nt -ntmpi -ntomp -ntomp_pme -pin -pinoffset -pinstride -gpu_id -noddcheck -rdd -rcon -dlb -dds -gcom -nb -notunepme -testverlet -v -nocompact -seppot -pforce -reprod -cpt -cpnum -noappend -nsteps -maxh -multi -replex -nex -reseed -ionize' -- $c)); return 0; fi
 case "$p" in
 -xvg) COMPREPLY=( $(compgen -W ' xmgrace xmgr none ' -- $c ));;
 -ddorder) COMPREPLY=( $(compgen -W ' interleave pp_pme cartesian ' -- $c ));;
+-pin) COMPREPLY=( $(compgen -W ' auto on off ' -- $c ));;
 -dlb) COMPREPLY=( $(compgen -W ' auto no yes ' -- $c ));;
 -nb) COMPREPLY=( $(compgen -W ' auto cpu gpu gpu_cpu ' -- $c ));;
 -s) COMPREPLY=( $(compgen -X '!*.+(tpr|tpb|tpa)*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
@@ -1567,7 +1569,7 @@ case "$p" in
 -tpi) COMPREPLY=( $(compgen -X '!*.xvg*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -tpid) COMPREPLY=( $(compgen -X '!*.xvg*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -ei) COMPREPLY=( $(compgen -X '!*.edi*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
--eo) COMPREPLY=( $(compgen -X '!*.edo*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
+-eo) COMPREPLY=( $(compgen -X '!*.xvg*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -j) COMPREPLY=( $(compgen -X '!*.gct*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -jo) COMPREPLY=( $(compgen -X '!*.gct*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -ffout) COMPREPLY=( $(compgen -X '!*.xvg*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
@@ -1581,7 +1583,7 @@ case "$p" in
 -rt) COMPREPLY=( $(compgen -X '!*.log*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -mtx) COMPREPLY=( $(compgen -X '!*.mtx*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -dn) COMPREPLY=( $(compgen -X '!*.ndx*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
--multidir) COMPREPLY=( $(compgen -X '!*.rundir*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
+-multidir) COMPREPLY=( $(compgen -X '!*.line_buf*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -membed) COMPREPLY=( $(compgen -X '!*.dat*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -mp) COMPREPLY=( $(compgen -X '!*.top*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
 -mn) COMPREPLY=( $(compgen -X '!*.ndx*(.gz|.Z)' -f $c ; compgen -S '/' -X '.*' -d $c ));;
index 926388da685d40fdafa88251084cd4e4e7115563..c52ffd800127c0db7a3dfc1e4b9b0d90dd708bff 100644 (file)
@@ -33,7 +33,7 @@ complete genrestr "n/-f/f:*.{gro,g96,pdb,brk,ent,esp,xyz,tpr,tpb,tpa}{,.gz,.Z}/"
 complete g_filter "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa,gro,g96,pdb,brk,ent}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-ol/f:*.{xtc,trr,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-oh/f:*.{xtc,trr,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "c/-/( f s n ol oh h version nice b e dt w nf all nonojump fit)/"
 complete g_gyrate "n/-xvg/( xmgrace xmgr none)/" "n/-P/( 0 1 2 3)/" "n/-fitfn/( none exp aexp exp_exp vac exp5 exp7 exp9 erffit)/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa,gro,g96,pdb,brk,ent}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-o/f:*.xvg{,.gz,.Z}/" "n/-acf/f:*.xvg{,.gz,.Z}/" "c/-/( f s n o acf h version nice b e dt w xvg nmol q p moi nz acflen nonormalize P fitfn ncskip beginfit endfit)/"
 complete g_h2order "n/-xvg/( xmgrace xmgr none)/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-nm/f:*.ndx{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-o/f:*.xvg{,.gz,.Z}/" "c/-/( f n nm s o h version nice b e dt w xvg d sl)/"
-complete g_hbond "n/-tu/( fs ps ns us ms s)/" "n/-xvg/( xmgrace xmgr none)/" "n/-geminate/( none dd ad aa a4)/" "n/-P/( 0 1 2 3)/" "n/-fitfn/( none exp aexp exp_exp vac exp5 exp7 exp9 erffit)/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-num/f:*.xvg{,.gz,.Z}/" "n/-g/f:*.log{,.gz,.Z}/" "n/-ac/f:*.xvg{,.gz,.Z}/" "n/-dist/f:*.xvg{,.gz,.Z}/" "n/-ang/f:*.xvg{,.gz,.Z}/" "n/-hx/f:*.xvg{,.gz,.Z}/" "n/-hbn/f:*.ndx{,.gz,.Z}/" "n/-hbm/f:*.xpm{,.gz,.Z}/" "n/-don/f:*.xvg{,.gz,.Z}/" "n/-dan/f:*.xvg{,.gz,.Z}/" "n/-life/f:*.xvg{,.gz,.Z}/" "n/-nhbdist/f:*.xvg{,.gz,.Z}/" "c/-/( f s n num g ac dist ang hx hbn hbm don dan life nhbdist h version nice b e dt tu xvg a r noda r2 abin rbin nonitacc contact shell fitstart fitstart temp smooth dump max_hb nomerge geminate diff acflen nonormalize P fitfn ncskip beginfit endfit)/"
+complete g_hbond "n/-tu/( fs ps ns us ms s)/" "n/-xvg/( xmgrace xmgr none)/" "n/-geminate/( none dd ad aa a4)/" "n/-P/( 0 1 2 3)/" "n/-fitfn/( none exp aexp exp_exp vac exp5 exp7 exp9 erffit)/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-num/f:*.xvg{,.gz,.Z}/" "n/-g/f:*.log{,.gz,.Z}/" "n/-ac/f:*.xvg{,.gz,.Z}/" "n/-dist/f:*.xvg{,.gz,.Z}/" "n/-ang/f:*.xvg{,.gz,.Z}/" "n/-hx/f:*.xvg{,.gz,.Z}/" "n/-hbn/f:*.ndx{,.gz,.Z}/" "n/-hbm/f:*.xpm{,.gz,.Z}/" "n/-don/f:*.xvg{,.gz,.Z}/" "n/-dan/f:*.xvg{,.gz,.Z}/" "n/-life/f:*.xvg{,.gz,.Z}/" "n/-nhbdist/f:*.xvg{,.gz,.Z}/" "c/-/( f s n num g ac dist ang hx hbn hbm don dan life nhbdist h version nice b e dt tu xvg a r noda r2 abin rbin nonitacc contact shell fitstart fitstart temp smooth dump max_hb nomerge geminate diff nthreads acflen nonormalize P fitfn ncskip beginfit endfit)/"
 complete g_helix "n/-prop/( RAD TWIST RISE LEN NHX DIP RMS CPHI RMSA PHI PSI HB3 HB4 HB5 CD222)/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-to/f:*.g87{,.gz,.Z}/" "n/-cz/f:*.{gro,g96,pdb,brk,ent,esp,xyz}{,.gz,.Z}/" "n/-co/f:*.{gro,g96,pdb,brk,ent,esp,xyz}{,.gz,.Z}/" "c/-/( s n f to cz co h version nice b e dt w r0 q noF db prop ev ahxstart ahxend)/"
 complete g_helixorient "n/-xvg/( xmgrace xmgr none)/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-oaxis/f:*.dat{,.gz,.Z}/" "n/-ocenter/f:*.dat{,.gz,.Z}/" "n/-orise/f:*.xvg{,.gz,.Z}/" "n/-oradius/f:*.xvg{,.gz,.Z}/" "n/-otwist/f:*.xvg{,.gz,.Z}/" "n/-obending/f:*.xvg{,.gz,.Z}/" "n/-otilt/f:*.xvg{,.gz,.Z}/" "n/-orot/f:*.xvg{,.gz,.Z}/" "c/-/( s f n oaxis ocenter orise oradius otwist obending otilt orot h version nice b e dt xvg sidechain incremental)/"
 complete g_hydorder "n/-d/( z x y)/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-o/f:*.xpm{,.gz,.Z}/" "n/-or/f:*.out{,.gz,.Z}/" "n/-Spect/f:*.out{,.gz,.Z}/" "c/-/( f n s o or Spect h version nice b e dt w d bw sgang1 sgang2 tblock nlevel)/"
@@ -65,7 +65,7 @@ complete grompp "n/-f/f:*.mdp{,.gz,.Z}/" "n/-po/f:*.mdp{,.gz,.Z}/" "n/-c/f:*.{gr
 complete g_rotacf "n/-xvg/( xmgrace xmgr none)/" "n/-P/( 0 1 2 3)/" "n/-fitfn/( none exp aexp exp_exp vac exp5 exp7 exp9 erffit)/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-o/f:*.xvg{,.gz,.Z}/" "c/-/( f s n o h version nice b e dt w xvg d noaver acflen nonormalize P fitfn ncskip beginfit endfit)/"
 complete g_rotmat "n/-xvg/( xmgrace xmgr none)/" "n/-ref/( none xyz xy)/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa,gro,g96,pdb,brk,ent}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-o/f:*.xvg{,.gz,.Z}/" "c/-/( f s n o h version nice b e dt w xvg ref skip fitxy nomw)/"
 complete g_saltbr "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "c/-/( f s h version nice b e dt t sep)/"
-complete g_sans "n/-tu/( fs ps ns us ms s)/" "n/-xvg/( xmgrace xmgr none)/" "n/-mode/( direct mc)/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-d/f:*.dat{,.gz,.Z}/" "n/-pr/f:*.xvg{,.gz,.Z}/" "n/-sq/f:*.xvg{,.gz,.Z}/" "n/-prframe/f:*.xvg{,.gz,.Z}/" "n/-sqframe/f:*.xvg{,.gz,.Z}/" "c/-/( s f n d pr sq prframe sqframe h version nice b e dt tu xvg mode mcover nopbc startq endq qstep seed)/"
+complete g_sans "n/-tu/( fs ps ns us ms s)/" "n/-xvg/( xmgrace xmgr none)/" "n/-mode/( direct mc)/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-d/f:*.dat{,.gz,.Z}/" "n/-pr/f:*.xvg{,.gz,.Z}/" "n/-sq/f:*.xvg{,.gz,.Z}/" "n/-prframe/f:*.xvg{,.gz,.Z}/" "n/-sqframe/f:*.xvg{,.gz,.Z}/" "c/-/( s f n d pr sq prframe sqframe h version nice b e dt tu xvg mode mcover nopbc startq endq qstep seed nt)/"
 complete g_sas "n/-xvg/( xmgrace xmgr none)/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa,gro,g96,pdb,brk,ent}{,.gz,.Z}/" "n/-o/f:*.xvg{,.gz,.Z}/" "n/-or/f:*.xvg{,.gz,.Z}/" "n/-oa/f:*.xvg{,.gz,.Z}/" "n/-tv/f:*.xvg{,.gz,.Z}/" "n/-q/f:*.pdb{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-i/f:*.itp{,.gz,.Z}/" "c/-/( f s o or oa tv q n i h version nice b e dt w xvg probe ndots qmax f_index minarea nopbc noprot dgs)/"
 complete g_select "n/-xvg/( xmgrace xmgr none)/" "n/-selrpos/( atom res_com res_cog mol_com mol_cog whole_res_com whole_res_cog whole_mol_com whole_mol_cog part_res_com part_res_cog part_mol_com part_mol_cog dyn_res_com dyn_res_cog dyn_mol_com dyn_mol_cog)/" "n/-seltype/( atom res_com res_cog mol_com mol_cog whole_res_com whole_res_cog whole_mol_com whole_mol_cog part_res_com part_res_cog part_mol_com part_mol_cog dyn_res_com dyn_res_cog dyn_mol_com dyn_mol_cog)/" "n/-resnr/( number index)/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa,gro,g96,pdb,brk,ent}{,.gz,.Z}/" "n/-sf/f:*.dat{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-os/f:*.xvg{,.gz,.Z}/" "n/-oc/f:*.xvg{,.gz,.Z}/" "n/-oi/f:*.dat{,.gz,.Z}/" "n/-om/f:*.dat{,.gz,.Z}/" "n/-on/f:*.ndx{,.gz,.Z}/" "c/-/( f s sf n os oc oi om on h version nice b e dt xvg normpbc nopbc select selrpos seltype dump norm cfnorm resnr)/"
 complete g_sgangle "n/-xvg/( xmgrace xmgr none)/" "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-oa/f:*.xvg{,.gz,.Z}/" "n/-od/f:*.xvg{,.gz,.Z}/" "n/-od1/f:*.xvg{,.gz,.Z}/" "n/-od2/f:*.xvg{,.gz,.Z}/" "c/-/( f n s oa od od1 od2 h version nice b e dt w xvg one z)/"
@@ -85,8 +85,8 @@ complete g_x2top "n/-f/f:*.{gro,g96,pdb,brk,ent,esp,xyz,tpr,tpb,tpa}{,.gz,.Z}/"
 complete g_xrama "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "c/-/( f s h version nice b e dt)/"
 complete make_edi "n/-xvg/( xmgrace xmgr none)/" "n/-f/f:*.{trr,cpt,trj}{,.gz,.Z}/" "n/-eig/f:*.xvg{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa,gro,g96,pdb,brk,ent}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-tar/f:*.{gro,g96,pdb,brk,ent,esp,xyz,tpr,tpb,tpa}{,.gz,.Z}/" "n/-ori/f:*.{gro,g96,pdb,brk,ent,esp,xyz,tpr,tpb,tpa}{,.gz,.Z}/" "n/-o/f:*.edi{,.gz,.Z}/" "c/-/( f eig s n tar ori o h version nice xvg mon linfix linacc radfix radacc radcon flood outfrq slope linstep accdir radstep maxedsteps eqsteps deltaF0 deltaF tau Eflnull T alpha restrain hessian harmonic constF)/"
 complete make_ndx "n/-f/f:*.{gro,g96,pdb,brk,ent,esp,xyz,tpr,tpb,tpa}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-o/f:*.ndx{,.gz,.Z}/" "c/-/( f n o h version nice natoms)/"
-complete mdrun "n/-xvg/( xmgrace xmgr none)/" "n/-ddorder/( interleave pp_pme cartesian)/" "n/-dlb/( auto no yes)/" "n/-nb/( auto cpu gpu gpu_cpu)/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-o/f:*.{trr,cpt,trj}{,.gz,.Z}/" "n/-x/f:*.xtc{,.gz,.Z}/" "n/-cpi/f:*.cpt{,.gz,.Z}/" "n/-cpo/f:*.cpt{,.gz,.Z}/" "n/-c/f:*.{gro,g96,pdb,brk,ent,esp,xyz}{,.gz,.Z}/" "n/-e/f:*.edr{,.gz,.Z}/" "n/-g/f:*.log{,.gz,.Z}/" "n/-dhdl/f:*.xvg{,.gz,.Z}/" "n/-field/f:*.xvg{,.gz,.Z}/" "n/-table/f:*.xvg{,.gz,.Z}/" "n/-tabletf/f:*.xvg{,.gz,.Z}/" "n/-tablep/f:*.xvg{,.gz,.Z}/" "n/-tableb/f:*.xvg{,.gz,.Z}/" "n/-rerun/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-tpi/f:*.xvg{,.gz,.Z}/" "n/-tpid/f:*.xvg{,.gz,.Z}/" "n/-ei/f:*.edi{,.gz,.Z}/" "n/-eo/f:*.xvg{,.gz,.Z}/" "n/-j/f:*.gct{,.gz,.Z}/" "n/-jo/f:*.gct{,.gz,.Z}/" "n/-ffout/f:*.xvg{,.gz,.Z}/" "n/-devout/f:*.xvg{,.gz,.Z}/" "n/-runav/f:*.xvg{,.gz,.Z}/" "n/-px/f:*.xvg{,.gz,.Z}/" "n/-pf/f:*.xvg{,.gz,.Z}/" "n/-ro/f:*.xvg{,.gz,.Z}/" "n/-ra/f:*.log{,.gz,.Z}/" "n/-rs/f:*.log{,.gz,.Z}/" "n/-rt/f:*.log{,.gz,.Z}/" "n/-mtx/f:*.mtx{,.gz,.Z}/" "n/-dn/f:*.ndx{,.gz,.Z}/" "n/-multidir/f:*.rundir{,.gz,.Z}/" "n/-membed/f:*.dat{,.gz,.Z}/" "n/-mp/f:*.top{,.gz,.Z}/" "n/-mn/f:*.ndx{,.gz,.Z}/" "c/-/( s o x cpi cpo c e g dhdl field table tabletf tablep tableb rerun tpi tpid ei eo j jo ffout devout runav px pf ro ra rs rt mtx dn multidir membed mp mn h version nice deffnm xvg pd dd ddorder npme nt ntmpi ntomp ntomp_pme nopin pinht pinoffset gpu_id noddcheck rdd rcon dlb dds gcom nb notunepme testverlet v nocompact seppot pforce reprod cpt cpnum noappend nsteps maxh multi replex nex reseed ionize)/"
-complete mdrun_mpi "n/-xvg/( xmgrace xmgr none)/" "n/-ddorder/( interleave pp_pme cartesian)/" "n/-dlb/( auto no yes)/" "n/-nb/( auto cpu gpu gpu_cpu)/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-o/f:*.{trr,cpt,trj}{,.gz,.Z}/" "n/-x/f:*.xtc{,.gz,.Z}/" "n/-cpi/f:*.cpt{,.gz,.Z}/" "n/-cpo/f:*.cpt{,.gz,.Z}/" "n/-c/f:*.{gro,g96,pdb,brk,ent,esp,xyz}{,.gz,.Z}/" "n/-e/f:*.edr{,.gz,.Z}/" "n/-g/f:*.log{,.gz,.Z}/" "n/-dhdl/f:*.xvg{,.gz,.Z}/" "n/-field/f:*.xvg{,.gz,.Z}/" "n/-table/f:*.xvg{,.gz,.Z}/" "n/-tabletf/f:*.xvg{,.gz,.Z}/" "n/-tablep/f:*.xvg{,.gz,.Z}/" "n/-tableb/f:*.xvg{,.gz,.Z}/" "n/-rerun/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-tpi/f:*.xvg{,.gz,.Z}/" "n/-tpid/f:*.xvg{,.gz,.Z}/" "n/-ei/f:*.edi{,.gz,.Z}/" "n/-eo/f:*.edo{,.gz,.Z}/" "n/-j/f:*.gct{,.gz,.Z}/" "n/-jo/f:*.gct{,.gz,.Z}/" "n/-ffout/f:*.xvg{,.gz,.Z}/" "n/-devout/f:*.xvg{,.gz,.Z}/" "n/-runav/f:*.xvg{,.gz,.Z}/" "n/-px/f:*.xvg{,.gz,.Z}/" "n/-pf/f:*.xvg{,.gz,.Z}/" "n/-ro/f:*.xvg{,.gz,.Z}/" "n/-ra/f:*.log{,.gz,.Z}/" "n/-rs/f:*.log{,.gz,.Z}/" "n/-rt/f:*.log{,.gz,.Z}/" "n/-mtx/f:*.mtx{,.gz,.Z}/" "n/-dn/f:*.ndx{,.gz,.Z}/" "n/-multidir/f:*.rundir{,.gz,.Z}/" "n/-membed/f:*.dat{,.gz,.Z}/" "n/-mp/f:*.top{,.gz,.Z}/" "n/-mn/f:*.ndx{,.gz,.Z}/" "c/-/( s o x cpi cpo c e g dhdl field table tabletf tablep tableb rerun tpi tpid ei eo j jo ffout devout runav px pf ro ra rs rt mtx dn multidir membed mp mn h version nice deffnm xvg pd dd ddorder npme nt ntmpi ntomp ntomp_pme nopin pinht pinoffset gpu_id noddcheck rdd rcon dlb dds gcom nb notunepme testverlet v nocompact seppot pforce reprod cpt cpnum noappend nsteps maxh multi replex nex reseed ionize)/"
+complete mdrun "n/-xvg/( xmgrace xmgr none)/" "n/-ddorder/( interleave pp_pme cartesian)/" "n/-pin/( auto on off)/" "n/-dlb/( auto no yes)/" "n/-nb/( auto cpu gpu gpu_cpu)/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-o/f:*.{trr,cpt,trj}{,.gz,.Z}/" "n/-x/f:*.xtc{,.gz,.Z}/" "n/-cpi/f:*.cpt{,.gz,.Z}/" "n/-cpo/f:*.cpt{,.gz,.Z}/" "n/-c/f:*.{gro,g96,pdb,brk,ent,esp,xyz}{,.gz,.Z}/" "n/-e/f:*.edr{,.gz,.Z}/" "n/-g/f:*.log{,.gz,.Z}/" "n/-dhdl/f:*.xvg{,.gz,.Z}/" "n/-field/f:*.xvg{,.gz,.Z}/" "n/-table/f:*.xvg{,.gz,.Z}/" "n/-tabletf/f:*.xvg{,.gz,.Z}/" "n/-tablep/f:*.xvg{,.gz,.Z}/" "n/-tableb/f:*.xvg{,.gz,.Z}/" "n/-rerun/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-tpi/f:*.xvg{,.gz,.Z}/" "n/-tpid/f:*.xvg{,.gz,.Z}/" "n/-ei/f:*.edi{,.gz,.Z}/" "n/-eo/f:*.xvg{,.gz,.Z}/" "n/-j/f:*.gct{,.gz,.Z}/" "n/-jo/f:*.gct{,.gz,.Z}/" "n/-ffout/f:*.xvg{,.gz,.Z}/" "n/-devout/f:*.xvg{,.gz,.Z}/" "n/-runav/f:*.xvg{,.gz,.Z}/" "n/-px/f:*.xvg{,.gz,.Z}/" "n/-pf/f:*.xvg{,.gz,.Z}/" "n/-ro/f:*.xvg{,.gz,.Z}/" "n/-ra/f:*.log{,.gz,.Z}/" "n/-rs/f:*.log{,.gz,.Z}/" "n/-rt/f:*.log{,.gz,.Z}/" "n/-mtx/f:*.mtx{,.gz,.Z}/" "n/-dn/f:*.ndx{,.gz,.Z}/" "n/-multidir/f:*.{,.gz,.Z}/" "n/-membed/f:*.dat{,.gz,.Z}/" "n/-mp/f:*.top{,.gz,.Z}/" "n/-mn/f:*.ndx{,.gz,.Z}/" "c/-/( s o x cpi cpo c e g dhdl field table tabletf tablep tableb rerun tpi tpid ei eo j jo ffout devout runav px pf ro ra rs rt mtx dn multidir membed mp mn h version nice deffnm xvg pd dd ddorder npme nt ntmpi ntomp ntomp_pme pin pinoffset pinstride gpu_id noddcheck rdd rcon dlb dds gcom nb notunepme testverlet v nocompact seppot pforce reprod cpt cpnum noappend nsteps maxh multi replex nex reseed ionize)/"
+complete mdrun_mpi "n/-xvg/( xmgrace xmgr none)/" "n/-ddorder/( interleave pp_pme cartesian)/" "n/-pin/( auto on off)/" "n/-dlb/( auto no yes)/" "n/-nb/( auto cpu gpu gpu_cpu)/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-o/f:*.{trr,cpt,trj}{,.gz,.Z}/" "n/-x/f:*.xtc{,.gz,.Z}/" "n/-cpi/f:*.cpt{,.gz,.Z}/" "n/-cpo/f:*.cpt{,.gz,.Z}/" "n/-c/f:*.{gro,g96,pdb,brk,ent,esp,xyz}{,.gz,.Z}/" "n/-e/f:*.edr{,.gz,.Z}/" "n/-g/f:*.log{,.gz,.Z}/" "n/-dhdl/f:*.xvg{,.gz,.Z}/" "n/-field/f:*.xvg{,.gz,.Z}/" "n/-table/f:*.xvg{,.gz,.Z}/" "n/-tabletf/f:*.xvg{,.gz,.Z}/" "n/-tablep/f:*.xvg{,.gz,.Z}/" "n/-tableb/f:*.xvg{,.gz,.Z}/" "n/-rerun/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-tpi/f:*.xvg{,.gz,.Z}/" "n/-tpid/f:*.xvg{,.gz,.Z}/" "n/-ei/f:*.edi{,.gz,.Z}/" "n/-eo/f:*.xvg{,.gz,.Z}/" "n/-j/f:*.gct{,.gz,.Z}/" "n/-jo/f:*.gct{,.gz,.Z}/" "n/-ffout/f:*.xvg{,.gz,.Z}/" "n/-devout/f:*.xvg{,.gz,.Z}/" "n/-runav/f:*.xvg{,.gz,.Z}/" "n/-px/f:*.xvg{,.gz,.Z}/" "n/-pf/f:*.xvg{,.gz,.Z}/" "n/-ro/f:*.xvg{,.gz,.Z}/" "n/-ra/f:*.log{,.gz,.Z}/" "n/-rs/f:*.log{,.gz,.Z}/" "n/-rt/f:*.log{,.gz,.Z}/" "n/-mtx/f:*.mtx{,.gz,.Z}/" "n/-dn/f:*.ndx{,.gz,.Z}/" "n/-multidir/f:*.line_buf{,.gz,.Z}/" "n/-membed/f:*.dat{,.gz,.Z}/" "n/-mp/f:*.top{,.gz,.Z}/" "n/-mn/f:*.ndx{,.gz,.Z}/" "c/-/( s o x cpi cpo c e g dhdl field table tabletf tablep tableb rerun tpi tpid ei eo j jo ffout devout runav px pf ro ra rs rt mtx dn multidir membed mp mn h version nice deffnm xvg pd dd ddorder npme nt ntmpi ntomp ntomp_pme pin pinoffset pinstride gpu_id noddcheck rdd rcon dlb dds gcom nb notunepme testverlet v nocompact seppot pforce reprod cpt cpnum noappend nsteps maxh multi replex nex reseed ionize)/"
 complete mk_angndx "n/-type/( angle dihedral improper ryckaert-bellemans)/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "c/-/( s n h version nice type nohyd hq)/"
 complete ngmx "n/-f/f:*.{xtc,trr,cpt,trj,gro,g96,pdb,g87}{,.gz,.Z}/" "n/-s/f:*.{tpr,tpb,tpa}{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "c/-/( f s n h version nice b e dt)/"
 complete pdb2gmx "n/-chainsep/( id_or_ter id_and_ter ter id interactive)/" "n/-merge/( no all interactive)/" "n/-water/( select none spc spce tip3p tip4p tip5p)/" "n/-vsite/( none hydrogens aromatics)/" "n/-f/f:*.{gro,g96,pdb,brk,ent,esp,xyz,tpr,tpb,tpa}{,.gz,.Z}/" "n/-o/f:*.{gro,g96,pdb,brk,ent,esp,xyz}{,.gz,.Z}/" "n/-p/f:*.top{,.gz,.Z}/" "n/-i/f:*.itp{,.gz,.Z}/" "n/-n/f:*.ndx{,.gz,.Z}/" "n/-q/f:*.{gro,g96,pdb,brk,ent,esp,xyz}{,.gz,.Z}/" "c/-/( f o p i n q h version nice chainsep merge ff water inter ss ter lys arg asp glu gln his angle dist una ignh missing v posrefc vsite heavyh deuterate nochargegrp nocmap renum rtpres)/"
index 0f876f05ae0128b675dad300a43b0646fadfb072..318057488165ae5a03fd30669bb8c403c3b485dc 100644 (file)
@@ -33,7 +33,7 @@ compctl  -x 's[-]' -s " f n o of h version nice fc freeze disre disre_dist disre
 compctl  -x 's[-]' -s " f s n ol oh h version nice b e dt w nf all nonojump fit" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa|gro|g96|pdb|brk|ent)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-ol]' -g '*.(xtc|trr|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-oh]' -g '*.(xtc|trr|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' -- g_filter
 compctl  -x 's[-]' -s " f s n o acf h version nice b e dt w xvg nmol q p moi nz acflen nonormalize P fitfn ncskip beginfit endfit" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-P]' -s " 0 1 2 3" - 'c[-1,-fitfn]' -s " none exp aexp exp_exp vac exp5 exp7 exp9 erffit" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa|gro|g96|pdb|brk|ent)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-acf]' -g '*.xvg(|.gz|.Z) *(/)' -- g_gyrate
 compctl  -x 's[-]' -s " f n nm s o h version nice b e dt w xvg d sl" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-nm]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.xvg(|.gz|.Z) *(/)' -- g_h2order
-compctl  -x 's[-]' -s " f s n num g ac dist ang hx hbn hbm don dan life nhbdist h version nice b e dt tu xvg a r noda r2 abin rbin nonitacc contact shell fitstart fitstart temp smooth dump max_hb nomerge geminate diff acflen nonormalize P fitfn ncskip beginfit endfit" - 'c[-1,-tu]' -s " fs ps ns us ms s" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-geminate]' -s " none dd ad aa a4" - 'c[-1,-P]' -s " 0 1 2 3" - 'c[-1,-fitfn]' -s " none exp aexp exp_exp vac exp5 exp7 exp9 erffit" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-num]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-g]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-ac]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-dist]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ang]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-hx]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-hbn]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-hbm]' -g '*.xpm(|.gz|.Z) *(/)' - 'c[-1,-don]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-dan]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-life]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-nhbdist]' -g '*.xvg(|.gz|.Z) *(/)' -- g_hbond
+compctl  -x 's[-]' -s " f s n num g ac dist ang hx hbn hbm don dan life nhbdist h version nice b e dt tu xvg a r noda r2 abin rbin nonitacc contact shell fitstart fitstart temp smooth dump max_hb nomerge geminate diff nthreads acflen nonormalize P fitfn ncskip beginfit endfit" - 'c[-1,-tu]' -s " fs ps ns us ms s" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-geminate]' -s " none dd ad aa a4" - 'c[-1,-P]' -s " 0 1 2 3" - 'c[-1,-fitfn]' -s " none exp aexp exp_exp vac exp5 exp7 exp9 erffit" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-num]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-g]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-ac]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-dist]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ang]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-hx]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-hbn]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-hbm]' -g '*.xpm(|.gz|.Z) *(/)' - 'c[-1,-don]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-dan]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-life]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-nhbdist]' -g '*.xvg(|.gz|.Z) *(/)' -- g_hbond
 compctl  -x 's[-]' -s " s n f to cz co h version nice b e dt w r0 q noF db prop ev ahxstart ahxend" - 'c[-1,-prop]' -s " RAD TWIST RISE LEN NHX DIP RMS CPHI RMSA PHI PSI HB3 HB4 HB5 CD222" - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-to]' -g '*.g87(|.gz|.Z) *(/)' - 'c[-1,-cz]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz)(|.gz|.Z) *(/)' - 'c[-1,-co]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz)(|.gz|.Z) *(/)' -- g_helix
 compctl  -x 's[-]' -s " s f n oaxis ocenter orise oradius otwist obending otilt orot h version nice b e dt xvg sidechain incremental" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-oaxis]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-ocenter]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-orise]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-oradius]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-otwist]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-obending]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-otilt]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-orot]' -g '*.xvg(|.gz|.Z) *(/)' -- g_helixorient
 compctl  -x 's[-]' -s " f n s o or Spect h version nice b e dt w d bw sgang1 sgang2 tblock nlevel" - 'c[-1,-d]' -s " z x y" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.xpm(|.gz|.Z) *(/)' - 'c[-1,-or]' -g '*.out(|.gz|.Z) *(/)' - 'c[-1,-Spect]' -g '*.out(|.gz|.Z) *(/)' -- g_hydorder
@@ -65,7 +65,7 @@ compctl  -x 's[-]' -s " f po c r rb n p pp o t e ref h version nice v time normv
 compctl  -x 's[-]' -s " f s n o h version nice b e dt w xvg d noaver acflen nonormalize P fitfn ncskip beginfit endfit" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-P]' -s " 0 1 2 3" - 'c[-1,-fitfn]' -s " none exp aexp exp_exp vac exp5 exp7 exp9 erffit" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.xvg(|.gz|.Z) *(/)' -- g_rotacf
 compctl  -x 's[-]' -s " f s n o h version nice b e dt w xvg ref skip fitxy nomw" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-ref]' -s " none xyz xy" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa|gro|g96|pdb|brk|ent)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.xvg(|.gz|.Z) *(/)' -- g_rotmat
 compctl  -x 's[-]' -s " f s h version nice b e dt t sep" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' -- g_saltbr
-compctl  -x 's[-]' -s " s f n d pr sq prframe sqframe h version nice b e dt tu xvg mode mcover nopbc startq endq qstep seed" - 'c[-1,-tu]' -s " fs ps ns us ms s" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-mode]' -s " direct mc" - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-d]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-pr]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-sq]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-prframe]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-sqframe]' -g '*.xvg(|.gz|.Z) *(/)' -- g_sans
+compctl  -x 's[-]' -s " s f n d pr sq prframe sqframe h version nice b e dt tu xvg mode mcover nopbc startq endq qstep seed nt" - 'c[-1,-tu]' -s " fs ps ns us ms s" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-mode]' -s " direct mc" - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-d]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-pr]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-sq]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-prframe]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-sqframe]' -g '*.xvg(|.gz|.Z) *(/)' -- g_sans
 compctl  -x 's[-]' -s " f s o or oa tv q n i h version nice b e dt w xvg probe ndots qmax f_index minarea nopbc noprot dgs" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa|gro|g96|pdb|brk|ent)(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-or]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-oa]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tv]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-q]' -g '*.pdb(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-i]' -g '*.itp(|.gz|.Z) *(/)' -- g_sas
 compctl  -x 's[-]' -s " f s sf n os oc oi om on h version nice b e dt xvg normpbc nopbc select selrpos seltype dump norm cfnorm resnr" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-selrpos]' -s " atom res_com res_cog mol_com mol_cog whole_res_com whole_res_cog whole_mol_com whole_mol_cog part_res_com part_res_cog part_mol_com part_mol_cog dyn_res_com dyn_res_cog dyn_mol_com dyn_mol_cog" - 'c[-1,-seltype]' -s " atom res_com res_cog mol_com mol_cog whole_res_com whole_res_cog whole_mol_com whole_mol_cog part_res_com part_res_cog part_mol_com part_mol_cog dyn_res_com dyn_res_cog dyn_mol_com dyn_mol_cog" - 'c[-1,-resnr]' -s " number index" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa|gro|g96|pdb|brk|ent)(|.gz|.Z) *(/)' - 'c[-1,-sf]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-os]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-oc]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-oi]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-om]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-on]' -g '*.ndx(|.gz|.Z) *(/)' -- g_select
 compctl  -x 's[-]' -s " f n s oa od od1 od2 h version nice b e dt w xvg one z" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-oa]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-od]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-od1]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-od2]' -g '*.xvg(|.gz|.Z) *(/)' -- g_sgangle
@@ -85,8 +85,8 @@ compctl  -x 's[-]' -s " f o r h version nice ff v nexcl noH14 alldih remdih nopa
 compctl  -x 's[-]' -s " f s h version nice b e dt" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' -- g_xrama
 compctl  -x 's[-]' -s " f eig s n tar ori o h version nice xvg mon linfix linacc radfix radacc radcon flood outfrq slope linstep accdir radstep maxedsteps eqsteps deltaF0 deltaF tau Eflnull T alpha restrain hessian harmonic constF" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-f]' -g '*.(trr|cpt|trj)(|.gz|.Z) *(/)' - 'c[-1,-eig]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa|gro|g96|pdb|brk|ent)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-tar]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz|tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-ori]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz|tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.edi(|.gz|.Z) *(/)' -- make_edi
 compctl  -x 's[-]' -s " f n o h version nice natoms" - 'c[-1,-f]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz|tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.ndx(|.gz|.Z) *(/)' -- make_ndx
-compctl  -x 's[-]' -s " s o x cpi cpo c e g dhdl field table tabletf tablep tableb rerun tpi tpid ei eo j jo ffout devout runav px pf ro ra rs rt mtx dn multidir membed mp mn h version nice deffnm xvg pd dd ddorder npme nt ntmpi ntomp ntomp_pme nopin pinht pinoffset gpu_id noddcheck rdd rcon dlb dds gcom nb notunepme testverlet v nocompact seppot pforce reprod cpt cpnum noappend nsteps maxh multi replex nex reseed ionize" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-ddorder]' -s " interleave pp_pme cartesian" - 'c[-1,-dlb]' -s " auto no yes" - 'c[-1,-nb]' -s " auto cpu gpu gpu_cpu" - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.(trr|cpt|trj)(|.gz|.Z) *(/)' - 'c[-1,-x]' -g '*.xtc(|.gz|.Z) *(/)' - 'c[-1,-cpi]' -g '*.cpt(|.gz|.Z) *(/)' - 'c[-1,-cpo]' -g '*.cpt(|.gz|.Z) *(/)' - 'c[-1,-c]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz)(|.gz|.Z) *(/)' - 'c[-1,-e]' -g '*.edr(|.gz|.Z) *(/)' - 'c[-1,-g]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-dhdl]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-field]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-table]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tabletf]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tablep]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tableb]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-rerun]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-tpi]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tpid]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ei]' -g '*.edi(|.gz|.Z) *(/)' - 'c[-1,-eo]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-j]' -g '*.gct(|.gz|.Z) *(/)' - 'c[-1,-jo]' -g '*.gct(|.gz|.Z) *(/)' - 'c[-1,-ffout]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-devout]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-runav]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-px]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-pf]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ro]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ra]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-rs]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-rt]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-mtx]' -g '*.mtx(|.gz|.Z) *(/)' - 'c[-1,-dn]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-multidir]' -g '*.rundir(|.gz|.Z) *(/)' - 'c[-1,-membed]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-mp]' -g '*.top(|.gz|.Z) *(/)' - 'c[-1,-mn]' -g '*.ndx(|.gz|.Z) *(/)' -- mdrun
-compctl  -x 's[-]' -s " s o x cpi cpo c e g dhdl field table tabletf tablep tableb rerun tpi tpid ei eo j jo ffout devout runav px pf ro ra rs rt mtx dn multidir membed mp mn h version nice deffnm xvg pd dd ddorder npme nt ntmpi ntomp ntomp_pme nopin pinht pinoffset gpu_id noddcheck rdd rcon dlb dds gcom nb notunepme testverlet v nocompact seppot pforce reprod cpt cpnum noappend nsteps maxh multi replex nex reseed ionize" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-ddorder]' -s " interleave pp_pme cartesian" - 'c[-1,-dlb]' -s " auto no yes" - 'c[-1,-nb]' -s " auto cpu gpu gpu_cpu" - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.(trr|cpt|trj)(|.gz|.Z) *(/)' - 'c[-1,-x]' -g '*.xtc(|.gz|.Z) *(/)' - 'c[-1,-cpi]' -g '*.cpt(|.gz|.Z) *(/)' - 'c[-1,-cpo]' -g '*.cpt(|.gz|.Z) *(/)' - 'c[-1,-c]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz)(|.gz|.Z) *(/)' - 'c[-1,-e]' -g '*.edr(|.gz|.Z) *(/)' - 'c[-1,-g]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-dhdl]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-field]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-table]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tabletf]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tablep]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tableb]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-rerun]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-tpi]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tpid]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ei]' -g '*.edi(|.gz|.Z) *(/)' - 'c[-1,-eo]' -g '*.edo(|.gz|.Z) *(/)' - 'c[-1,-j]' -g '*.gct(|.gz|.Z) *(/)' - 'c[-1,-jo]' -g '*.gct(|.gz|.Z) *(/)' - 'c[-1,-ffout]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-devout]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-runav]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-px]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-pf]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ro]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ra]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-rs]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-rt]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-mtx]' -g '*.mtx(|.gz|.Z) *(/)' - 'c[-1,-dn]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-multidir]' -g '*.rundir(|.gz|.Z) *(/)' - 'c[-1,-membed]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-mp]' -g '*.top(|.gz|.Z) *(/)' - 'c[-1,-mn]' -g '*.ndx(|.gz|.Z) *(/)' -- mdrun_mpi
+compctl  -x 's[-]' -s " s o x cpi cpo c e g dhdl field table tabletf tablep tableb rerun tpi tpid ei eo j jo ffout devout runav px pf ro ra rs rt mtx dn multidir membed mp mn h version nice deffnm xvg pd dd ddorder npme nt ntmpi ntomp ntomp_pme pin pinoffset pinstride gpu_id noddcheck rdd rcon dlb dds gcom nb notunepme testverlet v nocompact seppot pforce reprod cpt cpnum noappend nsteps maxh multi replex nex reseed ionize" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-ddorder]' -s " interleave pp_pme cartesian" - 'c[-1,-pin]' -s " auto on off" - 'c[-1,-dlb]' -s " auto no yes" - 'c[-1,-nb]' -s " auto cpu gpu gpu_cpu" - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.(trr|cpt|trj)(|.gz|.Z) *(/)' - 'c[-1,-x]' -g '*.xtc(|.gz|.Z) *(/)' - 'c[-1,-cpi]' -g '*.cpt(|.gz|.Z) *(/)' - 'c[-1,-cpo]' -g '*.cpt(|.gz|.Z) *(/)' - 'c[-1,-c]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz)(|.gz|.Z) *(/)' - 'c[-1,-e]' -g '*.edr(|.gz|.Z) *(/)' - 'c[-1,-g]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-dhdl]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-field]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-table]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tabletf]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tablep]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tableb]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-rerun]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-tpi]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tpid]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ei]' -g '*.edi(|.gz|.Z) *(/)' - 'c[-1,-eo]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-j]' -g '*.gct(|.gz|.Z) *(/)' - 'c[-1,-jo]' -g '*.gct(|.gz|.Z) *(/)' - 'c[-1,-ffout]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-devout]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-runav]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-px]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-pf]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ro]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ra]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-rs]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-rt]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-mtx]' -g '*.mtx(|.gz|.Z) *(/)' - 'c[-1,-dn]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-multidir]' -g '*.(|.gz|.Z) *(/)' - 'c[-1,-membed]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-mp]' -g '*.top(|.gz|.Z) *(/)' - 'c[-1,-mn]' -g '*.ndx(|.gz|.Z) *(/)' -- mdrun
+compctl  -x 's[-]' -s " s o x cpi cpo c e g dhdl field table tabletf tablep tableb rerun tpi tpid ei eo j jo ffout devout runav px pf ro ra rs rt mtx dn multidir membed mp mn h version nice deffnm xvg pd dd ddorder npme nt ntmpi ntomp ntomp_pme pin pinoffset pinstride gpu_id noddcheck rdd rcon dlb dds gcom nb notunepme testverlet v nocompact seppot pforce reprod cpt cpnum noappend nsteps maxh multi replex nex reseed ionize" - 'c[-1,-xvg]' -s " xmgrace xmgr none" - 'c[-1,-ddorder]' -s " interleave pp_pme cartesian" - 'c[-1,-pin]' -s " auto on off" - 'c[-1,-dlb]' -s " auto no yes" - 'c[-1,-nb]' -s " auto cpu gpu gpu_cpu" - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.(trr|cpt|trj)(|.gz|.Z) *(/)' - 'c[-1,-x]' -g '*.xtc(|.gz|.Z) *(/)' - 'c[-1,-cpi]' -g '*.cpt(|.gz|.Z) *(/)' - 'c[-1,-cpo]' -g '*.cpt(|.gz|.Z) *(/)' - 'c[-1,-c]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz)(|.gz|.Z) *(/)' - 'c[-1,-e]' -g '*.edr(|.gz|.Z) *(/)' - 'c[-1,-g]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-dhdl]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-field]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-table]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tabletf]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tablep]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tableb]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-rerun]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-tpi]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-tpid]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ei]' -g '*.edi(|.gz|.Z) *(/)' - 'c[-1,-eo]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-j]' -g '*.gct(|.gz|.Z) *(/)' - 'c[-1,-jo]' -g '*.gct(|.gz|.Z) *(/)' - 'c[-1,-ffout]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-devout]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-runav]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-px]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-pf]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ro]' -g '*.xvg(|.gz|.Z) *(/)' - 'c[-1,-ra]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-rs]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-rt]' -g '*.log(|.gz|.Z) *(/)' - 'c[-1,-mtx]' -g '*.mtx(|.gz|.Z) *(/)' - 'c[-1,-dn]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-multidir]' -g '*.line_buf(|.gz|.Z) *(/)' - 'c[-1,-membed]' -g '*.dat(|.gz|.Z) *(/)' - 'c[-1,-mp]' -g '*.top(|.gz|.Z) *(/)' - 'c[-1,-mn]' -g '*.ndx(|.gz|.Z) *(/)' -- mdrun_mpi
 compctl  -x 's[-]' -s " s n h version nice type nohyd hq" - 'c[-1,-type]' -s " angle dihedral improper ryckaert-bellemans" - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' -- mk_angndx
 compctl  -x 's[-]' -s " f s n h version nice b e dt" - 'c[-1,-f]' -g '*.(xtc|trr|cpt|trj|gro|g96|pdb|g87)(|.gz|.Z) *(/)' - 'c[-1,-s]' -g '*.(tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' -- ngmx
 compctl  -x 's[-]' -s " f o p i n q h version nice chainsep merge ff water inter ss ter lys arg asp glu gln his angle dist una ignh missing v posrefc vsite heavyh deuterate nochargegrp nocmap renum rtpres" - 'c[-1,-chainsep]' -s " id_or_ter id_and_ter ter id interactive" - 'c[-1,-merge]' -s " no all interactive" - 'c[-1,-water]' -s " select none spc spce tip3p tip4p tip5p" - 'c[-1,-vsite]' -s " none hydrogens aromatics" - 'c[-1,-f]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz|tpr|tpb|tpa)(|.gz|.Z) *(/)' - 'c[-1,-o]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz)(|.gz|.Z) *(/)' - 'c[-1,-p]' -g '*.top(|.gz|.Z) *(/)' - 'c[-1,-i]' -g '*.itp(|.gz|.Z) *(/)' - 'c[-1,-n]' -g '*.ndx(|.gz|.Z) *(/)' - 'c[-1,-q]' -g '*.(gro|g96|pdb|brk|ent|esp|xyz)(|.gz|.Z) *(/)' -- pdb2gmx
index 871b3635c06e88a1e5930615aa404ace984b4b77..56eb38d25f5b09b2337912e570ad426de2b6452a 100644 (file)
@@ -2738,10 +2738,18 @@ static real cellsize_min_dlb(gmx_domdec_comm_t *comm, int dim_ind, int dim)
 
     cellsize_min = comm->cellsize_min[dim];
 
-    if (!comm->bVacDLBNoLimit && comm->bPMELoadBalDLBLimits)
+    if (!comm->bVacDLBNoLimit)
     {
-        cellsize_min = max(cellsize_min,
-                           comm->PMELoadBal_max_cutoff/comm->cd[dim_ind].np_dlb);
+        /* The cut-off might have changed, e.g. by PME load balacning,
+         * from the value used to set comm->cellsize_min, so check it.
+         */
+        cellsize_min = max(cellsize_min, comm->cutoff/comm->cd[dim_ind].np_dlb);
+
+        if (comm->bPMELoadBalDLBLimits)
+        {
+            /* Check for the cut-off limit set by the PME load balancing */
+            cellsize_min = max(cellsize_min, comm->PMELoadBal_max_cutoff/comm->cd[dim_ind].np_dlb);
+        }
     }
 
     return cellsize_min;
index c97043d89d967b04862d3caf80704134f20f7a01..819260e622921b20fa705262edc6423cc2a05346 100644 (file)
@@ -513,7 +513,8 @@ void wallcycle_sum(t_commrec *cr, gmx_wallcycle_t wc)
 }
 
 static void print_cycles(FILE *fplog, double c2t, const char *name,
-                         int nnodes_tot, int nnodes, int nthreads,
+                         int nthreads_tot,
+                         int nnodes, int nthreads,
                          int n, double c, double tot)
 {
     char   num[11];
@@ -539,7 +540,19 @@ static void print_cycles(FILE *fplog, double c2t, const char *name,
             sprintf(num, "          ");
             sprintf(thstr, "    ");
         }
-        wallt = c*c2t*nnodes_tot/(double)nnodes;
+        /* Convert the cycle count to wallclock time for this task */
+        if (nthreads > 0)
+        {
+            /* Cycle count has been multiplied by the thread count,
+             * correct for the number of threads used.
+             */
+            wallt = c*c2t*nthreads_tot/(double)(nnodes*nthreads);
+        }
+        else
+        {
+            /* nthreads=-1 signals total run time, no correction required */
+            wallt = c*c2t;
+        }
         fprintf(fplog, " %-19s %4d %4s %10s  %10.3f %12.3f   %5.1f\n",
                 name, nnodes, thstr, num, wallt, c*1e-9, 100*c/tot);
     }
@@ -578,7 +591,7 @@ void wallcycle_print(FILE *fplog, int nnodes, int npme, double realtime,
 {
     double     *cycles;
     double      c2t, tot, tot_gpu, tot_cpu_overlap, gpu_cpu_ratio, sum, tot_k;
-    int         i, j, npp, nth_pp, nth_pme;
+    int         i, j, npp, nth_pp, nth_pme, nth_tot;
     char        buf[STRLEN];
     const char *hline = "-----------------------------------------------------------------------------";
 
@@ -601,6 +614,8 @@ void wallcycle_print(FILE *fplog, int nnodes, int npme, double realtime,
         npp  = nnodes;
         npme = nnodes;
     }
+    nth_tot = npp*nth_pp + npme*nth_pme;
+
     tot = cycles[ewcRUN];
 
     /* Conversion factor from cycles to seconds */
@@ -622,7 +637,7 @@ void wallcycle_print(FILE *fplog, int nnodes, int npme, double realtime,
     {
         if (!is_pme_subcounter(i))
         {
-            print_cycles(fplog, c2t, wcn[i], nnodes,
+            print_cycles(fplog, c2t, wcn[i], nth_tot,
                          is_pme_counter(i) ? npme : npp,
                          is_pme_counter(i) ? nth_pme : nth_pp,
                          wc->wcc[i].n, cycles[i], tot);
@@ -639,7 +654,7 @@ void wallcycle_print(FILE *fplog, int nnodes, int npme, double realtime,
                 buf[9] = ' ';
                 snprintf(buf+10, 9, "%-9s", wcn[j]);
                 buf[19] = '\0';
-                print_cycles(fplog, c2t, buf, nnodes,
+                print_cycles(fplog, c2t, buf, nth_tot,
                              is_pme_counter(i) ? npme : npp,
                              is_pme_counter(i) ? nth_pme : nth_pp,
                              wc->wcc_all[i*ewcNR+j].n,
@@ -648,9 +663,9 @@ void wallcycle_print(FILE *fplog, int nnodes, int npme, double realtime,
             }
         }
     }
-    print_cycles(fplog, c2t, "Rest", npp, npp, -1, 0, tot-sum, tot);
+    print_cycles(fplog, c2t, "Rest", nth_tot, npp, -1, 0, tot-sum, tot);
     fprintf(fplog, "%s\n", hline);
-    print_cycles(fplog, c2t, "Total", nnodes, nnodes, -1, 0, tot, tot);
+    print_cycles(fplog, c2t, "Total", nth_tot, nnodes, -1, 0, tot, tot);
     fprintf(fplog, "%s\n", hline);
 
     if (wc->wcc[ewcPMEMESH].n > 0)
@@ -660,7 +675,7 @@ void wallcycle_print(FILE *fplog, int nnodes, int npme, double realtime,
         {
             if (is_pme_subcounter(i))
             {
-                print_cycles(fplog, c2t, wcn[i], nnodes,
+                print_cycles(fplog, c2t, wcn[i], nth_tot,
                              is_pme_counter(i) ? npme : npp,
                              is_pme_counter(i) ? nth_pme : nth_pp,
                              wc->wcc[i].n, cycles[i], tot);
@@ -673,7 +688,7 @@ void wallcycle_print(FILE *fplog, int nnodes, int npme, double realtime,
     fprintf(fplog, "%s\n", hline);
     for (i = 0; i < ewcsNR; i++)
     {
-        print_cycles(fplog, c2t, wcsn[i], nnodes, npp, nth_pp,
+        print_cycles(fplog, c2t, wcsn[i], nth_tot, npp, nth_pp,
                      wc->wcsc[i].n, cycles[ewcNR+i], tot);
     }
     fprintf(fplog, "%s\n", hline);
index c16d4aa9dc470ef816a917f51d87341fa9e76740..cec55f0c14b1e22a73e5aefc8b9c40144cc1d8a0 100644 (file)
@@ -576,15 +576,18 @@ static int set_grid_size_xy(const nbnxn_search_t nbs,
 /* Sort particle index a on coordinates x along dim.
  * Backwards tells if we want decreasing iso increasing coordinates.
  * h0 is the minimum of the coordinate range.
- * invh is the inverse hole spacing.
- * nsort, the theortical hole limit, is only used for debugging.
+ * invh is the 1/length of the sorting range.
+ * n_per_h (>=n) is the expected average number of particles per 1/invh
  * sort is the sorting work array.
+ * sort should have a size of at least n_per_h*SORT_GRID_OVERSIZE + n,
+ * or easier, allocate at least n*SGSF elements.
  */
 static void sort_atoms(int dim, gmx_bool Backwards,
                        int *a, int n, rvec *x,
-                       real h0, real invh, int nsort, int *sort)
+                       real h0, real invh, int n_per_h,
+                       int *sort)
 {
-    int i, c;
+    int nsort, i, c;
     int zi, zim, zi_min, zi_max;
     int cp, tmp;
 
@@ -594,6 +597,21 @@ static void sort_atoms(int dim, gmx_bool Backwards,
         return;
     }
 
+#ifndef NDEBUG
+    if (n > n_per_h)
+    {
+        gmx_incons("n > n_per_h");
+    }
+#endif
+
+    /* Transform the inverse range height into the inverse hole height */
+    invh *= n_per_h*SORT_GRID_OVERSIZE;
+
+    /* Set nsort to the maximum possible number of holes used.
+     * In worst case all n elements end up in the last bin.
+     */
+    nsort = n_per_h*SORT_GRID_OVERSIZE + n;
+
     /* Determine the index range used, so we can limit it for the second pass */
     zi_min = INT_MAX;
     zi_max = -1;
@@ -607,11 +625,13 @@ static void sort_atoms(int dim, gmx_bool Backwards,
          */
         zi = (int)((x[a[i]][dim] - h0)*invh);
 
-#ifdef DEBUG_NBNXN_GRIDDING
-        if (zi < 0 || zi >= nsort)
+#ifndef NDEBUG
+        /* As we can have rounding effect, we use > iso >= here */
+        if (zi < 0 || zi > n_per_h*SORT_GRID_OVERSIZE)
         {
-            gmx_fatal(FARGS, "(int)((x[%d][%c]=%f - %f)*%f) = %d, not in 0 - %d\n",
-                      a[i], 'x'+dim, x[a[i]][dim], h0, invh, zi, nsort);
+            gmx_fatal(FARGS, "(int)((x[%d][%c]=%f - %f)*%f) = %d, not in 0 - %d*%d\n",
+                      a[i], 'x'+dim, x[a[i]][dim], h0, invh, zi,
+                      n_per_h, SORT_GRID_OVERSIZE);
         }
 #endif
 
@@ -1240,8 +1260,8 @@ static void sort_columns_simple(const nbnxn_search_t nbs,
         sort_atoms(ZZ, FALSE,
                    nbs->a+ash, na, x,
                    grid->c0[ZZ],
-                   ncz*grid->na_sc*SORT_GRID_OVERSIZE/nbs->box[ZZ][ZZ],
-                   ncz*grid->na_sc*SGSF, sort_work);
+                   1.0/nbs->box[ZZ][ZZ], ncz*grid->na_sc,
+                   sort_work);
 
         /* Fill the ncz cells in this column */
         cfilled = grid->cxy_ind[cxy];
@@ -1326,8 +1346,8 @@ static void sort_columns_supersub(const nbnxn_search_t nbs,
         sort_atoms(ZZ, FALSE,
                    nbs->a+ash, na, x,
                    grid->c0[ZZ],
-                   ncz*grid->na_sc*SORT_GRID_OVERSIZE/nbs->box[ZZ][ZZ],
-                   ncz*grid->na_sc*SGSF, sort_work);
+                   1.0/nbs->box[ZZ][ZZ], ncz*grid->na_sc,
+                   sort_work);
 
         /* This loop goes over the supercells and subcells along z at once */
         for (sub_z = 0; sub_z < ncz*GPU_NSUBCELL_Z; sub_z++)
@@ -1357,8 +1377,8 @@ static void sort_columns_supersub(const nbnxn_search_t nbs,
             sort_atoms(YY, (sub_z & 1),
                        nbs->a+ash_z, na_z, x,
                        grid->c0[YY]+cy*grid->sy,
-                       subdiv_y*SORT_GRID_OVERSIZE*grid->inv_sy,
-                       subdiv_y*SGSF, sort_work);
+                       grid->inv_sy, subdiv_z,
+                       sort_work);
 #endif
 
             for (sub_y = 0; sub_y < GPU_NSUBCELL_Y; sub_y++)
@@ -1371,8 +1391,8 @@ static void sort_columns_supersub(const nbnxn_search_t nbs,
                 sort_atoms(XX, ((cz*GPU_NSUBCELL_Y + sub_y) & 1),
                            nbs->a+ash_y, na_y, x,
                            grid->c0[XX]+cx*grid->sx,
-                           subdiv_x*SORT_GRID_OVERSIZE*grid->inv_sx,
-                           subdiv_x*SGSF, sort_work);
+                           grid->inv_sx, subdiv_y,
+                           sort_work);
 #endif
 
                 for (sub_x = 0; sub_x < GPU_NSUBCELL_X; sub_x++)
@@ -1433,9 +1453,9 @@ static void calc_column_indices(nbnxn_grid_t *grid,
                 cx = (int)((x[i][XX] - grid->c0[XX])*grid->inv_sx);
                 cy = (int)((x[i][YY] - grid->c0[YY])*grid->inv_sy);
 
-#ifdef DEBUG_NBNXN_GRIDDING
-                if (cx < 0 || cx >= grid->ncx ||
-                    cy < 0 || cy >= grid->ncy)
+#ifndef NDEBUG
+                if (cx < 0 || cx > grid->ncx ||
+                    cy < 0 || cy > grid->ncy)
                 {
                     gmx_fatal(FARGS,
                               "grid cell cx %d cy %d out of range (max %d %d)\n"
index 6dfd7e639312b902740d532986f50caa6af9da02..b2ff2035a63b816d637815499013a6819c8d2076 100644 (file)
@@ -42,10 +42,8 @@ if(REGRESSIONTEST_DOWNLOAD AND CMAKE_VERSION VERSION_LESS "2.8.2")
         "REGRESSIONTEST_DOWNLOAD not supported with cmake ${CMAKE_VERSION}" FORCE)
 endif()
 if(REGRESSIONTEST_DOWNLOAD)
-    if("${PROJECT_VERSION}" MATCHES "-dev")
-        set(REGRESSIONTEST_VERSION master)
-    else()
-        set(REGRESSIONTEST_VERSION ${PROJECT_VERSION})
+    if(NOT REGRESSIONTEST_VERSION)
+        message(FATAL_ERROR "The configuration files do not specify what regressiontests tarball is suitable for automated download and testing. Please obtain and use a suitable set of tests yourself.")
     endif()
     set(REGRESSIONTEST_URL
         http://gerrit.gromacs.org/download/regressiontests-${REGRESSIONTEST_VERSION}.tar.gz)
@@ -150,6 +148,6 @@ if(REGRESSIONTEST_PATH)
             #windows requires the command to be perl and not the script
             COMMAND perl "${REGRESSIONTEST_PATH}/gmxtest.pl" ${subtest} ${ARGS})
         set_tests_properties(regressiontests/${subtest} PROPERTIES
-            ENVIRONMENT "PATH=${PATH}")
+            ENVIRONMENT "PATH=${PATH};GMXLIB=${CMAKE_SOURCE_DIR}/share/top")
     endforeach()
 endif()