#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
-timestamp='2008-12-19'
+timestamp='2010-07-29'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the same distribution terms that you use for the rest of that program.
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner. Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
me=`echo "$0" | sed -e 's,.*/,,'`
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
exit 1
fi
-trap 'exit 1' 1 2 15
+trap 'exit 1' HUP INT TERM
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
set_cc_for_build='
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ;
: ${TMPDIR=/tmp} ;
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
+ | grep -q __ELF__
then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX?
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval $set_cc_for_build
SUN_ARCH="i386"
echo rs6000-ibm-aix3.2
fi
exit ;;
- *:AIX:*:[456])
+ *:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
# => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
+ grep -q __LP64__
then
HP_ARCH="hppa2.0w"
else
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- *:Interix*:[3456]*)
+ *:Interix*:*)
case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
- EM64T | authenticamd | genuineintel)
+ authenticamd | genuineintel | EM64T)
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
IA64)
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
frv:Linux:*:*)
echo frv-unknown-linux-gnu
exit ;;
+ i*86:Linux:*:*)
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
+ mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
- #undef mips64
- #undef mips64el
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
+ CPU=${UNAME_MACHINE}el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
+ CPU=${UNAME_MACHINE}
#else
CPU=
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
echo or32-unknown-linux-gnu
exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
*) echo hppa-unknown-linux-gnu ;;
esac
exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^LIBC/{
- s: ::g
- p
- }'`"
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable
exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit ;;
i*86:*DOS:*:*)
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
exit ;;
SM[BE]S:UNIX_SV:*:*)
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
case $UNAME_PROCESSOR in
+ i386)
+ eval $set_cc_for_build
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ UNAME_PROCESSOR="x86_64"
+ fi
+ fi ;;
unknown) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
i*86:rdos:*:*)
echo ${UNAME_MACHINE}-pc-rdos
exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
-timestamp='2009-01-19'
+timestamp='2010-05-21'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
+ -apple | -axis | -knuth | -cray | -microblaze)
os=
basic_machine=$1
;;
+ -bluegene*)
+ os=-cnk
+ ;;
-sim | -cisco | -oki | -wec | -winbond)
os=
basic_machine=$1
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | moxie \
| mt \
| msp430 \
| nios | nios2 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
+ | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
+ | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
| v850 | v850e \
| we32k \
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12)
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | picochip)
# Motorola 68HC11/12.
basic_machine=$basic_machine-unknown
os=-none
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
- | romp-* | rs6000-* \
+ | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile-* | tilegx-* \
| tron-* \
+ | ubicom32-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
basic_machine=m68k-apollo
os=-bsd
;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
aux)
basic_machine=m68k-apple
os=-aux
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
basic_machine=ns32k-utek
os=-sysv
;;
+ microblaze)
+ basic_machine=microblaze-xilinx
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
basic_machine=t90-cray
os=-unicos
;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
+ # This must be matched before tile*.
+ tilegx*)
+ basic_machine=tilegx-unknown
+ os=-linux-gnu
;;
tile*)
basic_machine=tile-unknown
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -kopensolaris* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
+ | -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -mingw32* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
-dicos*)
os=-dicos
;;
+ -nacl*)
+ ;;
-none)
;;
*)
c4x-* | tic4x-*)
os=-coff
;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
+ ;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
-sunos*)
vendor=sun
;;
- -aix*)
+ -cnk*|-aix*)
vendor=ibm
;;
-beos*)
sparc*-solaris* | alpha*-* | rs6000*-aix* | powerpc*-aix* | mips*-irix*) enable_fortran=yes ;;
*) enable_fortran=no ;;
esac])
-if test "$enable_fortran" = "yes" -a "$enable_power6" = "no"; then
- AC_DEFINE(GMX_FORTRAN,,[Enable Fortran support])
-fi
# Generic fortran kernels will be turned off below if you enable power6-specific optimization!
# always use CC for linking:
AC_SUBST(F77LINK,"\$(LINK)")
if test -d $srcdir/.git ; then
AC_CHECK_PROG(have_git, git, yes, no)
if test "$have_git" = "yes" ; then
- AC_MSG_CHECKING(for git >= 1.5.1)
- if test "`git --version`" \< "git version 1.5.1" ; then
- AC_MSG_RESULT(no)
- else
- AC_MSG_RESULT(yes)
+ AC_MSG_CHECKING(for a recent enough git)
+ if git --git-dir=$srcdir/.git rev-list -n1 --pretty=format:%cd HEAD | grep "Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun" >/dev/null 2>&1; then
+ AC_MSG_RESULT(yes)
generate_version=yes
AC_DEFINE(USE_VERSION_H,,[Use generated version info])
+ else
+ AC_MSG_RESULT(no)
fi
fi
if test "$generate_version" = "no" ; then
AC_DEFINE(GMX_BLUEGENE,,[Use assembly intrinsics kernels for BlueGene])
fi
+if test "$enable_fortran" = "yes"; then
+ AC_DEFINE(GMX_FORTRAN,,[Enable Fortran support])
+fi
+
##
# Add the appropriate assembly loops
#
#ifndef _3dview_h
#define _3dview_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
#ifndef _assert_h
#define _assert_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <ctype.h>
#include "sysstuff.h"
#ifndef _atomprop_h
#define _atomprop_h
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
enum { epropMass, epropVDW, epropDGsol, epropElectroneg, epropElement,
epropNR };
-extern gmx_atomprop_t gmx_atomprop_init(void);
+gmx_atomprop_t gmx_atomprop_init(void);
/* Initializes and returns the atom properties struct */
-extern void gmx_atomprop_destroy(gmx_atomprop_t aps);
+void gmx_atomprop_destroy(gmx_atomprop_t aps);
/* Get rid of memory after use */
-extern char *gmx_atomprop_element(gmx_atomprop_t aps,int atomnumber);
+char *gmx_atomprop_element(gmx_atomprop_t aps,int atomnumber);
-extern int gmx_atomprop_atomnumber(gmx_atomprop_t aps,const char *element);
+int gmx_atomprop_atomnumber(gmx_atomprop_t aps,const char *element);
-extern bool gmx_atomprop_query(gmx_atomprop_t aps,
- int eprop,const char *resnm,const char *atomnm,
- real *value);
+bool gmx_atomprop_query(gmx_atomprop_t aps,
+ int eprop,const char *resnm,const char *atomnm,
+ real *value);
/* Extract a value from the database. Returns TRUE on succes,
* FALSE otherwise. In the latter case, value is a deafult value.
* The first time this function is called for this property
#ifndef _bondf_h
#define _bondf_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include <stdio.h>
#include "typedefs.h"
extern "C" {
#endif
-extern int glatnr(int *global_atom_index,int i);
+int glatnr(int *global_atom_index,int i);
/* Returns the global topology atom number belonging to local atom index i.
* This function is intended for writing ascii output
* and returns atom numbers starting at 1.
* When global_atom_index=NULL returns i+1.
*/
-extern void calc_bonds(FILE *fplog,const gmx_multisim_t *ms,
- const t_idef *idef,
- rvec x[],history_t *hist,
- rvec f[],t_forcerec *fr,
- const t_pbc *pbc,const t_graph *g,
- gmx_enerdata_t *enerd,t_nrnb *nrnb,real lambda,
- const t_mdatoms *md,
- t_fcdata *fcd,int *ddgatindex,
- t_atomtypes *atype, gmx_genborn_t *born,
- bool bPrintSepPot,gmx_large_int_t step);
+void calc_bonds(FILE *fplog,const gmx_multisim_t *ms,
+ const t_idef *idef,
+ rvec x[],history_t *hist,
+ rvec f[],t_forcerec *fr,
+ const t_pbc *pbc,const t_graph *g,
+ gmx_enerdata_t *enerd,t_nrnb *nrnb,real lambda,
+ const t_mdatoms *md,
+ t_fcdata *fcd,int *ddgatindex,
+ t_atomtypes *atype, gmx_genborn_t *born,
+ bool bPrintSepPot,gmx_large_int_t step);
/*
* The function calc_bonds() calculates all bonded force interactions.
* The "bonds" are specified as follows:
* the total potential energy (sum over epot).
*/
-extern void calc_bonds_lambda(FILE *fplog,
+void calc_bonds_lambda(FILE *fplog,
const t_idef *idef,
rvec x[],
t_forcerec *fr,
* The shift forces in fr are not affected.
*/
-extern real posres(int nbonds,
+real posres(int nbonds,
const t_iatom forceatoms[],const t_iparams forceparams[],
const rvec x[],rvec f[],rvec vir_diag,
t_pbc *pbc,
int refcoord_scaling,int ePBC,rvec comA,rvec comB);
/* Position restraints require a different pbc treatment from other bondeds */
-extern real bond_angle(const rvec xi,const rvec xj,const rvec xk,
+real bond_angle(const rvec xi,const rvec xj,const rvec xk,
const t_pbc *pbc,
rvec r_ij,rvec r_kj,real *costh,
int *t1,int *t2); /* out */
/* Calculate bond-angle. No PBC is taken into account (use mol-shift) */
-extern real dih_angle(const rvec xi,const rvec xj,const rvec xk,const rvec xl,
+real dih_angle(const rvec xi,const rvec xj,const rvec xk,const rvec xl,
const t_pbc *pbc,
rvec r_ij,rvec r_kj,rvec r_kl,rvec m,rvec n, /* out */
real *sign,
int *t1,int *t2,int *t3);
/* Calculate dihedral-angle. No PBC is taken into account (use mol-shift) */
-extern void do_dih_fup(int i,int j,int k,int l,real ddphi,
+void do_dih_fup(int i,int j,int k,int l,real ddphi,
rvec r_ij,rvec r_kj,rvec r_kl,
rvec m,rvec n,rvec f[],rvec fshift[],
const t_pbc *pbc,const t_graph *g,
* Bonded force functions
*
*************************************************************************/
- extern t_ifunc bonds,g96bonds,morse_bonds,cubic_bonds,FENE_bonds,restraint_bonds;
- extern t_ifunc angles,g96angles,cross_bond_bond,cross_bond_angle,urey_bradley,quartic_angles;
- extern t_ifunc pdihs,idihs,rbdihs;
- extern t_ifunc tab_bonds,tab_angles,tab_dihs;
- extern t_ifunc polarize,water_pol,thole_pol,angres,angresz,unimplemented;
+ t_ifunc bonds,g96bonds,morse_bonds,cubic_bonds,FENE_bonds,restraint_bonds;
+ t_ifunc angles,g96angles,cross_bond_bond,cross_bond_angle,urey_bradley,quartic_angles;
+ t_ifunc pdihs,idihs,rbdihs;
+ t_ifunc tab_bonds,tab_angles,tab_dihs;
+ t_ifunc polarize,water_pol,thole_pol,angres,angresz,unimplemented;
#ifdef __cplusplus
}
* And Hey:
* Gromacs Runs On Most of All Computer Systems
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "typedefs.h"
extern "C" {
#endif
-extern real calc_grid(FILE *fp,
+real calc_grid(FILE *fp,
matrix box,real gr_sp,
int *nx,int *ny,int *nz);
/* Sets the number of grid points for each zero n* to the first reasonable
#ifndef _calch_h
#define _calch_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void calc_h_pos(int nht, rvec xa[], rvec xh[], int *l);
+void calc_h_pos(int nht, rvec xa[], rvec xh[], int *l);
/*
* w.f. van gunsteren, groningen, july 1981
*
#ifndef _calcmu_h
#define _calcmu_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "typedefs.h"
#include "network.h"
extern "C" {
#endif
-extern void calc_mu(int start,int homenr,rvec x[],real q[],real qB[],
+void calc_mu(int start,int homenr,rvec x[],real q[],real qB[],
int nChargePerturbed,
dvec mu,dvec mu_B);
-extern bool read_mu(FILE *fp,rvec mu,real *vol);
+bool read_mu(FILE *fp,rvec mu,real *vol);
/* Return true on succes */
#ifdef __cplusplus
#endif
/** Calculate a single center of geometry. */
-extern int
+int
gmx_calc_cog(t_topology *top, rvec x[], int nrefat, atom_id index[], rvec xout);
/** Calculate a single center of mass. */
-extern int
+int
gmx_calc_com(t_topology *top, rvec x[], int nrefat, atom_id index[], rvec xout);
/** Calculate force on a single center of geometry. */
-extern int
+int
gmx_calc_cog_f(t_topology *top, rvec f[], int nrefat, atom_id index[], rvec fout);
/** Calculate a single center of mass/geometry. */
-extern int
+int
gmx_calc_comg(t_topology *top, rvec x[], int nrefat, atom_id index[],
bool bMass, rvec xout);
/** Calculate force on a single center of mass/geometry. */
-extern int
+int
gmx_calc_comg_f(t_topology *top, rvec f[], int nrefat, atom_id index[],
bool bMass, rvec fout);
/** Calculate a single center of geometry iteratively, taking PBC into account. */
-extern int
+int
gmx_calc_cog_pbc(t_topology *top, rvec x[], t_pbc *pbc,
int nrefat, atom_id index[], rvec xout);
/** Calculate a single center of mass iteratively, taking PBC into account. */
-extern int
+int
gmx_calc_com_pbc(t_topology *top, rvec x[], t_pbc *pbc,
int nrefat, atom_id index[], rvec xout);
/** Calculate a single center of mass/geometry iteratively with PBC. */
-extern int
+int
gmx_calc_comg_pbc(t_topology *top, rvec x[], t_pbc *pbc,
int nrefat, atom_id index[], bool bMass, rvec xout);
/** Calculate centers of geometry for a blocked index. */
-extern int
+int
gmx_calc_cog_block(t_topology *top, rvec x[], t_block *block,
atom_id index[], rvec xout[]);
/** Calculate centers of mass for a blocked index. */
-extern int
+int
gmx_calc_com_block(t_topology *top, rvec x[], t_block *block,
atom_id index[], rvec xout[]);
/** Calculate forces on centers of geometry for a blocked index. */
-extern int
+int
gmx_calc_cog_f_block(t_topology *top, rvec f[], t_block *block,
atom_id index[], rvec fout[]);
/** Calculate centers of mass/geometry for a blocked index. */
-extern int
+int
gmx_calc_comg_block(t_topology *top, rvec x[], t_block *block,
atom_id index[], bool bMass, rvec xout[]);
/** Calculate forces on centers of mass/geometry for a blocked index. */
-extern int
+int
gmx_calc_comg_f_block(t_topology *top, rvec f[], t_block *block,
atom_id index[], bool bMass, rvec fout[]);
/** Calculate centers of mass/geometry for a set of blocks; */
-extern int
+int
gmx_calc_comg_blocka(t_topology *top, rvec x[], t_blocka *block,
bool bMass, rvec xout[]);
/** Calculate forces on centers of mass/geometry for a set of blocks; */
-extern int
+int
gmx_calc_comg_f_blocka(t_topology *top, rvec x[], t_blocka *block,
bool bMass, rvec xout[]);
#ifndef _chargegroup_h
#define _chargegroup_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "sysstuff.h"
#include "typedefs.h"
extern "C" {
#endif
- extern void calc_chargegroup_radii(const gmx_mtop_t *mtop,rvec *x,
+ void calc_chargegroup_radii(const gmx_mtop_t *mtop,rvec *x,
real *rvdw1,real *rvdw2,
real *rcoul1,real *rcoul2);
/* This routine calculates the two largest charge group radii in x,
* separately for VdW and Coulomb interactions.
*/
- extern void calc_cgcm(FILE *log,int cg0,int cg1,t_block *cgs,
+ void calc_cgcm(FILE *log,int cg0,int cg1,t_block *cgs,
rvec pos[],rvec cg_cm[]);
/* Routine to compute centers of geometry of charge groups. No periodicity
* is used.
*/
- extern void put_charge_groups_in_box (FILE *log,int cg0,int cg1,
+ void put_charge_groups_in_box (FILE *log,int cg0,int cg1,
int ePBC,matrix box,t_block *cgs,
rvec pos[],
rvec cg_cm[]);
#ifndef _checkpoint_h
#define _checkpoint_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "typedefs.h"
#include "gmxfio.h"
* Appends the _step<step>.cpt with bNumberAndKeep,
* otherwise moves the previous <fn>.cpt to <fn>_prev.cpt
*/
-extern void write_checkpoint(const char *fn,bool bNumberAndKeep,
+void write_checkpoint(const char *fn,bool bNumberAndKeep,
FILE *fplog,t_commrec *cr,
int eIntegrator,int simulation_part,
gmx_large_int_t step,double t,
* and communicates all the modified number of steps and the parallel setup,
* but not the state itself.
*/
-extern void load_checkpoint(const char *fn,FILE **fplog,
+void load_checkpoint(const char *fn,FILE **fplog,
t_commrec *cr,bool bPartDecomp,ivec dd_nc,
t_inputrec *ir,t_state *state,bool *bReadRNG,
bool *bReadEkin,
* If bReadRNG=TRUE a RNG state compatible with the current
* number of nodes was read.
*/
-extern void read_checkpoint_state(const char *fn,int *simulation_part,
+void read_checkpoint_state(const char *fn,int *simulation_part,
gmx_large_int_t *step,double *t,t_state *state);
/* Read everything that can be stored in t_trxframe from a checkpoint file */
-extern void read_checkpoint_trxframe(t_fileio *fp,t_trxframe *fr);
+void read_checkpoint_trxframe(t_fileio *fp,t_trxframe *fr);
/* Print the complete contents of checkpoint file fn to out */
-extern void list_checkpoint(const char *fn,FILE *out);
+void list_checkpoint(const char *fn,FILE *out);
/* Read just the simulation 'generation' and with bAppendReq check files.
* This is necessary already at the beginning of mdrun,
*/
bool read_checkpoint_simulation_part(const char *filename,int *simulation_part,
gmx_large_int_t *step,t_commrec *cr,
- bool bAppendReq,
- int nfile,const t_filenm fnm[],
- const char *part_suffix,bool *bAddPart);
+ bool bAppendReq,
+ int nfile,const t_filenm fnm[],
+ const char *part_suffix,bool *bAddPart);
#ifdef __cplusplus
}
#ifndef _confio_h
#define _confio_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "typedefs.h"
extern "C" {
#endif
-extern void init_t_atoms(t_atoms *atoms, int natoms, bool bPdbinfo);
+void init_t_atoms(t_atoms *atoms, int natoms, bool bPdbinfo);
/* allocate memory for the arrays, set nr to natoms and nres to 0
* set pdbinfo to NULL or allocate memory for it */
/* write a Gromos96 coordinate file or trajectory frame *
* index can be NULL */
-extern bool gro_next_x_or_v(FILE *status,t_trxframe *fr);
-extern int gro_first_x_or_v(FILE *status,t_trxframe *fr);
+bool gro_next_x_or_v(FILE *status,t_trxframe *fr);
+int gro_first_x_or_v(FILE *status,t_trxframe *fr);
/* read first/next x and/or v frame from gro file */
-extern void write_hconf_indexed_p(FILE *out,const char *title,t_atoms *atoms,
+void write_hconf_indexed_p(FILE *out,const char *title,t_atoms *atoms,
int nx,atom_id index[],int ndec,
rvec *x,rvec *v,matrix box);
-extern void write_hconf_p(FILE *out,const char *title,t_atoms *atoms, int ndec,
+void write_hconf_p(FILE *out,const char *title,t_atoms *atoms, int ndec,
rvec *x,rvec *v,matrix box);
/* Write a Gromos file with precision ndec: number of decimal places in x,
* v has one place more. */
atom_id nindex,atom_id index[]);
/* like write_sto_conf, but indexed */
-extern void write_sto_conf(const char *outfile,const char *title,
+void write_sto_conf(const char *outfile,const char *title,
t_atoms *atoms,
rvec x[],rvec *v,int ePBC,matrix box);
/* write atoms, x, v (if .gro and not NULL) and box (if not NULL)
* to an STO (.gro or .pdb) file */
-extern void write_sto_conf_mtop(const char *outfile,const char *title,
+void write_sto_conf_mtop(const char *outfile,const char *title,
gmx_mtop_t *mtop,
rvec x[],rvec *v,int ePBC,matrix box);
/* As write_sto_conf, but uses a gmx_mtop_t struct */
-extern void get_stx_coordnum (const char *infile,int *natoms);
+void get_stx_coordnum (const char *infile,int *natoms);
/* read the number of atoms from an STX file */
-extern void read_stx_conf(const char *infile,char *title,
+void read_stx_conf(const char *infile,char *title,
t_atoms *atoms,
rvec x[],rvec *v,int *ePBC,matrix box);
/* Read atoms, x, v and box from an STX file.
* And Hey:
* Gromacs Runs On Most of All Computer Systems
*/
-#ifdef HAVE_CONFIG_H
-#include<config.h>
-#endif
#include "typedefs.h"
econqForceDispl /* Constrain forces (mass-weighted 1/0 for freeze) */
};
-extern int n_flexible_constraints(struct gmx_constr *constr);
+int n_flexible_constraints(struct gmx_constr *constr);
/* Returns the total number of flexible constraints in the system */
-extern void too_many_constraint_warnings(int eConstrAlg,int warncount);
+void too_many_constraint_warnings(int eConstrAlg,int warncount);
/* Generate a fatal error because of too many LINCS/SETTLE warnings */
-extern gmx_shakedata_t shake_init();
+gmx_shakedata_t shake_init();
/* Initializes and return the SHAKE data structure */
-extern bool bshakef(FILE *log, /* Log file */
+bool bshakef(FILE *log, /* Log file */
gmx_shakedata_t shaked, /* SHAKE data */
int natoms, /* Total number of atoms */
real invmass[], /* Atomic masses */
* Return TRUE when OK, FALSE when shake-error
*/
-extern gmx_settledata_t settle_init(real mO,real mH,real invmO,real invmH,
+gmx_settledata_t settle_init(real mO,real mH,real invmO,real invmH,
real dOH,real dHH);
/* Initializes and returns a structure with SETTLE parameters */
-extern void csettle(gmx_settledata_t settled,
+void csettle(gmx_settledata_t settled,
int nsettle, /* Number of settles */
t_iatom iatoms[], /* The settle iatom list */
real b4[], /* Old coordinates */
t_vetavars *vetavar /* variables for pressure control */
);
-extern void settle_proj(FILE *fp,
+void settle_proj(FILE *fp,
gmx_settledata_t settled,int econq,
int nsettle, t_iatom iatoms[],rvec x[],
rvec *der,rvec *derp,
* of coordinates working on settle type constraint.
*/
-extern void cshake(atom_id iatom[],int ncon,int *nnit,int maxnit,
+void cshake(atom_id iatom[],int ncon,int *nnit,int maxnit,
real dist2[],real xp[],real rij[],real m2[],real omega,
real invmass[],real tt[],real lagr[],int *nerror);
/* Regular iterative shake */
-extern void crattle(atom_id iatom[],int ncon,int *nnit,int maxnit,
+void crattle(atom_id iatom[],int ncon,int *nnit,int maxnit,
real dist2[],real vp[],real rij[],real m2[],real omega,
real invmass[],real tt[],real lagr[],int *nerror,real invdt,t_vetavars *vetavar);
-extern bool constrain(FILE *log,bool bLog,bool bEner,
+bool constrain(FILE *log,bool bLog,bool bEner,
gmx_constr_t constr,
t_idef *idef,
t_inputrec *ir,
*
*/
-extern gmx_constr_t init_constraints(FILE *log,
+gmx_constr_t init_constraints(FILE *log,
gmx_mtop_t *mtop,t_inputrec *ir,
gmx_edsam_t ed,t_state *state,
t_commrec *cr);
/* Initialize constraints stuff */
-extern void set_constraints(gmx_constr_t constr,
+void set_constraints(gmx_constr_t constr,
gmx_localtop_t *top,
t_inputrec *ir,
t_mdatoms *md,
* after the F_CONSTR constraints.
*/
-extern t_blocka make_at2con(int start,int natoms,
+t_blocka make_at2con(int start,int natoms,
t_ilist *ilist,t_iparams *iparams,
bool bDynamics,int *nflexiblecons);
/* Returns a block struct to go from atoms to constraints */
-extern t_blocka *atom2constraints_moltype(gmx_constr_t constr);
+t_blocka *atom2constraints_moltype(gmx_constr_t constr);
/* Returns the an arry of atom to constraints lists for the moltypes */
#define constr_iatomptr(nconstr,iatom_constr,iatom_constrnc,con) ((con) < (nconstr) ? (iatom_constr)+(con)*3 : (iatom_constrnc)+(con-nconstr)*3)
* are concatenated.
*/
-extern bool inter_charge_group_constraints(gmx_mtop_t *mtop);
+bool inter_charge_group_constraints(gmx_mtop_t *mtop);
/* Returns if there are inter charge group constraints */
-extern real *constr_rmsd_data(gmx_constr_t constr);
+real *constr_rmsd_data(gmx_constr_t constr);
/* Return the data for determining constraint RMS relative deviations.
* Returns NULL when LINCS is not used.
*/
-extern real constr_rmsd(gmx_constr_t constr,bool bSD2);
+real constr_rmsd(gmx_constr_t constr,bool bSD2);
/* Return the RMSD of the constraint, bSD2 selects the second SD step */
-extern real *lincs_rmsd_data(gmx_lincsdata_t lincsd);
+real *lincs_rmsd_data(gmx_lincsdata_t lincsd);
/* Return the data for determining constraint RMS relative deviations */
-extern real lincs_rmsd(gmx_lincsdata_t lincsd,bool bSD2);
+real lincs_rmsd(gmx_lincsdata_t lincsd,bool bSD2);
/* Return the RMSD of the constraint, bSD2 selects the second SD step */
gmx_lincsdata_t init_lincs(FILE *fplog,gmx_mtop_t *mtop,
bool bPLINCS,int nIter,int nProjOrder);
/* Initializes and returns the lincs data struct */
-extern void set_lincs(t_idef *idef,t_mdatoms *md,
+void set_lincs(t_idef *idef,t_mdatoms *md,
bool bDynamics,t_commrec *cr,
gmx_lincsdata_t li);
/* Initialize lincs stuff */
-extern void set_lincs_matrix(gmx_lincsdata_t li,real *invmass,real lambda);
+void set_lincs_matrix(gmx_lincsdata_t li,real *invmass,real lambda);
/* Sets the elements of the LINCS constraint coupling matrix */
-extern real constr_r_max(FILE *fplog,gmx_mtop_t *mtop,t_inputrec *ir);
+real constr_r_max(FILE *fplog,gmx_mtop_t *mtop,t_inputrec *ir);
/* Returns an estimate of the maximum distance between atoms
* required for LINCS.
*/
-extern bool constrain_lincs(FILE *log,bool bLog,bool bEner,
+bool constrain_lincs(FILE *log,bool bLog,bool bEner,
t_inputrec *ir,
gmx_large_int_t step,
gmx_lincsdata_t lincsd,t_mdatoms *md,
#ifndef _copyrite_h
#define _copyrite_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include <stdio.h>
#include "types/simple.h"
/* Has to be a function, so we can get version number from autoconf */
const char *GromacsVersion(void);
-void gmx_print_version_info(FILE *fp);
+void
+gmx_print_version_info(FILE *fp);
-static const char *CopyrightText[] = {
+static const char *
+CopyrightText[] = {
"Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.",
"Copyright (c) 1991-2000, University of Groningen, The Netherlands.",
"Copyright (c) 2001-2008, The GROMACS development team,",
"check out http://www.gromacs.org for more information.\n"
};
-static const char *GPLText[] = {
+static const char *
+GPLText[] = {
"This program is free software; you can redistribute it and/or",
"modify it under the terms of the GNU General Public License",
"as published by the Free Software Foundation; either version 2",
};
-extern void pr_difftime(FILE *out,double dt);
+void
+pr_difftime(FILE *out,double dt);
-void CopyRight(FILE *out,const char *szProgram);
+void
+CopyRight(FILE *out,const char *szProgram);
/* For both bromacs() and cool_quote() you have to provide a pointer to
* is necessary to make the routines threadsafe and avoid allocating
* a new string each time. The retstring pointer will be the return value.
*/
-extern void bromacs(char *retstring, int retsize);
+void
+bromacs(char *retstring, int retsize);
/* For cool_quote, the number of the quote used will be returned in cqnum
* if it is non-NULL.
*/
-extern void cool_quote(char *retstring, int retsize, int *cqnum);
+void
+cool_quote(char *retstring, int retsize, int *cqnum);
-extern bool be_cool(void);
+bool
+be_cool(void);
/* Return TRUE when the user is COOL, FALSE otherwise */
-extern void thanx(FILE *fp);
+void
+thanx(FILE *fp);
enum { eCITEGMX, eCITEBATH, eCITESHAKE, eCITESETTLE, eCITESOR,
eCITEDISRE, eCITERF, eCITELINCS, eCITENR };
-extern void please_cite(FILE *fp, const char *key);
+void
+please_cite(FILE *fp, const char *key);
/* Print a message asking to cite something... */
#ifdef __cplusplus
#ifndef _coulomb_h
#define _coulomb_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "typedefs.h"
/* Ewald related stuff */
-void init_ewald_tab(ewald_tab_t *et, const t_commrec *cr, const t_inputrec *ir,
- FILE *fp);
+void
+init_ewald_tab(ewald_tab_t *et, const t_commrec *cr, const t_inputrec *ir,
+ FILE *fp);
/* initialize the ewald table (as found in the t_forcerec) */
-extern real calc_ewaldcoeff(real rc,real dtol);
+real
+calc_ewaldcoeff(real rc,real dtol);
/* Determines the Ewald parameter, both for Ewald and PME */
-extern real do_ewald(FILE *log, bool bVerbose,
- t_inputrec *ir,
- rvec x[], rvec f[],
- real chargeA[], real chargeB[],
- rvec box,
- t_commrec *cr, int natoms,
- matrix lrvir, real ewaldcoeff,
- real lambda, real *dvdlambda,
- ewald_tab_t et);
+real
+do_ewald(FILE *log, bool bVerbose,
+ t_inputrec *ir,
+ rvec x[], rvec f[],
+ real chargeA[], real chargeB[],
+ rvec box,
+ t_commrec *cr, int natoms,
+ matrix lrvir, real ewaldcoeff,
+ real lambda, real *dvdlambda,
+ ewald_tab_t et);
/* Do an Ewald calculation for the long range electrostatics. */
-extern real ewald_LRcorrection(FILE *fp,
+real
+ewald_LRcorrection(FILE *fp,
int start,int end,
t_commrec *cr,t_forcerec *fr,
real *chargeA,real *chargeB,
/* Routines to set global constants for speeding up the calculation
* of potentials and forces.
*/
-extern void set_shift_consts(FILE *log,real r1,real rc,rvec box,
+void
+set_shift_consts(FILE *log,real r1,real rc,rvec box,
t_forcerec *fr);
-extern real shift_LRcorrection(FILE *fp,int start,int natoms,
+real
+shift_LRcorrection(FILE *fp,int start,int natoms,
t_commrec *cr,t_forcerec *fr,
real charge[],t_blocka *excl,rvec x[],
bool bOld,matrix box,matrix lrvir);
#ifndef _dihre_h
#define _dihre_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "sysstuff.h"
#include "typedefs.h"
void init_dihres(FILE *fplog,gmx_mtop_t *mtop,t_inputrec *ir,t_fcdata *fcd);
-extern t_ifunc ta_dihres;
+t_ifunc ta_dihres;
/* Calculate the distance restraint forces, return the potential */
#ifdef __cplusplus
struct gmx_ana_pos_t;
/** Allocates memory for displacement calculation. */
-extern int
+int
gmx_ana_displ_create(gmx_ana_displ_t **d, int nmax, real tmax);
/** Initializes displacement calculation for a frame. */
-extern int
+int
gmx_ana_displ_start_frame(gmx_ana_displ_t *d, real t);
/** Returns the number of steps corresponding to a given time interval. */
-extern int
+int
gmx_ana_displ_time_to_steps(gmx_ana_displ_t *d, real time, int *nsteps);
/** Stores the position of a particle for displacement calculation. */
-extern int
+int
gmx_ana_displ_store(gmx_ana_displ_t *d, atom_id id, rvec x, bool bPres);
/** Convenience function for storing an array of particle positions for displacement calculation. */
-extern int
+int
gmx_ana_displ_store_array(gmx_ana_displ_t *d, int n, atom_id id[], rvec x[]);
/** Stores an array of particle positions for displacement calculation, including unselected particles. */
-extern int
+int
gmx_ana_displ_store_all(gmx_ana_displ_t *d, atom_id id[], rvec x[]);
/** Convenience function for storing a set of positions from \c gmx_ana_pos_t. */
-extern int
+int
gmx_ana_displ_store_pos(gmx_ana_displ_t *d, struct gmx_ana_pos_t *p);
/** Calculates the displacement vector for a particle. */
-extern int
+int
gmx_ana_displ_vector(gmx_ana_displ_t *d, int step, t_pbc *pbc,
atom_id id, rvec x, rvec xout, bool *pout);
/** Calculates the displacement vectors for a list of particles. */
-extern int
+int
gmx_ana_displ_vectors(gmx_ana_displ_t *d, int step, t_pbc *pbc,
int n, atom_id id[], rvec x[],
rvec xout[], bool *pout);
/** Calculates the displacement vectors for all particles, including unselected. */
-extern int
+int
gmx_ana_displ_vectors_all(gmx_ana_displ_t *d, int step, t_pbc *pbc,
rvec x[], rvec xout[], bool *pout);
/** Frees the memory allocated for displacement calculation. */
-extern void
+void
gmx_ana_displ_free(gmx_ana_displ_t *d);
#ifdef __cplusplus
#ifndef _disre_h
#define _disre_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "sysstuff.h"
#include "typedefs.h"
extern "C" {
#endif
-extern void init_disres(FILE *fplog,const gmx_mtop_t *mtop,
+void init_disres(FILE *fplog,const gmx_mtop_t *mtop,
t_inputrec *ir,const t_commrec *cr,bool bPartDecomp,
t_fcdata *fcd,t_state *state);
/* Initiate *fcd data, must be called once, nbonds is the number
* unless it was read before from a checkpoint file.
*/
-extern void calc_disres_R_6(const gmx_multisim_t *ms,
+void calc_disres_R_6(const gmx_multisim_t *ms,
int nfa,const t_iatom *fa,const t_iparams ip[],
const rvec *x,const t_pbc *pbc,
t_fcdata *fcd,history_t *hist);
* and the ensemble averaged r^-6 (inst. and time averaged) for all restraints
*/
-extern t_ifunc ta_disres;
+t_ifunc ta_disres;
/* Calculate the distance restraint forces, return the potential */
-extern void update_disres_history(t_fcdata *fcd,history_t *hist);
+void update_disres_history(t_fcdata *fcd,history_t *hist);
/* Copy the new time averages that have been calculated in calc_disres_R_6 */
#ifdef __cplusplus
#ifndef _do_fit_h
#define _do_fit_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern real calc_similar_ind(bool bRho,int nind,atom_id *index,real mass[],
+real calc_similar_ind(bool bRho,int nind,atom_id *index,real mass[],
rvec x[],rvec xp[]);
/* Returns RMSD or Rho (depending on bRho) over all atoms in index */
-extern real rmsdev_ind(int nind,atom_id index[],real mass[],
+real rmsdev_ind(int nind,atom_id index[],real mass[],
rvec x[],rvec xp[]);
/* Returns the RMS Deviation betweem x and xp over all atoms in index */
-extern real rmsdev(int natoms,real mass[],rvec x[],rvec xp[]);
+real rmsdev(int natoms,real mass[],rvec x[],rvec xp[]);
/* Returns the RMS Deviation betweem x and xp over all atoms */
-extern real rhodev_ind(int nind,atom_id index[],real mass[],rvec x[],rvec xp[]);
+real rhodev_ind(int nind,atom_id index[],real mass[],rvec x[],rvec xp[]);
/* Returns size-independent Rho similarity parameter over all atoms in index
* Maiorov & Crippen, PROTEINS 22, 273 (1995).
*/
-extern real rhodev(int natoms,real mass[],rvec x[],rvec xp[]);
+real rhodev(int natoms,real mass[],rvec x[],rvec xp[]);
/* Returns size-independent Rho similarity parameter over all atoms
* Maiorov & Crippen, PROTEINS 22, 273 (1995).
*/
-extern void calc_fit_R(int ndim,int natoms,real *w_rls,rvec *xp,rvec *x,
+void calc_fit_R(int ndim,int natoms,real *w_rls,rvec *xp,rvec *x,
matrix R);
/* Calculates the rotation matrix R for which
* sum_i w_rls_i (xp_i - R x_i).(xp_i - R x_i)
* x_rotated[i] = sum R[i][j]*x[j]
*/
-extern void do_fit_ndim(int ndim,int natoms,real *w_rls,rvec *xp,rvec *x);
+void do_fit_ndim(int ndim,int natoms,real *w_rls,rvec *xp,rvec *x);
/* Do a least squares fit of x to xp. Atoms which have zero mass
* (w_rls[i]) are not taken into account in fitting.
* This makes is possible to fit eg. on Calpha atoms and orient
* therefore both xp and x should be centered round the origin.
*/
-extern void do_fit(int natoms,real *w_rls,rvec *xp,rvec *x);
+void do_fit(int natoms,real *w_rls,rvec *xp,rvec *x);
/* Calls do_fit with ndim=3, thus fitting in 3D */
-extern void reset_x_ndim(int ndim,int ncm,const atom_id *ind_cm,
+void reset_x_ndim(int ndim,int ncm,const atom_id *ind_cm,
int nreset,const atom_id *ind_reset,
rvec x[],const real mass[]);
/* Put the center of mass of atoms in the origin for dimensions 0 to ndim.
* When ind_reset==NULL the coordinates up to nreset are reset.
*/
-extern void reset_x(int ncm,const atom_id *ind_cm,
+void reset_x(int ncm,const atom_id *ind_cm,
int nreset,const atom_id *ind_reset,
rvec x[],const real mass[]);
/* Calls reset_x with ndim=3, thus resetting all dimesions */
* Gnomes, ROck Monsters And Chili Sauce
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifndef _domdec_h
#define _domdec_h
extern "C" {
#endif
-extern int ddglatnr(gmx_domdec_t *dd,int i);
+int ddglatnr(gmx_domdec_t *dd,int i);
/* Returns the global topology atom number belonging to local atom index i.
* This function is intended for writing ascii output
* and returns atom numbers starting at 1.
* When dd=NULL returns i+1.
*/
-extern t_block *dd_charge_groups_global(gmx_domdec_t *dd);
+t_block *dd_charge_groups_global(gmx_domdec_t *dd);
/* Return a block struct for the charge groups of the whole system */
-extern bool dd_filled_nsgrid_home(gmx_domdec_t *dd);
+bool dd_filled_nsgrid_home(gmx_domdec_t *dd);
/* Is the ns grid already filled with the home particles? */
-extern void dd_store_state(gmx_domdec_t *dd,t_state *state);
+void dd_store_state(gmx_domdec_t *dd,t_state *state);
/* Store the global cg indices of the home cgs in state,
* so it can be reset, even after a new DD partitioning.
*/
-extern gmx_domdec_zones_t *domdec_zones(gmx_domdec_t *dd);
+gmx_domdec_zones_t *domdec_zones(gmx_domdec_t *dd);
-extern void dd_get_ns_ranges(gmx_domdec_t *dd,int icg,
+void dd_get_ns_ranges(gmx_domdec_t *dd,int icg,
int *jcg0,int *jcg1,ivec shift0,ivec shift1);
-extern int dd_natoms_vsite(gmx_domdec_t *dd);
+int dd_natoms_vsite(gmx_domdec_t *dd);
-extern void dd_get_constraint_range(gmx_domdec_t *dd,
+void dd_get_constraint_range(gmx_domdec_t *dd,
int *at_start,int *at_end);
-extern real dd_cutoff_mbody(gmx_domdec_t *dd);
+real dd_cutoff_mbody(gmx_domdec_t *dd);
-extern real dd_cutoff_twobody(gmx_domdec_t *dd);
+real dd_cutoff_twobody(gmx_domdec_t *dd);
-extern bool gmx_pmeonlynode(t_commrec *cr,int nodeid);
+bool gmx_pmeonlynode(t_commrec *cr,int nodeid);
/* Return if nodeid in cr->mpi_comm_mysim is a PME-only node */
-extern void get_pme_ddnodes(t_commrec *cr,int pmenodeid,
+void get_pme_ddnodes(t_commrec *cr,int pmenodeid,
int *nmy_ddnodes,int **my_ddnodes,int *node_peer);
/* Returns the set of DD nodes that communicate with pme node cr->nodeid */
-extern int dd_pme_maxshift_x(gmx_domdec_t *dd);
+int dd_pme_maxshift_x(gmx_domdec_t *dd);
/* Returns the maximum shift for coordinate communication in PME, dim x */
-extern int dd_pme_maxshift_y(gmx_domdec_t *dd);
+int dd_pme_maxshift_y(gmx_domdec_t *dd);
/* Returns the maximum shift for coordinate communication in PME, dim y */
-extern void make_dd_communicators(FILE *fplog,t_commrec *cr,int dd_node_order);
+void make_dd_communicators(FILE *fplog,t_commrec *cr,int dd_node_order);
-extern gmx_domdec_t *
+gmx_domdec_t *
init_domain_decomposition(FILE *fplog,
t_commrec *cr,
unsigned long Flags,
gmx_ddbox_t *ddbox,
int *npme_x, int *npme_y);
-extern void dd_init_bondeds(FILE *fplog,
+void dd_init_bondeds(FILE *fplog,
gmx_domdec_t *dd,gmx_mtop_t *mtop,
gmx_vsite_t *vsite,gmx_constr_t constr,
t_inputrec *ir,bool bBCheck,cginfo_mb_t *cginfo_mb);
/* Initialize data structures for bonded interactions */
-extern void set_dd_parameters(FILE *fplog,gmx_domdec_t *dd,real dlb_scale,
+void set_dd_parameters(FILE *fplog,gmx_domdec_t *dd,real dlb_scale,
t_inputrec *ir,t_forcerec *fr,
gmx_ddbox_t *ddbox);
/* Set DD grid dimensions and limits,
* should be called after calling dd_init_bondeds.
*/
-extern void setup_dd_grid(FILE *fplog,gmx_domdec_t *dd);
+void setup_dd_grid(FILE *fplog,gmx_domdec_t *dd);
-extern void dd_collect_vec(gmx_domdec_t *dd,
+void dd_collect_vec(gmx_domdec_t *dd,
t_state *state_local,rvec *lv,rvec *v);
-extern void dd_collect_state(gmx_domdec_t *dd,
+void dd_collect_state(gmx_domdec_t *dd,
t_state *state_local,t_state *state);
enum { ddCyclStep, ddCyclPPduringPME, ddCyclF, ddCyclPME, ddCyclNr };
-extern void dd_cycles_add(gmx_domdec_t *dd,float cycles,int ddCycl);
+void dd_cycles_add(gmx_domdec_t *dd,float cycles,int ddCycl);
/* Add the wallcycle count to the DD counter */
-extern void dd_force_flop_start(gmx_domdec_t *dd,t_nrnb *nrnb);
+void dd_force_flop_start(gmx_domdec_t *dd,t_nrnb *nrnb);
/* Start the force flop count */
-extern void dd_force_flop_stop(gmx_domdec_t *dd,t_nrnb *nrnb);
+void dd_force_flop_stop(gmx_domdec_t *dd,t_nrnb *nrnb);
/* Stop the force flop count */
-extern void dd_move_x(gmx_domdec_t *dd,matrix box,rvec x[]);
+void dd_move_x(gmx_domdec_t *dd,matrix box,rvec x[]);
/* Communicate the coordinates to the neighboring cells and do pbc. */
-extern void dd_move_f(gmx_domdec_t *dd,rvec f[],rvec *fshift);
+void dd_move_f(gmx_domdec_t *dd,rvec f[],rvec *fshift);
/* Sum the forces over the neighboring cells.
* When fshift!=NULL the shift forces are updated to obtain
* the correct virial from the single sum including f.
*/
-extern void dd_atom_spread_real(gmx_domdec_t *dd,real v[]);
+void dd_atom_spread_real(gmx_domdec_t *dd,real v[]);
/* Communicate a real for each atom to the neighboring cells. */
-extern void dd_atom_sum_real(gmx_domdec_t *dd,real v[]);
+void dd_atom_sum_real(gmx_domdec_t *dd,real v[]);
/* Sum the contributions to a real for each atom over the neighboring cells. */
-extern void dd_partition_system(FILE *fplog,
+void dd_partition_system(FILE *fplog,
gmx_large_int_t step,
t_commrec *cr,
bool bMasterState,
* When f!=NULL, *f will be reallocated to the size of state_local.
*/
-extern void reset_dd_statistics_counters(gmx_domdec_t *dd);
+void reset_dd_statistics_counters(gmx_domdec_t *dd);
/* Reset all the statistics and counters for total run counting */
-extern void print_dd_statistics(t_commrec *cr,t_inputrec *ir,FILE *fplog);
+void print_dd_statistics(t_commrec *cr,t_inputrec *ir,FILE *fplog);
/* In domdec_con.c */
-extern void dd_move_f_vsites(gmx_domdec_t *dd,rvec *f,rvec *fshift);
+void dd_move_f_vsites(gmx_domdec_t *dd,rvec *f,rvec *fshift);
-extern void dd_clear_f_vsites(gmx_domdec_t *dd,rvec *f);
+void dd_clear_f_vsites(gmx_domdec_t *dd,rvec *f);
-extern void dd_move_x_constraints(gmx_domdec_t *dd,matrix box,
+void dd_move_x_constraints(gmx_domdec_t *dd,matrix box,
rvec *x0,rvec *x1);
/* Move x0 and also x1 if x1!=NULL */
-extern void dd_move_x_vsites(gmx_domdec_t *dd,matrix box,rvec *x);
+void dd_move_x_vsites(gmx_domdec_t *dd,matrix box,rvec *x);
-extern int *dd_constraints_nlocalatoms(gmx_domdec_t *dd);
+int *dd_constraints_nlocalatoms(gmx_domdec_t *dd);
-extern void dd_clear_local_constraint_indices(gmx_domdec_t *dd);
+void dd_clear_local_constraint_indices(gmx_domdec_t *dd);
-extern void dd_clear_local_vsite_indices(gmx_domdec_t *dd);
+void dd_clear_local_vsite_indices(gmx_domdec_t *dd);
-extern int dd_make_local_vsites(gmx_domdec_t *dd,int at_start,t_ilist *lil);
+int dd_make_local_vsites(gmx_domdec_t *dd,int at_start,t_ilist *lil);
-extern int dd_make_local_constraints(gmx_domdec_t *dd,int at_start,
+int dd_make_local_constraints(gmx_domdec_t *dd,int at_start,
gmx_mtop_t *mtop,
gmx_constr_t constr,int nrec,
t_ilist *il_local);
-extern void init_domdec_constraints(gmx_domdec_t *dd,
+void init_domdec_constraints(gmx_domdec_t *dd,
int natoms,gmx_mtop_t *mtop,
gmx_constr_t constr);
-extern void init_domdec_vsites(gmx_domdec_t *dd,int natoms);
+void init_domdec_vsites(gmx_domdec_t *dd,int natoms);
/* In domdec_top.c */
-extern void dd_print_missing_interactions(FILE *fplog,t_commrec *cr,
+void dd_print_missing_interactions(FILE *fplog,t_commrec *cr,
int local_count, gmx_mtop_t *top_global, t_state *state_local);
-extern void dd_make_reverse_top(FILE *fplog,
+void dd_make_reverse_top(FILE *fplog,
gmx_domdec_t *dd,gmx_mtop_t *mtop,
gmx_vsite_t *vsite,gmx_constr_t constr,
t_inputrec *ir,bool bBCheck);
-extern void dd_make_local_cgs(gmx_domdec_t *dd,t_block *lcgs);
+void dd_make_local_cgs(gmx_domdec_t *dd,t_block *lcgs);
-extern void dd_make_local_top(FILE *fplog,
+void dd_make_local_top(FILE *fplog,
gmx_domdec_t *dd,gmx_domdec_zones_t *zones,
int npbcdim,matrix box,
rvec cellsize_min,ivec npulse,
t_forcerec *fr,gmx_vsite_t *vsite,
gmx_mtop_t *top,gmx_localtop_t *ltop);
-extern void dd_sort_local_top(gmx_domdec_t *dd,t_mdatoms *mdatoms,
+void dd_sort_local_top(gmx_domdec_t *dd,t_mdatoms *mdatoms,
gmx_localtop_t *ltop);
/* Sort ltop->ilist when we are doing free energy. */
-extern gmx_localtop_t *dd_init_local_top(gmx_mtop_t *top_global);
+gmx_localtop_t *dd_init_local_top(gmx_mtop_t *top_global);
-extern void dd_init_local_state(gmx_domdec_t *dd,
+void dd_init_local_state(gmx_domdec_t *dd,
t_state *state_global,t_state *local_state);
-extern t_blocka *make_charge_group_links(gmx_mtop_t *mtop,gmx_domdec_t *dd,
+t_blocka *make_charge_group_links(gmx_mtop_t *mtop,gmx_domdec_t *dd,
cginfo_mb_t *cginfo_mb);
-extern void dd_bonded_cg_distance(FILE *fplog,
+void dd_bonded_cg_distance(FILE *fplog,
gmx_domdec_t *dd,gmx_mtop_t *mtop,
t_inputrec *ir,rvec *x,matrix box,
bool bBCheck,
real *r_2b,real *r_mb);
-extern void write_dd_pdb(const char *fn,gmx_large_int_t step,const char *title,
+void write_dd_pdb(const char *fn,gmx_large_int_t step,const char *title,
gmx_mtop_t *mtop,
t_commrec *cr,
int natoms,rvec x[],matrix box);
/* In domdec_setup.c */
-extern real comm_box_frac(ivec dd_nc,real cutoff,gmx_ddbox_t *ddbox);
+real comm_box_frac(ivec dd_nc,real cutoff,gmx_ddbox_t *ddbox);
/* Returns the volume fraction of the system that is communicated */
-extern real dd_choose_grid(FILE *fplog,
+real dd_choose_grid(FILE *fplog,
t_commrec *cr,gmx_domdec_t *dd,t_inputrec *ir,
gmx_mtop_t *mtop,matrix box,gmx_ddbox_t *ddbox,
bool bDynLoadBal,real dlb_scale,
/* In domdec_box.c */
-extern void set_ddbox(gmx_domdec_t *dd,bool bMasterState,t_commrec *cr_sum,
+void set_ddbox(gmx_domdec_t *dd,bool bMasterState,t_commrec *cr_sum,
t_inputrec *ir,matrix box,
bool bCalcUnboundedSize,t_block *cgs,rvec *x,
gmx_ddbox_t *ddbox);
-extern void set_ddbox_cr(t_commrec *cr,ivec *dd_nc,
+void set_ddbox_cr(t_commrec *cr,ivec *dd_nc,
t_inputrec *ir,matrix box,t_block *cgs,rvec *x,
gmx_ddbox_t *ddbox);
* Gnomes, ROck Monsters And Chili Sauce
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifndef _domdec_network_h
#define _domdec_network_h
* in the dimension indexed by ddimind
* forward (direction=dddirFoward) or backward (direction=dddirBackward).
*/
-extern void
+void
dd_sendrecv_int(const gmx_domdec_t *dd,
int ddimind,int direction,
int *buf_s,int n_s,
* in the dimension indexed by ddimind
* forward (direction=dddirFoward) or backward (direction=dddirBackward).
*/
-extern void
+void
dd_sendrecv_real(const gmx_domdec_t *dd,
int ddimind,int direction,
real *buf_s,int n_s,
* in dimension indexed by ddimind
* forward (direction=dddirFoward) or backward (direction=dddirBackward).
*/
-extern void
+void
dd_sendrecv_rvec(const gmx_domdec_t *dd,
int ddimind,int direction,
rvec *buf_s,int n_s,
* in dimension indexed by ddimind
* simultaneously in the forward and backward directions.
*/
-extern void
+void
dd_sendrecv2_rvec(const gmx_domdec_t *dd,
int ddimind,
rvec *buf_s_fw,int n_s_fw,
* The DD master node is the master for these operations.
*/
-extern void
+void
dd_bcast(gmx_domdec_t *dd,int nbytes,void *data);
/* Copies src to dest on the master node and then broadcasts */
-extern void
+void
dd_bcastc(gmx_domdec_t *dd,int nbytes,void *src,void *dest);
-extern void
+void
dd_scatter(gmx_domdec_t *dd,int nbytes,void *src,void *dest);
-extern void
+void
dd_gather(gmx_domdec_t *dd,int nbytes,void *src,void *dest);
/* If rcount==0, rbuf is allowed to be NULL */
-extern void
+void
dd_scatterv(gmx_domdec_t *dd,
int *scounts,int *disps,void *sbuf,
int rcount,void *rbuf);
/* If scount==0, sbuf is allowed to be NULL */
-extern void
+void
dd_gatherv(gmx_domdec_t *dd,
int scount,void *sbuf,
int *rcounts,int *disps,void *rbuf);
#ifndef _ebin_h
#define _ebin_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
#include "sysstuff.h"
#include "typedefs.h"
#include "enxio.h"
enum { eprNORMAL, eprAVER, eprRMS, eprNR };
-extern t_ebin *mk_ebin(void);
+t_ebin *mk_ebin(void);
/* Create an energy bin */
-extern int get_ebin_space(t_ebin *eb,int nener,const char *enm[],const char *unit);
+int get_ebin_space(t_ebin *eb,int nener,const char *enm[],const char *unit);
/* Create space in the energy bin and register names.
* The enm array must be static, because the contents are not copied,
* calls to add_ebin.
*/
-extern void add_ebin(t_ebin *eb,int index,int nener,real ener[],bool bSum);
+void add_ebin(t_ebin *eb,int index,int nener,real ener[],bool bSum);
/* Add nener reals (eg. energies, box-lengths, pressures) to the
* energy bin at position index.
* If bSum is TRUE then the reals are also added to the sum
* and sum of squares.
*/
-extern void ebin_increase_count(t_ebin *eb,bool bSum);
+void ebin_increase_count(t_ebin *eb,bool bSum);
/* Increase the counters for the sums.
* This routine should be called AFTER all add_ebin calls for this step.
*/
-extern void reset_ebin_sums(t_ebin *eb);
+void reset_ebin_sums(t_ebin *eb);
/* Reset the average and fluctuation sums */
-extern void pr_ebin(FILE *fp,t_ebin *eb,int index,int nener,int nperline,
+void pr_ebin(FILE *fp,t_ebin *eb,int index,int nener,int nperline,
int prmode,bool bPrHead);
/* Print the contents of the energy bin. If nener = -1 ALL energies from
* index to the end will be printed. We will print nperline entries on a text
#ifndef _edsam_h
#define _edsam_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void do_edsam(t_inputrec *ir,gmx_large_int_t step,t_mdatoms *md,
+void do_edsam(t_inputrec *ir,gmx_large_int_t step,t_mdatoms *md,
t_commrec *cr,rvec xs[],rvec v[],matrix box,gmx_edsam_t ed);
/* Essential dynamics constraints, called from constrain() */
-extern gmx_edsam_t ed_open(int nfile,const t_filenm fnm[],unsigned long Flags,t_commrec *cr);
+gmx_edsam_t ed_open(int nfile,const t_filenm fnm[],unsigned long Flags,t_commrec *cr);
/* Sets the ED input/output filenames, opens output (.edo) file */
-extern void init_edsam(gmx_mtop_t *mtop,t_inputrec *ir,t_commrec *cr,
+void init_edsam(gmx_mtop_t *mtop,t_inputrec *ir,t_commrec *cr,
gmx_edsam_t ed, rvec x[], matrix box);
/* Init routine for ED and flooding. Calls init_edi in a loop for every .edi-cycle
* contained in the input file, creates a NULL terminated list of t_edpar structures */
-extern void dd_make_local_ed_indices(gmx_domdec_t *dd, gmx_edsam_t ed);
+void dd_make_local_ed_indices(gmx_domdec_t *dd, gmx_edsam_t ed);
/* Make a selection of the home atoms for the ED groups.
* Should be called at every domain decomposition. */
-extern void do_flood(FILE *log, t_commrec *cr, rvec x[],rvec force[], gmx_edsam_t ed,
+void do_flood(FILE *log, t_commrec *cr, rvec x[],rvec force[], gmx_edsam_t ed,
matrix box, gmx_large_int_t step);
/* Flooding - called from do_force() */
#ifndef _enxio_h
#define _enxio_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "sysstuff.h"
#include "typedefs.h"
#include "pbc.h"
/* initialize a pre-allocated frame */
- extern void init_enxframe(t_enxframe *ef);
+ void init_enxframe(t_enxframe *ef);
/* delete a frame's memory (except the ef itself) */
- extern void free_enxframe(t_enxframe *ef);
+ void free_enxframe(t_enxframe *ef);
- extern ener_file_t open_enx(const char *fn,const char *mode);
+ ener_file_t open_enx(const char *fn,const char *mode);
- extern t_fileio *enx_file_pointer(const ener_file_t ef);
+ t_fileio *enx_file_pointer(const ener_file_t ef);
- extern void close_enx(ener_file_t ef);
+ void close_enx(ener_file_t ef);
- extern void do_enxnms(ener_file_t ef,int *nre,gmx_enxnm_t **enms);
+ void do_enxnms(ener_file_t ef,int *nre,gmx_enxnm_t **enms);
- extern void free_enxnms(int n,gmx_enxnm_t *nms);
+ void free_enxnms(int n,gmx_enxnm_t *nms);
/* Frees nms and all strings in it */
- extern bool do_enx(ener_file_t ef,t_enxframe *fr);
+ bool do_enx(ener_file_t ef,t_enxframe *fr);
/* Reads enx_frames, memory in fr is (re)allocated if necessary */
- extern void get_enx_state(const char *fn, real t,
+ void get_enx_state(const char *fn, real t,
gmx_groups_t *groups, t_inputrec *ir,
t_state *state);
/*
* And Hey:
* Gromacs Runs On Most of All Computer Systems
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void ffscanf(FILE *in,char *fmt, ...);
+void ffscanf(FILE *in,char *fmt, ...);
#ifdef __cplusplus
}
#ifndef _filenm_h
#define _filenm_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "futil.h"
#ifdef __cplusplus
void set_default_file_name(const char *name);
/* Set the default file name for all file types to name */
-extern const char *ftp2ext(int ftp);
+const char *ftp2ext(int ftp);
/* Return extension for filetype */
-extern const char *ftp2ext_generic(int ftp);
+const char *ftp2ext_generic(int ftp);
/* Return extension for filetype, and a generic name for generic types
(e.g. trx)*/
-extern const char *ftp2desc(int ftp);
+const char *ftp2desc(int ftp);
/* Return description for file type */
-extern const char *ftp2defnm(int ftp);
+const char *ftp2defnm(int ftp);
/* Return default file name for file type */
-extern const char *ftp2ftype(int ftp);
+const char *ftp2ftype(int ftp);
/* Return Binary or ASCII depending on file type */
-extern void pr_def(FILE *fp,int ftp);
+void pr_def(FILE *fp,int ftp);
/* Print definitions for filename ftp */
-extern void pr_defs(FILE *fp);
+void pr_defs(FILE *fp);
/* Print definitions for all filename */
-extern void pr_fns(FILE *fp,int nf,const t_filenm tfn[]);
+void pr_fns(FILE *fp,int nf,const t_filenm tfn[]);
/* Print nf file names and types */
-extern void pr_fopts(FILE *fp,int nf,const t_filenm tfn[], int shell);
+void pr_fopts(FILE *fp,int nf,const t_filenm tfn[], int shell);
/* prints file options in tcsh 'complete' format */
-extern void parse_file_args(int *argc,char *argv[],int nf,t_filenm fnm[],
+void parse_file_args(int *argc,char *argv[],int nf,t_filenm fnm[],
bool bKeep, bool bReadNode);
/* Parse command line for file names. When bKeep is set args are
* not removed from argv. */
-extern const char *opt2fn(const char *opt,int nfile, const t_filenm fnm[]);
+const char *opt2fn(const char *opt,int nfile, const t_filenm fnm[]);
/* Return the filename belonging to cmd-line option opt, or NULL when
* no such option. */
-extern const char *opt2fn_master(const char *opt, int nfile,
+const char *opt2fn_master(const char *opt, int nfile,
const t_filenm fnm[], t_commrec *cr);
/* Return the filename belonging to cmd-line option opt, or NULL when
* no such option or not running on master */
-extern int opt2fns(char **fns[], const char *opt,int nfile,
+int opt2fns(char **fns[], const char *opt,int nfile,
const t_filenm fnm[]);
/* Return the filenames belonging to cmd-line option opt, or NULL when
* no such option. */
#define opt2FILE(opt,nfile,fnm,mode) ffopen(opt2fn(opt,nfile,fnm),mode)
/* Return a file pointer from the filename (see above) */
-extern int fn2ftp(const char *fn);
+int fn2ftp(const char *fn);
/* Return the filetype corrsponding to filename */
-extern const char *ftp2fn(int ftp,int nfile,const t_filenm fnm[]);
+const char *ftp2fn(int ftp,int nfile,const t_filenm fnm[]);
/* Return the first file name with type ftp, or NULL when none found. */
-extern int ftp2fns(char **fns[], int ftp,int nfile,const t_filenm fnm[]);
+int ftp2fns(char **fns[], int ftp,int nfile,const t_filenm fnm[]);
/* Return the number of files for the first option with type ftp
and the files in **fns[] (will be allocated), or NULL when none found. */
#if 0
/* This function is not thread-safe and used nowhere: */
-extern char *ftp2filter(int ftp);
+char *ftp2filter(int ftp);
/* Return a file extension filter for file type */
#endif
#define ftp2FILE(ftp,nfile,fnm,mode) ffopen(ftp2fn(ftp,nfile,fnm),mode)
/* Return a file pointer from the filename (see above) */
-extern bool ftp2bSet(int ftp,int nfile,const t_filenm fnm[]);
+bool ftp2bSet(int ftp,int nfile,const t_filenm fnm[]);
/* Return TRUE when this file type has been found on the cmd-line */
-extern bool opt2bSet(const char *opt,int nfile,const t_filenm fnm[]);
+bool opt2bSet(const char *opt,int nfile,const t_filenm fnm[]);
/* Return TRUE when this option has been found on the cmd-line */
-extern const char *opt2fn_null(const char *opt,int nfile,const t_filenm fnm[]);
+const char *opt2fn_null(const char *opt,int nfile,const t_filenm fnm[]);
/* Return the filenm belonging top cmd-line option opt, or NULL when
* no such option.
* Also return NULL when opt is optional and option is not set.
*/
-extern const char *ftp2fn_null(int ftp,int nfile,const t_filenm fnm[]);
+const char *ftp2fn_null(int ftp,int nfile,const t_filenm fnm[]);
/* Return the first file name with type ftp, or NULL when none found.
* Also return NULL when ftp is optional and option is not set.
*/
-extern bool is_optional(const t_filenm *fnm);
+bool is_optional(const t_filenm *fnm);
/* Return whether or not this filenm is optional */
-extern bool is_output(const t_filenm *fnm);
+bool is_output(const t_filenm *fnm);
/* Return whether or not this filenm is output */
-extern bool is_set(const t_filenm *fnm);
+bool is_set(const t_filenm *fnm);
/* Return whether or not this filenm is set */
/* When we do checkpointing, this routine is called to check for previous
#ifndef _force_h
#define _force_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#include "pbc.h"
static const char *sepdvdlformat=" %-30s V %12.5e dVdl %12.5e\n";
-extern void calc_vir(FILE *fplog,int nxf,rvec x[],rvec f[],tensor vir,
+void calc_vir(FILE *fplog,int nxf,rvec x[],rvec f[],tensor vir,
bool bScrewPBC,matrix box);
/* Calculate virial for nxf atoms, and add it to vir */
-extern void f_calc_vir(FILE *fplog,int i0,int i1,rvec x[],rvec f[],tensor vir,
+void f_calc_vir(FILE *fplog,int i0,int i1,rvec x[],rvec f[],tensor vir,
t_graph *g,rvec shift_vec[]);
/* Calculate virial taking periodicity into account */
-extern real RF_excl_correction(FILE *fplog,
+real RF_excl_correction(FILE *fplog,
const t_forcerec *fr,t_graph *g,
const t_mdatoms *mdatoms,const t_blocka *excl,
rvec x[],rvec f[],rvec *fshift,const t_pbc *pbc,
* and force correction for all excluded pairs, including self pairs.
*/
-extern void calc_rffac(FILE *fplog,int eel,real eps_r,real eps_rf,
+void calc_rffac(FILE *fplog,int eel,real eps_r,real eps_rf,
real Rc,real Temp,
real zsq,matrix box,
real *kappa,real *krf,real *crf);
/* Determine the reaction-field constants */
-extern void init_generalized_rf(FILE *fplog,
+void init_generalized_rf(FILE *fplog,
const gmx_mtop_t *mtop,const t_inputrec *ir,
t_forcerec *fr);
/* Initialize the generalized reaction field parameters */
/* In wall.c */
-extern void make_wall_tables(FILE *fplog,const output_env_t oenv,
+void make_wall_tables(FILE *fplog,const output_env_t oenv,
const t_inputrec *ir,const char *tabfn,
const gmx_groups_t *groups,
t_forcerec *fr);
-extern real do_walls(t_inputrec *ir,t_forcerec *fr,matrix box,t_mdatoms *md,
+real do_walls(t_inputrec *ir,t_forcerec *fr,matrix box,t_mdatoms *md,
rvec x[],rvec f[],real lambda,real Vlj[],t_nrnb *nrnb);
-extern t_forcerec *mk_forcerec(void);
+t_forcerec *mk_forcerec(void);
#define GMX_MAKETABLES_FORCEUSER (1<<0)
#define GMX_MAKETABLES_14ONLY (1<<1)
-extern t_forcetable make_tables(FILE *fp,const output_env_t oenv,
+t_forcetable make_tables(FILE *fp,const output_env_t oenv,
const t_forcerec *fr, bool bVerbose,
const char *fn, real rtab,int flags);
/* Return tables for inner loops. When bVerbose the tables are printed
* to .xvg files
*/
-extern bondedtable_t make_bonded_table(FILE *fplog,char *fn,int angle);
+bondedtable_t make_bonded_table(FILE *fplog,char *fn,int angle);
/* Return a table for bonded interactions,
* angle should be: bonds 0, angles 1, dihedrals 2
*/
/* Return a table for GB calculations */
-extern t_forcetable make_gb_table(FILE *out,const output_env_t oenv,
+t_forcetable make_gb_table(FILE *out,const output_env_t oenv,
const t_forcerec *fr,
const char *fn,
real rtab);
-extern void pr_forcerec(FILE *fplog,t_forcerec *fr,t_commrec *cr);
+void pr_forcerec(FILE *fplog,t_forcerec *fr,t_commrec *cr);
-extern void
+void
forcerec_set_ranges(t_forcerec *fr,
int ncg_home,int ncg_force,
int natoms_force,
int natoms_force_constr,int natoms_f_novirsum);
/* Set the number of cg's and atoms for the force calculation */
-extern bool can_use_allvsall(const t_inputrec *ir, const gmx_mtop_t *mtop,
+bool can_use_allvsall(const t_inputrec *ir, const gmx_mtop_t *mtop,
bool bPrintNote,t_commrec *cr,FILE *fp);
/* Returns if we can use all-vs-all loops.
* If bPrintNote==TRUE, prints a note, if necessary, to stderr
* and fp (if !=NULL) on the master node.
*/
-extern void init_forcerec(FILE *fplog,
+void init_forcerec(FILE *fplog,
const output_env_t oenv,
t_forcerec *fr,
t_fcdata *fcd,
* print_force >= 0: print forces for atoms with force >= print_force
*/
-extern void init_enerdata(int ngener,int n_flambda,gmx_enerdata_t *enerd);
+void init_enerdata(int ngener,int n_flambda,gmx_enerdata_t *enerd);
/* Intializes the energy storage struct */
-extern void destroy_enerdata(gmx_enerdata_t *enerd);
+void destroy_enerdata(gmx_enerdata_t *enerd);
/* Free all memory associated with enerd */
-extern void reset_enerdata(t_grpopts *opts,
+void reset_enerdata(t_grpopts *opts,
t_forcerec *fr,bool bNS,
gmx_enerdata_t *enerd,
bool bMaster);
/* Resets the energy data, if bNS=TRUE also zeros the long-range part */
-extern void sum_epot(t_grpopts *opts,gmx_enerdata_t *enerd);
+void sum_epot(t_grpopts *opts,gmx_enerdata_t *enerd);
/* Locally sum the non-bonded potential energy terms */
-extern void sum_dhdl(gmx_enerdata_t *enerd,double lambda,t_inputrec *ir);
+void sum_dhdl(gmx_enerdata_t *enerd,double lambda,t_inputrec *ir);
/* Sum the free energy contributions */
-extern void update_forcerec(FILE *fplog,t_forcerec *fr,matrix box);
+void update_forcerec(FILE *fplog,t_forcerec *fr,matrix box);
/* Updates parameters in the forcerec that are time dependent */
/* Compute the average C6 and C12 params for LJ corrections */
-extern void set_avcsixtwelve(FILE *fplog,t_forcerec *fr,
+void set_avcsixtwelve(FILE *fplog,t_forcerec *fr,
const gmx_mtop_t *mtop);
/* The state has changed */
/* Normally one want all energy terms and forces */
#define GMX_FORCE_ALLFORCES (GMX_FORCE_BONDED | GMX_FORCE_NONBONDED | GMX_FORCE_FORCES)
-extern void do_force(FILE *log,t_commrec *cr,
+void do_force(FILE *log,t_commrec *cr,
t_inputrec *inputrec,
gmx_large_int_t step,t_nrnb *nrnb,gmx_wallcycle_t wcycle,
gmx_localtop_t *top,
* f is always required.
*/
-extern void ns(FILE *fplog,
+void ns(FILE *fplog,
t_forcerec *fr,
rvec x[],
matrix box,
rvec *f);
/* Call the neighborsearcher */
-extern void do_force_lowlevel(FILE *fplog,
+void do_force_lowlevel(FILE *fplog,
gmx_large_int_t step,
t_forcerec *fr,
t_inputrec *ir,
#ifndef _futil_h
#define _futil_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
+#if 0
+}
+#endif
/* Native windows uses backslash path separators.
* Cygwin and everybody else in the world use slash.
/* Now get the maximum path size. */
#ifdef PATH_MAX
-#define GMX_PATH_MAX PATH_MAX
-#else
-#ifdef MAX_PATH
-#define GMX_PATH_MAX MAX_PATH
+# define GMX_PATH_MAX PATH_MAX
+#elif defined MAX_PATH
+# define GMX_PATH_MAX MAX_PATH
#else
-#define GMX_PATH_MAX 4096
-#endif
+# define GMX_PATH_MAX 4096
#endif
#ifdef HAVE_FSEEKO
-typedef off_t gmx_off_t;
-#define SIZEOF_GMX_OFF_T SIZEOF_OFF_T
+ typedef off_t gmx_off_t;
+# define SIZEOF_GMX_OFF_T SIZEOF_OFF_T
+#elif defined HAVE__FSEEKI64
+ typedef __int64 gmx_off_t;
+# define SIZEOF_GMX_OFF_T 8
#else
-#ifdef HAVE__FSEEKI64
-typedef __int64 gmx_off_t;
-#define SIZEOF_GMX_OFF_T 8
-#else
-typedef long int gmx_off_t;
-#define SIZEOF_GMX_OFF_T SIZEOF_LONG_INT
-#endif
-#endif
+ /* Almost certainly 64 bits, and guaranteed to be available */
+ typedef gmx_large_int_t gmx_off_t
+# define SIZEOF_GMX_OFF_T SIZEOF_GMX_LARGE_INT
+#endif
+
-extern void no_buffers(void);
+void no_buffers(void);
/* Turn off buffering of files (which is default) for debugging purposes */
-extern bool gmx_fexist(const char *fname);
+bool gmx_fexist(const char *fname);
/* Return TRUE when fname exists, FALSE otherwise */
bool gmx_fexist_master(const char *fname, t_commrec *cr);
/* Return TRUE when fname exists, FALSE otherwise, bcast from master to others */
-extern bool gmx_eof(FILE *fp);
+bool gmx_eof(FILE *fp);
/* Return TRUE on end-of-file, FALSE otherwise */
-extern bool is_pipe(FILE *fp);
+bool is_pipe(FILE *fp);
/* Check whether the file (opened by ffopen) is a pipe */
/* Make a backup of file if necessary.
Return false if there was a problem.
*/
-extern bool make_backup(const char * file);
+bool make_backup(const char * file);
-extern FILE *ffopen(const char *file, const char *mode);
+FILE *ffopen(const char *file, const char *mode);
/* Return a valid file pointer when successful, exits otherwise
* If the file is in compressed format, open a pipe which uncompresses
* the file! Therefore, files must be closed with ffclose (see below)
*/
-extern int ffclose(FILE *fp);
+int ffclose(FILE *fp);
/* Close files or pipes */
-extern void frewind(FILE *fp);
+void frewind(FILE *fp);
/* Does not rewind pipes, but does so for normal files */
#define rewind frewind
bool is_pipe(FILE *fp);
-extern char *gmxlibfn(const char *file);
+char *gmxlibfn(const char *file);
/* allocates and returns a string with the full file name for a library file */
-extern FILE *libopen(const char *file);
+FILE *libopen(const char *file);
/* Open a library file for reading. This looks in the current directory
* first, and then in the library directory. If the file is not found,
* it terminates with a fatal_error
-extern bool get_libdir(char *libdir);
+bool get_libdir(char *libdir);
-extern char *low_gmxlibfn(const char *file,bool bFatal);
+char *low_gmxlibfn(const char *file,bool bAddCWD,bool bFatal);
-extern FILE *low_libopen(const char *file,bool bFatal);
+FILE *low_libopen(const char *file,bool bFatal);
/* The same as the above, but does not terminate if (!bFatal) */
/* Create unique name for temp file (wrapper around mkstemp).
* Buf should be at least 7 bytes long
*/
-extern void gmx_tmpnam(char *buf);
+void gmx_tmpnam(char *buf);
/* truncte the file to the specified length */
int gmx_truncatefile(char *path, gmx_off_t length);
* And Hey:
* Gromacs Runs On Most of All Computer Systems
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void rotate_conf(int natom,rvec *x,rvec *v,real alfa, real beta,real gamma);
+void rotate_conf(int natom,rvec *x,rvec *v,real alfa, real beta,real gamma);
/*rotate() rotates a configuration alfa degrees around the x_axis and beta degrees around the y_axis, *v can be NULL */
-extern void orient(int natom,rvec *x,rvec *v, rvec angle,matrix box);
+void orient(int natom,rvec *x,rvec *v, rvec angle,matrix box);
/*orient() rotates a configuration until the largest atom-atom distance is
*placed along the z-axis and the second largest distance is placed along
*the y-axis. Finally the third longest distance is placed along the x-axis
*/
-extern void genconf(t_atoms *atoms,rvec *x,rvec *v,real *r,matrix box,ivec n_box);
+void genconf(t_atoms *atoms,rvec *x,rvec *v,real *r,matrix box,ivec n_box);
/*genconf() generates a new configuration by adding boxes*/
-extern void gen_box(int NTB,int natoms,rvec *x, matrix box,rvec box_space,
+void gen_box(int NTB,int natoms,rvec *x, matrix box,rvec box_space,
bool bCenter);
/* gen_box() generates a box around a configuration, box_space is optional
* extra space around it. If NTB = 1 then a truncated octahedon will be
extern "C" {
#endif
-extern void generate_excls(t_nextnb *nnb, int nrexcl, t_excls excls[]);
-extern void clean_excls(t_nextnb *nnb, int nrexcl, t_excls excls[]);
+void generate_excls(t_nextnb *nnb, int nrexcl, t_excls excls[]);
+void clean_excls(t_nextnb *nnb, int nrexcl, t_excls excls[]);
-extern void gen_pad(t_nextnb *nnb, t_atoms *atoms, int nrexcl, bool bH14,
+void gen_pad(t_nextnb *nnb, t_atoms *atoms, int nrexcl, bool bH14,
t_params plist[], t_excls excls[], t_hackblock hb[],
bool bAlldih, bool bRemoveDih, bool bAllowMissing);
#include "typedefs.h"
#include "grompp.h"
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
#define _GMX_ARPACK_H
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _GMX_BLAS_H_
#define _GMX_BLAS_H_
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
#include "types/simple.h"
#ifndef _fatal_h
#define _fatal_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include <stdarg.h>
#include <errno.h>
* gmx_fatal(FARGS,fmt,...)
*/
-extern void
+void
gmx_fatal_collective(int f_errno,const char *file,int line,
t_commrec *cr,gmx_domdec_t *dd,
const char *fmt,...);
#define invalid_case() _invalid_case(__FILE__,__LINE__)
/* Issue a warning stating 'Invalid case in switch' */
-extern void _unexpected_eof(const char *fn,int line,const char *srcfn,int srcline);
+void _unexpected_eof(const char *fn,int line,const char *srcfn,int srcline);
#define unexpected_eof(fn,line) _unexpected_eof(fn,line,__FILE__,__LINE__)
/*
void init_debug (const int dbglevel,const char *dbgfile);
-extern bool bDebugMode(void);
+bool bDebugMode(void);
/* Return TRUE when the program was started in debug mode */
#if (defined __sgi && defined USE_SGI_FPE)
-extern void doexceptions(void);
+void doexceptions(void);
/* Set exception handlers for debugging */
#endif
/* warn_str is allowed to be NULL.
*/
- extern void _range_check(int n,int n_min,int n_max,const char *warn_str,
+ void _range_check(int n,int n_min,int n_max,const char *warn_str,
const char *var,
const char *file,int line);
* That is n_min is inclusive but not n_max.
*/
- extern char *gmx_strerror(const char *key);
+ char *gmx_strerror(const char *key);
/* Return error message corresponding to the key.
* Maybe a multi-line message.
* The messages are stored in src/gmxlib/fatal.c
*/
- extern void _gmx_error(const char *key,const char *msg,const char *file,int line);
+ void _gmx_error(const char *key,const char *msg,const char *file,int line);
#define gmx_error(key,msg) _gmx_error(key,msg,__FILE__,__LINE__)
/* Error msg of type key is generated and the program is
* terminated unless and error handle is set (see below)
* The string may be a multi-line string.
*/
-extern void gmx_warning(const char *fmt,...);
+void gmx_warning(const char *fmt,...);
/* Print a warning message to stderr.
* The format of fmt is that like printf etc, only %d, %x, %c, %f, %g and %s
* are allowed as format specifiers.
#ifndef _gmx_ga2la_h
#define _gmx_ga2la_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#include "smalloc.h"
#define _GMX_LAPACK_H_
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
/** @file
*
* @brief Header definitions for the standard LAPACK library.
}
#endif
+#include "types/simple.h"
+
+
#ifndef F77_FUNC
#define F77_FUNC(name,NAME) name ## _
#endif
-#include "types/simple.h"
/* Double precision */
#include <stdio.h>
-extern double **alloc_matrix(int n,int m);
+double **alloc_matrix(int n,int m);
-extern void free_matrix(double **a,int n);
+void free_matrix(double **a,int n);
-extern void matrix_multiply(FILE *fp,int n,int m,double **x,double **y,double **z);
+void matrix_multiply(FILE *fp,int n,int m,double **x,double **y,double **z);
/* Return 0 if OK or row number where inversion failed otherwise. */
-extern int matrix_invert(FILE *fp,int n,double **a);
+int matrix_invert(FILE *fp,int n,double **a);
-extern double multi_regression(FILE *fp,int ny,double *y,
+double multi_regression(FILE *fp,int ny,double *y,
int nx,double **xx,double *a0);
/* Perform a regression analysis to fit
* y' = a0[0] xx[0] + a0[1] xx[1] ... + a0[nx-1] xx[nx-1]
#ifndef _gmx_parallel_3dfft_h_
#define _gmx_parallel_3dfft_h_
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "types/simple.h"
#include "types/commrec.h"
#ifndef _GMX_RANDOM_H_
#define _GMX_RANDOM_H_
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
#include <stdio.h>
#include "types/simple.h"
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
/* We require SSE2 now! */
#include <math.h>
#include <stdio.h>
+
+#include "types/simple.h"
/***************************************************
* *
tabidx = _mm_or_si128( _mm_and_si128(imask,corridx), _mm_andnot_si128(imask,tabidx) );
/* tabidx is now in range [0..16] */
- sswapsign = _mm_shuffle_epi32(sswapsign,_MM_SHUFFLE(2,2,0,0));
- cswapsign = _mm_shuffle_epi32(cswapsign,_MM_SHUFFLE(2,2,0,0));
+ sswapsign = _mm_shuffle_epi32(sswapsign,_MM_SHUFFLE(1,1,0,0));
+ cswapsign = _mm_shuffle_epi32(cswapsign,_MM_SHUFFLE(1,1,0,0));
minusone = _mm_sub_pd(_mm_setzero_pd(),one);
ssign = _mm_or_pd(_mm_and_pd( _mm_castsi128_pd(sswapsign),minusone ),
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifndef _gmx_sse2_single_h_
#define _gmx_sse2_single_h_
#include <stdio.h>
+#include "types/simple.h"
+
+
/***************************************************
* *
* COMPILER RANT WARNING: *
enum { ehistoX, ehistoY, ehistoNR };
-extern gmx_stats_t gmx_stats_init();
+gmx_stats_t gmx_stats_init();
-extern int gmx_stats_done(gmx_stats_t stats);
+int gmx_stats_done(gmx_stats_t stats);
/* Remove outliers from a straight line, where level in units of
sigma. Level needs to be larger than one obviously. */
-extern int gmx_stats_remove_outliers(gmx_stats_t stats,double level);
+int gmx_stats_remove_outliers(gmx_stats_t stats,double level);
-extern int gmx_stats_add_point(gmx_stats_t stats,double x,double y,
+int gmx_stats_add_point(gmx_stats_t stats,double x,double y,
double dx,double dy);
/* The arrays dx and dy may be NULL if no uncertainties are available,
in that case zero uncertainties will be assumed. */
-extern int gmx_stats_add_points(gmx_stats_t stats,int n,real *x,real *y,
+int gmx_stats_add_points(gmx_stats_t stats,int n,real *x,real *y,
real *dx,real *dy);
/* Return the data points one by one. Return estatsOK while there are
been returned. Should be used in a while loop. Variables for either
pointer may be NULL, in which case the routine can be used as an
expensive point counter. */
-extern int gmx_stats_get_point(gmx_stats_t stats,real *x,real *y,
+int gmx_stats_get_point(gmx_stats_t stats,real *x,real *y,
real *dx,real *dy);
/* Fit the data to y = ax + b, possibly weighted, if uncertainties
sigmas in *da and *db respectively. Returns normalized *quality of
fit in *chi2 and correlation of fit with data in Rfit. chi2, Rfit,
da and db may be NULL. */
-extern int gmx_stats_get_ab(gmx_stats_t stats,int weight,
+int gmx_stats_get_ab(gmx_stats_t stats,int weight,
real *a,real *b,
real *da,real *db,real *chi2,real *Rfit);
been input. Returns slope in *a, sigma in a in *da, and normalized
quality of fit in *chi2 and correlation of fit with data in
Rfit. chi2, Rfit and da may be NULL. */
-extern int gmx_stats_get_a(gmx_stats_t stats,int weight,
+int gmx_stats_get_a(gmx_stats_t stats,int weight,
real *a,real *da,real *chi2,real *Rfit);
/* Return the correlation coefficient between the data (x and y) as
input to the structure. */
-extern int gmx_stats_get_corr_coeff(gmx_stats_t stats,real *R);
+int gmx_stats_get_corr_coeff(gmx_stats_t stats,real *R);
/* Returns the root mean square deviation between x and y values. */
-extern int gmx_stats_get_rmsd(gmx_stats_t gstats,real *rmsd);
+int gmx_stats_get_rmsd(gmx_stats_t gstats,real *rmsd);
-extern int gmx_stats_get_npoints(gmx_stats_t stats,int *N);
+int gmx_stats_get_npoints(gmx_stats_t stats,int *N);
-extern int gmx_stats_get_average(gmx_stats_t stats,real *aver);
+int gmx_stats_get_average(gmx_stats_t stats,real *aver);
-extern int gmx_stats_get_sigma(gmx_stats_t stats,real *sigma);
+int gmx_stats_get_sigma(gmx_stats_t stats,real *sigma);
-extern int gmx_stats_get_error(gmx_stats_t stats,real *error);
+int gmx_stats_get_error(gmx_stats_t stats,real *error);
/* Get all three of the above. Pointers may be null, in which case no
assignment will be done. */
-extern int gmx_stats_get_ase(gmx_stats_t gstats,real *aver,real *sigma,real *error);
+int gmx_stats_get_ase(gmx_stats_t gstats,real *aver,real *sigma,real *error);
/* Dump the x, y, dx, dy data to a text file */
-extern int gmx_stats_dump_xy(gmx_stats_t gstats,FILE *fp);
+int gmx_stats_dump_xy(gmx_stats_t gstats,FILE *fp);
/* Make a histogram of the data present. Uses either bindwith to
determine the number of bins, or nbins to determine the binwidth,
normalized to one. The output is in two arrays, *x and *y, to which
you should pass a pointer. Memory for the arrays will be allocated
as needed. Function returns one of the estats codes. */
-extern int gmx_stats_make_histogram(gmx_stats_t gstats,real binwidth,int *nbins,
+int gmx_stats_make_histogram(gmx_stats_t gstats,real binwidth,int *nbins,
int ehisto,
int normalized,real **x,real **y);
/* Return message belonging to error code */
-extern const char *gmx_stats_message(int estats);
+const char *gmx_stats_message(int estats);
/****************************************************
* Some statistics utilities for convenience: useful when a complete data
* set is available already from another source, e.g. an xvg file.
****************************************************/
-extern int lsq_y_ax(int n, real x[], real y[], real *a);
+int lsq_y_ax(int n, real x[], real y[], real *a);
/* Fit a straight line y=ax thru the n data points x, y, return the
slope in *a. Return value can be estatsOK, or something else. */
-extern int lsq_y_ax_b(int n, real x[], real y[], real *a, real *b,real *r,
+int lsq_y_ax_b(int n, real x[], real y[], real *a, real *b,real *r,
real *chi2);
/* Fit a straight line y=ax+b thru the n data points x,y.
* Returns the "fit quality" sigma = sqrt(chi^2/(n-2)).
* The correlation coefficient is returned in r.
*/
-extern int lsq_y_ax_b_xdouble(int n, double x[], real y[],
+int lsq_y_ax_b_xdouble(int n, double x[], real y[],
real *a, real *b,real *r,real *chi2);
/* As lsq_y_ax_b, but with x in double precision.
*/
-extern int lsq_y_ax_b_error(int n, real x[], real y[], real dy[],
+int lsq_y_ax_b_error(int n, real x[], real y[], real dy[],
real *a, real *b, real *da, real *db,
real *r,real *chi2);
/* Fit a straight line y=ax+b thru the n data points x,y, with sigma dy
} while (0)
-extern bool_t xdr_int (XDR *__xdrs, int *__ip);
-extern bool_t xdr_u_int (XDR *__xdrs, unsigned int *__ip);
-extern bool_t xdr_short (XDR *__xdrs, short *__ip);
-extern bool_t xdr_u_short (XDR *__xdrs, unsigned short *__ip);
-extern bool_t xdr_bool (XDR *__xdrs, int *__bp);
-extern bool_t xdr_opaque (XDR *__xdrs, char *__cp, unsigned int __cnt);
-extern bool_t xdr_string (XDR *__xdrs, char **__cpp, unsigned int __maxsize);
-extern bool_t xdr_char (XDR *__xdrs, char *__cp);
-extern bool_t xdr_u_char (XDR *__xdrs, unsigned char *__cp);
-extern bool_t xdr_vector (XDR *__xdrs, char *__basep, unsigned int __nelem,
+bool_t xdr_int (XDR *__xdrs, int *__ip);
+bool_t xdr_u_int (XDR *__xdrs, unsigned int *__ip);
+bool_t xdr_short (XDR *__xdrs, short *__ip);
+bool_t xdr_u_short (XDR *__xdrs, unsigned short *__ip);
+bool_t xdr_bool (XDR *__xdrs, int *__bp);
+bool_t xdr_opaque (XDR *__xdrs, char *__cp, unsigned int __cnt);
+bool_t xdr_string (XDR *__xdrs, char **__cpp, unsigned int __maxsize);
+bool_t xdr_char (XDR *__xdrs, char *__cp);
+bool_t xdr_u_char (XDR *__xdrs, unsigned char *__cp);
+bool_t xdr_vector (XDR *__xdrs, char *__basep, unsigned int __nelem,
unsigned int __elemsize, xdrproc_t __xdr_elem);
-extern bool_t xdr_float (XDR *__xdrs, float *__fp);
-extern bool_t xdr_double (XDR *__xdrs, double *__dp);
-extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop);
+bool_t xdr_float (XDR *__xdrs, float *__fp);
+bool_t xdr_double (XDR *__xdrs, double *__dp);
+void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop);
/* free memory buffers for xdr */
-extern void xdr_free (xdrproc_t __proc, char *__objp);
+void xdr_free (xdrproc_t __proc, char *__objp);
#ifdef __cplusplus
}
enum { ewcRUN, ewcSTEP, ewcPPDURINGPME, ewcDOMDEC, ewcDDCOMMLOAD, ewcDDCOMMBOUND, ewcVSITECONSTR, ewcPP_PMESENDX, ewcMOVEX, ewcNS, ewcGB, ewcFORCE, ewcMOVEF, ewcPMEMESH, ewcPME_REDISTXF, ewcPME_SPREADGATHER, ewcPME_FFT, ewcPME_SOLVE, ewcPMEWAITCOMM, ewcPP_PMEWAITRECVF, ewcVSITESPREAD, ewcTRAJ, ewcUPDATE, ewcCONSTR, ewcMoveE, ewcTEST, ewcNR };
-extern bool wallcycle_have_counter(void);
+bool wallcycle_have_counter(void);
/* Returns if cycle counting is supported */
-extern gmx_wallcycle_t wallcycle_init(FILE *fplog,int resetstep,t_commrec *cr);
+gmx_wallcycle_t wallcycle_init(FILE *fplog,int resetstep,t_commrec *cr);
/* Returns the wall cycle structure.
* Returns NULL when cycle counting is not supported.
*/
-extern void wallcycle_start(gmx_wallcycle_t wc, int ewc);
+void wallcycle_start(gmx_wallcycle_t wc, int ewc);
/* Set the start cycle count for ewc */
-extern double wallcycle_stop(gmx_wallcycle_t wc, int ewc);
+double wallcycle_stop(gmx_wallcycle_t wc, int ewc);
/* Stop the cycle count for ewc, returns the last cycle count */
-extern void wallcycle_reset_all(gmx_wallcycle_t wc);
+void wallcycle_reset_all(gmx_wallcycle_t wc);
/* Resets all cycle counters to zero */
-extern void wallcycle_sum(t_commrec *cr, gmx_wallcycle_t wc,double cycles[]);
+void wallcycle_sum(t_commrec *cr, gmx_wallcycle_t wc,double cycles[]);
/* Sum the cycles over the nodes in cr->mpi_comm_mysim */
-extern void wallcycle_print(FILE *fplog, int nnodes, int npme, double realtime,
+void wallcycle_print(FILE *fplog, int nnodes, int npme, double realtime,
gmx_wallcycle_t wc, double cycles[]);
/* Print the cycle and time accounting */
-extern gmx_large_int_t wcycle_get_reset_counters(gmx_wallcycle_t wc);
+gmx_large_int_t wcycle_get_reset_counters(gmx_wallcycle_t wc);
/* Return reset_counters from wc struct */
-extern void wcycle_set_reset_counters(gmx_wallcycle_t wc, gmx_large_int_t reset_counters);
+void wcycle_set_reset_counters(gmx_wallcycle_t wc, gmx_large_int_t reset_counters);
/* Set reset_counters */
#ifdef __cplusplus
#ifndef _complex_h
#define _complex_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <math.h>
#include "typedefs.h"
NOT THREAD SAFE
*/
-extern int cpp_open_file(const char *filenm,gmx_cpp_t *handlep, char **cppopts);
+int cpp_open_file(const char *filenm,gmx_cpp_t *handlep, char **cppopts);
/* Return one whole line from the file into buf which holds at most n
characters, for subsequent processing. Returns integer status.
NOT THREAD SAFE
*/
-extern int cpp_read_line(gmx_cpp_t *handlep,int n,char buf[]);
+int cpp_read_line(gmx_cpp_t *handlep,int n,char buf[]);
/* Return the file currently being read.
NOT THREAD SAFE
*/
-extern char *cpp_cur_file(const gmx_cpp_t *handlep);
+char *cpp_cur_file(const gmx_cpp_t *handlep);
/* Return the current line number.
NOT THREAD SAFE
*/
-extern int cpp_cur_linenr(const gmx_cpp_t *handlep);
+int cpp_cur_linenr(const gmx_cpp_t *handlep);
/* Close the file! Return integer status.
NOT THREAD SAFE
*/
-extern int cpp_close_file(gmx_cpp_t *handlep);
+int cpp_close_file(gmx_cpp_t *handlep);
/* Return a string containing the error message coresponding to status
variable.
NOT THREAD SAFE
*/
-extern char *cpp_error(gmx_cpp_t *handlep,int status);
+char *cpp_error(gmx_cpp_t *handlep,int status);
#ifndef _gmxfio_h
#define _gmxfio_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "sysstuff.h"
#include "typedefs.h"
* Change properties of the open file
********************************************************/
-extern void gmx_fio_setprecision(t_fileio *fio,bool bDouble);
+void gmx_fio_setprecision(t_fileio *fio,bool bDouble);
/* Select the floating point precision for reading and writing files */
-extern char *gmx_fio_getname(t_fileio *fio);
+char *gmx_fio_getname(t_fileio *fio);
/* Return the filename corresponding to the fio index */
-extern int gmx_fio_getftp(t_fileio *fio);
+int gmx_fio_getftp(t_fileio *fio);
/* Return the filetype corresponding to the fio index.
There is as of now no corresponding setftp function because the file
was opened as a specific file type and changing that midway is most
likely an evil hack. */
-extern void gmx_fio_setdebug(t_fileio *fio,bool bDebug);
+void gmx_fio_setdebug(t_fileio *fio,bool bDebug);
/* Set the debug mode */
-extern bool gmx_fio_getdebug(t_fileio *fio);
+bool gmx_fio_getdebug(t_fileio *fio);
/* Return whether debug mode is on in fio */
-extern bool gmx_fio_getread(t_fileio *fio);
+bool gmx_fio_getread(t_fileio *fio);
/* Return whether read mode is on in fio */
-extern void gmx_fio_checktype(t_fileio *fio);
+void gmx_fio_checktype(t_fileio *fio);
/* Check whether the fio is of a sane type */
/***************************************************
* FILE Operations
***************************************************/
-extern void gmx_fio_rewind(t_fileio *fio);
+void gmx_fio_rewind(t_fileio *fio);
/* Rewind the tpa file in fio */
int gmx_fio_flush(t_fileio *fio);
can cause dramatically slowed down IO performance. Some OSes (Linux,
for example), may implement fsync as a full sync() point. */
-extern gmx_off_t gmx_fio_ftell(t_fileio *fio);
+gmx_off_t gmx_fio_ftell(t_fileio *fio);
/* Return file position if possible */
-extern int gmx_fio_seek(t_fileio *fio,gmx_off_t fpos);
+int gmx_fio_seek(t_fileio *fio,gmx_off_t fpos);
/* Set file position if possible, quit otherwise */
-extern FILE *gmx_fio_getfp(t_fileio *fio);
+FILE *gmx_fio_getfp(t_fileio *fio);
/* Return the file pointer itself */
-extern XDR *gmx_fio_getxdr(t_fileio *fio);
+XDR *gmx_fio_getxdr(t_fileio *fio);
/* Return the file pointer itself */
unsigned char digest[]);
-extern int xtc_seek_frame(t_fileio *fio, int frame, int natoms);
+int xtc_seek_frame(t_fileio *fio, int frame, int natoms);
-extern int xtc_seek_time(t_fileio *fio, real time, int natoms);
+int xtc_seek_time(t_fileio *fio, real time, int natoms);
/* Add this to the comment string for debugging */
-extern void gmx_fio_set_comment(t_fileio *fio, const char *comment);
+void gmx_fio_set_comment(t_fileio *fio, const char *comment);
/* Remove previously set comment */
-extern void gmx_fio_unset_comment(t_fileio *fio);
+void gmx_fio_unset_comment(t_fileio *fio);
#ifndef _gpp_atomtype_h
#define _gpp_atomtype_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "typedefs.h"
#include "macros.h"
typedef struct gpp_atomtype *gpp_atomtype_t;
-extern int get_atomtype_type(const char *str,gpp_atomtype_t at);
+int get_atomtype_type(const char *str,gpp_atomtype_t at);
/* Return atomtype corresponding to case-insensitive str
or NOTSET if not found */
-extern int get_atomtype_ntypes(gpp_atomtype_t at);
+int get_atomtype_ntypes(gpp_atomtype_t at);
/* Return number of atomtypes */
-extern char *get_atomtype_name(int nt,gpp_atomtype_t at);
+char *get_atomtype_name(int nt,gpp_atomtype_t at);
/* Return name corresponding to atomtype nt, or NULL if not found */
-extern real get_atomtype_massA(int nt,gpp_atomtype_t at);
-extern real get_atomtype_massB(int nt,gpp_atomtype_t at);
-extern real get_atomtype_qA(int nt,gpp_atomtype_t at);
-extern real get_atomtype_qB(int nt,gpp_atomtype_t at);
-extern real get_atomtype_radius(int nt,gpp_atomtype_t at);
-extern real get_atomtype_vol(int nt,gpp_atomtype_t at);
-extern real get_atomtype_surftens(int nt,gpp_atomtype_t at);
-extern real get_atomtype_gb_radius(int nt,gpp_atomtype_t at);
-extern real get_atomtype_S_hct(int nt,gpp_atomtype_t at);
-extern int get_atomtype_ptype(int nt,gpp_atomtype_t at);
-extern int get_atomtype_batype(int nt,gpp_atomtype_t at);
-extern int get_atomtype_atomnumber(int nt,gpp_atomtype_t at);
+real get_atomtype_massA(int nt,gpp_atomtype_t at);
+real get_atomtype_massB(int nt,gpp_atomtype_t at);
+real get_atomtype_qA(int nt,gpp_atomtype_t at);
+real get_atomtype_qB(int nt,gpp_atomtype_t at);
+real get_atomtype_radius(int nt,gpp_atomtype_t at);
+real get_atomtype_vol(int nt,gpp_atomtype_t at);
+real get_atomtype_surftens(int nt,gpp_atomtype_t at);
+real get_atomtype_gb_radius(int nt,gpp_atomtype_t at);
+real get_atomtype_S_hct(int nt,gpp_atomtype_t at);
+int get_atomtype_ptype(int nt,gpp_atomtype_t at);
+int get_atomtype_batype(int nt,gpp_atomtype_t at);
+int get_atomtype_atomnumber(int nt,gpp_atomtype_t at);
/* Return the above variable for atomtype nt, or NOTSET if not found */
-extern real get_atomtype_nbparam(int nt,int param,gpp_atomtype_t at);
+real get_atomtype_nbparam(int nt,int param,gpp_atomtype_t at);
/* Similar to the previous but returns the paramth parameter or NOTSET */
-extern gpp_atomtype_t init_atomtype(void);
+gpp_atomtype_t init_atomtype(void);
/* Return a new atomtype structure */
-extern void done_atomtype(gpp_atomtype_t at);
+void done_atomtype(gpp_atomtype_t at);
/* Free the memory in the structure */
-extern int set_atomtype(int nt,gpp_atomtype_t at,t_symtab *tab,
+int set_atomtype(int nt,gpp_atomtype_t at,t_symtab *tab,
t_atom *a,const char *name,t_param *nb,
int bondatomtype,
real radius,real vol,real surftens,int atomnumber,
real radius,real vol,real surftens,
real gb_radius, real S_hct);
-extern int add_atomtype(gpp_atomtype_t at,t_symtab *tab,
+int add_atomtype(gpp_atomtype_t at,t_symtab *tab,
t_atom *a,const char *name,t_param *nb,
int bondatomtype,
real radius,real vol,real surftens,real atomnumber,
/* Add a complete new atom type to an existing atomtype structure. Returns
the number of the atom type. */
-extern void print_at (FILE * out, gpp_atomtype_t at);
+void print_at (FILE * out, gpp_atomtype_t at);
/* Print an atomtype record to a text file */
-extern void renum_atype(t_params plist[],gmx_mtop_t *mtop,
+void renum_atype(t_params plist[],gmx_mtop_t *mtop,
int *wall_atomtype,
gpp_atomtype_t at,bool bVerbose);
-extern void copy_atomtype_atomtypes(gpp_atomtype_t atype,t_atomtypes *atypes);
+void copy_atomtype_atomtypes(gpp_atomtype_t atype,t_atomtypes *atypes);
/* Copy from one structure to another */
#ifdef __cplusplus
int ***a; /* like this: a[i][nre][nrx] */
} t_nextnb;
-extern void init_nnb(t_nextnb *nnb, int nr, int nrex);
+void init_nnb(t_nextnb *nnb, int nr, int nrex);
/* Initiate the arrays for nnb (see above) */
-extern void done_nnb(t_nextnb *nnb);
+void done_nnb(t_nextnb *nnb);
/* Cleanup the nnb struct */
#ifdef DEBUG_NNB
#define print_nnb(nnb, s) __print_nnb(nnb, s)
-extern void print_nnb(t_nextnb *nnb, char *s);
+void print_nnb(t_nextnb *nnb, char *s);
/* Print the nnb struct */
#else
#define print_nnb(nnb, s)
#endif
-extern void gen_nnb(t_nextnb *nnb,t_params plist[]);
+void gen_nnb(t_nextnb *nnb,t_params plist[]);
/* Generate a t_nextnb structure from bond information.
* With the structure you can either generate exclusions
* or generate angles and dihedrals. The structure must be
* initiated using init_nnb.
*/
-extern void nnb2excl (t_nextnb *nnb, t_blocka *excl);
+void nnb2excl (t_nextnb *nnb, t_blocka *excl);
/* generate exclusions from nnb */
-extern void generate_excl (int nrexcl, int nratoms,
+void generate_excl (int nrexcl, int nratoms,
t_params plist[],t_nextnb *nnb,t_blocka *excl);
/* Generate an exclusion block from bonds and constraints in
* plist.
#ifndef _grompp_h
#define _grompp_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "typedefs.h"
#include "macros.h"
int nr;
} t_mols;
-extern bool is_int(double x);
+bool is_int(double x);
/* Returns TRUE when x is integer */
typedef enum {
#ifndef _gstat_h
#define _gstat_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#include "statutil.h"
#include "mshift.h"
*
***********************************************/
-extern real LegendreP(real x,unsigned long m);
+real LegendreP(real x,unsigned long m);
#define eacNormal (1<<0)
#define eacCos (1<<1)
int sffn2effn(const char **sffn);
/* Returns the ffn enum corresponding to the selected enum option in sffn */
-extern t_pargs *add_acf_pargs(int *npargs,t_pargs *pa);
+t_pargs *add_acf_pargs(int *npargs,t_pargs *pa);
/* Add options for autocorr to the current set of options.
* *npargs must be initialised to the number of elements in pa,
* it will be incremented appropriately.
*/
-extern void cross_corr(int n,real f[],real g[],real corr[]);
+void cross_corr(int n,real f[],real g[],real corr[]);
/* Simple minded cross correlation algorithm */
-extern real fit_acf(int ncorr,int fitfn,const output_env_t oenv,bool bVerbose,
+real fit_acf(int ncorr,int fitfn,const output_env_t oenv,bool bVerbose,
real tbeginfit,real tendfit,real dt,real c1[],real *fit);
/* Fit an ACF to a given function */
-extern void do_autocorr(const char *fn,const output_env_t oenv,
+void do_autocorr(const char *fn,const output_env_t oenv,
const char *title,
int nframes,int nitem,real **c1,
real dt,unsigned long mode,bool bAver);
/* Calls low_do_autocorr (see below). After calling add_acf_pargs */
-extern void low_do_autocorr(const char *fn,const output_env_t oenv,
+void low_do_autocorr(const char *fn,const output_env_t oenv,
const char *title, int nframes,int nitem,
int nout,real **c1, real dt,unsigned long mode,
int nrestart, bool bAver,bool bNormalize,
real Jcsig; /* Standard deviation in Jc */
} t_karplus;
-extern void calc_distribution_props(int nh,int histo[],
+void calc_distribution_props(int nh,int histo[],
real start,int nkkk, t_karplus kkk[],
real *S2);
/* This routine takes a dihedral distribution and calculates
* F I T R O U T I N E S
*
***********************************************/
-extern void do_expfit(int ndata,real c1[],real dt,
+void do_expfit(int ndata,real c1[],real dt,
real begintimefit,real endtimefit);
-extern void expfit(int n, real x[], real y[], real Dy[],
+void expfit(int n, real x[], real y[], real Dy[],
real *a, real *sa,
real *b, real *sb);
/* This procedure fits y=exp(a+bx) for n (x,y) pairs to determine a and b.
* Routine from Computers in physics, 7(3) (1993), p. 280-285.
*/
-extern void ana_dih_trans(const char *fn_trans,const char *fn_histo,
+void ana_dih_trans(const char *fn_trans,const char *fn_histo,
real **dih,int nframes,int nangles,
const char *grpname,real t0,real dt,bool bRb,
const output_env_t oenv);
* (trans = 0)
*/
-extern void low_ana_dih_trans(bool bTrans, const char *fn_trans,
+void low_ana_dih_trans(bool bTrans, const char *fn_trans,
bool bHisto, const char *fn_histo, int maxchi,
real **dih, int nlist, t_dlist dlist[],
int nframes, int nangles, const char *grpname,
-extern void read_ang_dih(const char *trj_fn,
+void read_ang_dih(const char *trj_fn,
bool bAngles,bool bSaveAll,bool bRb,bool bPBC,
int maxangstat,int angstat[],
int *nframes,real **time,
* dih all angles at each time frame
*/
-extern void make_histo(FILE *log,
+void make_histo(FILE *log,
int ndata,real data[],int npoints,int histo[],
real minx,real maxx);
/*
* if both are 0, these values are computed by the routine itself
*/
-extern void normalize_histo(int npoints,int histo[],real dx,real normhisto[]);
+void normalize_histo(int npoints,int histo[],real dx,real normhisto[]);
/*
* Normalize a histogram so that the integral over the histo is 1
*
* normhisto normalized output histogram
*/
-extern real fit_function(int eFitFn,real *parm,real x);
+real fit_function(int eFitFn,real *parm,real x);
/* Returns the value of fit function eFitFn at x */
/* Use Levenberg-Marquardt method to fit to a nfitparm parameter exponential */
/* or to a transverse current autocorrelation function */
/* Or: "There is no KILL like OVERKILL", Dr. Ir. D. van der Spoel */
-extern real do_lmfit(int ndata,real c1[],real sig[],real dt,real *x,
+real do_lmfit(int ndata,real c1[],real sig[],real dt,real *x,
real begintimefit,real endtimefit,const output_env_t oenv,
bool bVerbose, int eFitFn,real fitparms[],int fix);
/* Returns integral.
* of fix is set.
*/
-extern real evaluate_integral(int n,real x[],real y[],real dy[],
+real evaluate_integral(int n,real x[],real y[],real dy[],
real aver_start,real *stddev);
/* Integrate data in y, and, if given, use dy as weighting
* aver_start should be set to a value where the function has
* converged to 0.
*/
-extern real print_and_integrate(FILE *fp,int n,real dt,
+real print_and_integrate(FILE *fp,int n,real dt,
real c[],real *fit,int nskip);
/* Integrate the data in c[] from 0 to n using trapezium rule.
* If fp != NULL output is written to it
* If fit != NULL the fit is also written.
*/
-extern int get_acfnout(void);
+int get_acfnout(void);
/* Return the output length for the correlation function
* Works only AFTER do_auto_corr has been called!
*/
-extern int get_acffitfn(void);
+int get_acffitfn(void);
/* Return the fit function type.
* Works only AFTER do_auto_corr has been called!
*/
/* Routines from pp2shift (anadih.c etc.) */
-extern void do_pp2shifts(FILE *fp,int nframes,
+void do_pp2shifts(FILE *fp,int nframes,
int nlist,t_dlist dlist[],real **dih);
-extern bool has_dihedral(int Dih,t_dlist *dl);
+bool has_dihedral(int Dih,t_dlist *dl);
-extern t_dlist *mk_dlist(FILE *log,
+t_dlist *mk_dlist(FILE *log,
t_atoms *atoms, int *nlist,
bool bPhi, bool bPsi, bool bChi, bool bHChi,
int maxchi,int r0,int naa,char **aa);
-extern void pr_dlist(FILE *fp,int nl,t_dlist dl[],real dt, int printtype,
+void pr_dlist(FILE *fp,int nl,t_dlist dl[],real dt, int printtype,
bool bPhi, bool bPsi,bool bChi,bool bOmega, int maxchi);
-extern int pr_trans(FILE *fp,int nl,t_dlist dl[],real dt,int Xi);
+int pr_trans(FILE *fp,int nl,t_dlist dl[],real dt,int Xi);
-extern void mk_chi_lookup (int **lookup, int maxchi, real **dih,
+void mk_chi_lookup (int **lookup, int maxchi, real **dih,
int nlist, t_dlist dlist[]) ;
-extern void mk_multiplicity_lookup (int *xity, int maxchi, real **dih,
+void mk_multiplicity_lookup (int *xity, int maxchi, real **dih,
int nlist, t_dlist dlist[],int nangle) ;
-extern void get_chi_product_traj (real **dih,int nframes,int nangles,
+void get_chi_product_traj (real **dih,int nframes,int nangles,
int nlist,int maxchi, t_dlist dlist[],
real time[], int **lookup,int *xity,
bool bRb,bool bNormalize,
real core_frac,bool bAll,const char *fnall,
const output_env_t oenv);
-extern void print_one (const output_env_t oenv, const char *base,
+void print_one (const output_env_t oenv, const char *base,
const char *name,
const char *title, const char *ylabel,int nf,
real time[],real data[]);
/* Routines from g_hbond */
-extern void analyse_corr(int n,real t[],real ct[],real nt[],real kt[],
+void analyse_corr(int n,real t[],real ct[],real nt[],real kt[],
real sigma_ct[],real sigma_nt[],real sigma_kt[],
real fit_start,real temp,real smooth_tail_start,
const output_env_t oenv);
-extern void compute_derivative(int nn,real x[],real y[],real dydx[]);
+void compute_derivative(int nn,real x[],real y[],real dydx[]);
#ifdef __cplusplus
}
real length;
} t_specbond;
-extern t_specbond *get_specbonds(int *nspecbond);
-extern void done_specbonds(int nsb,t_specbond sb[]);
+t_specbond *get_specbonds(int *nspecbond);
+void done_specbonds(int nsb,t_specbond sb[]);
-extern void free_t_restp(int nrtp, t_restp **rtp);
-extern void free_t_hack(int nh, t_hack **h);
-extern void free_t_hackblock(int nhb, t_hackblock **hb);
+void free_t_restp(int nrtp, t_restp **rtp);
+void free_t_hack(int nh, t_hack **h);
+void free_t_hackblock(int nhb, t_hackblock **hb);
/* free the whole datastructure */
-extern void clear_t_hackblock(t_hackblock *hb);
-extern void clear_t_hack(t_hack *hack);
+void clear_t_hackblock(t_hackblock *hb);
+void clear_t_hack(t_hack *hack);
/* reset struct */
-extern bool merge_t_bondeds(t_rbondeds s[], t_rbondeds d[],
+bool merge_t_bondeds(t_rbondeds s[], t_rbondeds d[],
bool bMin, bool bPlus);
/* add s[].b[] to d[].b[]
* If bMin==TRUE, don't copy bondeds with atoms starting with '-'
* Returns if bonds were removed at the termini.
*/
-extern void copy_t_restp(t_restp *s, t_restp *d);
-extern void copy_t_hack(t_hack *s, t_hack *d);
-extern void copy_t_hackblock(t_hackblock *s, t_hackblock *d);
+void copy_t_restp(t_restp *s, t_restp *d);
+void copy_t_hack(t_hack *s, t_hack *d);
+void copy_t_hackblock(t_hackblock *s, t_hackblock *d);
/* make copy of whole datastructure */
-extern void merge_hacks_lo(int ns, t_hack *s, int *nd, t_hack **d);
+void merge_hacks_lo(int ns, t_hack *s, int *nd, t_hack **d);
/* add s[] to *d[] */
-extern void merge_hacks(t_hackblock *s, t_hackblock *d);
+void merge_hacks(t_hackblock *s, t_hackblock *d);
/* add s->hacks[] to d->hacks[] */
-extern void merge_t_hackblock(t_hackblock *s, t_hackblock *d);
+void merge_t_hackblock(t_hackblock *s, t_hackblock *d);
/* add s->hacks[] and s->rb[] to d*/
-extern void dump_hb(FILE *out, int nres, t_hackblock hb[]);
+void dump_hb(FILE *out, int nres, t_hackblock hb[]);
/* print out whole datastructure */
-extern void init_t_protonate(t_protonate *protonate);
+void init_t_protonate(t_protonate *protonate);
/* initialize t_protein struct */
#ifdef __cplusplus
*/
/*@{*/
/** Initialize calculation of a histogram. */
-extern int
+int
gmx_histogram_create(gmx_histogram_t **h, e_histogram_t type, int nbins);
/** Initialize calculation of a histogram for a range. */
-extern int
+int
gmx_histogram_create_range(gmx_histogram_t **h, e_histogram_t type,
real start, real end, real binw, bool bIntegerBins);
/** Clears the bins in the histogram. */
-extern void
+void
gmx_histogram_clear(gmx_histogram_t *h);
/** Frees the memory allocated for a histogram. */
-extern void
+void
gmx_histogram_free(gmx_histogram_t *h);
/** Sets histogram range using a starting point and a bin width. */
-extern int
+int
gmx_histogram_set_binwidth(gmx_histogram_t *h, real start, real binw);
/** Sets histogram range using endpoint values. */
-extern int
+int
gmx_histogram_set_range(gmx_histogram_t *h, real start, real end);
/** Sets histogram bins to center at integer values. */
-extern void
+void
gmx_histogram_set_integerbins(gmx_histogram_t *h, bool bIntegerBins);
/** Sets histogram to include outlying values in the bins at the edges. */
-extern void
+void
gmx_histogram_set_all(gmx_histogram_t *h, bool bAll);
/** Sets block size for histogram averaging. */
-extern int
+int
gmx_histogram_set_blocksize(gmx_histogram_t *h, int bsize);
/** Sets output file for block histograms. */
-extern int
+int
gmx_histogram_set_block_output(gmx_histogram_t *h, FILE *fp);
/*@}*/
*/
/*@{*/
/** Finds the histogram bin corresponding to a value. */
-extern int
+int
gmx_histogram_find_bin(gmx_histogram_t *h, real pos);
/** Returns the number of bins in a histogram. */
-extern int
+int
gmx_histogram_get_nbins(gmx_histogram_t *h);
/** Returns the bin width of a histogram. */
-extern real
+real
gmx_histogram_get_binwidth(gmx_histogram_t *h);
/** Returns the value of the histogram at a certain position. */
-extern void
+void
gmx_histogram_get_value(gmx_histogram_t *h, real pos, double *val, double *err);
/** Returns the value of the histogram in a certain bin. */
-extern void
+void
gmx_histogram_get_bin_value(gmx_histogram_t *h, int bin, double *val, double *err);
/** Returns an array of values for the histogram. */
-extern double *
+double *
gmx_histogram_get_values(gmx_histogram_t *h);
/** Returns an array of error values for the histogram. */
-extern double *
+double *
gmx_histogram_get_errors(gmx_histogram_t *h);
/*@}*/
*/
/*@{*/
/** Increments the count in a histogram bin corresponding to \p pos. */
-extern void
+void
gmx_histogram_increment(gmx_histogram_t *h, real pos);
/** Increments the count in a histogram bin. */
-extern void
+void
gmx_histogram_increment_bin(gmx_histogram_t *h, int bin);
/** Adds a value to a histogram bin corresponding to \p pos. */
-extern void
+void
gmx_histogram_add(gmx_histogram_t *h, real pos, double value);
/** Adds a value to a histogram bin. */
-extern void
+void
gmx_histogram_add_to_bin(gmx_histogram_t *h, int bin, double value);
/** Adds a value to a histogram bin corresponding to \p pos. */
-extern void
+void
gmx_histogram_add_item(gmx_histogram_t *h, real pos, double value);
/** Adds a value to a histogram bin. */
-extern void
+void
gmx_histogram_add_item_to_bin(gmx_histogram_t *h, int bin, double value);
/** Finishes histogram sampling for a frame. */
-extern void
+void
gmx_histogram_finish_frame(gmx_histogram_t *h);
/** Normalizes a histogram. */
-extern void
+void
gmx_histogram_finish(gmx_histogram_t *h);
/*@}*/
*/
/*@{*/
/** Creates a new histogram with double the binwidth. */
-extern void
+void
gmx_histogram_resample_dblbw(gmx_histogram_t **dest, gmx_histogram_t *src,
bool bIntegerBins);
/** Makes a clone of a histogram. */
-extern void
+void
gmx_histogram_clone(gmx_histogram_t **dest, gmx_histogram_t *src);
/** Normalizes a histogram to a probability distribution. */
-extern void
+void
gmx_histogram_normalize_prob(gmx_histogram_t *h);
/** Scales a histogram with a custom normalization factor. */
-extern void
+void
gmx_histogram_scale(gmx_histogram_t *h, real norm);
/** Scales a histogram with a custom non-uniform normalization factor. */
-extern void
+void
gmx_histogram_scale_vec(gmx_histogram_t *h, real norm[]);
/** Writes a single histogram to a file. */
-extern void
+void
gmx_histogram_write(FILE *fp, gmx_histogram_t *h, bool bErrors);
/** Writes a set of histograms to a file. */
-extern void
+void
gmx_histogram_write_array(FILE *fp, int n, gmx_histogram_t *h[],
bool bValue, bool bErrors);
/** Writes a set of cumulative histograms to a file. */
-extern void
+void
gmx_histogram_write_cum_array(FILE *fp, int n, gmx_histogram_t *h[],
bool bValue, bool bErrors);
/*@}*/
#ifndef _index_h
#define _index_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void check_index(char *gname,int n,atom_id index[],
+void check_index(char *gname,int n,atom_id index[],
char *traj,int natoms);
/* Checks if any index is smaller than zero or larger than natoms,
* if so a fatal_error is given with the gname (if gname=NULL, "Index" is used)
atom_id *inv_clust;
} t_cluster_ndx;
-extern t_cluster_ndx *cluster_index(FILE *fplog,const char *ndx);
+t_cluster_ndx *cluster_index(FILE *fplog,const char *ndx);
typedef struct {
int n;
-extern t_blocka *new_blocka(void);
+t_blocka *new_blocka(void);
/* allocate new block */
-extern void write_index(const char *outf, t_blocka *b,char **gnames);
+void write_index(const char *outf, t_blocka *b,char **gnames);
/* Writes index blocks to outf (writes an indexfile) */
void add_grp(t_blocka *b,char ***gnames,int nra,atom_id a[],const char *name);
/* Ads group a with name name to block b and namelist gnames */
-extern void analyse(t_atoms *atoms,t_blocka *gb,char ***gn,
+void analyse(t_atoms *atoms,t_blocka *gb,char ***gn,
bool bASK,bool bVerb);
/* Makes index groups gb with names gn for atoms in atoms.
* bASK=FALSE gives default groups.
*/
-extern int find_group(char s[], int ngrps, char **grpname);
+int find_group(char s[], int ngrps, char **grpname);
#ifdef __cplusplus
*/
/*@{*/
/** Allocate memory for index groups. */
-extern void
+void
gmx_ana_indexgrps_alloc(gmx_ana_indexgrps_t **g, int ngrps);
/** Initializes index groups from arrays. */
-extern void
+void
gmx_ana_indexgrps_set(gmx_ana_indexgrps_t **g, int ngrps, int *isize,
atom_id **index, char **name, bool bFree);
/** Reads index groups from a file or constructs them from topology. */
-extern void
+void
gmx_ana_indexgrps_init(gmx_ana_indexgrps_t **g, t_topology *top,
const char *fnm);
/** Ask user to select index groups, possibly constructing groups from
* topology. */
-extern void
+void
gmx_ana_indexgrps_get(gmx_ana_indexgrps_t **g, t_topology *top,
const char *fnm, int ngrps);
/** Ask user to select index groups from those specified in a file. */
-extern void
+void
gmx_ana_indexgrps_rd(gmx_ana_indexgrps_t **g, const char *fnm, int ngrps);
/** Frees memory allocated for index groups. */
-extern void
+void
gmx_ana_indexgrps_free(gmx_ana_indexgrps_t *g);
/** Create a deep copy of \c gmx_ana_indexgrps_t. */
-extern void
+void
gmx_ana_indexgrps_clone(gmx_ana_indexgrps_t **dest, gmx_ana_indexgrps_t *src);
/** Returns TRUE if the index group structure is emtpy. */
-extern bool
+bool
gmx_ana_indexgrps_is_empty(gmx_ana_indexgrps_t *g);
/** Returns a pointer to an index group. */
-extern gmx_ana_index_t *
+gmx_ana_index_t *
gmx_ana_indexgrps_get_grp(gmx_ana_indexgrps_t *g, int n);
/** Extracts a single index group. */
-extern bool
+bool
gmx_ana_indexgrps_extract(gmx_ana_index_t *dest, gmx_ana_indexgrps_t *src, int n);
/** Finds and extracts a single index group by name. */
-extern bool
+bool
gmx_ana_indexgrps_find(gmx_ana_index_t *dest, gmx_ana_indexgrps_t *src, char *name);
/** Writes out a list of index groups. */
-extern void
+void
gmx_ana_indexgrps_print(gmx_ana_indexgrps_t *g, int maxn);
/*@}*/
*/
/*@{*/
/** Reserves memory to store an index group of size \p isize. */
-extern void
+void
gmx_ana_index_reserve(gmx_ana_index_t *g, int isize);
/** Frees any memory not necessary to hold the current contents. */
-extern void
+void
gmx_ana_index_squeeze(gmx_ana_index_t *g);
/** Initializes an empty index group. */
-extern void
+void
gmx_ana_index_clear(gmx_ana_index_t *g);
/** Constructs a \c gmx_ana_index_t from given values. */
-extern void
+void
gmx_ana_index_set(gmx_ana_index_t *g, int isize, atom_id *index, char *name,
int nalloc);
/** Creates a simple index group from the first to the \p natoms'th atom. */
-extern void
+void
gmx_ana_index_init_simple(gmx_ana_index_t *g, int natoms, char *name);
/** Frees memory allocated for an index group. */
-extern void
+void
gmx_ana_index_deinit(gmx_ana_index_t *g);
/** Copies a \c gmx_ana_index_t. */
-extern void
+void
gmx_ana_index_copy(gmx_ana_index_t *dest, gmx_ana_index_t *src, bool bAlloc);
/** Writes out the contents of a index group. */
-extern void
+void
gmx_ana_index_dump(gmx_ana_index_t *g, int i, int maxn);
/** Checks whether all indices are between 0 and \p natoms. */
-extern void
+void
gmx_ana_index_check(gmx_ana_index_t *g, int natoms);
/** Checks whether an index group is sorted. */
-extern bool
+bool
gmx_ana_index_check_sorted(gmx_ana_index_t *g);
/*@}*/
*/
/*@{*/
/** Sorts the indices within an index group. */
-extern void
+void
gmx_ana_index_sort(gmx_ana_index_t *g);
/** Checks whether two index groups are equal. */
-extern bool
+bool
gmx_ana_index_equals(gmx_ana_index_t *a, gmx_ana_index_t *b);
/** Checks whether a sorted index group contains another sorted index group. */
-extern bool
+bool
gmx_ana_index_contains(gmx_ana_index_t *a, gmx_ana_index_t *b);
/** Calculates the intersection between two sorted index groups. */
-extern void
+void
gmx_ana_index_intersection(gmx_ana_index_t *dest,
gmx_ana_index_t *a, gmx_ana_index_t *b);
/** Calculates the set difference between two sorted index groups. */
-extern void
+void
gmx_ana_index_difference(gmx_ana_index_t *dest,
gmx_ana_index_t *a, gmx_ana_index_t *b);
/** Calculates the size of the difference between two sorted index groups. */
-extern int
+int
gmx_ana_index_difference_size(gmx_ana_index_t *a, gmx_ana_index_t *b);
/** Calculates the union of two sorted index groups. */
-extern void
+void
gmx_ana_index_union(gmx_ana_index_t *dest,
gmx_ana_index_t *a, gmx_ana_index_t *b);
/** Merges two distinct sorted index groups. */
-extern void
+void
gmx_ana_index_merge(gmx_ana_index_t *dest,
gmx_ana_index_t *a, gmx_ana_index_t *b);
/** Calculates the intersection and the difference in one call. */
-extern void
+void
gmx_ana_index_partition(gmx_ana_index_t *dest1, gmx_ana_index_t *dest2,
gmx_ana_index_t *src, gmx_ana_index_t *g);
/*@}*/
*/
/*@{*/
/** Partition a group based on topology information. */
-extern void
+void
gmx_ana_index_make_block(t_blocka *t, t_topology *top, gmx_ana_index_t *g,
e_index_t type, bool bComplete);
/** Checks whether a group consists of full blocks. */
-extern bool
+bool
gmx_ana_index_has_full_blocks(gmx_ana_index_t *g, t_block *b);
/** Checks whether a group consists of full blocks. */
-extern bool
+bool
gmx_ana_index_has_full_ablocks(gmx_ana_index_t *g, t_blocka *b);
/** Checks whether a group consists of full residues/molecules. */
-extern bool
+bool
gmx_ana_index_has_complete_elems(gmx_ana_index_t *g, e_index_t type, t_topology *top);
/** Initializes an empty index group mapping. */
-extern void
+void
gmx_ana_indexmap_clear(gmx_ana_indexmap_t *m);
/** Reserves memory for an index group mapping. */
-extern void
+void
gmx_ana_indexmap_reserve(gmx_ana_indexmap_t *m, int nr, int isize);
/** Initializes an index group mapping. */
-extern void
+void
gmx_ana_indexmap_init(gmx_ana_indexmap_t *m, gmx_ana_index_t *g,
t_topology *top, e_index_t type);
/** Sets an index group mapping to be static. */
-extern void
+void
gmx_ana_indexmap_set_static(gmx_ana_indexmap_t *m, t_blocka *b);
/** Frees memory allocated for index group mapping. */
-extern void
+void
gmx_ana_indexmap_deinit(gmx_ana_indexmap_t *m);
/** Makes a deep copy of an index group mapping. */
-extern void
+void
gmx_ana_indexmap_copy(gmx_ana_indexmap_t *dest, gmx_ana_indexmap_t *src, bool bFirst);
/** Updates an index group mapping. */
-extern void
+void
gmx_ana_indexmap_update(gmx_ana_indexmap_t *m, gmx_ana_index_t *g, bool bMaskOnly);
/*@}*/
#ifndef _invblock_h
#define _invblock_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern atom_id *make_invblock(const t_block *block,int nr);
+atom_id *make_invblock(const t_block *block,int nr);
/* Inverse the block structure. nr is the maximum entry in the inversed
* array, and therefore the dimension of the returned array
*/
-extern atom_id *make_invblocka(const t_blocka *block,int nr);
+atom_id *make_invblocka(const t_blocka *block,int nr);
/* Inverse the block structure. nr is the maximum entry in the inversed
* array, and therefore the dimension of the returned array
*/
#ifndef _macros_h
#define _macros_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h" /* for real definition only */
#ifdef __cplusplus
* And Hey:
* Gromacs Runs On Most of All Computer Systems
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _main_h
#define _main_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "network.h"
extern "C" {
#endif
-extern bool gmx_parallel_env_initialized(void);
+bool gmx_parallel_env_initialized(void);
/* 1 when running in a parallel environment, so could also be 1 if
mdrun was started with: mpirun -np 1.
has more than one node/thread. */
-extern void gmx_log_open(const char *fn,const t_commrec *cr,
+void gmx_log_open(const char *fn,const t_commrec *cr,
bool bMasterOnly, unsigned long Flags, FILE**);
/* Open the log file, if necessary (nprocs > 1) the logfile name is
* communicated around the ring.
*/
-extern void gmx_log_close(FILE *fp);
+void gmx_log_close(FILE *fp);
/* Close the log file */
-extern void check_multi_int(FILE *log,const gmx_multisim_t *ms,
+void check_multi_int(FILE *log,const gmx_multisim_t *ms,
int val,const char *name);
/* Check if val is the same on all processors for a mdrun -multi run
* The string name is used to print to the log file and in a fatal error
* if the val's don't match.
*/
-extern void init_multisystem(t_commrec *cr,int nsim,int nfile,
+void init_multisystem(t_commrec *cr,int nsim,int nfile,
const t_filenm fnm[], bool bParFn);
/* Splits the communication into nsim separate simulations
* and creates a communication structure between the master
* If bParFn is set, the nodeid is appended to the tpx and each output file.
*/
-extern t_commrec *init_par(int *argc,char ***argv_ptr);
+t_commrec *init_par(int *argc,char ***argv_ptr);
/* Initiate the parallel computer. Return the communication record
* (see network.h). The command line arguments are communicated so that they can be
* parsed on each processor.
* array of argument strings.
*/
-extern t_commrec *init_par_threads(const t_commrec *cro);
+t_commrec *init_par_threads(const t_commrec *cro);
/* Initialize communication records for thread-parallel simulations.
Must be called on all threads before any communication takes place by
the individual threads. Copies the original commrec to
thread-local versions (a small memory leak results because we don't
deallocate the old shared version). */
-extern t_commrec *init_cr_nopar(void);
+t_commrec *init_cr_nopar(void);
/* Returns t_commrec for non-parallel functionality */
#ifdef __cplusplus
#ifndef _maths_h
#define _maths_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <math.h>
#include "types/simple.h"
#include "typedefs.h"
{0.2967324292201065,0.2967324292201065,-0.186929716880426,0.2967324292201065,0.2967324292201065}
};*/
-extern int gmx_nint(real a);
-extern real sign(real x,real y);
+int gmx_nint(real a);
+real sign(real x,real y);
-extern int gmx_nint(real a);
-extern real sign(real x,real y);
-extern real cuberoot (real a);
-extern real gmx_erf(real x);
-extern real gmx_erfc(real x);
+int gmx_nint(real a);
+real sign(real x,real y);
+real cuberoot (real a);
+real gmx_erf(real x);
+real gmx_erfc(real x);
/*! \brief Check if two numbers are within a tolerance
*
#ifndef _matio_h
#define _matio_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern bool matelmt_cmp(t_xpmelmt e1, t_xpmelmt e2);
+bool matelmt_cmp(t_xpmelmt e1, t_xpmelmt e2);
-extern t_matelmt searchcmap(int n,t_mapping map[],t_xpmelmt c);
+t_matelmt searchcmap(int n,t_mapping map[],t_xpmelmt c);
/* Seach in the map for code 'c' and return entry number.
* return -1 if not found
*/
-extern int getcmap(FILE *in,const char *fn,t_mapping **map);
+int getcmap(FILE *in,const char *fn,t_mapping **map);
/* Read the mapping table from in, return number of entries */
-extern int readcmap(const char *fn,t_mapping **map);
+int readcmap(const char *fn,t_mapping **map);
/* Read the mapping table from fn, return number of entries */
-extern void printcmap(FILE *out,int n,t_mapping map[]);
+void printcmap(FILE *out,int n,t_mapping map[]);
/* print mapping table to out */
-extern void writecmap(const char *fn,int n,t_mapping map[]);
+void writecmap(const char *fn,int n,t_mapping map[]);
/* print mapping table to fn */
-extern int read_xpm_matrix(const char *fnm, t_matrix **matrix);
+int read_xpm_matrix(const char *fnm, t_matrix **matrix);
/* Reads a number of matrices from .xpm file fnm and returns this number */
-extern real **matrix2real(t_matrix *matrix,real **mat);
+real **matrix2real(t_matrix *matrix,real **mat);
/* Converts an matrix in a t_matrix struct to a matrix of reals
* When mat==NULL memory will be allocated
* Returns NULL when something went wrong
*/
-extern void write_xpm_m(FILE *out, t_matrix m);
+void write_xpm_m(FILE *out, t_matrix m);
/* Writes a t_matrix struct to .xpm file */
-extern void write_xpm3(FILE *out,unsigned int flags,
+void write_xpm3(FILE *out,unsigned int flags,
const char *title,const char *legend,
const char *label_x,const char *label_y,
int n_x,int n_y,real axis_x[],real axis_y[],
/* See write_xpm.
* Writes a colormap varying as rlo -> rmid -> rhi.
*/
-extern void write_xpm_split(FILE *out,unsigned int flags,
+void write_xpm_split(FILE *out,unsigned int flags,
const char *title,const char *legend,
const char *label_x,const char *label_y,
int n_x,int n_y,real axis_x[],real axis_y[],
* which is white.
*/
-extern void write_xpm(FILE *out,unsigned int flags,
+void write_xpm(FILE *out,unsigned int flags,
const char *title,const char *legend,
const char *label_x,const char *label_y,
int n_x,int n_y,real t_x[],real t_y[],
* nlevels number of color levels for the output
*/
-extern real **mk_matrix(int nx, int ny, bool b1D);
+real **mk_matrix(int nx, int ny, bool b1D);
-extern void done_matrix(int nx, real ***m);
+void done_matrix(int nx, real ***m);
-extern void clear_matrix(int nx, int ny, real **m);
+void clear_matrix(int nx, int ny, real **m);
#ifdef __cplusplus
}
#ifndef _mdatoms_h
#define _mdatoms_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern t_mdatoms *init_mdatoms(FILE *fp,gmx_mtop_t *mtop,bool bFreeEnergy);
+t_mdatoms *init_mdatoms(FILE *fp,gmx_mtop_t *mtop,bool bFreeEnergy);
-extern void atoms2md(gmx_mtop_t *mtop,t_inputrec *ir,
+void atoms2md(gmx_mtop_t *mtop,t_inputrec *ir,
int nindex,int *index,
int start,int homenr,
t_mdatoms *md);
* If index!=NULL only the indexed atoms are copied.
*/
-extern void update_mdatoms(t_mdatoms *md,real lambda);
+void update_mdatoms(t_mdatoms *md,real lambda);
/* (Re)set all the mass parameters */
#ifdef __cplusplus
#ifndef _mdebin_h
#define _mdebin_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#include "sysstuff.h"
#include "ebin.h"
t_mde_delta_h_coll *dhc; /* the BAR delta U (raw data + histogram) */
} t_mdebin;
-extern t_mdebin *init_mdebin(ener_file_t fp_ene,
+t_mdebin *init_mdebin(ener_file_t fp_ene,
const gmx_mtop_t *mtop,
const t_inputrec *ir,
FILE *fp_dhdl);
/* Initiate MD energy bin and write header to energy file. */
-extern FILE *open_dhdl(const char *filename,const t_inputrec *ir,
+FILE *open_dhdl(const char *filename,const t_inputrec *ir,
const output_env_t oenv);
/* Open the dhdl file for output */
/* update the averaging structures. Called every time
the energies are evaluated. */
-extern void upd_mdebin(t_mdebin *md,
+void upd_mdebin(t_mdebin *md,
bool write_dhdl,
bool bSum,
double time,
rvec mu_tot,
gmx_constr_t constr);
-extern void upd_mdebin_step(t_mdebin *md);
+void upd_mdebin_step(t_mdebin *md);
/* Updates only the step count in md */
-extern void print_ebin_header(FILE *log,gmx_large_int_t steps,double time,real lamb);
+void print_ebin_header(FILE *log,gmx_large_int_t steps,double time,real lamb);
-extern void print_ebin(ener_file_t fp_ene,bool bEne,bool bDR,bool bOR,
+void print_ebin(ener_file_t fp_ene,bool bEne,bool bDR,bool bOR,
FILE *log,
gmx_large_int_t step,double time,
int mode,bool bCompact,
that is written to checkpoints in checkpoint.c */
/* initialize the energyhistory_t data structure */
-extern void init_energyhistory(energyhistory_t * enerhist);
+void init_energyhistory(energyhistory_t * enerhist);
/* Set the energyhistory_t data structure from a mdebin structure */
-extern void update_energyhistory(energyhistory_t * enerhist,t_mdebin * mdebin);
+void update_energyhistory(energyhistory_t * enerhist,t_mdebin * mdebin);
/* Read the energyhistory_t data structure to a mdebin structure*/
-extern void restore_energyhistory_from_state(t_mdebin * mdebin,
+void restore_energyhistory_from_state(t_mdebin * mdebin,
energyhistory_t * enerhist);
#ifdef __cplusplus
#ifndef _mdrun_h
#define _mdrun_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include <time.h>
#include "typedefs.h"
/* ROUTINES from md.c */
-extern gmx_integrator_t do_md;
+gmx_integrator_t do_md;
-extern gmx_integrator_t do_md_openmm;
+gmx_integrator_t do_md_openmm;
/* ROUTINES from minimize.c */
-extern gmx_integrator_t do_steep;
+gmx_integrator_t do_steep;
/* Do steepest descents EM */
-extern gmx_integrator_t do_cg;
+gmx_integrator_t do_cg;
/* Do conjugate gradient EM */
-extern gmx_integrator_t do_lbfgs;
+gmx_integrator_t do_lbfgs;
/* Do conjugate gradient L-BFGS */
-extern gmx_integrator_t do_nm;
+gmx_integrator_t do_nm;
/* Do normal mode analysis */
/* ROUTINES from tpi.c */
-extern gmx_integrator_t do_tpi;
+gmx_integrator_t do_tpi;
/* Do test particle insertion */
/* ROUTINES from sim_util.c */
-extern void do_pbc_first(FILE *log,matrix box,t_forcerec *fr,
+void do_pbc_first(FILE *log,matrix box,t_forcerec *fr,
t_graph *graph,rvec x[]);
-extern void do_pbc_first_mtop(FILE *fplog,int ePBC,matrix box,
+void do_pbc_first_mtop(FILE *fplog,int ePBC,matrix box,
gmx_mtop_t *mtop,rvec x[]);
-extern void do_pbc_mtop(FILE *fplog,int ePBC,matrix box,
+void do_pbc_mtop(FILE *fplog,int ePBC,matrix box,
gmx_mtop_t *mtop,rvec x[]);
/* ROUTINES from stat.c */
-extern gmx_global_stat_t global_stat_init(t_inputrec *ir);
+gmx_global_stat_t global_stat_init(t_inputrec *ir);
-extern void global_stat_destroy(gmx_global_stat_t gs);
+void global_stat_destroy(gmx_global_stat_t gs);
-extern void global_stat(FILE *log,gmx_global_stat_t gs,
+void global_stat(FILE *log,gmx_global_stat_t gs,
t_commrec *cr,gmx_enerdata_t *enerd,
tensor fvir,tensor svir,rvec mu_tot,
t_inputrec *inputrec,
bool bSumEkinhOld, int flags);
/* Communicate statistics over cr->mpi_comm_mysim */
-extern gmx_mdoutf_t *init_mdoutf(int nfile,const t_filenm fnm[],
+gmx_mdoutf_t *init_mdoutf(int nfile,const t_filenm fnm[],
int mdrun_flags,
const t_commrec *cr,const t_inputrec *ir,
const output_env_t oenv);
* and names required by mdrun.
*/
-extern void done_mdoutf(gmx_mdoutf_t *of);
+void done_mdoutf(gmx_mdoutf_t *of);
/* Close all open output files and free the of pointer */
#define MDOF_X (1<<0)
#define MDOF_XTC (1<<3)
#define MDOF_CPT (1<<4)
-extern void write_traj(FILE *fplog,t_commrec *cr,
+void write_traj(FILE *fplog,t_commrec *cr,
gmx_mdoutf_t *of,
int mdof_flags,
gmx_mtop_t *top_global,
* Data is collected to the master node only when necessary.
*/
-extern int do_per_step(gmx_large_int_t step,gmx_large_int_t nstep);
+int do_per_step(gmx_large_int_t step,gmx_large_int_t nstep);
/* Return TRUE if io should be done */
-extern int do_any_io(int step, t_inputrec *ir);
+int do_any_io(int step, t_inputrec *ir);
/* ROUTINES from sim_util.c */
-extern double gmx_gettime();
+double gmx_gettime();
-extern void print_time(FILE *out, gmx_runtime_t *runtime,
+void print_time(FILE *out, gmx_runtime_t *runtime,
gmx_large_int_t step,t_inputrec *ir, t_commrec *cr);
-extern void runtime_start(gmx_runtime_t *runtime);
+void runtime_start(gmx_runtime_t *runtime);
-extern void runtime_end(gmx_runtime_t *runtime);
+void runtime_end(gmx_runtime_t *runtime);
-extern void runtime_upd_proc(gmx_runtime_t *runtime);
+void runtime_upd_proc(gmx_runtime_t *runtime);
/* The processor time should be updated every once in a while,
* since on 32-bit manchines it loops after 72 minutes.
*/
-extern void print_date_and_time(FILE *log,int pid,const char *title,
+void print_date_and_time(FILE *log,int pid,const char *title,
const gmx_runtime_t *runtime);
-extern void nstop_cm(FILE *log,t_commrec *cr,
+void nstop_cm(FILE *log,t_commrec *cr,
int start,int nr_atoms,real mass[],rvec x[],rvec v[]);
-extern void finish_run(FILE *log,t_commrec *cr,const char *confout,
+void finish_run(FILE *log,t_commrec *cr,const char *confout,
t_inputrec *inputrec,
t_nrnb nrnb[],gmx_wallcycle_t wcycle,
gmx_runtime_t *runtime,
bool bWriteStat);
-extern void calc_enervirdiff(FILE *fplog,int eDispCorr,t_forcerec *fr);
+void calc_enervirdiff(FILE *fplog,int eDispCorr,t_forcerec *fr);
-extern void calc_dispcorr(FILE *fplog,t_inputrec *ir,t_forcerec *fr,
+void calc_dispcorr(FILE *fplog,t_inputrec *ir,t_forcerec *fr,
gmx_large_int_t step, int natoms,
matrix box,real lambda,tensor pres,tensor virial,
real *prescorr, real *enercorr, real *dvdlcorr);
LIST_LOAD =0100
} t_listitem;
-extern void check_nnodes_top(char *fn,t_topology *top);
+void check_nnodes_top(char *fn,t_topology *top);
/* Reset the tpr file to work with one node if necessary */
/* Broadcast the data for a simulation, and allocate node-specific settings
such as rng generators. */
-extern void init_parallel(FILE *log, t_commrec *cr, t_inputrec *inputrec,
+void init_parallel(FILE *log, t_commrec *cr, t_inputrec *inputrec,
gmx_mtop_t *mtop);
-extern void do_constrain_first(FILE *log,gmx_constr_t constr,
+void do_constrain_first(FILE *log,gmx_constr_t constr,
t_inputrec *inputrec,t_mdatoms *md,
t_state *state,rvec *f,
t_graph *graph,t_commrec *cr,t_nrnb *nrnb,
t_forcerec *fr, gmx_localtop_t *top, tensor shake_vir);
-extern void dynamic_load_balancing(bool bVerbose,t_commrec *cr,real capacity[],
+void dynamic_load_balancing(bool bVerbose,t_commrec *cr,real capacity[],
int dimension,t_mdatoms *md,t_topology *top,
rvec x[],rvec v[],matrix box);
/* Perform load balancing, i.e. split the particles over processors
const char *deviceOptions, unsigned long Flags);
/* Driver routine, that calls the different methods */
-extern void md_print_warning(const t_commrec *cr,FILE *fplog,const char *buf);
+void md_print_warning(const t_commrec *cr,FILE *fplog,const char *buf);
/* Print a warning message to stderr on the master node
* and to fplog if fplog!=NULL.
*/
-extern void init_md(FILE *fplog,
+void init_md(FILE *fplog,
t_commrec *cr,t_inputrec *ir, const output_env_t oenv,
double *t,double *t0,
real *lambda,double *lam0,
#ifndef _mshift_h
#define _mshift_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern t_graph *mk_graph(FILE *fplog,
+t_graph *mk_graph(FILE *fplog,
t_idef *idef,int at_start,int at_end,
bool bShakeOnly,bool bSettle);
/* Build a graph from an idef description. The graph can be used
* If bSettle && bShakeOnly the settles are used too.
*/
-extern void mk_graph_ilist(FILE *fplog,
+void mk_graph_ilist(FILE *fplog,
t_ilist *ilist,int at_start,int at_end,
bool bShakeOnly,bool bSettle,
t_graph *g);
/* As mk_graph, but takes t_ilist iso t_idef and does not allocate g */
-extern void done_graph(t_graph *g);
+void done_graph(t_graph *g);
/* Free the memory in g */
-extern void p_graph(FILE *log,const char *title,t_graph *g);
+void p_graph(FILE *log,const char *title,t_graph *g);
/* Print a graph to log */
-extern void mk_mshift(FILE *log,t_graph *g,int ePBC,matrix box,rvec x[]);
+void mk_mshift(FILE *log,t_graph *g,int ePBC,matrix box,rvec x[]);
/* Calculate the mshift codes, based on the connection graph in g. */
-extern void shift_x(t_graph *g,matrix box,rvec x[],rvec x_s[]);
+void shift_x(t_graph *g,matrix box,rvec x[],rvec x_s[]);
/* Add the shift vector to x, and store in x_s (may be same array as x) */
-extern void shift_self(t_graph *g,matrix box,rvec x[]);
+void shift_self(t_graph *g,matrix box,rvec x[]);
/* Id. but in place */
-extern void unshift_x(t_graph *g,matrix box,rvec x[],rvec x_s[]);
+void unshift_x(t_graph *g,matrix box,rvec x[],rvec x_s[]);
/* Subtract the shift vector from x_s, and store in x (may be same array) */
-extern void unshift_self(t_graph *g,matrix box,rvec x[]);
+void unshift_self(t_graph *g,matrix box,rvec x[]);
/* Id, but in place */
#ifdef __cplusplus
* And Hey:
* Gromacs Runs On Most of All Computer Systems
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
* to set some compute intesive variables to avoid
* N^2 operations later on.
*/
-extern void
+void
gmx_mtop_finalize(gmx_mtop_t *mtop);
/* Returns the total number of charge groups in mtop */
-extern int
+int
ncg_mtop(const gmx_mtop_t *mtop);
* This can be an expensive operation, so if possible use
* one of the atom loop constructs below.
*/
-extern void
+void
gmx_mtop_atomnr_to_atom(const gmx_mtop_t *mtop,int atnr_global,
t_atom **atom);
/* Returns a pointer to the molecule interaction array ilist_mol[F_NRE]
* and the local atom number in the molecule belonging to atnr_global.
*/
-extern void
+void
gmx_mtop_atomnr_to_ilist(const gmx_mtop_t *mtop,int atnr_global,
t_ilist **ilist_mol,int *atnr_offset);
* and the atom number offset for the atom indices in moltype
* belonging to atnr_global.
*/
-extern void
+void
gmx_mtop_atomnr_to_molblock_ind(const gmx_mtop_t *mtop,int atnr_global,
int *molb,int *molnr,int *atnr_mol);
/* Returns atom name, global resnr and residue name of atom atnr_global */
-extern void
+void
gmx_mtop_atominfo_global(const gmx_mtop_t *mtop,int atnr_global,
char **atomname,int *resnr,char **resname);
* i.e. when you use groups which might differ per molecule,
* otherwise use gmx_mtop_atomloop_block.
*/
-extern gmx_mtop_atomloop_all_t
+gmx_mtop_atomloop_all_t
gmx_mtop_atomloop_all_init(const gmx_mtop_t *mtop);
/* Loop to the next atom.
* ...
* }
*/
-extern bool
+bool
gmx_mtop_atomloop_all_next(gmx_mtop_atomloop_all_t aloop,
int *at_global,t_atom **atom);
/* Return the atomname, the residue number and residue name
* of the current atom in the loop.
*/
-extern void
+void
gmx_mtop_atomloop_all_names(gmx_mtop_atomloop_all_t aloop,
char **atomname,int *resnr,char **resname);
/* Return the a pointer to the moltype struct of the current atom
* in the loop and the atom number in the molecule.
*/
-extern void
+void
gmx_mtop_atomloop_all_moltype(gmx_mtop_atomloop_all_t aloop,
gmx_moltype_t **moltype,int *at_mol);
/* Initialize an atom loop over atoms in all molecule blocks the system.
*/
-extern gmx_mtop_atomloop_block_t
+gmx_mtop_atomloop_block_t
gmx_mtop_atomloop_block_init(const gmx_mtop_t *mtop);
/* Loop to the next atom.
* ...
* }
*/
-extern bool
+bool
gmx_mtop_atomloop_block_next(gmx_mtop_atomloop_block_t aloop,
t_atom **atom,int *nmol);
typedef struct gmx_mtop_ilistloop *gmx_mtop_ilistloop_t;
/* Initialize an ilist loop over all molecule types in the system. */
-extern gmx_mtop_ilistloop_t
+gmx_mtop_ilistloop_t
gmx_mtop_ilistloop_init(const gmx_mtop_t *mtop);
* writes the number of molecules for this ilist in *nmol.
* When at the end, destroys iloop and returns FALSE.
*/
-extern bool
+bool
gmx_mtop_ilistloop_next(gmx_mtop_ilistloop_t iloop,
t_ilist **ilist_mol,int *nmol);
* i.e. when you use groups which might differ per molecule,
* otherwise use gmx_mtop_ilistloop.
*/
-extern gmx_mtop_ilistloop_all_t
+gmx_mtop_ilistloop_all_t
gmx_mtop_ilistloop_all_init(const gmx_mtop_t *mtop);
/* Loop to the next molecule,
* writes the atom offset which should be added to iatoms in atnr_offset.
* When at the end, destroys iloop and returns FALSE.
*/
-extern bool
+bool
gmx_mtop_ilistloop_all_next(gmx_mtop_ilistloop_all_t iloop,
t_ilist **ilist_mol,int *atnr_offset);
/* Returns the total number of interactions in the system of type ftype */
-extern int
+int
gmx_mtop_ftype_count(const gmx_mtop_t *mtop,int ftype);
/* Returns a charge group index for the whole system */
-extern t_block
+t_block
gmx_mtop_global_cgs(const gmx_mtop_t *mtop);
/* Returns a single t_atoms struct for the whole system */
-extern t_atoms
+t_atoms
gmx_mtop_global_atoms(const gmx_mtop_t *mtop);
* When bKeepSingleMolCG==TRUE keep charge groups for molecules
* that consist of a single charge group.
*/
-extern void
+void
gmx_mtop_make_atomic_charge_groups(gmx_mtop_t *mtop,bool bKeepSingleMolCG);
/* Generate a 'local' topology for the whole system.
* When ir!=NULL the free energy interactions will be sorted to the end.
*/
-extern gmx_localtop_t *
+gmx_localtop_t *
gmx_mtop_generate_local_top(const gmx_mtop_t *mtop,const t_inputrec *ir);
/* Converts a gmx_mtop_t struct to t_topology.
* All memory relating only to mtop will be freed.
*/
-extern t_topology
+t_topology
gmx_mtop_t_to_t_topology(gmx_mtop_t *mtop);
#ifdef __cplusplus
* And Hey:
* Green Red Orange Magenta Azure Cyan Skyblue
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
/* This module provides routines to read/write sparse or full storage
* matrices from/to files. It is normally used for the Hessian matrix
#ifndef _mvdata_h
#define _mvdata_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void bcast_ir_mtop(const t_commrec *cr,
+void bcast_ir_mtop(const t_commrec *cr,
t_inputrec *inputrec,gmx_mtop_t *mtop);
/* Broadcasts ir and mtop from the master to all nodes in cr->mpi_comm_mygroup.
*/
-extern void bcast_state_setup(const t_commrec *cr,t_state *state);
+void bcast_state_setup(const t_commrec *cr,t_state *state);
/* Broadcasts the state sizes and flags
* from the master to all nodes in cr->mpi_comm_mygroup.
* The arrays are not broadcasted.
*/
-extern void bcast_state(const t_commrec *cr,t_state *state,bool bAlloc);
+void bcast_state(const t_commrec *cr,t_state *state,bool bAlloc);
/* Broadcasts state from the master to all nodes in cr->mpi_comm_mygroup.
* The arrays in state are allocated when bAlloc is TRUE.
*/
/* Routines for particle decomposition only in mvxvf.c */
-extern void move_cgcm(FILE *log,const t_commrec *cr,rvec cg_cm[]);
+void move_cgcm(FILE *log,const t_commrec *cr,rvec cg_cm[]);
-extern void move_rvecs(const t_commrec *cr,bool bForward,bool bSum,
+void move_rvecs(const t_commrec *cr,bool bForward,bool bSum,
int left,int right,rvec vecs[],rvec buf[],
int shift,t_nrnb *nrnb);
-extern void move_reals(const t_commrec *cr,bool bForward,bool bSum,
+void move_reals(const t_commrec *cr,bool bForward,bool bSum,
int left,int right,real reals[],real buf[],
int shift,t_nrnb *nrnb);
-extern void move_x(FILE *log,const t_commrec *cr,
+void move_x(FILE *log,const t_commrec *cr,
int left,int right,rvec x[],t_nrnb *nrnb);
-extern void move_rborn(FILE *log,const t_commrec *cr,
+void move_rborn(FILE *log,const t_commrec *cr,
int left,int right,real rborn[],t_nrnb *nrnb);
-extern void move_f(FILE *log,const t_commrec *cr,
+void move_f(FILE *log,const t_commrec *cr,
int left,int right,rvec f[],rvec fadd[],
t_nrnb *nrnb);
-extern void move_gpol(FILE *log,const t_commrec *cr,
+void move_gpol(FILE *log,const t_commrec *cr,
int left,int right,real gpol[],real gpol_add[],
t_nrnb *nrnb);
#ifndef _names_h
#define _names_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
typedef struct gmx_ana_nbsearch_t gmx_ana_nbsearch_t;
/** Create a new neighborhood search data structure. */
-extern int
+int
gmx_ana_nbsearch_create(gmx_ana_nbsearch_t **d, real cutoff, int maxn);
/** Free memory allocated for neighborhood search. */
-extern void
+void
gmx_ana_nbsearch_free(gmx_ana_nbsearch_t *d);
/** Initializes neighborhood search for a new frame. */
-extern int
+int
gmx_ana_nbsearch_init(gmx_ana_nbsearch_t *d, t_pbc *pbc, int n, rvec x[]);
/** Initializes neighborhood search for a frame using \c gmx_ana_pos_t. */
-extern int
+int
gmx_ana_nbsearch_pos_init(gmx_ana_nbsearch_t *d, t_pbc *pbc,
struct gmx_ana_pos_t *p);
/** Sets the exclusions for the next neighborhood search. */
-extern int
+int
gmx_ana_nbsearch_set_excl(gmx_ana_nbsearch_t *d, int nexcl, int excl[]);
/** Check whether a point is within a neighborhood. */
-extern bool
+bool
gmx_ana_nbsearch_is_within(gmx_ana_nbsearch_t *d, rvec x);
/** Check whether a position is within a neighborhood. */
-extern bool
+bool
gmx_ana_nbsearch_pos_is_within(gmx_ana_nbsearch_t *d,
struct gmx_ana_pos_t *p, int i);
/** Calculates the minimun distance from the reference points. */
-extern real
+real
gmx_ana_nbsearch_mindist(gmx_ana_nbsearch_t *d, rvec x);
/** Calculates the minimun distance from the reference points. */
-extern real
+real
gmx_ana_nbsearch_pos_mindist(gmx_ana_nbsearch_t *d,
struct gmx_ana_pos_t *p, int i);
/** Finds the first reference position within the cutoff. */
-extern bool
+bool
gmx_ana_nbsearch_first_within(gmx_ana_nbsearch_t *d, rvec x, int *jp);
/** Finds the first reference position within the cutoff. */
-extern bool
+bool
gmx_ana_nbsearch_pos_first_within(gmx_ana_nbsearch_t *d,
struct gmx_ana_pos_t *p, int i, int *jp);
/** Finds the next reference position within the cutoff. */
-extern bool
+bool
gmx_ana_nbsearch_next_within(gmx_ana_nbsearch_t *d, int *jp);
#ifdef __cplusplus
#ifndef _network_h
#define _network_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
/*
* This module defines the interface of the actual communication routines.
extern "C" {
#endif
-extern int gmx_setup(int *argc,char **argv,int *nnodes);
+int gmx_setup(int *argc,char **argv,int *nnodes);
/* Initializes the parallel communication, return the ID of the node */
-extern int gmx_node_num(void);
+int gmx_node_num(void);
/* return the number of nodes in the ring */
-extern int gmx_node_rank(void);
+int gmx_node_rank(void);
/* return the rank of the node */
-extern void gmx_setup_nodecomm(FILE *fplog,t_commrec *cr);
+void gmx_setup_nodecomm(FILE *fplog,t_commrec *cr);
/* Sets up fast global communication for clusters with multi-core nodes */
-extern bool gmx_mpi_initialized(void);
+bool gmx_mpi_initialized(void);
/* return TRUE when MPI_Init has been called.
* return FALSE when MPI_Init has not been called OR
* when GROMACS was compiled without MPI support.
*/
-extern void gmx_barrier(const t_commrec *cr);
+void gmx_barrier(const t_commrec *cr);
/* Wait till all processes in cr->mpi_comm_mygroup have reached the barrier */
-extern void gmx_bcast(int nbytes,void *b,const t_commrec *cr);
+void gmx_bcast(int nbytes,void *b,const t_commrec *cr);
/* Broadcast nbytes bytes from the master to cr->mpi_comm_mygroup */
-extern void gmx_bcast_sim(int nbytes,void *b,const t_commrec *cr);
+void gmx_bcast_sim(int nbytes,void *b,const t_commrec *cr);
/* Broadcast nbytes bytes from the sim master to cr->mpi_comm_mysim */
-extern void gmx_sumi(int nr,int r[],const t_commrec *cr);
+void gmx_sumi(int nr,int r[],const t_commrec *cr);
/* Calculate the global sum of an array of ints */
-extern void gmx_sumf(int nr,float r[],const t_commrec *cr);
+void gmx_sumf(int nr,float r[],const t_commrec *cr);
/* Calculate the global sum of an array of floats */
-extern void gmx_sumd(int nr,double r[],const t_commrec *cr);
+void gmx_sumd(int nr,double r[],const t_commrec *cr);
/* Calculate the global sum of an array of doubles */
-extern void gmx_sumf_comm(int nr,float r[],MPI_Comm mpi_comm);
+void gmx_sumf_comm(int nr,float r[],MPI_Comm mpi_comm);
/* Calculate the global sum of an array of floats */
-extern void gmx_sumd_comm(int nr,double r[],MPI_Comm mpi_comm);
+void gmx_sumd_comm(int nr,double r[],MPI_Comm mpi_comm);
/* Calculate the global sum of an array of doubles */
-extern void gmx_sumi_sim(int nr,int r[],const gmx_multisim_t *ms);
+void gmx_sumi_sim(int nr,int r[],const gmx_multisim_t *ms);
/* Calculate the sum over the simulations of an array of ints */
-extern void gmx_sumf_sim(int nr,float r[],const gmx_multisim_t *ms);
+void gmx_sumf_sim(int nr,float r[],const gmx_multisim_t *ms);
/* Calculate the sum over the simulations of an array of floats */
-extern void gmx_sumd_sim(int nr,double r[],const gmx_multisim_t *ms);
+void gmx_sumd_sim(int nr,double r[],const gmx_multisim_t *ms);
/* Calculate the sum over the simulations of an array of doubles */
-extern void gmx_abort(int nodeid,int nnodes,int errorno);
+void gmx_abort(int nodeid,int nnodes,int errorno);
/* Abort the parallel run */
-extern void gmx_finalize(void);
+void gmx_finalize(void);
/* Finish the parallel run in an ordered manner */
#ifndef _nrama_h
#define _nrama_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#include "statutil.h"
#include "mshift.h"
output_env_t oenv;
} t_xrama;
-extern t_topology *init_rama(const output_env_t oenv, const char *infile,
+t_topology *init_rama(const output_env_t oenv, const char *infile,
const char *topfile, t_xrama *xr,int mult);
-extern bool new_data(t_xrama *xr);
+bool new_data(t_xrama *xr);
#ifdef __cplusplus
}
#ifndef _nrjac_h
#define _nrjac_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void jacobi(double **a,int n,double d[],double **v,int *nrot);
+void jacobi(double **a,int n,double d[],double **v,int *nrot);
/*
* real **omega = input matrix a[0..n-1][0..n-1] must be symmetric
* int natoms = number of rows and columns
#ifndef _nrnb_h
#define _nrnb_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void init_nrnb(t_nrnb *nrnb);
+void init_nrnb(t_nrnb *nrnb);
-extern void cp_nrnb(t_nrnb *dest, t_nrnb *src);
+void cp_nrnb(t_nrnb *dest, t_nrnb *src);
-extern void add_nrnb(t_nrnb *dest, t_nrnb *s1, t_nrnb *s2);
+void add_nrnb(t_nrnb *dest, t_nrnb *s1, t_nrnb *s2);
-extern void print_nrnb(FILE *out, t_nrnb *nrnb);
+void print_nrnb(FILE *out, t_nrnb *nrnb);
-extern void _inc_nrnb(t_nrnb *nrnb,int enr,int inc,char *file,int line);
+void _inc_nrnb(t_nrnb *nrnb,int enr,int inc,char *file,int line);
#if DEBUG_NRNB
#define inc_nrnb(nrnb,enr,inc) _inc_nrnb(nrnb,enr,inc,__FILE__,__LINE__)
#endif
-extern void print_flop(FILE *out,t_nrnb *nrnb,double *nbfs,double *mflop);
+void print_flop(FILE *out,t_nrnb *nrnb,double *nbfs,double *mflop);
/* Calculates the non-bonded forces and flop count.
* When out!=NULL also prints the full count table.
*/
-extern void print_perf(FILE *out,double nodetime,double realtime,int nprocs,
+void print_perf(FILE *out,double nodetime,double realtime,int nprocs,
gmx_large_int_t nsteps,real delta_t,
double nbfs,double mflop);
/* Prints the performance, nbfs and mflop come from print_flop */
-extern void pr_load(FILE *log,t_commrec *cr,t_nrnb nrnb[]);
+void pr_load(FILE *log,t_commrec *cr,t_nrnb nrnb[]);
/* Print detailed load balancing info */
-extern int cost_nrnb(int enr);
+int cost_nrnb(int enr);
/* Cost in i860 cycles of this component of MD */
-extern const char *nrnb_str(int enr);
+const char *nrnb_str(int enr);
/* Name of this component */
#ifdef __cplusplus
#ifndef _ns_h
#define _ns_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "sysstuff.h"
#include "typedefs.h"
*
****************************************************/
-extern void init_neighbor_list(FILE *log,t_forcerec *fr,int homenr);
+void init_neighbor_list(FILE *log,t_forcerec *fr,int homenr);
/*
* nn is the number of energy terms in the energy matrix
* (ngener*(ngener-1))/2
* homenr is the number of atoms on this processor
*/
-extern int calc_naaj(int icg,int cgtot);
+int calc_naaj(int icg,int cgtot);
/* Calculate the number of charge groups to interact with for icg */
/****************************************************
* Return total number of pairs searched
*
****************************************************/
-extern void init_ns(FILE *fplog,const t_commrec *cr,
+void init_ns(FILE *fplog,const t_commrec *cr,
gmx_ns_t *ns,t_forcerec *fr,
const gmx_mtop_t *mtop,
matrix box);
-extern int search_neighbours(FILE *log,t_forcerec *fr,
+int search_neighbours(FILE *log,t_forcerec *fr,
rvec x[],matrix box,
gmx_localtop_t *top,
gmx_groups_t *groups,
/* Debugging routines from wnblist.c */
-extern void dump_nblist(FILE *out,t_commrec *cr,t_forcerec *fr,int nDNL);
+void dump_nblist(FILE *out,t_commrec *cr,t_forcerec *fr,int nDNL);
-extern int read_nblist(FILE *in,FILE *out,int **mat,int natoms,bool bSymm);
+int read_nblist(FILE *in,FILE *out,int **mat,int natoms,bool bSymm);
/* Returns total number of neighbors. If bSymm the matrix is symmetrized. */
-extern int natoms_beyond_ns_buffer(t_inputrec *ir,t_forcerec *fr,t_block *cgs,
+int natoms_beyond_ns_buffer(t_inputrec *ir,t_forcerec *fr,t_block *cgs,
matrix scale_tot,rvec *x);
/* Returns the number of atoms that moved beyond the ns buffer */
* Gromacs Runs On Most of All Computer Systems
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
* to account for less dense regions at the edges of the system.
*/
-extern t_grid *init_grid(FILE *fplog,t_forcerec *fr);
+t_grid *init_grid(FILE *fplog,t_forcerec *fr);
-extern void done_grid(t_grid *grid);
+void done_grid(t_grid *grid);
-extern void get_nsgrid_boundaries(t_grid *grid,
+void get_nsgrid_boundaries(t_grid *grid,
gmx_domdec_t *dd,
matrix box,gmx_ddbox_t *ddbox,
rvec *gr0,rvec *gr1,
* on the edges are determined from cgcm.
*/
-extern void grid_first(FILE *log,t_grid *grid,
+void grid_first(FILE *log,t_grid *grid,
gmx_domdec_t *dd,const gmx_ddbox_t *ddbox,
int ePBC,matrix box,rvec izones_x0,rvec izones_x1,
real rlong,real grid_density);
-extern void fill_grid(FILE *log,
+void fill_grid(FILE *log,
gmx_domdec_zones_t *dd_zones,
t_grid *grid,int ncg_tot,
int cg0,int cg1,rvec cg_cm[]);
* When cg0 is -1, contiues filling from grid->nr to cg1.
*/
-extern void calc_elemnr(FILE *log,t_grid *grid,int cg0,int cg1,int ncg);
+void calc_elemnr(FILE *log,t_grid *grid,int cg0,int cg1,int ncg);
-extern void calc_ptrs(t_grid *grid);
+void calc_ptrs(t_grid *grid);
-extern void grid_last(FILE *log,t_grid *grid,int cg0,int cg1,int ncg);
+void grid_last(FILE *log,t_grid *grid,int cg0,int cg1,int ncg);
-extern int xyz2ci_(int nry,int nrz,int x,int y,int z);
+int xyz2ci_(int nry,int nrz,int x,int y,int z);
#define xyz2ci(nry,nrz,x,y,z) ((nry)*(nrz)*(x)+(nrz)*(y)+(z))
/* Return the cell index */
-extern void ci2xyz(t_grid *grid,int i,int *x,int *y,int *z);
+void ci2xyz(t_grid *grid,int i,int *x,int *y,int *z);
-extern void check_grid(FILE *log,t_grid *grid);
+void check_grid(FILE *log,t_grid *grid);
-extern void print_grid(FILE *log,t_grid *grid);
+void print_grid(FILE *log,t_grid *grid);
-extern void mv_grid(t_commrec *cr,t_grid *grid);
+void mv_grid(t_commrec *cr,t_grid *grid);
/* Move the grid over processors */
#ifdef __cplusplus
#ifndef _oenv_h
#define _oenv_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
/* initialize an output_env structure, with reasonable default settings.
(the time unit is set to time_ps, which means no conversion). */
-extern void output_env_done(output_env_t oenv);
+void output_env_done(output_env_t oenv);
/* free memory allocated for an output_env structure. */
-extern int output_env_get_verbosity(const output_env_t oenv);
+int output_env_get_verbosity(const output_env_t oenv);
/* return the verbosity */
-extern int output_env_get_debug_level(const output_env_t oenv);
+int output_env_get_debug_level(const output_env_t oenv);
/* return the debug level */
-extern const char *output_env_get_time_unit(const output_env_t oenv);
+const char *output_env_get_time_unit(const output_env_t oenv);
/* return time unit (e.g. ps or ns) */
-extern const char *output_env_get_time_label(const output_env_t oenv);
+const char *output_env_get_time_label(const output_env_t oenv);
/* return time unit label (e.g. "Time (ps)") */
-extern const char *output_env_get_xvgr_tlabel(const output_env_t oenv);
+const char *output_env_get_xvgr_tlabel(const output_env_t oenv);
/* retrun x-axis time label for xmgr */
-extern real output_env_get_time_factor(const output_env_t oenv);
+real output_env_get_time_factor(const output_env_t oenv);
/* return time conversion factor from ps (i.e. 1e-3 for ps->ns) */
-extern real output_env_get_time_invfactor(const output_env_t oenv);
+real output_env_get_time_invfactor(const output_env_t oenv);
/* return inverse time conversion factor from ps (i.e. 1e3 for ps->ns) */
-extern real output_env_conv_time(const output_env_t oenv, real time);
+real output_env_conv_time(const output_env_t oenv, real time);
/* return converted time */
-extern void output_env_conv_times(const output_env_t oenv, int n, real *time);
+void output_env_conv_times(const output_env_t oenv, int n, real *time);
/* convert array of times */
-extern bool output_env_get_view(const output_env_t oenv);
+bool output_env_get_view(const output_env_t oenv);
/* Return TRUE when user requested viewing of the file */
-extern xvg_format_t output_env_get_xvg_format(const output_env_t oenv);
+xvg_format_t output_env_get_xvg_format(const output_env_t oenv);
/* Returns enum (see above) for xvg output formatting */
-extern const char *output_env_get_program_name(const output_env_t oenv);
+const char *output_env_get_program_name(const output_env_t oenv);
/* return the program name */
-extern const char *output_env_get_cmd_line(const output_env_t oenv);
+const char *output_env_get_cmd_line(const output_env_t oenv);
/* return the command line */
-extern const char *output_env_get_short_program_name(const output_env_t oenv);
+const char *output_env_get_short_program_name(const output_env_t oenv);
/* get the short version (without path component) of the program name */
#ifndef _orires_h
#define _orires_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "sysstuff.h"
#include "typedefs.h"
extern "C" {
#endif
-extern void init_orires(FILE *fplog,const gmx_mtop_t *mtop,
+void init_orires(FILE *fplog,const gmx_mtop_t *mtop,
rvec x[],
const t_inputrec *ir,
const gmx_multisim_t *ms,t_oriresdata *od,
t_state *state);
/* Initializes all the orientation restraint stuff in *od */
-extern real calc_orires_dev(const gmx_multisim_t *ms,
+real calc_orires_dev(const gmx_multisim_t *ms,
int nfa,const t_iatom fa[],const t_iparams ip[],
const t_mdatoms *md,const rvec x[],
const t_pbc *pbc,t_fcdata *fcd,history_t *hist);
* Returns the weighted RMS deviation of the orientation restraints.
*/
-extern void diagonalize_orires_tensors(t_oriresdata *od);
+void diagonalize_orires_tensors(t_oriresdata *od);
/*
* Diagonalizes the order tensor(s) of the orienation restraints.
* For each experiment eig containts first 3 eigenvalues and then
* the 3 eigenvectors. The eigenvalues are ordered on magnitude.
*/
-extern void print_orires_log(FILE *log,t_oriresdata *od);
+void print_orires_log(FILE *log,t_oriresdata *od);
/* Print order parameter, eigenvalues and eigenvectors to the log file */
-extern t_ifunc orires;
+t_ifunc orires;
/* Does only the orientation restraint force calculation */
-extern void update_orires_history(t_fcdata *fcd,history_t *hist);
+void update_orires_history(t_fcdata *fcd,history_t *hist);
/* Copy the new time averages that have been calculated in calc_orires_dev */
#ifdef __cplusplus
#ifndef _partdec_h
#define _partdec_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "vsite.h"
#ifdef __cplusplus
/* These are the good old ring communication routines */
-extern void gmx_tx(const t_commrec *cr,int dir,void *buf,int bufsize);
+void gmx_tx(const t_commrec *cr,int dir,void *buf,int bufsize);
/*
* Asynchronously sends bufsize bytes from the buffer pointed to by buf
* over the communication channel, identified by chan. The buffer becomes
* available after a successful call of gmx_tx_wait(dir).
*/
-extern void gmx_tx_wait(const t_commrec *cr, int dir);
+void gmx_tx_wait(const t_commrec *cr, int dir);
/*
* Waits until the asynchronous send operation associated with chan has
* succeeded. This makes the buffer of the send operation available to
* the sending process.
*/
-extern void gmx_rx(const t_commrec *cr,int dir,void *buf,int bufsize);
+void gmx_rx(const t_commrec *cr,int dir,void *buf,int bufsize);
/*
* Asynchronously receives bufsize bytes in the buffer pointed to by buf
* from communication channel identified by chan. The buffer becomes
* available after a successful call of gmx_rx_wait(chan).
*/
-extern void gmx_rx_wait(const t_commrec *cr, int dir);
+void gmx_rx_wait(const t_commrec *cr, int dir);
/*
* Waits until the asynchronous receive operation, associated with chan,
* has succeeded. This makes the buffer of the receive operation
* available to the receiving process.
*/
-extern void gmx_left_right(int nnodes,int nodeid,
+void gmx_left_right(int nnodes,int nodeid,
int *left,int *right);
/* Get left and right proc id. */
-extern void gmx_tx_rx(const t_commrec *cr,
+void gmx_tx_rx(const t_commrec *cr,
int send_dir,void *send_buf,int send_bufsize,
int recv_dir,void *recv_buf,int recv_bufsize);
/* Communicate simultaneously left and right */
-extern void gmx_tx_rx_real(const t_commrec *cr,
+void gmx_tx_rx_real(const t_commrec *cr,
int send_dir,real *send_buf,int send_bufsize,
int recv_dir,real *recv_buf,int recv_bufsize);
/* Communicate simultaneously left and right, reals only */
-extern void gmx_wait(const t_commrec *cr, int dir_send, int dir_recv);
+void gmx_wait(const t_commrec *cr, int dir_send, int dir_recv);
/* Wait for communication to finish */
-extern void pd_move_f(const t_commrec *cr,rvec f[],t_nrnb *nrnb);
+void pd_move_f(const t_commrec *cr,rvec f[],t_nrnb *nrnb);
/* Sum the forces over the nodes */
-extern int *pd_cgindex(const t_commrec *cr);
+int *pd_cgindex(const t_commrec *cr);
-extern int *pd_index(const t_commrec *cr);
+int *pd_index(const t_commrec *cr);
-extern int pd_shift(const t_commrec *cr);
+int pd_shift(const t_commrec *cr);
-extern int pd_bshift(const t_commrec *cr);
+int pd_bshift(const t_commrec *cr);
-extern void pd_cg_range(const t_commrec *cr,int *cg0,int *cg1);
+void pd_cg_range(const t_commrec *cr,int *cg0,int *cg1);
/* Get the range for the home charge groups */
-extern void pd_at_range(const t_commrec *cr,int *at0,int *at1);
+void pd_at_range(const t_commrec *cr,int *at0,int *at1);
/* Get the range for the home particles */
-extern gmx_localtop_t *split_system(FILE *log,
+gmx_localtop_t *split_system(FILE *log,
gmx_mtop_t *mtop,t_inputrec *inputrec,
t_commrec *cr);
/* Split the system over N processors. */
-extern bool setup_parallel_vsites(t_idef *idef,t_commrec *cr,
+bool setup_parallel_vsites(t_idef *idef,t_commrec *cr,
t_comm_vsites *vsitecomm);
-extern t_state *partdec_init_local_state(t_commrec *cr,t_state *state_global);
+t_state *partdec_init_local_state(t_commrec *cr,t_state *state_global);
/* Generate a local state struct from the global one */
void
#ifndef _pbc_h
#define _pbc_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "sysstuff.h"
#include "typedefs.h"
ecenterDEF = ecenterTRIC
};
- extern int ePBC2npbcdim(int ePBC);
+ int ePBC2npbcdim(int ePBC);
/* Returns the number of dimensions that use pbc, starting at X */
- extern int inputrec2nboundeddim(t_inputrec *ir);
+ int inputrec2nboundeddim(t_inputrec *ir);
/* Returns the number of dimensions in which
* the coordinates of the particles are bounded, starting at X.
*/
- extern void dump_pbc(FILE *fp,t_pbc *pbc);
+ void dump_pbc(FILE *fp,t_pbc *pbc);
/* Dump the contents of the pbc structure to the file */
- extern const char *check_box(int ePBC,matrix box);
+ const char *check_box(int ePBC,matrix box);
/* Returns NULL if the box is supported by Gromacs.
* Otherwise is returns a string with the problem.
* When ePBC=-1, the type of pbc is guessed from the box matrix.
*/
- extern real max_cutoff2(int ePBC,matrix box);
+ real max_cutoff2(int ePBC,matrix box);
/* Returns the square of the maximum cut-off allowed for the box,
* taking into account that the grid neighborsearch code and pbc_dx
* only check combinations of single box-vector shifts.
int guess_ePBC(matrix box);
/* Guesses the type of periodic boundary conditions using the box */
- extern bool correct_box(FILE *fplog,int step,tensor box,t_graph *graph);
+ bool correct_box(FILE *fplog,int step,tensor box,t_graph *graph);
/* Checks for un-allowed box angles and corrects the box
* and the integer shift vectors in the graph (if graph!=NULL) if necessary.
* Returns TRUE when the box was corrected.
*/
- extern int ndof_com(t_inputrec *ir);
+ int ndof_com(t_inputrec *ir);
/* Returns the number of degrees of freedom of the center of mass */
- extern void set_pbc(t_pbc *pbc,int ePBC,matrix box);
+ void set_pbc(t_pbc *pbc,int ePBC,matrix box);
/* Initiate the periodic boundary conditions.
* pbc_dx will not use pbc and return the normal difference vector
* when one or more of the diagonal elements of box are zero.
* When ePBC=-1, the type of pbc is guessed from the box matrix.
*/
- extern t_pbc *set_pbc_dd(t_pbc *pbc,int ePBC,
+ t_pbc *set_pbc_dd(t_pbc *pbc,int ePBC,
gmx_domdec_t *dd,bool bSingleDir,matrix box);
/* As set_pbc, but additionally sets that correct distances can
* be obtained using (combinations of) single box-vector shifts.
* Returns pbc when pbc operations are required, NULL otherwise.
*/
- extern void pbc_dx(const t_pbc *pbc,const rvec x1, const rvec x2, rvec dx);
+ void pbc_dx(const t_pbc *pbc,const rvec x1, const rvec x2, rvec dx);
/* Calculate the correct distance vector from x2 to x1 and put it in dx.
* set_pbc must be called before ever calling this routine.
*
* pbc->bLimitDistance=FALSE and thus all distances are correct.
*/
- extern int pbc_dx_aiuc(const t_pbc *pbc,const rvec x1,const rvec x2,rvec dx);
+ int pbc_dx_aiuc(const t_pbc *pbc,const rvec x1,const rvec x2,rvec dx);
/* Calculate the correct distance vector from x2 to x1 and put it in dx,
* This function can only be used when all atoms are in the rectangular
* or triclinic unit-cell.
* (see calc_shifts below on how to obtain shift_vec)
* set_pbc_dd or set_pbc must be called before ever calling this routine.
*/
- extern void pbc_dx_d(const t_pbc *pbc,const dvec x1, const dvec x2, dvec dx);
+ void pbc_dx_d(const t_pbc *pbc,const dvec x1, const dvec x2, dvec dx);
/* As pbc_dx, but for double precision vectors.
* set_pbc must be called before ever calling this routine.
*/
- extern bool image_rect(ivec xi,ivec xj,ivec box_size,
+ bool image_rect(ivec xi,ivec xj,ivec box_size,
real rlong2,int *shift,real *r2);
/* Calculate the distance between xi and xj for a rectangular box.
* When the distance is SMALLER than rlong2 return TRUE, return
* It is assumed that rlong2 is scaled the same way as the ivecs xi and xj.
*/
- extern bool image_tri(ivec xi,ivec xj,imatrix box,
+ bool image_tri(ivec xi,ivec xj,imatrix box,
real rlong2,int *shift,real *r2);
/* Calculate the distance between xi and xj for a triclinic box.
* When the distance is SMALLER than rlong2 return TRUE, return
* It is assumed that rlong2 is scaled the same way as the ivecs xi and xj.
*/
- extern bool image_cylindric(ivec xi,ivec xj,ivec box_size,real rlong2,
+ bool image_cylindric(ivec xi,ivec xj,ivec box_size,real rlong2,
int *shift,real *r2);
/* Calculate the distance between xi and xj for a rectangular box
* using a cylindric cutoff for long-range only.
* It is assumed that rlong2 is scaled the same way as the ivecs xi and xj.
*/
- extern void calc_shifts(matrix box,rvec shift_vec[]);
+ void calc_shifts(matrix box,rvec shift_vec[]);
/* This routine calculates ths shift vectors necessary to use the
* ns routine.
*/
- extern void calc_box_center(int ecenter,matrix box,rvec box_center);
+ void calc_box_center(int ecenter,matrix box,rvec box_center);
/* Calculates the center of the box.
* See the description for the enum ecenter above.
*/
- extern void calc_triclinic_images(matrix box,rvec img[]);
+ void calc_triclinic_images(matrix box,rvec img[]);
/* Calculates the NTRICIMG box images */
- extern void calc_compact_unitcell_vertices(int ecenter,matrix box,
+ void calc_compact_unitcell_vertices(int ecenter,matrix box,
rvec vert[]);
/* Calculates the NCUCVERT vertices of a compact unitcell */
- extern int *compact_unitcell_edges(void);
+ int *compact_unitcell_edges(void);
/* Return an array of unitcell edges of length NCUCEDGE*2,
* this is an index in vert[], which is calculated by calc_unitcell_vertices.
* The index consists of NCUCEDGE pairs of vertex indices.
* The index does not change, so it needs to be retrieved only once.
*/
- extern void put_atom_in_box(matrix box,rvec x);
+ void put_atom_in_box(matrix box,rvec x);
- extern void put_atoms_in_box(matrix box,int natoms,rvec x[]);
+ void put_atoms_in_box(matrix box,int natoms,rvec x[]);
/* These routines puts ONE or ALL atoms in the box, not caring
* about charge groups!
* Also works for triclinic cells.
*/
- extern void put_atoms_in_triclinic_unitcell(int ecenter,matrix box,
+ void put_atoms_in_triclinic_unitcell(int ecenter,matrix box,
int natoms,rvec x[]);
/* This puts ALL atoms in the triclinic unit cell, centered around the
* box center as calculated by calc_box_center.
*/
- extern const char *put_atoms_in_compact_unitcell(int ePBC,int ecenter,
+ const char *put_atoms_in_compact_unitcell(int ePBC,int ecenter,
matrix box,
int natoms,rvec x[]);
/* This puts ALL atoms at the closest distance for the center of the box
char *a1,*a2;
} t_ssbond;
-extern void choose_ff(const char *ffsel,
+void choose_ff(const char *ffsel,
char *forcefield, int ff_maxlen,
char *ffdir, int ffdir_maxlen);
/* Find force fields in the current and libdirs and choose an ff.
* If ffsel==NULL: interactive selection.
*/
-extern void choose_watermodel(const char *wmsel,const char *ffdir,
+void choose_watermodel(const char *wmsel,const char *ffdir,
char **watermodel);
/* Choose, possibly interactively, which water model to include,
* based on the wmsel command line option choice and watermodels.dat
* in ffdir.
*/
-extern void get_hackblocks_rtp(t_hackblock **hb, t_restp **restp,
+void get_hackblocks_rtp(t_hackblock **hb, t_restp **restp,
int nrtp, t_restp rtp[],
int nres, t_resinfo *resinfo,
int nterpairs,
* and store them in restp and hb.
*/
-extern void match_atomnames_with_rtp(t_restp restp[],t_hackblock hb[],
+void match_atomnames_with_rtp(t_restp restp[],t_hackblock hb[],
t_atoms *pdba,rvec *x,
bool bVerbose);
/* Check if atom in pdba need to be deleted of renamed due to tdb or hdb.
* add these atoms to restp.
*/
-extern void print_top_comment(FILE *out,const char *filename,const char *generator,bool bITP);
+void print_top_comment(FILE *out,const char *filename,const char *generator,bool bITP);
-extern void print_top_header(FILE *out,const char *filename,const char *title,bool bITP,
+void print_top_header(FILE *out,const char *filename,const char *title,bool bITP,
const char *ffdir,real mHmult);
-extern void print_top_mols(FILE *out,
+void print_top_mols(FILE *out,
const char *title, const char *ffdir, const char *water,
int nincl, char **incls,
int nmol, t_mols *mols);
-extern void write_top(FILE *out, char *pr,char *molname,
+void write_top(FILE *out, char *pr,char *molname,
t_atoms *at,bool bRTPresname,
int bts[],t_params plist[],t_excls excls[],
gpp_atomtype_t atype,int *cgnr, int nrexcl);
/* NOTE: nrexcl is not the size of *excl! */
-extern void pdb2top(FILE *top_file, char *posre_fn, char *molname,
+void pdb2top(FILE *top_file, char *posre_fn, char *molname,
t_atoms *atoms,rvec **x,
gpp_atomtype_t atype,t_symtab *tab,
int nrtp, t_restp rtp[],
int nterpairs, t_hackblock **ntdb, t_hackblock **ctdb,
int *rn, int *rc, bool bAllowMissing,
bool bVsites, bool bVsiteAromatics,
- const char *ff, const char *ffdir, bool bAddCWD,
+ const char *ff, const char *ffdir,
real mHmult,
int nssbonds, t_ssbond ssbonds[],
real long_bond_dist, real short_bond_dist,
bool bRenumRes,bool bRTPresname);
/* Create a topology ! */
-extern void print_sums(t_atoms *atoms, bool bSystem);
+void print_sums(t_atoms *atoms, bool bSystem);
#endif /* _pdb2top_h */
#ifndef _pdbio_h
#define _pdbio_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "sysstuff.h"
#include "typedefs.h"
#include "symtab.h"
/* Enumerated value for indexing an uij entry (anisotropic temperature factors) */
enum { U11, U22, U33, U12, U13, U23 };
-extern void set_pdb_wide_format(bool bSet);
+void set_pdb_wide_format(bool bSet);
/* If bSet, use wider format for occupancy and bfactor */
-extern void pdb_use_ter(bool bSet);
+void pdb_use_ter(bool bSet);
/* set read_pdbatoms to read upto 'TER' or 'ENDMDL' (default, bSet=FALSE).
This function is fundamentally broken as far as thread-safety is concerned.*/
-extern void gmx_write_pdb_box(FILE *out,int ePBC,matrix box);
+void gmx_write_pdb_box(FILE *out,int ePBC,matrix box);
/* write the box in the CRYST1 record,
* with ePBC=-1 the pbc is guessed from the box
* This function is fundamentally broken as far as thread-safety is concerned.
*/
-extern void write_pdbfile_indexed(FILE *out,const char *title,t_atoms *atoms,
+void write_pdbfile_indexed(FILE *out,const char *title,t_atoms *atoms,
rvec x[],int ePBC,matrix box,char chain,
int model_nr,atom_id nindex,atom_id index[],
gmx_conect conect,bool bTerSepChains);
/* REALLY low level */
-extern void write_pdbfile(FILE *out,const char *title,t_atoms *atoms,
+void write_pdbfile(FILE *out,const char *title,t_atoms *atoms,
rvec x[],int ePBC,matrix box,char chain,
int model_nr,gmx_conect conect,bool bTerSepChains);
/* Low level pdb file writing routine.
* which may be useful for visualization purposes.
*/
-extern void get_pdb_atomnumber(t_atoms *atoms,gmx_atomprop_t aps);
+void get_pdb_atomnumber(t_atoms *atoms,gmx_atomprop_t aps);
/* Routine to extract atomic numbers from the atom names */
-extern int read_pdbfile(FILE *in,char *title,int *model_nr,
+int read_pdbfile(FILE *in,char *title,int *model_nr,
t_atoms *atoms,rvec x[],int *ePBC,matrix box,
bool bChange,gmx_conect conect);
/* Function returns number of atoms found.
* ePBC and gmx_conect structure may be NULL.
*/
-extern void read_pdb_conf(const char *infile,char *title,
+void read_pdb_conf(const char *infile,char *title,
t_atoms *atoms,rvec x[],int *ePBC,matrix box,
bool bChange,gmx_conect conect);
/* Read a pdb file and extract ATOM and HETATM fields.
* ePBC and gmx_conect structure may be NULL.
*/
-extern void get_pdb_coordnum(FILE *in,int *natoms);
+void get_pdb_coordnum(FILE *in,int *natoms);
/* Read a pdb file and count the ATOM and HETATM fields. */
-extern bool is_hydrogen(const char *nm);
+bool is_hydrogen(const char *nm);
/* Return whether atom nm is a hydrogen */
-extern bool is_dummymass(const char *nm);
+bool is_dummymass(const char *nm);
/* Return whether atom nm is a dummy mass */
/* Routines to handle CONECT records if they have been read in */
-extern void gmx_conect_dump(FILE *fp,gmx_conect conect);
+void gmx_conect_dump(FILE *fp,gmx_conect conect);
-extern bool gmx_conect_exist(gmx_conect conect,int ai,int aj);
+bool gmx_conect_exist(gmx_conect conect,int ai,int aj);
/* Return TRUE if there is a conection between the atoms */
-extern void gmx_conect_add(gmx_conect conect,int ai,int aj);
+void gmx_conect_add(gmx_conect conect,int ai,int aj);
/* Add a connection between ai and aj (numbered from 0 to natom-1) */
-extern gmx_conect gmx_conect_generate(t_topology *top);
+gmx_conect gmx_conect_generate(t_topology *top);
/* Generate a conect structure from a topology */
-extern gmx_conect gmx_conect_init();
+gmx_conect gmx_conect_init();
/* Initiate data structure */
-extern void gmx_conect_done(gmx_conect gc);
+void gmx_conect_done(gmx_conect gc);
/* Free memory */
#ifdef __cplusplus
* And Hey:
* Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifndef _perf_est_h
#define _perf_est_h
extern "C" {
#endif
-extern int n_bonded_dx(gmx_mtop_t *mtop,bool bExcl);
+int n_bonded_dx(gmx_mtop_t *mtop,bool bExcl);
/* Returns the number of pbc_rvec_sub calls required for bonded interactions.
* This number is also roughly proportional to the computational cost.
*/
-extern float pme_load_estimate(gmx_mtop_t *mtop,t_inputrec *ir,matrix box);
+float pme_load_estimate(gmx_mtop_t *mtop,t_inputrec *ir,matrix box);
/* Returns an estimate for the relative load of the PME mesh calculation
* in the total force calculation.
* This estimate is reasonable for recent Intel and AMD x86_64 CPUs.
#ifndef _physics_h
#define _physics_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
/*
* Physical constants to be used in Gromacs.
* No constants (apart from 0, 1 or 2) should
#ifndef _pme_h
#define _pme_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "typedefs.h"
#include "gmxcomplex.h"
enum { GMX_SUM_QGRID_FORWARD, GMX_SUM_QGRID_BACKWARD };
-extern int gmx_pme_init(gmx_pme_t *pmedata,t_commrec *cr,
+int gmx_pme_init(gmx_pme_t *pmedata,t_commrec *cr,
int nnodes_major,int nnodes_minor,
t_inputrec *ir,int homenr,
bool bFreeEnergy, bool bReproducible);
-extern int gmx_pme_destroy(FILE *log,gmx_pme_t *pmedata);
+int gmx_pme_destroy(FILE *log,gmx_pme_t *pmedata);
/* Initialize and destroy the pme data structures resepectively.
* Return value 0 indicates all well, non zero is an error code.
*/
#define GMX_PME_CALC_ENER_VIR (1<<3)
#define GMX_PME_DO_ALL_F (GMX_PME_SPREAD_Q | GMX_PME_SOLVE | GMX_PME_CALC_F)
-extern int gmx_pme_do(gmx_pme_t pme,
+int gmx_pme_do(gmx_pme_t pme,
int start, int homenr,
rvec x[], rvec f[],
real chargeA[], real chargeB[],
* Return value 0 indicates all well, non zero is an error code.
*/
-extern int gmx_pmeonly(gmx_pme_t pme,
+int gmx_pmeonly(gmx_pme_t pme,
t_commrec *cr, t_nrnb *mynrnb,
gmx_wallcycle_t wcycle,
real ewaldcoeff, bool bGatherOnly,
/* Called on the nodes that do PME exclusively (as slaves)
*/
-extern void gmx_pme_calc_energy(gmx_pme_t pme,int n,rvec *x,real *q,real *V);
+void gmx_pme_calc_energy(gmx_pme_t pme,int n,rvec *x,real *q,real *V);
/* Calculate the PME grid energy V for n charges with a potential
* in the pme struct determined before with a call to gmx_pme_do
* with at least GMX_PME_SPREAD_Q and GMX_PME_SOLVE specified.
/* Abstract type for PME <-> PP communication */
typedef struct gmx_pme_pp *gmx_pme_pp_t;
-extern gmx_pme_pp_t gmx_pme_pp_init(t_commrec *cr);
+gmx_pme_pp_t gmx_pme_pp_init(t_commrec *cr);
/* Initialize the PME-only side of the PME <-> PP communication */
-extern void gmx_pme_send_q(t_commrec *cr,
+void gmx_pme_send_q(t_commrec *cr,
bool bFreeEnergy, real *chargeA, real *chargeB,
int maxshift_x, int maxshift_y);
/* Send the charges and maxshift to out PME-only node. */
-extern void gmx_pme_send_x(t_commrec *cr, matrix box, rvec *x,
+void gmx_pme_send_x(t_commrec *cr, matrix box, rvec *x,
bool bFreeEnergy, real lambda,
bool bEnerVir,
gmx_large_int_t step);
/* Send the coordinates to our PME-only node and request a PME calculation */
-extern void gmx_pme_finish(t_commrec *cr);
+void gmx_pme_finish(t_commrec *cr);
/* Tell our PME-only node to finish */
-extern void gmx_pme_receive_f(t_commrec *cr,
+void gmx_pme_receive_f(t_commrec *cr,
rvec f[], matrix vir,
real *energy, real *dvdlambda,
float *pme_cycles);
/* PP nodes receive the long range forces from the PME nodes */
-extern int gmx_pme_recv_q_x(gmx_pme_pp_t pme_pp,
+int gmx_pme_recv_q_x(gmx_pme_pp_t pme_pp,
real **chargeA, real **chargeB,
matrix box, rvec **x,rvec **f,
int *maxshift_x,int *maxshift_y,
* Returns the number of atoms, or -1 when the run is finished.
*/
-extern void gmx_pme_send_force_vir_ener(gmx_pme_pp_t pme_pp,
+void gmx_pme_send_force_vir_ener(gmx_pme_pp_t pme_pp,
rvec *f, matrix vir,
real energy, real dvdlambda,
float cycles);
struct gmx_ana_pos_t;
/** Converts a string to parameters for gmx_ana_poscalc_create(). */
-extern int
+int
gmx_ana_poscalc_type_from_enum(const char *post, e_poscalc_t *type, int *flags);
/** Creates a list of strings for position enum parameter handling. */
-extern const char **
+const char **
gmx_ana_poscalc_create_type_enum(bool bAtom);
/** Creates a new position calculation collection object. */
-extern int
+int
gmx_ana_poscalc_coll_create(gmx_ana_poscalc_coll_t **pccp);
/** Sets the topology for a position calculation collection. */
-extern void
+void
gmx_ana_poscalc_coll_set_topology(gmx_ana_poscalc_coll_t *pcc, t_topology *top);
/** Frees memory allocated for a position calculation collection. */
-extern void
+void
gmx_ana_poscalc_coll_free(gmx_ana_poscalc_coll_t *pcc);
/** Prints information about calculations in a position calculation collection. */
-extern void
+void
gmx_ana_poscalc_coll_print_tree(FILE *fp, gmx_ana_poscalc_coll_t *pcc);
/** Creates a new position calculation. */
-extern int
+int
gmx_ana_poscalc_create(gmx_ana_poscalc_t **pcp, gmx_ana_poscalc_coll_t *pcc,
e_poscalc_t type, int flags);
/** Creates a new position calculation based on an enum value. */
-extern int
+int
gmx_ana_poscalc_create_enum(gmx_ana_poscalc_t **pcp, gmx_ana_poscalc_coll_t *pcc,
const char *post, int flags);
/** Sets the flags for position calculation. */
-extern void
+void
gmx_ana_poscalc_set_flags(gmx_ana_poscalc_t *pc, int flags);
/** Sets the maximum possible input index group for position calculation. */
-extern void
+void
gmx_ana_poscalc_set_maxindex(gmx_ana_poscalc_t *pc, struct gmx_ana_index_t *g);
/** Initializes positions for position calculation output. */
-extern void
+void
gmx_ana_poscalc_init_pos(gmx_ana_poscalc_t *pc, struct gmx_ana_pos_t *p);
/** Frees the memory allocated for position calculation. */
-extern void
+void
gmx_ana_poscalc_free(gmx_ana_poscalc_t *pc);
/** Returns TRUE if the position calculation requires topology information. */
-extern bool
+bool
gmx_ana_poscalc_requires_top(gmx_ana_poscalc_t *pc);
/** Initializes evaluation for a position calculation collection. */
-extern void
+void
gmx_ana_poscalc_init_eval(gmx_ana_poscalc_coll_t *pcc);
/** Initializes a position calculation collection for a new frame. */
-extern void
+void
gmx_ana_poscalc_init_frame(gmx_ana_poscalc_coll_t *pcc);
/** Updates a single COM/COG structure for a frame. */
-extern void
+void
gmx_ana_poscalc_update(gmx_ana_poscalc_t *pc,
struct gmx_ana_pos_t *p, struct gmx_ana_index_t *g,
t_trxframe *fr, t_pbc *pbc);
} gmx_ana_pos_t;
/** Initializes an empty position structure. */
-extern void
+void
gmx_ana_pos_clear(gmx_ana_pos_t *pos);
/** Ensures that enough memory has been allocated to store positions. */
-extern void
+void
gmx_ana_pos_reserve(gmx_ana_pos_t *pos, int n, int isize);
/** Request memory allocation for velocities. */
-extern void
+void
gmx_ana_pos_reserve_velocities(gmx_ana_pos_t *pos);
/** Request memory allocation for forces. */
-extern void
+void
gmx_ana_pos_reserve_forces(gmx_ana_pos_t *pos);
/** Initializes a \c gmx_ana_pos_t to represent a constant position. */
-extern void
+void
gmx_ana_pos_init_const(gmx_ana_pos_t *pos, rvec x);
/** Frees the memory allocated for position storage. */
-extern void
+void
gmx_ana_pos_deinit(gmx_ana_pos_t *pos);
/** Frees the memory allocated for positions. */
-extern void
+void
gmx_ana_pos_free(gmx_ana_pos_t *pos);
/** Copies the evaluated positions to a preallocated data structure. */
-extern void
+void
gmx_ana_pos_copy(gmx_ana_pos_t *dest, gmx_ana_pos_t *src, bool bFirst);
/** Sets the number of positions in a position structure. */
-extern void
+void
gmx_ana_pos_set_nr(gmx_ana_pos_t *pos, int n);
/** Sets the evaluation group of a position data structure. */
-extern void
+void
gmx_ana_pos_set_evalgrp(gmx_ana_pos_t *pos, gmx_ana_index_t *g);
/** Empties a position data structure with full initialization. */
-extern void
+void
gmx_ana_pos_empty_init(gmx_ana_pos_t *pos);
/** Empties a position data structure. */
-extern void
+void
gmx_ana_pos_empty(gmx_ana_pos_t *pos);
/** Appends a position to a preallocated data structure with full
* initialization. */
-extern void
+void
gmx_ana_pos_append_init(gmx_ana_pos_t *dest, gmx_ana_index_t *g,
gmx_ana_pos_t *src, int i);
/** Appends a position to a preallocated data structure. */
-extern void
+void
gmx_ana_pos_append(gmx_ana_pos_t *dest, gmx_ana_index_t *g,
gmx_ana_pos_t *src, int i, int refid);
/** Updates position data structure state after appends. */
-extern void
+void
gmx_ana_pos_append_finish(gmx_ana_pos_t *pos);
#ifdef __cplusplus
#ifndef _pppm_h
#define _pppm_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "typedefs.h"
#include "gmxcomplex.h"
extern "C" {
#endif
-extern int gmx_pppm_init(FILE *log, t_commrec *cr,
+int gmx_pppm_init(FILE *log, t_commrec *cr,
const output_env_t oenv, bool bVerbose,
bool bOld, matrix box,
char *ghatfn, t_inputrec *ir,
* or generate a ghat function from scratch.
*/
-extern int gmx_pppm_do(FILE *log, gmx_pme_t pme,
+int gmx_pppm_do(FILE *log, gmx_pme_t pme,
bool bVerbose,
rvec x[], rvec f[],
real charge[], rvec box,
*
******************************************************************/
-extern real gk(real k,real rc,real r1);
+real gk(real k,real rc,real r1);
/* Compute the Ghat function for a single k-value */
-extern real gknew(real k,real rc,real r1);
+real gknew(real k,real rc,real r1);
/* Compute the (new!) Ghat function for a single k-value */
-extern void pr_scalar_gk(const char *fn,const output_env_t oenv,
+void pr_scalar_gk(const char *fn,const output_env_t oenv,
int nx,int ny,int nz, rvec box,real ***ghat);
-extern void mk_ghat(FILE *fp,int nx,int ny,int nz,
+void mk_ghat(FILE *fp,int nx,int ny,int nz,
real ***ghat, rvec box,real r1,real rc,bool bSym,bool bOld);
/* Generate a Ghat function from scratch. The ghat grid should
* be allocated using the mk_rgrid function. When bSym, only
* When !bOld a new experimental function form will be used.
*/
-extern real ***rd_ghat(FILE *log,const output_env_t oenv,char *fn,ivec igrid,
+real ***rd_ghat(FILE *log,const output_env_t oenv,char *fn,ivec igrid,
rvec gridspacing, rvec beta,int *porder,
real *rshort,real *rlong);
/* Read a Ghat function from a file as generated by the program
* function.
*/
-extern void wr_ghat(const char *fn,const output_env_t oenv,
+void wr_ghat(const char *fn,const output_env_t oenv,
int n1max,int n2max, int n3max,real h1,
real h2,real h3,real ***ghat,int nalias,
int porder,int niter,bool bSym,rvec beta,
#ifndef _princ_h
#define _princ_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void rotate_atoms(int gnx,atom_id index[],rvec x[],matrix trans);
+void rotate_atoms(int gnx,atom_id index[],rvec x[],matrix trans);
/* Rotate all atoms in index using matrix trans */
-extern void principal_comp(int n,atom_id index[],t_atom atom[],rvec x[],
+void principal_comp(int n,atom_id index[],t_atom atom[],rvec x[],
matrix trans,rvec d);
/* Calculate the principal components of atoms in index. Atoms are
* mass weighted. It is assumed that the center of mass is in the origin!
*/
-extern void orient_princ(t_atoms *atoms, int isize, atom_id *index,
+void orient_princ(t_atoms *atoms, int isize, atom_id *index,
int natoms, rvec x[], rvec *v, rvec d);
/* rotates molecule to align principal axes with coordinate axes */
-extern real calc_xcm(rvec x[],int gnx,atom_id *index,t_atom *atom,rvec xcm,
+real calc_xcm(rvec x[],int gnx,atom_id *index,t_atom *atom,rvec xcm,
bool bQ);
/* Calculate the center of mass of the atoms in index. if bQ then the atoms
* will be charge weighted rather than mass weighted.
* Returns the total mass/charge.
*/
-extern real sub_xcm(rvec x[],int gnx,atom_id *index,t_atom atom[],rvec xcm,
+real sub_xcm(rvec x[],int gnx,atom_id *index,t_atom atom[],rvec xcm,
bool bQ);
/* Calc. the center of mass and subtract it from all coordinates.
* Returns the original center of mass in xcm
* Returns the total mass
*/
-extern void add_xcm(rvec x[],int gnx,atom_id *index,rvec xcm);
+void add_xcm(rvec x[],int gnx,atom_id *index,rvec xcm);
/* Increment all atoms in index with xcm */
#ifdef __cplusplus
#ifndef _pull_h
#define _pull_h
-#ifdef HAVE_CONFIG_H
- #include <config.h>
-#endif
-
#include "vec.h"
#include "typedefs.h"
for mdrun to interface with the pull code */
/* Get the distance to the reference and deviation for pull group g */
-extern void get_pullgrp_distance(t_pull *pull,t_pbc *pbc,int g,double t,
+void get_pullgrp_distance(t_pull *pull,t_pbc *pbc,int g,double t,
dvec dr,dvec dev);
/* Set the all the pull forces to zero */
-extern void clear_pull_forces(t_pull *pull);
+void clear_pull_forces(t_pull *pull);
/* Determine the COM pull forces and add them to f, return the potential */
-extern real pull_potential(int ePull,t_pull *pull, t_mdatoms *md, t_pbc *pbc,
+real pull_potential(int ePull,t_pull *pull, t_mdatoms *md, t_pbc *pbc,
t_commrec *cr, double t, real lambda,
rvec *x, rvec *f, tensor vir, real *dvdlambda);
/* Constrain the coordinates xp in the directions in x
* and also constrain v when v!=NULL.
*/
-extern void pull_constraint(t_pull *pull, t_mdatoms *md, t_pbc *pbc,
+void pull_constraint(t_pull *pull, t_mdatoms *md, t_pbc *pbc,
t_commrec *cr, double dt, double t,
rvec *x, rvec *xp, rvec *v, tensor vir);
/* Make a selection of the home atoms for all pull groups.
* Should be called at every domain decomposition.
*/
-extern void dd_make_local_pull_groups(gmx_domdec_t *dd,
+void dd_make_local_pull_groups(gmx_domdec_t *dd,
t_pull *pull,t_mdatoms *md);
/* get memory and initialize the fields of pull that still need it, and
do runtype specific initialization */
-extern void init_pull(FILE *fplog,
+void init_pull(FILE *fplog,
t_inputrec *ir, /* the inputrec */
int nfile,
const t_filenm fnm[], /* standard filename struct */
unsigned long Flags);
/* Close the pull output files */
-extern void finish_pull(FILE *fplog,t_pull *pull);
+void finish_pull(FILE *fplog,t_pull *pull);
/* Print the pull output (x and/or f) */
-extern void pull_print_output(t_pull *pull, gmx_large_int_t step, double time);
+void pull_print_output(t_pull *pull, gmx_large_int_t step, double time);
/* In pullutil.c */
/* Calculates centers of mass all pull groups */
-extern void pull_calc_coms(t_commrec *cr,
+void pull_calc_coms(t_commrec *cr,
t_pull *pull, /* the pull group */
t_mdatoms *md, /* all atoms */
t_pbc *pbc,
#ifndef _QMMM_h
#define _QMMM_h
-
-#ifdef HAVE_IDENT
-#ident "@(#) QMMM.h 1 28/2/01"
-#endif /* HAVE_IDENT */
#include "typedefs.h"
#include "pbc.h"
#include "network.h"
void atomic_number(int nr, char ***atomtype, int *nucnum);
-extern t_QMMMrec *mk_QMMMrec(void);
+t_QMMMrec *mk_QMMMrec(void);
/* allocates memory for QMMMrec */
-extern void init_QMMMrec(t_commrec *cr,
+void init_QMMMrec(t_commrec *cr,
matrix box,
gmx_mtop_t *mtop,
t_inputrec *ir,
* and md->cQMMM gives numbers of the MM and QM atoms
*/
-extern void update_QMMMrec(t_commrec *cr,
+void update_QMMMrec(t_commrec *cr,
t_forcerec *fr,
rvec x[],
t_mdatoms *md,
* elements of the t_QMMMrec struct.
*/
-extern real calculate_QMMM(t_commrec *cr,
+real calculate_QMMM(t_commrec *cr,
rvec x[], rvec f[],
t_forcerec *fr,
t_mdatoms *md);
#ifndef _random_h
#define _random_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern int make_seed(void);
+int make_seed(void);
/* Make a random seed: (time+getpid) % 1000000 */
-extern real rando(int *seed);
+real rando(int *seed);
/* Generate a random number 0 <= r < 1. seed is the (address of) the
* random seed variable.
*/
-extern void maxwell_speed(real tempi,int seed,
+void maxwell_speed(real tempi,int seed,
gmx_mtop_t *mtop, rvec v[]);
/* Generate velocites according to a maxwellian distribution */
-extern real calc_cm(FILE *log,int natoms,real mass[],rvec x[],rvec v[],
+real calc_cm(FILE *log,int natoms,real mass[],rvec x[],rvec v[],
rvec xcm,rvec vcm,rvec acm,matrix L);
/* Calculate the c.o.m. position, velocity, acceleration and the
* moment of Inertia. Returns the total mass.
*/
-extern void stop_cm(FILE *log,int natoms,real mass[],rvec x[],rvec v[]);
+void stop_cm(FILE *log,int natoms,real mass[],rvec x[],rvec v[]);
#ifdef __cplusplus
}
#ifndef _rbin_h
#define _rbin_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "sysstuff.h"
#include "typedefs.h"
#include "network.h"
double *rbuf;
} t_bin;
-extern t_bin *mk_bin(void);
+t_bin *mk_bin(void);
/* Create a real bin */
-extern void destroy_bin(t_bin *b);
+void destroy_bin(t_bin *b);
/* Destroy the bin structure */
-extern void reset_bin(t_bin *b);
+void reset_bin(t_bin *b);
/* Reset number of entries to zero */
-extern int add_binr(t_bin *b,int nr,real r[]);
-extern int add_bind(t_bin *b,int nr,double r[]);
+int add_binr(t_bin *b,int nr,real r[]);
+int add_bind(t_bin *b,int nr,double r[]);
/* Add reals to the bin. Returns index */
-extern void sum_bin(t_bin *b,t_commrec *cr);
+void sum_bin(t_bin *b,t_commrec *cr);
/* Globally sum the reals in the bin */
-extern void extract_binr(t_bin *b,int index,int nr,real r[]);
-extern void extract_bind(t_bin *b,int index,int nr,double r[]);
+void extract_binr(t_bin *b,int index,int nr,real r[]);
+void extract_bind(t_bin *b,int index,int nr,double r[]);
/* Extract values from the bin, starting from index (see add_bin) */
#ifdef __cplusplus
#ifndef _rdgroup_h
#define _rdgroup_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void check_index(char *gname,int n,atom_id index[],
+void check_index(char *gname,int n,atom_id index[],
char *traj,int natoms);
/* Checks if any index is smaller than zero or larger than natoms,
* if so a fatal_error is given with the gname (if gname=NULL, "Index" is used)
#ifndef _readinp_h
#define _readinp_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#include "warninp.h"
-extern t_inpfile *read_inpfile(const char *fn,int *ninp,
+t_inpfile *read_inpfile(const char *fn,int *ninp,
char **cppopts,
warninp_t wi);
/* Create & populate a t_inpfile struct from values in file fn.
ninp = the number of read parameters
cppopts = the cpp-style options for #include paths and #defines */
-extern void write_inpfile(const char *fn,int ninp,t_inpfile inp[],
+void write_inpfile(const char *fn,int ninp,t_inpfile inp[],
bool bHaltOnUnknown,
warninp_t wi);
-extern void replace_inp_entry(int ninp,t_inpfile *inp,
+void replace_inp_entry(int ninp,t_inpfile *inp,
const char *old_entry,const char *new_entry);
-extern int get_eint(int *ninp,t_inpfile **inp,const char *name,int def,
+int get_eint(int *ninp,t_inpfile **inp,const char *name,int def,
warninp_t wi);
-extern gmx_large_int_t get_egmx_large_int(int *ninp,t_inpfile **inp,
+gmx_large_int_t get_egmx_large_int(int *ninp,t_inpfile **inp,
const char *name,gmx_large_int_t def,
warninp_t);
-extern double get_ereal(int *ninp,t_inpfile **inp,const char *name,double def,
+double get_ereal(int *ninp,t_inpfile **inp,const char *name,double def,
warninp_t wi);
-extern const char *get_estr(int *ninp,t_inpfile **inp,const char *name,const char *def);
+const char *get_estr(int *ninp,t_inpfile **inp,const char *name,const char *def);
-extern int get_eeenum(int *ninp,t_inpfile **inp,const char *name,const char **defs,
+int get_eeenum(int *ninp,t_inpfile **inp,const char *name,const char **defs,
warninp_t wi);
/* defs must be NULL terminated */
-extern int get_eenum(int *ninp,t_inpfile **inp,const char *name,const char **defs);
+int get_eenum(int *ninp,t_inpfile **inp,const char *name,const char **defs);
/* defs must be NULL terminated */
/* Here are some dirty macros to extract data from the inp structures.
const char *desc;
} t_pargs;
-extern void get_pargs(int *argc,char *argv[],int nparg,t_pargs pa[],
+void get_pargs(int *argc,char *argv[],int nparg,t_pargs pa[],
bool bKeepArgs);
/* Read a number of arguments from the command line.
* For etINT, etREAL and etCHAR an extra argument is read (when present)
* If !bKeepArgs, the command line arguments are removed from the command line
*/
-extern bool is_hidden(t_pargs *pa);
+bool is_hidden(t_pargs *pa);
/* Return TRUE when the option is a secret one */
-extern char *pa_val(t_pargs *pa,char *buf, int sz);
+char *pa_val(t_pargs *pa,char *buf, int sz);
/* Return the value of pa in the provided buffer buf, of size sz.
* The return value is also a pointer to buf.
*/
-extern int opt2parg_int(const char *option,int nparg,t_pargs pa[]);
+int opt2parg_int(const char *option,int nparg,t_pargs pa[]);
-extern bool opt2parg_bool(const char *option,int nparg,t_pargs pa[]);
+bool opt2parg_bool(const char *option,int nparg,t_pargs pa[]);
-extern real opt2parg_real(const char *option,int nparg,t_pargs pa[]);
+real opt2parg_real(const char *option,int nparg,t_pargs pa[]);
-extern const char *opt2parg_str(const char *option,int nparg,t_pargs pa[]);
+const char *opt2parg_str(const char *option,int nparg,t_pargs pa[]);
-extern const char *opt2parg_enum(const char *option,int nparg,t_pargs pa[]);
+const char *opt2parg_enum(const char *option,int nparg,t_pargs pa[]);
-extern bool opt2parg_bSet(const char *option,int nparg,t_pargs pa[]);
+bool opt2parg_bSet(const char *option,int nparg,t_pargs pa[]);
-extern void print_pargs(FILE *fp, int npargs,t_pargs pa[],bool bLeadingSpace);
+void print_pargs(FILE *fp, int npargs,t_pargs pa[],bool bLeadingSpace);
-extern char *pargs_print_line(t_pargs *pa,bool bLeadingSpace);
+char *pargs_print_line(t_pargs *pa,bool bLeadingSpace);
-extern void pr_enums(FILE *fp, int npargs,t_pargs pa[],int shell);
+void pr_enums(FILE *fp, int npargs,t_pargs pa[],int shell);
#ifdef __cplusplus
}
extern "C" {
#endif
-extern t_restp *search_rtp(const char *key,int nrtp,t_restp rtp[]);
+t_restp *search_rtp(const char *key,int nrtp,t_restp rtp[]);
/* Search for an entry in the rtp database */
-extern gpp_atomtype_t read_atype(const char *ffdir,bool bAddCWD,t_symtab *tab);
+gpp_atomtype_t read_atype(const char *ffdir,t_symtab *tab);
/* read atom type database(s) */
-extern void read_resall(char *resdb, int *nrtp,t_restp **rtp,
- gpp_atomtype_t atype, t_symtab *tab,
- bool bAllowOverrideRTP);
+void read_resall(char *resdb, int *nrtp,t_restp **rtp,
+ gpp_atomtype_t atype, t_symtab *tab,
+ bool bAllowOverrideRTP);
/* read rtp database, append to the existing database */
-extern void print_resall(FILE *out, int nrtp, t_restp rtp[],
+void print_resall(FILE *out, int nrtp, t_restp rtp[],
gpp_atomtype_t atype);
/* write rtp database */
#ifdef __cplusplus
#ifndef _rmpbc_h
#define _rmpbc_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
typedef struct gmx_rmpbc *gmx_rmpbc_t;
- extern gmx_rmpbc_t gmx_rmpbc_init(t_idef *idef,int ePBC,int natoms,
+ gmx_rmpbc_t gmx_rmpbc_init(t_idef *idef,int ePBC,int natoms,
matrix box);
- extern void gmx_rmpbc_done(gmx_rmpbc_t gpbc);
+ void gmx_rmpbc_done(gmx_rmpbc_t gpbc);
- extern void gmx_rmpbc(gmx_rmpbc_t gpbc,int natoms,matrix box,rvec x[]);
+ void gmx_rmpbc(gmx_rmpbc_t gpbc,int natoms,matrix box,rvec x[]);
/* Correct coordinates x for atoms within every molecule for the periodic
* boundary conditions such that every molecule is whole.
* natoms is the size x and can be smaller than the number
* When ePBC=-1, the type of pbc is guessed from the box matrix.
*/
- extern void gmx_rmpbc_copy(gmx_rmpbc_t gpbc,int natoms,matrix box,rvec x[],
+ void gmx_rmpbc_copy(gmx_rmpbc_t gpbc,int natoms,matrix box,rvec x[],
rvec x_s[]);
/* As gmx_rmpbc, but outputs in x_s and does not modify x. */
- extern void gmx_rmpbc_trxfr(gmx_rmpbc_t gpbc,t_trxframe *fr);
+ void gmx_rmpbc_trxfr(gmx_rmpbc_t gpbc,t_trxframe *fr);
/* As gmx_rmpbc but operates on a t_trxframe data structure. */
- /*extern void rm_pbc(t_idef *idef,int ePBC,int natoms,
+ /*void rm_pbc(t_idef *idef,int ePBC,int natoms,
matrix box,rvec x[],rvec x_s[]);*/
/* Convenience function that still holds a static variable. */
- extern void rm_gropbc(t_atoms *atoms,rvec x[],matrix box);
+ void rm_gropbc(t_atoms *atoms,rvec x[],matrix box);
/* Simple routine for use in analysis tools that just have a pdb or
* similar file.
*/
} gmx_ana_selection_t;
/** Frees the memory allocated for a selection. */
-extern void
+void
gmx_ana_selection_free(gmx_ana_selection_t *sel);
/** Returns the name of a selection. */
-extern char *
+char *
gmx_ana_selection_name(gmx_ana_selection_t *sel);
/** Prints out the selection information. */
-extern void
+void
gmx_ana_selection_print_info(gmx_ana_selection_t *sel);
/** Initializes the information for covered fraction. */
-extern bool
+bool
gmx_ana_selection_init_coverfrac(gmx_ana_selection_t *sel, e_coverfrac_t type);
/** Creates a new empty selection collection. */
-extern int
+int
gmx_ana_selcollection_create(gmx_ana_selcollection_t **sc,
struct gmx_ana_poscalc_coll_t *pcc);
/** Frees the memory allocated for a selection collection. */
-extern void
+void
gmx_ana_selcollection_free(gmx_ana_selcollection_t *sc);
/** Sets the default reference position handling for a selection collection. */
-extern void
+void
gmx_ana_selcollection_set_refpostype(gmx_ana_selcollection_t *sc, const char *type);
/** Sets the default output position handling for a selection collection. */
-extern void
+void
gmx_ana_selcollection_set_outpostype(gmx_ana_selcollection_t *sc,
const char *type, bool bMaskOnly);
/** Request evaluation of velocities for selections. */
-extern void
+void
gmx_ana_selcollection_set_veloutput(gmx_ana_selcollection_t *sc,
bool bVelOut);
/** Request evaluation of forces for selections. */
-extern void
+void
gmx_ana_selcollection_set_forceoutput(gmx_ana_selcollection_t *sc,
bool bForceOut);
/** Sets the topology for a selection collection. */
-extern int
+int
gmx_ana_selcollection_set_topology(gmx_ana_selcollection_t *sc, t_topology *top,
int natoms);
/** Returns the number of selections specified by a selection collection. */
-extern int
+int
gmx_ana_selcollection_get_count(gmx_ana_selcollection_t *sc);
/** Returns a selection by index. */
-extern gmx_ana_selection_t *
+gmx_ana_selection_t *
gmx_ana_selcollection_get_selection(gmx_ana_selcollection_t *sc, int i);
/** Returns TRUE if the collection requires topology information for evaluation. */
-extern bool
+bool
gmx_ana_selcollection_requires_top(gmx_ana_selcollection_t *sc);
/** Prints a human-readable version of the internal selection element tree. */
-extern void
+void
gmx_ana_selcollection_print_tree(FILE *fp, gmx_ana_selcollection_t *sc, bool bValues);
/** Prints the selection strings into an XVGR file as comments. */
-extern void
+void
xvgr_selcollection(FILE *fp, gmx_ana_selcollection_t *sc,
const output_env_t oenv);
/* In parsetree.c */
/** Parses selection(s) from standard input. */
-extern int
+int
gmx_ana_selcollection_parse_stdin(gmx_ana_selcollection_t *sc, int nr,
gmx_ana_indexgrps_t *grps,
bool bInteractive);
/** Parses selection(s) from a file. */
-extern int
+int
gmx_ana_selcollection_parse_file(gmx_ana_selcollection_t *sc, const char *fnm,
gmx_ana_indexgrps_t *grps);
/** Parses selection(s) from a string. */
-extern int
+int
gmx_ana_selcollection_parse_str(gmx_ana_selcollection_t *sc, const char *str,
gmx_ana_indexgrps_t *grps);
/* In compiler.c */
/** Set debugging flag for selection compilation. */
-extern void
+void
gmx_ana_selcollection_set_compile_debug(gmx_ana_selcollection_t *sc, bool bDebug);
/** Prepares the selections for evaluation and performs some optimizations. */
-extern int
+int
gmx_ana_selcollection_compile(gmx_ana_selcollection_t *sc);
/* In evaluate.c */
/** Evaluates the selection. */
-extern int
+int
gmx_ana_selcollection_evaluate(gmx_ana_selcollection_t *sc,
t_trxframe *fr, t_pbc *pbc);
/** Evaluates the largest possible index groups from dynamic selections. */
-extern int
+int
gmx_ana_selcollection_evaluate_fin(gmx_ana_selcollection_t *sc, int nframes);
#ifdef __cplusplus
} gmx_ana_selmethod_t;
/** Registers a selection method. */
-extern int
+int
gmx_ana_selmethod_register(struct gmx_ana_selcollection_t *sc,
const char *name, gmx_ana_selmethod_t *method);
/** Registers all selection methods in the library. */
-extern int
+int
gmx_ana_selmethod_register_defaults(struct gmx_ana_selcollection_t *sc);
/** Finds a parameter from a selection method by name. */
-extern gmx_ana_selparam_t *
+gmx_ana_selparam_t *
gmx_ana_selmethod_find_param(const char *name, gmx_ana_selmethod_t *method);
#ifdef __cplusplus
} gmx_ana_selparam_t;
/** Finds a parameter from an array by name. */
-extern gmx_ana_selparam_t *
+gmx_ana_selparam_t *
gmx_ana_selparam_find(const char *name, int nparam, gmx_ana_selparam_t *param);
#ifdef __cplusplus
} gmx_ana_selvalue_t;
/** Initializes an empty selection value structure. */
-extern void
+void
_gmx_selvalue_clear(gmx_ana_selvalue_t *val);
/** Reserve memory for storing selection values. */
-extern int
+int
_gmx_selvalue_reserve(gmx_ana_selvalue_t *val, int n);
/** Sets the memory for storing selection values. */
-extern int
+int
_gmx_selvalue_setstore(gmx_ana_selvalue_t *val, void *ptr);
/** Sets the memory for storing selection values and marks it for automatic freeing. */
-extern int
+int
_gmx_selvalue_setstore_alloc(gmx_ana_selvalue_t *val, void *ptr, int nalloc);
#ifdef __cplusplus
#define _sfactor_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "index.h"
#include "types/simple.h"
#include "gmxcomplex.h"
typedef struct reduced_atom reduced_atom_t;
-extern int * create_indexed_atom_type (reduced_atom_t * atm, int size);
+int * create_indexed_atom_type (reduced_atom_t * atm, int size);
-extern void compute_structure_factor (structure_factor_t * sft, matrix box,
+void compute_structure_factor (structure_factor_t * sft, matrix box,
reduced_atom_t * red, int isize, real start_q,
real end_q, int group,real **sf_table);
-extern gmx_structurefactors_t *gmx_structurefactors_init(const char *datfn);
+gmx_structurefactors_t *gmx_structurefactors_init(const char *datfn);
-extern void gmx_structurefactors_done(gmx_structurefactors_t *gsf);
+void gmx_structurefactors_done(gmx_structurefactors_t *gsf);
-extern int gmx_structurefactors_get_sf(gmx_structurefactors_t *gsf, int elem, real a[4], real b[4], real *c);
+int gmx_structurefactors_get_sf(gmx_structurefactors_t *gsf, int elem, real a[4], real b[4], real *c);
-extern real **gmx_structurefactors_table(gmx_structurefactors_t *gsf,real momentum, real ref_k,
+real **gmx_structurefactors_table(gmx_structurefactors_t *gsf,real momentum, real ref_k,
real lambda, int n_angles);
-extern void save_data (structure_factor_t * sft, const char *file, int ngrps,
+void save_data (structure_factor_t * sft, const char *file, int ngrps,
real start_q, real end_q, const output_env_t oenv);
-extern double CMSF (gmx_structurefactors_t *gsf,int type,int nh,double lambda, double sin_theta);
+double CMSF (gmx_structurefactors_t *gsf,int type,int nh,double lambda, double sin_theta);
-extern int return_atom_type (const char *name,gmx_structurefactors_t *gsf);
+int return_atom_type (const char *name,gmx_structurefactors_t *gsf);
-extern void rearrange_atoms (reduced_atom_t * positions, t_trxframe *fr, atom_id * index,
+void rearrange_atoms (reduced_atom_t * positions, t_trxframe *fr, atom_id * index,
int isize, t_topology * top, bool flag,gmx_structurefactors_t *gsf);
-extern int do_scattering_intensity (const char* fnTPS, const char* fnNDX,
+int do_scattering_intensity (const char* fnTPS, const char* fnNDX,
const char* fnXVG, const char *fnTRX,
const char* fnDAT,
real start_q,real end_q,
real energy,int ng,const output_env_t oenv);
-extern t_complex *** rc_tensor_allocation(int x, int y, int z);
+t_complex *** rc_tensor_allocation(int x, int y, int z);
-extern real **compute_scattering_factor_table (gmx_structurefactors_t *gsf,structure_factor_t * sft,int *nsftable);
+real **compute_scattering_factor_table (gmx_structurefactors_t *gsf,structure_factor_t * sft,int *nsftable);
#ifdef __cplusplus
}
* Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
*/
-#ifdef HAVE_CONFIG_H
-#include<config.h>
-#endif
-
#include "typedefs.h"
#include "vsite.h"
/* Initialization function, also predicts the initial shell postions.
* If x!=NULL, the shells are predict for the global coordinates x.
*/
-extern gmx_shellfc_t init_shell_flexcon(FILE *log,
+gmx_shellfc_t init_shell_flexcon(FILE *log,
gmx_mtop_t *mtop,int nflexcon,
rvec *x);
/* Get the local shell with domain decomposition */
-extern void make_local_shells(t_commrec *cr,t_mdatoms *md,
+void make_local_shells(t_commrec *cr,t_mdatoms *md,
gmx_shellfc_t shfc);
/* Optimize shell positions */
-extern int relax_shell_flexcon(FILE *log,t_commrec *cr,bool bVerbose,
+int relax_shell_flexcon(FILE *log,t_commrec *cr,bool bVerbose,
gmx_large_int_t mdstep,t_inputrec *inputrec,
bool bDoNS,int force_flags,
bool bStopCM,
#ifndef _shift_h
#define _shift_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern real *mk_shift_tab(int n,real r1,real rc,real dr,real *sfac);
+real *mk_shift_tab(int n,real r1,real rc,real dr,real *sfac);
/* Return a table of length n, containing the parabolic
* shift function from HJC Berendsen
*/
#ifndef _sighandler_h
#define _sighandler_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <signal.h>
#ifdef __cplusplus
#ifndef _smalloc_h
#define _smalloc_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdlib.h>
/*
#ifndef _sortwater_h
#define _sortwater_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-extern void randwater(int astart,int nwater,int nwatom,
+void randwater(int astart,int nwater,int nwatom,
rvec x[],rvec v[],int *seed);
/* Randomize the order of nwater molecules of length nwatom, the
* first atom of which is at astart.
*/
-extern void sortwater(int astart,int nwater,int nwatom,rvec x[],rvec v[]);
+void sortwater(int astart,int nwater,int nwatom,rvec x[],rvec v[]);
/* Sort the order of nwater molecules of length nwatom on X coordinate
* If v is not NULL it will be shuffled along
* IS NOT THREAD SAFE
*/
-extern void mkcompact(int astart,int nwater,int nwatom,rvec x[],rvec v[],
+void mkcompact(int astart,int nwater,int nwatom,rvec x[],rvec v[],
int nnode,matrix box);
/* Make compact subboxes
* IS NOT THREAD SAFE */
* And Hey:
* Green Red Orange Magenta Azure Cyan Skyblue
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifndef _SPARSEMATRIX_H_
#define _SPARSEMATRIX_H_
#ifndef _split_h
#define _split_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
/*
* Determine on which node a particle should reside and on which
* node is also should be available. The distribution algorithm
/* node's id. */
} t_splitd;
-extern void init_splitd(t_splitd *splitd,int nnodes,int nnodeids);
+void init_splitd(t_splitd *splitd,int nnodes,int nnodeids);
/*
* Initialises the splitd data structure for the specified number of
* nodes (nnodes) and number of atoms (nnodeids).
*/
-extern void make_splitd(t_splitalg algorithm,int nnodes,t_topology *top,
+void make_splitd(t_splitalg algorithm,int nnodes,t_topology *top,
rvec *x,t_splitd *splitd,char *loadfile);
/*
* Initialises the splitd data structure for the specified number of
* the highest id that has one of the needed particles as home particle.
*/
-extern long wr_split(FILE *fp,t_splitd *splitd);
+long wr_split(FILE *fp,t_splitd *splitd);
/*
* Writes the split descriptor (splitd) to the file specified by fp.
*/
-extern long rd_split(FILE *fp,t_splitd *splitd);
+long rd_split(FILE *fp,t_splitd *splitd);
/*
* Reads the split descriptor (splitd) from the file specified by fp.
*/
-extern void rm_splitd(t_splitd *splitd);
+void rm_splitd(t_splitd *splitd);
/*
* Frees all allocated space for the splitd data structure.
*/
-extern void pr_splitd(FILE *fp,int indent,char *title,t_splitd *splitd);
+void pr_splitd(FILE *fp,int indent,char *title,t_splitd *splitd);
/*
* This routine prints out a (human) readable representation of
* the split descriptor to the file fp. Ident specifies the
* to print a header text.
*/
-extern void split_topology(t_splitalg algorithm,int nnodes,t_topology *top,
+void split_topology(t_splitalg algorithm,int nnodes,t_topology *top,
rvec x[],char *loadfile);
/*
* Distributes the non-bonded forces defined in top over nnodes nodes
extern "C" {
#endif
-extern void split_top(FILE *fp,int nnodes,gmx_localtop_t *top,
+void split_top(FILE *fp,int nnodes,gmx_localtop_t *top,
t_inputrec *ir,t_block *mols,
real *capacity,int *mulitnr_cgs,int **multinr_nre,
int *left_range, int *right_range);
* Info is written to the file pointer fp.
*/
-extern void gen_sblocks(FILE *fp,int at_start,int at_end,
+void gen_sblocks(FILE *fp,int at_start,int at_end,
t_idef *idef,t_blocka *sblock,
bool bSettle);
/* Generate shake blocks from the constraint list. Set bSettle to yes for shake
#ifndef _statutil_h
#define _statutil_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
#include <stdio.h>
#include "typedefs.h"
#include "filenm.h"
*/
enum { TBEGIN, TEND, TDELTA, TNR };
-extern bool bTimeSet(int tcontrol);
+bool bTimeSet(int tcontrol);
-extern real rTimeValue(int tcontrol);
+real rTimeValue(int tcontrol);
-extern void setTimeValue(int tcontrol,real value);
+void setTimeValue(int tcontrol,real value);
/* End trajectory time control */
a real problem. */
/* Return the name of the program */
-extern const char *command_line(void);
-extern void set_command_line(int argc, char *argv[]);
+const char *command_line(void);
+void set_command_line(int argc, char *argv[]);
/* set the program name to the provided string, but note
* that it must be a real file - we determine the library
* directory from its location!
*/
-extern const char *Program(void);
-extern void set_program_name(const char *argvzero);
+const char *Program(void);
+void set_program_name(const char *argvzero);
/* Id. without leading directory */
-extern const char *ShortProgram(void);
+const char *ShortProgram(void);
/************************************************
* Trajectory functions
************************************************/
-extern int prec2ndec(real prec);
+int prec2ndec(real prec);
/* Convert precision in 1/(nm) to number of decimal places */
-extern void clear_trxframe(t_trxframe *fr,bool bFirst);
+void clear_trxframe(t_trxframe *fr,bool bFirst);
/* Set all content booleans to FALSE.
* When bFirst = TRUE, set natoms=-1, all pointers to NULL
* and all data to zero.
*/
-extern void set_trxframe_ePBC(t_trxframe *fr,int ePBC);
+void set_trxframe_ePBC(t_trxframe *fr,int ePBC);
/* Set the type of periodic boundary conditions, ePBC=-1 is not set */
-extern int nframes_read(t_trxstatus *status);
+int nframes_read(t_trxstatus *status);
/* Returns the number of frames read from the trajectory */
int write_trxframe_indexed(t_trxstatus *status,t_trxframe *fr,int nind,
t_fileio *trx_get_fileio(t_trxstatus *status);
-extern bool bRmod_fd(double a, double b, double c,bool bDouble);
+bool bRmod_fd(double a, double b, double c,bool bDouble);
/* Returns TRUE when (a - b) MOD c = 0, using a margin which is slightly
* larger than the float/double precision.
*/
#define bRmod(a,b,c) bRmod_fd(a,b,c,FALSE)
#endif
-extern int check_times2(real t,real t0,real tp,real tpp,bool bDouble);
+int check_times2(real t,real t0,real tp,real tpp,bool bDouble);
/* This routine checkes if the read-in time is correct or not;
* returns -1 if t<tbegin or t MOD dt = t0,
* 0 if tbegin <= t <=tend+margin,
* on the value of bDouble.
*/
-extern int check_times(real t);
+int check_times(real t);
/* This routine checkes if the read-in time is correct or not;
* returns -1 if t<tbegin,
* 0 if tbegin <= t <=tend,
#define DATA_NOT_OK (1<<1)
#define FRAME_NOT_OK (HEADER_NOT_OK | DATA_NOT_OK)
-extern int read_first_frame(const output_env_t oenv,t_trxstatus **status,
+int read_first_frame(const output_env_t oenv,t_trxstatus **status,
const char *fn, t_trxframe *fr,int flags);
/* Read the first frame which is in accordance with flags, which are
* defined further up in this file.
* Returns TRUE when succeeded, FALSE otherwise.
*/
-extern bool read_next_frame(const output_env_t oenv,t_trxstatus *status,
+bool read_next_frame(const output_env_t oenv,t_trxstatus *status,
t_trxframe *fr);
/* Reads the next frame which is in accordance with fr->flags.
* Returns TRUE when succeeded, FALSE otherwise.
*/
-extern int read_first_x(const output_env_t oenv,t_trxstatus **status,
+int read_first_x(const output_env_t oenv,t_trxstatus **status,
const char *fn, real *t,rvec **x,matrix box);
/* These routines read first coordinates and box, and allocates
* memory for the coordinates, for a trajectory file.
* The integer in status should be passed to calls of read_next_x
*/
-extern bool read_next_x(const output_env_t oenv,t_trxstatus *status,real *t,
+bool read_next_x(const output_env_t oenv,t_trxstatus *status,real *t,
int natoms, rvec x[],matrix box);
/* Read coordinates and box from a trajectory file. Return TRUE when all well,
* or FALSE when end of file (or last frame requested by user).
* status is the integer set in read_first_x.
*/
-extern void close_trj(t_trxstatus *status);
+void close_trj(t_trxstatus *status);
/* Close trj file as opened with read_first_x, read_frist_frame
* or open_trx. Identical to close_trx.
*/
-extern void rewind_trj(t_trxstatus *status);
+void rewind_trj(t_trxstatus *status);
/* Rewind trj file as opened with read_first_x */
-extern t_topology *read_top(const char *fn,int *ePBC);
+t_topology *read_top(const char *fn,int *ePBC);
/* Extract a topology data structure from a topology file.
* If ePBC!=NULL *ePBC gives the pbc type.
*/
#define PCA_NOT_READ_NODE (1<<16)
/* Is this node not reading: for parallel all nodes but the master */
-extern int iscan(int argc,char *argv[],int *i);
+int iscan(int argc,char *argv[],int *i);
/* Scan an int from the argument at *i. If the argument length
* is > 2, the int is assumed to be in the remainder of the arg,
* eg: -p32, else the int is assumed to be in the next argument
* argument *i is incremented. You typically would want to pass
* a loop variable to this routine.
*/
-extern gmx_large_int_t istepscan(int argc,char *argv[],int *i);
+gmx_large_int_t istepscan(int argc,char *argv[],int *i);
/* Same as above, but for large integer values */
-extern double dscan(int argc,char *argv[],int *i);
+double dscan(int argc,char *argv[],int *i);
/* Routine similar to the above, but working on doubles. */
-extern char *sscan(int argc,char *argv[],int *i);
+char *sscan(int argc,char *argv[],int *i);
/* Routine similar to the above, but working on strings. The pointer
* returned is a pointer to the argv field.
*/
-extern void vscan(int argc,char *argv[],int *i,rvec *vec);
+void vscan(int argc,char *argv[],int *i,rvec *vec);
/* Routine similar to the above, but working on rvecs. */
-extern int nenum(const char *const enumc[]);
+int nenum(const char *const enumc[]);
/* returns ordinal number of selected enum from args
* depends on enumc[0] pointing to one of the other elements
* array must be terminated by a NULL pointer
*/
-extern void parse_common_args(int *argc,char *argv[],unsigned long Flags,
+void parse_common_args(int *argc,char *argv[],unsigned long Flags,
int nfile,t_filenm fnm[],int npargs,t_pargs *pa,
int ndesc,const char **desc,
int nbugs,const char **bugs,
#ifndef _strdb_h
#define _strdb_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "typedefs.h"
extern "C" {
#endif
-extern bool get_a_line(FILE *fp,char line[],int n);
+bool get_a_line(FILE *fp,char line[],int n);
/* Read a line of at most n characters form *fp to line.
* Comment ';...' and leading spaces are removed, empty lines are skipped.
* Return FALSE when eof.
*/
-extern bool get_header(char line[],char header[]);
+bool get_header(char line[],char header[]);
/* Read a header between '[' and ']' from line to header.
* Returns FALSE no header is found.
*/
-extern int fget_lines(FILE *in,char ***strings);
+int fget_lines(FILE *in,char ***strings);
/* Read an array of lines from file in. strings should be
* the address of an array of strings (to be malloced by this routine)
* return the number of strings.
*/
-extern int get_lines(const char *db,char ***strings);
+int get_lines(const char *db,char ***strings);
/* Open file db, or if non-existant file $GMXLIB/db and read strings
* return the number of strings.
*/
-extern int search_str(int nstr,char **str,char *key);
+int search_str(int nstr,char **str,char *key);
/* Search an array of strings for key, return the index if found
* -1 if not found.
*/
-extern int get_strings(const char *db,char ***strings);
+int get_strings(const char *db,char ***strings);
/* Read an array of strings from file db or $GMXLIB/db. strings should be
* the address of an array of strings (to be malloced by this routine)
* return the number of strings.
*/
-extern int get_file(const char *db,char ***strings);
+int get_file(const char *db,char ***strings);
/* Read an array of strings from file db or $GMXLIB/db. strings should be
* the address of an array of strings (to be malloced by this routine)
* Does not need number of lines as first line in the file.
#ifndef _string2_h
#define _string2_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
/*
*
* string2.h
#include <ctype.h>
#include <time.h>
#include <errno.h>
-#include <time.h>
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
/*#include "typedefs.h"*/
#include "types/simple.h"
#define CONTINUE '\\'
#define COMMENTSIGN ';'
-extern int continuing(char *s);
+int continuing(char *s);
-extern char *fgets2(char *s, int n, FILE *stream);
+char *fgets2(char *s, int n, FILE *stream);
-extern void strip_comment (char *line);
+void strip_comment (char *line);
-extern int break_line (char *line,
+int break_line (char *line,
char *variable,
char *value);
-extern void upstring (char *str);
+void upstring (char *str);
-extern void ltrim (char *str);
+void ltrim (char *str);
-extern void rtrim (char *str);
+void rtrim (char *str);
-extern void trim (char *str);
+void trim (char *str);
-extern void nice_header (FILE *out,const char *fn);
+void nice_header (FILE *out,const char *fn);
-extern int strcasecmp_min(const char *str1, const char *str2);
-extern int strncasecmp_min(const char *str1, const char *str2, int n);
+int gmx_strcasecmp_min(const char *str1, const char *str2);
+int gmx_strncasecmp_min(const char *str1, const char *str2, int n);
/* This funny version of strcasecmp, is not only case-insensitive,
* but also ignores '-' and '_'.
*/
-extern int gmx_strcasecmp(const char *str1, const char *str2);
-extern int gmx_strncasecmp(const char *str1, const char *str2, int n);
+int gmx_strcasecmp(const char *str1, const char *str2);
+int gmx_strncasecmp(const char *str1, const char *str2, int n);
-extern char *gmx_strdup(const char *src);
-extern char *gmx_strndup(const char *src, int n);
-
-/* Portable version of ctime_r */
-char *gmx_ctime_r(const time_t *clock,char *buf, int n);
+char *gmx_strdup(const char *src);
+char *gmx_strndup(const char *src, int n);
-
-
-#ifndef HAVE_STRCASECMP
-#define strcasecmp gmx_strcasecmp
-#define strncasecmp gmx_strncasecmp
-#endif
-
-#ifndef HAVE_STRDUP
-#define strdup gmx_strdup
-#endif
-
-#define strndup gmx_strndup
-
/** Pattern matcing with wildcards. */
-extern int gmx_wcmatch(const char *pattern, const char *src);
+int gmx_wcmatch(const char *pattern, const char *src);
/** Return value for gmx_wcmatch() when there is no match. */
#define GMX_NO_WCMATCH 1
/* this is our implementation of strsep, the thread-safe replacement for
strtok */
-extern char *gmx_strsep(char **stringp, const char *delim);
+char *gmx_strsep(char **stringp, const char *delim);
-extern char *wrap_lines(const char *buf,int line_width, int indent,
+char *wrap_lines(const char *buf,int line_width, int indent,
bool bIndentFirst);
/* wraps lines at 'linewidth', indenting all following
* lines by 'indent' spaces. A temp buffer is allocated and returned,
*/
-extern char **split(char sep,char *str);
+char **split(char sep,char *str);
/* Implementation of the well-known Perl function split */
gmx_large_int_t str_to_large_int_t(const char *str, char **endptr);
#ifndef _symtab_h
#define _symtab_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
#include <stdio.h>
#include "typedefs.h"
* back to a text string handle by get_symtab_handle().
*/
-extern void open_symtab(t_symtab *symtab);
+void open_symtab(t_symtab *symtab);
/* Initialises the symbol table symtab.
*/
-extern void close_symtab(t_symtab *symtab);
+void close_symtab(t_symtab *symtab);
/* Undoes the effect of open_symtab(), after invoking this function,
* no value can be added to the symbol table, only values can be
* retrieved using get_symtab().
*/
-extern void free_symtab(t_symtab *symtab);
+void free_symtab(t_symtab *symtab);
/* Frees the space allocated by the symbol table itself */
-extern void done_symtab(t_symtab *symtab);
+void done_symtab(t_symtab *symtab);
/* Frees the space allocated by the symbol table, including all
* entries in it */
-extern char **put_symtab(t_symtab *symtab,const char *name);
+char **put_symtab(t_symtab *symtab,const char *name);
/* Enters a string into the symbol table symtab, if it was not
* available, a reference to a copy is returned else a reference
* to the earlier entered value is returned. Strings are trimmed
* of spaces.
*/
-extern int lookup_symtab(t_symtab *symtab,char **name);
+int lookup_symtab(t_symtab *symtab,char **name);
/* Returns a unique handle for **name, without a memory reference.
* It is a failure when name cannot be found in the symbol table,
* it should be entered before with put_symtab().
*/
-extern char **get_symtab_handle(t_symtab *symtab,int name);
+char **get_symtab_handle(t_symtab *symtab,int name);
/* Returns a text string handle for name. Name should be a value
* returned from lookup_symtab(). So get_symtab_handle() and
* lookup_symtab() are inverse functions.
*/
-extern long wr_symtab(FILE *fp,t_symtab *symtab);
+long wr_symtab(FILE *fp,t_symtab *symtab);
/* Writes the symbol table symtab to the file, specified by fp.
* The function returns the number of bytes written.
*/
-extern long rd_symtab(FILE *fp,t_symtab *symtab);
+long rd_symtab(FILE *fp,t_symtab *symtab);
/* Reads the symbol table symtab from the file, specified by fp.
* This will include allocating the needed space. The function
* returns the number of bytes read. The symtab is in the closed
* state afterwards, so no strings can be added to it.
*/
-extern void pr_symtab(FILE *fp,int indent,const char *title,t_symtab *symtab);
+void pr_symtab(FILE *fp,int indent,const char *title,t_symtab *symtab);
/* This routine prints out a (human) readable representation of
* the symbol table symtab to the file fp. Ident specifies the
* number of spaces the text should be indented. Title is used
#ifndef _sysstuff_h
#define _sysstuff_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#ifdef __cplusplus
extern "C" {
#ifndef _tgroup_h
#define _tgroup_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#include "network.h"
extern "C" {
#endif
-extern void init_ekindata(FILE *log,gmx_mtop_t *mtop,t_grpopts *opts,
+void init_ekindata(FILE *log,gmx_mtop_t *mtop,t_grpopts *opts,
gmx_ekindata_t *ekind);
/* Allocate memory and set the grpnr array. */
-extern void done_ekindata(gmx_ekindata_t *ekind);
+void done_ekindata(gmx_ekindata_t *ekind);
/* Free the memory */
-extern void accumulate_u(t_commrec *cr,t_grpopts *opts,
+void accumulate_u(t_commrec *cr,t_grpopts *opts,
gmx_ekindata_t *ekind);
/*extern void accumulate_ekin(t_commrec *cr,t_grpopts *opts,t_groups *grps);*/
* and sum them up. Return them in grps.
*/
-extern real sum_ekin(t_grpopts *opts,gmx_ekindata_t *ekind, real *dekindlambda,
+real sum_ekin(t_grpopts *opts,gmx_ekindata_t *ekind, real *dekindlambda,
bool bEkinFullStep,bool bSaveEkinOld, bool bScaleEkin);
/* Sum the group ekins into total ekin and calc temp per group,
* return total temperature.
*/
-extern void update_ekindata(int start,int homenr,gmx_ekindata_t *ekind,
+void update_ekindata(int start,int homenr,gmx_ekindata_t *ekind,
t_grpopts *opts,rvec v[],t_mdatoms *md,real lambda);
/* Do the update of group velocities (if bNEMD) and
* (partial) group ekin.
#include <stdio.h>
-
-
#ifdef __cplusplus
extern "C"
{
#endif
-
/* first check for gcc/icc platforms. icc on linux+mac will take this path,
too */
#if ( (defined(__GNUC__) || defined(__PATHSCALE__)) && (!defined(__xlc__)) )
*
* For now, we just disable the inline keyword if we're compiling C code:
*/
-#ifndef __cplusplus
+#if 0
+#if (!defined(__cplusplus)) && (!defined(inline))
#define inline_defined_in_atomic 1
#define inline
#endif
+#endif
#define tMPI_Atomic_memory_barrier() { __asm__ __volatile__("\t eieio\n"\
#define tMPI_Atomic_ptr_set(a,i) (((a)->value) = (void*)(i))
-static inline int tMPI_Atomic_add_return(tMPI_Atomic_t * a,
+static int tMPI_Atomic_add_return(tMPI_Atomic_t * a,
int i)
{
int t;
-static inline int tMPI_Atomic_fetch_add(tMPI_Atomic_t * a,
+static int tMPI_Atomic_fetch_add(tMPI_Atomic_t * a,
int i)
{
int t;
}
-static inline int tMPI_Atomic_cas(tMPI_Atomic_t * a,
+static int tMPI_Atomic_cas(tMPI_Atomic_t * a,
int oldval,
int newval)
{
return prev;
}
-static inline void* tMPI_Atomic_ptr_cas(tMPI_Atomic_ptr_t * a,
+static void* tMPI_Atomic_ptr_cas(tMPI_Atomic_ptr_t * a,
void* oldval,
void* newval)
{
}
-static inline void tMPI_Spinlock_init(tMPI_Spinlock_t *x)
+static void tMPI_Spinlock_init(tMPI_Spinlock_t *x)
{
x->lock = 0;
}
-static inline void tMPI_Spinlock_lock(tMPI_Spinlock_t * x)
+static void tMPI_Spinlock_lock(tMPI_Spinlock_t * x)
{
unsigned int tmp;
}
-static inline int tMPI_Spinlock_trylock(tMPI_Spinlock_t * x)
+static int tMPI_Spinlock_trylock(tMPI_Spinlock_t * x)
{
unsigned int old, t;
unsigned int mask = 1;
}
-static inline void tMPI_Spinlock_unlock(tMPI_Spinlock_t * x)
+static void tMPI_Spinlock_unlock(tMPI_Spinlock_t * x)
{
__asm__ __volatile__("\t eieio \n");
x->lock = 0;
}
-static inline int tMPI_Spinlock_islocked(const tMPI_Spinlock_t * x)
+static int tMPI_Spinlock_islocked(const tMPI_Spinlock_t * x)
{
return ( x->lock != 0);
}
-static inline void tMPI_Spinlock_wait(tMPI_Spinlock_t * x)
+static void tMPI_Spinlock_wait(tMPI_Spinlock_t * x)
{
do
#ifndef _topsort_h
#define _topsort_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "typedefs.h"
/* UTILITIES */
-extern int name2index(char *str, char ***typenames, int ntypes);
+int name2index(char *str, char ***typenames, int ntypes);
-extern void pr_alloc (int extra, t_params *pr);
+void pr_alloc (int extra, t_params *pr);
-extern void set_p_string(t_param *p,const char *s);
+void set_p_string(t_param *p,const char *s);
-extern void cp_param(t_param *dest,t_param *src);
+void cp_param(t_param *dest,t_param *src);
-extern void add_param_to_list(t_params *list, t_param *b);
+void add_param_to_list(t_params *list, t_param *b);
/* INITIATE */
-extern void init_plist(t_params plist[]);
+void init_plist(t_params plist[]);
-extern void init_molinfo(t_molinfo *mol);
+void init_molinfo(t_molinfo *mol);
-extern void init_top (t_topology *top);
+void init_top (t_topology *top);
-extern void done_top(t_topology *top);
+void done_top(t_topology *top);
/* FREE */
-extern void done_block(t_block *block);
+void done_block(t_block *block);
-extern void done_top(t_topology *top);
+void done_top(t_topology *top);
-extern void done_atom (t_atoms *at);
+void done_atom (t_atoms *at);
-extern void done_mi(t_molinfo *mi);
+void done_mi(t_molinfo *mi);
/* PRINTING */
-extern void print_blocka(FILE *out,const char *szName,const char *szIndex,
+void print_blocka(FILE *out,const char *szName,const char *szIndex,
const char *szA,t_blocka *block);
-extern void print_atoms(FILE *out,gpp_atomtype_t atype,t_atoms *at,int *cgnr,
+void print_atoms(FILE *out,gpp_atomtype_t atype,t_atoms *at,int *cgnr,
bool bRTPresname);
-extern void print_bondeds(FILE *out,int natoms,directive d,
+void print_bondeds(FILE *out,int natoms,directive d,
int ftype,int fsubtype,t_params plist[]);
-extern void print_excl(FILE *out, int natoms, t_excls excls[]);
+void print_excl(FILE *out, int natoms, t_excls excls[]);
#ifdef __cplusplus
}
#ifndef _tpxio_h
#define _tpxio_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
/**************************************************************
*
* but double and single precision can be read by either.
*/
-extern t_fileio *open_tpx(const char *fn, const char *mode);
+t_fileio *open_tpx(const char *fn, const char *mode);
/* Return an file pointer corresponding to the file you have just opened */
-extern void close_tpx(t_fileio *fio);
+void close_tpx(t_fileio *fio);
/* Close the file corresponding to fio */
-extern void read_tpxheader(const char *fn, t_tpxheader *tpx, bool TopOnlyOK,
+void read_tpxheader(const char *fn, t_tpxheader *tpx, bool TopOnlyOK,
int *version, int *generation);
/* Read the header from a tpx file and then close it again.
* By setting TopOnlyOK to true, it is possible to read future
* are returned in the two last arguments.
*/
-extern void write_tpx_state(const char *fn,
+void write_tpx_state(const char *fn,
t_inputrec *ir,t_state *state,gmx_mtop_t *mtop);
/* Write a file, and close it again.
* If fn == NULL, an efTPA file will be written to stdout (which
* will not be closed afterwards)
*/
-extern void read_tpx_state(const char *fn,
+void read_tpx_state(const char *fn,
t_inputrec *ir,t_state *state,rvec *f,
gmx_mtop_t *mtop);
-extern int read_tpx(const char *fn,
+int read_tpx(const char *fn,
t_inputrec *ir,matrix box,int *natoms,
rvec *x,rvec *v,rvec *f,gmx_mtop_t *mtop);
/* Read a file, and close it again.
* Returns ir->ePBC, if it could be read from the file.
*/
-extern int read_tpx_top(const char *fn,
+int read_tpx_top(const char *fn,
t_inputrec *ir, matrix box,int *natoms,
rvec *x,rvec *v,rvec *f,t_topology *top);
/* As read_tpx, but for the old t_topology struct */
-extern bool fn2bTPX(const char *file);
+bool fn2bTPX(const char *file);
/* return if *file is one of the TPX file types */
-extern bool read_tps_conf(const char *infile,char *title,t_topology *top,
+bool read_tps_conf(const char *infile,char *title,t_topology *top,
int *ePBC, rvec **x,rvec **v,matrix box,bool bMass);
/* Read title, top.atoms, x, v (if not NULL) and box from an STX file,
* memory for atoms, x and v will be allocated.
/*@{*/
/** Allocates and initializes data structure for trajectory analysis. */
-extern int
+int
gmx_ana_traj_create(gmx_ana_traj_t **data, unsigned long flags);
/** Frees the memory allocated for trajectory analysis data. */
-extern void
+void
gmx_ana_traj_free(gmx_ana_traj_t *d);
/** Sets additional flags after gmx_ana_traj_create() has been called. */
-extern int
+int
gmx_ana_add_flags(gmx_ana_traj_t *d, unsigned long flags);
/** Sets the number of reference groups required. */
-extern int
+int
gmx_ana_set_nrefgrps(gmx_ana_traj_t *d, int nrefgrps);
/** Sets the number of analysis groups required. */
-extern int
+int
gmx_ana_set_nanagrps(gmx_ana_traj_t *d, int nanagrps);
/** Sets whether PBC are used. */
-extern int
+int
gmx_ana_set_pbc(gmx_ana_traj_t *d, bool bPBC);
/** Sets whether molecules are made whole. */
-extern int
+int
gmx_ana_set_rmpbc(gmx_ana_traj_t *d, bool bRmPBC);
/** Sets flags that determine what to read from the trajectory. */
-extern int
+int
gmx_ana_set_frflags(gmx_ana_traj_t *d, int frflags);
/** Parses command-line arguments and performs some initialization. */
-extern int
+int
parse_trjana_args(gmx_ana_traj_t *d, int *argc, char *argv[],
unsigned long pca_flags, int nfile, t_filenm fnm[],
int npargs, t_pargs *pa,
int nbugs, const char **bugs,
output_env_t *oenv);
/** Initializes selection information. */
-extern int
+int
gmx_ana_init_selections(gmx_ana_traj_t *d);
/** Initializes calculation of covered fractions for selections. */
-extern int
+int
gmx_ana_init_coverfrac(gmx_ana_traj_t *d, e_coverfrac_t type);
/** Returns whether PBC should be used. */
-extern bool
+bool
gmx_ana_has_pbc(gmx_ana_traj_t *d);
/** Gets the topology information. */
-extern int
+int
gmx_ana_get_topology(gmx_ana_traj_t *d, bool bReq, t_topology **top, bool *bTop);
/** Gets the configuration from the topology. */
-extern int
+int
gmx_ana_get_topconf(gmx_ana_traj_t *d, rvec **x, matrix box, int *ePBC);
/** Gets the first frame to be analyzed. */
-extern int
+int
gmx_ana_get_first_frame(gmx_ana_traj_t *d, t_trxframe **fr);
/** Gets the total number of selections provided by the user. */
-extern int
+int
gmx_ana_get_ngrps(gmx_ana_traj_t *d, int *ngrps);
/** Gets the number of analysis groups provided by the user. */
-extern int
+int
gmx_ana_get_nanagrps(gmx_ana_traj_t *d, int *nanagrps);
/** Gets the selection object for a reference selection. */
-extern int
+int
gmx_ana_get_refsel(gmx_ana_traj_t *d, int i, gmx_ana_selection_t **sel);
/** Gets the selection object for a reference selection. */
-extern int
+int
gmx_ana_get_anagrps(gmx_ana_traj_t *d, gmx_ana_selection_t ***sel);
/** Gets an array of names for the selections. */
-extern int
+int
gmx_ana_get_grpnames(gmx_ana_traj_t *d, char ***grpnames);
/** Gets the selection collection object that contains all the selections. */
-extern int
+int
gmx_ana_get_selcollection(gmx_ana_traj_t *d, gmx_ana_selcollection_t **sc);
/** Prints the selection strings into an XVGR file as comments. */
-extern int
+int
xvgr_selections(FILE *out, gmx_ana_traj_t *d);
/*@}*/
int nr, gmx_ana_selection_t *sel[], void *data);
/** Loops through all frames in the trajectory. */
-extern int
+int
gmx_ana_do(gmx_ana_traj_t *d, int flags, gmx_analysisfunc analyze, void *data);
/** Gets the total number of frames analyzed. */
-extern int
+int
gmx_ana_get_nframes(gmx_ana_traj_t *d, int *nframes);
/*@}*/
#ifndef _trnio_h
#define _trnio_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
/**************************************************************
*
* These routines handle trj (trajectory) I/O, they read and
real lambda; /* Current value of lambda */
} t_trnheader;
-extern t_fileio *open_trn(const char *fn,const char *mode);
+t_fileio *open_trn(const char *fn,const char *mode);
/* Open a trj / trr file */
-extern void close_trn(t_fileio *fio);
+void close_trn(t_fileio *fio);
/* Close it */
-extern bool fread_trnheader(t_fileio *fio,t_trnheader *trn,bool *bOK);
+bool fread_trnheader(t_fileio *fio,t_trnheader *trn,bool *bOK);
/* Read the header of a trn file. Return FALSE if there is no frame.
* bOK will be FALSE when the header is incomplete.
*/
-extern void read_trnheader(const char *fn,t_trnheader *header);
+void read_trnheader(const char *fn,t_trnheader *header);
/* Read the header of a trn file from fn, and close the file afterwards.
*/
-extern void pr_trnheader(FILE *fp,int indent,char *title,t_trnheader *sh);
+void pr_trnheader(FILE *fp,int indent,char *title,t_trnheader *sh);
/* Print the header of a trn file to fp */
-extern bool is_trn(FILE *fp);
+bool is_trn(FILE *fp);
/* Return true when the file is a trn file. File will be rewound
* afterwards.
*/
-extern void fwrite_trn(t_fileio *fio,int step,real t,real lambda,
+void fwrite_trn(t_fileio *fio,int step,real t,real lambda,
rvec *box,int natoms,rvec *x,rvec *v,rvec *f);
/* Write a trn frame to file fp, box, x, v, f may be NULL */
-extern bool fread_htrn(t_fileio *fio,t_trnheader *sh,
+bool fread_htrn(t_fileio *fio,t_trnheader *sh,
rvec *box,rvec *x,rvec *v,rvec *f);
/* Extern read a frame except the header (that should be pre-read,
* using routine read_trnheader, see above) from a trn file.
* Return FALSE on error
*/
-extern bool fread_trn(t_fileio *fio,int *step,real *t,real *lambda,
+bool fread_trn(t_fileio *fio,int *step,real *t,real *lambda,
rvec *box,int *natoms,rvec *x,rvec *v,rvec *f);
/* Read a trn frame, including the header from fp. box, x, v, f may
* be NULL, in which case the data will be skipped over.
* return FALSE on error
*/
-extern void write_trn(const char *fn,int step,real t,real lambda,
+void write_trn(const char *fn,int step,real t,real lambda,
rvec *box,int natoms,rvec *x,rvec *v,rvec *f);
/* Write a single trn frame to file fn, which is closed afterwards */
-extern void read_trn(const char *fn,int *step,real *t,real *lambda,
+void read_trn(const char *fn,int *step,real *t,real *lambda,
rvec *box,int *natoms,rvec *x,rvec *v,rvec *f);
/* Read a single trn frame from file fn, which is closed afterwards
*/
#ifndef _txtdump_h
#define _txtdump_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include <stdio.h>
#include "typedefs.h"
#ifndef _typedefs_h
#define _typedefs_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#define STRLEN 4096
#define NOTSET -12345
/* This factor leads to 4 realloc calls to double the array size */
#define OVER_ALLOC_FAC 1.19
-extern void set_over_alloc_dd(bool set);
+void set_over_alloc_dd(bool set);
/* Turns over allocation for variable size atoms/cg/top arrays on or off,
* default is off.
*/
-extern int over_alloc_dd(int n);
+int over_alloc_dd(int n);
/* Returns n when domain decomposition over allocation is off.
* Returns OVER_ALLOC_FAC*n + 100 when over allocation in on.
* This is to avoid frequent reallocation
/* Over allocation for large data types: complex structs */
#define over_alloc_large(n) (OVER_ALLOC_FAC*(n) + 1000)
-extern int gmx_large_int_to_int(gmx_large_int_t step,const char *warn);
+int gmx_large_int_to_int(gmx_large_int_t step,const char *warn);
/* Convert a gmx_large_int_t value to int.
* If warn!=NULL a warning message will be written
* to stderr when step does not fit in an int,
#define STEPSTRSIZE 22
-extern char *gmx_step_str(gmx_large_int_t i,char *buf);
+char *gmx_step_str(gmx_large_int_t i,char *buf);
/* Prints a gmx_large_int_t value in buf and returns the pointer to buf.
* buf should be large enough to contain i: STEPSTRSIZE (22) chars.
* When multiple gmx_large_int_t values are printed in the same printf call,
* There is one atom per index entry
*/
-extern void init_t_atoms(t_atoms *atoms, int natoms, bool bPdbinfo);
+void init_t_atoms(t_atoms *atoms, int natoms, bool bPdbinfo);
/* allocate memory for the arrays, set nr to natoms and nres to 0
* set pdbinfo to NULL or allocate memory for it */
-extern t_atoms *copy_t_atoms(t_atoms *src);
+t_atoms *copy_t_atoms(t_atoms *src);
/* copy an atoms struct from src to a new one */
-extern void add_t_atoms(t_atoms *atoms,int natom_extra,int nres_extra);
+void add_t_atoms(t_atoms *atoms,int natom_extra,int nres_extra);
/* allocate extra space for more atoms and or residues */
-extern void t_atoms_set_resinfo(t_atoms *atoms,int atom_ind,t_symtab *symtab,
+void t_atoms_set_resinfo(t_atoms *atoms,int atom_ind,t_symtab *symtab,
const char *resname,int resnr,unsigned char ic,
int chainnum, char chainid);
/* Set the residue name, number, insertion code and chain identifier
#ifndef _atoms_h
#define _atoms_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "simple.h"
#ifndef _block_h
#define _block_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "idef.h"
#ifndef _commrec_h
#define _commrec_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifdef GMX_LIB_MPI
#include <mpi.h>
#else
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#ifndef _constr_h
#define _constr_h
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "simple.h"
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifdef __cplusplus
extern "C" {
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "commrec.h"
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#ifdef __cplusplus
extern "C" {
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "ns.h"
#include "genborn.h"
* Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#ifdef __cplusplus
extern "C" {
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "idef.h"
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+
#include "simple.h"
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+
#ifndef _idef_h
#define _idef_h
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+
#ifndef _ifunc_h
#define _ifunc_h
#define _inputrec_h_
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
#include "simple.h"
#include "../sysstuff.h"
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+
/* not really neccesary, right now: */
#ifdef __cplusplus
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#ifdef __cplusplus
extern "C" {
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#ifndef _mdatom_h
#define _mdatom_h
#ifndef _nblist_h
#define _nblist_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _types_nrnb_h
#define _types_nrnb_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#ifdef __cplusplus
extern "C" {
* Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "nsgrid.h"
#include "nblist.h"
#ifndef _nsgrid_h
#define _nsgrid_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "simple.h"
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifdef __cplusplus
extern "C" {
#ifndef _matrix_h
#define _matrix_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "simple.h"
* Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "simple.h"
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+
#ifndef _shellfc_h
#define _shellfc_h
#ifndef _simple_h
#define _simple_h
+/* Dont remove this instance of HAVE_CONFIG_H!!!
+ *
+ * We dont _require_ config.h here, but IF one is
+ * available it might contain valuable information about simple types
+ * that helps us automate things better and avoid bailing out.
+ *
+ * Note that this does not have to be the gromacs config.h - several
+ * package setups define these simple types.
+ */
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
+/* Information about integer data type sizes */
+#include <limits.h>
+
#ifdef __cplusplus
extern "C" {
#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef TRUE
-#define TRUE 1
+#if 0
+}
#endif
-#define BOOL_NR 2
-#define XX 0 /* Defines for indexing in */
-#define YY 1 /* vectors */
-#define ZZ 2
+
+#define XX 0 /* Defines for indexing in */
+#define YY 1 /* vectors */
+#define ZZ 2
#define DIM 3 /* Dimension of vectors */
#define XXXX 0 /* defines to index matrices */
#define XXYY 1
#define ZZXX 6
#define ZZYY 7
#define ZZZZ 8
-#ifndef HAVE_BOOL
-#define bool int
- /* typedef int bool; */
+
+ /* Attempt to define a boolean type, unless one already is defined,
+ * and do it without relying completely on config.h.
+ * First, if we are using c++ bool must be present, so don't touch it.
+ * Second, if HAVE_BOOL is defined, we trust that.
+ * Otherwise, define it to an int.
+ */
+#if !(defined __cplusplus) && !(defined HAVE_BOOL)
+# define bool int
#endif
+
+#ifndef FALSE
+# define FALSE 0
+#endif
+#ifndef TRUE
+# define TRUE 1
+#endif
+#define BOOL_NR 2
typedef int atom_id; /* To indicate an atoms id */
/* Check whether we already have a real type! */
#ifdef GMX_DOUBLE
+
#ifndef HAVE_REAL
typedef double real;
#define HAVE_REAL
#endif
+
#define GMX_MPI_REAL MPI_DOUBLE
#define GMX_REAL_EPS GMX_DOUBLE_EPS
#define GMX_REAL_MIN GMX_DOUBLE_MIN
#define GMX_REAL_MAX GMX_DOUBLE_MAX
#define gmx_real_fullprecision_pfmt "%21.14e"
#else
+
#ifndef HAVE_REAL
typedef float real;
#define HAVE_REAL
#endif
+
#define GMX_MPI_REAL MPI_FLOAT
#define GMX_REAL_EPS GMX_FLOAT_EPS
#define GMX_REAL_MIN GMX_FLOAT_MIN
#define gmx_real_fullprecision_pfmt "%14.7e"
#endif
-#ifndef VECTORIZATION_BUFLENGTH
-#define VECTORIZATION_BUFLENGTH 1000
- /* The total memory size of the vectorization buffers will
- * be 5*sizeof(real)*VECTORIZATION_BUFLENGTH
- */
-#endif
typedef real rvec[DIM];
typedef double dvec[DIM];
typedef int imatrix[DIM][DIM];
+
/* For the step count type gmx_large_int_t we aim for 8 bytes (64bit),
* but we might only be able to get 4 bytes (32bit).
*
+ * We first try to find a type without reyling on any SIZEOF_XXX defines.
+ *
* Avoid using "long int" if we can. This type is really dangerous,
* since the width frequently depends on compiler options, and they
* might not be set correctly when (buggy) Cmake is detecting things.
* Instead, start by looking for "long long", and just go down if we
* have to (rarely on new systems). /EL 20100810
*/
-#if (defined SIZEOF_LONG_LONG_INT && SIZEOF_LONG_LONG_INT==8)
+#if ( (defined LLONG_MAX && LLONG_MAX==9223372036854775807LL) || (defined SIZEOF_LONG_LONG_INT && SIZEOF_LONG_LONG_INT==8) )
+/* Long long int is 64 bit */
typedef long long int gmx_large_int_t;
#define gmx_large_int_fmt "lld"
#define gmx_large_int_pfmt "%lld"
-#define SIZEOF_LARGE_INT SIZEOF_LONG_LONG_INT
-/* LLONG_MAX is not defined by the C-standard, so check for it */
-#ifdef LLONG_MAX
-#define LARGE_INT_MAX LLONG_MAX
-#else
-#define LARGE_INT_MAX 9223372036854775807LL
-#endif
+#define SIZEOF_GMX_LARGE_INT 8
+#define GMX_LARGE_INT_MAX 9223372036854775807LL
-#elif (defined SIZEOF_LONG_INT && SIZEOF_LONG_INT==8)
+#elif ( (defined LONG_MAX && LONG_MAX==9223372036854775807L) || (defined SIZEOF_LONG_INT && SIZEOF_LONG_INT==8) )
+/* Long int is 64 bit */
typedef long int gmx_large_int_t;
#define gmx_large_int_fmt "ld"
#define gmx_large_int_pfmt "%ld"
-#define SIZEOF_LARGE_INT SIZEOF_LONG_INT
-#define LARGE_INT_MAX LONG_MAX
+#define SIZEOF_GMX_LARGE_INT 8
+#define GMX_LARGE_INT_MAX 9223372036854775807LL
-#else
+#elif ( (defined INT_MAX && INT_MAX==9223372036854775807L) || (defined SIZEOF_INT && SIZEOF_INT==8) )
+/* int is 64 bit */
+typedef int gmx_large_int_t;
+#define gmx_large_int_fmt "d"
+#define gmx_large_int_pfmt "%d"
+#define SIZEOF_GMX_LARGE_INT 8
+#define GMX_LARGE_INT_MAX 9223372036854775807LL
+
+#elif ( (defined INT_MAX && INT_MAX==2147483647) || (defined SIZEOF_INT && SIZEOF_INT==4) )
+
+/* None of the above worked, try a 32 bit integer */
typedef int gmx_large_int_t;
#define gmx_large_int_fmt "d"
#define gmx_large_int_pfmt "%d"
-#define SIZEOF_LARGE_INT SIZEOF_INT
-#define LARGE_INT_MAX INT_MAX
+#define SIZEOF_GMX_LARGE_INT 4
+#define GMX_LARGE_INT_MAX 2147483647
+
+#else
+
+#error "Cannot find any 32 or 64 bit integer data type. Please extend the gromacs simple.h file!"
#endif
+
+
+/* Try to define suitable inline keyword for gmx_inline.
+ * Set it to empty if we cannot find one (and dont complain to the user)
+ */
+#ifndef __cplusplus
+
+#ifdef __GNUC__
+ /* GCC */
+# define gmx_inline __inline__
+#elif (defined(__INTEL_COMPILER) || defined(__ECC)) && defined(__ia64__)
+ /* ICC */
+# define gmx_inline __inline__
+#elif defined(__PATHSCALE__)
+ /* Pathscale */
+# define gmx_inline __inline__
+#elif defined(__PGIC__)
+ /* Portland */
+# define gmx_inline __inline
+#elif defined _MSC_VER
+ /* MSVC */
+# define gmx_inline __inline
+#elif defined(__xlC__)
+ /* IBM */
+# define gmx_inline __inline
+#else
+# define gmx_inline
+#endif
+
+#endif
+
+
+/* Restrict keywords. Note that this has to be done for C++ too. */
+#ifdef __GNUC__
+/* GCC */
+# define gmx_restrict __restrict__
+#elif (defined(__INTEL_COMPILER) || defined(__ECC)) && defined(__ia64__)
+/* ICC */
+# define gmx_restrict __restrict__
+#elif defined(__PATHSCALE__)
+/* Pathscale */
+# define gmx_restrict __restrict
+#elif defined(__PGIC__)
+/* Portland */
+# define gmx_restrict __restrict
+#elif defined _MSC_VER
+/* MSVC */
+# define gmx_restrict __restrict
+#elif defined(__xlC__)
+/* IBM */
+# define gmx_restrict __restrict
+#else
+# define gmx_restrict
+#endif
+
+
#ifdef __cplusplus
}
#ifndef _state_h_
#define _state_h_
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "simple.h"
#ifndef _types_symtab_h
#define _types_symtab_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#ifdef __cplusplus
extern "C" {
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "atoms.h"
#include "idef.h"
* And Hey:
* GRoups of Organic Molecules in ACtion for Science
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
/* The bools indicate whether a field was read from the trajectory.
* Do not try to use a pointer when its bool is FALSE, as memory might
#ifndef _update_h
#define _update_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
#include "typedefs.h"
#include "mshift.h"
#include "tgroup.h"
typedef struct gmx_update *gmx_update_t;
/* Initialize the stochastic dynamics struct */
-extern gmx_update_t init_update(FILE *fplog,t_inputrec *ir);
+gmx_update_t init_update(FILE *fplog,t_inputrec *ir);
/* Store the random state from sd in state */
-extern void get_stochd_state(gmx_update_t sd,t_state *state);
+void get_stochd_state(gmx_update_t sd,t_state *state);
/* Set the random in sd from state */
-extern void set_stochd_state(gmx_update_t sd,t_state *state);
+void set_stochd_state(gmx_update_t sd,t_state *state);
/* Store the box at step step
* as a reference state for simulations with box deformation.
*/
-extern void set_deform_reference_box(gmx_update_t upd,
+void set_deform_reference_box(gmx_update_t upd,
gmx_large_int_t step,matrix box);
-extern void update_tcouple(FILE *fplog,
+void update_tcouple(FILE *fplog,
gmx_large_int_t step,
t_inputrec *inputrec,
t_state *state,
t_mdatoms *md
);
-extern void update_pcouple(FILE *fplog,
+void update_pcouple(FILE *fplog,
gmx_large_int_t step,
t_inputrec *inputrec,
t_state *state,
gmx_update_t upd,
bool bInitStep);
-extern void update_coords(FILE *fplog,
+void update_coords(FILE *fplog,
gmx_large_int_t step,
t_inputrec *inputrec, /* input record and box stuff */
t_mdatoms *md,
/* Return TRUE if OK, FALSE in case of Shake Error */
-extern void update_constraints(FILE *fplog,
+void update_constraints(FILE *fplog,
gmx_large_int_t step,
real *dvdlambda, /* FEP stuff */
t_inputrec *inputrec, /* input record and box stuff */
/* Return TRUE if OK, FALSE in case of Shake Error */
-extern void update_box(FILE *fplog,
+void update_box(FILE *fplog,
gmx_large_int_t step,
t_inputrec *inputrec, /* input record and box stuff */
t_mdatoms *md,
bool bFirstHalf);
/* Return TRUE if OK, FALSE in case of Shake Error */
-extern void calc_ke_part(t_state *state,t_grpopts *opts,t_mdatoms *md,
+void calc_ke_part(t_state *state,t_grpopts *opts,t_mdatoms *md,
gmx_ekindata_t *ekind,t_nrnb *nrnb,bool bEkinAveVel, bool bSaveOld);
/*
* Compute the partial kinetic energy for home particles;
*
*/
-extern void
+void
init_ekinstate(ekinstate_t *ekinstate,const t_inputrec *ir);
-extern void
+void
update_ekinstate(ekinstate_t *ekinstate,gmx_ekindata_t *ekind);
-extern void
+void
restore_ekinstate_from_state(t_commrec *cr,
gmx_ekindata_t *ekind,ekinstate_t *ekinstate);
-extern void berendsen_tcoupl(t_inputrec *ir,gmx_ekindata_t *ekind,real dt);
+void berendsen_tcoupl(t_inputrec *ir,gmx_ekindata_t *ekind,real dt);
-extern void nosehoover_tcoupl(t_grpopts *opts,gmx_ekindata_t *ekind,real dt,
+void nosehoover_tcoupl(t_grpopts *opts,gmx_ekindata_t *ekind,real dt,
double xi[],double vxi[],t_extmass *MassQ);
-extern t_state *init_bufstate(const t_state *template_state);
+t_state *init_bufstate(const t_state *template_state);
-extern void destroy_bufstate(t_state *state);
+void destroy_bufstate(t_state *state);
-extern void trotter_update(t_inputrec *ir, gmx_large_int_t step, gmx_ekindata_t *ekind,
+void trotter_update(t_inputrec *ir, gmx_large_int_t step, gmx_ekindata_t *ekind,
gmx_enerdata_t *enerd, t_state *state, tensor vir, t_mdatoms *md,
t_extmass *MassQ, int **trotter_seqlist, int trotter_seqno);
-extern int **init_npt_vars(t_inputrec *ir, t_state *state, t_extmass *Mass, bool bTrotter);
+int **init_npt_vars(t_inputrec *ir, t_state *state, t_extmass *Mass, bool bTrotter);
-extern real NPT_energy(t_inputrec *ir, t_state *state, t_extmass *MassQ);
+real NPT_energy(t_inputrec *ir, t_state *state, t_extmass *MassQ);
/* computes all the pressure/tempertature control energy terms to get a conserved energy */
-extern void NBaroT_trotter(t_grpopts *opts, real dt,
+void NBaroT_trotter(t_grpopts *opts, real dt,
double xi[],double vxi[],real *veta, t_extmass *MassQ);
-extern void vrescale_tcoupl(t_inputrec *ir,gmx_ekindata_t *ekind,real dt,
+void vrescale_tcoupl(t_inputrec *ir,gmx_ekindata_t *ekind,real dt,
double therm_integral[],
gmx_rng_t rng);
/* Compute temperature scaling. For V-rescale it is done in update. */
-extern real vrescale_energy(t_grpopts *opts,double therm_integral[]);
+real vrescale_energy(t_grpopts *opts,double therm_integral[]);
/* Returns the V-rescale contribution to the conserved energy */
-extern void rescale_velocities(gmx_ekindata_t *ekind,t_mdatoms *mdatoms,
+void rescale_velocities(gmx_ekindata_t *ekind,t_mdatoms *mdatoms,
int start,int end,rvec v[]);
/* Rescale the velocities with the scaling factor in ekind */
-extern void update_annealing_target_temp(t_grpopts *opts,real t);
+void update_annealing_target_temp(t_grpopts *opts,real t);
/* Set reference temp for simulated annealing at time t*/
-extern real calc_temp(real ekin,real nrdf);
+real calc_temp(real ekin,real nrdf);
/* Calculate the temperature */
-extern real calc_pres(int ePBC,int nwall,matrix box,
+real calc_pres(int ePBC,int nwall,matrix box,
tensor ekin,tensor vir,tensor pres,real Elr);
/* Calculate the pressure tensor, returns the scalar pressure.
* The unit of pressure is bar, If Elr != 0
* a long range correction based on Ewald/PPPM is made (see c-code)
*/
-extern void parrinellorahman_pcoupl(FILE *fplog,gmx_large_int_t step,
+void parrinellorahman_pcoupl(FILE *fplog,gmx_large_int_t step,
t_inputrec *ir,real dt,tensor pres,
tensor box,tensor box_rel,tensor boxv,
tensor M,matrix mu,
bool bFirstStep);
-extern void berendsen_pcoupl(FILE *fplog,gmx_large_int_t step,
+void berendsen_pcoupl(FILE *fplog,gmx_large_int_t step,
t_inputrec *ir,real dt,tensor pres,matrix box,
matrix mu);
-extern void berendsen_pscale(t_inputrec *ir,matrix mu,
+void berendsen_pscale(t_inputrec *ir,matrix mu,
matrix box,matrix box_rel,
int start,int nr_atoms,
rvec x[],unsigned short cFREEZE[],
t_nrnb *nrnb);
-extern void correct_ekin(FILE *log,int start,int end,rvec v[],
+void correct_ekin(FILE *log,int start,int end,rvec v[],
rvec vcm,real mass[],real tmass,tensor ekin);
/* Correct ekin for vcm */
#ifndef _vcm_h
#define _vcm_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "sysstuff.h"
#include "typedefs.h"
t_vcm *init_vcm(FILE *fp,gmx_groups_t *groups,t_inputrec *ir);
/* Do a per group center of mass things */
-extern void calc_vcm_grp(FILE *fp,int start,int homenr,t_mdatoms *md,
+void calc_vcm_grp(FILE *fp,int start,int homenr,t_mdatoms *md,
rvec x[],rvec v[],t_vcm *vcm);
-extern void do_stopcm_grp(FILE *fp,int start,int homenr,
+void do_stopcm_grp(FILE *fp,int start,int homenr,
unsigned short *group_id,
rvec x[],rvec v[],t_vcm *vcm);
-extern void check_cm_grp(FILE *fp,t_vcm *vcm,t_inputrec *ir,real Temp_Max);
+void check_cm_grp(FILE *fp,t_vcm *vcm,t_inputrec *ir,real Temp_Max);
#ifdef __cplusplus
#ifndef _vec_h
#define _vec_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-/*
-#define gmx_inline inline
-#else
-#ifdef __GNUC__
-#define gmx_inline __inline
-#else
-#define inline
-#endif
-*/
-#endif
-
/*
collection of in-line ready operations:
return (x*x);
}
-static inline double dsqr(double x)
+static gmx_inline double dsqr(double x)
{
return (x*x);
}
Here, we compute it to 10th order, which might be overkill, 8th is probably enough,
but it's not very much more expensive. */
-static inline real series_sinhx(real x)
+static gmx_inline real series_sinhx(real x)
{
real x2 = x*x;
return (1 + (x2/6.0)*(1 + (x2/20.0)*(1 + (x2/42.0)*(1 + (x2/72.0)*(1 + (x2/110.0))))));
}
-extern void vecinvsqrt(real in[],real out[],int n);
+void vecinvsqrt(real in[],real out[],int n);
/* Perform out[i]=1.0/sqrt(in[i]) for n elements */
-extern void vecrecip(real in[],real out[],int n);
+void vecrecip(real in[],real out[],int n);
/* Perform out[i]=1.0/(in[i]) for n elements */
/* Note: If you need a fast version of vecinvsqrt
*/
-static inline void rvec_add(const rvec a,const rvec b,rvec c)
+static gmx_inline void rvec_add(const rvec a,const rvec b,rvec c)
{
real x,y,z;
c[ZZ]=z;
}
-static inline void dvec_add(const dvec a,const dvec b,dvec c)
+static gmx_inline void dvec_add(const dvec a,const dvec b,dvec c)
{
double x,y,z;
c[ZZ]=z;
}
-static inline void ivec_add(const ivec a,const ivec b,ivec c)
+static gmx_inline void ivec_add(const ivec a,const ivec b,ivec c)
{
int x,y,z;
c[ZZ]=z;
}
-static inline void rvec_inc(rvec a,const rvec b)
+static gmx_inline void rvec_inc(rvec a,const rvec b)
{
real x,y,z;
a[ZZ]=z;
}
-static inline void dvec_inc(dvec a,const dvec b)
+static gmx_inline void dvec_inc(dvec a,const dvec b)
{
double x,y,z;
a[ZZ]=z;
}
-static inline void rvec_sub(const rvec a,const rvec b,rvec c)
+static gmx_inline void rvec_sub(const rvec a,const rvec b,rvec c)
{
real x,y,z;
c[ZZ]=z;
}
-static inline void dvec_sub(const dvec a,const dvec b,dvec c)
+static gmx_inline void dvec_sub(const dvec a,const dvec b,dvec c)
{
double x,y,z;
c[ZZ]=z;
}
-static inline void rvec_dec(rvec a,const rvec b)
+static gmx_inline void rvec_dec(rvec a,const rvec b)
{
real x,y,z;
a[ZZ]=z;
}
-static inline void copy_rvec(const rvec a,rvec b)
+static gmx_inline void copy_rvec(const rvec a,rvec b)
{
b[XX]=a[XX];
b[YY]=a[YY];
b[ZZ]=a[ZZ];
}
-static inline void copy_rvecn(rvec *a,rvec *b,int startn, int endn)
+static gmx_inline void copy_rvecn(rvec *a,rvec *b,int startn, int endn)
{
int i;
for (i=startn;i<endn;i++) {
}
}
-static inline void copy_dvec(const dvec a,dvec b)
+static gmx_inline void copy_dvec(const dvec a,dvec b)
{
b[XX]=a[XX];
b[YY]=a[YY];
b[ZZ]=a[ZZ];
}
-static inline void copy_ivec(const ivec a,ivec b)
+static gmx_inline void copy_ivec(const ivec a,ivec b)
{
b[XX]=a[XX];
b[YY]=a[YY];
b[ZZ]=a[ZZ];
}
-static inline void ivec_sub(const ivec a,const ivec b,ivec c)
+static gmx_inline void ivec_sub(const ivec a,const ivec b,ivec c)
{
int x,y,z;
c[ZZ]=z;
}
-static inline void copy_mat(matrix a,matrix b)
+static gmx_inline void copy_mat(matrix a,matrix b)
{
copy_rvec(a[XX],b[XX]);
copy_rvec(a[YY],b[YY]);
copy_rvec(a[ZZ],b[ZZ]);
}
-static inline void svmul(real a,const rvec v1,rvec v2)
+static gmx_inline void svmul(real a,const rvec v1,rvec v2)
{
v2[XX]=a*v1[XX];
v2[YY]=a*v1[YY];
v2[ZZ]=a*v1[ZZ];
}
-static inline void dsvmul(double a,const dvec v1,dvec v2)
+static gmx_inline void dsvmul(double a,const dvec v1,dvec v2)
{
v2[XX]=a*v1[XX];
v2[YY]=a*v1[YY];
v2[ZZ]=a*v1[ZZ];
}
-static inline real distance2(const rvec v1,const rvec v2)
+static gmx_inline real distance2(const rvec v1,const rvec v2)
{
return sqr(v2[XX]-v1[XX]) + sqr(v2[YY]-v1[YY]) + sqr(v2[ZZ]-v1[ZZ]);
}
-static inline void clear_rvec(rvec a)
+static gmx_inline void clear_rvec(rvec a)
{
/* The ibm compiler has problems with inlining this
* when we use a const real variable
a[ZZ]=0.0;
}
-static inline void clear_dvec(dvec a)
+static gmx_inline void clear_dvec(dvec a)
{
/* The ibm compiler has problems with inlining this
* when we use a const real variable
a[ZZ]=0.0;
}
-static inline void clear_ivec(ivec a)
+static gmx_inline void clear_ivec(ivec a)
{
a[XX]=0;
a[YY]=0;
a[ZZ]=0;
}
-static inline void clear_rvecs(int n,rvec v[])
+static gmx_inline void clear_rvecs(int n,rvec v[])
{
/* memset(v[0],0,DIM*n*sizeof(v[0][0])); */
int i;
GMX_MPE_LOG(ev_clear_rvecs_finish);
}
-static inline void clear_mat(matrix a)
+static gmx_inline void clear_mat(matrix a)
{
/* memset(a[0],0,DIM*DIM*sizeof(a[0][0])); */
a[ZZ][XX]=a[ZZ][YY]=a[ZZ][ZZ]=nul;
}
-static inline real iprod(const rvec a,const rvec b)
+static gmx_inline real iprod(const rvec a,const rvec b)
{
return (a[XX]*b[XX]+a[YY]*b[YY]+a[ZZ]*b[ZZ]);
}
-static inline double diprod(const dvec a,const dvec b)
+static gmx_inline double diprod(const dvec a,const dvec b)
{
return (a[XX]*b[XX]+a[YY]*b[YY]+a[ZZ]*b[ZZ]);
}
-static inline int iiprod(const ivec a,const ivec b)
+static gmx_inline int iiprod(const ivec a,const ivec b)
{
return (a[XX]*b[XX]+a[YY]*b[YY]+a[ZZ]*b[ZZ]);
}
-static inline real norm2(const rvec a)
+static gmx_inline real norm2(const rvec a)
{
return a[XX]*a[XX]+a[YY]*a[YY]+a[ZZ]*a[ZZ];
}
-static inline double dnorm2(const dvec a)
+static gmx_inline double dnorm2(const dvec a)
{
return a[XX]*a[XX]+a[YY]*a[YY]+a[ZZ]*a[ZZ];
}
-static inline real norm(const rvec a)
+static gmx_inline real norm(const rvec a)
{
return (real)sqrt(a[XX]*a[XX]+a[YY]*a[YY]+a[ZZ]*a[ZZ]);
}
-static inline double dnorm(const dvec a)
+static gmx_inline double dnorm(const dvec a)
{
return sqrt(a[XX]*a[XX]+a[YY]*a[YY]+a[ZZ]*a[ZZ]);
}
* is very flat close to -1 and 1, which will lead to accuracy-loss.
* Instead, use the new gmx_angle() function directly.
*/
-static inline real
+static gmx_inline real
cos_angle(const rvec a,const rvec b)
{
/*
* is very flat close to -1 and 1, which will lead to accuracy-loss.
* Instead, use the new gmx_angle() function directly.
*/
-static inline real
+static gmx_inline real
cos_angle_no_table(const rvec a,const rvec b)
{
/* This version does not need the invsqrt lookup table */
}
-static inline void cprod(const rvec a,const rvec b,rvec c)
+static gmx_inline void cprod(const rvec a,const rvec b,rvec c)
{
c[XX]=a[YY]*b[ZZ]-a[ZZ]*b[YY];
c[YY]=a[ZZ]*b[XX]-a[XX]*b[ZZ];
c[ZZ]=a[XX]*b[YY]-a[YY]*b[XX];
}
-static inline void dcprod(const dvec a,const dvec b,dvec c)
+static gmx_inline void dcprod(const dvec a,const dvec b,dvec c)
{
c[XX]=a[YY]*b[ZZ]-a[ZZ]*b[YY];
c[YY]=a[ZZ]*b[XX]-a[XX]*b[ZZ];
* If you only need cos(theta), use the cos_angle() routines to save a few cycles.
* This routine is faster than it might appear, since atan2 is accelerated on many CPUs (e.g. x86).
*/
-static inline real
+static gmx_inline real
gmx_angle(const rvec a, const rvec b)
{
rvec w;
return atan2(wlen,s);
}
-static inline void mmul_ur0(matrix a,matrix b,matrix dest)
+static gmx_inline void mmul_ur0(matrix a,matrix b,matrix dest)
{
dest[XX][XX]=a[XX][XX]*b[XX][XX];
dest[XX][YY]=0.0;
dest[ZZ][ZZ]= a[ZZ][ZZ]*b[ZZ][ZZ];
}
-static inline void mmul(matrix a,matrix b,matrix dest)
+static gmx_inline void mmul(matrix a,matrix b,matrix dest)
{
dest[XX][XX]=a[XX][XX]*b[XX][XX]+a[XX][YY]*b[YY][XX]+a[XX][ZZ]*b[ZZ][XX];
dest[YY][XX]=a[YY][XX]*b[XX][XX]+a[YY][YY]*b[YY][XX]+a[YY][ZZ]*b[ZZ][XX];
dest[ZZ][ZZ]=a[ZZ][XX]*b[XX][ZZ]+a[ZZ][YY]*b[YY][ZZ]+a[ZZ][ZZ]*b[ZZ][ZZ];
}
-static inline void transpose(matrix src,matrix dest)
+static gmx_inline void transpose(matrix src,matrix dest)
{
dest[XX][XX]=src[XX][XX];
dest[YY][XX]=src[XX][YY];
dest[ZZ][ZZ]=src[ZZ][ZZ];
}
-static inline void tmmul(matrix a,matrix b,matrix dest)
+static gmx_inline void tmmul(matrix a,matrix b,matrix dest)
{
/* Computes dest=mmul(transpose(a),b,dest) - used in do_pr_pcoupl */
dest[XX][XX]=a[XX][XX]*b[XX][XX]+a[YY][XX]*b[YY][XX]+a[ZZ][XX]*b[ZZ][XX];
dest[ZZ][ZZ]=a[XX][ZZ]*b[XX][ZZ]+a[YY][ZZ]*b[YY][ZZ]+a[ZZ][ZZ]*b[ZZ][ZZ];
}
-static inline void mtmul(matrix a,matrix b,matrix dest)
+static gmx_inline void mtmul(matrix a,matrix b,matrix dest)
{
/* Computes dest=mmul(a,transpose(b),dest) - used in do_pr_pcoupl */
dest[XX][XX]=a[XX][XX]*b[XX][XX]+a[XX][YY]*b[XX][YY]+a[XX][ZZ]*b[XX][ZZ];
dest[ZZ][ZZ]=a[ZZ][XX]*b[ZZ][XX]+a[ZZ][YY]*b[ZZ][YY]+a[ZZ][ZZ]*b[ZZ][ZZ];
}
-static inline real det(matrix a)
+static gmx_inline real det(matrix a)
{
return ( a[XX][XX]*(a[YY][YY]*a[ZZ][ZZ]-a[ZZ][YY]*a[YY][ZZ])
-a[YY][XX]*(a[XX][YY]*a[ZZ][ZZ]-a[ZZ][YY]*a[XX][ZZ])
+a[ZZ][XX]*(a[XX][YY]*a[YY][ZZ]-a[YY][YY]*a[XX][ZZ]));
}
-static inline void m_add(matrix a,matrix b,matrix dest)
+static gmx_inline void m_add(matrix a,matrix b,matrix dest)
{
dest[XX][XX]=a[XX][XX]+b[XX][XX];
dest[XX][YY]=a[XX][YY]+b[XX][YY];
dest[ZZ][ZZ]=a[ZZ][ZZ]+b[ZZ][ZZ];
}
-static inline void m_sub(matrix a,matrix b,matrix dest)
+static gmx_inline void m_sub(matrix a,matrix b,matrix dest)
{
dest[XX][XX]=a[XX][XX]-b[XX][XX];
dest[XX][YY]=a[XX][YY]-b[XX][YY];
dest[ZZ][ZZ]=a[ZZ][ZZ]-b[ZZ][ZZ];
}
-static inline void msmul(matrix m1,real r1,matrix dest)
+static gmx_inline void msmul(matrix m1,real r1,matrix dest)
{
dest[XX][XX]=r1*m1[XX][XX];
dest[XX][YY]=r1*m1[XX][YY];
dest[ZZ][ZZ]=r1*m1[ZZ][ZZ];
}
-static inline void m_inv_ur0(matrix src,matrix dest)
+static gmx_inline void m_inv_ur0(matrix src,matrix dest)
{
double tmp = src[XX][XX]*src[YY][YY]*src[ZZ][ZZ];
if (fabs(tmp) <= 100*GMX_REAL_MIN)
dest[YY][ZZ] = 0.0;
}
-static inline void m_inv(matrix src,matrix dest)
+static gmx_inline void m_inv(matrix src,matrix dest)
{
const real smallreal = (real)1.0e-24;
const real largereal = (real)1.0e24;
dest[ZZ][ZZ]= c*(src[XX][XX]*src[YY][YY]-src[YY][XX]*src[XX][YY]);
}
-static inline void mvmul(matrix a,const rvec src,rvec dest)
+static gmx_inline void mvmul(matrix a,const rvec src,rvec dest)
{
dest[XX]=a[XX][XX]*src[XX]+a[XX][YY]*src[YY]+a[XX][ZZ]*src[ZZ];
dest[YY]=a[YY][XX]*src[XX]+a[YY][YY]*src[YY]+a[YY][ZZ]*src[ZZ];
dest[ZZ]=a[ZZ][XX]*src[XX]+a[ZZ][YY]*src[YY]+a[ZZ][ZZ]*src[ZZ];
}
-static inline void mvmul_ur0(matrix a,const rvec src,rvec dest)
+static gmx_inline void mvmul_ur0(matrix a,const rvec src,rvec dest)
{
dest[ZZ]=a[ZZ][XX]*src[XX]+a[ZZ][YY]*src[YY]+a[ZZ][ZZ]*src[ZZ];
dest[YY]=a[YY][XX]*src[XX]+a[YY][YY];
dest[XX]=a[XX][XX]*src[XX];
}
-static inline void tmvmul_ur0(matrix a,const rvec src,rvec dest)
+static gmx_inline void tmvmul_ur0(matrix a,const rvec src,rvec dest)
{
dest[XX]=a[XX][XX]*src[XX]+a[YY][XX]*src[YY]+a[ZZ][XX]*src[ZZ];
dest[YY]= a[YY][YY]*src[YY]+a[ZZ][YY]*src[ZZ];
dest[ZZ]= a[ZZ][ZZ]*src[ZZ];
}
-static inline void unitv(const rvec src,rvec dest)
+static gmx_inline void unitv(const rvec src,rvec dest)
{
real linv;
dest[ZZ]=linv*src[ZZ];
}
-static inline void unitv_no_table(const rvec src,rvec dest)
+static gmx_inline void unitv_no_table(const rvec src,rvec dest)
{
real linv;
lll[ZZ] = 2.0*M_PI/box[ZZ];
}
-static inline real trace(matrix m)
+static gmx_inline real trace(matrix m)
{
return (m[XX][XX]+m[YY][YY]+m[ZZ][ZZ]);
}
-static inline real _divide(real a,real b,const char *file,int line)
+static gmx_inline real _divide(real a,real b,const char *file,int line)
{
if (fabs(b) <= GMX_REAL_MIN)
gmx_fatal(FARGS,"Dividing by zero, file %s, line %d",file,line);
return a/b;
}
-static inline int _mod(int a,int b,char *file,int line)
+static gmx_inline int _mod(int a,int b,char *file,int line)
{
if(b==0)
gmx_fatal(FARGS,"Modulo zero, file %s, line %d",file,line);
#ifndef _viewit_h
#define _viewit_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
#endif
-extern void do_view(const output_env_t oenv,const char *fn, const char *opts);
+void do_view(const output_env_t oenv,const char *fn, const char *opts);
/* forks off appropriate command to view file.
* currently eps, xpm, xvg and pdb are supported
* defaults are provided, can be overriden with environment vars
*/
-extern void view_all(const output_env_t oenv,int nf, t_filenm fnm[]);
+void view_all(const output_env_t oenv,int nf, t_filenm fnm[]);
/* calls do_view for all viewable output files in fnm[] */
#ifdef __cplusplus
#ifndef _vsite_h
#define _vsite_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "typedefs.h"
t_comm_vsites *vsitecomm; /* The PD vsite communication struct */
} gmx_vsite_t;
-extern void construct_vsites(FILE *log,gmx_vsite_t *vsite,
+void construct_vsites(FILE *log,gmx_vsite_t *vsite,
rvec x[],t_nrnb *nrnb,
real dt,rvec v[],
t_iparams ip[],t_ilist ilist[],
* This function assumes that all molecules are whole.
*/
-extern void spread_vsite_f(FILE *log,gmx_vsite_t *vsite,
+void spread_vsite_f(FILE *log,gmx_vsite_t *vsite,
rvec x[],rvec f[],rvec *fshift,
t_nrnb *nrnb,t_idef *idef,
int ePBC,bool bMolPBC,t_graph *g,matrix box,
* If fshift!=NULL also update the shift forces.
*/
-extern gmx_vsite_t *init_vsite(gmx_mtop_t *mtop,t_commrec *cr);
+gmx_vsite_t *init_vsite(gmx_mtop_t *mtop,t_commrec *cr);
/* Initialize the virtual site struct,
* returns NULL when there are no virtual sites.
*/
-extern void set_vsite_top(gmx_vsite_t *vsite,gmx_localtop_t *top,t_mdatoms *md,
+void set_vsite_top(gmx_vsite_t *vsite,gmx_localtop_t *top,t_mdatoms *md,
t_commrec *cr);
/* Set some vsite data for runs without domain decomposition.
* Should be called once after init_vsite, before calling other routines.
#ifndef _warninp_h
#define _warninp_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "typedefs.h"
#ifdef __cplusplus
#ifndef _wgms_h
#define _wgms_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include <stdio.h>
#include "typedefs.h"
extern "C" {
#endif
-extern void write_gms(FILE *fp,int natoms,rvec x[],matrix box);
+void write_gms(FILE *fp,int natoms,rvec x[],matrix box);
/* Write a gromos-87 trajectory frame (10f8.3) + box size
* If box == NULL it is not written
*/
-extern void write_gms_ndx(FILE *fp,int isize,atom_id index[],
+void write_gms_ndx(FILE *fp,int isize,atom_id index[],
rvec x[],matrix box);
/* Write a gromos-87 trajectory frame (10f8.3) + box size for
* a subset of the atoms.
#ifndef _wman_h
#define _wman_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "readinp.h"
extern "C" {
#endif
-extern void write_java(FILE *out,const char *program,
+void write_java(FILE *out,const char *program,
int nldesc,const char **desc,
int nfile,t_filenm *fnm,
int npargs,t_pargs *pa,
int nbug,const char **bugs);
-extern void write_man(FILE *out,const char *mantp,const char *program,
+void write_man(FILE *out,const char *mantp,const char *program,
int nldesc,const char **desc,
int nfile,t_filenm *fnm,
int npargs,t_pargs *pa,
int nbug,const char **bugs,
bool bHidden);
-extern char *fileopt(unsigned long flag,char buf[],int maxsize);
+char *fileopt(unsigned long flag,char buf[],int maxsize);
/* Return a string describing the file type in flag.
* flag should the flag field of a filenm struct.
* You have to provide a buffer and buffer length in which
* a pointer to this buffer.
*/
-extern char *check_tex(const char *s);
+char *check_tex(const char *s);
-extern char *check_tty(const char *s);
+char *check_tty(const char *s);
/* FIXME: It should not be necessary to expose the struct */
struct t_linkdata;
-extern void
+void
print_tty_formatted(FILE *out, int nldesc, const char **desc, int indent,
struct t_linkdata *links, const char *program, bool bWiki);
#ifndef _writeps_h
#define _writeps_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include <stdio.h>
#include "typedefs.h"
extern const char *fontnm[efontNR];
-extern t_psdata ps_open(const char *fn,real x1,real y1,real x2,real y2);
+t_psdata ps_open(const char *fn,real x1,real y1,real x2,real y2);
-extern void ps_linewidth(t_psdata ps,int lw);
-extern void ps_color(t_psdata ps,real r,real g,real b);
-extern void ps_rgb(t_psdata ps,t_rgb *rgb);
+void ps_linewidth(t_psdata ps,int lw);
+void ps_color(t_psdata ps,real r,real g,real b);
+void ps_rgb(t_psdata ps,t_rgb *rgb);
-extern void ps_rgb_box(t_psdata ps,t_rgb *rgb);
-extern void ps_rgb_nbox(t_psdata ps,t_rgb *rgb,real n);
-extern void ps_init_rgb_box(t_psdata ps,real xbox, real ybox);
-extern void ps_init_rgb_nbox(t_psdata ps,real xbox, real ybox);
+void ps_rgb_box(t_psdata ps,t_rgb *rgb);
+void ps_rgb_nbox(t_psdata ps,t_rgb *rgb,real n);
+void ps_init_rgb_box(t_psdata ps,real xbox, real ybox);
+void ps_init_rgb_nbox(t_psdata ps,real xbox, real ybox);
-extern void ps_lineto(t_psdata ps,real x,real y);
-extern void ps_linerel(t_psdata ps,real dx,real dy);
+void ps_lineto(t_psdata ps,real x,real y);
+void ps_linerel(t_psdata ps,real dx,real dy);
-extern void ps_moveto(t_psdata ps,real x,real y);
-extern void ps_moverel(t_psdata ps,real dx,real dy);
+void ps_moveto(t_psdata ps,real x,real y);
+void ps_moverel(t_psdata ps,real dx,real dy);
-extern void ps_line(t_psdata ps,real x1,real y1,real x2,real y2);
+void ps_line(t_psdata ps,real x1,real y1,real x2,real y2);
-extern void ps_box(t_psdata ps,real x1,real y1,real x2,real y2);
-extern void ps_fillbox(t_psdata ps,real x1,real y1,real x2,real y2);
+void ps_box(t_psdata ps,real x1,real y1,real x2,real y2);
+void ps_fillbox(t_psdata ps,real x1,real y1,real x2,real y2);
-extern void ps_arc(t_psdata ps,real x1,real y1,real rad,real a0,real a1);
-extern void ps_fillarc(t_psdata ps,real x1,real y1,real rad,real a0,real a1);
-extern void ps_arcslice(t_psdata ps,real xc,real yc,
+void ps_arc(t_psdata ps,real x1,real y1,real rad,real a0,real a1);
+void ps_fillarc(t_psdata ps,real x1,real y1,real rad,real a0,real a1);
+void ps_arcslice(t_psdata ps,real xc,real yc,
real rad1,real rad2,real a0,real a1);
-extern void ps_fillarcslice(t_psdata ps,real xc,real yc,
+void ps_fillarcslice(t_psdata ps,real xc,real yc,
real rad1,real rad2,real a0,real a1);
-extern void ps_circle(t_psdata ps,real x1,real y1,real rad);
+void ps_circle(t_psdata ps,real x1,real y1,real rad);
-extern void ps_font(t_psdata ps,int font,real size);
-extern void ps_strfont(t_psdata ps,char *font,real size);
+void ps_font(t_psdata ps,int font,real size);
+void ps_strfont(t_psdata ps,char *font,real size);
-extern void ps_text(t_psdata ps,real x1,real y1,const char *str);
-extern void ps_ctext(t_psdata ps,real x1,real y1,const char *str,int expos);
+void ps_text(t_psdata ps,real x1,real y1,const char *str);
+void ps_ctext(t_psdata ps,real x1,real y1,const char *str,int expos);
-extern void ps_close(t_psdata ps);
+void ps_close(t_psdata ps);
-extern void ps_flip(t_psdata ps,bool bPlus);
+void ps_flip(t_psdata ps,bool bPlus);
/* Rotate over 90 (bPlus) or -90 (!bPlus) degrees */
-extern void ps_rotate(t_psdata ps,real angle);
+void ps_rotate(t_psdata ps,real angle);
-extern void ps_translate(t_psdata ps,real x,real y);
+void ps_translate(t_psdata ps,real x,real y);
-extern void ps_setorigin(t_psdata ps);
-extern void ps_unsetorigin(t_psdata ps);
+void ps_setorigin(t_psdata ps);
+void ps_unsetorigin(t_psdata ps);
-extern void viewps(char *fn);
+void viewps(char *fn);
-extern void ps_comment(t_psdata ps,const char *s);
+void ps_comment(t_psdata ps,const char *s);
#ifdef __cplusplus
}
#ifndef _xdrf_h
#define _xdrf_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include <stdio.h>
#include "typedefs.h"
extern const char *xdr_datatype_names[];
/* Read or write reduced precision *float* coordinates */
-int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision, bool bRead);
+int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision);
/* Read or write a *real* value (stored as float) */
/* Read or write reduced precision *real* coordinates */
-int xdr3drcoord(XDR *xdrs,real *fp,int *size,real *precision, bool bRead);
+int xdr3drcoord(XDR *xdrs,real *fp,int *size,real *precision);
-extern int xdr_gmx_large_int(XDR *xdrs,gmx_large_int_t *i,const char *warn);
+int xdr_gmx_large_int(XDR *xdrs,gmx_large_int_t *i,const char *warn);
/* Read or write a gmx_large_int_t value.
* 32bit code reading a 64bit gmx_large_int_t value from xdrs could
* lead to values out of int range.
#ifndef _xtcio_h
#define _xtcio_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
#include "typedefs.h"
#include "gmxfio.h"
#include "xdrf.h"
* bOK tells if a frame is not corrupted
*/
-extern t_fileio *open_xtc(const char *filename,const char *mode);
+t_fileio *open_xtc(const char *filename,const char *mode);
/* Open a file for xdr I/O */
-extern void close_xtc(t_fileio *fio);
+void close_xtc(t_fileio *fio);
/* Close the file for xdr I/O */
-extern int read_first_xtc(t_fileio *fio,
+int read_first_xtc(t_fileio *fio,
int *natoms,int *step,real *time,
matrix box,rvec **x,real *prec,bool *bOK);
/* Open xtc file, read xtc file first time, allocate memory for x */
-extern int read_next_xtc(t_fileio *fio,
+int read_next_xtc(t_fileio *fio,
int natoms,int *step,real *time,
matrix box,rvec *x,real *prec,bool *bOK);
/* Read subsequent frames */
-extern int write_xtc(t_fileio *fio,
+int write_xtc(t_fileio *fio,
int natoms,int step,real time,
matrix box,rvec *x,real prec);
/* Write a frame to xtc file */
-extern int xtc_check(const char *str,bool bResult,const char *file,int line);
+int xtc_check(const char *str,bool bResult,const char *file,int line);
#define XTC_CHECK(s,b) xtc_check(s,b,__FILE__,__LINE__)
-extern void xtc_check_fat_err(const char *str,bool bResult,const char *file,int line);
+void xtc_check_fat_err(const char *str,bool bResult,const char *file,int line);
#define XTC_CHECK_FAT_ERR(s,b) xtc_check_fat_err(s,b,__FILE__,__LINE__)
#ifdef __cplusplus
#ifndef _xvgr_h
#define _xvgr_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "sysstuff.h"
#include "typedefs.h"
#include "viewit.h"
* \4 : (deprecated) end symbol font
*/
-extern bool output_env_get_print_xvgr_codes(const output_env_t oenv);
+bool output_env_get_print_xvgr_codes(const output_env_t oenv);
/* Returns if we should print xmgrace or xmgr codes */
enum {
exvggtNONE, exvggtXNY, exvggtXYDY, exvggtXYDYDY, exvggtNR
};
-extern void xvgr_header(FILE *fp,const char *title,const char *xaxis,
+void xvgr_header(FILE *fp,const char *title,const char *xaxis,
const char *yaxis,int exvg_graph_type,
const output_env_t oenv);
/* In most cases you want to use xvgropen_type, which does the same thing
* but takes a filename and opens it.
*/
-extern FILE *xvgropen_type(const char *fn,const char *title,const char *xaxis,
+FILE *xvgropen_type(const char *fn,const char *title,const char *xaxis,
const char *yaxis,int exvg_graph_type,
const output_env_t oenv);
/* Open a file, and write a title, and axis-labels in Xvgr format
* The xvgr graph type enum is defined above.
*/
-extern FILE *xvgropen(const char *fn,const char *title,const char *xaxis,
+FILE *xvgropen(const char *fn,const char *title,const char *xaxis,
const char *yaxis,const output_env_t oenv);
/* Calls xvgropen_type with graph type xvggtXNY. */
/* Close xvgr file, and clean up internal file buffers correctly */
-extern void xvgrclose(FILE *fp);
+void xvgrclose(FILE *fp);
-extern void xvgr_subtitle(FILE *out,const char *subtitle,
+void xvgr_subtitle(FILE *out,const char *subtitle,
const output_env_t oenv);
/* Set the subtitle in xvgr */
-extern void xvgr_view(FILE *out,real xmin,real ymin,real xmax,real ymax,
+void xvgr_view(FILE *out,real xmin,real ymin,real xmax,real ymax,
const output_env_t oenv);
/* Set the view in xvgr */
-extern void xvgr_world(FILE *out,real xmin,real ymin,real xmax,real ymax,
+void xvgr_world(FILE *out,real xmin,real ymin,real xmax,real ymax,
const output_env_t oenv);
/* Set the world in xvgr */
-extern void xvgr_legend(FILE *out,int nsets,const char** setnames,
+void xvgr_legend(FILE *out,int nsets,const char** setnames,
const output_env_t oenv);
/* Make a legend box, and also modifies the view to make room for the legend */
-extern void xvgr_new_dataset(FILE *out, const output_env_t oenv);
+void xvgr_new_dataset(FILE *out, const output_env_t oenv);
/* End the previous data set(s) and start new one(s). */
-extern void xvgr_line_props(FILE *out,int NrSet,int LineStyle,int LineColor,
+void xvgr_line_props(FILE *out,int NrSet,int LineStyle,int LineColor,
const output_env_t oenv);
/* Set xvgr line styles and colors */
-extern void xvgr_box(FILE *out,
+void xvgr_box(FILE *out,
int LocType,
real xmin,real ymin,real xmax,real ymax,
int LineStyle,int LineWidth,int LineColor,
const output_env_t oenv);
/* Make a box */
-extern int read_xvg_legend(const char *fn,double ***y,int *ny,
+int read_xvg_legend(const char *fn,double ***y,int *ny,
char **subtitle,char ***legend);
/* Read an xvg file for post processing. The number of rows is returned
* fn is the filename, y is a pointer to a 2D array (to be allocated by
* 0 is the first y legend, the legend string will be NULL when not present.
*/
-extern int read_xvg(const char *fn,double ***y,int *ny);
+int read_xvg(const char *fn,double ***y,int *ny);
/* As read_xvg_legend, but does not read legends. */
-extern void write_xvg(const char *fn,const char *title,int nx,int ny,real **y,
+void write_xvg(const char *fn,const char *title,int nx,int ny,real **y,
const char** leg, const output_env_t oenv);
/* Write a two D array (y) of dimensions nx rows times
* ny columns to a file. If leg != NULL it will be written too.
/* This function reads ascii (xvg) files and extracts the data sets to a
* two dimensional array which is returned.
*/
-extern real **read_xvg_time(const char *fn,
+real **read_xvg_time(const char *fn,
bool bHaveT,
bool bTB,real tb,
bool bTE,real te,
-AMBER03_TEST_ONLY_DO_NOT_USE_FOR_PRODUCTION
+AMBER03 force field (Duan et al., J. Comp. Chem. 24, 1999-2012, 2003)
********************************************************************
* The original ffamber ports were written by Eric J. Sorin, *
-AMBER94_TEST_ONLY_DO_NOT_USE_FOR_PRODUCTION
+AMBER94 force field (Cornell et al., JACS 117, 5179-5197, 1995)
********************************************************************
* The original ffamber ports were written by Eric J. Sorin, *
-AMBER96_TEST_ONLY_DO_NOT_USE_FOR_PRODUCTION
+AMBER96 force field (Kollman et al., Acc. Chem. Res. 29, 461-469, 1996)
********************************************************************
* The original ffamber ports were written by Eric J. Sorin, *
-AMBER99_TEST_ONLY_DO_NOT_USE_FOR_PRODUCTION
+AMBER99 force field (Wang et al., J. Comp. Chem. 21, 1049-1074, 2000)
********************************************************************
* The original ffamber ports were written by Eric J. Sorin, *
-AMBER99SB-ILDN_TEST_ONLY_DO_NOT_USE_FOR_PRODUCTION
+AMBER99SB-ILDN force field (Lindorff-Larsen et al., Proteins 78, 1950-58, 2010)
********************************************************************
-* The original ffamber ports were written by Eric J. Sorin, *
-* CSU Long Beach, Dept. of Chem & Biochem, and have now been *
-* integrated with the standard gromacs distribution. *
-* (Please don't blame Eric for errors we might have introduced.) *
-* For the implementation/validation, please read/cite: *
-* Sorin & Pande (2005). Biophys. J. 88(4), 2472-2493. *
-* For related material and updates, please consult *
-* http://chemistry.csulb.edu/ffamber/ *
+* Amber99sb-ildn is an improvement to Amber99SB by *
+* Kresten Lindorff-Larsen and coworkers at D.E. Shaw Research, inc.*
+* The primary publication (please cite it) is *
+* Lindorff-Larsen, K., Piana, S., Palmo, K., Maragakis, P., *
+* Klepeis, J.L., Dror, R.O., Shaw, D.E., *
+* Improved side-chain torsion potentials for the Amber ff99SB *
+* protein force field, Proteins 78:1950–1958 (2010) *
********************************************************************
-AMBER99SB_TEST_ONLY_DO_NOT_USE_FOR_PRODUCTION
+AMBER99SB force field (Hornak et al., Proteins 65, 712-725, 2006)
********************************************************************
* The original ffamber ports were written by Eric J. Sorin, *
+;
+; Horn et al. (2004). J. Chem. Phys.120, 9665-9678
+;
+
+
[ moleculetype ]
; molname nrexcl
SOL 2
tip3p TIP3P TIP 3-point, recommended
tip4p TIP4P TIP 4-point
-tip4pew TIP4P-Ew TIP 4-point optimized with Ewald
+tip4pew TIP4P-Ew TIP 4-point optimized with Ewald, recommended
spc SPC simple point charge
spce SPC/E extended simple point charge
-AMBERGS_TEST_ONLY_DO_NOT_USE_FOR_PRODUCTION
+AMBERGS force field (Garcia & Sanbonmatsu, PNAS 99, 2782-2787, 2002)
********************************************************************
* The original ffamber ports were written by Eric J. Sorin, *
; atom renaming specification
-; residue gromacs forcefield
- * H HN
-
+; residue gromacs forcefield
+ * H HN
[ impropers ]
C CA OT2 OT1
-; Created by Cuendet and Bjelkmar.
+
[ COOH ]
[ replace ]
C C CD 12.011 0.72
[ impropers ]
C CA OT2 OT1
-; Created by Michel Cuendet.
+
[ CT2 ]
[ replace ]
C CC 12.011 0.55
C CA NT O
NT C HT1 HT2
NT C HT2 HT1
+[ CT3 ]
+; N-Methylamide C-terminus
+;
+; |
+; C=O
+; |
+; NT-HNT
+; |
+; HT1-CAT-HT3
+; |
+; HT2
+;
+[ delete ]
+OXT
+[ add ]
+1 8 NT C CA N
+ NH1 14.0027 -0.47
+1 2 HNT NT C O
+ H 1.008 0.31
+1 8 CAT NT C O
+ CT3 12.011 -0.11
+3 4 HT CAT NT C
+ HA 1.008 0.09
+[ bonds ]
+NT CAT ; otherwise CAT does not get bonded to other atoms...
+[ impropers ]
+NT C CAT HNT
+C CA NT O
+[ cmap ]
+-C N CA C NT
2 4 H N CA C
HC 1.008 0.24
-; Created by Michel Cuendet
+;
[ NH2 ]
[ replace ]
N NH2 14.0067 -0.96
HN
-; Created by Bjelkmar
+;
[ GLY-NH2 ]
[ replace ]
N NH2 14.0067 -0.96
HN
-; Created by Bjelkmar
+;
[ PRO-NH ]
[ replace ]
N NP 14.0027 -0.40
[ cmap ]
-C N CA C +N
-[ CYS2 ] ; disulfide cystine residue provided by Michel Cuendet
+[ CYS2 ] ; disulfide cystine
[ atoms ]
N NH1 -0.47 0
HN H 0.31 0
HR3 1 1.008000 0.09 A 0.261567863646 0.0326352
HS 1 1.008000 0.16 A 0.0801808846326 0.4184
#ifdef HEAVY_H
-HT 1 4.032000 0.417 A 0.0400013524445 0.192464
+HT 1 4.032 0.417 A 0.0400013524445 0.192464 ; CHARMM TIP3p H
#else
HT 1 1.008000 0.417 A 0.0400013524445 0.192464
#endif
OST 8 15.999400 0.000 A 0.301480126219 0.69036 ; partial charge def not found
OT 8 15.999400 -0.834 A 0.315057422683 0.6363864
#ifdef HEAVY_H
-OT 8 9.951400 -0.834 A 0.315057422683 0.6363864
+OT 8 9.951400 -0.834 A 0.315057422683 0.6363864 ; CHARMM TIP3p O
#endif
S 16 32.060000 -0.09 A 0.356359487256 1.8828
SM 16 32.060000 0.000 A 0.351904993665 1.58992 ; partial charge def not found
; The following atom types are NOT part of the CHARMM distribution
; atomtypes for additional water models
#ifdef HEAVY_H
-OWT3 8 9.951400 -0.834 A 0.315057422683 0.6363864
-HWT3 1 4.032000 0.417 A 0.0 0.0
+OWT3 8 9.951400 -0.834 A 3.15058e-01 6.36386e-01 ; TIP3p O
+HWT3 1 4.032000 0.417 A 0.0 0.0 ; TIP3p H
OWT4 8 9.951400 0.0 A 3.15365e-01 6.48520e-01 ; TIP4p O
HWT4 1 4.032000 0.52 A 0.0 0.0 ; TIP4p H
MWT4 0 0.000000 -1.04 A 0.0 0.0 ; TIP 4p vsite
OW 8 9.951400 -0.82 A 3.16557e-01 6.50194e-01 ; SPC 0
HW 1 4.032000 0.41 A 0.0 0.0; SPC H
#else
-OWT3 8 15.999400 -0.834 A 0.315057422683 0.6363864
-HWT3 1 1.008000 0.417 A 0.0 0.0
+OWT3 8 15.999400 -0.834 A 3.15058e-01 6.36386e-01 ; TIP3p O
+HWT3 1 1.008000 0.417 A 0.0 0.0 ; TIP3p H
OWT4 8 15.999400 0.0 A 3.15365e-01 6.48520e-01 ; TIP4p O
HWT4 1 1.008000 0.52 A 0.0 0.0 ; TIP4p H
MWT4 0 0.000000 -1.04 A 0.0 0.0 ; TIP4p vsite
CHARMM27 all-atom force field (with CMAP) - version 2.0beta
-******************************************************************
-* Charmm to Gromacs port writted by *
-* Par Bjelkmar, bjelkmar@cbr.su.se, and *
-* Per Larsson. *
-* Alternative correspondance: *
-* Erik Lindahl, lindahl@cbr.su.se *
-******************************************************************
+*******************************************************************************
+* CHARMM port writted by *
+* Par Bjelkmar, Per Larsson, Michel Cuendet, *
+* Berk Hess and Erik Lindahl. *
+* Correspondance: *
+* bjelkmar@cbr.su.se or lindahl@cbr.su.se *
+*******************************************************************************
+Parameters derived from c32b1 version of CHARMM
+
References:
-Proteins
+Port
+
+Bjelkmar, P., Larsson, P., Cuendet, M. A, Bess, B., Lindahl, E.
+Implementation of the CHARMM force field in GROMACS: Analysis of protein
+stability effects from correction maps, virtual interaction sites, and
+water models., Journal of Chemical Theory and Computation, 6: 459-466, 2010.
+
+Protein parameterization
MacKerell, Jr., A. D., Feig, M., Brooks, C.L., III, Extending the
treatment of backbone energetics in protein force fields: limitations
empirical potential for molecular modeling and dynamics Studies of
proteins. Journal of Physical Chemistry B, 1998, 102, 3586-3616.
-Lipids
+Lipid parameterization
Feller, S. and MacKerell, Jr., A.D. An Improved Empirical Potential
Energy Function for Molecular Simulations of Phospholipids, Journal
of Physical Chemistry B, 2000, 104: 7510-7515.
-Nucleic Acids
+Nucleic Acids parameterization
Foloppe, N. and MacKerell, Jr., A.D. "All-Atom Empirical Force Field for
Nucleic Acids: 2) Parameter Optimization Based on Small Molecule and
MacKerell, Jr., A.D. and Banavali, N. "All-Atom Empirical Force Field for
Nucleic Acids: 2) Application to Molecular Dynamics Simulations of DNA
and RNA in Solution. 2000, 21: 105-120.
-
-If using these parameters for research please site:
-Bjelkmar, Larsson, Cuendet, Hess, and Lindahl, JCTC 2010
*******************************************************************************
-* Charmm to Gromacs port writted by *
-* Par Bjelkmar, bjelkmar@cbr.su.se, and *
-* Per Larsson. Port homepage *
-* www.dbb.su.se/user:bjelkmar/ffcharmm *
-* Alternative correspondence: *
-* Erik Lindahl, lindahl@cbr.su.se *
+* CHARMM port writted by *
+* Par Bjelkmar, Per Larsson, Michel Cuendet, *
+* Berk Hess and Erik Lindahl. *
+* Correspondance: *
+* bjelkmar@cbr.su.se or lindahl@cbr.su.se *
*******************************************************************************
#define _FF_CHARMM
-
[ defaults ]
; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ
1 2 yes 1.0 1.0
tip3p TIP3P TIP 3-point, recommended
tip4p TIP4P TIP 4-point
-tip5p TIP5P TIP 5-point
tips3p TIPS3P CHARMM TIP 3-point with LJ on H's (note: twice as slow in GROMACS)
spc SPC simple point charge
spce SPC/E extended simple point charge
set_prop(aps,epropElement);
for(i=0; (i<ap->prop[epropElement].nprop); i++) {
- if (strcasecmp(ap->prop[epropElement].atomnm[i],elem) == 0) {
+ if (gmx_strcasecmp(ap->prop[epropElement].atomnm[i],elem) == 0) {
return gmx_nint(ap->prop[epropElement].value[i]);
}
}
* Gnomes, ROck Monsters And Chili Sauce
*/
+/* The source code in this file should be thread-safe.
+ Please keep it that way. */
+
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <string.h>
#include <time.h>
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+
#if ((defined WIN32 || defined _WIN32 || defined WIN64 || defined _WIN64) && !defined __CYGWIN__ && !defined __CYGWIN32__)
/* _chsize_s */
#include <io.h>
#include "corewrap.h"
#endif
+
+/* Portable version of ctime_r implemented in src/gmxlib/string2.c, but we do not want it declared in public installed headers */
+char *
+gmx_ctime_r(const time_t *clock,char *buf, int n);
+
+
#define CPT_MAGIC1 171817
#define CPT_MAGIC2 171819
-/* The source code in this file should be thread-safe.
- Please keep it that way. */
-
/* cpt_version should normally only be changed
* when the header of footer format changes.
* The state data format itself is backward and forward compatible.
*/
static const int cpt_version = 12;
+
const char *est_names[estNR]=
{
"FE-lambda",
}
fn = outputfiles[0].filename;
if (strlen(fn) < 4 ||
- strcasecmp(fn+strlen(fn)-4,ftp2ext(efLOG)) == 0)
+ gmx_strcasecmp(fn+strlen(fn)-4,ftp2ext(efLOG)) == 0)
{
gmx_fatal(FARGS,"File appending requested, but the log file is not the first file listed in the checkpoint file");
}
for (i = 0; (i < efNR); i++)
if ((eptr = deffile[i].ext) != NULL)
- if (strcasecmp(feptr, eptr) == 0)
+ if (gmx_strcasecmp(feptr, eptr) == 0)
break;
return i;
df = &(deffile[ftp]);
len = strlen(buf);
extlen = strlen(df->ext);
- if ((len <= extlen) || (strcasecmp(&(buf[len - extlen]), df->ext) != 0))
+ if ((len <= extlen) || (gmx_strcasecmp(&(buf[len - extlen]), df->ext) != 0))
strcat(buf, df->ext);
}
extlen = strlen(z_ext[i]);
if (len > extlen)
{
- if (strcasecmp(name+len-extlen,z_ext[i]) == 0)
+ if (gmx_strcasecmp(name+len-extlen,z_ext[i]) == 0)
{
buf[len-extlen]='\0';
break;
* too, or we wont be able to detect that the file exists
*/
#if (defined WIN32 || defined _WIN32 || defined WIN64 || defined _WIN64 || defined __CYGWIN__ || defined __CYGWIN32__)
- if(strlen(bin_name)<3 || strncasecmp(bin_name+strlen(bin_name)-4,".exe",4))
+ if(strlen(bin_name)<3 || gmx_strncasecmp(bin_name+strlen(bin_name)-4,".exe",4))
strcat(bin_name,".exe");
#endif
}
-char *low_gmxlibfn(const char *file, bool bFatal)
+char *low_gmxlibfn(const char *file, bool bAddCWD, bool bFatal)
{
char *ret;
char *lib,*dir;
}
ret = NULL;
- if (gmx_fexist(file))
+ if (bAddCWD && gmx_fexist(file))
{
ret = strdup(file);
}
{
if (env_is_set)
{
- gmx_fatal(FARGS,"Library file %s not found in current dir nor in your GMXLIB path.\n",file);
+ gmx_fatal(FARGS,
+ "Library file %s not found %sin your GMXLIB path.",
+ bAddCWD ? "in current dir nor " : "",file);
}
else
{
- gmx_fatal(FARGS,"Library file %s not found in current dir nor in default directories.\n"
- "(You can set the directories to search with the GMXLIB path variable)",file);
+ gmx_fatal(FARGS,
+ "Library file %s not found %sin default directories.\n"
+ "(You can set the directories to search with the GMXLIB path variable)",
+ bAddCWD ? "in current dir nor " : "",file);
}
}
}
FILE *ff;
char *fn;
- fn=low_gmxlibfn(file,bFatal);
+ fn=low_gmxlibfn(file,TRUE,bFatal);
if (fn==NULL) {
ff=NULL;
char *gmxlibfn(const char *file)
{
- return low_gmxlibfn(file,TRUE);
+ return low_gmxlibfn(file,TRUE,TRUE);
}
FILE *libopen(const char *file)
# Get date of the head commit as YYYYMMDD (commit date).
# Git before 1.5.3 does not support any sensible date format,
# so we need to massage the output.
- if test "`git --version`" \< "git version 1.5.3" ; then
+ if git --git-dir=$GITDIR rev-list -n1 --pretty=format:%ci HEAD | grep '[0-9]\{4\}' >/dev/null 2>&1; then
+ date=`git --git-dir=$GITDIR rev-list -n1 --pretty=format:%ci HEAD | sed -ne '/commit/!{s/-\| .*$//g;p;}'`
+ else
date=`git --git-dir=$GITDIR rev-list -n1 --pretty=format:%cD HEAD | \
sed -ne '/commit/!{s/^.*, *\([ 0-9][0-9]\) \([a-zA-Z]*\) \([0-9]*\) .*$/\3\2\1/;y/ /0/;\
s/Jan/01/;s/Feb/02/;s/Mar/03/;s/Apr/04/;s/May/05/;s/Jun/06/;
s/Jul/07/;s/Aug/08/;s/Sep/09/;s/Oct/10/;s/Nov/11/;s/Dec/12/;
p;}'`
- else
- date=`git --git-dir=$GITDIR rev-list -n1 --pretty=format:%ci HEAD | sed -ne '/commit/!{s/-\| .*$//g;p;}'`
fi
# Get a 7-character hash for the HEAD commit.
shorthash=`git --git-dir=$GITDIR rev-parse --short=7 HEAD 2>/dev/null`
ptr = strchr(cppopts[i], '=');
if (ptr)
{
- buf = strndup(cppopts[i] + 2, ptr - cppopts[i] - 2);
+ buf = gmx_strndup(cppopts[i] + 2, ptr - cppopts[i] - 2);
add_define(buf, ptr + 1);
sfree(buf);
}
/* If still not found, check the Gromacs library search path. */
if (!cpp->fn)
{
- cpp->fn = low_gmxlibfn(filenm, FALSE);
+ cpp->fn = low_gmxlibfn(filenm, FALSE, FALSE);
}
}
if (!cpp->fn)
ptr = dval;
while ((*ptr != '\0') && !isspace(*ptr))
ptr++;
- name = strndup(dval, ptr - dval);
+ name = gmx_strndup(dval, ptr - dval);
while ((*ptr != '\0') && isspace(*ptr))
ptr++;
};
const int wholename[NCH] = { -1, 0,-1,-1,-1,-1,-1,-1, 11,-1 };
/* the index in wholename gives the first item in the arrays of
- * atomtypes that should be tested with 'strncasecmp' in stead of
- * strcasecmp, or -1 if all items should be tested with strcasecmp
+ * atomtypes that should be tested with 'gmx_strncasecmp' in stead of
+ * gmx_strcasecmp, or -1 if all items should be tested with strcasecmp
* This is comparable to using a '*' wildcard at the end of specific
* atom names, but that is more involved to implement...
*/
while (isdigit(atnm[0]))
atnm++;
if ( (wholename[i]==-1) || (j<wholename[i]) ) {
- if (strcasecmp(chains[i][j],atnm) == 0)
+ if (gmx_strcasecmp(chains[i][j],atnm) == 0)
match=TRUE;
} else {
- if (strncasecmp(chains[i][j],atnm,strlen(chains[i][j])) == 0)
+ if (gmx_strncasecmp(chains[i][j],atnm,strlen(chains[i][j])) == 0)
match=TRUE;
}
}
for(;((atoms->atom[n].resind==resind) && (n<atoms->nr));n++) {
match=FALSE;
for(j=0;(j<sizes[i]); j++)
- if (strcasecmp(chains[i][j],*atoms->atomname[n]) == 0)
+ if (gmx_strcasecmp(chains[i][j],*atoms->atomname[n]) == 0)
match=TRUE;
if (match != complement[i])
aid[nra++]=n;
/* first look for whole name match */
if (aa==NOTSET)
for(i=0; i<ngrps; i++)
- if (strcasecmp_min(s,grpname[i])==0) {
+ if (gmx_strcasecmp_min(s,grpname[i])==0) {
if(aa!=NOTSET)
bMultiple = TRUE;
aa=i;
/* second look for first string match */
if (aa==NOTSET)
for(i=0; i<ngrps; i++)
- if (strncasecmp_min(s,grpname[i],n)==0) {
+ if (gmx_strncasecmp_min(s,grpname[i],n)==0) {
if(aa!=NOTSET)
bMultiple = TRUE;
aa=i;
URL: http://www.gromacs.org
Version: @VERSION@
Requires:
-Libs.private: -lm @PTHREAD_LIBS@
-Libs: -L${libdir} -lgmx@LIBSUFFIX@
+Libs: -L${libdir} -lgmx@LIBSUFFIX@ @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ -lm
Cflags: -I${includedir} @PTHREAD_CFLAGS@ @PKG_CFLAGS@
#include "xdrf.h"
#include "string2.h"
#include "futil.h"
-
+#include "gmx_fatal.h"
#if 0
xdr_fortran_unlock();
}
+void
F77_FUNC(xdrfshort,XDRFSHORT)(int *xdrid, short *sp, int *ret)
{
xdr_fortran_lock();
#ifdef GMX_THREADS
- if (!tMPI_Thread_mutex_islocked( &xdr_fortran_mutex ))
- gmx_incons("xdropen called without locked mutex. NEVER call this function");
+ if (!tMPI_Thread_mutex_trylock( &xdr_fortran_mutex ))
+ {
+ tMPI_Thread_mutex_unlock( &xdr_fortran_mutex );
+ gmx_incons("xdropen called without locked mutex. NEVER call this function.");
+ }
#endif
if (init_done == 0) {
strcpy(newtype, "ab+");
lmode = XDR_ENCODE;
}
- else if (strncasecmp(type, "r+", 2) == 0)
+ else if (gmx_strncasecmp(type, "r+", 2) == 0)
{
xdrmodes[xdrid] = 'a';
strcpy(newtype, "rb+");
int rc = 0;
#ifdef GMX_THREADS
- if (!tMPI_Thread_mutex_islocked( &xdr_fortran_mutex ))
+ if (!tMPI_Thread_mutex_trylock( &xdr_fortran_mutex ))
+ {
+ tMPI_Thread_mutex_unlock( &xdr_fortran_mutex );
gmx_incons("xdropen called without locked mutex. NEVER call this function");
+ }
#endif
if (xdrs == NULL) {
|
*/
-int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision, bool bRead)
+int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision)
{
int *ip = NULL;
int *buf = NULL;
-
+ bool bRead;
+
/* preallocate a small buffer and ip on the stack - if we need more
we can always malloc(). This is faster for small values of size: */
int prealloc_size=3*16;
int errval = 1;
int rc;
+ bRead = (xdrs->x_op == XDR_DECODE);
bitsizeint[0] = bitsizeint[1] = bitsizeint[2] = 0;
prevcoord[0] = prevcoord[1] = prevcoord[2] = 0;
#include <string.h>
#include <limits.h>
#include <time.h>
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+
#include "smalloc.h"
#include "gmx_fatal.h"
#include "network.h"
#endif
+/* Portable version of ctime_r implemented in src/gmxlib/string2.c, but we do not want it declared in public installed headers */
+char *
+gmx_ctime_r(const time_t *clock,char *buf, int n);
+
+
#define BUFSIZE 1024
/* this is not strictly thread-safe, but it's only written to at the beginning
parsestring(line,"y-label",(mm->label_y));
parsestring(line,"type",buf);
}
- if (buf[0] && (strcasecmp(buf,"Discrete")==0))
+ if (buf[0] && (gmx_strcasecmp(buf,"Discrete")==0))
mm->bDiscrete=TRUE;
if (debug)
nb_kernel323_f77_double.h nb_kernel324_f77_double.h nb_kernel330_f77_double.h nb_kernel331_f77_double.h \
nb_kernel332_f77_double.h nb_kernel333_f77_double.h nb_kernel334_f77_double.h nb_kernel400_f77_double.h \
nb_kernel410_f77_double.h nb_kernel420_f77_double.h nb_kernel430_f77_double.h \
- nb_kernel_f77_double.c nb_kernel_f77_double.h \
+ nb_kernel_f77_double.c nb_kernel_f77_double.h nb_kernel_f77sync.c \
f77dkernel010.f f77dkernel020.f f77dkernel030.f f77dkernel100.f \
f77dkernel101.f f77dkernel102.f f77dkernel103.f f77dkernel104.f \
f77dkernel110.f f77dkernel111.f f77dkernel112.f f77dkernel113.f \
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL010_F77S_H_
-#define _NBKERNEL010_F77S_H_
+#ifndef _NBKERNEL010_F77D_H_
+#define _NBKERNEL010_F77D_H_
-/*! \file nbkernel010.h
+/*! \file nb_kernel010_f77_double.h
* \brief Nonbonded kernel 010 (LJ)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel010f77s,NBKERNEL010F77S)
+nb_kernel010_f77_double
(int * nri, int * iinr,
int * jindex, int * jjnr,
int * shift, real * shiftvec,
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel010nff77s,NBKERNEL010NFF77S)
+nb_kernel010nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL010_F77S_H_ */
+#endif /* _NBKERNEL010_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL020_F77S_H_
-#define _NBKERNEL020_F77S_H_
+#ifndef _NBKERNEL020_F77D_H_
+#define _NBKERNEL020_F77D_H_
-/*! \file nbkernel020.h
+/*! \file nb_kernel020_f77_double.h
* \brief Nonbonded kernel 020 (Bham)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel020f77s,NBKERNEL020F77S)
+nb_kernel020_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel020nff77s,NBKERNEL020NFF77S)
+nb_kernel020nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL020_F77S_H_ */
+#endif /* _NBKERNEL020_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL030_F77S_H_
-#define _NBKERNEL030_F77S_H_
+#ifndef _NBKERNEL030_F77D_H_
+#define _NBKERNEL030_F77D_H_
-/*! \file nbkernel030.h
+/*! \file nb_kernel030_f77_double.h
* \brief Nonbonded kernel 030 (Tab VdW)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel030f77s,NBKERNEL030F77S)
+nb_kernel030_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel030nff77s,NBKERNEL030NFF77S)
+nb_kernel030nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL030_F77S_H_ */
+#endif /* _NBKERNEL030_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL100_F77S_H_
-#define _NBKERNEL100_F77S_H_
+#ifndef _NBKERNEL100_F77D_H_
+#define _NBKERNEL100_F77D_H_
-/*! \file nbkernel100.h
+/*! \file nb_kernel100_f77_double.h
* \brief Nonbonded kernel 100 (Coul)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel100f77s,NBKERNEL100F77S)
+nb_kernel100_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel100nff77s,NBKERNEL100NFF77S)
+nb_kernel100nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL100_F77S_H_ */
+#endif /* _NBKERNEL100_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL101_F77S_H_
-#define _NBKERNEL101_F77S_H_
+#ifndef _NBKERNEL101_F77D_H_
+#define _NBKERNEL101_F77D_H_
-/*! \file nbkernel101.h
+/*! \file nb_kernel101_f77_double.h
* \brief Nonbonded kernel 101 (Coul, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel101f77s,NBKERNEL101F77S)
+nb_kernel101_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel101nff77s,NBKERNEL101NFF77S)
+nb_kernel101nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL101_F77S_H_ */
+#endif /* _NBKERNEL101_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL102_F77S_H_
-#define _NBKERNEL102_F77S_H_
+#ifndef _NBKERNEL102_F77D_H_
+#define _NBKERNEL102_F77D_H_
-/*! \file nbkernel102.h
+/*! \file nb_kernel102_f77_double.h
* \brief Nonbonded kernel 102 (Coul, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel102f77s,NBKERNEL102F77S)
+nb_kernel102_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel102nff77s,NBKERNEL102NFF77S)
+nb_kernel102nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL102_F77S_H_ */
+#endif /* _NBKERNEL102_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL103_F77S_H_
-#define _NBKERNEL103_F77S_H_
+#ifndef _NBKERNEL103_F77D_H_
+#define _NBKERNEL103_F77D_H_
-/*! \file nbkernel103.h
+/*! \file nb_kernel103_f77_double.h
* \brief Nonbonded kernel 103 (Coul, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel103f77s,NBKERNEL103F77S)
+nb_kernel103_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel103nff77s,NBKERNEL103NFF77S)
+nb_kernel103nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL103_F77S_H_ */
+#endif /* _NBKERNEL103_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL104_F77S_H_
-#define _NBKERNEL104_F77S_H_
+#ifndef _NBKERNEL104_F77D_H_
+#define _NBKERNEL104_F77D_H_
-/*! \file nbkernel104.h
+/*! \file nb_kernel104_f77_double.h
* \brief Nonbonded kernel 104 (Coul, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel104f77s,NBKERNEL104F77S)
+nb_kernel104_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel104nff77s,NBKERNEL104NFF77S)
+nb_kernel104nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL104_F77S_H_ */
+#endif /* _NBKERNEL104_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL110_F77S_H_
-#define _NBKERNEL110_F77S_H_
+#ifndef _NBKERNEL110_F77D_H_
+#define _NBKERNEL110_F77D_H_
-/*! \file nbkernel110.h
+/*! \file nb_kernel110_f77_double.h
* \brief Nonbonded kernel 110 (Coul + LJ)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel110f77s,NBKERNEL110F77S)
+nb_kernel110_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel110nff77s,NBKERNEL110NFF77S)
+nb_kernel110nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL110_F77S_H_ */
+#endif /* _NBKERNEL110_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL111_F77S_H_
-#define _NBKERNEL111_F77S_H_
+#ifndef _NBKERNEL111_F77D_H_
+#define _NBKERNEL111_F77D_H_
-/*! \file nbkernel111.h
+/*! \file nb_kernel111_f77_double.h
* \brief Nonbonded kernel 111 (Coul + LJ, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel111f77s,NBKERNEL111F77S)
+nb_kernel111_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel111nff77s,NBKERNEL111NFF77S)
+nb_kernel111nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL111_F77S_H_ */
+#endif /* _NBKERNEL111_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL112_F77S_H_
-#define _NBKERNEL112_F77S_H_
+#ifndef _NBKERNEL112_F77D_H_
+#define _NBKERNEL112_F77D_H_
-/*! \file nbkernel112.h
+/*! \file nb_kernel112_f77_double.h
* \brief Nonbonded kernel 112 (Coul + LJ, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel112f77s,NBKERNEL112F77S)
+nb_kernel112_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel112nff77s,NBKERNEL112NFF77S)
+nb_kernel112nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL112_F77S_H_ */
+#endif /* _NBKERNEL112_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL113_F77S_H_
-#define _NBKERNEL113_F77S_H_
+#ifndef _NBKERNEL113_F77D_H_
+#define _NBKERNEL113_F77D_H_
-/*! \file nbkernel113.h
+/*! \file nb_kernel113_f77_double.h
* \brief Nonbonded kernel 113 (Coul + LJ, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel113f77s,NBKERNEL113F77S)
+nb_kernel113_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel113nff77s,NBKERNEL113NFF77S)
+nb_kernel113nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL113_F77S_H_ */
+#endif /* _NBKERNEL113_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL114_F77S_H_
-#define _NBKERNEL114_F77S_H_
+#ifndef _NBKERNEL114_F77D_H_
+#define _NBKERNEL114_F77D_H_
-/*! \file nbkernel114.h
+/*! \file nb_kernel114_f77_double.h
* \brief Nonbonded kernel 114 (Coul + LJ, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel114f77s,NBKERNEL114F77S)
+nb_kernel114_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel114nff77s,NBKERNEL114NFF77S)
+nb_kernel114nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL114_F77S_H_ */
+#endif /* _NBKERNEL114_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL120_F77S_H_
-#define _NBKERNEL120_F77S_H_
+#ifndef _NBKERNEL120_F77D_H_
+#define _NBKERNEL120_F77D_H_
-/*! \file nbkernel120.h
+/*! \file nb_kernel120_f77_double.h
* \brief Nonbonded kernel 120 (Coul + Bham)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel120f77s,NBKERNEL120F77S)
+nb_kernel120_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel120nff77s,NBKERNEL120NFF77S)
+nb_kernel120nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL120_F77S_H_ */
+#endif /* _NBKERNEL120_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL121_F77S_H_
-#define _NBKERNEL121_F77S_H_
+#ifndef _NBKERNEL121_F77D_H_
+#define _NBKERNEL121_F77D_H_
-/*! \file nbkernel121.h
+/*! \file nb_kernel121_f77_double.h
* \brief Nonbonded kernel 121 (Coul + Bham, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel121f77s,NBKERNEL121F77S)
+nb_kernel121_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel121nff77s,NBKERNEL121NFF77S)
+nb_kernel121nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL121_F77S_H_ */
+#endif /* _NBKERNEL121_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL122_F77S_H_
-#define _NBKERNEL122_F77S_H_
+#ifndef _NBKERNEL122_F77D_H_
+#define _NBKERNEL122_F77D_H_
-/*! \file nbkernel122.h
+/*! \file nb_kernel122_f77_double.h
* \brief Nonbonded kernel 122 (Coul + Bham, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel122f77s,NBKERNEL122F77S)
+nb_kernel122_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel122nff77s,NBKERNEL122NFF77S)
+nb_kernel122nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL122_F77S_H_ */
+#endif /* _NBKERNEL122_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL123_F77S_H_
-#define _NBKERNEL123_F77S_H_
+#ifndef _NBKERNEL123_F77D_H_
+#define _NBKERNEL123_F77D_H_
-/*! \file nbkernel123.h
+/*! \file nb_kernel123_f77_double.h
* \brief Nonbonded kernel 123 (Coul + Bham, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel123f77s,NBKERNEL123F77S)
+nb_kernel123_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel123nff77s,NBKERNEL123NFF77S)
+nb_kernel123nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL123_F77S_H_ */
+#endif /* _NBKERNEL123_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL124_F77S_H_
-#define _NBKERNEL124_F77S_H_
+#ifndef _NBKERNEL124_F77D_H_
+#define _NBKERNEL124_F77D_H_
-/*! \file nbkernel124.h
+/*! \file nb_kernel124_f77_double.h
* \brief Nonbonded kernel 124 (Coul + Bham, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel124f77s,NBKERNEL124F77S)
+nb_kernel124_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel124nff77s,NBKERNEL124NFF77S)
+nb_kernel124nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL124_F77S_H_ */
+#endif /* _NBKERNEL124_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL130_F77S_H_
-#define _NBKERNEL130_F77S_H_
+#ifndef _NBKERNEL130_F77D_H_
+#define _NBKERNEL130_F77D_H_
-/*! \file nbkernel130.h
+/*! \file nb_kernel130_f77_double.h
* \brief Nonbonded kernel 130 (Coul + Tab VdW)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel130f77s,NBKERNEL130F77S)
+nb_kernel130_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel130nff77s,NBKERNEL130NFF77S)
+nb_kernel130nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL130_F77S_H_ */
+#endif /* _NBKERNEL130_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL131_F77S_H_
-#define _NBKERNEL131_F77S_H_
+#ifndef _NBKERNEL131_F77D_H_
+#define _NBKERNEL131_F77D_H_
-/*! \file nbkernel131.h
+/*! \file nb_kernel131_f77_double.h
* \brief Nonbonded kernel 131 (Coul + Tab VdW, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel131f77s,NBKERNEL131F77S)
+nb_kernel131_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel131nff77s,NBKERNEL131NFF77S)
+nb_kernel131nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL131_F77S_H_ */
+#endif /* _NBKERNEL131_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL132_F77S_H_
-#define _NBKERNEL132_F77S_H_
+#ifndef _NBKERNEL132_F77D_H_
+#define _NBKERNEL132_F77D_H_
-/*! \file nbkernel132.h
+/*! \file nb_kernel132_f77_double.h
* \brief Nonbonded kernel 132 (Coul + Tab VdW, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel132f77s,NBKERNEL132F77S)
+nb_kernel132_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel132nff77s,NBKERNEL132NFF77S)
+nb_kernel132nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL132_F77S_H_ */
+#endif /* _NBKERNEL132_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL133_F77S_H_
-#define _NBKERNEL133_F77S_H_
+#ifndef _NBKERNEL133_F77D_H_
+#define _NBKERNEL133_F77D_H_
-/*! \file nbkernel133.h
+/*! \file nb_kernel133_f77_double.h
* \brief Nonbonded kernel 133 (Coul + Tab VdW, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel133f77s,NBKERNEL133F77S)
+nb_kernel133_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel133nff77s,NBKERNEL133NFF77S)
+nb_kernel133nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL133_F77S_H_ */
+#endif /* _NBKERNEL133_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL134_F77S_H_
-#define _NBKERNEL134_F77S_H_
+#ifndef _NBKERNEL134_F77D_H_
+#define _NBKERNEL134_F77D_H_
-/*! \file nbkernel134.h
+/*! \file nb_kernel134_f77_double.h
* \brief Nonbonded kernel 134 (Coul + Tab VdW, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel134f77s,NBKERNEL134F77S)
+nb_kernel134_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel134nff77s,NBKERNEL134NFF77S)
+nb_kernel134nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL134_F77S_H_ */
+#endif /* _NBKERNEL134_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL200_F77S_H_
-#define _NBKERNEL200_F77S_H_
+#ifndef _NBKERNEL200_F77D_H_
+#define _NBKERNEL200_F77D_H_
-/*! \file nbkernel200.h
+/*! \file nb_kernel200_f77_double.h
* \brief Nonbonded kernel 200 (RF Coul)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel200f77s,NBKERNEL200F77S)
+nb_kernel200_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel200nff77s,NBKERNEL200NFF77S)
+nb_kernel200nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL200_F77S_H_ */
+#endif /* _NBKERNEL200_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL201_F77S_H_
-#define _NBKERNEL201_F77S_H_
+#ifndef _NBKERNEL201_F77D_H_
+#define _NBKERNEL201_F77D_H_
-/*! \file nbkernel201.h
+/*! \file nb_kernel201_f77_double.h
* \brief Nonbonded kernel 201 (RF Coul, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel201f77s,NBKERNEL201F77S)
+nb_kernel201_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel201nff77s,NBKERNEL201NFF77S)
+nb_kernel201nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL201_F77S_H_ */
+#endif /* _NBKERNEL201_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL202_F77S_H_
-#define _NBKERNEL202_F77S_H_
+#ifndef _NBKERNEL202_F77D_H_
+#define _NBKERNEL202_F77D_H_
-/*! \file nbkernel202.h
+/*! \file nb_kernel202_f77_double.h
* \brief Nonbonded kernel 202 (RF Coul, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel202f77s,NBKERNEL202F77S)
+nb_kernel202_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel202nff77s,NBKERNEL202NFF77S)
+nb_kernel202nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL202_F77S_H_ */
+#endif /* _NBKERNEL202_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL203_F77S_H_
-#define _NBKERNEL203_F77S_H_
+#ifndef _NBKERNEL203_F77D_H_
+#define _NBKERNEL203_F77D_H_
-/*! \file nbkernel203.h
+/*! \file nb_kernel203_f77_double.h
* \brief Nonbonded kernel 203 (RF Coul, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel203f77s,NBKERNEL203F77S)
+nb_kernel203_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel203nff77s,NBKERNEL203NFF77S)
+nb_kernel203nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL203_F77S_H_ */
+#endif /* _NBKERNEL203_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL204_F77S_H_
-#define _NBKERNEL204_F77S_H_
+#ifndef _NBKERNEL204_F77D_H_
+#define _NBKERNEL204_F77D_H_
-/*! \file nbkernel204.h
+/*! \file nb_kernel204_f77_double.h
* \brief Nonbonded kernel 204 (RF Coul, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel204f77s,NBKERNEL204F77S)
+nb_kernel204_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel204nff77s,NBKERNEL204NFF77S)
+nb_kernel204nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL204_F77S_H_ */
+#endif /* _NBKERNEL204_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL210_F77S_H_
-#define _NBKERNEL210_F77S_H_
+#ifndef _NBKERNEL210_F77D_H_
+#define _NBKERNEL210_F77D_H_
-/*! \file nbkernel210.h
+/*! \file nb_kernel210_f77_double.h
* \brief Nonbonded kernel 210 (RF Coul + LJ)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel210f77s,NBKERNEL210F77S)
+nb_kernel210_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel210nff77s,NBKERNEL210NFF77S)
+nb_kernel210nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL210_F77S_H_ */
+#endif /* _NBKERNEL210_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL211_F77S_H_
-#define _NBKERNEL211_F77S_H_
+#ifndef _NBKERNEL211_F77D_H_
+#define _NBKERNEL211_F77D_H_
-/*! \file nbkernel211.h
+/*! \file nb_kernel211_f77_double.h
* \brief Nonbonded kernel 211 (RF Coul + LJ, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel211f77s,NBKERNEL211F77S)
+nb_kernel211_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel211nff77s,NBKERNEL211NFF77S)
+nb_kernel211nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL211_F77S_H_ */
+#endif /* _NBKERNEL211_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL212_F77S_H_
-#define _NBKERNEL212_F77S_H_
+#ifndef _NBKERNEL212_F77D_H_
+#define _NBKERNEL212_F77D_H_
-/*! \file nbkernel212.h
+/*! \file nb_kernel212_f77_double.h
* \brief Nonbonded kernel 212 (RF Coul + LJ, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel212f77s,NBKERNEL212F77S)
+nb_kernel212_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel212nff77s,NBKERNEL212NFF77S)
+nb_kernel212nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL212_F77S_H_ */
+#endif /* _NBKERNEL212_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL213_F77S_H_
-#define _NBKERNEL213_F77S_H_
+#ifndef _NBKERNEL213_F77D_H_
+#define _NBKERNEL213_F77D_H_
-/*! \file nbkernel213.h
+/*! \file nb_kernel213_f77_double.h
* \brief Nonbonded kernel 213 (RF Coul + LJ, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel213f77s,NBKERNEL213F77S)
+nb_kernel213_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel213nff77s,NBKERNEL213NFF77S)
+nb_kernel213nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL213_F77S_H_ */
+#endif /* _NBKERNEL213_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL214_F77S_H_
-#define _NBKERNEL214_F77S_H_
+#ifndef _NBKERNEL214_F77D_H_
+#define _NBKERNEL214_F77D_H_
-/*! \file nbkernel214.h
+/*! \file nb_kernel214_f77_double.h
* \brief Nonbonded kernel 214 (RF Coul + LJ, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel214f77s,NBKERNEL214F77S)
+nb_kernel214_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel214nff77s,NBKERNEL214NFF77S)
+nb_kernel214nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL214_F77S_H_ */
+#endif /* _NBKERNEL214_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL220_F77S_H_
-#define _NBKERNEL220_F77S_H_
+#ifndef _NBKERNEL220_F77D_H_
+#define _NBKERNEL220_F77D_H_
-/*! \file nbkernel220.h
+/*! \file nb_kernel220_f77_double.h
* \brief Nonbonded kernel 220 (RF Coul + Bham)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel220f77s,NBKERNEL220F77S)
+nb_kernel220_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel220nff77s,NBKERNEL220NFF77S)
+nb_kernel220nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL220_F77S_H_ */
+#endif /* _NBKERNEL220_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL221_F77S_H_
-#define _NBKERNEL221_F77S_H_
+#ifndef _NBKERNEL221_F77D_H_
+#define _NBKERNEL221_F77D_H_
-/*! \file nbkernel221.h
+/*! \file nb_kernel221_f77_double.h
* \brief Nonbonded kernel 221 (RF Coul + Bham, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel221f77s,NBKERNEL221F77S)
+nb_kernel221_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel221nff77s,NBKERNEL221NFF77S)
+nb_kernel221nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL221_F77S_H_ */
+#endif /* _NBKERNEL221_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL222_F77S_H_
-#define _NBKERNEL222_F77S_H_
+#ifndef _NBKERNEL222_F77D_H_
+#define _NBKERNEL222_F77D_H_
-/*! \file nbkernel222.h
+/*! \file nb_kernel222_f77_double.h
* \brief Nonbonded kernel 222 (RF Coul + Bham, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel222f77s,NBKERNEL222F77S)
+nb_kernel222_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel222nff77s,NBKERNEL222NFF77S)
+nb_kernel222nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL222_F77S_H_ */
+#endif /* _NBKERNEL222_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL223_F77S_H_
-#define _NBKERNEL223_F77S_H_
+#ifndef _NBKERNEL223_F77D_H_
+#define _NBKERNEL223_F77D_H_
-/*! \file nbkernel223.h
+/*! \file nb_kernel223_f77_double.h
* \brief Nonbonded kernel 223 (RF Coul + Bham, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel223f77s,NBKERNEL223F77S)
+nb_kernel223_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel223nff77s,NBKERNEL223NFF77S)
+nb_kernel223nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL223_F77S_H_ */
+#endif /* _NBKERNEL223_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL224_F77S_H_
-#define _NBKERNEL224_F77S_H_
+#ifndef _NBKERNEL224_F77D_H_
+#define _NBKERNEL224_F77D_H_
-/*! \file nbkernel224.h
+/*! \file nb_kernel224_f77_double.h
* \brief Nonbonded kernel 224 (RF Coul + Bham, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel224f77s,NBKERNEL224F77S)
+nb_kernel224_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel224nff77s,NBKERNEL224NFF77S)
+nb_kernel224nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL224_F77S_H_ */
+#endif /* _NBKERNEL224_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL230_F77S_H_
-#define _NBKERNEL230_F77S_H_
+#ifndef _NBKERNEL230_F77D_H_
+#define _NBKERNEL230_F77D_H_
-/*! \file nbkernel230.h
+/*! \file nb_kernel230_f77_double.h
* \brief Nonbonded kernel 230 (RF Coul + Tab VdW)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel230f77s,NBKERNEL230F77S)
+nb_kernel230_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel230nff77s,NBKERNEL230NFF77S)
+nb_kernel230nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL230_F77S_H_ */
+#endif /* _NBKERNEL230_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL231_F77S_H_
-#define _NBKERNEL231_F77S_H_
+#ifndef _NBKERNEL231_F77D_H_
+#define _NBKERNEL231_F77D_H_
-/*! \file nbkernel231.h
+/*! \file nb_kernel231_f77_double.h
* \brief Nonbonded kernel 231 (RF Coul + Tab VdW, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel231f77s,NBKERNEL231F77S)
+nb_kernel231_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel231nff77s,NBKERNEL231NFF77S)
+nb_kernel231nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL231_F77S_H_ */
+#endif /* _NBKERNEL231_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL232_F77S_H_
-#define _NBKERNEL232_F77S_H_
+#ifndef _NBKERNEL232_F77D_H_
+#define _NBKERNEL232_F77D_H_
-/*! \file nbkernel232.h
+/*! \file nb_kernel232_f77_double.h
* \brief Nonbonded kernel 232 (RF Coul + Tab VdW, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel232f77s,NBKERNEL232F77S)
+nb_kernel232_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel232nff77s,NBKERNEL232NFF77S)
+nb_kernel232nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL232_F77S_H_ */
+#endif /* _NBKERNEL232_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL233_F77S_H_
-#define _NBKERNEL233_F77S_H_
+#ifndef _NBKERNEL233_F77D_H_
+#define _NBKERNEL233_F77D_H_
-/*! \file nbkernel233.h
+/*! \file nb_kernel233_f77_double.h
* \brief Nonbonded kernel 233 (RF Coul + Tab VdW, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel233f77s,NBKERNEL233F77S)
+nb_kernel233_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel233nff77s,NBKERNEL233NFF77S)
+nb_kernel233nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL233_F77S_H_ */
+#endif /* _NBKERNEL233_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL234_F77S_H_
-#define _NBKERNEL234_F77S_H_
+#ifndef _NBKERNEL234_F77D_H_
+#define _NBKERNEL234_F77D_H_
-/*! \file nbkernel234.h
+/*! \file nb_kernel234_f77_double.h
* \brief Nonbonded kernel 234 (RF Coul + Tab VdW, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel234f77s,NBKERNEL234F77S)
+nb_kernel234_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel234nff77s,NBKERNEL234NFF77S)
+nb_kernel234nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL234_F77S_H_ */
+#endif /* _NBKERNEL234_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL300_F77S_H_
-#define _NBKERNEL300_F77S_H_
+#ifndef _NBKERNEL300_F77D_H_
+#define _NBKERNEL300_F77D_H_
-/*! \file nbkernel300.h
+/*! \file nb_kernel300_f77_double.h
* \brief Nonbonded kernel 300 (Tab Coul)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel300f77s,NBKERNEL300F77S)
+nb_kernel300_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel300nff77s,NBKERNEL300NFF77S)
+nb_kernel300nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL300_F77S_H_ */
+#endif /* _NBKERNEL300_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL301_F77S_H_
-#define _NBKERNEL301_F77S_H_
+#ifndef _NBKERNEL301_F77D_H_
+#define _NBKERNEL301_F77D_H_
-/*! \file nbkernel301.h
+/*! \file nb_kernel301_f77_double.h
* \brief Nonbonded kernel 301 (Tab Coul, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel301f77s,NBKERNEL301F77S)
+nb_kernel301_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel301nff77s,NBKERNEL301NFF77S)
+nb_kernel301nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL301_F77S_H_ */
+#endif /* _NBKERNEL301_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL302_F77S_H_
-#define _NBKERNEL302_F77S_H_
+#ifndef _NBKERNEL302_F77D_H_
+#define _NBKERNEL302_F77D_H_
-/*! \file nbkernel302.h
+/*! \file nb_kernel302_f77_double.h
* \brief Nonbonded kernel 302 (Tab Coul, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel302f77s,NBKERNEL302F77S)
+nb_kernel302_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel302nff77s,NBKERNEL302NFF77S)
+nb_kernel302nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL302_F77S_H_ */
+#endif /* _NBKERNEL302_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL303_F77S_H_
-#define _NBKERNEL303_F77S_H_
+#ifndef _NBKERNEL303_F77D_H_
+#define _NBKERNEL303_F77D_H_
-/*! \file nbkernel303.h
+/*! \file nb_kernel303_f77_double.h
* \brief Nonbonded kernel 303 (Tab Coul, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel303f77s,NBKERNEL303F77S)
+nb_kernel303_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel303nff77s,NBKERNEL303NFF77S)
+nb_kernel303nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL303_F77S_H_ */
+#endif /* _NBKERNEL303_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL304_F77S_H_
-#define _NBKERNEL304_F77S_H_
+#ifndef _NBKERNEL304_F77D_H_
+#define _NBKERNEL304_F77D_H_
-/*! \file nbkernel304.h
+/*! \file nb_kernel304_f77_double.h
* \brief Nonbonded kernel 304 (Tab Coul, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel304f77s,NBKERNEL304F77S)
+nb_kernel304_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel304nff77s,NBKERNEL304NFF77S)
+nb_kernel304nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL304_F77S_H_ */
+#endif /* _NBKERNEL304_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL310_F77S_H_
-#define _NBKERNEL310_F77S_H_
+#ifndef _NBKERNEL310_F77D_H_
+#define _NBKERNEL310_F77D_H_
-/*! \file nbkernel310.h
+/*! \file nb_kernel310_f77_double.h
* \brief Nonbonded kernel 310 (Tab Coul + LJ)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel310f77s,NBKERNEL310F77S)
+nb_kernel310_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel310nff77s,NBKERNEL310NFF77S)
+nb_kernel310nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL310_F77S_H_ */
+#endif /* _NBKERNEL310_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL311_F77S_H_
-#define _NBKERNEL311_F77S_H_
+#ifndef _NBKERNEL311_F77D_H_
+#define _NBKERNEL311_F77D_H_
-/*! \file nbkernel311.h
+/*! \file nb_kernel311_f77_double.h
* \brief Nonbonded kernel 311 (Tab Coul + LJ, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel311f77s,NBKERNEL311F77S)
+nb_kernel311_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel311nff77s,NBKERNEL311NFF77S)
+nb_kernel311nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL311_F77S_H_ */
+#endif /* _NBKERNEL311_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL312_F77S_H_
-#define _NBKERNEL312_F77S_H_
+#ifndef _NBKERNEL312_F77D_H_
+#define _NBKERNEL312_F77D_H_
-/*! \file nbkernel312.h
+/*! \file nb_kernel312_f77_double.h
* \brief Nonbonded kernel 312 (Tab Coul + LJ, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel312f77s,NBKERNEL312F77S)
+nb_kernel312_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel312nff77s,NBKERNEL312NFF77S)
+nb_kernel312nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL312_F77S_H_ */
+#endif /* _NBKERNEL312_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL313_F77S_H_
-#define _NBKERNEL313_F77S_H_
+#ifndef _NBKERNEL313_F77D_H_
+#define _NBKERNEL313_F77D_H_
-/*! \file nbkernel313.h
+/*! \file nb_kernel313_f77_double.h
* \brief Nonbonded kernel 313 (Tab Coul + LJ, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel313f77s,NBKERNEL313F77S)
+nb_kernel313_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel313nff77s,NBKERNEL313NFF77S)
+nb_kernel313nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL313_F77S_H_ */
+#endif /* _NBKERNEL313_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL314_F77S_H_
-#define _NBKERNEL314_F77S_H_
+#ifndef _NBKERNEL314_F77D_H_
+#define _NBKERNEL314_F77D_H_
-/*! \file nbkernel314.h
+/*! \file nb_kernel314_f77_double.h
* \brief Nonbonded kernel 314 (Tab Coul + LJ, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel314f77s,NBKERNEL314F77S)
+nb_kernel314_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel314nff77s,NBKERNEL314NFF77S)
+nb_kernel314nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL314_F77S_H_ */
+#endif /* _NBKERNEL314_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL320_F77S_H_
-#define _NBKERNEL320_F77S_H_
+#ifndef _NBKERNEL320_F77D_H_
+#define _NBKERNEL320_F77D_H_
-/*! \file nbkernel320.h
+/*! \file nb_kernel320_f77_double.h
* \brief Nonbonded kernel 320 (Tab Coul + Bham)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel320f77s,NBKERNEL320F77S)
+nb_kernel320_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel320nff77s,NBKERNEL320NFF77S)
+nb_kernel320nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL320_F77S_H_ */
+#endif /* _NBKERNEL320_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL321_F77S_H_
-#define _NBKERNEL321_F77S_H_
+#ifndef _NBKERNEL321_F77D_H_
+#define _NBKERNEL321_F77D_H_
-/*! \file nbkernel321.h
+/*! \file nb_kernel321_f77_double.h
* \brief Nonbonded kernel 321 (Tab Coul + Bham, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel321f77s,NBKERNEL321F77S)
+nb_kernel321_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel321nff77s,NBKERNEL321NFF77S)
+nb_kernel321nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL321_F77S_H_ */
+#endif /* _NBKERNEL321_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL322_F77S_H_
-#define _NBKERNEL322_F77S_H_
+#ifndef _NBKERNEL322_F77D_H_
+#define _NBKERNEL322_F77D_H_
-/*! \file nbkernel322.h
+/*! \file nb_kernel322_f77_double.h
* \brief Nonbonded kernel 322 (Tab Coul + Bham, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel322f77s,NBKERNEL322F77S)
+nb_kernel322_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel322nff77s,NBKERNEL322NFF77S)
+nb_kernel322nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL322_F77S_H_ */
+#endif /* _NBKERNEL322_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL323_F77S_H_
-#define _NBKERNEL323_F77S_H_
+#ifndef _NBKERNEL323_F77D_H_
+#define _NBKERNEL323_F77D_H_
-/*! \file nbkernel323.h
+/*! \file nb_kernel323_f77_double.h
* \brief Nonbonded kernel 323 (Tab Coul + Bham, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel323f77s,NBKERNEL323F77S)
+nb_kernel323_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel323nff77s,NBKERNEL323NFF77S)
+nb_kernel323nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL323_F77S_H_ */
+#endif /* _NBKERNEL323_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL324_F77S_H_
-#define _NBKERNEL324_F77S_H_
+#ifndef _NBKERNEL324_F77D_H_
+#define _NBKERNEL324_F77D_H_
-/*! \file nbkernel324.h
+/*! \file nb_kernel324_f77_double.h
* \brief Nonbonded kernel 324 (Tab Coul + Bham, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel324f77s,NBKERNEL324F77S)
+nb_kernel324_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel324nff77s,NBKERNEL324NFF77S)
+nb_kernel324nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL324_F77S_H_ */
+#endif /* _NBKERNEL324_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL330_F77S_H_
-#define _NBKERNEL330_F77S_H_
+#ifndef _NBKERNEL330_F77D_H_
+#define _NBKERNEL330_F77D_H_
-/*! \file nbkernel330.h
+/*! \file nb_kernel330_f77_double.h
* \brief Nonbonded kernel 330 (Tab Coul + Tab VdW)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel330f77s,NBKERNEL330F77S)
+nb_kernel330_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel330nff77s,NBKERNEL330NFF77S)
+nb_kernel330nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL330_F77S_H_ */
+#endif /* _NBKERNEL330_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL331_F77S_H_
-#define _NBKERNEL331_F77S_H_
+#ifndef _NBKERNEL331_F77D_H_
+#define _NBKERNEL331_F77D_H_
-/*! \file nbkernel331.h
+/*! \file nb_kernel331_f77_double.h
* \brief Nonbonded kernel 331 (Tab Coul + Tab VdW, SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel331f77s,NBKERNEL331F77S)
+nb_kernel331_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel331nff77s,NBKERNEL331NFF77S)
+nb_kernel331nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL331_F77S_H_ */
+#endif /* _NBKERNEL331_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL332_F77S_H_
-#define _NBKERNEL332_F77S_H_
+#ifndef _NBKERNEL332_F77D_H_
+#define _NBKERNEL332_F77D_H_
-/*! \file nbkernel332.h
+/*! \file nb_kernel332_f77_double.h
* \brief Nonbonded kernel 332 (Tab Coul + Tab VdW, SPC-SPC)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel332f77s,NBKERNEL332F77S)
+nb_kernel332_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel332nff77s,NBKERNEL332NFF77S)
+nb_kernel332nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL332_F77S_H_ */
+#endif /* _NBKERNEL332_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL333_F77S_H_
-#define _NBKERNEL333_F77S_H_
+#ifndef _NBKERNEL333_F77D_H_
+#define _NBKERNEL333_F77D_H_
-/*! \file nbkernel333.h
+/*! \file nb_kernel333_f77_double.h
* \brief Nonbonded kernel 333 (Tab Coul + Tab VdW, TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel333f77s,NBKERNEL333F77S)
+nb_kernel333_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel333nff77s,NBKERNEL333NFF77S)
+nb_kernel333nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL333_F77S_H_ */
+#endif /* _NBKERNEL333_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL334_F77S_H_
-#define _NBKERNEL334_F77S_H_
+#ifndef _NBKERNEL334_F77D_H_
+#define _NBKERNEL334_F77D_H_
-/*! \file nbkernel334.h
+/*! \file nb_kernel334_f77_double.h
* \brief Nonbonded kernel 334 (Tab Coul + Tab VdW, TIP4p-TIP4p)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel334f77s,NBKERNEL334F77S)
+nb_kernel334_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel334nff77s,NBKERNEL334NFF77S)
+nb_kernel334nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL334_F77S_H_ */
+#endif /* _NBKERNEL334_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL400_F77S_H_
-#define _NBKERNEL400_F77S_H_
+#ifndef _NBKERNEL400_F77D_H_
+#define _NBKERNEL400_F77D_H_
-/*! \file nbkernel400.h
+/*! \file nb_kernel400_f77_double.h
* \brief Nonbonded kernel 400 (GB Coul)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel400f77s,NBKERNEL400F77S)
+nb_kernel400_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel400nff77s,NBKERNEL400NFF77S)
+nb_kernel400nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL400_F77S_H_ */
+#endif /* _NBKERNEL400_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL410_F77S_H_
-#define _NBKERNEL410_F77S_H_
+#ifndef _NBKERNEL410_F77D_H_
+#define _NBKERNEL410_F77D_H_
-/*! \file nbkernel410.h
+/*! \file nb_kernel410_f77_double.h
* \brief Nonbonded kernel 410 (GB Coul + LJ)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel410f77s,NBKERNEL410F77S)
+nb_kernel410_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel410nff77s,NBKERNEL410NFF77S)
+nb_kernel410nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL410_F77S_H_ */
+#endif /* _NBKERNEL410_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL420_F77S_H_
-#define _NBKERNEL420_F77S_H_
+#ifndef _NBKERNEL420_F77D_H_
+#define _NBKERNEL420_F77D_H_
-/*! \file nbkernel420.h
+/*! \file nb_kernel420_f77_double.h
* \brief Nonbonded kernel 420 (GB Coul + Bham)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel420f77s,NBKERNEL420F77S)
+nb_kernel420_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel420nff77s,NBKERNEL420NFF77S)
+nb_kernel420nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL420_F77S_H_ */
+#endif /* _NBKERNEL420_F77D_H_ */
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int * jindex, int * jjnr,
int * shift, double * shiftvec,
double * fshift, int * gid,
- double * pos, double * faction,
- double * charge, double * facel,
- double * krf, double * crf,
+ double * pos, double* faction,
+ double * charge, double* facel,
+ double * krf, double* crf,
double * Vc, int * type,
int * ntype, double * vdwparam,
- double * Vvdw, double * tabscale,
- double * VFtab, double * invsqrta,
- double * dvda, double * gbtabscale,
+ double * Vvdw, double* tabscale,
+ double * VFtab, double* invsqrta,
+ double * dvda, double* gbtabscale,
double * GBtab, int * nthreads,
int * count, void * mtx,
int * outeriter, int * inneriter,
int jindex[], int jjnr[],
int shift[], double shiftvec[],
double fshift[], int gid[],
- double pos[], double faction[],
+ double pos[], double faction[],
double charge[], double * facel,
- double * krf, double * crf,
+ double * krf, double* crf,
double Vc[], int type[],
int * ntype, double vdwparam[],
double Vvdw[], double * tabscale,
- double VFtab[], double invsqrta[],
+ double VFtab[], double invsqrta[],
double dvda[], double * gbtabscale,
double GBtab[], int * nthreads,
int * count, void * mtx,
* To help fund GROMACS development, we humbly ask that you cite
* the papers people have written on it - you can find them on the website!
*/
-#ifndef _NBKERNEL430_F77S_H_
-#define _NBKERNEL430_F77S_H_
+#ifndef _NBKERNEL430_F77D_H_
+#define _NBKERNEL430_F77D_H_
-/*! \file nbkernel430.h
+/*! \file nb_kernel430_f77_double.h
* \brief Nonbonded kernel 430 (GB Coul + Tab VdW)
*
* \internal
* <b>Forces calculated:</b> Yes <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel430f77s,NBKERNEL430F77S)
+nb_kernel430_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
* <b>Forces calculated:</b> No <br>
*
* \note All level1 and level2 nonbonded kernels use the same
- * call sequence. Parameters are documented in nbkernel.h
+ * call sequence. Parameters are documented in nb_kernel_f77_double.h
*/
void
-F77_FUNC(nbkernel430nff77s,NBKERNEL430NFF77S)
+nb_kernel430nf_f77_double
(int * nri, int iinr[],
int jindex[], int jjnr[],
int shift[], real shiftvec[],
}
#endif
-#endif /* _NBKERNEL430_F77S_H_ */
+#endif /* _NBKERNEL430_F77D_H_ */
/* Include standard kernel headers in local directory */
-#include "nbkernel010_f77_double.h"
-#include "nbkernel020_f77_double.h"
-#include "nbkernel030_f77_double.h"
-#include "nbkernel100_f77_double.h"
-#include "nbkernel101_f77_double.h"
-#include "nbkernel102_f77_double.h"
-#include "nbkernel103_f77_double.h"
-#include "nbkernel104_f77_double.h"
-#include "nbkernel110_f77_double.h"
-#include "nbkernel111_f77_double.h"
-#include "nbkernel112_f77_double.h"
-#include "nbkernel113_f77_double.h"
-#include "nbkernel114_f77_double.h"
-#include "nbkernel120_f77_double.h"
-#include "nbkernel121_f77_double.h"
-#include "nbkernel122_f77_double.h"
-#include "nbkernel123_f77_double.h"
-#include "nbkernel124_f77_double.h"
-#include "nbkernel130_f77_double.h"
-#include "nbkernel131_f77_double.h"
-#include "nbkernel132_f77_double.h"
-#include "nbkernel133_f77_double.h"
-#include "nbkernel134_f77_double.h"
-#include "nbkernel200_f77_double.h"
-#include "nbkernel201_f77_double.h"
-#include "nbkernel202_f77_double.h"
-#include "nbkernel203_f77_double.h"
-#include "nbkernel204_f77_double.h"
-#include "nbkernel210_f77_double.h"
-#include "nbkernel211_f77_double.h"
-#include "nbkernel212_f77_double.h"
-#include "nbkernel213_f77_double.h"
-#include "nbkernel214_f77_double.h"
-#include "nbkernel220_f77_double.h"
-#include "nbkernel221_f77_double.h"
-#include "nbkernel222_f77_double.h"
-#include "nbkernel223_f77_double.h"
-#include "nbkernel224_f77_double.h"
-#include "nbkernel230_f77_double.h"
-#include "nbkernel231_f77_double.h"
-#include "nbkernel232_f77_double.h"
-#include "nbkernel233_f77_double.h"
-#include "nbkernel234_f77_double.h"
-#include "nbkernel300_f77_double.h"
-#include "nbkernel301_f77_double.h"
-#include "nbkernel302_f77_double.h"
-#include "nbkernel303_f77_double.h"
-#include "nbkernel304_f77_double.h"
-#include "nbkernel310_f77_double.h"
-#include "nbkernel311_f77_double.h"
-#include "nbkernel312_f77_double.h"
-#include "nbkernel313_f77_double.h"
-#include "nbkernel314_f77_double.h"
-#include "nbkernel320_f77_double.h"
-#include "nbkernel321_f77_double.h"
-#include "nbkernel322_f77_double.h"
-#include "nbkernel323_f77_double.h"
-#include "nbkernel324_f77_double.h"
-#include "nbkernel330_f77_double.h"
-#include "nbkernel331_f77_double.h"
-#include "nbkernel332_f77_double.h"
-#include "nbkernel333_f77_double.h"
-#include "nbkernel334_f77_double.h"
-#include "nbkernel400_f77_double.h"
-#include "nbkernel410_f77_double.h"
-#include "nbkernel420_f77_double.h"
-#include "nbkernel430_f77_double.h"
+#include "nb_kernel010_f77_double.h"
+#include "nb_kernel020_f77_double.h"
+#include "nb_kernel030_f77_double.h"
+#include "nb_kernel100_f77_double.h"
+#include "nb_kernel101_f77_double.h"
+#include "nb_kernel102_f77_double.h"
+#include "nb_kernel103_f77_double.h"
+#include "nb_kernel104_f77_double.h"
+#include "nb_kernel110_f77_double.h"
+#include "nb_kernel111_f77_double.h"
+#include "nb_kernel112_f77_double.h"
+#include "nb_kernel113_f77_double.h"
+#include "nb_kernel114_f77_double.h"
+#include "nb_kernel120_f77_double.h"
+#include "nb_kernel121_f77_double.h"
+#include "nb_kernel122_f77_double.h"
+#include "nb_kernel123_f77_double.h"
+#include "nb_kernel124_f77_double.h"
+#include "nb_kernel130_f77_double.h"
+#include "nb_kernel131_f77_double.h"
+#include "nb_kernel132_f77_double.h"
+#include "nb_kernel133_f77_double.h"
+#include "nb_kernel134_f77_double.h"
+#include "nb_kernel200_f77_double.h"
+#include "nb_kernel201_f77_double.h"
+#include "nb_kernel202_f77_double.h"
+#include "nb_kernel203_f77_double.h"
+#include "nb_kernel204_f77_double.h"
+#include "nb_kernel210_f77_double.h"
+#include "nb_kernel211_f77_double.h"
+#include "nb_kernel212_f77_double.h"
+#include "nb_kernel213_f77_double.h"
+#include "nb_kernel214_f77_double.h"
+#include "nb_kernel220_f77_double.h"
+#include "nb_kernel221_f77_double.h"
+#include "nb_kernel222_f77_double.h"
+#include "nb_kernel223_f77_double.h"
+#include "nb_kernel224_f77_double.h"
+#include "nb_kernel230_f77_double.h"
+#include "nb_kernel231_f77_double.h"
+#include "nb_kernel232_f77_double.h"
+#include "nb_kernel233_f77_double.h"
+#include "nb_kernel234_f77_double.h"
+#include "nb_kernel300_f77_double.h"
+#include "nb_kernel301_f77_double.h"
+#include "nb_kernel302_f77_double.h"
+#include "nb_kernel303_f77_double.h"
+#include "nb_kernel304_f77_double.h"
+#include "nb_kernel310_f77_double.h"
+#include "nb_kernel311_f77_double.h"
+#include "nb_kernel312_f77_double.h"
+#include "nb_kernel313_f77_double.h"
+#include "nb_kernel314_f77_double.h"
+#include "nb_kernel320_f77_double.h"
+#include "nb_kernel321_f77_double.h"
+#include "nb_kernel322_f77_double.h"
+#include "nb_kernel323_f77_double.h"
+#include "nb_kernel324_f77_double.h"
+#include "nb_kernel330_f77_double.h"
+#include "nb_kernel331_f77_double.h"
+#include "nb_kernel332_f77_double.h"
+#include "nb_kernel333_f77_double.h"
+#include "nb_kernel334_f77_double.h"
+#include "nb_kernel400_f77_double.h"
+#include "nb_kernel410_f77_double.h"
+#include "nb_kernel420_f77_double.h"
+#include "nb_kernel430_f77_double.h"
static nb_kernel_t *
kernellist[eNR_NBKERNEL_NR] =
{
- nbkernel010_f77_double,
- nbkernel020_f77_double,
- nbkernel030_f77_double,
- nbkernel100_f77_double,
- nbkernel101_f77_double,
- nbkernel102_f77_double,
- nbkernel103_f77_double,
- nbkernel104_f77_double,
- nbkernel110_f77_double,
- nbkernel111_f77_double,
- nbkernel112_f77_double,
- nbkernel113_f77_double,
- nbkernel114_f77_double,
- nbkernel120_f77_double,
- nbkernel121_f77_double,
- nbkernel122_f77_double,
- nbkernel123_f77_double,
- nbkernel124_f77_double,
- nbkernel130_f77_double,
- nbkernel131_f77_double,
- nbkernel132_f77_double,
- nbkernel133_f77_double,
- nbkernel134_f77_double,
- nbkernel200_f77_double,
- nbkernel201_f77_double,
- nbkernel202_f77_double,
- nbkernel203_f77_double,
- nbkernel204_f77_double,
- nbkernel210_f77_double,
- nbkernel211_f77_double,
- nbkernel212_f77_double,
- nbkernel213_f77_double,
- nbkernel214_f77_double,
- nbkernel220_f77_double,
- nbkernel221_f77_double,
- nbkernel222_f77_double,
- nbkernel223_f77_double,
- nbkernel224_f77_double,
- nbkernel230_f77_double,
- nbkernel231_f77_double,
- nbkernel232_f77_double,
- nbkernel233_f77_double,
- nbkernel234_f77_double,
- nbkernel300_f77_double,
- nbkernel301_f77_double,
- nbkernel302_f77_double,
- nbkernel303_f77_double,
- nbkernel304_f77_double,
- nbkernel310_f77_double,
- nbkernel311_f77_double,
- nbkernel312_f77_double,
- nbkernel313_f77_double,
- nbkernel314_f77_double,
- nbkernel320_f77_double,
- nbkernel321_f77_double,
- nbkernel322_f77_double,
- nbkernel323_f77_double,
- nbkernel324_f77_double,
- nbkernel330_f77_double,
- nbkernel331_f77_double,
- nbkernel332_f77_double,
- nbkernel333_f77_double,
- nbkernel334_f77_double,
- nbkernel400_f77_double,
- nbkernel410_f77_double,
- nbkernel430_f77_double,
- nbkernel010nf_f77_double,
- nbkernel020nf_f77_double,
- nbkernel030nf_f77_double,
- nbkernel100nf_f77_double,
- nbkernel101nf_f77_double,
- nbkernel102nf_f77_double,
- nbkernel103nf_f77_double,
- nbkernel104nf_f77_double,
- nbkernel110nf_f77_double,
- nbkernel111nf_f77_double,
- nbkernel112nf_f77_double,
- nbkernel113nf_f77_double,
- nbkernel114nf_f77_double,
- nbkernel120nf_f77_double,
- nbkernel121nf_f77_double,
- nbkernel122nf_f77_double,
- nbkernel123nf_f77_double,
- nbkernel124nf_f77_double,
- nbkernel130nf_f77_double,
- nbkernel131nf_f77_double,
- nbkernel132nf_f77_double,
- nbkernel133nf_f77_double,
- nbkernel134nf_f77_double,
- nbkernel200nf_f77_double,
- nbkernel201nf_f77_double,
- nbkernel202nf_f77_double,
- nbkernel203nf_f77_double,
- nbkernel204nf_f77_double,
- nbkernel210nf_f77_double,
- nbkernel211nf_f77_double,
- nbkernel212nf_f77_double,
- nbkernel213nf_f77_double,
- nbkernel214nf_f77_double,
- nbkernel220nf_f77_double,
- nbkernel221nf_f77_double,
- nbkernel222nf_f77_double,
- nbkernel223nf_f77_double,
- nbkernel224nf_f77_double,
- nbkernel230nf_f77_double,
- nbkernel231nf_f77_double,
- nbkernel232nf_f77_double,
- nbkernel233nf_f77_double,
- nbkernel234nf_f77_double,
- nbkernel300nf_f77_double,
- nbkernel301nf_f77_double,
- nbkernel302nf_f77_double,
- nbkernel303nf_f77_double,
- nbkernel304nf_f77_double,
- nbkernel310nf_f77_double,
- nbkernel311nf_f77_double,
- nbkernel312nf_f77_double,
- nbkernel313nf_f77_double,
- nbkernel314nf_f77_double,
- nbkernel320nf_f77_double,
- nbkernel321nf_f77_double,
- nbkernel322nf_f77_double,
- nbkernel323nf_f77_double,
- nbkernel324nf_f77_double,
- nbkernel330nf_f77_double,
- nbkernel331nf_f77_double,
- nbkernel332nf_f77_double,
- nbkernel333nf_f77_double,
- nbkernel334nf_f77_double,
- nbkernel400nf_f77_double,
- nbkernel410nf_f77_double,
- nbkernel430nf_f77_double,
+ nb_kernel010_f77_double,
+ nb_kernel020_f77_double,
+ nb_kernel030_f77_double,
+ nb_kernel100_f77_double,
+ nb_kernel101_f77_double,
+ nb_kernel102_f77_double,
+ nb_kernel103_f77_double,
+ nb_kernel104_f77_double,
+ nb_kernel110_f77_double,
+ nb_kernel111_f77_double,
+ nb_kernel112_f77_double,
+ nb_kernel113_f77_double,
+ nb_kernel114_f77_double,
+ nb_kernel120_f77_double,
+ nb_kernel121_f77_double,
+ nb_kernel122_f77_double,
+ nb_kernel123_f77_double,
+ nb_kernel124_f77_double,
+ nb_kernel130_f77_double,
+ nb_kernel131_f77_double,
+ nb_kernel132_f77_double,
+ nb_kernel133_f77_double,
+ nb_kernel134_f77_double,
+ nb_kernel200_f77_double,
+ nb_kernel201_f77_double,
+ nb_kernel202_f77_double,
+ nb_kernel203_f77_double,
+ nb_kernel204_f77_double,
+ nb_kernel210_f77_double,
+ nb_kernel211_f77_double,
+ nb_kernel212_f77_double,
+ nb_kernel213_f77_double,
+ nb_kernel214_f77_double,
+ nb_kernel220_f77_double,
+ nb_kernel221_f77_double,
+ nb_kernel222_f77_double,
+ nb_kernel223_f77_double,
+ nb_kernel224_f77_double,
+ nb_kernel230_f77_double,
+ nb_kernel231_f77_double,
+ nb_kernel232_f77_double,
+ nb_kernel233_f77_double,
+ nb_kernel234_f77_double,
+ nb_kernel300_f77_double,
+ nb_kernel301_f77_double,
+ nb_kernel302_f77_double,
+ nb_kernel303_f77_double,
+ nb_kernel304_f77_double,
+ nb_kernel310_f77_double,
+ nb_kernel311_f77_double,
+ nb_kernel312_f77_double,
+ nb_kernel313_f77_double,
+ nb_kernel314_f77_double,
+ nb_kernel320_f77_double,
+ nb_kernel321_f77_double,
+ nb_kernel322_f77_double,
+ nb_kernel323_f77_double,
+ nb_kernel324_f77_double,
+ nb_kernel330_f77_double,
+ nb_kernel331_f77_double,
+ nb_kernel332_f77_double,
+ nb_kernel333_f77_double,
+ nb_kernel334_f77_double,
+ nb_kernel400_f77_double,
+ nb_kernel410_f77_double,
+ nb_kernel430_f77_double,
+ nb_kernel010nf_f77_double,
+ nb_kernel020nf_f77_double,
+ nb_kernel030nf_f77_double,
+ nb_kernel100nf_f77_double,
+ nb_kernel101nf_f77_double,
+ nb_kernel102nf_f77_double,
+ nb_kernel103nf_f77_double,
+ nb_kernel104nf_f77_double,
+ nb_kernel110nf_f77_double,
+ nb_kernel111nf_f77_double,
+ nb_kernel112nf_f77_double,
+ nb_kernel113nf_f77_double,
+ nb_kernel114nf_f77_double,
+ nb_kernel120nf_f77_double,
+ nb_kernel121nf_f77_double,
+ nb_kernel122nf_f77_double,
+ nb_kernel123nf_f77_double,
+ nb_kernel124nf_f77_double,
+ nb_kernel130nf_f77_double,
+ nb_kernel131nf_f77_double,
+ nb_kernel132nf_f77_double,
+ nb_kernel133nf_f77_double,
+ nb_kernel134nf_f77_double,
+ nb_kernel200nf_f77_double,
+ nb_kernel201nf_f77_double,
+ nb_kernel202nf_f77_double,
+ nb_kernel203nf_f77_double,
+ nb_kernel204nf_f77_double,
+ nb_kernel210nf_f77_double,
+ nb_kernel211nf_f77_double,
+ nb_kernel212nf_f77_double,
+ nb_kernel213nf_f77_double,
+ nb_kernel214nf_f77_double,
+ nb_kernel220nf_f77_double,
+ nb_kernel221nf_f77_double,
+ nb_kernel222nf_f77_double,
+ nb_kernel223nf_f77_double,
+ nb_kernel224nf_f77_double,
+ nb_kernel230nf_f77_double,
+ nb_kernel231nf_f77_double,
+ nb_kernel232nf_f77_double,
+ nb_kernel233nf_f77_double,
+ nb_kernel234nf_f77_double,
+ nb_kernel300nf_f77_double,
+ nb_kernel301nf_f77_double,
+ nb_kernel302nf_f77_double,
+ nb_kernel303nf_f77_double,
+ nb_kernel304nf_f77_double,
+ nb_kernel310nf_f77_double,
+ nb_kernel311nf_f77_double,
+ nb_kernel312nf_f77_double,
+ nb_kernel313nf_f77_double,
+ nb_kernel314nf_f77_double,
+ nb_kernel320nf_f77_double,
+ nb_kernel321nf_f77_double,
+ nb_kernel322nf_f77_double,
+ nb_kernel323nf_f77_double,
+ nb_kernel324nf_f77_double,
+ nb_kernel330nf_f77_double,
+ nb_kernel331nf_f77_double,
+ nb_kernel332nf_f77_double,
+ nb_kernel333nf_f77_double,
+ nb_kernel334nf_f77_double,
+ nb_kernel400nf_f77_double,
+ nb_kernel410nf_f77_double,
+ nb_kernel430nf_f77_double,
};
#include <pthread.h>
#endif
+#include <stdio.h>
/*! \brief Lock innerloop mutex and read lists indices
*
int * nn1)
{
int n0,n1;
+
+
#ifdef HAVE_PTHREADS_H
pthread_mutex_lock((pthread_mutex_t *)mtx);
#endif
#ifdef HAVE_PTHREADS_H
pthread_mutex_unlock((pthread_mutex_t *)mtx);
#endif
- n0 = *count;
*nn0 = n0;
*nn1 = n1;
}
#include <pthread.h>
#endif
+#include <stdio.h>
/*! \brief Lock innerloop mutex and read lists indices
*
int * nn1)
{
int n0,n1;
+
+
#ifdef HAVE_PTHREADS_H
pthread_mutex_lock((pthread_mutex_t *)mtx);
#endif
#ifdef HAVE_PTHREADS_H
pthread_mutex_unlock((pthread_mutex_t *)mtx);
#endif
- n0 = *count;
*nn0 = n0;
*nn1 = n1;
}
/* get gmx_gbdata_t */
#include "../nb_kerneltype.h"
-#include "nb_kernel410_ia32_sse.h"
+#include "nb_kernel400_ia32_sse.h"
fix = _mm_setzero_ps();
fiy = _mm_setzero_ps();
fiz = _mm_setzero_ps();
-
+
for(k=nj0; k<nj1-7; k+=8)
{
jnrA = jjnr[k];
rB = _mm_mul_ps(rsqB,rinvB);
rtab = _mm_mul_ps(r,gbscale);
rtabB = _mm_mul_ps(rB,gbscaleB);
-
+
n0 = _mm_cvttps_epi32(rtab);
n0B = _mm_cvttps_epi32(rtabB);
eps = _mm_sub_ps(rtab , _mm_cvtepi32_ps(n0) );
FB = _mm_add_ps(FB, _mm_add_ps(GB , _mm_mul_ps(HB,two)));
vgbB = _mm_mul_ps(YB, qqB);
fijGBB = _mm_mul_ps(FB, _mm_mul_ps(qqB,gbscaleB));
-
-
+
dvdatmp = _mm_mul_ps(_mm_add_ps(vgb, _mm_mul_ps(fijGB,r)) , minushalf);
dvdatmpB = _mm_mul_ps(_mm_add_ps(vgbB, _mm_mul_ps(fijGBB,rB)) , minushalf);
/* Calculate GB table index */
r = _mm_mul_ps(rsq,rinv);
rtab = _mm_mul_ps(r,gbscale);
-
+
n0 = _mm_cvttps_epi32(rtab);
eps = _mm_sub_ps(rtab , _mm_cvtepi32_ps(n0) );
nnn = _mm_slli_epi32(n0,2);
F = _mm_add_ps(F, _mm_add_ps(G , _mm_mul_ps(H,two)));
vgb = _mm_mul_ps(Y, qq);
fijGB = _mm_mul_ps(F, _mm_mul_ps(qq,gbscale));
-
+
dvdatmp = _mm_mul_ps(_mm_add_ps(vgb, _mm_mul_ps(fijGB,r)) , minushalf);
vgbtot = _mm_add_ps(vgbtot, vgb);
/* Calculate GB table index */
r = _mm_mul_ps(rsq,rinv);
rtab = _mm_mul_ps(r,gbscale);
-
+
n0 = _mm_cvttps_epi32(rtab);
eps = _mm_sub_ps(rtab , _mm_cvtepi32_ps(n0) );
nnn = _mm_slli_epi32(n0,2);
F = _mm_add_ps(F, _mm_add_ps(G , _mm_mul_ps(H,two)));
vgb = _mm_mul_ps(Y, qq);
fijGB = _mm_mul_ps(F, _mm_mul_ps(qq,gbscale));
-
+
dvdatmp = _mm_mul_ps(_mm_add_ps(vgb, _mm_mul_ps(fijGB,r)) , minushalf);
vgbtot = _mm_add_ps(vgbtot, vgb);
ggid = gid[n];
- GMX_MM_UPDATE_1POT_PS(vctot,vc+ggid);
- GMX_MM_UPDATE_1POT_PS(vgbtot,gpol+ggid);
- GMX_MM_UPDATE_1POT_PS(dvdasum,dvda+ii);
+ GMX_MM_UPDATE_1POT_PS(vctot,vc+ggid);
+ GMX_MM_UPDATE_1POT_PS(vgbtot,gpol+ggid);
+ GMX_MM_UPDATE_1POT_PS(dvdasum,dvda+ii);
}
*outeriter = nri;
* water optimization: No
* Calculate forces: no
*/
-void nb_kernel400nf_ia32_sse(
+void nb_kernel400nf_x86_64_sse(
int * p_nri,
int * iinr,
int * jindex,
__m128i n0, nnn;
__m128i n0B, nnnB;
- const __m128 neg = {-1.0f,-1.0f,-1.0f,-1.0f};
- const __m128 zero = {0.0f,0.0f,0.0f,0.0f};
- const __m128 minushalf = {-0.5f,-0.5f,-0.5f,-0.5f};
- const __m128 two = {2.0f,2.0f,2.0f,2.0f};
- const __m128 six = {6.0f,6.0f,6.0f,6.0f};
- const __m128 twelve = {12.0f,12.0f,12.0f,12.0f};
+ const __m128 neg = _mm_set1_ps(-1.0f);
+ const __m128 zero = _mm_set1_ps(0.0f);
+ const __m128 minushalf = _mm_set1_ps(-0.5f);
+ const __m128 two = _mm_set1_ps(2.0f);
+ const __m128 six = _mm_set1_ps(6.0f);
+ const __m128 twelve = _mm_set1_ps(12.0f);
gbdata = (gmx_gbdata_t *)work;
gpol = gbdata->gpol;
jz = _mm_setzero_ps();
c6 = _mm_setzero_ps();
c12 = _mm_setzero_ps();
-
+
for(n=0; (n<nri); n++)
{
gmx_mm_update_iforce_1atom_ps(&fix,&fiy,&fiz,faction+ii3,fshift+is3);
ggid = gid[n];
- GMX_MM_UPDATE_4POT_PS(vctot,vc+ggid,vvdwtot,vvdw+ggid,vgbtot,gpol+ggid,dvdasum,dvda+ii);
+ GMX_MM_UPDATE_4POT_PS(vctot,vc+ggid,vvdwtot,vvdw+ggid,vgbtot,gpol+ggid,dvdasum,dvda+ii);
}
*outeriter = nri;
* water optimization: No
* Calculate forces: no
*/
-void nb_kernel410nf_ia32_sse(
+void nb_kernel410nf_x86_64_sse(
int * p_nri,
int * iinr,
int * jindex,
#include <xmmintrin.h>
#include <emmintrin.h>
+
#include <gmx_sse2_single.h>
/* get gmx_gbdata_t */
#include "nb_kernel430_ia32_sse.h"
-/* to extract single integers from a __m128i datatype */
-#define _mm_extract_epi32(x, imm) \
-_mm_cvtsi128_si32(_mm_srli_si128((x), 4 * (imm)))
void nb_kernel430_ia32_sse(int * p_nri,
float * work)
{
int nri,ntype,nthreads;
- float facel,krf,crf,tabscale,gbtabscale,scl_gb;
+ float facel,krf,crf,tabscale,gbtabscale;
int n,ii,is3,ii3,k,nj0,nj1,ggid;
float shX,shY,shZ;
int offset,nti;
__m128 eps,eps2,Y,F,G,H,Geps,Heps2;
__m128 Fp,VV,FF,vgb,fijC,fijD,fijR,dvdatmp;
__m128 rinvsix,Vvdw6,Vvdw12,Vvdwtmp,vgbtot,n0f;
- __m128 fac_sse,tabscale_sse,gbtabscale_sse,scale_gb;
+ __m128 fac_sse,tabscale_sse,gbtabscale_sse;
__m128i n0, nnn;
- const __m128 neg = {-1.0f,-1.0f,-1.0f,-1.0f};
- const __m128 zero = {0.0f,0.0f,0.0f,0.0f};
- const __m128 half = {0.5f,0.5f,0.5f,0.5f};
- const __m128 two = {2.0f,2.0f,2.0f,2.0f};
- const __m128 three = {3.0f,3.0f,3.0f,3.0f};
- const __m128 six = {6.0f,6.0f,6.0f,6.0f};
- const __m128 twelwe = {12.0f,12.0f,12.0f,12.0f};
+ const __m128 neg = _mm_set1_ps(-1.0f);
+ const __m128 zero = _mm_set1_ps(0.0f);
+ const __m128 half = _mm_set1_ps(0.5f);
+ const __m128 two = _mm_set1_ps(2.0f);
+ const __m128 three = _mm_set1_ps(3.0f);
+ const __m128 six = _mm_set1_ps(6.0f);
+ const __m128 twelwe = _mm_set1_ps(12.0f);
- __m128i four = _mm_set_epi32(4,4,4,4);
+ __m128i four = _mm_set1_epi32(4);
__m128i maski = _mm_set_epi32(0, 0xffffffff, 0xffffffff, 0xffffffff);
__m128i mask = _mm_set_epi32(0, 0xffffffff, 0xffffffff, 0xffffffff);
gbdata = (gmx_gbdata_t *)work;
gpol = gbdata->gpol;
-
+
nri = *p_nri;
- ntype = *p_ntype;
- nthreads = *p_nthreads;
- facel = *p_facel;
- scl_gb = (1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent);
- krf = *p_krf;
- crf = *p_crf;
- tabscale = *p_tabscale;
- gbtabscale = *p_gbtabscale;
- nj1 = 0;
+ ntype = *p_ntype;
+ nthreads = *p_nthreads;
+ facel = (*p_facel) * ((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent));
+ krf = *p_krf;
+ crf = *p_crf;
+ tabscale = *p_tabscale;
+ gbtabscale = *p_gbtabscale;
+ nj1 = 0;
/* Splat variables */
fac_sse = _mm_load1_ps(&facel);
tabscale_sse = _mm_load1_ps(&tabscale);
gbtabscale_sse = _mm_load1_ps(&gbtabscale);
- scale_gb = _mm_load1_ps(&scl_gb);
/* Keep the compiler happy */
vcoul = _mm_mul_ps(qq,rinv);
fscal = _mm_mul_ps(vcoul,rinv);
qq = _mm_mul_ps(qq,neg);
- qq = _mm_mul_ps(qq,scale_gb);
qq = _mm_mul_ps(isaprod,qq);
gbscale = _mm_mul_ps(isaprod,gbtabscale_sse);
nnn = _mm_slli_epi32(n0,2);
/* the tables are 16-byte aligned, so we can use _mm_load_ps */
- xmm1 = _mm_load_ps(GBtab+(_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
- xmm2 = _mm_load_ps(GBtab+(_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
- xmm3 = _mm_load_ps(GBtab+(_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
- xmm4 = _mm_load_ps(GBtab+(_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
+ xmm1 = _mm_load_ps(GBtab+(gmx_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
+ xmm2 = _mm_load_ps(GBtab+(gmx_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
+ xmm3 = _mm_load_ps(GBtab+(gmx_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
+ xmm4 = _mm_load_ps(GBtab+(gmx_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
/* transpose 4*4 */
xmm5 = _mm_unpacklo_ps(xmm1,xmm2); /* Y1,Y2,F1,F2 */
nnn = _mm_slli_epi32(n0,3);
/* Tabulated VdW interaction - disperion */
- xmm1 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
- xmm2 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
- xmm3 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
- xmm4 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
+ xmm1 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
+ xmm2 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
+ xmm3 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
+ xmm4 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
/* transpose 4*4 */
xmm5 = _mm_unpacklo_ps(xmm1,xmm2); /* Y1,Y2,F1,F2 */
/* Tabulated VdW interaction - repulsion */
nnn = _mm_add_epi32(nnn,four);
- xmm1 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
- xmm2 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
- xmm3 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
- xmm4 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
+ xmm1 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
+ xmm2 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
+ xmm3 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
+ xmm4 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
/* transpose 4*4 */
xmm5 = _mm_unpacklo_ps(xmm1,xmm2); /* Y1,Y2,F1,F2 */
fscal = _mm_mul_ps(vcoul,rinv);
qq = _mm_mul_ps(qq,neg);
- qq = _mm_mul_ps(qq,scale_gb);
qq = _mm_mul_ps(isaprod,qq);
gbscale = _mm_mul_ps(isaprod,gbtabscale_sse);
nnn = _mm_slli_epi32(n0,2);
/* the tables are 16-byte aligned, so we can use _mm_load_ps */
- xmm1 = _mm_load_ps(GBtab+(_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
- xmm2 = _mm_load_ps(GBtab+(_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
- xmm3 = _mm_load_ps(GBtab+(_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
- xmm4 = _mm_load_ps(GBtab+(_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
+ xmm1 = _mm_load_ps(GBtab+(gmx_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
+ xmm2 = _mm_load_ps(GBtab+(gmx_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
+ xmm3 = _mm_load_ps(GBtab+(gmx_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
+ xmm4 = _mm_load_ps(GBtab+(gmx_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
/* transpose 4*4 */
xmm5 = _mm_unpacklo_ps(xmm1,xmm2); /* Y1,Y2,F1,F2 */
nnn = _mm_slli_epi32(n0,3);
/* Tabulated VdW interaction - disperion */
- xmm1 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
- xmm2 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
- xmm3 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
- xmm4 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
+ xmm1 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
+ xmm2 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
+ xmm3 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
+ xmm4 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
/* transpose 4*4 */
xmm5 = _mm_unpacklo_ps(xmm1,xmm2); /* Y1,Y2,F1,F2 */
/* Tabulated VdW interaction - repulsion */
nnn = _mm_add_epi32(nnn,four);
- xmm1 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
- xmm2 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
- xmm3 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
- xmm4 = _mm_load_ps(VFtab+(_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
+ xmm1 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,0))); /* Y1,F1,G1,H1 */
+ xmm2 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,1))); /* Y2,F2,G2,H2 */
+ xmm3 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,2))); /* Y3,F3,G3,H3 */
+ xmm4 = _mm_load_ps(VFtab+(gmx_mm_extract_epi32(nnn,3))); /* Y4,F4,G4,H4 */
/* transpose 4*4 */
xmm5 = _mm_unpacklo_ps(xmm1,xmm2); /* Y1,Y2,F1,F2 */
xmm2 = _mm_movelh_ps(xmm2,fiz);
xmm2 = _mm_and_ps( gmx_mm_castsi128_ps(maski), xmm2);
- /* load, add and store i forces */
+ /* load i force from memory */
xmm4 = _mm_loadl_pi(xmm4, (__m64 *) (faction+ii3));
xmm5 = _mm_load1_ps(faction+ii3+2);
xmm4 = _mm_shuffle_ps(xmm4,xmm5,_MM_SHUFFLE(3,2,1,0));
+ /* add to i force */
xmm4 = _mm_add_ps(xmm4,xmm2);
+ /* store i force to memory */
_mm_storel_pi( (__m64 *) (faction+ii3),xmm4);
xmm4 = _mm_shuffle_ps(xmm4,xmm4,_MM_SHUFFLE(2,2,2,2));
_mm_store_ss(faction+ii3+2,xmm4);
- /* Load, add and store i shift forces */
- xmm4 = _mm_loadl_pi(xmm4, (__m64 *) (fshift+is3));
- xmm5 = _mm_load1_ps(fshift+is3+2);
- xmm4 = _mm_shuffle_ps(xmm4,xmm5,_MM_SHUFFLE(3,2,1,0));
-
- xmm4 = _mm_add_ps(xmm4,xmm2);
-
- _mm_storel_pi( (__m64 *) (fshift+is3),xmm4);
- xmm4 = _mm_shuffle_ps(xmm4,xmm4,_MM_SHUFFLE(2,2,2,2));
- _mm_store_ss(fshift+is3+2,xmm4);
-
- /* Coulomb potential */
+ /* Load, add and store i shift forces */
+ xmm4 = _mm_loadl_pi(xmm4, (__m64 *) (fshift+is3));
+ xmm5 = _mm_load1_ps(fshift+is3+2);
+ xmm4 = _mm_shuffle_ps(xmm4,xmm5,_MM_SHUFFLE(3,2,1,0));
+
+ xmm4 = _mm_add_ps(xmm4,xmm2);
+
+ _mm_storel_pi( (__m64 *) (fshift+is3),xmm4);
+ xmm4 = _mm_shuffle_ps(xmm4,xmm4,_MM_SHUFFLE(2,2,2,2));
+ _mm_store_ss(fshift+is3+2,xmm4);
+
+ /* Coulomb potential */
ggid = gid[n];
vcoul = _mm_movehl_ps(vcoul,vctot);
_mm_store_ss(&vct,vctot);
Vc[ggid] = Vc[ggid] + vct;
- /* LJ potential */
Vvdwtmp = _mm_movehl_ps(Vvdwtmp,Vvdwtot);
Vvdwtot = _mm_add_ps(Vvdwtot,Vvdwtmp);
Vvdwtmp = _mm_shuffle_ps(Vvdwtot,Vvdwtot,_MM_SHUFFLE(1,1,1,1));
*inneriter = nj1;
}
+
/*
* Gromacs nonbonded kernel nb_kernel430nf
* Coulomb interaction: Generalized-Born
* water optimization: No
* Calculate forces: no
*/
-void nb_kernel430nf_ia32_sse(
+void nb_kernel430nf_x86_64_sse(
int * p_nri,
int * iinr,
int * jindex,
*inneriter = nj1;
}
+
/* get gmx_gbdata_t */
#include "../nb_kerneltype.h"
+#include "nb_kernel400_ia32_sse2.h"
+
-
void nb_kernel400_ia32_sse2(int * p_nri,
- int * iinr,
- int * jindex,
- int * jjnr,
- int * shift,
- double * shiftvec,
- double * fshift,
- int * gid,
- double * pos,
- double * faction,
- double * charge,
- double * p_facel,
- double * p_krf,
- double * p_crf,
- double * Vc,
- int * type,
- int * p_ntype,
- double * vdwparam,
- double * Vvdw,
- double * p_tabscale,
- double * VFtab,
- double * invsqrta,
- double * dvda,
- double * p_gbtabscale,
- double * GBtab,
- int * p_nthreads,
- int * count,
- void * mtx,
- int * outeriter,
- int * inneriter,
- double * work)
+ int * iinr,
+ int * jindex,
+ int * jjnr,
+ int * shift,
+ double * shiftvec,
+ double * fshift,
+ int * gid,
+ double * pos,
+ double * faction,
+ double * charge,
+ double * p_facel,
+ double * p_krf,
+ double * p_crf,
+ double * vc,
+ int * type,
+ int * p_ntype,
+ double * vdwparam,
+ double * vvdw,
+ double * p_tabscale,
+ double * VFtab,
+ double * invsqrta,
+ double * dvda,
+ double * p_gbtabscale,
+ double * GBtab,
+ int * p_nthreads,
+ int * count,
+ void * mtx,
+ int * outeriter,
+ int * inneriter,
+ double * work)
{
- int nri,ntype,nthreads,offset;
- int n,ii,is3,ii3,k,nj0,nj1,jnr1,jnr2,j13,j23,ggid;
- double facel,krf,crf,tabscl,gbtabscl,vct,vgbt;
- double shX,shY,shZ,isai_d,dva;
+ int nri,nthreads;
+ int n,ii,is3,ii3,k,nj0,nj1,ggid;
+ double shX,shY,shZ;
+ int jnrA,jnrB;
+ int j3A,j3B;
gmx_gbdata_t *gbdata;
- double * gpol;
+ double * gpol;
+
+ __m128d iq,qq,jq,isai;
+ __m128d ix,iy,iz;
+ __m128d jx,jy,jz;
+ __m128d dx,dy,dz;
+ __m128d vctot,vgbtot,dvdasum,gbfactor;
+ __m128d fix,fiy,fiz,tx,ty,tz,rsq;
+ __m128d rinv,isaj,isaprod;
+ __m128d vcoul,fscal,gbscale;
+ __m128d rinvsq,r,rtab;
+ __m128d eps,Y,F,G,H;
+ __m128d vgb,fijGB,dvdatmp;
+ __m128d facel,gbtabscale,dvdaj;
+ __m128i n0, nnn;
- __m128d ix,iy,iz,jx,jy,jz;
- __m128d dx,dy,dz,t1,t2,t3;
- __m128d fix,fiy,fiz,rsq11,rinv,r,fscal,rt,eps,eps2;
- __m128d q,iq,qq,isai,isaj,isaprod,vcoul,gbscale,dvdai,dvdaj;
- __m128d Y,F,G,H,Fp,VV,FF,vgb,fijC,dvdatmp,dvdasum,vctot,vgbtot,n0d;
- __m128d xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7,xmm8;
- __m128d fac,tabscale,gbtabscale,gbfactor;
- __m128i n0,nnn;
-
- const __m128d neg = {-1.0f,-1.0f};
- const __m128d zero = {0.0f,0.0f};
- const __m128d half = {0.5f,0.5f};
- const __m128d two = {2.0f,2.0f};
- const __m128d three = {3.0f,3.0f};
+ const __m128d neg = _mm_set1_pd(-1.0);
+ const __m128d zero = _mm_set1_pd(0.0);
+ const __m128d minushalf = _mm_set1_pd(-0.5);
+ const __m128d two = _mm_set1_pd(2.0);
gbdata = (gmx_gbdata_t *)work;
gpol = gbdata->gpol;
-
+
nri = *p_nri;
- ntype = *p_ntype;
- nthreads = *p_nthreads;
- facel = *p_facel;
- krf = *p_krf;
- crf = *p_crf;
- tabscl = *p_tabscale;
- gbtabscl = *p_gbtabscale;
- nj1 = 0;
-
- /* Splat variables */
- fac = _mm_load1_pd(&facel);
- tabscale = _mm_load1_pd(&tabscl);
- gbtabscale = _mm_load1_pd(&gbtabscl);
- gbfactor = _mm_set1_pd(((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
-
- /* Keep compiler happy */
- dvdatmp = _mm_setzero_pd();
- vgb = _mm_setzero_pd();
- dvdaj = _mm_setzero_pd();
- isaj = _mm_setzero_pd();
- vcoul = _mm_setzero_pd();
- t1 = _mm_setzero_pd();
- t2 = _mm_setzero_pd();
- t3 = _mm_setzero_pd();
-
- jnr1=jnr2=0;
- j13=j23=0;
+
+ gbfactor = _mm_set1_pd( - ((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
+ gbtabscale = _mm_load1_pd(p_gbtabscale);
+ facel = _mm_load1_pd(p_facel);
+
+ nj1 = 0;
+ jnrA = jnrB = 0;
+ j3A = j3B = 0;
+ jx = _mm_setzero_pd();
+ jy = _mm_setzero_pd();
+ jz = _mm_setzero_pd();
for(n=0;n<nri;n++)
{
- is3 = 3*shift[n];
- shX = shiftvec[is3];
- shY = shiftvec[is3+1];
- shZ = shiftvec[is3+2];
+ is3 = 3*shift[n];
+ shX = shiftvec[is3];
+ shY = shiftvec[is3+1];
+ shZ = shiftvec[is3+2];
+ nj0 = jindex[n];
+ nj1 = jindex[n+1];
+ ii = iinr[n];
+ ii3 = 3*ii;
- nj0 = jindex[n];
- nj1 = jindex[n+1];
- offset = (nj1-nj0)%2;
-
- ii = iinr[n];
- ii3 = ii*3;
-
- ix = _mm_set1_pd(shX+pos[ii3+0]);
- iy = _mm_set1_pd(shX+pos[ii3+1]);
- iz = _mm_set1_pd(shX+pos[ii3+2]);
- q = _mm_set1_pd(charge[ii]);
-
- iq = _mm_mul_pd(fac,q);
- isai_d = invsqrta[ii];
- isai = _mm_load1_pd(&isai_d);
-
- fix = _mm_setzero_pd();
- fiy = _mm_setzero_pd();
- fiz = _mm_setzero_pd();
- dvdasum = _mm_setzero_pd();
- vctot = _mm_setzero_pd();
- vgbtot = _mm_setzero_pd();
-
- for(k=nj0;k<nj1-offset; k+=2)
+ ix = _mm_set1_pd(shX+pos[ii3+0]);
+ iy = _mm_set1_pd(shY+pos[ii3+1]);
+ iz = _mm_set1_pd(shZ+pos[ii3+2]);
+
+ iq = _mm_load1_pd(charge+ii);
+ iq = _mm_mul_pd(iq,facel);
+
+ isai = _mm_load1_pd(invsqrta+ii);
+
+ vctot = _mm_setzero_pd();
+ vgbtot = _mm_setzero_pd();
+ dvdasum = _mm_setzero_pd();
+ fix = _mm_setzero_pd();
+ fiy = _mm_setzero_pd();
+ fiz = _mm_setzero_pd();
+
+ for(k=nj0;k<nj1-1; k+=2)
{
- jnr1 = jjnr[k];
- jnr2 = jjnr[k+1];
-
- j13 = jnr1 * 3;
- j23 = jnr2 * 3;
-
- /* Load coordinates */
- xmm1 = _mm_loadu_pd(pos+j13); /* x1 y1 */
- xmm2 = _mm_loadu_pd(pos+j23); /* x2 y2 */
-
- xmm5 = _mm_load_sd(pos+j13+2); /* z1 - */
- xmm6 = _mm_load_sd(pos+j23+2); /* z2 - */
-
- /* transpose */
- jx = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0));
- jy = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1));
- jz = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(0,0));
-
- /* distances */
- dx = _mm_sub_pd(ix,jx);
- dy = _mm_sub_pd(iy,jy);
- dz = _mm_sub_pd(iz,jz);
-
- rsq11 = _mm_add_pd( _mm_add_pd( _mm_mul_pd(dx,dx) , _mm_mul_pd(dy,dy) ) , _mm_mul_pd(dz,dz) );
- rinv = gmx_mm_invsqrt_pd(rsq11);
-
- /* Load invsqrta */
- isaj = _mm_loadl_pd(isaj,invsqrta+jnr1);
- isaj = _mm_loadh_pd(isaj,invsqrta+jnr2);
- isaprod = _mm_mul_pd(isai,isaj);
-
- /* Load charges */
- q = _mm_loadl_pd(q,charge+jnr1);
- q = _mm_loadh_pd(q,charge+jnr2);
- qq = _mm_mul_pd(iq,q);
-
- vcoul = _mm_mul_pd(qq,rinv);
- fscal = _mm_mul_pd(vcoul,rinv);
- qq = _mm_mul_pd(isaprod,qq);
- qq = _mm_mul_pd(qq,neg);
- qq = _mm_mul_pd(qq,gbfactor);
- gbscale = _mm_mul_pd(isaprod,gbtabscale);
-
- /* Load dvdaj */
- dvdaj = _mm_loadl_pd(dvdaj, dvda+jnr1);
- dvdaj = _mm_loadh_pd(dvdaj, dvda+jnr2);
-
- r = _mm_mul_pd(rsq11,rinv);
- rt = _mm_mul_pd(r,gbscale);
- n0 = _mm_cvttpd_epi32(rt);
- n0d = _mm_cvtepi32_pd(n0);
- eps = _mm_sub_pd(rt,n0d);
- eps2 = _mm_mul_pd(eps,eps);
-
- nnn = _mm_slli_epi64(n0,2);
-
- xmm1 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0))); /* Y1 F1 */
- xmm2 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1))); /* Y2 F2 */
- xmm3 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0))+2); /* G1 H1 */
- xmm4 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1))+2); /* G2 H2 */
-
- Y = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0)); /* Y1 Y2 */
- F = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1)); /* F1 F2 */
- G = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(0,0)); /* G1 G2 */
- H = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(1,1)); /* H1 H2 */
-
- G = _mm_mul_pd(G,eps);
- H = _mm_mul_pd(H,eps2);
- Fp = _mm_add_pd(F,G);
- Fp = _mm_add_pd(Fp,H);
- VV = _mm_mul_pd(Fp,eps);
- VV = _mm_add_pd(Y,VV);
- H = _mm_mul_pd(two,H);
- FF = _mm_add_pd(Fp,G);
- FF = _mm_add_pd(FF,H);
- vgb = _mm_mul_pd(qq,VV);
- fijC = _mm_mul_pd(qq,FF);
- fijC = _mm_mul_pd(fijC,gbscale);
+ jnrA = jjnr[k];
+ jnrB = jjnr[k+1];
- dvdatmp = _mm_mul_pd(fijC,r);
- dvdatmp = _mm_add_pd(vgb,dvdatmp);
- dvdatmp = _mm_mul_pd(dvdatmp,neg);
- dvdatmp = _mm_mul_pd(dvdatmp,half);
- dvdasum = _mm_add_pd(dvdasum,dvdatmp);
-
- xmm1 = _mm_mul_pd(dvdatmp,isaj);
- xmm1 = _mm_mul_pd(xmm1,isaj);
- dvdaj = _mm_add_pd(dvdaj,xmm1);
-
- /* store dvda */
- _mm_storel_pd(dvda+jnr1,dvdaj);
- _mm_storeh_pd(dvda+jnr2,dvdaj);
-
- vctot = _mm_add_pd(vctot,vcoul);
- vgbtot = _mm_add_pd(vgbtot,vgb);
-
- fscal = _mm_sub_pd(fijC,fscal);
- fscal = _mm_mul_pd(fscal,neg);
- fscal = _mm_mul_pd(fscal,rinv);
-
- /* calculate partial force terms */
- t1 = _mm_mul_pd(fscal,dx);
- t2 = _mm_mul_pd(fscal,dy);
- t3 = _mm_mul_pd(fscal,dz);
-
- /* update the i force */
- fix = _mm_add_pd(fix,t1);
- fiy = _mm_add_pd(fiy,t2);
- fiz = _mm_add_pd(fiz,t3);
-
- /* accumulate forces from memory */
- xmm1 = _mm_loadu_pd(faction+j13); /* fx1 fy1 */
- xmm2 = _mm_loadu_pd(faction+j23); /* fx2 fy2 */
-
- xmm5 = _mm_load1_pd(faction+j13+2); /* fz1 fz1 */
- xmm6 = _mm_load1_pd(faction+j23+2); /* fz2 fz2 */
-
- /* transpose */
- xmm7 = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(0,0)); /* fz1 fz2 */
- xmm5 = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0)); /* fx1 fx2 */
- xmm6 = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1)); /* fy1 fy2 */
-
- /* subtract partial forces */
- xmm5 = _mm_sub_pd(xmm5,t1);
- xmm6 = _mm_sub_pd(xmm6,t2);
- xmm7 = _mm_sub_pd(xmm7,t3);
-
- xmm1 = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(0,0)); /* fx1 fy1 */
- xmm2 = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(1,1)); /* fy1 fy2 */
-
- /* store fx and fy */
- _mm_storeu_pd(faction+j13,xmm1);
- _mm_storeu_pd(faction+j23,xmm2);
-
- /* .. then fz */
- _mm_storel_pd(faction+j13+2,xmm7);
- _mm_storeh_pd(faction+j23+2,xmm7);
- }
+ j3A = jnrA * 3;
+ j3B = jnrB * 3;
+
+ GMX_MM_LOAD_1RVEC_2POINTERS_PD(pos+j3A,pos+j3B,jx,jy,jz);
+
+ dx = _mm_sub_pd(ix,jx);
+ dy = _mm_sub_pd(iy,jy);
+ dz = _mm_sub_pd(iz,jz);
+
+ rsq = gmx_mm_calc_rsq_pd(dx,dy,dz);
+
+ rinv = gmx_mm_invsqrt_pd(rsq);
+ rinvsq = _mm_mul_pd(rinv,rinv);
+
+ /***********************************/
+ /* INTERACTION SECTION STARTS HERE */
+ /***********************************/
+ GMX_MM_LOAD_2VALUES_PD(charge+jnrA,charge+jnrB,jq);
+ GMX_MM_LOAD_2VALUES_PD(invsqrta+jnrA,invsqrta+jnrB,isaj);
+
+ isaprod = _mm_mul_pd(isai,isaj);
+ qq = _mm_mul_pd(iq,jq);
+ vcoul = _mm_mul_pd(qq,rinv);
+ fscal = _mm_mul_pd(vcoul,rinv);
+ vctot = _mm_add_pd(vctot,vcoul);
+
+ /* Polarization interaction */
+ qq = _mm_mul_pd(qq,_mm_mul_pd(isaprod,gbfactor));
+ gbscale = _mm_mul_pd(isaprod,gbtabscale);
+
+ /* Calculate GB table index */
+ r = _mm_mul_pd(rsq,rinv);
+ rtab = _mm_mul_pd(r,gbscale);
+
+ n0 = _mm_cvttpd_epi32(rtab);
+ eps = _mm_sub_pd(rtab,_mm_cvtepi32_pd(n0));
+ nnn = _mm_slli_epi32(n0,2);
+
+ /* the tables are 16-byte aligned, so we can use _mm_load_pd */
+ Y = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0)));
+ F = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,1)));
+ GMX_MM_TRANSPOSE2_PD(Y,F);
+ G = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0))+2);
+ H = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,1))+2);
+ GMX_MM_TRANSPOSE2_PD(G,H);
+
+ G = _mm_mul_pd(G,eps);
+ H = _mm_mul_pd(H, _mm_mul_pd(eps,eps) );
+ F = _mm_add_pd(F, _mm_add_pd( G , H ) );
+ Y = _mm_add_pd(Y, _mm_mul_pd(F, eps));
+ F = _mm_add_pd(F, _mm_add_pd(G , _mm_mul_pd(H,two)));
+ vgb = _mm_mul_pd(Y, qq);
+ fijGB = _mm_mul_pd(F, _mm_mul_pd(qq,gbscale));
+
+ dvdatmp = _mm_mul_pd(_mm_add_pd(vgb, _mm_mul_pd(fijGB,r)) , minushalf);
+ vgbtot = _mm_add_pd(vgbtot, vgb);
+
+ dvdasum = _mm_add_pd(dvdasum, dvdatmp);
+ dvdatmp = _mm_mul_pd(dvdatmp, _mm_mul_pd(isaj,isaj));
+
+ GMX_MM_INCREMENT_2VALUES_PD(dvda+jnrA,dvda+jnrB,dvdatmp);
+
+ fscal = _mm_mul_pd( _mm_sub_pd( fscal, fijGB),rinv );
+
+ /***********************************/
+ /* INTERACTION SECTION ENDS HERE */
+ /***********************************/
+
+ /* Calculate temporary vectorial force */
+ tx = _mm_mul_pd(fscal,dx);
+ ty = _mm_mul_pd(fscal,dy);
+ tz = _mm_mul_pd(fscal,dz);
+
+ /* Increment i atom force */
+ fix = _mm_add_pd(fix,tx);
+ fiy = _mm_add_pd(fiy,ty);
+ fiz = _mm_add_pd(fiz,tz);
+
+ /* Store j forces back */
+ GMX_MM_DECREMENT_1RVEC_2POINTERS_PD(faction+j3A,faction+j3B,tx,ty,tz);
+ }
+
/* In double precision, offset can only be either 0 or 1 */
- if(offset!=0)
+ if(k<nj1)
{
- jnr1 = jjnr[k];
- j13 = jnr1*3;
-
- jx = _mm_load_sd(pos+j13);
- jy = _mm_load_sd(pos+j13+1);
- jz = _mm_load_sd(pos+j13+2);
-
- isaj = _mm_load_sd(invsqrta+jnr1);
- isaprod = _mm_mul_sd(isai,isaj);
- dvdaj = _mm_load_sd(dvda+jnr1);
- q = _mm_load_sd(charge+jnr1);
- qq = _mm_mul_sd(iq,q);
-
- dx = _mm_sub_sd(ix,jx);
- dy = _mm_sub_sd(iy,jy);
- dz = _mm_sub_sd(iz,jz);
-
- rsq11 = _mm_add_pd( _mm_add_pd( _mm_mul_pd(dx,dx) , _mm_mul_pd(dy,dy) ) , _mm_mul_pd(dz,dz) );
- rinv = gmx_mm_invsqrt_pd(rsq11);
+ jnrA = jjnr[k];
+ j3A = jnrA * 3;
- vcoul = _mm_mul_sd(qq,rinv);
- fscal = _mm_mul_sd(vcoul,rinv);
- qq = _mm_mul_sd(isaprod,qq);
- qq = _mm_mul_sd(qq,neg);
- qq = _mm_mul_sd(qq,gbfactor);
- gbscale = _mm_mul_sd(isaprod,gbtabscale);
-
- r = _mm_mul_sd(rsq11,rinv);
- rt = _mm_mul_sd(r,gbscale);
- n0 = _mm_cvttpd_epi32(rt);
- n0d = _mm_cvtepi32_pd(n0);
- eps = _mm_sub_sd(rt,n0d);
- eps2 = _mm_mul_sd(eps,eps);
-
- nnn = _mm_slli_epi64(n0,2);
-
- xmm1 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0)));
- xmm2 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1)));
- xmm3 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0))+2);
- xmm4 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1))+2);
-
- Y = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0));
- F = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1));
- G = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(0,0));
- H = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(1,1));
-
- G = _mm_mul_sd(G,eps);
- H = _mm_mul_sd(H,eps2);
- Fp = _mm_add_sd(F,G);
- Fp = _mm_add_sd(Fp,H);
- VV = _mm_mul_sd(Fp,eps);
- VV = _mm_add_sd(Y,VV);
- H = _mm_mul_sd(two,H);
- FF = _mm_add_sd(Fp,G);
- FF = _mm_add_sd(FF,H);
- vgb = _mm_mul_sd(qq,VV);
- fijC = _mm_mul_sd(qq,FF);
- fijC = _mm_mul_sd(fijC,gbscale);
-
- dvdatmp = _mm_mul_sd(fijC,r);
- dvdatmp = _mm_add_sd(vgb,dvdatmp);
- dvdatmp = _mm_mul_sd(dvdatmp,neg);
- dvdatmp = _mm_mul_sd(dvdatmp,half);
- dvdasum = _mm_add_sd(dvdasum,dvdatmp);
-
- xmm1 = _mm_mul_sd(dvdatmp,isaj);
- xmm1 = _mm_mul_sd(xmm1,isaj);
- dvdaj = _mm_add_sd(dvdaj,xmm1);
-
- /* store dvda */
- _mm_storel_pd(dvda+jnr1,dvdaj);
-
- vctot = _mm_add_sd(vctot,vcoul);
- vgbtot = _mm_add_sd(vgbtot,vgb);
-
- fscal = _mm_sub_sd(fijC,fscal);
- fscal = _mm_mul_sd(fscal,neg);
- fscal = _mm_mul_sd(fscal,rinv);
-
- /* calculate partial force terms */
- t1 = _mm_mul_sd(fscal,dx);
- t2 = _mm_mul_sd(fscal,dy);
- t3 = _mm_mul_sd(fscal,dz);
-
- /* update the i force */
- fix = _mm_add_sd(fix,t1);
- fiy = _mm_add_sd(fiy,t2);
- fiz = _mm_add_sd(fiz,t3);
-
- /* accumulate forces from memory */
- xmm5 = _mm_load_sd(faction+j13); /* fx */
- xmm6 = _mm_load_sd(faction+j13+1); /* fy */
- xmm7 = _mm_load_sd(faction+j13+2); /* fz */
-
- /* subtract partial forces */
- xmm5 = _mm_sub_sd(xmm5,t1);
- xmm6 = _mm_sub_sd(xmm6,t2);
- xmm7 = _mm_sub_sd(xmm7,t3);
+ GMX_MM_LOAD_1RVEC_1POINTER_PD(pos+j3A,jx,jy,jz);
+
+ dx = _mm_sub_sd(ix,jx);
+ dy = _mm_sub_sd(iy,jy);
+ dz = _mm_sub_sd(iz,jz);
+
+ rsq = gmx_mm_calc_rsq_pd(dx,dy,dz);
+
+ rinv = gmx_mm_invsqrt_pd(rsq);
+ rinvsq = _mm_mul_sd(rinv,rinv);
+
+ /***********************************/
+ /* INTERACTION SECTION STARTS HERE */
+ /***********************************/
+ GMX_MM_LOAD_1VALUE_PD(charge+jnrA,jq);
+ GMX_MM_LOAD_1VALUE_PD(invsqrta+jnrA,isaj);
+
+ isaprod = _mm_mul_sd(isai,isaj);
+ qq = _mm_mul_sd(iq,jq);
+ vcoul = _mm_mul_sd(qq,rinv);
+ fscal = _mm_mul_sd(vcoul,rinv);
+ vctot = _mm_add_sd(vctot,vcoul);
+
+ /* Polarization interaction */
+ qq = _mm_mul_sd(qq,_mm_mul_sd(isaprod,gbfactor));
+ gbscale = _mm_mul_sd(isaprod,gbtabscale);
+
+ /* Calculate GB table index */
+ r = _mm_mul_sd(rsq,rinv);
+ rtab = _mm_mul_sd(r,gbscale);
+
+ n0 = _mm_cvttpd_epi32(rtab);
+ eps = _mm_sub_sd(rtab,_mm_cvtepi32_pd(n0));
+ nnn = _mm_slli_epi32(n0,2);
+
+ /* the tables are 16-byte aligned, so we can use _mm_load_pd */
+ Y = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0)));
+ F = _mm_setzero_pd();
+ GMX_MM_TRANSPOSE2_PD(Y,F);
+ G = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0))+2);
+ H = _mm_setzero_pd();
+ GMX_MM_TRANSPOSE2_PD(G,H);
+
+ G = _mm_mul_sd(G,eps);
+ H = _mm_mul_sd(H, _mm_mul_sd(eps,eps) );
+ F = _mm_add_sd(F, _mm_add_sd( G , H ) );
+ Y = _mm_add_sd(Y, _mm_mul_sd(F, eps));
+ F = _mm_add_sd(F, _mm_add_sd(G , _mm_mul_sd(H,two)));
+ vgb = _mm_mul_sd(Y, qq);
+ fijGB = _mm_mul_sd(F, _mm_mul_sd(qq,gbscale));
+
+ dvdatmp = _mm_mul_sd(_mm_add_sd(vgb, _mm_mul_sd(fijGB,r)) , minushalf);
+
+ vgbtot = _mm_add_sd(vgbtot, vgb);
+
+ dvdasum = _mm_add_sd(dvdasum, dvdatmp);
+ dvdatmp = _mm_mul_sd(dvdatmp, _mm_mul_sd(isaj,isaj));
+
+ GMX_MM_INCREMENT_1VALUE_PD(dvda+jnrA,dvdatmp);
- /* store forces */
- _mm_store_sd(faction+j13,xmm5);
- _mm_store_sd(faction+j13+1,xmm6);
- _mm_store_sd(faction+j13+2,xmm7);
+ fscal = _mm_mul_sd( _mm_sub_sd( fscal, fijGB),rinv );
+
+ /***********************************/
+ /* INTERACTION SECTION ENDS HERE */
+ /***********************************/
+
+ /* Calculate temporary vectorial force */
+ tx = _mm_mul_sd(fscal,dx);
+ ty = _mm_mul_sd(fscal,dy);
+ tz = _mm_mul_sd(fscal,dz);
+
+ /* Increment i atom force */
+ fix = _mm_add_sd(fix,tx);
+ fiy = _mm_add_sd(fiy,ty);
+ fiz = _mm_add_sd(fiz,tz);
+
+ /* Store j forces back */
+ GMX_MM_DECREMENT_1RVEC_1POINTER_PD(faction+j3A,tx,ty,tz);
}
- /* fix/fiy/fiz now contain four partial terms, that all should be
- * added to the i particle forces
- */
- t1 = _mm_unpacklo_pd(t1,fix);
- t2 = _mm_unpacklo_pd(t2,fiy);
- t3 = _mm_unpacklo_pd(t3,fiz);
-
- fix = _mm_add_pd(fix,t1);
- fiy = _mm_add_pd(fiy,t2);
- fiz = _mm_add_pd(fiz,t3);
-
- fix = _mm_shuffle_pd(fix,fix,_MM_SHUFFLE2(1,1));
- fiy = _mm_shuffle_pd(fiy,fiy,_MM_SHUFFLE2(1,1));
- fiz = _mm_shuffle_pd(fiz,fiz,_MM_SHUFFLE2(1,1));
-
- /* Load i forces from memory */
- xmm1 = _mm_load_sd(faction+ii3);
- xmm2 = _mm_load_sd(faction+ii3+1);
- xmm3 = _mm_load_sd(faction+ii3+2);
-
- /* Add to i force */
- fix = _mm_add_sd(fix,xmm1);
- fiy = _mm_add_sd(fiy,xmm2);
- fiz = _mm_add_sd(fiz,xmm3);
-
- /* store i forces to memory */
- _mm_store_sd(faction+ii3,fix);
- _mm_store_sd(faction+ii3+1,fiy);
- _mm_store_sd(faction+ii3+2,fiz);
-
- /* Load i shift forces from memory */
- xmm1 = _mm_load_sd(fshift+is3);
- xmm2 = _mm_load_sd(fshift+is3+1);
- xmm3 = _mm_load_sd(fshift+is3+2);
-
- /* Add to i force */
- fix = _mm_add_sd(fix,xmm1);
- fiy = _mm_add_sd(fiy,xmm2);
- fiz = _mm_add_sd(fiz,xmm3);
-
- /* store i shift forces to memory */
- _mm_store_sd(fshift+is3,fix);
- _mm_store_sd(fshift+is3+1,fiy);
- _mm_store_sd(fshift+is3+2,fiz);
-
- /* now do dvda */
- dvdatmp = _mm_unpacklo_pd(dvdatmp,dvdasum);
- dvdasum = _mm_add_pd(dvdasum,dvdatmp);
- _mm_storeh_pd(&dva,dvdasum);
- dvda[ii] = dvda[ii] + dva*isai_d*isai_d;
-
- ggid = gid[n];
-
- /* Coulomb potential */
- vcoul = _mm_unpacklo_pd(vcoul,vctot);
- vctot = _mm_add_pd(vctot,vcoul);
- _mm_storeh_pd(&vct,vctot);
- Vc[ggid] = Vc[ggid] + vct;
-
- /* GB potential */
- vgb = _mm_unpacklo_pd(vgb,vgbtot);
- vgbtot = _mm_add_pd(vgbtot,vgb);
- _mm_storeh_pd(&vgbt,vgbtot);
- gpol[ggid] = gpol[ggid] + vgbt;
+ dvdasum = _mm_mul_pd(dvdasum, _mm_mul_pd(isai,isai));
+ gmx_mm_update_iforce_1atom_pd(&fix,&fiy,&fiz,faction+ii3,fshift+is3);
+
+ ggid = gid[n];
+
+ gmx_mm_update_1pot_pd(vctot,vc+ggid);
+ gmx_mm_update_2pot_pd(vgbtot,gpol+ggid,dvdasum,dvda+ii);
}
-
+
*outeriter = nri;
- *inneriter = nj1;
-
+ *inneriter = nj1;
}
/* get gmx_gbdata_t */
#include "../nb_kerneltype.h"
+#include "nb_kernel410_ia32_sse2.h"
+
+
+
void nb_kernel410_ia32_sse2(int * p_nri,
int * iinr,
int * jindex,
double * p_facel,
double * p_krf,
double * p_crf,
- double * Vc,
+ double * vc,
int * type,
int * p_ntype,
double * vdwparam,
- double * Vvdw,
+ double * vvdw,
double * p_tabscale,
double * VFtab,
double * invsqrta,
int * inneriter,
double * work)
{
- int nri,ntype,nthreads,offset,tj,tj2,nti;
- int n,ii,is3,ii3,k,nj0,nj1,jnr1,jnr2,j13,j23,ggid;
- double facel,krf,crf,tabscl,gbtabscl,vct,vdwt,nt1,nt2;
- double shX,shY,shZ,isai_d,dva,vgbt;
+ int nri,ntype,nthreads;
+ int n,ii,is3,ii3,k,nj0,nj1,ggid;
+ double shX,shY,shZ;
+ int offset,nti;
+ int jnrA,jnrB;
+ int j3A,j3B;
+ int tjA,tjB;
gmx_gbdata_t *gbdata;
- double * gpol;
-
- __m128d ix,iy,iz,jx,jy,jz;
- __m128d dx,dy,dz,t1,t2,t3;
- __m128d fix,fiy,fiz,rsq11,rinv,r,fscal,rt,eps,eps2;
- __m128d q,iq,qq,isai,isaj,isaprod,vcoul,gbscale,dvdai,dvdaj;
- __m128d Y,F,G,H,Fp,VV,FF,vgb,fijC,dvdatmp,dvdasum,vctot,vgbtot,n0d;
- __m128d xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7,xmm8;
- __m128d c6,c12,Vvdw6,Vvdw12,Vvdwtmp,Vvdwtot,rinvsq,rinvsix;
- __m128d fac,tabscale,gbtabscale,gbfactor;
- __m128i n0,nnn;
+ double * gpol;
+
+ __m128d iq,qq,jq,isai;
+ __m128d ix,iy,iz;
+ __m128d jx,jy,jz;
+ __m128d dx,dy,dz;
+ __m128d vctot,vvdwtot,vgbtot,dvdasum,gbfactor;
+ __m128d fix,fiy,fiz,tx,ty,tz,rsq;
+ __m128d rinv,isaj,isaprod;
+ __m128d vcoul,fscal,gbscale,c6,c12;
+ __m128d rinvsq,r,rtab;
+ __m128d eps,Y,F,G,H;
+ __m128d vgb,fijGB,dvdatmp;
+ __m128d rinvsix,vvdw6,vvdw12;
+ __m128d facel,gbtabscale,dvdaj;
+ __m128i n0, nnn;
- const __m128d neg = {-1.0f,-1.0f};
- const __m128d zero = {0.0f,0.0f};
- const __m128d half = {0.5f,0.5f};
- const __m128d two = {2.0f,2.0f};
- const __m128d three = {3.0f,3.0f};
- const __m128d six = {6.0f,6.0f};
- const __m128d twelwe = {12.0f,12.0f};
+ const __m128d neg = _mm_set1_pd(-1.0);
+ const __m128d zero = _mm_set1_pd(0.0);
+ const __m128d minushalf = _mm_set1_pd(-0.5);
+ const __m128d two = _mm_set1_pd(2.0);
+ const __m128d six = _mm_set1_pd(6.0);
+ const __m128d twelve = _mm_set1_pd(12.0);
gbdata = (gmx_gbdata_t *)work;
gpol = gbdata->gpol;
nri = *p_nri;
ntype = *p_ntype;
- nthreads = *p_nthreads;
- facel = *p_facel;
- krf = *p_krf;
- crf = *p_crf;
- tabscl = *p_tabscale;
- gbtabscl = *p_gbtabscale;
- nj1 = 0;
-
- /* Splat variables */
- fac = _mm_load1_pd(&facel);
- tabscale = _mm_load1_pd(&tabscl);
- gbtabscale = _mm_load1_pd(&gbtabscl);
- gbfactor = _mm_set1_pd(((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
-
- /* Keep compiler happy */
- Vvdwtmp = _mm_setzero_pd();
- Vvdwtot = _mm_setzero_pd();
- dvdatmp = _mm_setzero_pd();
- dvdaj = _mm_setzero_pd();
- isaj = _mm_setzero_pd();
- vcoul = _mm_setzero_pd();
- vgb = _mm_setzero_pd();
- t1 = _mm_setzero_pd();
- t2 = _mm_setzero_pd();
- t3 = _mm_setzero_pd();
- xmm1 = _mm_setzero_pd();
- xmm2 = _mm_setzero_pd();
- xmm3 = _mm_setzero_pd();
- xmm4 = _mm_setzero_pd();
- jnr1 = jnr2 = 0;
- j13 = j23 = 0;
+
+ gbfactor = _mm_set1_pd( - ((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
+ gbtabscale = _mm_load1_pd(p_gbtabscale);
+ facel = _mm_load1_pd(p_facel);
+
+ nj1 = 0;
+ jnrA = jnrB = 0;
+ j3A = j3B = 0;
+ jx = _mm_setzero_pd();
+ jy = _mm_setzero_pd();
+ jz = _mm_setzero_pd();
+ c6 = _mm_setzero_pd();
+ c12 = _mm_setzero_pd();
for(n=0;n<nri;n++)
{
- is3 = 3*shift[n];
- shX = shiftvec[is3];
- shY = shiftvec[is3+1];
- shZ = shiftvec[is3+2];
-
- nj0 = jindex[n];
- nj1 = jindex[n+1];
- offset = (nj1-nj0)%2;
-
- ii = iinr[n];
- ii3 = ii*3;
-
- ix = _mm_set1_pd(shX+pos[ii3+0]);
- iy = _mm_set1_pd(shX+pos[ii3+1]);
- iz = _mm_set1_pd(shX+pos[ii3+2]);
- q = _mm_set1_pd(charge[ii]);
-
- iq = _mm_mul_pd(fac,q);
- isai_d = invsqrta[ii];
- isai = _mm_load1_pd(&isai_d);
-
- nti = 2*ntype*type[ii];
+ is3 = 3*shift[n];
+ shX = shiftvec[is3];
+ shY = shiftvec[is3+1];
+ shZ = shiftvec[is3+2];
+ nj0 = jindex[n];
+ nj1 = jindex[n+1];
+ ii = iinr[n];
+ ii3 = 3*ii;
- fix = _mm_setzero_pd();
- fiy = _mm_setzero_pd();
- fiz = _mm_setzero_pd();
- dvdasum = _mm_setzero_pd();
- vctot = _mm_setzero_pd();
- vgbtot = _mm_setzero_pd();
- Vvdwtot = _mm_setzero_pd();
+ ix = _mm_set1_pd(shX+pos[ii3+0]);
+ iy = _mm_set1_pd(shY+pos[ii3+1]);
+ iz = _mm_set1_pd(shZ+pos[ii3+2]);
+
+ iq = _mm_load1_pd(charge+ii);
+ iq = _mm_mul_pd(iq,facel);
+
+ isai = _mm_load1_pd(invsqrta+ii);
+
+ nti = 2*ntype*type[ii];
- for(k=nj0;k<nj1-offset; k+=2)
+ vctot = _mm_setzero_pd();
+ vvdwtot = _mm_setzero_pd();
+ vgbtot = _mm_setzero_pd();
+ dvdasum = _mm_setzero_pd();
+ fix = _mm_setzero_pd();
+ fiy = _mm_setzero_pd();
+ fiz = _mm_setzero_pd();
+
+ for(k=nj0;k<nj1-1; k+=2)
{
- jnr1 = jjnr[k];
- jnr2 = jjnr[k+1];
-
- j13 = jnr1 * 3;
- j23 = jnr2 * 3;
-
- /* Load coordinates */
- xmm1 = _mm_loadu_pd(pos+j13); /* x1 y1 */
- xmm2 = _mm_loadu_pd(pos+j23); /* x2 y2 */
-
- xmm5 = _mm_load_sd(pos+j13+2); /* z1 - */
- xmm6 = _mm_load_sd(pos+j23+2); /* z2 - */
-
- /* transpose */
- jx = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0));
- jy = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1));
- jz = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(0,0));
-
- /* distances */
- dx = _mm_sub_pd(ix,jx);
- dy = _mm_sub_pd(iy,jy);
- dz = _mm_sub_pd(iz,jz);
-
- rsq11 = _mm_add_pd( _mm_add_pd( _mm_mul_pd(dx,dx) , _mm_mul_pd(dy,dy) ) , _mm_mul_pd(dz,dz) );
- rinv = gmx_mm_invsqrt_pd(rsq11);
-
- /* Load invsqrta */
- isaj = _mm_loadl_pd(isaj,invsqrta+jnr1);
- isaj = _mm_loadh_pd(isaj,invsqrta+jnr2);
- isaprod = _mm_mul_pd(isai,isaj);
-
- /* Load charges */
- q = _mm_loadl_pd(q,charge+jnr1);
- q = _mm_loadh_pd(q,charge+jnr2);
- qq = _mm_mul_pd(iq,q);
-
- vcoul = _mm_mul_pd(qq,rinv);
- fscal = _mm_mul_pd(vcoul,rinv);
- qq = _mm_mul_pd(isaprod,qq);
- qq = _mm_mul_pd(qq,gbfactor);
- qq = _mm_mul_pd(qq,neg);
- gbscale = _mm_mul_pd(isaprod,gbtabscale);
-
- /* Load VdW parameters */
- tj = nti+2*type[jnr1];
- tj2 = nti+2*type[jnr2];
-
- xmm1 = _mm_loadu_pd(vdwparam+tj);
- xmm2 = _mm_loadu_pd(vdwparam+tj2);
- c6 = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0));
- c12 = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1));
-
- rinvsq = _mm_mul_pd(rinv,rinv);
+ jnrA = jjnr[k];
+ jnrB = jjnr[k+1];
- /* Load dvdaj */
- dvdaj = _mm_loadl_pd(dvdaj, dvda+jnr1);
- dvdaj = _mm_loadh_pd(dvdaj, dvda+jnr2);
-
- r = _mm_mul_pd(rsq11,rinv);
- rt = _mm_mul_pd(r,gbscale);
- n0 = _mm_cvttpd_epi32(rt);
- n0d = _mm_cvtepi32_pd(n0);
- eps = _mm_sub_pd(rt,n0d);
- eps2 = _mm_mul_pd(eps,eps);
-
- nnn = _mm_slli_epi64(n0,2);
-
- xmm1 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0))); /* Y1 F1 */
- xmm2 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1))); /* Y2 F2 */
- xmm3 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0))+2); /* G1 H1 */
- xmm4 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1))+2); /* G2 H2 */
-
- Y = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0)); /* Y1 Y2 */
- F = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1)); /* F1 F2 */
- G = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(0,0)); /* G1 G2 */
- H = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(1,1)); /* H1 H2 */
-
- G = _mm_mul_pd(G,eps);
- H = _mm_mul_pd(H,eps2);
- Fp = _mm_add_pd(F,G);
- Fp = _mm_add_pd(Fp,H);
- VV = _mm_mul_pd(Fp,eps);
- VV = _mm_add_pd(Y,VV);
- H = _mm_mul_pd(two,H);
- FF = _mm_add_pd(Fp,G);
- FF = _mm_add_pd(FF,H);
- vgb = _mm_mul_pd(qq,VV);
- fijC = _mm_mul_pd(qq,FF);
- fijC = _mm_mul_pd(fijC,gbscale);
-
- dvdatmp = _mm_mul_pd(fijC,r);
- dvdatmp = _mm_add_pd(vgb,dvdatmp);
- dvdatmp = _mm_mul_pd(dvdatmp,neg);
- dvdatmp = _mm_mul_pd(dvdatmp,half);
- dvdasum = _mm_add_pd(dvdasum,dvdatmp);
-
- xmm1 = _mm_mul_pd(dvdatmp,isaj);
- xmm1 = _mm_mul_pd(xmm1,isaj);
- dvdaj = _mm_add_pd(dvdaj,xmm1);
-
- /* store dvda */
- _mm_storel_pd(dvda+jnr1,dvdaj);
- _mm_storeh_pd(dvda+jnr2,dvdaj);
-
- vctot = _mm_add_pd(vctot,vcoul);
- vgbtot = _mm_add_pd(vgbtot,vgb);
-
- /* VdW interaction */
- rinvsix = _mm_mul_pd(rinvsq,rinvsq);
- rinvsix = _mm_mul_pd(rinvsix,rinvsq);
-
- Vvdw6 = _mm_mul_pd(c6,rinvsix);
- Vvdw12 = _mm_mul_pd(c12,rinvsix);
- Vvdw12 = _mm_mul_pd(Vvdw12,rinvsix);
- Vvdwtmp = _mm_sub_pd(Vvdw12,Vvdw6);
- Vvdwtot = _mm_add_pd(Vvdwtot,Vvdwtmp);
-
- xmm1 = _mm_mul_pd(twelwe,Vvdw12);
- xmm2 = _mm_mul_pd(six,Vvdw6);
- xmm1 = _mm_sub_pd(xmm1,xmm2);
- xmm1 = _mm_mul_pd(xmm1,rinvsq);
-
- /* Scalar force */
- fscal = _mm_sub_pd(fijC,fscal);
- fscal = _mm_mul_pd(fscal,rinv);
- fscal = _mm_sub_pd(xmm1,fscal);
-
- /* calculate partial force terms */
- t1 = _mm_mul_pd(fscal,dx);
- t2 = _mm_mul_pd(fscal,dy);
- t3 = _mm_mul_pd(fscal,dz);
-
- /* update the i force */
- fix = _mm_add_pd(fix,t1);
- fiy = _mm_add_pd(fiy,t2);
- fiz = _mm_add_pd(fiz,t3);
-
- /* accumulate forces from memory */
- xmm1 = _mm_loadu_pd(faction+j13); /* fx1 fy1 */
- xmm2 = _mm_loadu_pd(faction+j23); /* fx2 fy2 */
-
- xmm5 = _mm_load1_pd(faction+j13+2); /* fz1 fz1 */
- xmm6 = _mm_load1_pd(faction+j23+2); /* fz2 fz2 */
-
- /* transpose */
- xmm7 = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(0,0)); /* fz1 fz2 */
- xmm5 = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0)); /* fx1 fx2 */
- xmm6 = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1)); /* fy1 fy2 */
-
- /* subtract partial forces */
- xmm5 = _mm_sub_pd(xmm5,t1);
- xmm6 = _mm_sub_pd(xmm6,t2);
- xmm7 = _mm_sub_pd(xmm7,t3);
-
- xmm1 = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(0,0)); /* fx1 fy1 */
- xmm2 = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(1,1)); /* fy1 fy2 */
-
- /* store fx and fy */
- _mm_storeu_pd(faction+j13,xmm1);
- _mm_storeu_pd(faction+j23,xmm2);
-
- /* .. then fz */
- _mm_storel_pd(faction+j13+2,xmm7);
- _mm_storeh_pd(faction+j23+2,xmm7);
+ j3A = jnrA * 3;
+ j3B = jnrB * 3;
+
+ GMX_MM_LOAD_1RVEC_2POINTERS_PD(pos+j3A,pos+j3B,jx,jy,jz);
+
+ dx = _mm_sub_pd(ix,jx);
+ dy = _mm_sub_pd(iy,jy);
+ dz = _mm_sub_pd(iz,jz);
+
+ rsq = gmx_mm_calc_rsq_pd(dx,dy,dz);
+
+ rinv = gmx_mm_invsqrt_pd(rsq);
+ rinvsq = _mm_mul_pd(rinv,rinv);
+
+ /***********************************/
+ /* INTERACTION SECTION STARTS HERE */
+ /***********************************/
+ GMX_MM_LOAD_2VALUES_PD(charge+jnrA,charge+jnrB,jq);
+ GMX_MM_LOAD_2VALUES_PD(invsqrta+jnrA,invsqrta+jnrB,isaj);
+
+ /* Lennard-Jones */
+ tjA = nti+2*type[jnrA];
+ tjB = nti+2*type[jnrB];
+
+ GMX_MM_LOAD_2PAIRS_PD(vdwparam+tjA,vdwparam+tjB,c6,c12);
+
+ isaprod = _mm_mul_pd(isai,isaj);
+ qq = _mm_mul_pd(iq,jq);
+ vcoul = _mm_mul_pd(qq,rinv);
+ fscal = _mm_mul_pd(vcoul,rinv);
+ vctot = _mm_add_pd(vctot,vcoul);
+
+ /* Polarization interaction */
+ qq = _mm_mul_pd(qq,_mm_mul_pd(isaprod,gbfactor));
+ gbscale = _mm_mul_pd(isaprod,gbtabscale);
+
+ /* Calculate GB table index */
+ r = _mm_mul_pd(rsq,rinv);
+ rtab = _mm_mul_pd(r,gbscale);
+
+ n0 = _mm_cvttpd_epi32(rtab);
+ eps = _mm_sub_pd(rtab,_mm_cvtepi32_pd(n0));
+ nnn = _mm_slli_epi32(n0,2);
+
+ /* the tables are 16-byte aligned, so we can use _mm_load_pd */
+ Y = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0)));
+ F = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,1)));
+ GMX_MM_TRANSPOSE2_PD(Y,F);
+ G = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0))+2);
+ H = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,1))+2);
+ GMX_MM_TRANSPOSE2_PD(G,H);
+
+ G = _mm_mul_pd(G,eps);
+ H = _mm_mul_pd(H, _mm_mul_pd(eps,eps) );
+ F = _mm_add_pd(F, _mm_add_pd( G , H ) );
+ Y = _mm_add_pd(Y, _mm_mul_pd(F, eps));
+ F = _mm_add_pd(F, _mm_add_pd(G , _mm_mul_pd(H,two)));
+ vgb = _mm_mul_pd(Y, qq);
+ fijGB = _mm_mul_pd(F, _mm_mul_pd(qq,gbscale));
+
+ dvdatmp = _mm_mul_pd(_mm_add_pd(vgb, _mm_mul_pd(fijGB,r)) , minushalf);
+
+ vgbtot = _mm_add_pd(vgbtot, vgb);
+
+ dvdasum = _mm_add_pd(dvdasum, dvdatmp);
+ dvdatmp = _mm_mul_pd(dvdatmp, _mm_mul_pd(isaj,isaj));
+
+ GMX_MM_INCREMENT_2VALUES_PD(dvda+jnrA,dvda+jnrB,dvdatmp);
+
+ rinvsix = _mm_mul_pd(rinvsq,rinvsq);
+ rinvsix = _mm_mul_pd(rinvsix,rinvsq);
+
+ vvdw6 = _mm_mul_pd(c6,rinvsix);
+ vvdw12 = _mm_mul_pd(c12, _mm_mul_pd(rinvsix,rinvsix));
+ vvdwtot = _mm_add_pd(vvdwtot,_mm_sub_pd(vvdw12,vvdw6));
+
+ fscal = _mm_sub_pd(_mm_mul_pd(rinvsq,
+ _mm_sub_pd(_mm_mul_pd(twelve,vvdw12),
+ _mm_mul_pd(six,vvdw6))),
+ _mm_mul_pd( _mm_sub_pd( fijGB,fscal),rinv ));
+
+ /***********************************/
+ /* INTERACTION SECTION ENDS HERE */
+ /***********************************/
+
+ /* Calculate temporary vectorial force */
+ tx = _mm_mul_pd(fscal,dx);
+ ty = _mm_mul_pd(fscal,dy);
+ tz = _mm_mul_pd(fscal,dz);
+
+ /* Increment i atom force */
+ fix = _mm_add_pd(fix,tx);
+ fiy = _mm_add_pd(fiy,ty);
+ fiz = _mm_add_pd(fiz,tz);
+
+ /* Store j forces back */
+ GMX_MM_DECREMENT_1RVEC_2POINTERS_PD(faction+j3A,faction+j3B,tx,ty,tz);
}
/* In double precision, offset can only be either 0 or 1 */
- if(offset!=0)
+ if(k<nj1)
{
- jnr1 = jjnr[k];
- j13 = jnr1*3;
-
- jx = _mm_load_sd(pos+j13);
- jy = _mm_load_sd(pos+j13+1);
- jz = _mm_load_sd(pos+j13+2);
-
- isaj = _mm_load_sd(invsqrta+jnr1);
- isaprod = _mm_mul_sd(isai,isaj);
- dvdaj = _mm_load_sd(dvda+jnr1);
- q = _mm_load_sd(charge+jnr1);
- qq = _mm_mul_sd(iq,q);
-
- dx = _mm_sub_sd(ix,jx);
- dy = _mm_sub_sd(iy,jy);
- dz = _mm_sub_sd(iz,jz);
-
- rsq11 = _mm_add_pd( _mm_add_pd( _mm_mul_pd(dx,dx) , _mm_mul_pd(dy,dy) ) , _mm_mul_pd(dz,dz) );
- rinv = gmx_mm_invsqrt_pd(rsq11);
-
- vcoul = _mm_mul_sd(qq,rinv);
- fscal = _mm_mul_sd(vcoul,rinv);
- qq = _mm_mul_sd(isaprod,qq);
- qq = _mm_mul_sd(qq,gbfactor);
- qq = _mm_mul_sd(qq,neg);
- gbscale = _mm_mul_sd(isaprod,gbtabscale);
-
- /* Load VdW parameters */
- tj = nti+2*type[jnr1];
-
- c6 = _mm_load_sd(vdwparam+tj);
- c12 = _mm_load_sd(vdwparam+tj+1);
-
- rinvsq = _mm_mul_sd(rinv,rinv);
-
- r = _mm_mul_sd(rsq11,rinv);
- rt = _mm_mul_sd(r,gbscale);
- n0 = _mm_cvttpd_epi32(rt);
- n0d = _mm_cvtepi32_pd(n0);
- eps = _mm_sub_sd(rt,n0d);
- eps2 = _mm_mul_sd(eps,eps);
-
- nnn = _mm_slli_epi64(n0,2);
-
- xmm1 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0)));
- xmm2 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1)));
- xmm3 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0))+2);
- xmm4 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1))+2);
-
- Y = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0));
- F = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1));
- G = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(0,0));
- H = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(1,1));
-
- G = _mm_mul_sd(G,eps);
- H = _mm_mul_sd(H,eps2);
- Fp = _mm_add_sd(F,G);
- Fp = _mm_add_sd(Fp,H);
- VV = _mm_mul_sd(Fp,eps);
- VV = _mm_add_sd(Y,VV);
- H = _mm_mul_sd(two,H);
- FF = _mm_add_sd(Fp,G);
- FF = _mm_add_sd(FF,H);
- vgb = _mm_mul_sd(qq,VV);
- fijC = _mm_mul_sd(qq,FF);
- fijC = _mm_mul_sd(fijC,gbscale);
-
- dvdatmp = _mm_mul_sd(fijC,r);
- dvdatmp = _mm_add_sd(vgb,dvdatmp);
- dvdatmp = _mm_mul_sd(dvdatmp,neg);
- dvdatmp = _mm_mul_sd(dvdatmp,half);
- dvdasum = _mm_add_sd(dvdasum,dvdatmp);
-
- xmm1 = _mm_mul_sd(dvdatmp,isaj);
- xmm1 = _mm_mul_sd(xmm1,isaj);
- dvdaj = _mm_add_sd(dvdaj,xmm1);
-
- /* store dvda */
- _mm_storel_pd(dvda+jnr1,dvdaj);
-
- vctot = _mm_add_sd(vctot,vcoul);
- vgbtot = _mm_add_sd(vgbtot,vgb);
-
- /* VdW interaction */
- rinvsix = _mm_mul_sd(rinvsq,rinvsq);
- rinvsix = _mm_mul_sd(rinvsix,rinvsq);
-
- Vvdw6 = _mm_mul_sd(c6,rinvsix);
- Vvdw12 = _mm_mul_sd(c12,rinvsix);
- Vvdw12 = _mm_mul_sd(Vvdw12,rinvsix);
- Vvdwtmp = _mm_sub_sd(Vvdw12,Vvdw6);
- Vvdwtot = _mm_add_sd(Vvdwtot,Vvdwtmp);
-
- xmm1 = _mm_mul_sd(twelwe,Vvdw12);
- xmm2 = _mm_mul_sd(six,Vvdw6);
- xmm1 = _mm_sub_sd(xmm1,xmm2);
- xmm1 = _mm_mul_sd(xmm1,rinvsq);
-
- /* Scalar force */
- fscal = _mm_sub_sd(fijC,fscal);
- fscal = _mm_mul_sd(fscal,rinv);
- fscal = _mm_sub_sd(xmm1,fscal);
-
- /* calculate partial force terms */
- t1 = _mm_mul_sd(fscal,dx);
- t2 = _mm_mul_sd(fscal,dy);
- t3 = _mm_mul_sd(fscal,dz);
-
- /* update the i force */
- fix = _mm_add_sd(fix,t1);
- fiy = _mm_add_sd(fiy,t2);
- fiz = _mm_add_sd(fiz,t3);
-
- /* accumulate forces from memory */
- xmm5 = _mm_load_sd(faction+j13); /* fx */
- xmm6 = _mm_load_sd(faction+j13+1); /* fy */
- xmm7 = _mm_load_sd(faction+j13+2); /* fz */
-
- /* subtract partial forces */
- xmm5 = _mm_sub_sd(xmm5,t1);
- xmm6 = _mm_sub_sd(xmm6,t2);
- xmm7 = _mm_sub_sd(xmm7,t3);
-
- /* store forces */
- _mm_store_sd(faction+j13,xmm5);
- _mm_store_sd(faction+j13+1,xmm6);
- _mm_store_sd(faction+j13+2,xmm7);
+ jnrA = jjnr[k];
+
+ j3A = jnrA * 3;
+
+ GMX_MM_LOAD_1RVEC_1POINTER_PD(pos+j3A,jx,jy,jz);
+
+ dx = _mm_sub_sd(ix,jx);
+ dy = _mm_sub_sd(iy,jy);
+ dz = _mm_sub_sd(iz,jz);
+
+ rsq = gmx_mm_calc_rsq_pd(dx,dy,dz);
+
+ rinv = gmx_mm_invsqrt_pd(rsq);
+ rinvsq = _mm_mul_sd(rinv,rinv);
+
+ /***********************************/
+ /* INTERACTION SECTION STARTS HERE */
+ /***********************************/
+ GMX_MM_LOAD_1VALUE_PD(charge+jnrA,jq);
+ GMX_MM_LOAD_1VALUE_PD(invsqrta+jnrA,isaj);
+
+ /* Lennard-Jones */
+ tjA = nti+2*type[jnrA];
+
+ GMX_MM_LOAD_1PAIR_PD(vdwparam+tjA,c6,c12);
+
+ isaprod = _mm_mul_sd(isai,isaj);
+ qq = _mm_mul_sd(iq,jq);
+ vcoul = _mm_mul_sd(qq,rinv);
+ fscal = _mm_mul_sd(vcoul,rinv);
+ vctot = _mm_add_sd(vctot,vcoul);
+
+ /* Polarization interaction */
+ qq = _mm_mul_sd(qq,_mm_mul_sd(isaprod,gbfactor));
+ gbscale = _mm_mul_sd(isaprod,gbtabscale);
+
+ /* Calculate GB table index */
+ r = _mm_mul_sd(rsq,rinv);
+ rtab = _mm_mul_sd(r,gbscale);
+
+ n0 = _mm_cvttpd_epi32(rtab);
+ eps = _mm_sub_sd(rtab,_mm_cvtepi32_pd(n0));
+ nnn = _mm_slli_epi32(n0,2);
+
+ /* the tables are 16-byte aligned, so we can use _mm_load_pd */
+ Y = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0)));
+ F = _mm_setzero_pd();
+ GMX_MM_TRANSPOSE2_PD(Y,F);
+ G = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0))+2);
+ H = _mm_setzero_pd();
+ GMX_MM_TRANSPOSE2_PD(G,H);
+
+ G = _mm_mul_sd(G,eps);
+ H = _mm_mul_sd(H, _mm_mul_sd(eps,eps) );
+ F = _mm_add_sd(F, _mm_add_sd( G , H ) );
+ Y = _mm_add_sd(Y, _mm_mul_sd(F, eps));
+ F = _mm_add_sd(F, _mm_add_sd(G , _mm_mul_sd(H,two)));
+ vgb = _mm_mul_sd(Y, qq);
+ fijGB = _mm_mul_sd(F, _mm_mul_sd(qq,gbscale));
+
+ dvdatmp = _mm_mul_sd(_mm_add_sd(vgb, _mm_mul_sd(fijGB,r)) , minushalf);
+
+ vgbtot = _mm_add_sd(vgbtot, vgb);
+
+ dvdasum = _mm_add_sd(dvdasum, dvdatmp);
+ dvdatmp = _mm_mul_sd(dvdatmp, _mm_mul_sd(isaj,isaj));
+
+ GMX_MM_INCREMENT_1VALUE_PD(dvda+jnrA,dvdatmp);
+
+ rinvsix = _mm_mul_sd(rinvsq,rinvsq);
+ rinvsix = _mm_mul_sd(rinvsix,rinvsq);
+
+ vvdw6 = _mm_mul_sd(c6,rinvsix);
+ vvdw12 = _mm_mul_sd(c12, _mm_mul_sd(rinvsix,rinvsix));
+ vvdwtot = _mm_add_sd(vvdwtot,_mm_sub_sd(vvdw12,vvdw6));
+
+ fscal = _mm_sub_sd(_mm_mul_sd(rinvsq,
+ _mm_sub_sd(_mm_mul_sd(twelve,vvdw12),
+ _mm_mul_sd(six,vvdw6))),
+ _mm_mul_sd( _mm_sub_sd( fijGB,fscal),rinv ));
+
+ /***********************************/
+ /* INTERACTION SECTION ENDS HERE */
+ /***********************************/
+
+ /* Calculate temporary vectorial force */
+ tx = _mm_mul_sd(fscal,dx);
+ ty = _mm_mul_sd(fscal,dy);
+ tz = _mm_mul_sd(fscal,dz);
+
+ /* Increment i atom force */
+ fix = _mm_add_sd(fix,tx);
+ fiy = _mm_add_sd(fiy,ty);
+ fiz = _mm_add_sd(fiz,tz);
+
+ /* Store j forces back */
+ GMX_MM_DECREMENT_1RVEC_1POINTER_PD(faction+j3A,tx,ty,tz);
}
- /* fix/fiy/fiz now contain four partial terms, that all should be
- * added to the i particle forces
- */
- t1 = _mm_unpacklo_pd(t1,fix);
- t2 = _mm_unpacklo_pd(t2,fiy);
- t3 = _mm_unpacklo_pd(t3,fiz);
-
- fix = _mm_add_pd(fix,t1);
- fiy = _mm_add_pd(fiy,t2);
- fiz = _mm_add_pd(fiz,t3);
-
- fix = _mm_shuffle_pd(fix,fix,_MM_SHUFFLE2(1,1));
- fiy = _mm_shuffle_pd(fiy,fiy,_MM_SHUFFLE2(1,1));
- fiz = _mm_shuffle_pd(fiz,fiz,_MM_SHUFFLE2(1,1));
-
- /* Load i forces from memory */
- xmm1 = _mm_load_sd(faction+ii3);
- xmm2 = _mm_load_sd(faction+ii3+1);
- xmm3 = _mm_load_sd(faction+ii3+2);
-
- /* Add to i force */
- fix = _mm_add_sd(fix,xmm1);
- fiy = _mm_add_sd(fiy,xmm2);
- fiz = _mm_add_sd(fiz,xmm3);
-
- /* store i forces to memory */
- _mm_store_sd(faction+ii3,fix);
- _mm_store_sd(faction+ii3+1,fiy);
- _mm_store_sd(faction+ii3+2,fiz);
-
- /* Load i shift forces from memory */
- xmm1 = _mm_load_sd(fshift+is3);
- xmm2 = _mm_load_sd(fshift+is3+1);
- xmm3 = _mm_load_sd(fshift+is3+2);
-
- /* Add to i force */
- fix = _mm_add_sd(fix,xmm1);
- fiy = _mm_add_sd(fiy,xmm2);
- fiz = _mm_add_sd(fiz,xmm3);
-
- /* store i shift forces to memory */
- _mm_store_sd(fshift+is3,fix);
- _mm_store_sd(fshift+is3+1,fiy);
- _mm_store_sd(fshift+is3+2,fiz);
-
- /* now do dvda */
- dvdatmp = _mm_unpacklo_pd(dvdatmp,dvdasum);
- dvdasum = _mm_add_pd(dvdasum,dvdatmp);
- _mm_storeh_pd(&dva,dvdasum);
- dvda[ii] = dvda[ii] + dva*isai_d*isai_d;
-
- ggid = gid[n];
-
- /* Coulomb potential */
- vcoul = _mm_unpacklo_pd(vcoul,vctot);
- vctot = _mm_add_pd(vctot,vcoul);
- _mm_storeh_pd(&vct,vctot);
- Vc[ggid] = Vc[ggid] + vct;
-
- /* VdW potential */
- Vvdwtmp = _mm_unpacklo_pd(Vvdwtmp,Vvdwtot);
- Vvdwtot = _mm_add_pd(Vvdwtot,Vvdwtmp);
- _mm_storeh_pd(&vdwt,Vvdwtot);
- Vvdw[ggid] = Vvdw[ggid] + vdwt;
-
- /* GB potential */
- vgb = _mm_unpacklo_pd(vgb,vgbtot);
- vgbtot = _mm_add_pd(vgbtot,vgb);
- _mm_storeh_pd(&vgbt,vgbtot);
- gpol[ggid] = gpol[ggid] + vgbt;
+ dvdasum = _mm_mul_pd(dvdasum, _mm_mul_pd(isai,isai));
+ gmx_mm_update_iforce_1atom_pd(&fix,&fiy,&fiz,faction+ii3,fshift+is3);
+
+ ggid = gid[n];
+
+ gmx_mm_update_2pot_pd(vctot,vc+ggid,vvdwtot,vvdw+ggid);
+ gmx_mm_update_2pot_pd(vgbtot,gpol+ggid,dvdasum,dvda+ii);
}
*outeriter = nri;
*inneriter = nj1;
-
-
-
-
-
}
/* get gmx_gbdata_t */
#include "../nb_kerneltype.h"
-
+#include "nb_kernel430_ia32_sse2.h"
void nb_kernel430_ia32_sse2(int * p_nri,
- int * iinr,
- int * jindex,
- int * jjnr,
- int * shift,
- double * shiftvec,
- double * fshift,
- int * gid,
- double * pos,
- double * faction,
- double * charge,
- double * p_facel,
- double * p_krf,
- double * p_crf,
- double * Vc,
- int * type,
- int * p_ntype,
- double * vdwparam,
- double * Vvdw,
- double * p_tabscale,
- double * VFtab,
- double * invsqrta,
- double * dvda,
- double * p_gbtabscale,
- double * GBtab,
- int * p_nthreads,
- int * count,
- void * mtx,
- int * outeriter,
- int * inneriter,
- double * work)
+ int * iinr,
+ int * jindex,
+ int * jjnr,
+ int * shift,
+ double * shiftvec,
+ double * fshift,
+ int * gid,
+ double * pos,
+ double * faction,
+ double * charge,
+ double * p_facel,
+ double * p_krf,
+ double * p_crf,
+ double * vc,
+ int * type,
+ int * p_ntype,
+ double * vdwparam,
+ double * vvdw,
+ double * p_tabscale,
+ double * VFtab,
+ double * invsqrta,
+ double * dvda,
+ double * p_gbtabscale,
+ double * GBtab,
+ int * p_nthreads,
+ int * count,
+ void * mtx,
+ int * outeriter,
+ int * inneriter,
+ double * work)
{
- int nri,ntype,nthreads,offset,tj,tj2,nti;
- int n,ii,is3,ii3,k,nj0,nj1,jnr1,jnr2,j13,j23,ggid;
- double facel,krf,crf,tabscl,gbtabscl,vct,vdwt,vgbt,nt1,nt2;
- double shX,shY,shZ,isai_d,dva;
+ int nri,ntype,nthreads;
+ int n,ii,is3,ii3,k,nj0,nj1,ggid;
+ double shX,shY,shZ;
+ int offset,nti;
+ int jnrA,jnrB;
+ int j3A,j3B;
+ int tjA,tjB;
gmx_gbdata_t *gbdata;
- double * gpol;
-
- __m128d ix,iy,iz,jx,jy,jz;
- __m128d dx,dy,dz,t1,t2,t3;
- __m128d fix,fiy,fiz,rsq11,rinv,r,fscal,rt,eps,eps2;
- __m128d q,iq,qq,isai,isaj,isaprod,vcoul,gbscale,dvdai,dvdaj;
- __m128d Y,F,G,H,Fp,VV,FF,vgb,fijC,fijD,fijR,dvdatmp,dvdasum,vctot,n0d;
- __m128d xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7,xmm8;
- __m128d c6,c12,Vvdw6,Vvdw12,Vvdwtmp,Vvdwtot,vgbtot,rinvsq,rinvsix;
- __m128d fac,tabscale,gbtabscale,gbfactor;
- __m128i n0,nnn;
-
- const __m128d neg = {-1.0f,-1.0f};
- const __m128d zero = {0.0f,0.0f};
- const __m128d half = {0.5f,0.5f};
- const __m128d two = {2.0f,2.0f};
- const __m128d three = {3.0f,3.0f};
- const __m128d six = {6.0f,6.0f};
- const __m128d twelwe = {12.0f,12.0f};
+ double * gpol;
+
+ __m128d iq,qq,jq,isai;
+ __m128d ix,iy,iz;
+ __m128d jx,jy,jz;
+ __m128d dx,dy,dz;
+ __m128d vctot,vvdwtot,vgbtot,dvdasum,gbfactor;
+ __m128d fix,fiy,fiz,tx,ty,tz,rsq;
+ __m128d rinv,isaj,isaprod;
+ __m128d vcoul,fscal,gbscale,c6,c12;
+ __m128d rinvsq,r,rtab;
+ __m128d eps,Y,F,G,H;
+ __m128d VV,FF,Fp;
+ __m128d vgb,fijGB,dvdatmp;
+ __m128d rinvsix,vvdw6,vvdw12,vvdwtmp;
+ __m128d facel,gbtabscale,dvdaj;
+ __m128d fijD,fijR;
+ __m128d xmm1,tabscale,eps2;
+ __m128i n0, nnn;
+
- const __m128i four = _mm_set_epi32(4,4,4,4);
+ const __m128d neg = _mm_set1_pd(-1.0);
+ const __m128d zero = _mm_set1_pd(0.0);
+ const __m128d minushalf = _mm_set1_pd(-0.5);
+ const __m128d two = _mm_set1_pd(2.0);
gbdata = (gmx_gbdata_t *)work;
gpol = gbdata->gpol;
-
+
nri = *p_nri;
ntype = *p_ntype;
- nthreads = *p_nthreads;
- facel = *p_facel;
- krf = *p_krf;
- crf = *p_crf;
- tabscl = *p_tabscale;
- gbtabscl = *p_gbtabscale;
- nj1 = 0;
+
+ gbfactor = _mm_set1_pd( - ((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
+ gbtabscale = _mm_load1_pd(p_gbtabscale);
+ facel = _mm_load1_pd(p_facel);
+ tabscale = _mm_load1_pd(p_tabscale);
+
+ nj1 = 0;
+ jnrA = jnrB = 0;
+ j3A = j3B = 0;
+ jx = _mm_setzero_pd();
+ jy = _mm_setzero_pd();
+ jz = _mm_setzero_pd();
+ c6 = _mm_setzero_pd();
+ c12 = _mm_setzero_pd();
- /* Splat variables */
- fac = _mm_load1_pd(&facel);
- tabscale = _mm_load1_pd(&tabscl);
- gbtabscale = _mm_load1_pd(&gbtabscl);
- gbfactor = _mm_set1_pd(((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
-
- /* Keep compiler happy */
- Vvdwtmp = _mm_setzero_pd();
- Vvdwtot = _mm_setzero_pd();
- dvdatmp = _mm_setzero_pd();
- dvdaj = _mm_setzero_pd();
- isaj = _mm_setzero_pd();
- vcoul = _mm_setzero_pd();
- vgb = _mm_setzero_pd();
- t1 = _mm_setzero_pd();
- t2 = _mm_setzero_pd();
- t3 = _mm_setzero_pd();
- xmm1 = _mm_setzero_pd();
- xmm2 = _mm_setzero_pd();
- xmm3 = _mm_setzero_pd();
- xmm4 = _mm_setzero_pd();
- jnr1 = jnr2 = 0;
- j13 = j23 = 0;
-
for(n=0;n<nri;n++)
{
- is3 = 3*shift[n];
- shX = shiftvec[is3];
- shY = shiftvec[is3+1];
- shZ = shiftvec[is3+2];
+ is3 = 3*shift[n];
+ shX = shiftvec[is3];
+ shY = shiftvec[is3+1];
+ shZ = shiftvec[is3+2];
+ nj0 = jindex[n];
+ nj1 = jindex[n+1];
+ ii = iinr[n];
+ ii3 = 3*ii;
- nj0 = jindex[n];
- nj1 = jindex[n+1];
- offset = (nj1-nj0)%2;
+ ix = _mm_set1_pd(shX+pos[ii3+0]);
+ iy = _mm_set1_pd(shY+pos[ii3+1]);
+ iz = _mm_set1_pd(shZ+pos[ii3+2]);
+
+ iq = _mm_load1_pd(charge+ii);
+ iq = _mm_mul_pd(iq,facel);
+
+ isai = _mm_load1_pd(invsqrta+ii);
+
+ nti = 2*ntype*type[ii];
- ii = iinr[n];
- ii3 = ii*3;
-
- ix = _mm_set1_pd(shX+pos[ii3+0]);
- iy = _mm_set1_pd(shX+pos[ii3+1]);
- iz = _mm_set1_pd(shX+pos[ii3+2]);
- q = _mm_set1_pd(charge[ii]);
-
- iq = _mm_mul_pd(fac,q);
- isai_d = invsqrta[ii];
- isai = _mm_load1_pd(&isai_d);
-
- nti = 2*ntype*type[ii];
-
- fix = _mm_setzero_pd();
- fiy = _mm_setzero_pd();
- fiz = _mm_setzero_pd();
- dvdasum = _mm_setzero_pd();
- vctot = _mm_setzero_pd();
- vgbtot = _mm_setzero_pd();
- Vvdwtot = _mm_setzero_pd();
-
- for(k=nj0;k<nj1-offset; k+=2)
+ vctot = _mm_setzero_pd();
+ vvdwtot = _mm_setzero_pd();
+ vgbtot = _mm_setzero_pd();
+ dvdasum = _mm_setzero_pd();
+ fix = _mm_setzero_pd();
+ fiy = _mm_setzero_pd();
+ fiz = _mm_setzero_pd();
+
+ for(k=nj0;k<nj1-1; k+=2)
{
- jnr1 = jjnr[k];
- jnr2 = jjnr[k+1];
-
- j13 = jnr1 * 3;
- j23 = jnr2 * 3;
-
- /* Load coordinates */
- xmm1 = _mm_loadu_pd(pos+j13); /* x1 y1 */
- xmm2 = _mm_loadu_pd(pos+j23); /* x2 y2 */
-
- xmm5 = _mm_load_sd(pos+j13+2); /* z1 - */
- xmm6 = _mm_load_sd(pos+j23+2); /* z2 - */
-
- /* transpose */
- jx = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0));
- jy = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1));
- jz = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(0,0));
-
- /* distances */
- dx = _mm_sub_pd(ix,jx);
- dy = _mm_sub_pd(iy,jy);
- dz = _mm_sub_pd(iz,jz);
-
- rsq11 = _mm_add_pd( _mm_add_pd( _mm_mul_pd(dx,dx) , _mm_mul_pd(dy,dy) ) , _mm_mul_pd(dz,dz) );
- rinv = gmx_mm_invsqrt_pd(rsq11);
-
- /* Load invsqrta */
- isaj = _mm_loadl_pd(isaj,invsqrta+jnr1);
- isaj = _mm_loadh_pd(isaj,invsqrta+jnr2);
- isaprod = _mm_mul_pd(isai,isaj);
-
- /* Load charges */
- q = _mm_loadl_pd(q,charge+jnr1);
- q = _mm_loadh_pd(q,charge+jnr2);
- qq = _mm_mul_pd(iq,q);
-
- vcoul = _mm_mul_pd(qq,rinv);
- fscal = _mm_mul_pd(vcoul,rinv);
- qq = _mm_mul_pd(isaprod,qq);
- qq = _mm_mul_pd(qq,neg);
- qq = _mm_mul_pd(qq,gbfactor);
- gbscale = _mm_mul_pd(isaprod,gbtabscale);
-
- /* Load VdW parameters */
- tj = nti+2*type[jnr1];
- tj2 = nti+2*type[jnr2];
-
- xmm1 = _mm_loadu_pd(vdwparam+tj);
- xmm2 = _mm_loadu_pd(vdwparam+tj2);
- c6 = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0));
- c12 = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1));
-
- /* Load dvdaj */
- dvdaj = _mm_loadl_pd(dvdaj, dvda+jnr1);
- dvdaj = _mm_loadh_pd(dvdaj, dvda+jnr2);
-
- /* Calculate GB table index */
- r = _mm_mul_pd(rsq11,rinv);
- rt = _mm_mul_pd(r,gbscale);
- n0 = _mm_cvttpd_epi32(rt);
- n0d = _mm_cvtepi32_pd(n0);
- eps = _mm_sub_pd(rt,n0d);
- eps2 = _mm_mul_pd(eps,eps);
-
- nnn = _mm_slli_epi64(n0,2);
-
- xmm1 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0))); /* Y1 F1 */
- xmm2 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1))); /* Y2 F2 */
- xmm3 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0))+2); /* G1 H1 */
- xmm4 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1))+2); /* G2 H2 */
-
- Y = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0)); /* Y1 Y2 */
- F = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1)); /* F1 F2 */
- G = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(0,0)); /* G1 G2 */
- H = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(1,1)); /* H1 H2 */
-
- G = _mm_mul_pd(G,eps);
- H = _mm_mul_pd(H,eps2);
- Fp = _mm_add_pd(F,G);
- Fp = _mm_add_pd(Fp,H);
- VV = _mm_mul_pd(Fp,eps);
- VV = _mm_add_pd(Y,VV);
- H = _mm_mul_pd(two,H);
- FF = _mm_add_pd(Fp,G);
- FF = _mm_add_pd(FF,H);
- vgb = _mm_mul_pd(qq,VV);
- fijC = _mm_mul_pd(qq,FF);
- fijC = _mm_mul_pd(fijC,gbscale);
-
- dvdatmp = _mm_mul_pd(fijC,r);
- dvdatmp = _mm_add_pd(vgb,dvdatmp);
- dvdatmp = _mm_mul_pd(dvdatmp,neg);
- dvdatmp = _mm_mul_pd(dvdatmp,half);
- dvdasum = _mm_add_pd(dvdasum,dvdatmp);
-
- xmm1 = _mm_mul_pd(dvdatmp,isaj);
- xmm1 = _mm_mul_pd(xmm1,isaj);
- dvdaj = _mm_add_pd(dvdaj,xmm1);
-
- /* store dvda */
- _mm_storel_pd(dvda+jnr1,dvdaj);
- _mm_storeh_pd(dvda+jnr2,dvdaj);
-
- vctot = _mm_add_pd(vctot,vcoul);
- vgbtot = _mm_add_pd(vgbtot,vgb);
-
- /* Calculate VDW table index */
- rt = _mm_mul_pd(r,tabscale);
- n0 = _mm_cvttpd_epi32(rt);
- n0d = _mm_cvtepi32_pd(n0);
- eps = _mm_sub_pd(rt,n0d);
+ jnrA = jjnr[k];
+ jnrB = jjnr[k+1];
+
+ j3A = jnrA * 3;
+ j3B = jnrB * 3;
+
+ GMX_MM_LOAD_1RVEC_2POINTERS_PD(pos+j3A,pos+j3B,jx,jy,jz);
+
+ dx = _mm_sub_pd(ix,jx);
+ dy = _mm_sub_pd(iy,jy);
+ dz = _mm_sub_pd(iz,jz);
+
+ rsq = gmx_mm_calc_rsq_pd(dx,dy,dz);
+
+ rinv = gmx_mm_invsqrt_pd(rsq);
+ rinvsq = _mm_mul_pd(rinv,rinv);
+
+ /***********************************/
+ /* INTERACTION SECTION STARTS HERE */
+ /***********************************/
+ GMX_MM_LOAD_2VALUES_PD(charge+jnrA,charge+jnrB,jq);
+ GMX_MM_LOAD_2VALUES_PD(invsqrta+jnrA,invsqrta+jnrB,isaj);
+
+ /* Lennard-Jones */
+ tjA = nti+2*type[jnrA];
+ tjB = nti+2*type[jnrB];
+
+ GMX_MM_LOAD_2PAIRS_PD(vdwparam+tjA,vdwparam+tjB,c6,c12);
+
+ isaprod = _mm_mul_pd(isai,isaj);
+ qq = _mm_mul_pd(iq,jq);
+ vcoul = _mm_mul_pd(qq,rinv);
+ fscal = _mm_mul_pd(vcoul,rinv);
+ vctot = _mm_add_pd(vctot,vcoul);
+
+ /* Polarization interaction */
+ qq = _mm_mul_pd(qq,_mm_mul_pd(isaprod,gbfactor));
+ gbscale = _mm_mul_pd(isaprod,gbtabscale);
+
+ /* Calculate GB table index */
+ r = _mm_mul_pd(rsq,rinv);
+ rtab = _mm_mul_pd(r,gbscale);
+
+ n0 = _mm_cvttpd_epi32(rtab);
+ eps = _mm_sub_pd(rtab,_mm_cvtepi32_pd(n0));
+ nnn = _mm_slli_epi32(n0,2);
+
+ /* the tables are 16-byte aligned, so we can use _mm_load_pd */
+ Y = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0)));
+ F = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,1)));
+ GMX_MM_TRANSPOSE2_PD(Y,F);
+ G = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0))+2);
+ H = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,1))+2);
+ GMX_MM_TRANSPOSE2_PD(G,H);
+
+ G = _mm_mul_pd(G,eps);
+ H = _mm_mul_pd(H, _mm_mul_pd(eps,eps) );
+ F = _mm_add_pd(F, _mm_add_pd( G , H ) );
+ Y = _mm_add_pd(Y, _mm_mul_pd(F, eps));
+ F = _mm_add_pd(F, _mm_add_pd(G , _mm_mul_pd(H,two)));
+ vgb = _mm_mul_pd(Y, qq);
+ fijGB = _mm_mul_pd(F, _mm_mul_pd(qq,gbscale));
+
+ dvdatmp = _mm_mul_pd(_mm_add_pd(vgb, _mm_mul_pd(fijGB,r)) , minushalf);
+
+ vgbtot = _mm_add_pd(vgbtot, vgb);
+
+ dvdasum = _mm_add_pd(dvdasum, dvdatmp);
+ dvdatmp = _mm_mul_pd(dvdatmp, _mm_mul_pd(isaj,isaj));
+
+ GMX_MM_INCREMENT_2VALUES_PD(dvda+jnrA,dvda+jnrB,dvdatmp);
+
+ /* Calculate VDW table index */
+ rtab = _mm_mul_pd(r,tabscale);
+ n0 = _mm_cvttpd_epi32(rtab);
+ eps = _mm_sub_pd(rtab,_mm_cvtepi32_pd(n0));
eps2 = _mm_mul_pd(eps,eps);
nnn = _mm_slli_epi32(n0,3);
- /* Tabulated VdW interaction - dispersion */
- xmm1 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,0))); /* Y1 F1 */
- xmm2 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,1))); /* Y2 F2 */
- xmm3 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,0))+2); /* G1 H1 */
- xmm4 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,1))+2); /* G2 H2 */
-
- Y = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0)); /* Y1 Y2 */
- F = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1)); /* F1 F2 */
- G = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(0,0)); /* G1 G2 */
- H = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(1,1)); /* H1 H2 */
-
- G = _mm_mul_pd(G,eps);
+ /* Dispersion */
+ Y = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,0)));
+ F = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,1)));
+ GMX_MM_TRANSPOSE2_PD(Y,F);
+ G = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,0))+2);
+ H = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,1))+2);
+ GMX_MM_TRANSPOSE2_PD(G,H);
+
+ G = _mm_mul_pd(G,eps);
H = _mm_mul_pd(H,eps2);
Fp = _mm_add_pd(F,G);
Fp = _mm_add_pd(Fp,H);
FF = _mm_add_pd(Fp,G);
FF = _mm_add_pd(FF,xmm1);
- Vvdw6 = _mm_mul_pd(c6,VV);
+ vvdw6 = _mm_mul_pd(c6,VV);
fijD = _mm_mul_pd(c6,FF);
-
- /* Tabulated VdW interaction - repulsion */
- nnn = _mm_add_epi32(nnn,four);
-
- xmm1 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,0))); /* Y1 F1 */
- xmm2 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,1))); /* Y2 F2 */
- xmm3 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,0))+2); /* G1 H1 */
- xmm4 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,1))+2); /* G2 H2 */
-
- Y = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0)); /* Y1 Y2 */
- F = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1)); /* F1 F2 */
- G = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(0,0)); /* G1 G2 */
- H = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(1,1)); /* H1 H2 */
-
- G = _mm_mul_pd(G,eps);
+
+ /* Dispersion */
+ Y = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,0))+4);
+ F = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,1))+4);
+ GMX_MM_TRANSPOSE2_PD(Y,F);
+ G = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,0))+6);
+ H = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,1))+6);
+ GMX_MM_TRANSPOSE2_PD(G,H);
+
+ G = _mm_mul_pd(G,eps);
H = _mm_mul_pd(H,eps2);
Fp = _mm_add_pd(F,G);
Fp = _mm_add_pd(Fp,H);
FF = _mm_add_pd(Fp,G);
FF = _mm_add_pd(FF,xmm1);
- Vvdw12 = _mm_mul_pd(c12,VV);
+ vvdw12 = _mm_mul_pd(c12,VV);
fijR = _mm_mul_pd(c12,FF);
- Vvdwtmp = _mm_add_pd(Vvdw12,Vvdw6);
- Vvdwtot = _mm_add_pd(Vvdwtot,Vvdwtmp);
-
+ vvdwtmp = _mm_add_pd(vvdw12,vvdw6);
+ vvdwtot = _mm_add_pd(vvdwtot,vvdwtmp);
+
xmm1 = _mm_add_pd(fijD,fijR);
xmm1 = _mm_mul_pd(xmm1,tabscale);
- xmm1 = _mm_add_pd(xmm1,fijC);
+ xmm1 = _mm_add_pd(xmm1,fijGB);
xmm1 = _mm_sub_pd(xmm1,fscal);
fscal = _mm_mul_pd(xmm1,neg);
fscal = _mm_mul_pd(fscal,rinv);
-
- /* calculate partial force terms */
- t1 = _mm_mul_pd(fscal,dx);
- t2 = _mm_mul_pd(fscal,dy);
- t3 = _mm_mul_pd(fscal,dz);
-
- /* update the i force */
- fix = _mm_add_pd(fix,t1);
- fiy = _mm_add_pd(fiy,t2);
- fiz = _mm_add_pd(fiz,t3);
-
- /* accumulate forces from memory */
- xmm1 = _mm_loadu_pd(faction+j13); /* fx1 fy1 */
- xmm2 = _mm_loadu_pd(faction+j23); /* fx2 fy2 */
-
- xmm5 = _mm_load1_pd(faction+j13+2); /* fz1 fz1 */
- xmm6 = _mm_load1_pd(faction+j23+2); /* fz2 fz2 */
-
- /* transpose */
- xmm7 = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(0,0)); /* fz1 fz2 */
- xmm5 = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0)); /* fx1 fx2 */
- xmm6 = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1)); /* fy1 fy2 */
-
- /* subtract partial forces */
- xmm5 = _mm_sub_pd(xmm5,t1);
- xmm6 = _mm_sub_pd(xmm6,t2);
- xmm7 = _mm_sub_pd(xmm7,t3);
-
- xmm1 = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(0,0)); /* fx1 fy1 */
- xmm2 = _mm_shuffle_pd(xmm5,xmm6,_MM_SHUFFLE2(1,1)); /* fy1 fy2 */
-
- /* store fx and fy */
- _mm_storeu_pd(faction+j13,xmm1);
- _mm_storeu_pd(faction+j23,xmm2);
-
- /* .. then fz */
- _mm_storel_pd(faction+j13+2,xmm7);
- _mm_storel_pd(faction+j23+2,xmm7);
+
+ /***********************************/
+ /* INTERACTION SECTION ENDS HERE */
+ /***********************************/
+
+ /* Calculate temporary vectorial force */
+ tx = _mm_mul_pd(fscal,dx);
+ ty = _mm_mul_pd(fscal,dy);
+ tz = _mm_mul_pd(fscal,dz);
+
+ /* Increment i atom force */
+ fix = _mm_add_pd(fix,tx);
+ fiy = _mm_add_pd(fiy,ty);
+ fiz = _mm_add_pd(fiz,tz);
+
+ /* Store j forces back */
+ GMX_MM_DECREMENT_1RVEC_2POINTERS_PD(faction+j3A,faction+j3B,tx,ty,tz);
}
/* In double precision, offset can only be either 0 or 1 */
- if(offset!=0)
+ if(k<nj1)
{
- jnr1 = jjnr[k];
- j13 = jnr1*3;
-
- jx = _mm_load_sd(pos+j13);
- jy = _mm_load_sd(pos+j13+1);
- jz = _mm_load_sd(pos+j13+2);
-
- isaj = _mm_load_sd(invsqrta+jnr1);
- isaprod = _mm_mul_sd(isai,isaj);
- dvdaj = _mm_load_sd(dvda+jnr1);
- q = _mm_load_sd(charge+jnr1);
- qq = _mm_mul_sd(iq,q);
-
- dx = _mm_sub_sd(ix,jx);
- dy = _mm_sub_sd(iy,jy);
- dz = _mm_sub_sd(iz,jz);
-
- rsq11 = _mm_add_pd( _mm_add_pd( _mm_mul_pd(dx,dx) , _mm_mul_pd(dy,dy) ) , _mm_mul_pd(dz,dz) );
- rinv = gmx_mm_invsqrt_pd(rsq11);
-
- vcoul = _mm_mul_sd(qq,rinv);
- fscal = _mm_mul_sd(vcoul,rinv);
- qq = _mm_mul_sd(isaprod,qq);
- qq = _mm_mul_sd(qq,neg);
- qq = _mm_mul_sd(qq,gbfactor);
- gbscale = _mm_mul_sd(isaprod,gbtabscale);
-
- /* Load VdW parameters */
- tj = nti+2*type[jnr1];
-
- c6 = _mm_load_sd(vdwparam+tj);
- c12 = _mm_load_sd(vdwparam+tj+1);
-
- /* Calculate GB table index */
- r = _mm_mul_sd(rsq11,rinv);
- rt = _mm_mul_sd(r,gbscale);
- n0 = _mm_cvttpd_epi32(rt);
- n0d = _mm_cvtepi32_pd(n0);
- eps = _mm_sub_sd(rt,n0d);
- eps2 = _mm_mul_sd(eps,eps);
-
- nnn = _mm_slli_epi64(n0,2);
-
- xmm1 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0)));
- xmm2 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1)));
- xmm3 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,0))+2);
- xmm4 = _mm_load_pd(GBtab+(gmx_mm_extract_epi64(nnn,1))+2);
-
- Y = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0));
- F = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1));
- G = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(0,0));
- H = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(1,1));
-
- G = _mm_mul_sd(G,eps);
- H = _mm_mul_sd(H,eps2);
- Fp = _mm_add_sd(F,G);
- Fp = _mm_add_sd(Fp,H);
- VV = _mm_mul_sd(Fp,eps);
- VV = _mm_add_sd(Y,VV);
- H = _mm_mul_sd(two,H);
- FF = _mm_add_sd(Fp,G);
- FF = _mm_add_sd(FF,H);
- vgb = _mm_mul_sd(qq,VV);
- fijC = _mm_mul_sd(qq,FF);
- fijC = _mm_mul_sd(fijC,gbscale);
-
- dvdatmp = _mm_mul_sd(fijC,r);
- dvdatmp = _mm_add_sd(vgb,dvdatmp);
- dvdatmp = _mm_mul_sd(dvdatmp,neg);
- dvdatmp = _mm_mul_sd(dvdatmp,half);
- dvdasum = _mm_add_sd(dvdasum,dvdatmp);
-
- xmm1 = _mm_mul_sd(dvdatmp,isaj);
- xmm1 = _mm_mul_sd(xmm1,isaj);
- dvdaj = _mm_add_sd(dvdaj,xmm1);
-
- /* store dvda */
- _mm_storel_pd(dvda+jnr1,dvdaj);
-
- vctot = _mm_add_sd(vctot,vcoul);
- vgbtot = _mm_add_sd(vgbtot,vgb);
-
- /* Calculate VDW table index */
- rt = _mm_mul_sd(r,tabscale);
- n0 = _mm_cvttpd_epi32(rt);
- n0d = _mm_cvtepi32_pd(n0);
- eps = _mm_sub_sd(rt,n0d);
+ jnrA = jjnr[k];
+ j3A = jnrA * 3;
+
+ GMX_MM_LOAD_1RVEC_1POINTER_PD(pos+j3A,jx,jy,jz);
+
+ dx = _mm_sub_sd(ix,jx);
+ dy = _mm_sub_sd(iy,jy);
+ dz = _mm_sub_sd(iz,jz);
+
+ rsq = gmx_mm_calc_rsq_pd(dx,dy,dz);
+
+ rinv = gmx_mm_invsqrt_pd(rsq);
+ rinvsq = _mm_mul_sd(rinv,rinv);
+
+ /***********************************/
+ /* INTERACTION SECTION STARTS HERE */
+ /***********************************/
+ GMX_MM_LOAD_1VALUE_PD(charge+jnrA,jq);
+ GMX_MM_LOAD_1VALUE_PD(invsqrta+jnrA,isaj);
+
+ /* Lennard-Jones */
+ tjA = nti+2*type[jnrA];
+
+ GMX_MM_LOAD_1PAIR_PD(vdwparam+tjA,c6,c12);
+
+ isaprod = _mm_mul_sd(isai,isaj);
+ qq = _mm_mul_sd(iq,jq);
+ vcoul = _mm_mul_sd(qq,rinv);
+ fscal = _mm_mul_sd(vcoul,rinv);
+ vctot = _mm_add_sd(vctot,vcoul);
+
+ /* Polarization interaction */
+ qq = _mm_mul_sd(qq,_mm_mul_sd(isaprod,gbfactor));
+ gbscale = _mm_mul_sd(isaprod,gbtabscale);
+
+ /* Calculate GB table index */
+ r = _mm_mul_sd(rsq,rinv);
+ rtab = _mm_mul_sd(r,gbscale);
+
+ n0 = _mm_cvttpd_epi32(rtab);
+ eps = _mm_sub_sd(rtab,_mm_cvtepi32_pd(n0));
+ nnn = _mm_slli_epi32(n0,2);
+
+ /* the tables are 16-byte aligned, so we can use _mm_load_pd */
+ Y = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0)));
+ F = _mm_setzero_pd();
+ GMX_MM_TRANSPOSE2_PD(Y,F);
+ G = _mm_load_pd(GBtab+(gmx_mm_extract_epi32(nnn,0))+2);
+ H = _mm_setzero_pd();
+ GMX_MM_TRANSPOSE2_PD(G,H);
+
+ G = _mm_mul_sd(G,eps);
+ H = _mm_mul_sd(H, _mm_mul_sd(eps,eps) );
+ F = _mm_add_sd(F, _mm_add_sd( G , H ) );
+ Y = _mm_add_sd(Y, _mm_mul_sd(F, eps));
+ F = _mm_add_sd(F, _mm_add_sd(G , _mm_mul_sd(H,two)));
+ vgb = _mm_mul_sd(Y, qq);
+ fijGB = _mm_mul_sd(F, _mm_mul_sd(qq,gbscale));
+
+ dvdatmp = _mm_mul_sd(_mm_add_sd(vgb, _mm_mul_sd(fijGB,r)) , minushalf);
+
+ vgbtot = _mm_add_sd(vgbtot, vgb);
+
+ dvdasum = _mm_add_sd(dvdasum, dvdatmp);
+ dvdatmp = _mm_mul_sd(dvdatmp, _mm_mul_sd(isaj,isaj));
+
+ GMX_MM_INCREMENT_1VALUE_PD(dvda+jnrA,dvdatmp);
+
+ /* Calculate VDW table index */
+ rtab = _mm_mul_sd(r,tabscale);
+ n0 = _mm_cvttpd_epi32(rtab);
+ eps = _mm_sub_sd(rtab,_mm_cvtepi32_pd(n0));
eps2 = _mm_mul_sd(eps,eps);
nnn = _mm_slli_epi32(n0,3);
- /* Tabulated VdW interaction - dispersion */
- xmm1 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,0))); /* Y1 F1 */
- xmm2 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,1))); /* Y2 F2 */
- xmm3 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,0))+2); /* G1 H1 */
- xmm4 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,1))+2); /* G2 H2 */
-
- Y = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0)); /* Y1 Y2 */
- F = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1)); /* F1 F2 */
- G = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(0,0)); /* G1 G2 */
- H = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(1,1)); /* H1 H2 */
-
- G = _mm_mul_sd(G,eps);
+ /* Dispersion */
+ Y = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,0)));
+ F = _mm_setzero_pd();
+ GMX_MM_TRANSPOSE2_PD(Y,F);
+ G = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,0))+2);
+ H = _mm_setzero_pd();
+ GMX_MM_TRANSPOSE2_PD(G,H);
+
+ G = _mm_mul_sd(G,eps);
H = _mm_mul_sd(H,eps2);
Fp = _mm_add_sd(F,G);
Fp = _mm_add_sd(Fp,H);
FF = _mm_add_sd(Fp,G);
FF = _mm_add_sd(FF,xmm1);
- Vvdw6 = _mm_mul_sd(c6,VV);
+ vvdw6 = _mm_mul_sd(c6,VV);
fijD = _mm_mul_sd(c6,FF);
-
- /* Tabulated VdW interaction - repulsion */
- nnn = _mm_add_epi32(nnn,four);
-
- xmm1 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,0))); /* Y1 F1 */
- xmm2 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,1))); /* Y2 F2 */
- xmm3 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,0))+2); /* G1 H1 */
- xmm4 = _mm_load_pd(VFtab+(gmx_mm_extract_epi64(nnn,1))+2); /* G2 H2 */
-
- Y = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(0,0)); /* Y1 Y2 */
- F = _mm_shuffle_pd(xmm1,xmm2,_MM_SHUFFLE2(1,1)); /* F1 F2 */
- G = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(0,0)); /* G1 G2 */
- H = _mm_shuffle_pd(xmm3,xmm4,_MM_SHUFFLE2(1,1)); /* H1 H2 */
-
- G = _mm_mul_sd(G,eps);
+
+ /* Dispersion */
+ Y = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,0))+4);
+ F = _mm_setzero_pd();
+ GMX_MM_TRANSPOSE2_PD(Y,F);
+ G = _mm_load_pd(VFtab+(gmx_mm_extract_epi32(nnn,0))+6);
+ H = _mm_setzero_pd();
+ GMX_MM_TRANSPOSE2_PD(G,H);
+
+ G = _mm_mul_sd(G,eps);
H = _mm_mul_sd(H,eps2);
Fp = _mm_add_sd(F,G);
Fp = _mm_add_sd(Fp,H);
FF = _mm_add_sd(Fp,G);
FF = _mm_add_sd(FF,xmm1);
- Vvdw12 = _mm_mul_sd(c12,VV);
+ vvdw12 = _mm_mul_sd(c12,VV);
fijR = _mm_mul_sd(c12,FF);
- Vvdwtmp = _mm_add_sd(Vvdw12,Vvdw6);
- Vvdwtot = _mm_add_sd(Vvdwtot,Vvdwtmp);
-
+ vvdwtmp = _mm_add_sd(vvdw12,vvdw6);
+ vvdwtot = _mm_add_sd(vvdwtot,vvdwtmp);
+
xmm1 = _mm_add_sd(fijD,fijR);
xmm1 = _mm_mul_sd(xmm1,tabscale);
- xmm1 = _mm_add_sd(xmm1,fijC);
+ xmm1 = _mm_add_sd(xmm1,fijGB);
xmm1 = _mm_sub_sd(xmm1,fscal);
fscal = _mm_mul_sd(xmm1,neg);
fscal = _mm_mul_sd(fscal,rinv);
-
- /* calculate partial force terms */
- t1 = _mm_mul_sd(fscal,dx);
- t2 = _mm_mul_sd(fscal,dy);
- t3 = _mm_mul_sd(fscal,dz);
-
- /* update the i force */
- fix = _mm_add_sd(fix,t1);
- fiy = _mm_add_sd(fiy,t2);
- fiz = _mm_add_sd(fiz,t3);
-
- /* accumulate forces from memory */
- xmm5 = _mm_load_sd(faction+j13); /* fx */
- xmm6 = _mm_load_sd(faction+j13+1); /* fy */
- xmm7 = _mm_load_sd(faction+j13+2); /* fz */
-
- /* subtract partial forces */
- xmm5 = _mm_sub_sd(xmm5,t1);
- xmm6 = _mm_sub_sd(xmm6,t2);
- xmm7 = _mm_sub_sd(xmm7,t3);
-
- /* store forces */
- _mm_store_sd(faction+j13,xmm5);
- _mm_store_sd(faction+j13+1,xmm6);
- _mm_store_sd(faction+j13+2,xmm7);
+
+ /***********************************/
+ /* INTERACTION SECTION ENDS HERE */
+ /***********************************/
+
+ /* Calculate temporary vectorial force */
+ tx = _mm_mul_sd(fscal,dx);
+ ty = _mm_mul_sd(fscal,dy);
+ tz = _mm_mul_sd(fscal,dz);
+
+ /* Increment i atom force */
+ fix = _mm_add_sd(fix,tx);
+ fiy = _mm_add_sd(fiy,ty);
+ fiz = _mm_add_sd(fiz,tz);
+
+ /* Store j forces back */
+ GMX_MM_DECREMENT_1RVEC_1POINTER_PD(faction+j3A,tx,ty,tz);
}
- /* fix/fiy/fiz now contain four partial terms, that all should be
- * added to the i particle forces
- */
- t1 = _mm_unpacklo_pd(t1,fix);
- t2 = _mm_unpacklo_pd(t2,fiy);
- t3 = _mm_unpacklo_pd(t3,fiz);
-
- fix = _mm_add_pd(fix,t1);
- fiy = _mm_add_pd(fiy,t2);
- fiz = _mm_add_pd(fiz,t3);
-
- fix = _mm_shuffle_pd(fix,fix,_MM_SHUFFLE2(1,1));
- fiy = _mm_shuffle_pd(fiy,fiy,_MM_SHUFFLE2(1,1));
- fiz = _mm_shuffle_pd(fiz,fiz,_MM_SHUFFLE2(1,1));
-
- /* Load i forces from memory */
- xmm1 = _mm_load_sd(faction+ii3);
- xmm2 = _mm_load_sd(faction+ii3+1);
- xmm3 = _mm_load_sd(faction+ii3+2);
-
- /* Add to i force */
- fix = _mm_add_sd(fix,xmm1);
- fiy = _mm_add_sd(fiy,xmm2);
- fiz = _mm_add_sd(fiz,xmm3);
-
- /* store i forces to memory */
- _mm_store_sd(faction+ii3,fix);
- _mm_store_sd(faction+ii3+1,fiy);
- _mm_store_sd(faction+ii3+2,fiz);
-
- /* Load i shift forces from memory */
- xmm1 = _mm_load_sd(fshift+is3);
- xmm2 = _mm_load_sd(fshift+is3+1);
- xmm3 = _mm_load_sd(fshift+is3+2);
-
- /* Add to i force */
- fix = _mm_add_sd(fix,xmm1);
- fiy = _mm_add_sd(fiy,xmm2);
- fiz = _mm_add_sd(fiz,xmm3);
-
- /* store i forces to memory */
- _mm_store_sd(fshift+is3,fix);
- _mm_store_sd(fshift+is3+1,fiy);
- _mm_store_sd(fshift+is3+2,fiz);
-
- /* now do dvda */
- dvdatmp = _mm_unpacklo_pd(dvdatmp,dvdasum);
- dvdasum = _mm_add_pd(dvdasum,dvdatmp);
- _mm_storeh_pd(&dva,dvdasum);
- dvda[ii] = dvda[ii] + dva*isai_d*isai_d;
-
- ggid = gid[n];
-
- /* Coulomb potential */
- vcoul = _mm_unpacklo_pd(vcoul,vctot);
- vctot = _mm_add_pd(vctot,vcoul);
- _mm_storeh_pd(&vct,vctot);
- Vc[ggid] = Vc[ggid] + vct;
-
- /* VdW potential */
- Vvdwtmp = _mm_unpacklo_pd(Vvdwtmp,Vvdwtot);
- Vvdwtot = _mm_add_pd(Vvdwtot,Vvdwtmp);
- _mm_storeh_pd(&vdwt,Vvdwtot);
- Vvdw[ggid] = Vvdw[ggid] + vdwt;
-
- /* GB potential */
- vgb = _mm_unpacklo_pd(vgb,vgbtot);
- vgbtot = _mm_add_pd(vgbtot,vgb);
- _mm_storeh_pd(&vgbt,vgbtot);
- gpol[ggid] = gpol[ggid] + vgbt;
+ dvdasum = _mm_mul_pd(dvdasum, _mm_mul_pd(isai,isai));
+ gmx_mm_update_iforce_1atom_pd(&fix,&fiy,&fiz,faction+ii3,fshift+is3);
+
+ ggid = gid[n];
+
+ gmx_mm_update_2pot_pd(vctot,vc+ggid,vvdwtot,vvdw+ggid);
+ gmx_mm_update_2pot_pd(vgbtot,gpol+ggid,dvdasum,dvda+ii);
}
-
+
*outeriter = nri;
*inneriter = nj1;
-
-
-
-
-
}
+
fix = _mm_setzero_ps();
fiy = _mm_setzero_ps();
fiz = _mm_setzero_ps();
-
+
for(k=nj0; k<nj1-7; k+=8)
{
jnrA = jjnr[k];
rB = _mm_mul_ps(rsqB,rinvB);
rtab = _mm_mul_ps(r,gbscale);
rtabB = _mm_mul_ps(rB,gbscaleB);
-
+
n0 = _mm_cvttps_epi32(rtab);
n0B = _mm_cvttps_epi32(rtabB);
eps = _mm_sub_ps(rtab , _mm_cvtepi32_ps(n0) );
FB = _mm_add_ps(FB, _mm_add_ps(GB , _mm_mul_ps(HB,two)));
vgbB = _mm_mul_ps(YB, qqB);
fijGBB = _mm_mul_ps(FB, _mm_mul_ps(qqB,gbscaleB));
-
-
+
dvdatmp = _mm_mul_ps(_mm_add_ps(vgb, _mm_mul_ps(fijGB,r)) , minushalf);
dvdatmpB = _mm_mul_ps(_mm_add_ps(vgbB, _mm_mul_ps(fijGBB,rB)) , minushalf);
/* Calculate GB table index */
r = _mm_mul_ps(rsq,rinv);
rtab = _mm_mul_ps(r,gbscale);
-
+
n0 = _mm_cvttps_epi32(rtab);
eps = _mm_sub_ps(rtab , _mm_cvtepi32_ps(n0) );
nnn = _mm_slli_epi32(n0,2);
F = _mm_add_ps(F, _mm_add_ps(G , _mm_mul_ps(H,two)));
vgb = _mm_mul_ps(Y, qq);
fijGB = _mm_mul_ps(F, _mm_mul_ps(qq,gbscale));
-
+
dvdatmp = _mm_mul_ps(_mm_add_ps(vgb, _mm_mul_ps(fijGB,r)) , minushalf);
vgbtot = _mm_add_ps(vgbtot, vgb);
/* Calculate GB table index */
r = _mm_mul_ps(rsq,rinv);
rtab = _mm_mul_ps(r,gbscale);
-
+
n0 = _mm_cvttps_epi32(rtab);
eps = _mm_sub_ps(rtab , _mm_cvtepi32_ps(n0) );
nnn = _mm_slli_epi32(n0,2);
F = _mm_add_ps(F, _mm_add_ps(G , _mm_mul_ps(H,two)));
vgb = _mm_mul_ps(Y, qq);
fijGB = _mm_mul_ps(F, _mm_mul_ps(qq,gbscale));
-
+
dvdatmp = _mm_mul_ps(_mm_add_ps(vgb, _mm_mul_ps(fijGB,r)) , minushalf);
vgbtot = _mm_add_ps(vgbtot, vgb);
imask_SSE1 = _mm_load1_ps((real *)(imask+i+1));
imask_SSE2 = _mm_load1_ps((real *)(imask+i+2));
imask_SSE3 = _mm_load1_ps((real *)(imask+i+3));
-
- for(j=nj0; j<nj1; j+=UNROLLJ)
+
+ for(j=nj0; j<nj1; j+=UNROLLJ)
{
jmask_SSE0 = _mm_load_ps((real *)pmask0);
jmask_SSE1 = _mm_load_ps((real *)pmask1);
dvdatmp_SSE0 = gmx_mm_sum4_ps(dvdatmp_SSE0,dvdatmp_SSE1,dvdatmp_SSE2,dvdatmp_SSE3);
dvdatmp_SSE0 = _mm_mul_ps(dvdatmp_SSE0, _mm_mul_ps(isaj_SSE,isaj_SSE));
-
+
/* update derivative wrt j atom born radius */
_mm_store_ps(dvda_align+j,
_mm_sub_ps( _mm_load_ps(dvda_align+j) , dvdatmp_SSE0 ));
c12_SSE3 = _mm_load_ps(pvdw3+2*j+UNROLLJ);
isaj_SSE = _mm_load_ps(invsqrta_align+j);
+
isaprod_SSE0 = _mm_mul_ps(isai_SSE0,isaj_SSE);
isaprod_SSE1 = _mm_mul_ps(isai_SSE1,isaj_SSE);
isaprod_SSE2 = _mm_mul_ps(isai_SSE2,isaj_SSE);
fijGB_SSE1 = _mm_mul_ps(F_SSE1, _mm_mul_ps(qq_SSE1,gbscale_SSE1));
fijGB_SSE2 = _mm_mul_ps(F_SSE2, _mm_mul_ps(qq_SSE2,gbscale_SSE2));
fijGB_SSE3 = _mm_mul_ps(F_SSE3, _mm_mul_ps(qq_SSE3,gbscale_SSE3));
+
/* Note: this dvdatmp has different sign from the usual c code, saves 1 instruction */
dvdatmp_SSE0 = _mm_mul_ps(_mm_add_ps(vgb_SSE0, _mm_mul_ps(fijGB_SSE0,r_SSE0)) , half_SSE);
c12_SSE3 = _mm_load_ps(pvdw3+2*j+UNROLLJ);
isaj_SSE = _mm_load_ps(invsqrta_align+j);
+
isaprod_SSE0 = _mm_mul_ps(isai_SSE0,isaj_SSE);
isaprod_SSE1 = _mm_mul_ps(isai_SSE1,isaj_SSE);
isaprod_SSE2 = _mm_mul_ps(isai_SSE2,isaj_SSE);
dvdatmp_SSE0 = gmx_mm_sum4_ps(dvdatmp_SSE0,dvdatmp_SSE1,dvdatmp_SSE2,dvdatmp_SSE3);
dvdatmp_SSE0 = _mm_mul_ps(dvdatmp_SSE0, _mm_mul_ps(isaj_SSE,isaj_SSE));
- /* update derivative wrt j atom born radius */
+ /* update derivative wrt j atom born radius */
_mm_store_ps(dvda_align+j,
_mm_sub_ps( _mm_load_ps(dvda_align+j) , dvdatmp_SSE0 ));
nri = *p_nri;
- gbfactor = _mm_set1_pd(((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
+ gbfactor = _mm_set1_pd( - ((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
gbtabscale = _mm_load1_pd(p_gbtabscale);
facel = _mm_load1_pd(p_facel);
fix = _mm_setzero_pd();
fiy = _mm_setzero_pd();
fiz = _mm_setzero_pd();
-
+
for(k=nj0;k<nj1-1; k+=2)
{
jnrA = jjnr[k];
fijGB = _mm_mul_pd(F, _mm_mul_pd(qq,gbscale));
dvdatmp = _mm_mul_pd(_mm_add_pd(vgb, _mm_mul_pd(fijGB,r)) , minushalf);
-
+
vgbtot = _mm_add_pd(vgbtot, vgb);
dvdasum = _mm_add_pd(dvdasum, dvdatmp);
/* Calculate GB table index */
r = _mm_mul_sd(rsq,rinv);
rtab = _mm_mul_sd(r,gbscale);
-
+
n0 = _mm_cvttpd_epi32(rtab);
eps = _mm_sub_sd(rtab,_mm_cvtepi32_pd(n0));
nnn = _mm_slli_epi32(n0,2);
F = _mm_add_sd(F, _mm_add_sd(G , _mm_mul_sd(H,two)));
vgb = _mm_mul_sd(Y, qq);
fijGB = _mm_mul_sd(F, _mm_mul_sd(qq,gbscale));
-
+
dvdatmp = _mm_mul_sd(_mm_add_sd(vgb, _mm_mul_sd(fijGB,r)) , minushalf);
vgbtot = _mm_add_sd(vgbtot, vgb);
nri = *p_nri;
ntype = *p_ntype;
- gbfactor = _mm_set1_pd(((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
+ gbfactor = _mm_set1_pd( - ((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
gbtabscale = _mm_load1_pd(p_gbtabscale);
facel = _mm_load1_pd(p_facel);
__m128d vgb,fijGB,dvdatmp;
__m128d rinvsix,vvdw6,vvdw12,vvdwtmp;
__m128d facel,gbtabscale,dvdaj;
- __m128d fijD,fijR,fijC;
+ __m128d fijD,fijR;
__m128d xmm1,tabscale,eps2;
__m128i n0, nnn;
nri = *p_nri;
ntype = *p_ntype;
- gbfactor = _mm_set1_pd(((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
+ gbfactor = _mm_set1_pd( - ((1.0/gbdata->epsilon_r) - (1.0/gbdata->gb_epsilon_solvent)));
gbtabscale = _mm_load1_pd(p_gbtabscale);
facel = _mm_load1_pd(p_facel);
tabscale = _mm_load1_pd(p_tabscale);
xmm1 = _mm_add_pd(fijD,fijR);
xmm1 = _mm_mul_pd(xmm1,tabscale);
- xmm1 = _mm_add_pd(xmm1,fijC);
+ xmm1 = _mm_add_pd(xmm1,fijGB);
xmm1 = _mm_sub_pd(xmm1,fscal);
fscal = _mm_mul_pd(xmm1,neg);
fscal = _mm_mul_pd(fscal,rinv);
xmm1 = _mm_add_sd(fijD,fijR);
xmm1 = _mm_mul_sd(xmm1,tabscale);
- xmm1 = _mm_add_sd(xmm1,fijC);
+ xmm1 = _mm_add_sd(xmm1,fijGB);
xmm1 = _mm_sub_sd(xmm1,fscal);
fscal = _mm_mul_sd(xmm1,neg);
fscal = _mm_mul_sd(fscal,rinv);
fiy_SSE0 = _mm_add_pd(fiy_SSE0,fiy_SSE1);
_mm_store_pd(fy_align+i, _mm_add_pd(fiy_SSE0, _mm_load_pd(fy_align+i)));
- tmpSSE = fiy_SSE0;
+ tmpSSE = fiz_SSE0;
fiz_SSE0 = _mm_unpacklo_pd(fiz_SSE0,fiz_SSE1);
fiz_SSE1 = _mm_unpackhi_pd(tmpSSE,fiz_SSE1);
fiz_SSE0 = _mm_add_pd(fiz_SSE0,fiz_SSE1);
pmask1 = prologue_mask[i+1];
emask0 = epilogue_mask[i];
emask1 = epilogue_mask[i+1];
- imask_SSE0 = _mm_load1_pd((double *)(imask+i));
- imask_SSE1 = _mm_load1_pd((double *)(imask+2*i+2));
+ imask_SSE0 = _mm_load1_pd((double *)(imask+i));
+ imask_SSE1 = _mm_load1_pd((double *)(imask+2*i+2));
- for(j=nj0; j<nj1; j+=UNROLLJ)
+ for(j=nj0; j<nj1; j+=UNROLLJ)
{
jmask_SSE0 = _mm_load_pd((double *)pmask0);
jmask_SSE1 = _mm_load_pd((double *)pmask1);
fijGB_SSE0 = _mm_mul_pd(F_SSE0, _mm_mul_pd(qq_SSE0,gbscale_SSE0));
fijGB_SSE1 = _mm_mul_pd(F_SSE1, _mm_mul_pd(qq_SSE1,gbscale_SSE1));
-
+
/* Note: this dvdatmp has different sign from the usual c code, saves 1 instruction */
dvdatmp_SSE0 = _mm_mul_pd(_mm_add_pd(vgb_SSE0, _mm_mul_pd(fijGB_SSE0,r_SSE0)) , half_SSE);
dvdatmp_SSE1 = _mm_mul_pd(_mm_add_pd(vgb_SSE1, _mm_mul_pd(fijGB_SSE1,r_SSE1)) , half_SSE);
dvdatmp_SSE0 = _mm_mul_pd(_mm_add_pd(vgb_SSE0, _mm_mul_pd(fijGB_SSE0,r_SSE0)) , half_SSE);
dvdatmp_SSE1 = _mm_mul_pd(_mm_add_pd(vgb_SSE1, _mm_mul_pd(fijGB_SSE1,r_SSE1)) , half_SSE);
- vgbtot_SSE = _mm_add_pd(vgbtot_SSE, _mm_add_pd(vgb_SSE0,vgb_SSE1));
+ vgbtot_SSE = _mm_add_pd(vgbtot_SSE, _mm_add_pd(vgb_SSE0,vgb_SSE1));
dvdasum_SSE0 = _mm_sub_pd(dvdasum_SSE0, dvdatmp_SSE0);
dvdasum_SSE1 = _mm_sub_pd(dvdasum_SSE1, dvdatmp_SSE1);
fijGB_SSE0 = _mm_mul_pd(F_SSE0, _mm_mul_pd(qq_SSE0,gbscale_SSE0));
fijGB_SSE1 = _mm_mul_pd(F_SSE1, _mm_mul_pd(qq_SSE1,gbscale_SSE1));
+
/* Note: this dvdatmp has different sign from the usual c code, saves 1 instruction */
dvdatmp_SSE0 = _mm_mul_pd(_mm_add_pd(vgb_SSE0, _mm_mul_pd(fijGB_SSE0,r_SSE0)) , half_SSE);
fiy_SSE0 = _mm_add_pd(fiy_SSE0,fiy_SSE1);
_mm_store_pd(fy_align+i, _mm_add_pd(fiy_SSE0, _mm_load_pd(fy_align+i)));
- tmpSSE = fiy_SSE0;
+ tmpSSE = fiz_SSE0;
fiz_SSE0 = _mm_unpacklo_pd(fiz_SSE0,fiz_SSE1);
fiz_SSE1 = _mm_unpackhi_pd(tmpSSE,fiz_SSE1);
fiz_SSE0 = _mm_add_pd(fiz_SSE0,fiz_SSE1);
_mm_store_pd(fz_align+i, _mm_add_pd(fiz_SSE0, _mm_load_pd(fz_align+i)));
+ GMX_MM_TRANSPOSE2_PD(dvdasum_SSE0,dvdasum_SSE1);
+ dvdasum_SSE0 = _mm_add_pd(dvdasum_SSE0,dvdasum_SSE1);
+ dvdasum_SSE0 = _mm_mul_pd(dvdasum_SSE0, _mm_mul_pd(isai_SSE,isai_SSE));
+ _mm_store_pd(dvda_align+i, _mm_add_pd(dvdasum_SSE0, _mm_load_pd(dvda_align+i)));
+
+
/* Add potential energies to the group for this list */
ggid = 0;
# endif
#endif
-#if defined(GMX_FORTRAN) && defined(GMX_DOUBLE)
-#include "nb_kernel_f77_double/nb_kernel_f77_double.h"
+#if defined(GMX_FORTRAN)
+# ifdef GMX_DOUBLE
+# include "nb_kernel_f77_double/nb_kernel_f77_double.h"
+# else
+# include "nb_kernel_f77_single/nb_kernel_f77_single.h"
+# endif
#endif
#if (defined GMX_IA64_ASM && defined GMX_DOUBLE)
gmx_setup_kernels(FILE *fplog,bool bGenericKernelOnly)
{
int i;
-
+
snew(nb_kernel_list,eNR_NBKERNEL_NR);
/* Note that later calls overwrite earlier, so the preferred (fastest)
{
return;
}
-
- /* Setup kernels. The last called setup routine will overwrite earlier assignments,
- * so we should e.g. test SSE3 support _after_ SSE2 support.
+
+ /* Setup kernels. The last called setup routine will overwrite earlier assignments,
+ * so we should e.g. test SSE3 support _after_ SSE2 support,
+ * and call e.g. Fortran setup before SSE.
*/
+
+#if defined(GMX_FORTRAN) && defined(GMX_DOUBLE)
+ nb_kernel_setup_f77_double(fplog,nb_kernel_list);
+#endif
+
+#if defined(GMX_FORTRAN) && !defined(GMX_DOUBLE)
+ nb_kernel_setup_f77_single(fplog,nb_kernel_list);
+#endif
+
+#ifdef GMX_BLUEGENE
+ nb_kernel_setup_bluegene(fplog,nb_kernel_list);
+#endif
+
+#ifdef GMX_POWER6
+ nb_kernel_setup_power6(fplog,nb_kernel_list);
+#endif
+
#ifdef GMX_PPC_ALTIVEC
nb_kernel_setup_ppc_altivec(fplog,nb_kernel_list);
#endif
# endif
#endif
-#if defined(GMX_FORTRAN) && defined(GMX_DOUBLE)
- nb_kernel_setup_f77_double(fplog,nb_kernel_list);
-#endif
-
-#if defined(GMX_FORTRAN) && !defined(GMX_DOUBLE)
- nb_kernel_setup_f77_single(fplog,nb_kernel_list);
-#endif
-
#if (defined GMX_IA64_ASM && defined GMX_DOUBLE)
nb_kernel_setup_ia64_double(fplog,nb_kernel_list);
#endif
nb_kernel_setup_ia64_single(fplog,nb_kernel_list);
#endif
-#ifdef GMX_BLUEGENE
- nb_kernel_setup_bluegene(fplog,nb_kernel_list);
-#endif
-
-#ifdef GMX_POWER6
- nb_kernel_setup_power6(fplog,nb_kernel_list);
-#endif
-
-
-
if(fplog)
{
fprintf(fplog,"\n\n");
for(j=0; (j<NPP); j++)
thisff[j]=-1;
- if (strcasecmp(cai,"C") == 0) {
+ if (gmx_strcasecmp(cai,"C") == 0) {
/* May be a Phi angle */
- if ((strcasecmp(caj,"N") == 0) &&
- (strcasecmp(cak,"CA") == 0) &&
- (strcasecmp(cal,"C") == 0))
+ if ((gmx_strcasecmp(caj,"N") == 0) &&
+ (gmx_strcasecmp(cak,"CA") == 0) &&
+ (gmx_strcasecmp(cal,"C") == 0))
thisff[0]=ai,thisff[1]=aj,thisff[2]=ak,thisff[3]=al;
}
- else if (strcasecmp(cai,"N") == 0) {
+ else if (gmx_strcasecmp(cai,"N") == 0) {
/* May be a Psi angle */
- if ((strcasecmp(caj,"CA") == 0) &&
- (strcasecmp(cak,"C") == 0) &&
- (strcasecmp(cal,"N") == 0))
+ if ((gmx_strcasecmp(caj,"CA") == 0) &&
+ (gmx_strcasecmp(cak,"C") == 0) &&
+ (gmx_strcasecmp(cal,"N") == 0))
thisff[1]=ai,thisff[2]=aj,thisff[3]=ak,thisff[4]=al;
}
if (thisff[1] != -1) {
for(k=1; (pa[j].u.c[k] != NULL); k++)
/* only check ptr against beginning of
pa[j].u.c[k] */
- if (strncasecmp(ptr,pa[j].u.c[k],strlen(ptr)) == 0)
+ if (gmx_strncasecmp(ptr,pa[j].u.c[k],strlen(ptr)) == 0)
if ( ( match == NOTSET ) ||
( strlen(pa[j].u.c[k]) <
strlen(pa[j].u.c[match]) ) )
"%-6s%5u %-4.4s %3.3s %c%4d%c %10.5f%10.5f%10.5f%8.4f%8.4f %2s\n");
else {
/* Check whether atomname is an element name */
- if ((strlen(nm)<4) && (strcasecmp(nm,atoms->atom[i].elem) != 0))
+ if ((strlen(nm)<4) && (gmx_strcasecmp(nm,atoms->atom[i].elem) != 0))
strcpy(pdbform,pdbformat);
else {
strcpy(pdbform,pdbformat4);
int found_index;
/* first check whether we hit the 'multiple_entries' option */
- if (strcasecmp_min(eMultentOpt_names[eMultentOptName], lbuf)==0)
+ if (gmx_strcasecmp_min(eMultentOpt_names[eMultentOptName], lbuf)==0)
{
/* we now check whether to allow overrides from here or not */
- if (strcasecmp_min(eMultentOpt_names[eMultentOptNo], rbuf)==0)
+ if (gmx_strcasecmp_min(eMultentOpt_names[eMultentOptNo], rbuf)==0)
{
allow_override=FALSE;
}
- else if (strcasecmp_min(eMultentOpt_names[eMultentOptLast], rbuf)==0)
+ else if (gmx_strcasecmp_min(eMultentOpt_names[eMultentOptLast], rbuf)==0)
{
allow_override=TRUE;
}
int i;
for(i=0; (i<ninp); i++) {
- if (strcasecmp_min(old_entry,inp[i].name) == 0) {
+ if (gmx_strcasecmp_min(old_entry,inp[i].name) == 0) {
if (new_entry) {
fprintf(stderr,"Replacing old mdp entry '%s' by '%s'\n",
inp[i].name,new_entry);
if (inp==NULL)
return -1;
for(i=0; i<ninp; i++)
- if (strcasecmp_min(name,inp[i].name) == 0)
+ if (gmx_strcasecmp_min(name,inp[i].name) == 0)
return i;
return -1;
}
/* if (inp==NULL)
return -1;
for(i=0; (i<(*ninp)); i++)
- if (strcasecmp_min(name,(*inp)[i].name) == 0)
+ if (gmx_strcasecmp_min(name,(*inp)[i].name) == 0)
break;
if (i == (*ninp)) {*/
i=search_einp(*ninp, *inp, name);
}
for(i=0; (defs[i] != NULL); i++)
- if (strcasecmp_min(defs[i],(*inp)[ii].value) == 0)
+ if (gmx_strcasecmp_min(defs[i],(*inp)[ii].value) == 0)
break;
if (defs[i] == NULL) {
case 4:
YY_RULE_SETUP
#line 115 "scanner.l"
-{ yylval->str = strndup(yytext+1, yyleng-2); ADD_TOKEN; return STR; }
+{ yylval->str = gmx_strndup(yytext+1, yyleng-2); ADD_TOKEN; return STR; }
YY_BREAK
case 5:
/* rule 5 can match eol */
case 9:
YY_RULE_SETUP
#line 133 "scanner.l"
-{ yylval->str = strndup(yytext, yyleng); return HELP_TOPIC; }
+{ yylval->str = gmx_strndup(yytext, yyleng); return HELP_TOPIC; }
YY_BREAK
case 10:
/* rule 10 can match eol */
case 21:
YY_RULE_SETUP
#line 149 "scanner.l"
-{ yylval->str = strndup(yytext, yyleng); ADD_TOKEN; return CMP_OP; }
+{ yylval->str = gmx_strndup(yytext, yyleng); ADD_TOKEN; return CMP_OP; }
YY_BREAK
case 22:
YY_RULE_SETUP
case 24:
YY_RULE_SETUP
#line 154 "scanner.l"
-{ yylval->str = strndup(yytext, yyleng); ADD_TOKEN; return STR; }
+{ yylval->str = gmx_strndup(yytext, yyleng); ADD_TOKEN; return STR; }
YY_BREAK
case 25:
YY_RULE_SETUP
{COMMENT}
{INTEGER} { yylval->i = strtol(yytext, NULL, 10); ADD_TOKEN; return TOK_INT; }
{REAL} { yylval->r = strtod(yytext, NULL); ADD_TOKEN; return TOK_REAL; }
-{STRING} { yylval->str = strndup(yytext+1, yyleng-2); ADD_TOKEN; return STR; }
+{STRING} { yylval->str = gmx_strndup(yytext+1, yyleng-2); ADD_TOKEN; return STR; }
\\\n { _gmx_sel_lexer_add_token(" ", 1, state); }
";"|\n {
<cmdstart>help { BEGIN(help); return HELP; }
<help>{
[[:blank:]]+
-{IDENTIFIER} { yylval->str = strndup(yytext, yyleng); return HELP_TOPIC; }
+{IDENTIFIER} { yylval->str = gmx_strndup(yytext, yyleng); return HELP_TOPIC; }
";"|\n { return CMD_SEP; }
. { return INVALID; }
}
or|"||" { ADD_TOKEN; return OR; }
xor { ADD_TOKEN; return XOR; }
not|"!" { ADD_TOKEN; return NOT; }
-{CMPOP} { yylval->str = strndup(yytext, yyleng); ADD_TOKEN; return CMP_OP; }
+{CMPOP} { yylval->str = gmx_strndup(yytext, yyleng); ADD_TOKEN; return CMP_OP; }
{IDENTIFIER} { return _gmx_sel_lexer_process_identifier(yylval, yytext, yyleng, state); }
[[:blank:]]+ { _gmx_sel_lexer_add_token(" ", 1, state); }
-[_[:alnum:]]+ { yylval->str = strndup(yytext, yyleng); ADD_TOKEN; return STR; }
+[_[:alnum:]]+ { yylval->str = gmx_strndup(yytext, yyleng); ADD_TOKEN; return STR; }
. { ADD_TOKEN; return yytext[0]; }
/* If there is no match, return the token as a string */
if (!symbol)
{
- yylval->str = strndup(yytext, yyleng);
+ yylval->str = gmx_strndup(yytext, yyleng);
_gmx_sel_lexer_add_token(yytext, yyleng, state);
return IDENTIFIER;
}
{
continue;
}
- if (!strcasecmp(param[i].name, param[j].name))
+ if (!gmx_strcasecmp(param[i].name, param[j].name))
{
report_error(fp, name, "error: duplicate parameter name '%s'", param[i].name);
bOk = FALSE;
sym = tab->first;
while (sym)
{
- if (!strcasecmp(sym->name, name))
+ if (!gmx_strcasecmp(sym->name, name))
{
*ctype = sym->type;
return NULL;
/* Linear search */
for(i=0; (i<nstr); i++)
- if (strcasecmp(str[i],key)==0)
+ if (gmx_strcasecmp(str[i],key)==0)
return i;
return -1;
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
+#include <time.h>
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
#ifdef HAVE_PWD_H
#include <pwd.h>
fprintf (out,"%c\n",COMMENTSIGN);
}
-int strcasecmp_min(const char *str1, const char *str2)
+int gmx_strcasecmp_min(const char *str1, const char *str2)
{
char ch1,ch2;
return 0;
}
-int strncasecmp_min(const char *str1, const char *str2, int n)
+int gmx_strncasecmp_min(const char *str1, const char *str2, int n)
{
char ch1,ch2;
char *stri1, *stri2;
do {
gmx_fio_do_string(fio,buf);
- } while ((strcasecmp(buf,itemstr[key]) != 0));
+ } while ((gmx_strcasecmp(buf,itemstr[key]) != 0));
- if (strcasecmp(buf,itemstr[key]) != 0)
+ if (gmx_strcasecmp(buf,itemstr[key]) != 0)
gmx_fatal(FARGS,"\nCould not find section heading %s",itemstr[key]);
else if (gmx_fio_getdebug(fio))
fprintf(stderr," and found it\n");
}
/* Find the default selection file, return if none found. */
- fnm = low_gmxlibfn("defselection.dat", FALSE);
+ fnm = low_gmxlibfn("defselection.dat", TRUE, FALSE);
if (fnm == NULL)
{
return 0;
links->nsr=n;
snew(links->sr,n);
for(i=0,j=0; (i<n); i++) {
- if (!program || (strcasecmp(program,filestr[i]) != 0)) {
+ if (!program || (gmx_strcasecmp(program,filestr[i]) != 0)) {
links->sr[j].search=strdup(filestr[i]);
if (bWiki)
sprintf(buf,"[[%s]]",filestr[i]);
#endif
}
-int xdr3drcoord(XDR *xdrs, real *fp, int *size, real *precision, bool bRead)
+int xdr3drcoord(XDR *xdrs, real *fp, int *size, real *precision)
{
#ifdef GMX_DOUBLE
float *ffp;
for(i=0; (i<isize); i++)
ffp[i]=fp[i];
fprec=*precision;
- ret=xdr3dfcoord(xdrs,ffp,size,&fprec,bRead);
+ ret=xdr3dfcoord(xdrs,ffp,size,&fprec);
*precision=fprec;
for(i=0; (i<isize); i++)
sfree(ffp);
return ret;
#else
- return xdr3dfcoord(xdrs,(float *)fp,size,(float *)precision,bRead);
+ return xdr3dfcoord(xdrs,(float *)fp,size,(float *)precision);
#endif
}
int imaj,imin;
int ret;
-#if ((defined SIZEOF_LARGE_INT) && SIZEOF_LARGE_INT == 8)
+#if ((defined SIZEOF_GMX_LARGE_INT) && SIZEOF_GMX_LARGE_INT == 8)
static const gmx_large_int_t two_p32_m1 = 0xFFFFFFFF;
gmx_large_int_t imaj64,imin64;
ret = xdr_int(xdrs,&imaj);
ret = xdr_int(xdrs,&imin);
-#if ((defined SIZEOF_LARGE_INT) && SIZEOF_LARGE_INT == 8)
+#if ((defined SIZEOF_GMX_LARGE_INT) && SIZEOF_GMX_LARGE_INT == 8)
*i = (((gmx_large_int_t)imaj << 32) | ((gmx_large_int_t)imin & two_p32_m1));
#else
*i = imin;
}
fprec = *prec;
}
- result=XTC_CHECK("x",xdr3dfcoord(xd,ftmp,natoms,&fprec,bRead));
+ result=XTC_CHECK("x",xdr3dfcoord(xd,ftmp,natoms,&fprec));
/* Copy from temp. array if reading */
if(bRead)
}
sfree(ftmp);
#else
- result=XTC_CHECK("x",xdr3dfcoord(xd,x[0],natoms,prec,bRead));
+ result=XTC_CHECK("x",xdr3dfcoord(xd,x[0],natoms,prec));
#endif
return result;
#include <string.h>
#include <ctype.h>
+#include <time.h>
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
#include "sysstuff.h"
#include "string2.h"
#include "futil.h"
#include "vec.h"
#include "gmxfio.h"
+/* Portable version of ctime_r implemented in src/gmxlib/string2.c, but we do not want it declared in public installed headers */
+char *
+gmx_ctime_r(const time_t *clock,char *buf, int n);
+
+
bool output_env_get_print_xvgr_codes(const output_env_t oenv)
{
int xvg_format;
/* Check for special symbol */
i = 0;
while (sym[i] != NULL &&
- strncasecmp(sym[i],gmx+g,strlen(sym[i])) != 0)
+ gmx_strncasecmp(sym[i],gmx+g,strlen(sym[i])) != 0)
{
i++;
}
}
for(j=0; (j<rtp->natom); j++) {
rtpname=*(rtp->atomname[j]);
- if (strcasecmp(searchname,rtpname) == 0) {
+ if (gmx_strcasecmp(searchname,rtpname) == 0) {
jmax=j;
kmax=strlen(searchname);
break;
nextname[STRLEN-1]=0;
if (debug)
{
- fprintf(debug,"dir '%s' file '%s'\n",dir,nextname);
+ fprintf(debug,"dir '%s' %d file '%s'\n",
+ dir,n_thisdir,nextname);
}
len_name = strlen(nextname);
/* What about case sensitivity? */
return n;
}
-int fflib_search_file_end(const char *ffdir,bool bAddCWD,
+int fflib_search_file_end(const char *ffdir,
const char *file_end,
bool bFatalError,
char ***filenames)
{
- return low_fflib_search_file_end(ffdir,bAddCWD,file_end,bFatalError,
+ return low_fflib_search_file_end(ffdir,FALSE,file_end,bFatalError,
filenames,NULL);
}
{
char *file_fullpath;
- file_fullpath = low_gmxlibfn(file,FALSE);
+ file_fullpath = low_gmxlibfn(file,TRUE,FALSE);
if (file_fullpath == NULL)
{
* base should be at least of size maxlen.
*/
-extern int fflib_search_file_end(const char *ffdir,bool bAddCWD,
+extern int fflib_search_file_end(const char *ffdir,
const char *file_end,
bool bFatalError,
char ***filenames);
/* Search for files ending on file_end in the force field directory fflib.
- * fflib should be in the GROMACS lib.path or, when bAddCWD is set,
- * in the current working directory.
+ * fflib should be in the GROMACS lib.path.
* Return the number of files and the file names in filenames.
*/
for(i=0; (i<nnm); i++) {
for(j=0; (j<nmt[i].nbonds); j++) {
- if ((((strncasecmp(ai,nmt[i].elem,1) == 0) &&
- (strncasecmp(aj,nmt[i].bond[j],1) == 0)) ||
- ((strncasecmp(ai,nmt[i].bond[j],1) == 0) &&
- (strncasecmp(aj,nmt[i].elem,1) == 0))) &&
+ if ((((gmx_strncasecmp(ai,nmt[i].elem,1) == 0) &&
+ (gmx_strncasecmp(aj,nmt[i].bond[j],1) == 0)) ||
+ ((gmx_strncasecmp(ai,nmt[i].bond[j],1) == 0) &&
+ (gmx_strncasecmp(aj,nmt[i].elem,1) == 0))) &&
(fabs(blen-nmt[i].blen[j]) <= 0.1*nmt[i].blen[j]))
return TRUE;
}
{ efRTP, "-r", "out", ffOPTWR }
};
#define NFILE asize(fnm)
- static bool bAddCWD = FALSE;
static real scale = 1.1, kb = 4e5,kt = 400,kp = 5;
static int nexcl = 3;
static bool bRemoveDih = FALSE;
t_pargs pa[] = {
{ "-ff", FALSE, etSTR, {&ff},
"Force field for your simulation. Type \"select\" for interactive selection." },
- { "-cwd", FALSE, etBOOL, {&bAddCWD},
- "Also read force field files from the current working directory" },
{ "-v", FALSE, etBOOL, {&bVerbose},
"Generate verbose output in the top file." },
{ "-nexcl", FALSE, etINT, {&nexcl},
read_stx_conf(opt2fn("-f",NFILE,fnm),title,atoms,x,NULL,&epbc,box);
sprintf(n2t,"%s",ffdir);
- nm2t = rd_nm2type(n2t,bAddCWD,&nnm);
+ nm2t = rd_nm2type(n2t,&nnm);
if (nnm == 0)
gmx_fatal(FARGS,"No or incorrect atomname2type.n2t file found (looking for %s)",
n2t);
double *blen;
} t_nm2type;
-extern t_nm2type *rd_nm2type(const char *ffdir,bool bAddCWD,int *nnm);
+extern t_nm2type *rd_nm2type(const char *ffdir,int *nnm);
/* Read the name 2 type database. nnm is the number of entries
* ff is the force field.
*/
res=-1;
for(i=0; (i<eoNR); i++)
- if (strcasecmp(s,eoNames[i]) == 0) {
+ if (gmx_strcasecmp(s,eoNames[i]) == 0) {
res=i;
fprintf(stderr,"Coupling to observable %d (%s)\n",res,eoNames[res]);
break;
for(i=0; (i<ninp); i++) {
bWrong=FALSE;
- if (strcasecmp(inp[i].name,"LJ") == 0)
+ if (gmx_strcasecmp(inp[i].name,"LJ") == 0)
bWrong=add_lj(&nLJ,&(tcr->tcLJ),inp[i].value,tcr->bObsUsed);
- else if (strcasecmp(inp[i].name,"BU") == 0)
+ else if (gmx_strcasecmp(inp[i].name,"BU") == 0)
bWrong=add_bu(&nBU,&(tcr->tcBU),inp[i].value,tcr->bObsUsed);
- else if (strcasecmp(inp[i].name,"Q") == 0)
+ else if (gmx_strcasecmp(inp[i].name,"Q") == 0)
bWrong=add_q(&nQ,&(tcr->tcQ),inp[i].value,tcr->bObsUsed);
- else if (strcasecmp(inp[i].name,"Bonds") == 0)
+ else if (gmx_strcasecmp(inp[i].name,"Bonds") == 0)
bWrong=add_ip(&nIP,&(tcr->tIP),inp[i].value,F_BONDS,tcr->bObsUsed);
if (bWrong)
index=-1;
for(i=0;i<DDB_DIR_NR && index<0;i++)
- if(!strcasecmp(name,ddb_dirnames[i]))
+ if(!gmx_strcasecmp(name,ddb_dirnames[i]))
index=i;
return index;
(*ch) = 0;
trim (dirstr);
- if(!strcasecmp(dirstr,"HID"))
+ if(!gmx_strcasecmp(dirstr,"HID"))
sprintf(dirstr,"HISA");
- else if(!strcasecmp(dirstr,"HIE"))
+ else if(!gmx_strcasecmp(dirstr,"HIE"))
sprintf(dirstr,"HISB");
- else if(!strcasecmp(dirstr,"HIP"))
+ else if(!gmx_strcasecmp(dirstr,"HIP"))
sprintf(dirstr,"HISH");
curdir=ddb_name2dir(dirstr);
case DDB_NH3:
case DDB_NH2:
n = sscanf(pline,"%s%s%s",s1,s2,s3);
- if(n<3 && !strcasecmp(s2,"planar")) {
+ if(n<3 && !gmx_strcasecmp(s2,"planar")) {
srenew(vsiteconflist,nvsite+1);
strncpy(vsiteconflist[nvsite].atomtype,s1,MAXNAME-1);
vsiteconflist[nvsite].isplanar=TRUE;
case DDB_HISB:
case DDB_HISH:
i=0;
- while((i<ntop) && strcasecmp(dirstr,vsitetoplist[i].resname))
+ while((i<ntop) && gmx_strcasecmp(dirstr,vsitetoplist[i].resname))
i++;
/* Allocate a new topology entry if this is a new residue */
if(i==ntop) {
int i,res;
bool found=FALSE;
for(i=0;i<nvsiteconf && !found;i++) {
- found=(!strcasecmp(vsiteconflist[i].atomtype,atomtype) && (vsiteconflist[i].nhydrogens==2));
+ found=(!gmx_strcasecmp(vsiteconflist[i].atomtype,atomtype) && (vsiteconflist[i].nhydrogens==2));
}
if(found)
res=(vsiteconflist[i-1].isplanar==TRUE);
int i;
bool found=FALSE;
for(i=0;i<nvsiteconf && !found;i++) {
- found=(!strcasecmp(vsiteconflist[i].atomtype,atom) &&
- !strcasecmp(vsiteconflist[i].nextheavytype,nextheavy));
+ found=(!gmx_strcasecmp(vsiteconflist[i].atomtype,atom) &&
+ !gmx_strcasecmp(vsiteconflist[i].nextheavytype,nextheavy));
}
if(found)
return vsiteconflist[i-1].dummymass;
int i,j;
i=0;
- while(i<nvsitetop && strcasecmp(res,vsitetop[i].resname))
+ while(i<nvsitetop && gmx_strcasecmp(res,vsitetop[i].resname))
i++;
if(i==nvsitetop)
gmx_fatal(FARGS,"No vsite information for residue %s found in vsite database.\n",res);
int i,j;
i=0;
- while(i<nvsitetop && strcasecmp(res,vsitetop[i].resname))
+ while(i<nvsitetop && gmx_strcasecmp(res,vsitetop[i].resname))
i++;
if(i==nvsitetop)
gmx_fatal(FARGS,"No vsite information for residue %s found in vsite database.\n",res);
t_atoms *at, t_symtab *symtab, rvec *x[],
t_params plist[], int *vsite_type[], int *cgnr[],
real mHmult, bool bVsiteAromatics,
- const char *ffdir,bool bAddCWD)
+ const char *ffdir)
{
#define MAXATOMSPERRESIDUE 16
int i,j,k,m,i0,ni0,whatres,resind,add_shift,ftype,nvsite,nadd;
fprintf(debug,"# # # VSITES # # #\n");
}
- ndb = fflib_search_file_end(ffdir,bAddCWD,".vsd",FALSE,&db);
+ ndb = fflib_search_file_end(ffdir,".vsd",FALSE,&db);
nvsiteconf = 0;
vsiteconflist = NULL;
nvsitetop = 0;
cmplength = bPartial[j] ? strlen(resnm)-1 : strlen(resnm);
- bFound = ((strncasecmp(resnm,resnms[j], cmplength)==0) ||
- (strncasecmp(resnm,resnmsN[j],cmplength)==0) ||
- (strncasecmp(resnm,resnmsC[j],cmplength)==0));
+ bFound = ((gmx_strncasecmp(resnm,resnms[j], cmplength)==0) ||
+ (gmx_strncasecmp(resnm,resnmsN[j],cmplength)==0) ||
+ (gmx_strncasecmp(resnm,resnmsC[j],cmplength)==0));
if ( bFound ) {
whatres=j;
ats[k]=NOTSET;
for(m=i; m<at->nr && at->atom[m].resind==resind && ats[k]==NOTSET;m++)
{
- if (strcasecmp(*(at->atomname[m]),atnms[j][k])==0)
+ if (gmx_strcasecmp(*(at->atomname[m]),atnms[j][k])==0)
{
ats[k]=m;
nrfound++;
} else if ( /*(nrHatoms == 2) && (nrbonds == 2) && REMOVED this test
DvdS 19-01-04 */
- (strncasecmp(*at->atomname[Heavy],"OW",2)==0) ) {
+ (gmx_strncasecmp(*at->atomname[Heavy],"OW",2)==0) ) {
bAddVsiteParam=FALSE; /* this is water: skip these hydrogens */
if (bFirstWater) {
bFirstWater=FALSE;
t_atoms *at, t_symtab *symtab, rvec *x[],
t_params plist[], int *dummy_type[], int *cgnr[],
real mHmult, bool bVSiteAromatics,
- const char *ffdir,bool bAddCWD);
+ const char *ffdir);
extern void do_h_mass(t_params *psb, int vsite_type[], t_atoms *at, real mHmult,
bool bDeuterate);
/* set forcefield to use: */
strcpy(protdata->FF,"ffgmx2");
/* get the databases: */
- protdata->nah=read_h_db(protdata->FF,FALSE,&protdata->ah);
+ protdata->nah = read_h_db(protdata->FF,&protdata->ah);
open_symtab(&protdata->tab);
- protdata->atype=read_atype(protdata->FF,FALSE,&protdata->tab);
- nntdb = read_ter_db(protdata->FF,FALSE,'n',&protdata->ntdb,protdata->atype);
+ protdata->atype = read_atype(protdata->FF,&protdata->tab);
+ nntdb = read_ter_db(protdata->FF,'n',&protdata->ntdb,protdata->atype);
if (nntdb < 1)
gmx_fatal(FARGS,"no n-terminus db");
- nctdb = read_ter_db(protdata->FF,FALSE,'c',&protdata->ctdb,protdata->atype);
+ nctdb = read_ter_db(protdata->FF,'c',&protdata->ctdb,protdata->atype);
if (nctdb < 1)
gmx_fatal(FARGS,"no c-terminus db");
int i;
for (i=0; (i<ga->nr); i++)
- if (strcasecmp(str,*(ga->atomname[i])) == 0)
+ if (gmx_strcasecmp(str,*(ga->atomname[i])) == 0)
return i;
return NOTSET;
ah=(t_hackblock *)a;
bh=(t_hackblock *)b;
- return strcasecmp(ah->name,bh->name);
+ return gmx_strcasecmp(ah->name,bh->name);
}
void print_ab(FILE *out,t_hack *hack,char *nname)
*ah = aah;
}
-int read_h_db(const char *ffdir,bool bAddCWD,t_hackblock **ah)
+int read_h_db(const char *ffdir,t_hackblock **ah)
{
int nhdbf,f;
char **hdbf;
/* Read the hydrogen database file(s).
* Do not generate an error when no files are found.
*/
- nhdbf = fflib_search_file_end(ffdir,bAddCWD,".hdb",FALSE,&hdbf);
+ nhdbf = fflib_search_file_end(ffdir,".hdb",FALSE,&hdbf);
nah = 0;
*ah = NULL;
for(f=0; f<nhdbf; f++) {
extern void read_ab(char *line,const char *fn,t_hack *ab);
/* Read one add block */
-extern int read_h_db(const char *ffdir,bool bAddCWD,t_hackblock **ah);
+extern int read_h_db(const char *ffdir,t_hackblock **ah);
/* Read the database from hdb file(s) in ffdir or current dir */
extern void print_ab(FILE *out,t_hack *ab,char *nname);
/* Now do the HIS stuff */
hisind=-1;
for(i=0; (i<natom); ) {
- if (strcasecmp(*pdba->resinfo[pdba->atom[i].resind].name,"HIS") != 0)
+ if (gmx_strcasecmp(*pdba->resinfo[pdba->atom[i].resind].name,"HIS") != 0)
i++;
else {
if (pdba->atom[i].resind != hisind) {
URL: http://www.gromacs.org
Version: @VERSION@
Requires: libgmx@LIBSUFFIX@ libmd@LIBSUFFIX@
-Libs.private: -lm @PTHREAD_LIBS@
-Libs: -L${libdir} -lgmxpreprocess@LIBSUFFIX@
+Libs: -L${libdir} -lgmxpreprocess@LIBSUFFIX@ @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ -lm
Cflags: -I${includedir} @PTHREAD_CFLAGS@ @PKG_CFLAGS@
*nmp = nm2t;
}
-t_nm2type *rd_nm2type(const char *ffdir,bool bAddCWD,int *nnm)
+t_nm2type *rd_nm2type(const char *ffdir,int *nnm)
{
int nff,f;
char **ff;
t_nm2type *nm;
- nff = fflib_search_file_end(ffdir,bAddCWD,".n2t",FALSE,&ff);
+ nff = fflib_search_file_end(ffdir,".n2t",FALSE,&ff);
*nnm = 0;
nm = NULL;
for(f=0; f<nff; f++) {
{
if (!atom || !template_string)
return ematchNone;
- else if (strcasecmp(atom,template_string) == 0)
+ else if (gmx_strcasecmp(atom,template_string) == 0)
return ematchExact;
else if (atom[0] == template_string[0])
return ematchElem;
int i;
i = 0;
- while (i < nrr && strcasecmp(name,rr[i].gmx) != 0) {
+ while (i < nrr && gmx_strcasecmp(name,rr[i].gmx) != 0) {
i++;
}
i++;
}
- /* If found in the database, rename this residue's rtp buidling block,
+ /* If found in the database, rename this residue's rtp building block,
* otherwise keep the old name.
*/
if (i < nrr) {
for(i=0; (i<pdba->nres); i++) {
resnm = *pdba->resinfo[i].name;
- if ((bFullCompare && (strcasecmp(resnm,oldnm) == 0)) ||
+ if ((bFullCompare && (gmx_strcasecmp(resnm,oldnm) == 0)) ||
(!bFullCompare && strstr(resnm,oldnm) != NULL)) {
pdba->resinfo[i].name = put_symtab(symtab,newnm);
}
for(i=0; (i<pdba->nres); i++) {
bbnm = *pdba->resinfo[i].rtp;
- if ((bFullCompare && (strcasecmp(bbnm,oldnm) == 0)) ||
+ if ((bFullCompare && (gmx_strcasecmp(bbnm,oldnm) == 0)) ||
(!bFullCompare && strstr(bbnm,oldnm) != NULL)) {
pdba->resinfo[i].rtp = put_symtab(symtab,newnm);
}
rename_pdbres(atoms,"SOL",watres,FALSE,symtab);
rename_pdbres(atoms,"WAT",watres,FALSE,symtab);
- rename_atoms("xlateat.dat",NULL,FALSE,
+ rename_atoms("xlateat.dat",NULL,
atoms,symtab,NULL,TRUE,rt,TRUE,bVerbose);
if (natom == 0)
}
rptr = &restp[pdba->atom[i].resind];
for(j=0; (j<rptr->natom); j++) {
- if (strcasecmp(atomnm,*(rptr->atomname[j])) == 0) {
+ if (gmx_strcasecmp(atomnm,*(rptr->atomname[j])) == 0) {
break;
}
}
int main(int argc, char *argv[])
{
const char *desc[] = {
- "This program reads a pdb file, reads",
+ "This program reads a pdb (or gro) file, reads",
"some database files, adds hydrogens to the molecules and generates",
- "coordinates in Gromacs (Gromos) format and a topology in Gromacs format.",
+ "coordinates in Gromacs (Gromos), or optionally pdb, format",
+ "and a topology in Gromacs format.",
"These files can subsequently be processed to generate a run input file.",
"[PAR]",
- "The force fields in the distribution are currently:[PAR]",
-
- "oplsaa OPLS-AA/L all-atom force field (2001 aminoacid dihedrals)[BR]",
- "gromos43a1 GROMOS96 43a1 Forcefield [BR]",
- "gromos43a2 GROMOS96 43a2 Forcefield (improved alkane dihedrals)[BR]",
- "gromos45a3 GROMOS96 45a3 Forcefield [BR]",
- "gromos53a5 GROMOS96 53a5 Forcefield [BR]",
- "gromos53a6 GROMOS96 53a6 Forcefield [BR]",
- "gmx Gromacs Forcefield (a modified GROMOS87, see manual)[BR]",
- "encads Encad all-atom force field, using scaled-down vacuum charges[BR]",
- "encadv Encad all-atom force field, using full solvent charges[PAR]",
-
- "The corresponding data files can be found in the library directory",
- "in the subdirectory <forcefield>.ff.",
- "Note that pdb2gmx will also look for a [TT]forcefield.itp[tt] file",
- "in such subdirectories in the current working directory.",
+ "pdb2gmx will search for force fields by looking for",
+ "a [TT]forcefield.itp[tt] file in subdirectories [TT]<forcefield>.ff[tt]",
+ "of the current working directory and of the Gomracs library directory",
+ "as inferred from the path of the binary or the [TT]GMXLIB[tt] environment",
+ "variable.",
+ "By default the forcefield selection is interactive,",
+ "but you can use the [TT]-ff[tt] option to specify one of the short names",
+ "in the list on the command line instead. In that case pdb2gmx just looks",
+ "for the corresponding [TT]<forcefield>.ff[tt] directory.",
+ "[PAR]",
"After choosing a force field, all files will be read only from",
- "the corresponding directory, unless the [TT]-cwd[tt] option is used.",
+ "the corresponding force field directory.",
+ "If you want to modify or add a residue types, you can copy the force",
+ "field directory from the Gromacs library directory to your current",
+ "working directory. If you want to add new protein residue types,",
+ "you will need to modify residuetypes.dat in the libary directory",
+ "or copy the whole library directory to a local directory and set",
+ "the environment variable [TT]GMXLIB[tt] to the name of that directory.",
"Check chapter 5 of the manual for more information about file formats.",
- "By default the forcefield selection is interactive,",
- "but you can use the [TT]-ff[tt] option to specify",
- "one of the short names above on the command line instead. In that",
- "case pdb2gmx just looks for the corresponding file.[PAR]",
+ "[PAR]",
"Note that a pdb file is nothing more than a file format, and it",
"need not necessarily contain a protein structure. Every kind of",
/* Command line arguments must be static */
- static bool bNewRTP=FALSE,bAddCWD=FALSE,bAllowOverrideRTP=FALSE;
+ static bool bNewRTP=FALSE;
static bool bInter=FALSE, bCysMan=FALSE;
static bool bLysMan=FALSE, bAspMan=FALSE, bGluMan=FALSE, bHisMan=FALSE;
static bool bGlnMan=FALSE, bArgMan=FALSE;
t_pargs pa[] = {
{ "-newrtp", FALSE, etBOOL, {&bNewRTP},
"HIDDENWrite the residue database in new format to 'new.rtp'"},
- { "-cwd", FALSE, etBOOL, {&bAddCWD},
- "Also read force field files from the current working directory" },
- { "-rtpo", FALSE, etBOOL, {&bAllowOverrideRTP},
- "Allow an entry in a local rtp file to override a library rtp entry"},
{ "-lb", FALSE, etREAL, {&long_bond_dist},
"HIDDENLong bond warning distance" },
{ "-sb", FALSE, etREAL, {&short_bond_dist},
gmx_residuetype_init(&rt);
/* Read residue renaming database(s), if present */
- nrrn = fflib_search_file_end(ffdir,bAddCWD,".r2b",FALSE,&rrn);
+ nrrn = fflib_search_file_end(ffdir,".r2b",FALSE,&rrn);
nrtprename = 0;
rtprename = NULL;
this_chainid = ri->chainid;
this_chainnumber = ri->chainnum;
- bWat = strcasecmp(*ri->name,watres) == 0;
+ bWat = gmx_strcasecmp(*ri->name,watres) == 0;
if ((i == 0) || (this_chainnumber != prev_chainnumber) || (bWat != bPrevWat))
{
this_chainstart = pdba_all.atom[i].resind;
check_occupancy(&pdba_all,opt2fn("-f",NFILE,fnm),bVerbose);
/* Read atomtypes... */
- atype = read_atype(ffdir,bAddCWD,&symtab);
+ atype = read_atype(ffdir,&symtab);
/* read residue database */
printf("Reading residue database... (%s)\n",forcefield);
- nrtpf = fflib_search_file_end(ffdir,bAddCWD,".rtp",TRUE,&rtpf);
+ nrtpf = fflib_search_file_end(ffdir,".rtp",TRUE,&rtpf);
nrtp = 0;
restp = NULL;
for(i=0; i<nrtpf; i++) {
- read_resall(rtpf[i],&nrtp,&restp,atype,&symtab,bAllowOverrideRTP);
+ read_resall(rtpf[i],&nrtp,&restp,atype,&symtab,FALSE);
sfree(rtpf[i]);
}
sfree(rtpf);
}
/* read hydrogen database */
- nah = read_h_db(ffdir,bAddCWD,&ah);
+ nah = read_h_db(ffdir,&ah);
/* Read Termini database... */
- nNtdb=read_ter_db(ffdir,bAddCWD,'n',&ntdb,atype);
- nCtdb=read_ter_db(ffdir,bAddCWD,'c',&ctdb,atype);
+ nNtdb=read_ter_db(ffdir,'n',&ntdb,atype);
+ nCtdb=read_ter_db(ffdir,'c',&ctdb,atype);
top_fn=ftp2fn(efTOP,NFILE,fnm);
top_file=gmx_fio_fopen(top_fn,"w");
requires some re-thinking of code in gen_vsite.c, which I won't
do now :( AF 26-7-99 */
- rename_atoms(NULL,ffdir,bAddCWD,
+ rename_atoms(NULL,ffdir,
pdba,&symtab,restp_chain,FALSE,rt,FALSE,bVerbose);
match_atomnames_with_rtp(restp_chain,hb_chain,pdba,x,bVerbose);
nrtp,restp,
restp_chain,hb_chain,
cc->nterpairs,cc->ntdb,cc->ctdb,cc->r_start,cc->r_end,bAllowMissing,
- bVsites,bVsiteAromatics,forcefield,ffdir,bAddCWD,
+ bVsites,bVsiteAromatics,forcefield,ffdir,
mHmult,nssbonds,ssbonds,
long_bond_dist,short_bond_dist,bDeuterate,bChargeGroups,bCmap,
bRenumRes,bRTPresname);
bFound=FALSE;
for (k=i0; k<i; k++)
{
- bFound = (bFound || !strcasecmp(*(at->atomname[k]),name));
+ bFound = (bFound || !gmx_strcasecmp(*(at->atomname[k]),name));
}
if (!bFound)
{
name,*(at->resinfo[resind].name),at->resinfo[resind].nr);
if (name[0]=='H' || name[0]=='h')
{
- fprintf(stderr," You might need to add atom %s to the hydrogen database of buidling block %s\n"
+ fprintf(stderr," You might need to add atom %s to the hydrogen database of building block %s\n"
" in the file %s.hdb (see the manual)\n",
name,*(at->resinfo[resind].rtp),rp->filebase);
}
char *ffdir, int ffdir_maxlen)
{
int nff;
- char **ffdirs,**ffs,*ptr;
+ char **ffdirs,**ffs,**ffs_dir,*ptr;
int i,j,sel;
- char buf[STRLEN],**desc,*doc_dir;
+ char buf[STRLEN],**desc;
FILE *fp;
char *pret;
/* Store the force field names in ffs */
snew(ffs,nff);
+ snew(ffs_dir,nff);
for(i=0; i<nff; i++)
{
/* Remove the path from the ffdir name */
ptr = strrchr(ffdirs[i],DIR_SEPARATOR);
- if (ptr == 0)
+ if (ptr == NULL)
{
ffs[i] = strdup(ffdirs[i]);
+ ffs_dir[i] = low_gmxlibfn(ffdirs[i],FALSE,FALSE);
+ if (ffs_dir[i] == NULL)
+ {
+ gmx_fatal(FARGS,"Can no longer find file '%s'",ffdirs[i]);
+ }
}
else
{
ffs[i] = strdup(ptr+1);
+ ffs_dir[i] = strdup(ffdirs[i]);
}
+ ffs_dir[i][strlen(ffs_dir[i])-strlen(ffs[i])-1] = '\0';
/* Remove the extension from the ffdir name */
ffs[i][strlen(ffs[i])-strlen(fflib_forcefield_dir_ext())] = '\0';
}
{
if (strcmp(ffs[i],ffsel) == 0)
{
+ if (sel >= 0)
+ {
+ gmx_fatal(FARGS,"There are multiple force field directories in your path with the name '%s'. Run without the -ff switch and select the force field interactively.",ffsel);
+ }
sel = i;
}
}
snew(desc,nff);
for(i=0; (i<nff); i++)
{
- sprintf(buf,"%s%c%s",
- ffdirs[i],DIR_SEPARATOR,fflib_forcefield_doc());
- doc_dir = low_gmxlibfn(buf,FALSE);
- if (doc_dir != NULL)
+ sprintf(buf,"%s%c%s%s%c%s",
+ ffs_dir[i],DIR_SEPARATOR,
+ ffs[i],fflib_forcefield_dir_ext(),DIR_SEPARATOR,
+ fflib_forcefield_doc());
+ if (gmx_fexist(buf))
{
/* We don't use fflib_open, because we don't want printf's */
- fp = ffopen(doc_dir,"r");
+ fp = ffopen(buf,"r");
snew(desc[i],STRLEN);
get_a_line(fp,desc[i],STRLEN);
ffclose(fp);
- sfree(doc_dir);
}
else
{
desc[i] = strdup(ffs[i]);
}
}
+ /*
for(i=0; (i<nff); i++)
{
for(j=i+1; (j<nff); j++)
{
if ((desc[i][0] == '[' && desc[j][0] != '[') ||
((desc[i][0] == '[' || desc[j][0] != '[') &&
- strcasecmp(desc[i],desc[j]) > 0))
+ gmx_strcasecmp(desc[i],desc[j]) > 0))
{
swap_strings(ffdirs,i,j);
swap_strings(ffs ,i,j);
}
}
}
+ */
printf("\nSelect the Force Field:\n");
for(i=0; (i<nff); i++)
{
+ if (i == 0 || strcmp(ffs_dir[i-1],ffs_dir[i]) != 0)
+ {
+ printf("From '%s':\n",ffs_dir[i]);
+ }
printf("%2d: %s\n",i+1,desc[i]);
sfree(desc[i]);
}
{
sfree(ffdirs[i]);
sfree(ffs[i]);
+ sfree(ffs_dir[i]);
}
sfree(ffdirs);
sfree(ffs);
+ sfree(ffs_dir);
}
void choose_watermodel(const char *wmsel,const char *ffdir,
{
*nr = 0;
- return (strcasecmp(anm,hack->nname) == 0);
+ return (gmx_strcasecmp(anm,hack->nname) == 0);
}
else
{
else
{
return (strlen(anm) == strlen(hack->nname) + 1 &&
- strncasecmp(anm,hack->nname,strlen(hack->nname)) == 0);
+ gmx_strncasecmp(anm,hack->nname,strlen(hack->nname)) == 0);
}
}
}
for(j=0; j<hbr->nhack; j++)
{
if (hbr->hack[j].oname != NULL && hbr->hack[j].nname != NULL &&
- strcasecmp(oldnm,hbr->hack[j].oname) == 0)
+ gmx_strcasecmp(oldnm,hbr->hack[j].oname) == 0)
{
/* This is a replace entry. */
/* Check if we are not replacing a replaced atom. */
for(k=0; k<hbr->nhack; k++) {
if (k != j &&
hbr->hack[k].oname != NULL && hbr->hack[k].nname != NULL &&
- strcasecmp(hbr->hack[k].nname,hbr->hack[j].oname) == 0)
+ gmx_strcasecmp(hbr->hack[k].nname,hbr->hack[j].oname) == 0)
{
/* The replace in hack[j] replaces an atom that
* was already replaced in hack[k], we do not want
newnm = hbr->hack[j].nname;
for(k=0; k<rptr->natom; k++)
{
- if (strcasecmp(newnm,*rptr->atomname[k]) == 0)
+ if (gmx_strcasecmp(newnm,*rptr->atomname[k]) == 0)
{
break;
}
}
for(start_nr=0; start_nr<rptr->natom; start_nr++)
{
- if (strcasecmp(start_at,(*rptr->atomname[start_nr])) == 0)
+ if (gmx_strcasecmp(start_at,(*rptr->atomname[start_nr])) == 0)
{
break;
}
*pdba->atomname[atind] = strdup(newnm);
}
else if (hbr->hack[j].oname != NULL && hbr->hack[j].nname == NULL &&
- strcasecmp(oldnm,hbr->hack[j].oname) == 0)
+ gmx_strcasecmp(oldnm,hbr->hack[j].oname) == 0)
{
/* This is a delete entry, check if this atom is present
* in the rtp entry of this residue.
*/
for(k=0; k<rptr->natom; k++)
{
- if (strcasecmp(oldnm,*rptr->atomname[k]) == 0)
+ if (gmx_strcasecmp(oldnm,*rptr->atomname[k]) == 0)
{
break;
}
rptr = &restp[pdba->atom[i].resind];
for(j=0; (j<rptr->natom); j++)
{
- if (strcasecmp(oldnm,*(rptr->atomname[j])) == 0)
+ if (gmx_strcasecmp(oldnm,*(rptr->atomname[j])) == 0)
{
break;
}
int nterpairs,t_hackblock **ntdb, t_hackblock **ctdb,
int *rn, int *rc, bool bAllowMissing,
bool bVsites, bool bVsiteAromatics,
- const char *ff, const char *ffdir, bool bAddCWD,
+ const char *ff, const char *ffdir,
real mHmult,
int nssbonds, t_ssbond *ssbonds,
real long_bond_dist, real short_bond_dist,
/* determine which atoms will be vsites and add dummy masses
also renumber atom numbers in plist[0..F_NRE]! */
do_vsites(nrtp, rtp, atype, atoms, tab, x, plist,
- &vsite_type, &cgnr, mHmult, bVsiteAromatics, ffdir, bAddCWD);
+ &vsite_type, &cgnr, mHmult, bVsiteAromatics, ffdir);
}
/* Make Angles and Dihedrals */
}
for(i=start; (i<natoms) && (bNext || (at[i].resind == resind)); i++) {
- if (anm[i] && strcasecmp(type,*(anm[i]))==0)
+ if (anm[i] && gmx_strcasecmp(type,*(anm[i]))==0)
return (atom_id) i;
}
if (!(bNext && at[start].resind==at[natoms-1].resind))
if (start > 0)
resind = at[start-1].resind;
for(i=start-1; (i>=0) /*&& (at[i].resind == resind)*/; i--)
- if (strcasecmp(type,*(anm[i]))==0)
+ if (gmx_strcasecmp(type,*(anm[i]))==0)
return (atom_id) i;
if (start > 0)
atom_not_found(FARGS,type,at[start].resind,bondtype,bDontQuit);
int i;
for(i=0; (i<ng); i++)
- if (strcasecmp(s,gn[i]) == 0)
+ if (gmx_strcasecmp(s,gn[i]) == 0)
return i;
gmx_fatal(FARGS,"this QM method or basisset (%s) is not implemented\n!",s);
int i;
for(i=0; (i<ng); i++)
- if (strcasecmp(s,gn[i]) == 0)
+ if (gmx_strcasecmp(s,gn[i]) == 0)
return i;
gmx_fatal(FARGS,"Group %s not found in indexfile.\nMaybe you have non-default goups in your mdp file, while not using the '-n' option of grompp.\nIn that case use the '-n' option.\n",s);
for(i=0; i<nelem/2; i++) {
j = 0;
while ((j < nr) &&
- strcasecmp(names[2*i],*(gnames[groups->grps[egcENER].nm_ind[j]])))
+ gmx_strcasecmp(names[2*i],*(gnames[groups->grps[egcENER].nm_ind[j]])))
j++;
if (j == nr)
gmx_fatal(FARGS,"%s in %s is not an energy group\n",
names[2*i],option);
k = 0;
while ((k < nr) &&
- strcasecmp(names[2*i+1],*(gnames[groups->grps[egcENER].nm_ind[k]])))
+ gmx_strcasecmp(names[2*i+1],*(gnames[groups->grps[egcENER].nm_ind[k]])))
k++;
if (k==nr)
gmx_fatal(FARGS,"%s in %s is not an energy group\n",
snew(ir->opts.nFreeze,nr);
for(i=k=0; (i<nfreeze); i++)
for(j=0; (j<DIM); j++,k++) {
- ir->opts.nFreeze[i][j]=(strncasecmp(ptr1[k],"Y",1)==0);
+ ir->opts.nFreeze[i][j]=(gmx_strncasecmp(ptr1[k],"Y",1)==0);
if (!ir->opts.nFreeze[i][j]) {
- if (strncasecmp(ptr1[k],"N",1) != 0) {
+ if (gmx_strncasecmp(ptr1[k],"N",1) != 0) {
sprintf(warnbuf,"Please use Y(ES) or N(O) for freezedim only "
"(not %s)", ptr1[k]);
warning(wi,warn_buf);
for(i=0;i<nr;i++){
ir->opts.QMmult[i] = strtol(ptr1[i],NULL,10);
ir->opts.QMcharge[i] = strtol(ptr2[i],NULL,10);
- ir->opts.bSH[i] = (strncasecmp(ptr3[i],"Y",1)==0);
+ ir->opts.bSH[i] = (gmx_strncasecmp(ptr3[i],"Y",1)==0);
}
nCASelec = str_nelem(CASelectrons,MAXPTR,ptr1);
snew(ir->opts.bOPT,nr);
snew(ir->opts.bTS,nr);
for(i=0;i<nr;i++){
- ir->opts.bOPT[i] = (strncasecmp(ptr1[i],"Y",1)==0);
- ir->opts.bTS[i] = (strncasecmp(ptr2[i],"Y",1)==0);
+ ir->opts.bOPT[i] = (gmx_strncasecmp(ptr1[i],"Y",1)==0);
+ ir->opts.bTS[i] = (gmx_strncasecmp(ptr2[i],"Y",1)==0);
}
nSAon = str_nelem(SAon,MAXPTR,ptr1);
nSAoff = str_nelem(SAoff,MAXPTR,ptr2);
gmx_fatal(FARGS,"Less than 3 pull dimensions given in pull_dim: '%s'",
pulldim);
- if (strncasecmp(pulldim1,"N",1) == 0) {
+ if (gmx_strncasecmp(pulldim1,"N",1) == 0) {
pull->dim[d] = 0;
- } else if (strncasecmp(pulldim1,"Y",1) == 0) {
+ } else if (gmx_strncasecmp(pulldim1,"Y",1) == 0) {
pull->dim[d] = 1;
i++;
} else {
#include "pgutil.h"
#include "fflibutil.h"
-gpp_atomtype_t read_atype(const char *ffdir,bool bAddCWD,t_symtab *tab)
+gpp_atomtype_t read_atype(const char *ffdir,t_symtab *tab)
{
int nfile,f;
char **file;
t_atom *a;
t_param *nb;
- nfile = fflib_search_file_end(ffdir,bAddCWD,".atp",TRUE,&file);
+ nfile = fflib_search_file_end(ffdir,".atp",TRUE,&file);
at = init_atomtype();
snew(a,1);
snew(nb,1);
/* check for double entries, assuming list is already sorted */
for(i=1; (i<nrtp); i++) {
- if (strcasecmp(rtp[i-1].resname,rtp[i].resname) == 0)
+ if (gmx_strcasecmp(rtp[i-1].resname,rtp[i].resname) == 0)
fprintf(stderr,"WARNING double entry %s in file %s\n",
rtp[i].resname,libfn);
}
ra=(t_restp *)a;
rb=(t_restp *)b;
- return strcasecmp(ra->resname,rb->resname);
+ return gmx_strcasecmp(ra->resname,rb->resname);
}
int get_bt(char* header)
int i;
for(i=0; i<ebtsNR; i++)
- if ( strcasecmp(btsNames[i],header)==0 )
+ if ( gmx_strcasecmp(btsNames[i],header)==0 )
return i;
return NOTSET;
}
get_a_line(in,line,STRLEN);
if (!get_header(line,header))
gmx_fatal(FARGS,"in .rtp file at line:\n%s\n",line);
- if (strncasecmp("bondedtypes",header,5)==0) {
+ if (gmx_strncasecmp("bondedtypes",header,5)==0) {
get_a_line(in,line,STRLEN);
if ((nparam=sscanf(line,"%d %d %d %d %d %d %d %d",
&bts[ebtsBONDS],&bts[ebtsANGLES],
if (bt != NOTSET) {
/* header is an bonded directive */
bError = !read_bondeds(bt,in,line,&rrtp[nrtp]);
- } else if (strncasecmp("atoms",header,5) == 0) {
+ } else if (gmx_strncasecmp("atoms",header,5) == 0) {
/* header is the atoms directive */
bError = !read_atoms(in,line,&(rrtp[nrtp]),tab,atype);
} else {
firstrtp = -1;
for(i=0; i<nrtp; i++) {
- if (strcasecmp(rrtp[i].resname,rrtp[nrtp].resname) == 0) {
+ if (gmx_strcasecmp(rrtp[i].resname,rrtp[nrtp].resname) == 0) {
firstrtp = i;
}
}
for(i=0; (i<nsb); i++) {
if (((strncmp(sb[i].res1,res,3) == 0) &&
- (strcasecmp(sb[i].atom1,atom) == 0)) ||
+ (gmx_strcasecmp(sb[i].atom1,atom) == 0)) ||
((strncmp(sb[i].res2,res,3) == 0) &&
- (strcasecmp(sb[i].atom2,atom) == 0)))
+ (gmx_strcasecmp(sb[i].atom2,atom) == 0)))
return TRUE;
}
return FALSE;
for(i=0; (i<nsb); i++) {
*index_sb = i;
if (((strncmp(sb[i].res1,res1,3) == 0) &&
- (strcasecmp(sb[i].atom1,at1) == 0) &&
+ (gmx_strcasecmp(sb[i].atom1,at1) == 0) &&
(strncmp(sb[i].res2,res2,3) == 0) &&
- (strcasecmp(sb[i].atom2,at2) == 0))) {
+ (gmx_strcasecmp(sb[i].atom2,at2) == 0))) {
*bSwap = FALSE;
if ((0.9*sb[i].length < d) && (1.1*sb[i].length > d)) {
if (debug) fprintf(stderr,"%g\n", sb[i].length);
}
}
if (((strncmp(sb[i].res1,res2,3) == 0) &&
- (strcasecmp(sb[i].atom1,at2) == 0) &&
+ (gmx_strcasecmp(sb[i].atom1,at2) == 0) &&
(strncmp(sb[i].res2,res1,3) == 0) &&
- (strcasecmp(sb[i].atom2,at1) == 0))) {
+ (gmx_strcasecmp(sb[i].atom2,at1) == 0))) {
*bSwap = TRUE;
if ((0.9*sb[i].length < d) && (1.1*sb[i].length > d)) {
if (debug) fprintf(stderr,"%g\n", sb[i].length);
*pdba->atomname[i]) &&
!(nspec > 0 &&
pdba->atom[sgp[nspec-1]].resind == pdba->atom[i].resind &&
- strcasecmp(*pdba->atomname[sgp[nspec-1]],
+ gmx_strcasecmp(*pdba->atomname[sgp[nspec-1]],
*pdba->atomname[i]) == 0)) {
specp[nspec] = pdba->atom[i].resind;
sgp[nspec] = i;
int i;
for(i=0; i<ebtsNR; i++)
- if (strcasecmp(btsNames[i],keyw) == 0)
+ if (gmx_strcasecmp(btsNames[i],keyw) == 0)
return i;
for(i=0; i<ekwNR; i++)
- if (strcasecmp(kw_names[i],keyw) == 0)
+ if (gmx_strcasecmp(kw_names[i],keyw) == 0)
return ebtsNR + 1 + i;
return NOTSET;
*tbptr = tb;
}
-int read_ter_db(const char *ffdir,bool bAddCWD,char ter,
+int read_ter_db(const char *ffdir,char ter,
t_hackblock **tbptr,gpp_atomtype_t atype)
{
char ext[STRLEN];
/* Search for termini database files.
* Do not generate an error when none are found.
*/
- ntdbf = fflib_search_file_end(ffdir,bAddCWD,ext,FALSE,&tdbf);
+ ntdbf = fflib_search_file_end(ffdir,ext,FALSE,&tdbf);
ntb = 0;
*tbptr = NULL;
for(f=0; f<ntdbf; f++) {
* This makes termini selection for different molecule types
* much cleaner.
*/
- if (strcasecmp(restp->filebase,tb[i].filebase) == 0 &&
- strncasecmp(resname,s,3) == 0)
+ if (gmx_strcasecmp(restp->filebase,tb[i].filebase) == 0 &&
+ gmx_strncasecmp(resname,s,3) == 0)
{
found=TRUE;
srenew(list,n+1);
* This makes termini selection for different molecule types
* much cleaner.
*/
- if(strcasecmp(restp->filebase,tb[i].filebase) == 0)
+ if(gmx_strcasecmp(restp->filebase,tb[i].filebase) == 0)
{
- if(!strcasecmp("None",s))
+ if(!gmx_strcasecmp("None",s))
{
none_idx=i;
}
#include "hackblock.h"
#include "grompp.h"
-extern int read_ter_db(const char *ffdir,bool bAddCWD,char ter,
+extern int read_ter_db(const char *ffdir,char ter,
t_hackblock **tbptr,gpp_atomtype_t atype);
/* Read database for N&C terminal hacking */
/* Do a best match search for dissociation energies */
for(i=0; (i<n2m); i++) {
/* Check for a perfect match */
- if (((strcasecmp(t2m[i].ai,ai) == 0) && (strcasecmp(t2m[i].aj,aj) == 0)) ||
- ((strcasecmp(t2m[i].aj,ai) == 0) && (strcasecmp(t2m[i].ai,aj) == 0))) {
+ if (((gmx_strcasecmp(t2m[i].ai,ai) == 0) && (gmx_strcasecmp(t2m[i].aj,aj) == 0)) ||
+ ((gmx_strcasecmp(t2m[i].aj,ai) == 0) && (gmx_strcasecmp(t2m[i].ai,aj) == 0))) {
ibest = i;
break;
}
char buf[STRLEN],*ptr;
/* Hack to be able to read old topologies */
- if (strncasecmp_min(dstr,"dummies",7) == 0) {
+ if (gmx_strncasecmp_min(dstr,"dummies",7) == 0) {
sprintf(buf,"virtual_sites%s",dstr+7);
ptr = buf;
} else {
}
for (d=0; (d<d_maxdir); d++)
- if (strcasecmp_min(ptr,dir2str((directive)d)) == 0)
+ if (gmx_strcasecmp_min(ptr,dir2str((directive)d)) == 0)
return (directive)d;
return d_invalid;
*nb = -1;
for(i=1; (i<eNBF_NR); i++)
- if (strcasecmp(nb_str,enbf_names[i]) == 0)
+ if (gmx_strcasecmp(nb_str,enbf_names[i]) == 0)
*nb = i;
if (*nb == -1)
*nb = strtol(nb_str,NULL,10);
}
*comb = -1;
for(i=1; (i<eCOMB_NR); i++)
- if (strcasecmp(comb_str,ecomb_names[i]) == 0)
+ if (gmx_strcasecmp(comb_str,ecomb_names[i]) == 0)
*comb = i;
if (*comb == -1)
*comb = strtol(comb_str,NULL,10);
get_nbparm(nb_str,comb_str,&nb_funct,&comb,wi);
*combination_rule = comb;
if (nscan >= 3) {
- bGenPairs = (strncasecmp(genpairs,"Y",1) == 0);
+ bGenPairs = (gmx_strncasecmp(genpairs,"Y",1) == 0);
if (nb_funct != eNBF_LJ && bGenPairs) {
gmx_fatal(FARGS,"Generating pair parameters is only supported with LJ non-bonded interactions");
}
nmolb++;
bCouple = (opts->couple_moltype != NULL &&
- (strcasecmp("system" ,opts->couple_moltype) == 0 ||
- strcasecmp(*(mi0->name),opts->couple_moltype) == 0));
+ (gmx_strcasecmp("system" ,opts->couple_moltype) == 0 ||
+ gmx_strcasecmp(*(mi0->name),opts->couple_moltype) == 0));
if (bCouple) {
nmol_couple += nrcopies;
}
gmx_fatal(FARGS,"Bond atom type names can't be single digits.");
/* Hack to read old topologies */
- if (strcasecmp(ptype,"D") == 0)
+ if (gmx_strcasecmp(ptype,"D") == 0)
sprintf(ptype,"V");
for(j=0; (j<eptNR); j++)
- if (strcasecmp(ptype,xl[j].entry) == 0)
+ if (gmx_strcasecmp(ptype,xl[j].entry) == 0)
break;
if (j == eptNR)
gmx_fatal(FARGS,"Invalid particle type %s on line %s",
/* Test if this atomtype overwrites another */
i = 0;
while (i < *nmol) {
- if (strcasecmp(*((*mol)[i].name),type) == 0)
+ if (gmx_strcasecmp(*((*mol)[i].name),type) == 0)
gmx_fatal(FARGS,"moleculetype %s is redefined",type);
i++;
}
}
/* search moleculename */
- for (i=0; ((i<nrmols) && strcasecmp(type,*(mols[i].name))); i++)
+ for (i=0; ((i<nrmols) && gmx_strcasecmp(type,*(mols[i].name))); i++)
;
if (i<nrmols) {
sprintf(buf,"grps[%d].nr",i);
cmp_int(fp,buf,-1,g0->grps[i].nr,g1->grps[i].nr);
if (g0->grps[i].nr == g1->grps[i].nr) {
- sprintf(buf,"grps[%d].name[%d]",i,j);
for(j=0; j<g0->grps[i].nr; j++) {
- cmp_str(fp,buf,-1,
- *g0->grpname[g0->grps[i].nm_ind[j]],
- *g1->grpname[g1->grps[i].nm_ind[j]]);
+ sprintf(buf,"grps[%d].name[%d]",i,j);
+ cmp_str(fp,buf,-1,
+ *g0->grpname[g0->grps[i].nm_ind[j]],
+ *g1->grpname[g1->grps[i].nm_ind[j]]);
}
}
cmp_int(fp,"ngrpnr",i,g0->ngrpnr[i],g1->ngrpnr[i]);
fprintf(debug,"\n");
}
bXH3 =
- ( (strncasecmp(get_atomtype_name(at->atom[param->AK].type,atype),"MNH",3)==0) &&
- (strncasecmp(get_atomtype_name(at->atom[param->AL].type,atype),"MNH",3)==0) ) ||
- ( (strncasecmp(get_atomtype_name(at->atom[param->AK].type,atype),"MCH3",4)==0) &&
- (strncasecmp(get_atomtype_name(at->atom[param->AL].type,atype),"MCH3",4)==0) );
+ ( (gmx_strncasecmp(get_atomtype_name(at->atom[param->AK].type,atype),"MNH",3)==0) &&
+ (gmx_strncasecmp(get_atomtype_name(at->atom[param->AL].type,atype),"MNH",3)==0) ) ||
+ ( (gmx_strncasecmp(get_atomtype_name(at->atom[param->AK].type,atype),"MCH3",4)==0) &&
+ (gmx_strncasecmp(get_atomtype_name(at->atom[param->AL].type,atype),"MCH3",4)==0) );
bjk = get_bond_length(nrbond, bonds, param->AJ, param->AK);
bjl = get_bond_length(nrbond, bonds, param->AJ, param->AL);
fprintf(debug,"\n");
}
bXH3 =
- ( (strncasecmp(get_atomtype_name(at->atom[param->AK].type,atype),"MNH",3)==0) &&
- (strncasecmp(get_atomtype_name(at->atom[param->AL].type,atype),"MNH",3)==0) ) ||
- ( (strncasecmp(get_atomtype_name(at->atom[param->AK].type,atype),"MCH3",4)==0) &&
- (strncasecmp(get_atomtype_name(at->atom[param->AL].type,atype),"MCH3",4)==0) );
+ ( (gmx_strncasecmp(get_atomtype_name(at->atom[param->AK].type,atype),"MNH",3)==0) &&
+ (gmx_strncasecmp(get_atomtype_name(at->atom[param->AL].type,atype),"MNH",3)==0) ) ||
+ ( (gmx_strncasecmp(get_atomtype_name(at->atom[param->AK].type,atype),"MCH3",4)==0) &&
+ (gmx_strncasecmp(get_atomtype_name(at->atom[param->AL].type,atype),"MCH3",4)==0) );
/* check if construction parity must be swapped */
bSwapParity = ( param->C1 == -1 );
sfree(xlatom);
}
-void rename_atoms(const char *xlfile,const char *ffdir,bool bAddCWD,
+void rename_atoms(const char *xlfile,const char *ffdir,
t_atoms *atoms,t_symtab *symtab,const t_restp *restp,
bool bResname,gmx_residuetype_t rt,bool bReorderNum,
bool bVerbose)
}
else
{
- nf = fflib_search_file_end(ffdir,bAddCWD,".arn",FALSE,&f);
+ nf = fflib_search_file_end(ffdir,".arn",FALSE,&f);
for(i=0; i<nf; i++)
{
fp = fflib_open(f[i]);
for(i=0; (i<nxlate) && !bRenamed; i++) {
/* Check if the base file name of the rtp and arn entry match */
if (restp == NULL ||
- strcasecmp(restp[resind].filebase,xlatom[i].filebase) == 0)
+ gmx_strcasecmp(restp[resind].filebase,xlatom[i].filebase) == 0)
{
/* Match the residue name */
bMatch = (xlatom[i].res == NULL ||
- (strcasecmp("protein",xlatom[i].res) == 0 &&
+ (gmx_strcasecmp("protein",xlatom[i].res) == 0 &&
gmx_residuetype_is_protein(rt,rnm)) ||
- (strcasecmp("DNA",xlatom[i].res) == 0 &&
+ (gmx_strcasecmp("DNA",xlatom[i].res) == 0 &&
gmx_residuetype_is_dna(rt,rnm)) ||
- (strcasecmp("RNA",xlatom[i].res) == 0 &&
+ (gmx_strcasecmp("RNA",xlatom[i].res) == 0 &&
gmx_residuetype_is_rna(rt,rnm)));
if (!bMatch)
{
/* If bResname is true renames atoms based on residue names,
* otherwise renames atoms based on rtp entry names.
*/
-extern void rename_atoms(const char *xlfile,const char *ffdir,bool bAddCWD,
+extern void rename_atoms(const char *xlfile,const char *ffdir,
t_atoms *atoms,t_symtab *symtab,const t_restp *restp,
bool bResname,gmx_residuetype_t rt,bool bReorderNum,
bool bVerbose);
if(ir->gb_algorithm==egbSTILL)
{
#if ( defined(GMX_IA32_SSE) || defined(GMX_X86_64_SSE) || (!defined(GMX_DOUBLE) && defined(GMX_SSE2)) )
- genborn_allvsall_calc_still_radii_sse2_single(fr,md,born,top,x[0],cr,&fr->AllvsAll_workgb);
+ if(fr->UseOptimizedKernels)
+ {
+ genborn_allvsall_calc_still_radii_sse2_single(fr,md,born,top,x[0],cr,&fr->AllvsAll_workgb);
+ }
+ else
+ {
+ genborn_allvsall_calc_still_radii(fr,md,born,top,x[0],cr,&fr->AllvsAll_workgb);
+ }
#elif ( defined(GMX_IA32_SSE2) || defined(GMX_X86_64_SSE2) || (defined(GMX_DOUBLE) && defined(GMX_SSE2)) )
- genborn_allvsall_calc_still_radii_sse2_double(fr,md,born,top,x[0],cr,&fr->AllvsAll_workgb);
+ if(fr->UseOptimizedKernels)
+ {
+ genborn_allvsall_calc_still_radii_sse2_double(fr,md,born,top,x[0],cr,&fr->AllvsAll_workgb);
+ }
+ else
+ {
+ genborn_allvsall_calc_still_radii(fr,md,born,top,x[0],cr,&fr->AllvsAll_workgb);
+ }
#else
genborn_allvsall_calc_still_radii(fr,md,born,top,x[0],cr,&fr->AllvsAll_workgb);
#endif
else if(ir->gb_algorithm==egbHCT || ir->gb_algorithm==egbOBC)
{
#if ( defined(GMX_IA32_SSE) || defined(GMX_X86_64_SSE) || (!defined(GMX_DOUBLE) && defined(GMX_SSE2)) )
- genborn_allvsall_calc_hct_obc_radii_sse2_single(fr,md,born,ir->gb_algorithm,top,x[0],cr,&fr->AllvsAll_workgb);
+ if(fr->UseOptimizedKernels)
+ {
+ genborn_allvsall_calc_hct_obc_radii_sse2_single(fr,md,born,ir->gb_algorithm,top,x[0],cr,&fr->AllvsAll_workgb);
+ }
+ else
+ {
+ genborn_allvsall_calc_hct_obc_radii(fr,md,born,ir->gb_algorithm,top,x[0],cr,&fr->AllvsAll_workgb);
+ }
#elif ( defined(GMX_IA32_SSE2) || defined(GMX_X86_64_SSE2) || (defined(GMX_DOUBLE) && defined(GMX_SSE2)) )
- genborn_allvsall_calc_hct_obc_radii_sse2_double(fr,md,born,ir->gb_algorithm,top,x[0],cr,&fr->AllvsAll_workgb);
+ if(fr->UseOptimizedKernels)
+ {
+ genborn_allvsall_calc_hct_obc_radii_sse2_double(fr,md,born,ir->gb_algorithm,top,x[0],cr,&fr->AllvsAll_workgb);
+ }
+ else
+ {
+ genborn_allvsall_calc_hct_obc_radii(fr,md,born,ir->gb_algorithm,top,x[0],cr,&fr->AllvsAll_workgb);
+ }
#else
genborn_allvsall_calc_hct_obc_radii(fr,md,born,ir->gb_algorithm,top,x[0],cr,&fr->AllvsAll_workgb);
#endif
switch(ir->gb_algorithm)
{
case egbSTILL:
- calc_gb_rad_still_sse2_double(cr,fr,md->nr,top, atype, x[0], nl, born);
+ if(fr->UseOptimizedKernels)
+ {
+ calc_gb_rad_still_sse2_double(cr,fr,md->nr,top, atype, x[0], nl, born);
+ }
+ else
+ {
+ calc_gb_rad_still(cr,fr,born->nr,top,atype,x,nl,born,md);
+ }
break;
case egbHCT:
+ if(fr->UseOptimizedKernels)
+ {
+ calc_gb_rad_hct_obc_sse2_double(cr,fr,born->nr,top, atype, x[0], nl, born, md, ir->gb_algorithm);
+ }
+ else
+ {
+ calc_gb_rad_hct(cr,fr,born->nr,top,atype,x,nl,born,md);
+ }
+ break;
case egbOBC:
- calc_gb_rad_hct_obc_sse2_double(cr,fr,born->nr,top, atype, x[0], nl, born, md, ir->gb_algorithm);
+ if(fr->UseOptimizedKernels)
+ {
+ calc_gb_rad_hct_obc_sse2_double(cr,fr,born->nr,top, atype, x[0], nl, born, md, ir->gb_algorithm);
+ }
+ else
+ {
+ calc_gb_rad_obc(cr,fr,born->nr,top,atype,x,nl,born,md);
+ }
break;
default:
switch(ir->gb_algorithm)
{
case egbSTILL:
+ if(fr->UseOptimizedKernels)
+ {
calc_gb_rad_still_sse2_single(cr,fr,born->nr,top, atype, x[0], nl, born);
+ }
+ else
+ {
+ calc_gb_rad_still(cr,fr,born->nr,top,atype,x,nl,born,md);
+ }
break;
case egbHCT:
+ if(fr->UseOptimizedKernels)
+ {
+ calc_gb_rad_hct_obc_sse2_single(cr,fr,born->nr,top, atype, x[0], nl, born, md, ir->gb_algorithm);
+ }
+ else
+ {
+ calc_gb_rad_hct(cr,fr,born->nr,top,atype,x,nl,born,md);
+ }
+ break;
+
case egbOBC:
- calc_gb_rad_hct_obc_sse2_single(cr,fr,born->nr,top, atype, x[0], nl, born, md, ir->gb_algorithm);
+ if(fr->UseOptimizedKernels)
+ {
+ calc_gb_rad_hct_obc_sse2_single(cr,fr,born->nr,top, atype, x[0], nl, born, md, ir->gb_algorithm);
+ }
+ else
+ {
+ calc_gb_rad_obc(cr,fr,born->nr,top,atype,x,nl,born,md);
+ }
break;
default:
if(born->use[ai]==1)
{
- rai = top->atomtypes.gb_radius[md->typeA[ai]];
+ rai = top->atomtypes.gb_radius[md->typeA[ai]];
rbi_inv = fr->invsqrta[ai];
rbi_inv2 = rbi_inv * rbi_inv;
tmp = (rai*rbi_inv2)*(rai*rbi_inv2);
real rinv11,tx,ty,tz,rbai,rbaj,fgb_ai;
real *rb;
volatile int idx;
-
+
n = 0;
rb = born->work;
{
real v=0;
int cnt;
+ int i;
/* PBC or not? */
const t_pbc *pbc_null;
pbc_null = pbc;
else
pbc_null = NULL;
-
-
-
+
/* Do a simple ACE type approximation for the non-polar solvation */
enerd->term[F_NPSOLVATION] += calc_gb_nonpolar(cr, fr,born->nr, born, top, atype, fr->dvda, gb_algorithm,md);
if(fr->bAllvsAll)
{
#if ( defined(GMX_IA32_SSE) || defined(GMX_X86_64_SSE) || (!defined(GMX_DOUBLE) && defined(GMX_SSE2)) )
- genborn_allvsall_calc_chainrule_sse2_single(fr,md,born,x[0],f[0],gb_algorithm,fr->AllvsAll_workgb);
+ if(fr->UseOptimizedKernels)
+ {
+ genborn_allvsall_calc_chainrule_sse2_single(fr,md,born,x[0],f[0],gb_algorithm,fr->AllvsAll_workgb);
+ }
+ else
+ {
+ genborn_allvsall_calc_chainrule(fr,md,born,x[0],f[0],gb_algorithm,fr->AllvsAll_workgb);
+ }
#elif ( defined(GMX_IA32_SSE2) || defined(GMX_X86_64_SSE2) || (defined(GMX_DOUBLE) && defined(GMX_SSE2)) )
- genborn_allvsall_calc_chainrule_sse2_double(fr,md,born,x[0],f[0],gb_algorithm,fr->AllvsAll_workgb);
+ if(fr->UseOptimizedKernels)
+ {
+ genborn_allvsall_calc_chainrule_sse2_double(fr,md,born,x[0],f[0],gb_algorithm,fr->AllvsAll_workgb);
+ }
+ else
+ {
+ genborn_allvsall_calc_chainrule(fr,md,born,x[0],f[0],gb_algorithm,fr->AllvsAll_workgb);
+ }
#else
genborn_allvsall_calc_chainrule(fr,md,born,x[0],f[0],gb_algorithm,fr->AllvsAll_workgb);
#endif
#ifdef GMX_DOUBLE
#if ( defined(GMX_IA32_SSE2) || defined(GMX_X86_64_SSE2) || (defined(GMX_DOUBLE) && defined(GMX_SSE2)) )
- calc_gb_chainrule_sse2_double(born->nr, &(fr->gblist), fr->dadx, fr->dvda,
- x[0], f[0], fr->fshift[0], fr->shift_vec[0],
- gb_algorithm, born, md);
+ if(fr->UseOptimizedKernels)
+ {
+ calc_gb_chainrule_sse2_double(born->nr, &(fr->gblist), fr->dadx, fr->dvda,
+ x[0], f[0], fr->fshift[0], fr->shift_vec[0],
+ gb_algorithm, born, md);
+ }
+ else
+ {
+ calc_gb_chainrule(born->nr, &(fr->gblist), fr->dadx, fr->dvda,
+ x, f, fr->fshift, fr->shift_vec, gb_algorithm, born, md);
+ }
#else
calc_gb_chainrule(born->nr, &(fr->gblist), fr->dadx, fr->dvda,
- x, f, fr->fshift, fr->shift_vec,
- gb_algorithm, born, md);
+ x, f, fr->fshift, fr->shift_vec, gb_algorithm, born, md);
#endif
#else
#if ( defined(GMX_IA32_SSE) || defined(GMX_X86_64_SSE) || (!defined(GMX_DOUBLE) && defined(GMX_SSE2)) )
/* x86 or x86-64 with GCC inline assembly and/or SSE intrinsics */
- calc_gb_chainrule_sse2_single(born->nr, &(fr->gblist), fr->dadx, fr->dvda,
- x[0], f[0], fr->fshift[0], fr->shift_vec[0],
- gb_algorithm, born, md);
+ if(fr->UseOptimizedKernels)
+ {
+ calc_gb_chainrule_sse2_single(born->nr, &(fr->gblist), fr->dadx, fr->dvda,
+ x[0], f[0], fr->fshift[0], fr->shift_vec[0],
+ gb_algorithm, born, md);
+ }
+ else
+ {
+ calc_gb_chainrule(born->nr, &(fr->gblist), fr->dadx, fr->dvda,
+ x, f, fr->fshift, fr->shift_vec, gb_algorithm, born, md);
+ }
+
#else
/* Calculate the forces due to chain rule terms with non sse code */
calc_gb_chainrule(born->nr, &(fr->gblist), fr->dadx, fr->dvda,
- x, f, fr->fshift, fr->shift_vec,
- gb_algorithm, born, md);
+ x, f, fr->fshift, fr->shift_vec, gb_algorithm, born, md);
#endif
#endif
k = k+i-imin;
if(k>=0)
{
- aadata->prologue_mask_gb[i][k] = 0;
+ aadata->prologue_mask_gb[i][2*k] = 0;
+ aadata->prologue_mask_gb[i][2*k+1] = 0;
}
}
}
k = k+i-imin;
if(k>=0)
{
- aadata->prologue_mask_gb[i][k] = 0;
+ aadata->prologue_mask_gb[i][2*k] = 0;
+ aadata->prologue_mask_gb[i][2*k+1] = 0;
}
}
}
y_align[i] = x[3*k+1];
z_align[i] = x[3*k+2];
work[i] = 0;
- }
-
-
+ }
+
for(i=ni0; i<ni1; i+=UNROLLI)
{
/* We assume shifts are NOT used for all-vs-all interactions */
-
/* Load i atom data */
ix_SSE0 = _mm_load1_pd(x_align+i);
iy_SSE0 = _mm_load1_pd(y_align+i);
emask0 = aadata->epilogue_mask[i];
emask1 = aadata->epilogue_mask[i+1];
- imask_SSE0 = _mm_load1_pd((double *)(aadata->imask+i));
- imask_SSE1 = _mm_load1_pd((double *)(aadata->imask+i+1));
+ imask_SSE0 = _mm_load1_pd((double *)(aadata->imask+2*i));
+ imask_SSE1 = _mm_load1_pd((double *)(aadata->imask+2*i+2));
/* Prologue part, including exclusion mask */
for(j=nj0; j<nj1; j+=UNROLLJ)
{
jmask_SSE0 = _mm_load_pd((double *)pmask0);
jmask_SSE1 = _mm_load_pd((double *)pmask1);
- pmask0 += UNROLLJ;
- pmask1 += UNROLLJ;
+ pmask0 += 2*UNROLLJ;
+ pmask1 += 2*UNROLLJ;
/* load j atom coordinates */
jx_SSE = _mm_load_pd(x_align+j);
jy_SSE = _mm_load_pd(y_align+j);
jz_SSE = _mm_load_pd(z_align+j);
-
+
/* Calculate distance */
dx_SSE0 = _mm_sub_pd(ix_SSE0,jx_SSE);
dy_SSE0 = _mm_sub_pd(iy_SSE0,jy_SSE);
raj_SSE = _mm_load_pd(gb_radius+j);
vaj_SSE = _mm_load_pd(vsolv+j);
-
+
rvdw_SSE0 = _mm_add_pd(rai_SSE0,raj_SSE);
rvdw_SSE1 = _mm_add_pd(rai_SSE1,raj_SSE);
_mm_store_pd(work+j , _mm_add_pd(_mm_load_pd(work+j),
_mm_add_pd(_mm_mul_pd(prod_ai_SSE0,icf4_SSE0),
_mm_mul_pd(prod_ai_SSE1,icf4_SSE1))));
+
gpi_SSE0 = _mm_add_pd(gpi_SSE0, _mm_mul_pd(prod_SSE,icf4_SSE0));
gpi_SSE1 = _mm_add_pd(gpi_SSE1, _mm_mul_pd(prod_SSE,icf4_SSE1));
-
+
/* Save ai->aj and aj->ai chain rule terms */
_mm_store_pd(dadx,_mm_mul_pd(prod_SSE,icf6_SSE0));
dadx+=2;
/* Main part, no exclusions */
for(j=nj1; j<nj2; j+=UNROLLJ)
- {
+ {
+
/* load j atom coordinates */
jx_SSE = _mm_load_pd(x_align+j);
jy_SSE = _mm_load_pd(y_align+j);
gpi_SSE0 = _mm_add_pd(gpi_SSE0, _mm_mul_pd(prod_SSE,icf4_SSE0));
gpi_SSE1 = _mm_add_pd(gpi_SSE1, _mm_mul_pd(prod_SSE,icf4_SSE1));
-
+
/* Save ai->aj and aj->ai chain rule terms */
_mm_store_pd(dadx,_mm_mul_pd(prod_SSE,icf6_SSE0));
dadx+=2;
}
/* Epilogue part, including exclusion mask */
for(j=nj2; j<nj3; j+=UNROLLJ)
- {
+ {
jmask_SSE0 = _mm_load_pd((double *)emask0);
jmask_SSE1 = _mm_load_pd((double *)emask1);
- emask0 += UNROLLJ;
- emask1 += UNROLLJ;
+ emask0 += 2*UNROLLJ;
+ emask1 += 2*UNROLLJ;
/* load j atom coordinates */
jx_SSE = _mm_load_pd(x_align+j);
gpi_SSE0 = _mm_add_pd(gpi_SSE0, _mm_mul_pd(prod_SSE,icf4_SSE0));
gpi_SSE1 = _mm_add_pd(gpi_SSE1, _mm_mul_pd(prod_SSE,icf4_SSE1));
-
+
/* Save ai->aj and aj->ai chain rule terms */
_mm_store_pd(dadx,_mm_mul_pd(prod_SSE,icf6_SSE0));
dadx+=2;
_mm_store_pd(dadx,_mm_and_pd(t1_SSE1,obc_mask1_SSE1));
dadx += 2;
}
- tmpSSE = sum_ai_SSE0;
- sum_ai_SSE0 = _mm_unpacklo_pd(sum_ai_SSE0,sum_ai_SSE1);
- sum_ai_SSE1 = _mm_unpackhi_pd(tmpSSE,sum_ai_SSE1);
-
+ GMX_MM_TRANSPOSE2_PD(sum_ai_SSE0,sum_ai_SSE1);
sum_ai_SSE0 = _mm_add_pd(sum_ai_SSE0,sum_ai_SSE1);
_mm_store_pd(work+i, _mm_add_pd(sum_ai_SSE0, _mm_load_pd(work+i)));
}
natoms = mdatoms->nr;
ni0 = (mdatoms->start/SIMD_WIDTH)*SIMD_WIDTH;
ni1 = mdatoms->start+mdatoms->homenr;
- dadx = fr->dadx;
aadata = (gmx_allvsallgb2_data_t *)paadata;
n = 0;
rb = aadata->work;
-
+
/* Loop to get the proper form for the Born radius term */
if(gb_algorithm==egbSTILL)
{
/* Total force between ai and aj is the sum of ai->aj and aj->ai */
fgb_SSE0 = _mm_add_pd(fgb_SSE0,fgb_ai_SSE0);
fgb_SSE1 = _mm_add_pd(fgb_SSE1,fgb_ai_SSE1);
-
+
/* Calculate temporary vectorial force */
tx_SSE0 = _mm_mul_pd(fgb_SSE0,dx_SSE0);
ty_SSE0 = _mm_mul_pd(fgb_SSE0,dy_SSE0);
_mm_store_pd(fz_align+j,
_mm_sub_pd( _mm_load_pd(fz_align+j) , _mm_add_pd(tz_SSE0,tz_SSE1) ));
}
+
/* Add i forces to mem */
- tmpSSE = fix_SSE0;
- fix_SSE0 = _mm_unpacklo_pd(fix_SSE0,fix_SSE1);
- fix_SSE1 = _mm_unpackhi_pd(tmpSSE,fix_SSE1);
+ GMX_MM_TRANSPOSE2_PD(fix_SSE0,fix_SSE1);
fix_SSE0 = _mm_add_pd(fix_SSE0,fix_SSE1);
_mm_store_pd(fx_align+i, _mm_add_pd(fix_SSE0, _mm_load_pd(fx_align+i)));
- tmpSSE = fiy_SSE0;
- fiy_SSE0 = _mm_unpacklo_pd(fiy_SSE0,fiy_SSE1);
- fiy_SSE1 = _mm_unpackhi_pd(tmpSSE,fiy_SSE1);
+ GMX_MM_TRANSPOSE2_PD(fiy_SSE0,fiy_SSE1);
fiy_SSE0 = _mm_add_pd(fiy_SSE0,fiy_SSE1);
_mm_store_pd(fy_align+i, _mm_add_pd(fiy_SSE0, _mm_load_pd(fy_align+i)));
- tmpSSE = fiy_SSE0;
- fiz_SSE0 = _mm_unpacklo_pd(fiz_SSE0,fiz_SSE1);
- fiz_SSE1 = _mm_unpackhi_pd(tmpSSE,fiz_SSE1);
+ GMX_MM_TRANSPOSE2_PD(fiz_SSE0,fiz_SSE1);
fiz_SSE0 = _mm_add_pd(fiz_SSE0,fiz_SSE1);
- _mm_store_pd(fz_align+i, _mm_add_pd(fiz_SSE0, _mm_load_pd(fz_align+i)));
+ _mm_store_pd(fz_align+i, _mm_add_pd(fiz_SSE0, _mm_load_pd(fz_align+i)));
}
for(i=0;i<natoms;i++)
gpi_SSE1 = _mm_add_ps(gpi_SSE1, _mm_mul_ps(prod_SSE,icf4_SSE1));
gpi_SSE2 = _mm_add_ps(gpi_SSE2, _mm_mul_ps(prod_SSE,icf4_SSE2));
gpi_SSE3 = _mm_add_ps(gpi_SSE3, _mm_mul_ps(prod_SSE,icf4_SSE3));
-
+
/* Save ai->aj and aj->ai chain rule terms */
_mm_store_ps(dadx,_mm_mul_ps(prod_SSE,icf6_SSE0));
dadx+=4;
/* Main part, no exclusions */
for(j=nj1; j<nj2; j+=UNROLLJ)
- {
+ {
/* load j atom coordinates */
jx_SSE = _mm_load_ps(x_align+j);
jy_SSE = _mm_load_ps(y_align+j);
gpi_SSE1 = _mm_add_ps(gpi_SSE1, _mm_mul_ps(prod_SSE,icf4_SSE1));
gpi_SSE2 = _mm_add_ps(gpi_SSE2, _mm_mul_ps(prod_SSE,icf4_SSE2));
gpi_SSE3 = _mm_add_ps(gpi_SSE3, _mm_mul_ps(prod_SSE,icf4_SSE3));
-
+
/* Save ai->aj and aj->ai chain rule terms */
_mm_store_ps(dadx,_mm_mul_ps(prod_SSE,icf6_SSE0));
dadx+=4;
n = 0;
rb = aadata->work;
-
+
/* Loop to get the proper form for the Born radius term */
if(gb_algorithm==egbSTILL)
{
/* Load limits for loop over neighbors */
nj0 = jindex[4*i];
nj3 = jindex[4*i+3];
-
+
/* No masks necessary, since the stored chain rule derivatives will be zero in those cases! */
for(j=nj0; j<nj3; j+=UNROLLJ)
{
fgb_SSE1 = _mm_add_ps(fgb_SSE1,fgb_ai_SSE1);
fgb_SSE2 = _mm_add_ps(fgb_SSE2,fgb_ai_SSE2);
fgb_SSE3 = _mm_add_ps(fgb_SSE3,fgb_ai_SSE3);
-
+
/* Calculate temporary vectorial force */
tx_SSE0 = _mm_mul_ps(fgb_SSE0,dx_SSE0);
ty_SSE0 = _mm_mul_ps(fgb_SSE0,dy_SSE0);
rai = _mm_load1_pd(gb_radius+ii);
prod_ai = _mm_set1_pd(STILL_P4*vsolv[ii]);
-
+
for(k=nj0;k<nj1-1;k+=2)
{
jnrA = jjnr[k];
ratio = _mm_mul_pd(rsq, gmx_mm_inv_pd( _mm_mul_pd(rvdw,rvdw)));
mask_cmp = _mm_cmple_pd(ratio,still_p5inv);
-
+
/* gmx_mm_sincos_pd() is quite expensive, so avoid calculating it if we can! */
if( 0 == _mm_movemask_pd(mask_cmp) )
{
dccf = _mm_mul_pd(_mm_mul_pd(two,term),
_mm_mul_pd(sinq,theta));
}
-
+
prod = _mm_mul_pd(still_p4,vaj);
icf4 = _mm_mul_pd(ccf,rinv4);
icf6 = _mm_mul_pd( _mm_sub_pd( _mm_mul_pd(four,ccf),dccf), rinv6);
-
+
GMX_MM_INCREMENT_2VALUES_PD(work+jnrA,work+jnrB,_mm_mul_pd(prod_ai,icf4));
gpi = _mm_add_pd(gpi, _mm_mul_pd(prod,icf4) );
prod = _mm_mul_sd(still_p4,vaj);
icf4 = _mm_mul_sd(ccf,rinv4);
icf6 = _mm_mul_sd( _mm_sub_sd( _mm_mul_sd(four,ccf),dccf), rinv6);
-
+
GMX_MM_INCREMENT_1VALUE_PD(work+jnrA,_mm_mul_sd(prod_ai,icf4));
gpi = _mm_add_sd(gpi, _mm_mul_sd(prod,icf4) );
}
gmx_mm_update_1pot_pd(gpi,work+ii);
}
-
+
/* Sum up the polarization energy from other nodes */
if(PARTDECOMP(cr))
{
ix = _mm_set1_pd(shX+x[ii3+0]);
iy = _mm_set1_pd(shY+x[ii3+1]);
iz = _mm_set1_pd(shZ+x[ii3+2]);
-
- offset = (nj1-nj0)%4;
-
+
rai = _mm_load1_pd(gb_radius+ii);
rai_inv= gmx_mm_inv_pd(rai);
dadx2 = _mm_and_pd(t1,obc_mask1);
_mm_store_pd(dadx,dadx1);
- dadx += 4;
+ dadx += 2;
_mm_store_pd(dadx,dadx2);
- dadx += 4;
+ dadx += 2;
} /* end normal inner loop */
if(k<nj1)
dadx2 = _mm_and_pd(t1,obc_mask1);
_mm_store_pd(dadx,dadx1);
- dadx += 4;
+ dadx += 2;
_mm_store_pd(dadx,dadx2);
- dadx += 4;
+ dadx += 2;
}
gmx_mm_update_1pot_pd(sum_ai,work+ii);
double *x, double *f, double *fshift, double *shiftvec,
int gb_algorithm, gmx_genborn_t *born, t_mdatoms *md)
{
- int i,k,n,ii,jnr,ii3,is3,nj0,nj1,offset,n0,n1;
+ int i,k,n,ii,jnr,ii3,is3,nj0,nj1,n0,n1;
int jnrA,jnrB;
int j3A,j3B;
int * jjnr;
jjnr = nl->jjnr;
- /* Loop to get the proper form for the Born radius term, sse style */
- offset=natoms%4;
-
+ /* Loop to get the proper form for the Born radius term, sse style */
n0 = md->start;
n1 = md->start+md->homenr+1+natoms/2;
ix = _mm_set1_pd(shX+x[ii3+0]);
iy = _mm_set1_pd(shY+x[ii3+1]);
iz = _mm_set1_pd(shZ+x[ii3+2]);
-
- offset = (nj1-nj0)%4;
-
+
rbai = _mm_load1_pd(rb+ii);
fix = _mm_setzero_pd();
fiy = _mm_setzero_pd();
/* load chain rule terms for j1-4 */
f_gb = _mm_load_pd(dadx);
- dadx += 4;
+ dadx += 2;
f_gb_ai = _mm_load_pd(dadx);
- dadx += 4;
+ dadx += 2;
/* calculate scalar force */
f_gb = _mm_mul_pd(f_gb,rbai);
/* load chain rule terms */
f_gb = _mm_load_pd(dadx);
- dadx += 4;
+ dadx += 2;
f_gb_ai = _mm_load_pd(dadx);
- dadx += 4;
+ dadx += 2;
/* calculate scalar force */
f_gb = _mm_mul_sd(f_gb,rbai);
icf4B = _mm_mul_ps(ccfB,rinv4B);
icf6 = _mm_mul_ps( _mm_sub_ps( _mm_mul_ps(four,ccf),dccf), rinv6);
icf6B = _mm_mul_ps( _mm_sub_ps( _mm_mul_ps(four,ccfB),dccfB), rinv6B);
-
+
GMX_MM_INCREMENT_4VALUES_PS(work+jnrA,work+jnrB,work+jnrC,work+jnrD,_mm_mul_ps(prod_ai,icf4));
GMX_MM_INCREMENT_4VALUES_PS(work+jnrE,work+jnrF,work+jnrG,work+jnrH,_mm_mul_ps(prod_ai,icf4B));
ratio = _mm_mul_ps(rsq, gmx_mm_inv_ps( _mm_mul_ps(rvdw,rvdw)));
mask_cmp = _mm_cmple_ps(ratio,still_p5inv);
-
+
/* gmx_mm_sincos_ps() is quite expensive, so avoid calculating it if we can! */
if(0 == _mm_movemask_ps(mask_cmp))
{
prod = _mm_mul_ps(still_p4,vaj);
icf4 = _mm_mul_ps(ccf,rinv4);
icf6 = _mm_mul_ps( _mm_sub_ps( _mm_mul_ps(four,ccf),dccf), rinv6);
-
-
+
GMX_MM_INCREMENT_4VALUES_PS(work+jnrA,work+jnrB,work+jnrC,work+jnrD,_mm_mul_ps(prod_ai,icf4));
gpi = _mm_add_ps(gpi, _mm_mul_ps(prod,icf4));
dadx+=4;
tmp = _mm_mul_ps(prod_ai,icf4);
-
+
if(offset==1)
{
GMX_MM_INCREMENT_1VALUE_PS(work+jnrA,tmp);
}
GMX_MM_UPDATE_1POT_PS(gpi,work+ii);
}
-
+
/* Sum up the polarization energy from other nodes */
if(PARTDECOMP(cr))
{
attrname = (char *)attr->name;
attrval = (char *)attr->children->content;
-#define atest(s) ((strcasecmp(attrname,s) == 0) && (attrval != NULL))
+#define atest(s) ((gmx_strcasecmp(attrname,s) == 0) && (attrval != NULL))
kkk = find_elem(attrname,exmlNR,exml_names);
if (attrval != NULL)
xbuf[kkk] = strdup(attrval);
URL: http://www.gromacs.org
Version: @VERSION@
Requires: libgmx@LIBSUFFIX@ @PKG_FFT@ @PKG_XML@
-Libs.private: -lm @PTHREAD_LIBS@
-Libs: -L${libdir} -lmd@LIBSUFFIX@ @PKG_FFT_LIBS@
+Libs: -L${libdir} -lmd@LIBSUFFIX@ @PKG_FFT_LIBS@ @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ -lm
Cflags: -I${includedir} @PTHREAD_CFLAGS@ @PKG_CFLAGS@
md->bEner[i] = TRUE;
else if ((i == F_GBPOL) && ir->implicit_solvent==eisGBSA)
md->bEner[i] = TRUE;
- else if ((i == F_NPSOLVATION) && (ir->sa_algorithm != esaNO))
+ else if ((i == F_NPSOLVATION) && ir->implicit_solvent==eisGBSA && (ir->sa_algorithm != esaNO))
md->bEner[i] = TRUE;
else if ((i == F_GB12) || (i == F_GB13) || (i == F_GB14))
md->bEner[i] = FALSE;
}
#ifdef GMX_MPI
- if (flags & PP_PME_CHARGE) {
- MPI_Isend(chargeA,n*sizeof(real),MPI_BYTE,
- dd->pme_nodeid,1,cr->mpi_comm_mysim,
- &dd->req_pme[dd->nreq_pme++]);
- }
- if (flags & PP_PME_CHARGEB) {
- MPI_Isend(chargeB,n*sizeof(real),MPI_BYTE,
- dd->pme_nodeid,2,cr->mpi_comm_mysim,
- &dd->req_pme[dd->nreq_pme++]);
- }
- if (flags & PP_PME_COORD) {
- MPI_Isend(x[0],n*sizeof(rvec),MPI_BYTE,
- dd->pme_nodeid,3,cr->mpi_comm_mysim,
- &dd->req_pme[dd->nreq_pme++]);
+ if (n > 0) {
+ if (flags & PP_PME_CHARGE) {
+ MPI_Isend(chargeA,n*sizeof(real),MPI_BYTE,
+ dd->pme_nodeid,1,cr->mpi_comm_mysim,
+ &dd->req_pme[dd->nreq_pme++]);
+ }
+ if (flags & PP_PME_CHARGEB) {
+ MPI_Isend(chargeB,n*sizeof(real),MPI_BYTE,
+ dd->pme_nodeid,2,cr->mpi_comm_mysim,
+ &dd->req_pme[dd->nreq_pme++]);
+ }
+ if (flags & PP_PME_COORD) {
+ MPI_Isend(x[0],n*sizeof(rvec),MPI_BYTE,
+ dd->pme_nodeid,3,cr->mpi_comm_mysim,
+ &dd->req_pme[dd->nreq_pme++]);
+ }
}
#ifndef GMX_PME_DELAYED_WAIT
} t_gmx_timeprint;
#endif
+/* Portable version of ctime_r implemented in src/gmxlib/string2.c, but we do not want it declared in public installed headers */
+char *
+gmx_ctime_r(const time_t *clock,char *buf, int n);
+
double
gmx_gettime()
hide_mb(gmx);
if (dlg_mess==DLG_EXIT) {
- if (strcasecmp("yes",set)==0)
+ if (gmx_strcasecmp("yes",set)==0)
write_gmx(x11,gmx,IDTERM);
}
}
#endif
break;
case DLG_EXIT:
- if ((bOk=(strcasecmp("ok",set))==0))
+ if ((bOk=(gmx_strcasecmp("ok",set))==0))
strcpy(gmx->confout,EditText(dlg,eExConf));
HideDlg(dlg);
if (bOk)
}
break;
case DLG_EXIT:
- bOk=(strcasecmp("ok",set)==0);
+ bOk=(gmx_strcasecmp("ok",set)==0);
HideDlg(gmx->dlgs[edBonds]);
if (bOk) {
if (bBond) {
fprintf(dlg->x11->console,"buffer: '%s'\n",buf);
dlg->x11->Flush(dlg->x11);
#endif
- if (strcasecmp(buf,"nok")==0) {
+ if (gmx_strcasecmp(buf,"nok")==0) {
/* An error occurred */
for(i=0; (i<nlines); i++)
sfree(lines[i]);
return;
}
else {
- bCont=(strcasecmp(buf,"ok") != 0);
+ bCont=(gmx_strcasecmp(buf,"ok") != 0);
if (bCont) {
srenew(lines,++nlines);
lines[nlines-1]=strdup(buf);
-
/*
*
* This source code is part of
strcpy(buf2,fitem->name[i]);
buf2[strlen(buf)]='\0'; /* truncate itemname */
- if (strcasecmp(buf2,buf)==0)
+ if (gmx_strcasecmp(buf2,buf)==0)
iSel=i;
}
case edlgCB: {
bool bCheck;
- bCheck=strcasecmp(fitem->def,"TRUE")==0;
+ bCheck=gmx_strcasecmp(fitem->def,"TRUE")==0;
AddListItem(list,CreateCheckBox(x11,fitem->name[0],bCheck,
(*ID)++,GroupID,x,(*y),0,0,0));
break;
dlg=data->appl;
fprintf(stderr,"item_id: %d (%s)\n",item_id,set);
- if (strcasecmp(set,"OK") == 0) {
+ if (gmx_strcasecmp(set,"OK") == 0) {
/* Doit */
sprintf(doit,
"xterm -geometry +100+100 -n %s"
HideDlg(data->appl);
}
- else if (strcasecmp(set,"Cancel") == 0) {
+ else if (gmx_strcasecmp(set,"Cancel") == 0) {
data->nAppl = -1;
HideDlg(data->appl);
}
if ((atm.minC != -1) && (atm.minO != -1))
nc[6]++;
for(k=0; (k<naa); k++) {
- if (strcasecmp(aa[k],thisres) == 0)
+ if (gmx_strcasecmp(aa[k],thisres) == 0)
break;
}
dl[nl].index=k;
{
FILE *fp;
t_mapping *map;
- int s,f,r,*count,ss_count;
+ int f,r,*count,ss_count;
+ size_t s;
const char** leg;
map=mat->map;
" ignoring option -cl %s\n", trx_out_fn);
method=1;
- while ( method < m_nr && strcasecmp(methodname[0], methodname[method])!=0 )
+ while ( method < m_nr && gmx_strcasecmp(methodname[0], methodname[method])!=0 )
method++;
if (method == m_nr)
gmx_fatal(FARGS,"Invalid method");
#include <string.h>
#include <time.h>
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+
#if ((defined WIN32 || defined _WIN32 || defined WIN64 || defined _WIN64) && !defined __CYGWIN__ && !defined __CYGWIN32__)
#include <direct.h>
#include <io.h>
#include "gmx_ana.h"
#include "string2.h"
+/* Portable version of ctime_r implemented in src/gmxlib/string2.c, but we do not want it declared in public installed headers */
+char *
+gmx_ctime_r(const time_t *clock,char *buf, int n);
+
+
int gmx_covar(int argc,char *argv[])
{
const char *desc[] = {
snew(x,natoms);
snew(xav,natoms);
ndim=natoms*DIM;
- if (sqrt(LARGE_INT_MAX)<ndim) {
+ if (sqrt(GMX_LARGE_INT_MAX)<ndim) {
gmx_fatal(FARGS,"Number of degrees of freedoms to large for matrix.\n");
}
snew(mat,ndim*ndim);
while( (n<keylen) && ((key[n]<'0') || (key[n]>'9')) )
n++;
for(i=0; (i<nstr); i++)
- if (strncasecmp(str[i],key,n)==0)
+ if (gmx_strncasecmp(str[i],key,n)==0)
return i;
return -1;
i = strlen(ptr);
nmatch = 0;
for(nind=0; nind<nre; nind++) {
- if (strcasecmp(newnm[nind],ptr) == 0) {
+ if (gmx_strcasecmp(newnm[nind],ptr) == 0) {
bE[nind] = TRUE;
nmatch++;
}
i = strlen(ptr);
nmatch = 0;
for(nind=0; nind<nre; nind++) {
- if (strncasecmp(newnm[nind],ptr,i) == 0) {
+ if (gmx_strncasecmp(newnm[nind],ptr,i) == 0) {
bE[nind] = TRUE;
nmatch++;
}
sum=0;
beta = 1.0/(BOLTZ*reftemp);
for(i=0; i<nset; i++) {
- if (strcasecmp(leg[i],enm[set[i]].name)!=0)
+ if (gmx_strcasecmp(leg[i],enm[set[i]].name)!=0)
fprintf(stderr,"\nWARNING energy set name mismatch %s!=%s\n",
leg[i],enm[set[i]].name);
for(j=0; j<nenergy; j++) {
}
}
if (i == nre) {
- if (strcasecmp(setnm[j],"Volume")==0) {
+ if (gmx_strcasecmp(setnm[j],"Volume")==0) {
printf("Enter the box volume (" unit_volume "): ");
if(1 != scanf("%lf",&dbl))
{
bIsEner[i] = FALSE;
for (j=0; (j <= F_ETOT); j++)
bIsEner[i] = bIsEner[i] ||
- (strcasecmp(interaction_function[j].longname,leg[i]) == 0);
+ (gmx_strcasecmp(interaction_function[j].longname,leg[i]) == 0);
}
if (bPrAll && nset > 1) {
buf2[strlen(buf2)-1]='\0';
ltrim(buf2);
rtrim(buf2);
- bSystem=(strcasecmp(buf2,"system")==0);
- bMolecules=(strcasecmp(buf2,"molecules")==0);
+ bSystem=(gmx_strcasecmp(buf2,"system")==0);
+ bMolecules=(gmx_strcasecmp(buf2,"molecules")==0);
}
} else if (bSystem && nsol && (buf[0]!=';') ) {
/* if sol present, append "in water" to system name */
buf2[strlen(buf2)-1]='\0';
ltrim(buf2);
rtrim(buf2);
- bMolecules=(strcasecmp(buf2,"molecules")==0);
+ bMolecules=(gmx_strcasecmp(buf2,"molecules")==0);
}
fprintf(fpout,"%s",buf);
} else if (!bMolecules) {
} else {
/* Check if this is a line with solvent molecules */
sscanf(buf,"%s",buf2);
- if (strcasecmp(buf2,grpname) == 0) {
+ if (gmx_strcasecmp(buf2,grpname) == 0) {
sol_line = nmol_line;
sscanf(buf,"%*s %d",&nsol_last);
}
/* Changed contact code and added argument R2
* - Erik Marklund, June 29, 2006
*/
-static void do_hbac(const char *fn,t_hbdata *hb,real aver_nhb,real aver_dist,
+static void do_hbac(const char *fn,t_hbdata *hb,
int nDump,bool bMerge,bool bContact, real fit_start,
real temp,bool R2,real smooth_tail_start, const output_env_t oenv,
t_gemParams *params, const char *gemType, int nThreads,
else {
ihb = idist = 0;
}
- rhbex[j] = ihb-aver_nhb;
+ rhbex[j] = ihb;
/* For contacts: if a second cut-off is provided, use it,
* otherwise use g(t) = 1-h(t) */
if (!R2 && bContact)
/* NN-loop? If so, what estimator to use ?*/
NN = 1;
/* Outcommented for now DvdS 2010-07-13
- while (NN < NN_NR && strcasecmp(NNtype[0], NNtype[NN])!=0)
+ while (NN < NN_NR && gmx_strcasecmp(NNtype[0], NNtype[NN])!=0)
NN++;
if (NN == NN_NR)
gmx_fatal(FARGS, "Invalid NN-loop type.");
/* geminate recombination? If so, which flavor? */
gemmode = 1;
- while (gemmode < gemNR && strcasecmp(gemType[0], gemType[gemmode])!=0)
+ while (gemmode < gemNR && gmx_strcasecmp(gemType[0], gemType[gemmode])!=0)
gemmode++;
if (gemmode == gemNR)
gmx_fatal(FARGS, "Invalid recombination type.");
gmx_fatal(FARGS, "Could not initiate t_gemParams params.");
}
gemstring = strdup(gemType[hb->per->gemtype]);
- do_hbac(opt2fn("-ac",NFILE,fnm),hb,aver_nhb/max_nhb,aver_dist,nDump,
+ do_hbac(opt2fn("-ac",NFILE,fnm),hb,nDump,
bMerge,bContact,fit_start,temp,r2cut>0,smooth_tail_start,oenv,
params, gemstring, nThreads, NN, bBallistic, bGemFit);
}
int i;
for(i=0; (i<ng); i++)
- if (strcasecmp(s,*gn[i]) == 0)
+ if (gmx_strcasecmp(s,*gn[i]) == 0)
return i;
gmx_fatal(FARGS,"Group %s not found in indexfile.\nMaybe you have non-default groups in your mdp file, while not using the '-n' option of grompp.\nIn that case use the '-n' option.\n",s);
buf2[strlen(buf2)-1]='\0';
ltrim(buf2);
rtrim(buf2);
- if (strcasecmp(buf2,"molecules")==0)
+ if (gmx_strcasecmp(buf2,"molecules")==0)
bMolecules=1;
}
fprintf(fpout,"%s",buf);
URL: http://www.gromacs.org
Version: @VERSION@
Requires: @PKG_GSL@ libgmx@LIBSUFFIX@ libmd@LIBSUFFIX@
-Libs.private: -lm @PTHREAD_LIBS@
-Libs: -L${libdir} -lgmxana@LIBSUFFIX@
+Libs: -L${libdir} -lgmxana@LIBSUFFIX@ @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ -lm
Cflags: -I${includedir} @PTHREAD_CFLAGS@ @PKG_CFLAGS@
default:
/* Compare a single character */
if (( bCase && strncmp(name,search,1)) ||
- (!bCase && strncasecmp(name,search,1))) {
+ (!bCase && gmx_strncasecmp(name,search,1))) {
return FALSE;
}
}